{"version":3,"sources":["webpack:///./node_modules/core-js/internals/function-bind.js","webpack:///./node_modules/@videojs/vhs-utils/es/codecs.js","webpack:///./node_modules/@xmldom/xmldom/lib/index.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/@videojs/vhs-utils/es/id3-helpers.js","webpack:///./node_modules/@videojs/xhr/lib/index.js","webpack:///./node_modules/mux.js/lib/utils/clock.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/core-js/modules/es.reflect.construct.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/@videojs/vhs-utils/es/resolve-url.js","webpack:///./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack:///./node_modules/mux.js/lib/tools/parse-sidx.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-groups.js","webpack:///./node_modules/mpd-parser/dist/mpd-parser.es.js","webpack:///./node_modules/@xmldom/xmldom/lib/conventions.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-types.js","webpack:///./node_modules/@videojs/xhr/lib/http-handler.js","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/mux.js/lib/utils/numbers.js","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom-parser.js","webpack:///./node_modules/@babel/runtime/helpers/construct.js","webpack:///./node_modules/@xmldom/xmldom/lib/entities.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/url-toolkit/src/url-toolkit.js","webpack:///./node_modules/@videojs/vhs-utils/es/stream.js","webpack:///./node_modules/m3u8-parser/dist/m3u8-parser.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/byte-helpers.js","webpack:///./node_modules/keycode/index.js","webpack:///./node_modules/@xmldom/xmldom/lib/sax.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom.js","webpack:///./node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/video.js/dist/video.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/mp4-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/opus-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/ebml-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/nal-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/containers.js","webpack:///./node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js"],"names":["uncurryThis","aCallable","isObject","hasOwn","arraySlice","NATIVE_BIND","$Function","Function","concat","join","factories","construct","C","argsLength","args","list","i","module","exports","bind","that","F","this","Prototype","prototype","partArgs","arguments","boundFunction","length","apply","regexs","mp4","webm","ogg","video","audio","text","muxerVideo","muxerAudio","muxerText","mediaTypes","upperMediaTypes","translateLegacyCodec","codec","replace","orig","profile","avcLevel","profileHex","Number","toString","slice","avcLevelHex","parseCodecs","codecString","codecs","split","result","forEach","codecType","trim","name","match","exec","toLowerCase","type","substring","details","push","mediaType","codecsFromDefault","master","audioGroupId","mediaGroups","AUDIO","audioGroup","audioType","default","playlists","attributes","CODECS","isAudioCodec","test","isTextCodec","getMimeForCodec","map","c","container","every","browserSupportsCodec","MediaSource","isTypeSupported","muxerSupportsCodec","DEFAULT_AUDIO_CODEC","DEFAULT_VIDEO_CODEC","dom","DOMImplementation","XMLSerializer","DOMParser","window","vttjs","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","ID3","getId3Size","bytes","offset","flags","returnSize","footerPresent","getId3Offset","_extends","isFunction","createXHR","httpHandler","parseHeaders","headers","row","index","indexOf","key","value","Array","isArray","forEachArray","array","iterator","isEmpty","obj","hasOwnProperty","initParams","uri","options","callback","params","_createXHR","Error","called","err","response","body","readystatechange","xhr","readyState","setTimeout","loadFunc","getBody","undefined","responseText","getXml","isJson","JSON","parse","e","errorFunc","evt","clearTimeout","timeoutTimer","statusCode","failureResponse","aborted","status","useXDR","method","url","rawRequest","getAllResponseHeaders","cors","XDomainRequest","XMLHttpRequest","data","sync","json","stringify","onreadystatechange","onload","onerror","onprogress","onabort","ontimeout","open","username","password","withCredentials","timeout","abort","code","setRequestHeader","responseType","beforeSend","send","responseXML","firefoxBugTakenEffect","documentElement","nodeName","noop","toUpperCase","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","ONE_SECOND_IN_TS","seconds","sampleRate","timestamp","timelineStartPts","keepOriginalTimestamps","_assertThisInitialized","self","ReferenceError","__esModule","_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","$","getBuiltIn","aConstructor","anObject","create","fails","nativeConstruct","ObjectPrototype","NEW_TARGET_BUG","ARGS_BUG","FORCED","target","stat","forced","sham","Target","newTarget","$args","proto","instance","require","_inheritsLoose","subClass","superClass","constructor","DEFAULT_LOCATION","resolveUrl","baseUrl","relativeUrl","location","href","nativeURL","URL","protocolLess","removeLocation","buildAbsoluteURL","newUrl","protocol","_isNativeReflectConstruct","Reflect","Proxy","Boolean","valueOf","call","getUint64","parseSidx","view","DataView","buffer","byteOffset","byteLength","version","Uint8Array","subarray","references","referenceId","getUint32","timescale","earliestPresentationTime","firstOffset","referenceCount","getUint16","referenceType","referencedSize","subsegmentDuration","startsWithSap","sapType","sapDeltaTime","fn","string","alert","confirm","prompt","forEachMediaGroup","groups","groupKey","labelKey","mediaProperties","merge","_len","objects","_key","reduce","source","keys","values","k","start","end","flatten","lists","x","y","from","findIndexes","l","a","findIndex","matchingFunction","union","keyFunction","acc","el","errors","INVALID_NUMBER_OF_PERIOD","DASH_EMPTY_MANIFEST","DASH_INVALID_XML","NO_BASE_URL","MISSING_SEGMENT_INFORMATION","SEGMENT_TIME_UNSPECIFIED","UNSUPPORTED_UTC_TIMING_SCHEME","_ref","_ref$baseUrl","_ref$source","_ref$range","range","_ref$indexRange","indexRange","segment","resolvedUri","rangeStr","ranges","startRange","BigInt","parseInt","endRange","MAX_SAFE_INTEGER","byterange","parseEndNumber","endNumber","isNaN","segmentRange","static","duration","_attributes$timescale","sourceDuration","periodDuration","segmentDuration","dynamic","NOW","clientOffset","availabilityStartTime","_attributes$timescale2","_attributes$periodSta","periodStart","_attributes$minimumUp","minimumUpdatePeriod","_attributes$timeShift","timeShiftBufferDepth","Infinity","now","periodStartWC","periodEndWC","segmentCount","Math","ceil","availableStart","floor","availableEnd","max","min","toSegments","number","_attributes$timescale3","_attributes$startNumb","startNumber","timeline","time","parseByDuration","_attributes$timescale4","_segmentRange$type","segments","sectionDuration","segmentsFromBase","_attributes$initializ","initialization","_attributes$indexRang","presentationTime","_attributes$number","initSegment","sourceURL","segmentTimeInfo","addSidxSegmentsToPlaylist$1","playlist","sidx","startIndex","sidxByteRange","sidxEnd","mediaReferences","filter","r","endList","mediaSequence","reference","size","endIndex","SUPPORTED_MEDIA_TYPES","TIME_FUDGE","getUniqueTimelineStarts","timelineStarts","sort","b","findPlaylistWithName","NAME","manifest","mediaGroupPlaylists","properties","group","label","updateMediaSequenceForPlaylist","_ref2","updateSequenceNumbers","_ref3","oldPlaylists","newPlaylists","discontinuitySequence","_ref4","oldPlaylist","firstNewSegment","oldMatchingSegmentIndex","oldSegment","abs","discontinuity","discontinuityStarts","unshift","oldMatchingSegment","positionManifestOnTimeline","_ref5","oldManifest","newManifest","generateSidxKey","mergeDiscontiguousPlaylists","mergedPlaylists","id","lang","_acc$name$segments","contentProtection","sidxMapping","sidxKey","sidxMatch","addSidxSegmentsToPlaylists","formatAudioPlaylist","isAudioOnly","_attributes","BANDWIDTH","bandwidth","targetDuration","SUBTITLES","formatVttPlaylist","_m3u8Attributes","m3u8Attributes","organizeAudioPlaylists","mainPlaylist","formattedPlaylists","role","language","roleLabel","autoselect","formatted","firstLabel","organizeVttPlaylists","organizeCaptionServices","captionServices","svcObj","svc","service","channel","instreamId","aspectRatio","easyReader","formatVideoPlaylist","_attributes2","RESOLUTION","width","height","videoOnly","mimeType","contentType","audioOnly","vttOnly","_ref6","addMediaSequenceValues","_ref7","flattenMediaGroupPlaylists","mediaGroupObject","labelContents","toM3u8","_ref8","_mediaGroups","dashPlaylists","locations","_ref8$sidxMapping","previousManifest","_dashPlaylists$0$attr","suggestedPresentationDelay","videoPlaylists","audioPlaylists","vttPlaylists","captions","allowCache","VIDEO","organizedAudioGroup","organizedVttGroup","playlistTimelineStarts","_ref9","subs","cc","getLiveRValue","parseByTimeline","segmentTimeline","_attributes$minimumUp2","_attributes$media","media","sIndex","S","d","repeat","segmentTime","t","count","nextS","identifierPattern","identifierReplacement","identifier","format","constructTemplateUrl","parseTemplateInfo","templateValues","RepresentationID","Bandwidth","mapSegment","Time","presentationTimeOffset","SegmentURLToSegmentObject","segmentUrl","mediaRange","segmentsFromList","_attributes$segmentUr","segmentUrls","segmentUrlMap","segmentUrlObject","generateSegments","segmentAttributes","segmentsFn","segmentInfo","template","base","segmentsInfo","_segmentAttributes","_segmentAttributes$ti","toPlaylists","representations","findChildren","element","childNodes","tagName","getContent","textContent","parseDuration","str","SECONDS_IN_YEAR","SECONDS_IN_MONTH","SECONDS_IN_DAY","SECONDS_IN_HOUR","SECONDS_IN_MIN","durationRegex","_match$slice","year","month","day","hour","minute","second","parseFloat","parseDate","dateRegex","Date","parsers","mediaPresentationDuration","parsedValue","DEFAULT","parseAttributes","parseFn","keySystemsMap","referenceUrls","baseUrlElements","baseUrlElement","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","s","tag","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","inheritBaseUrls","adaptationSetAttributes","adaptationSetBaseUrls","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","contentProtectionNodes","node","schemeIdUri","keySystem","psshNode","pssh","parseCaptionServiceMetadata","_value$split","_values","_value$split2","_value$split2$","opts","opt","_opt$split","val","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","roleAttributes","attrs","accessibility","labelVal","nodeValue","toAdaptationSets","mpdAttributes","mpdBaseUrls","period","adaptationSets","getPeriodStart","priorPeriodAttributes","mpdType","inheritAttributes","mpd","_options","_options$manifestUri","manifestUri","_options$NOW","_options$clientOffset","periodNodes","periods","priorPeriod","representationInfo","manifestString","xml","parser","parseFromString","getElementsByTagName","parseUTCTimingScheme","UTCTimingNode","parsedManifestInfo","parseUTCTiming","freeze","object","oc","MIME_TYPE","HTML","isHTML","XML_APPLICATION","XML_TEXT","XML_XHTML_APPLICATION","XML_SVG_IMAGE","NAMESPACE","SVG","XML","XMLNS","MPEGURL_REGEX","DASH_REGEX","simpleTypeFromSourceType","httpResponseHandler","decodeResponseBody","responseBody","cause","TextDecoder","charset","getCharset","decode","String","fromCharCode","contentTypeHeader","_contentType$split","SafeParseTuple","reviver","error","assign","MAX_UINT32","pow","uint8","dv","getBigUint64","autoKeyword","directionSetting","alignSetting","findDirectionSetting","dir","findAlignSetting","align","startTime","endTime","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","defineProperties","enumerable","get","set","TypeError","setting","SyntaxError","console","warn","displayState","getCueAsHTML","convertCueToDOMTree","conventions","entities","sax","ParseError","XMLReader","locator","buildErrorHandler","errorImpl","domBuilder","DOMHandler","errorHandler","isCallback","build","msg","_locator","cdata","position","lineNumber","columnNumber","systemId","_toString","chars","substr","java","appendElement","hander","currentElement","appendChild","doc","defaultNSMap","xmlns","entityMap","HTML_ENTITIES","XML_ENTITIES","setDocumentLocator","startDocument","createDocument","documentURI","startElement","namespaceURI","localName","qName","createElementNS","len","getURI","getValue","attr","getQName","createAttributeNS","getLocator","setAttributeNode","endElement","current","parentNode","startPrefixMapping","prefix","endPrefixMapping","processingInstruction","ins","createProcessingInstruction","ignorableWhitespace","ch","characters","charNode","createCDATASection","createTextNode","skippedEntity","endDocument","normalize","comment","comm","createComment","startCDATA","endCDATA","startDTD","publicId","impl","implementation","createDocumentType","dt","doctype","warning","fatalError","__DOMHandler","isNativeReflectConstruct","_construct","Parent","Class","Constructor","amp","apos","gt","lt","quot","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","times","divide","forall","part","exist","empty","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","prop","infin","ang","and","or","cap","cup","there4","sim","cong","asymp","ne","equiv","le","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","tilde","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","euro","trade","larr","uarr","rarr","darr","harr","crarr","lceil","rceil","lfloor","rfloor","loz","spades","clubs","hearts","diams","win","global","document","_objCreate","ParsingError","errorData","message","parseTimeStamp","input","computeSeconds","h","m","f","Settings","parseOptions","keyValueDelim","groupDelim","kv","v","parseCue","cue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","consumeCueSettings","settings","region","alt","vals","vals0","integer","percent","vertical","line","lineAlign","snapToLines","left","center","middle","right","positionAlign","skipWhitespace","BadSignature","dflt","defaultKey","has","n","TEXTAREA_ELEMENT","createElement","TAG_NAME","u","ruby","rt","DEFAULT_COLOR_CLASS","white","lime","cyan","red","yellow","magenta","blue","black","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","consume","unescape","innerHTML","shouldAdd","annotation","rootDiv","tagStack","pop","classes","cl","bgColor","colorName","propName","propValue","style","className","strongRTLRanges","isStrongRTLChar","charCode","currentRange","determineBidi","cueDiv","nodeStack","pushNodes","nextTextNode","innerText","charCodeAt","computeLinePos","track","textTrackList","mediaElement","trackList","mode","StyleBox","CueStyleBox","styleOptions","styles","color","backgroundColor","top","bottom","display","writingMode","unicodeBidi","applyStyles","div","direction","textAlign","font","whiteSpace","textPos","formatStyle","move","box","BoxPosition","lh","offsetHeight","offsetWidth","offsetTop","rects","getClientRects","getBoundingClientRect","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","findBestPosition","axis","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","boxPosition","linePos","step","round","maxPosition","initialAxis","reverse","calculatedPercentage","toCSSCompatValues","unit","toMove","overlaps","b2","boxes","intersectArea","getSimpleBoxPosition","ret","StringDecoder","decodeURIComponent","encodeURIComponent","cuetext","FONT_SIZE_PERCENT","FONT_STYLE","CUE_BACKGROUND_PADDING","processCues","cues","overlay","firstChild","removeChild","paddedOverlay","shouldCompute","margin","fontSize","Parser","decoder","state","reportOrThrowError","onparsingerror","collectNextLine","pos","parseRegion","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseTimestampMap","ontimestampmap","parseHeader","stream","alreadyCollectedLine","hasSubstring","oncue","flush","onflush","root","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","baseURL","relativeURL","alwaysNormalize","basePartsForNormalise","parseURL","path","normalizePath","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","pathParts","builtParts","query","fragment","baseURLPath","newPath","lastIndexOf","parts","Stream","listeners","_proto","on","listener","off","splice","trigger","callbacks","_length","_i","dispose","pipe","destination","_Stream","LineStream","_this","nextNewline","TAB","parseByterange","byterangeString","attributeSeparator","keyvalue","RegExp","ParseStream","customParsers","tagMappers","event","_this2","newLines","mapper","mappedLine","newLine","tagType","title","playlistType","allowed","URI","BYTERANGE","resolution","dateTimeString","dateTimeObject","IV","Uint32Array","PRECISE","subkey","addParser","_this3","expression","customType","dataParser","addTagMapper","mapFn","camelCase","camelCaseKeys","setHoldBack","serverControl","partTargetDuration","hb","phb","minTargetDuration","minPartDuration","lineStream","parseStream","currentMap","uris","currentUri","hasParts","defaultMediaGroups","widevineUuid","currentTimeline","lastByterangeEnd","lastPartByterangeEnd","preloadHints","preloadSegment","entry","mediaGroup","rendition","endlist","inf","METHOD","KEYFORMAT","VALID_METHODS","KEYID","keyId","iv","isFinite","TYPE","mediaGroupType","AUTOSELECT","LANGUAGE","CHARACTERISTICS","characteristics","targetduration","timeOffset","precise","cueOut","cueOutCont","cueIn","skip","warnOnMissingAttributes_","segmentIndex","partIndex","renditionReports","canBlockReload","canSkipDateranges","hint","isPart","otherHint","report","required","partInf","partTarget","custom","missing","chunk","countBits","countBytes","padStart","isArrayBufferView","ArrayBuffer","isView","isTypedArray","toUint8","toHexString","toBinaryString","BYTE_TABLE","bytesToNumber","Uint16Array","_temp","_ref$signed","signed","_ref$le","total","byte","exponent","numberToBytes","_temp2","_ref2$le","byteCount","byteIndex","bytesToString","escape","stringToBytes","stringIsBytes","concatTypedArrays","buffers","totalLen","buf","tempBuffer","bytesMatch","_temp3","_ref3$offset","_ref3$mask","mask","bByte","aByte","keyCode","searchInput","hasKeyCode","which","names","search","foundNamedKey","codes","aliases","isEventKey","nameOrCode","alias","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","captureStackTrace","defaultNSMapCopy","fixedFromCharCode","surrogate1","surrogate2","entityReplacer","charAt","appendText","xt","lineEnd","linePattern","lineStart","parseStack","currentNSMap","closeMap","tagStart","config","localNSMap","endMatch","endIgnoreCaseMach","parseInstruction","parseDCC","ElementAttributes","parseElementStartPart","closed","fixSelfClosed","locator2","copyLocator","parseHtmlSpecialContent","addAttribute","qname","attributeNames","addValue","attrName","setTagName","nsp","nsPrefix","_copy","ns","elStartEnd","elEndStart","next","matchs","pubid","sysid","lastMatch","endDTD","lastIndex","getLocalName","notEmptyString","splitOnASCIIWhitespace","orderedSetReducer","toOrderedSet","arrayIncludes","src","dest","Super","pt","NodeType","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","NOT_FOUND_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","INUSE_ATTRIBUTE_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","DOMException","NodeList","LiveNodeList","refresh","_node","_refresh","_updateLiveList","inc","_inc","ownerDocument","ls","__set__","NamedNodeMap","_findNodeIndex","_addNamedNode","newAttr","oldAttr","ownerElement","_onRemoveAttribute","_onAddAttribute","_removeNamedNode","Node","_xmlEncoder","_visitNode","nextSibling","Document","_nsMap","remove","_onUpdateChild","newChild","cs","child","_removeChild","previous","previousSibling","lastChild","_insertBefore","nextChild","cp","nodeType","newFirst","newLast","pre","_appendSingleChild","Element","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","nodeSerializeToString","isHtml","nodeFilter","refNode","lookupPrefix","visibleNamespaces","namespace","serializeToString","needNamespaceDefine","addSerializedAttribute","qualifiedName","prefixedNodeName","defaultNS","ai","item","nsi","internalSubset","importNode","deep","node2","cloneNode","attrs2","_ownerElement","getNamedItem","setNamedItem","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","hasFeature","feature","insertBefore","refChild","replaceChild","oldChild","hasChildNodes","appendData","isSupported","hasAttributes","lookupNamespaceURI","isDefaultNamespace","importedNode","getElementById","rtv","getAttribute","getElementsByClassName","classNames","classNamesSet","nodeClassNames","matches","nodeClassNamesSet","createDocumentFragment","createAttribute","specified","createEntityReference","pl","hasAttribute","getAttributeNode","setAttribute","removeAttribute","removeAttributeNode","setAttributeNodeNS","removeAttributeNS","old","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagNameNS","substringData","insertData","replaceData","deleteData","splitText","newText","newNode","defineProperty","getTextContent","$$length","_inherits","writable","configurable","doccy","minDoc","topLevel","browserApi","version$5","hooks_","hooks","hook","removeHook","hookOnce","original","wrapper","FullscreenApi","prefixed","apiMap","specApi","history","LogByTypeFactory","log","level","lvl","levels","lvlRegExp","info","createLogger$1","logByType","createLogger","subname","all","debug","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","log$1","each","initial","accum","sources","isPlain","computedStyle","getComputedStyle","computedStyleValue","getPropertyValue","USER_AGENT","navigator","userAgent","webkitVersionMap","appleWebkitVersion","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IE_VERSION","IS_SAFARI","IS_WINDOWS","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","IS_IPAD","IS_IPHONE","IS_IOS","IS_ANY_SAFARI","browser","isNonBlankString","throwIfWhitespace","classRegExp","isEl","isInFrame","parent","createQuerier","selector","context","querySelector","ctx","createEl","content","getOwnPropertyNames","appendContent","prependTo","hasClass","classToCheck","classList","contains","addClass","classToAdd","add","removeClass","classToRemove","toggleClass","classToToggle","predicate","setAttributes","attrValue","getAttributes","knownBooleans","attrVal","attribute","blockTextSelection","focus","onselectstart","unblockTextSelection","rect","findPosition","offsetParent","fullscreenElement","offsetLeft","getPointerPosition","translated","transform","boxTarget","boxW","boxH","offsetY","offsetX","changedTouches","pageX","pageY","isTextNode","emptyEl","normalizeContent","insertContent","isSingleLeftClick","button","buttons","videojs$1","$$","Dom","_windowLoaded","autoSetup","vids","audios","divs","mediaEls","mediaEl","autoSetupTimeout","player","wait","vjs","setWindowLoaded","removeEventListener","addEventListener","FakeWeakMap","createStyleElement","setTextContent","styleSheet","cssText","_initialGuid","_guid","newGUID","WeakMap","vdata","performance","access","_supportsPassive","DomData","_cleanUpEvents","elem","handlers","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","fixEvent","fixed_","returnTrue","returnFalse","isPropagationStopped","isImmediatePropagationStopped","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","supportsPassive","passiveEvents","guid","hash","handlersCopy","passive","attachEvent","removeType","elemData","bubbles","targetData","one","func","any","EVENT_MAP","Events","UPDATE_REFRESH_INTERVAL","uid","bound","throttle","last","throttled","debounce","immediate","cancel","debounced","_later","EventTarget$2","allowedEvents_","ael","dispatchEvent","queueTrigger","Map","oldTimeout","objName","name_","isEvented","eventBusEl_","addEventedCallback","eventedCallbacks","isValidEventType","validateTarget","fnName","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","shift","listen","EventedMixin","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_normalizeListenArgs2","largs","_normalizeListenArgs3","_len5","_key5","targetOrType","typeOrListener","evented","eventBusKey","el_","StatefulMixin","setState","stateUpdates","changes","to","stateful","defaultState","handleStateChanged","w","toTitleCase$1","titleCaseEquals","str1","str2","mergeOptions$3","MapSham","map_","thisArg","Map$1","SetSham","set_","Set$1","Set","Component$1","Component","ready","play","player_","isDisposed_","parentComponent_","options_","id_","handleLanguagechange","children_","childIndex_","childNameIndex_","setTimeoutIds_","setIntervalIds_","rafIds_","namedRafs_","clearingTimersOnDispose_","initChildren","reportTouchActivity","enableTouchActivity","readyQueue_","restoreEl","isDisposed","localize","tokens","defaultValue","languages","primaryCode","primaryLang","localizedString","contentEl","contentEl_","children","getChildById","getChild","getDescendant","currentChild","addChild","component","componentName","componentClassName","componentClass","ComponentClass","getComponent","childFound","compEl","workingChildren","parentOptions","handleAdd","playerOptions","Tech","some","wchild","isTech","buildCSSClass","isReady_","triggerReady","readyQueue","show","hide","lockShowing","unlockShowing","num","skipListeners","dimension","dimensions","widthOrHeight","pxIndex","currentDimension","computedWidthOrHeight","rule","currentDimensions","currentWidth","currentHeight","blur","handleKeyDown","handleKeyPress","emitTapEvents","couldBeTap","touchStart","firstTouch","tapMovementThreshold","touchTimeThreshold","touches","xdiff","ydiff","touchDistance","sqrt","noTap","touchTime","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","clearTimersOnDispose_","interval","intervalId","requestAnimationFrame","_this4","supportsRaf_","requestNamedAnimationFrame","_this5","cancelNamedAnimationFrame","cancelAnimationFrame","_this6","idName","cancelName","registerComponent","ComponentToRegister","reason","isComp","isPrototypeOf","components_","Player","players","playerNames","pname","rangeCheck","maxIndex","getRange","valueIndex","rangeIndex","createTimeRangesObj","timeRangesObj","Symbol","createTimeRanges","bufferedPercent","buffered","bufferedDuration","MediaError","defaultMessages","errorTypes","1","2","3","4","5","errNum","isPromise","then","silencePromise","trackToJson_","textTracksToJson","tech","trackEls","trackObjs","tracks","trackEl","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","ModalDialog","_Component","handleKeyDown_","close_","close","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","descEl_","description","tabIndex","previouslyActiveEl_","desc","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","pause","hadControls_","controls","conditionalFocus_","opened","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","closeButton","content_","activeEl","activeElement","playerEl","focusIndex","focusableEls","focusableEls_","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","_EventTarget","tracks_","addTrack","labelchange_","removeTrack","rtrack","getTrackById","change","addtrack","removetrack","labelchange","disableOthers$1","enabled","AudioTrackList","_TrackList","changing_","enabledChange_","disableOthers","selected","VideoTrackList","selectedChange_","TextTrackList","queueChange_","triggerSelectedlanguagechange","triggerSelectedlanguagechange_","nonLanguageTextTrackKind","kind","selectedlanguagechange_","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","main","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","metadata","TextTrackMode","hidden","showing","Track","trackProps","_loop","newLabel","parseUrl","props","host","getAbsoluteURL","getFileExtension","splitPathRe","isCrossOrigin","winLoc","urlInfo","srcProtocol","crossOrigin","Url","parseCues","srcContent","groupCollapsed","groupEnd","loadTrack","tech_","loaded_","TextTrack","_Track","srclang","default_","activeCues_","preload_","preloadTextTracks","activeCues","changed","timeupdateHandler","rvf_","requestVideoFrameCallback","disposeHandler","stopTracking","startTracking","newMode","ct","currentTime","active","cancelVideoFrameCallback","originalCue","originalCue_","removeCue","_removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","NONE","LOADING","LOADED","ERROR","HTMLTrackElement","load","NORMAL","ListClass","TrackClass","capitalName","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","createTrackHelper","onDurationChange_","onDurationChange","trackProgress_","trackProgress","trackCurrentTime_","trackCurrentTime","stopTrackingCurrentTime_","stopTrackingCurrentTime","disposeSourceHandler_","disposeSourceHandler","queuedHanders_","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","triggerSourceset","manualProgress","manualProgressOff","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","manualTimeUpdatesOff","currentTimeInterval","manuallyTriggered","clearTracks","removeRemoteTextTrack","cleanupAutoTextTracks","reset","setCrossOrigin","error_","played","setScrubbing","scrubbing","setCurrentTime","trackListChanges","addWebVttScript_","script","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createRemoteTextTrack","manualCleanup","_this7","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","requestPictureInPicture","PromiseClass","Promise","reject","disablePictureInPicture","setDisablePictureInPicture","cb","_this8","setPoster","playsinline","setPlaysinline","overrideNativeAudioTracks","overrideNativeVideoTracks","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","videojs","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","featuresVideoFrameCallback","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","deferrable","originalFn","sourceHandler_","setSource","nativeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","use","middleware","setSourceHelper","setTech","mw","reduceRight","middlewareIterator","arg","mediate","callMethod","middlewareValue","terminated","executeRight","allowedGetters","muted","seekable","volume","ended","allowedSetters","setMuted","setVolume","allowedMediators","mws","clearCacheForPlayer","getOrCreateFactory","mwFactory","_mws$i","mwf","mwi","lastRun","_middleware","mwrest","_src","MimetypesKind","opus","ogv","mov","m4v","mkv","m4a","mp3","aac","caf","flac","oga","wav","m3u8","jpg","jpeg","gif","png","svg","webp","getMimetype","ext","mimetype","findMimetype","cache_","matchingSources","filterSource","newsrc","srcobj","fixSource","MediaLoader","j","techOrder","techName","loadTech_","ClickableComponent","handleMouseOver_","handleMouseOver","handleMouseOut_","handleMouseOut","handleClick_","handleClick","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","noUITitleAttributes","enabled_","clickHandler","PosterImage","_ClickableComponent","update","update_","poster","setSrc","backgroundImage","sourceIsEncrypted","usingPlugin","eme","sessions","darkGray","lightGray","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","firstDesc","firstCaptions","preferredTrack","modes","userPref","selectedLanguage","clearDisplay","allowMultipleShowingTracks","showingTracks","updateForTrack","descriptionsTrack","captionsSubtitlesTrack","_track","updateDisplayState","overrides","textTrackSettings","getValues","textOpacity","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontFamily","fontVariant","_i2","_track2","_j","cueEl","LoadingSpinner","isAudio","playerType","Button","BigPlayButton","_Button","mouseused_","handleMouseDown","playPromise","playToggle","playFocus","CloseButton","PlayToggle","replay","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","guide","gm","gh","setFormatTime","customImplementation","resetFormatTime","formatTime","TimeDisplay","updateContent","updateTextNode_","span","labelText_","textNode_","formattedTime_","oldNode","CurrentTimeDisplay","_TimeDisplay","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","displayNegative","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","SeekToLive","updateLiveEdgeStatus","liveTracker","updateLiveEdgeStatusHandler_","textEl_","atLiveEdge","seekToLiveEdge","clamp","Slider","handleMouseDown_","handleMouseUp_","handleMouseUp","handleMouseMove_","handleMouseMove","bar","barName","playerEvent","progress","getProgress","progress_","sizeKey","toFixed","getPercent","calculateDistance","stepBack","stepForward","bool","vertical_","percentify","LoadProgressBar","partEls_","loadedText","separator","percentageEl_","isLive","seekableEnd","bufferedEnd","percent_","dataset","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","pullTooltipBy","write","updateTime","liveWindow","secondsBehind","PlayProgressBar","timeTooltip","MouseTimeDisplay","STEP_SECONDS","PAGE_KEY_MULTIPLIER","SeekBar","_Slider","setEventHandlers_","updateInterval","enableIntervalHandler_","enableInterval_","disableIntervalHandler_","disableInterval_","toggleVisibility_","visibilityState","getCurrentTime_","liveCurrentTime","currentTime_","userSeek_","nextSeekedFromUser","seekableStart","videoWasPlaying","mouseDown","newTime","distance","mouseTimeDisplay","handleAction","gotoFraction","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","handleMouseUpHandler_","handleMouseDownHandler_","seekBar","playProgressBar","seekBarEl","removeListenersAddedOnMousedownAndTouchstart","PictureInPictureToggle","handlePictureInPictureChange","handlePictureInPictureEnabledChange","isSourceAudio","currentType","audioPosterMode","audioOnlyMode","isInPictureInPicture","exitPictureInPicture","pictureInPictureEnabled","FullscreenToggle","handleFullscreenChange","fsApi_","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","checkVolumeSupport","VolumeLevel","VolumeLevelTooltip","rangeBarRect","rangeBarPoint","volumeBarPointPx","updateVolume","MouseVolumeLevelDisplay","VolumeBar","updateLastVolume_","updateARIAAttributes","mouseVolumeLevelDisplay","volumeBarEl","volumeBarRect","volumeBarPoint","checkMuted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","throttledHandleMouseMove","orientationClass","checkMuteSupport","MuteToggle","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","soundOff","VolumePanel","inline","volumeControl","handleKeyPressHandler_","volumePanelState_","muteToggle","handleVolumeControlKeyUp","sliderActive_","sliderInactive_","Menu","menuButton_","menuButton","focusedChild_","boundHandleBlur_","handleBlur","boundHandleTapClick_","handleTapClick","addEventListenerForItem","removeEventListenerForItem","addItem","childComponent","contentElType","append","btn","buttonPressed_","unpressButton","childComponents","foundComponent","stepChild","haveTitle","MenuButton","buttonClass","handleMenuKeyUp_","handleMenuKeyUp","menu","handleMouseLeave","handleSubmenuKeyDown","createMenu","items","hideThreshold_","titleEl","titleComponent","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","handleSubmenuKeyPress","TrackButton","_MenuButton","updateHandler","MenuKeys","MenuItem","selectable","isSelected_","multiSelectable","_selected","TextTrackMenuItem","_MenuItem","kinds","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","referenceTrack","shouldBeSelected","OffTextTrackMenuItem","_TextTrackMenuItem","allHidden","TextTrackButton","_TrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","ChaptersButton","_TextTrackButton","selectCurrentItem_","track_","findChaptersTrack","setTrack","updateHandler_","remoteTextTrackEl","_remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","parentSpan","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","featuresNativeAudioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","labelElId_","updateVisibility","updateLabel","handlePlaybackRateschange","labelEl_","rates","playbackRates","currentRate","currentIndex","newIndex","playbackRateSupported","Spacer","CustomControlSpacer","_Spacer","ControlBar","ErrorDisplay","_ModalDialog","LOCAL_STORAGE_KEY$1","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","parseOptionValue","getSelectedOptionValue","selectedIndex","setSelectedOption","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","setValues","localStorage","getItem","setItem","removeItem","ttDisplay","controlBar","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","observe","contentWindow","unloadListener_","unobserve","disconnect","resizeObserver","defaults","trackingThreshold","liveTolerance","LiveTracker","handleVisibilityChange_","handleVisibilityChange","trackLiveHandler_","trackLive_","handlePlay_","handleFirstTimeupdate_","handleFirstTimeupdate","handleSeeked_","seekToLiveEdge_","reset_","handleDurationchange","toggleTracking","deltaTime","lastTime_","pastSeekEnd_","pastSeekEnd","isBehind","seekedBehindLive_","timeupdateSeen_","behindLiveEdge_","liveui","isTracking","hasStarted","trackingInterval_","timeDiff","nextSeekedFromUser_","lastSeekEnd_","seekableEnds","seekableStarts","behindLiveEdge","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","dummy","docFrag","getDescriptor","priority","descriptor","getOwnPropertyDescriptor","getInnerHTMLDescriptor","HTMLMediaElement","firstSourceWatch","resetSourceWatch_","innerDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","getSrcDescriptor","setupSourceset","resetSourceset_","srcDescriptor","oldSetAttribute","oldLoad","currentSrc","defineLazyProperty","setter","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","isScrubbing_","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","overrideNative_","override","lowerCaseType","eventName","elTracks","proxyNativeTracksForType_","techTracks","currentTarget","removeOldTracks","removeTracks","found","playerElIngest","movingMediaElementInDOM","clone","tagAttributes","techId","playerId","preload","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","isScrubbing","fastSeek","checkProgress","NaN","endFn","beginFn","webkitPresentationMode","nativeIOSFullscreen","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitDisplayingFullscreen","webkitExitFullScreen","webkitKeys","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","creationTime","timing","navigationStart","TEST_VID","canControlVolume","canControl","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","patchCanPlayType","mpegurlRE","unpatchCanPlayType","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","DEFAULT_BREAKPOINTS","tiny","xsmall","small","medium","large","xlarge","huge","getTagSettings","closest","boundDocumentFullscreenChange_","documentFullscreenChange_","boundFullWindowOnEscKey_","fullWindowOnEscKey","boundUpdateStyleEl_","updateStyleEl_","boundApplyInitTime_","applyInitTime_","boundUpdateCurrentBreakpoint_","updateCurrentBreakpoint_","boundHandleTechClick_","handleTechClick_","boundHandleTechDoubleClick_","handleTechDoubleClick_","boundHandleTechTouchStart_","handleTechTouchStart_","boundHandleTechTouchMove_","handleTechTouchMove_","boundHandleTechTouchEnd_","handleTechTouchEnd_","boundHandleTechTap_","handleTechTap_","isFullscreen_","isPosterFromTech_","queuedCallbacks_","userActive_","debugEnabled_","audioOnlyMode_","audioPosterMode_","audioOnlyCache_","playerHeight","hiddenChildren","languagesToLower","languages_","resetCache_","poster_","controls_","changingSrc_","playCallbacks_","playTerminatedQueue_","autoplay","plugins","scrubbing_","fullscreenchange","fluid_","playerOptionsCopy","middleware_","flexNotSupported_","majorVersion","userActive","listenForUserActivity_","handleStageClick_","breakpoints","responsive","styleEl_","playerElIngest_","divEmbed","tabindex","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","head","fill_","fluid","crossorigin","links","linkEl","techGet_","techCall_","_dimension","privDimension","parsedVal","ratio","aspectRatio_","idClass","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","normalizeAutoplay","techOptions","loop","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechFullscreenError_","handleTechEnterPictureInPicture_","handleTechLeavePictureInPicture_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","addTechControlsListeners_","safety","removeTechControlsListeners_","manualAutoplay_","promise","resolveMuted","previouslyMuted","restoreMuted","mutedPromise","updateSourceCaches_","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","currentSource","eventSrc","lastSource_","techSrc","techGet","request","lastPlaybackRate","queued","timeWhenWaiting","timeUpdateListener","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","userActions","click","inAllowedEls","doubleClick","userWasActive","cancelable","toggleFullscreenClass_","targetPlayer","isFs","fullscreen","msMatchesSelector","_this9","togglePictureInPictureClass_","initTime","inactivityTimeout","defaultPlaybackRate","_this10","resolve","play_","_this11","isSrcReady","waitToPlay_","runPlayTerminatedQueue_","runPlayCallbacks_","queue","q","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","oldValue","fullscreenOptions","offHandler","requestFullscreenHelper_","fsOptions","_this12","preferFullWindow","enterFullWindow","exitFullscreenHelper_","_this13","exitFullWindow","isFullWindow","docOrigOverflow","overflow","isPiP","isInPictureInPicture_","hotkeys","excludeElement","isContentEditable","allowedInputTypes","excludedTags","handleHotkeys","_hotkeys$fullscreenKe","fullscreenKey","keydownEvent","_hotkeys$muteKey","muteKey","_hotkeys$playPauseKey","playPauseKey","FSToggle","selectSource","foundSourceAndTech","_this14","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","flip","finder","sourceOrder","handleSrc_","isRetry","_this15","resetRetryOnError_","middlewareSource","src_","notSupportedMessage","retryOnError","retry","stopListeningForErrors","_this16","sourceTech","_this17","doReset_","resetControlBarUI_","resetProgressBar_","resetPlaybackRate_","resetVolumeBar_","durationDisplay","currentSources","techAutoplay","newPoster","usingNativeControls_","_this18","hookFunction","newErr","suppressNotSupportedError","triggerSuppressedError","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseUpAndMouseLeave","isAudio_","enableAudioOnlyUI_","_this19","playerChildren","controlBarHeight","disableAudioOnlyUI_","_this20","exitPromises","enablePosterModeUI_","disablePosterModeUI_","_this21","audioOnlyModePromise","_obj","toJSON","createModal","_this22","modal","currentBreakpoint","candidateBreakpoint","maxWidth","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","loadMedia","_this23","_this$cache_$media","artwork","tt","getMedia","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","previousLogLevel_","newRates","html5","userLanguage","navigationUI","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","plugin","basicPluginWrapper","createPluginFactory","PluginSubClass","getEventHash","Plugin","VERSION","isBasic","registerPlugin","deregisterPlugin","getPlugins","getPluginVersion","hasPlugin","extend","subClassMethods","methods","super_","normalizeId","getPlayer","defaultView","PlayerComponent","getPlayers","nId","_tag","_player","getAllPlayers","comp","writeable","mergeOptions","addLanguage","_mergeOptions","createTimeRange","EventTarget","resolveManifestRedirect","handleManifestRedirect","req","responseURL","logger","TIME_FUDGE_FACTOR","SAFE_TIME_DELTA","filterRanges","timeRanges","results","findRange","findNextRange","findGaps","bufferIntersection","bufferA","bufferB","arity","extents","printableRange","strArr","timeUntilRebuffer","timeRangesToArray","timeRangesList","isRangeDifferent","lastBufferedEnd","timeAheadOf","segmentDurationWithParts","getPartsAndSegments","si","getLastParts","lastSegment","getKnownPartCount","partCount","liveEdgeDelay","partHoldBack","holdBack","backwardDuration","endSequence","forwardDuration","intervalDuration","expired","backward","forward","totalDuration","sumDurations","defaultDuration","durationList","durations","playlistEnd","useSafeLiveEnd","liveEdgePadding","lastSegmentEndTime","getMediaInfoForTime","startingSegmentIndex","startingPartIndex","experimentalExactManifestTimings","partsAndSegments","partAndSegment","_partAndSegment","_i3","_i4","_partAndSegment2","isBlacklisted","excludeUntil","isIncompatible","isEnabled","blacklisted","isDisabled","isAes","estimateSegmentRequestTime","bytesReceived","isLowestEnabledRendition","currentBandwidth","MAX_VALUE","playlistMatch","someAudioVariant","groupName","variant","_ret","Playlist","createPlaylistID","parseManifest","onwarn","oninfo","_ref$customTagParsers","customTagParsers","_ref$customTagMappers","customTagMappers","experimentalLLHLS","customParser","setupMediaPlaylist","playlistErrors_","setupMediaPlaylists","resolveMediaGroupUris","masterForMedia","addPropertiesToMaster","phonyUri","audioOnlyMaster","groupId","mergeOptions$2","EventTarget$1","addLLHLSQueryDirectives","parameters","nextMSN","nextPart","_HLS_part","_HLS_msn","canSkipUntil","_HLS_skip","parsedUri","searchParams","updateSegment","skipped","updateSegments","oldSegments","newSegments","newSegment","resolveSegmentUris","baseUri","getAllSegments","isPlaylistUnchanged","updateMaster$1","newMedia","unchangedCheck","oldMedia","mergedPlaylist","skippedSegments","refreshDelay","lastPart","lastDuration","PlaylistLoader","vhs","logger_","_options$withCredenti","_options$handleManife","handleManifestRedirects","vhs_","vhsOptions","handleMediaupdatetimeout_","playlistRequestError","haveMetadata","playlistString","startingState","parseManifest_","playlistObject","lastRequest","pendingMedia_","media_","updateMediaUpdateTimeout_","stopRequest","mediaUpdateTimeout","finalRenditionTimeout","oldRequest","shouldDelay","delay","mediaChange","masterPlaylistRef","started","setupInitialPlaylist","srcUri","videojsXHR","mergeOptions$1","callbackWrapper","reqResponse","responseTime","roundTripTime","requestTime","responseHeaders","timedout","xhrFactory","XhrFunction","beforeRequest","Vhs","newOptions","xhrMethod","originalAbort","byterangeStr","byterangeEnd","byterangeStart","segmentXhrHeaders","Range","textRange","formatHexString","formatAsciiString","createTransferableMessage","transferable","initSegmentId","segmentKeyId","hexDump","ascii","tagDump","textRanges","utils","SEGMENT_END_FUDGE_PERCENT","playerTimeToProgramTime","playerTime","transmuxerPrependedSeconds","videoTimingInfo","transmuxedStart","transmuxedPresentationStart","startOfSegment","offsetFromSegmentStart","getTime","originalSegmentVideoDuration","transmuxedPresentationEnd","findSegmentForProgramTime","programTime","nextSegmentStart","lastSegmentStart","lastSegmentDuration","lastSegmentEnd","estimatedStart","findSegmentForPlayerTime","segmentEnd","getOffsetFromTimestamp","comparisonTimeStamp","segmentDateTime","programDateTime","segmentTimeEpoch","programTimeEpoch","verifyProgramDateTimeTags","getProgramTime","_ref$time","matchedSegment","seekTime","programTimeObject","mediaSeconds","toISOString","seekToProgramTime","_ref2$retryCount","retryCount","seekTo","_ref2$pauseAfterSeek","pauseAfterSeek","mediaOffset","seekToTime","seekedCallback","callbackOnCompleted","containerRequest","id3Offset","finished","endRequestAndCallback","_bytes","progressListener","newPart","overrideMimeType","loaded","dashPlaylistUnchanged","aSegment","bSegment","aByterange","bByterange","parseMasterXml","masterXml","srcUrl","updateMaster","oldMaster","newMaster","noChanges","playlistUpdate","_playlistUpdate","equivalentSidx","neitherMap","equivalentMap","compareSidxEntry","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","sidxInfo","filterChangedSidxMappings","videoSidx","mediaGroupSidx","DashPlaylistLoader","srcUrlOrPlaylist","masterPlaylistLoader","masterPlaylistLoader_","isMaster_","refreshXml_","refreshMedia_","loadedPlaylists_","sidxMapping_","childPlaylist_","requestErrored_","addSidxSegments_","fin","internal","blacklistDuration","_playlist$sidx$bytera","mediaRequest_","minimumUpdatePeriodTimeout_","createMupOnMedia_","hasPendingRequest","sidxChanged","isFinalRendition","updateMinimumUpdatePeriodTimeout_","requestMaster_","masterChanged","haveMaster_","masterXml_","date","masterLoaded_","handleMaster_","syncClientServerClock_","done","utcTiming","clientOffset_","serverTime","mpl","mup","createMUPTimeout_","mediaID","mediaChanged","createMediaUpdateTimeout","Config","GOAL_BUFFER_LENGTH","MAX_GOAL_BUFFER_LENGTH","BACK_BUFFER_LENGTH","GOAL_BUFFER_LENGTH_RATE","INITIAL_BANDWIDTH","BANDWIDTH_VARIANCE","BUFFER_LOW_WATER_LINE","MAX_BUFFER_LOW_WATER_LINE","EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE","BUFFER_LOW_WATER_LINE_RATE","BUFFER_HIGH_WATER_LINE","stringToArrayBuffer","browserWorkerPolyFill","workerObj","createObjectURL","Blob","blob","BlobBuilder","getBlob","factory","objectUrl","worker","Worker","objURL","terminate","revokeObjectURL","getWorkerString","workerCode$1","init","flushSource","partialFlush","endTimeline","dinf","esds","ftyp","mdat","mfhd","minf","moof","moov","mvex","mvhd","trak","tkhd","mdia","mdhd","hdlr","sdtp","stbl","stsd","traf","trex","trun$1","MAJOR_BRAND","MINOR_VERSION","AVC1_BRAND","VIDEO_HDLR","AUDIO_HDLR","HDLR_TYPES","VMHD","SMHD","DREF","STCO","STSC","STSZ","STTS","MAX_UINT32$1","getUint64$2","numbers","avc1","avcC","btrt","dref","mp4a","pasp","smhd","stco","stsc","stsz","stts","styp","tfdt","tfhd","trun","vmhd","payload","setUint32","audioobjecttype","samplingfrequencyindex","channelcount","samplerate","sequenceNumber","trackFragments","samples","dependsOn","isDependedOn","hasRedundancy","videoSample","audioSample","avc1Box","sps","pps","sequenceParameterSets","pictureParameterSets","profileIdc","profileCompatibility","levelIdc","sarRatio","hSpacing","vSpacing","samplesize","trackFragmentHeader","trackFragmentDecodeTime","trackFragmentRun","sampleDependencyTable","dataOffset","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","baseMediaDecodeTime","audioTrun","videoTrun","trunHeader","durationPresent","sizePresent","flagsPresent","compositionTimeOffset","bytesOffest","header","sample","isLeading","paddingValue","isNonSyncSample","degradationPriority","silence","mp4Generator","fileType","movie","groupNalsIntoFrames","nalUnits","currentNal","currentFrame","frames","nalCount","nalUnitType","dts","pts","keyFrame","groupFramesIntoGops","currentGop","gops","extendFirstKeyFrame","createDefaultSample","sampleForFrame","frame","generateSampleTable$1","baseDataOffset","concatenateNalData","nalsByteLength","numberOfNals","totalByteLength","generateSampleTableForFrame","concatenateNalDataForFrame","frameUtils","generateSampleTable","highPrefix","lowPrefix","zeroFill","makeTable","metaTable","arr","silence_1","coneOfSilence","96000","88200","64000","48000","44100","32000","24000","16000","12000","11025","8000","ONE_SECOND_IN_TS$4","clock","sumFrameByteLengths","currentObj","prefixWithSilence","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","silentFrame","firstFrame","frameDuration","audioGapDuration","audioFillFrameCount","audioFillDuration","trimAdtsFramesByEarliestDts","adtsFrames","earliestAllowedDts","minSegmentDts","minSegmentPts","concatenateFrameData","audioFrameUtils","ONE_SECOND_IN_TS$3","collectDtsInfo","timelineStartInfo","maxSegmentPts","maxSegmentDts","clearDtsInfo","calculateTrackBaseMediaDecodeTime","scale","trackDecodeInfo","USER_DATA_REGISTERED_ITU_T_T35","RBSP_TRAILING_BITS","parseSei","payloadType","payloadSize","userIdentifier","parseUserData","sei","parseCaptionPackets","userData","ccData","discardEmulationPreventionBytes$1","newLength","newData","emulationPreventionBytesPositions","sourceIndex","captionPacketParser","discardEmulationPreventionBytes","CaptionStream$1","CaptionStream","parse708captions_","parse708captions","captionPackets_","ccStreams_","Cea608Stream","cc708Stream_","Cea708Stream","newCaptionPackets","escapedRBSP","latestDts_","ignoreNextEqualDts_","numSameDts_","flushCCStreams","flushType","flushStream","idx","presortIndex","packet","dispatchCea608Packet","dispatchCea708Packet","activeCea608Channel_","ccStream","setsTextOrXDSActive","setsChannel1Active","setsChannel2Active","CHARACTER_TRANSLATION_708","get708CharFromCode","newCode","within708TextBlock","Cea708Window","windowNum","clearText","pendingNewLine","winAttr","penAttr","penLoc","penColor","visible","rowLock","columnLock","relativePositioning","anchorVertical","anchorHorizontal","anchorPoint","rowCount","virtualRowCount","columnCount","windowStyle","penStyle","getText","rows","rowIdx","beforeRowOverflow","addText","backspace","Cea708Service","serviceNum","encoding","currentWindow","windows","createTextDecoder","startPts","setCurrentWindow","textDecoder_","serviceProps","captionServiceEncodings","serviceName","serviceEncodings","current708Packet","services","new708Packet","add708Bytes","push708Packet","ptsVals","byte0","byte1","packet708","packetData","blockSize","seq","sizeCode","pushServiceBlock","initService","handleText","multiByteCharacter","extendedCommands","defineWindow","clearWindows","deleteWindows","displayWindows","hideWindows","toggleWindows","setWindowAttributes","setPenAttributes","setPenColor","setPenLocation","isExtended","getPts","flushDisplayed","_char","charCodeArray","isMultiByte","extended","currentByte","nextByte","firstByte","secondByte","fillOpacity","fillRed","fillGreen","fillBlue","borderType","borderRed","borderGreen","borderBlue","wordWrap","printDirection","scrollDirection","justify","effectSpeed","effectDirection","displayEffect","displayedText","winId","endPts","pushCaption","textTag","penSize","italics","underline","edgeType","fontStyle","fgOpacity","fgRed","fgGreen","fgBlue","bgOpacity","bgRed","bgGreen","bgBlue","edgeRed","edgeGreen","edgeBlue","column","CHARACTER_TRANSLATION","getCharFromCode","BOTTOM_ROW","ROWS","createDisplayBuffer","field","dataChannel","field_","dataChannel_","setConstants","swap","char0","char1","lastControlCode_","PADDING_","RESUME_CAPTION_LOADING_","mode_","END_OF_CAPTION_","clearFormatting","displayed_","nonDisplayed_","startPts_","ROLL_UP_2_ROWS_","rollUpRows_","setRollUp","ROLL_UP_3_ROWS_","ROLL_UP_4_ROWS_","CARRIAGE_RETURN_","shiftRowsUp_","BACKSPACE_","row_","ERASE_DISPLAYED_MEMORY_","ERASE_NON_DISPLAYED_MEMORY_","RESUME_DIRECT_CAPTIONING_","isSpecialCharacter","column_","isExtCharacter","isMidRowCode","addFormatting","isOffsetControlCode","isPAC","formatting_","isColorPAC","isNormalChar","topRow_","BASE_","EXT_","CONTROL_","OFFSET_","_char2","newBaseRow","popOn","baseRow","rollUp","paintOn","captionStream","streamTypes","H264_STREAM_TYPE","ADTS_STREAM_TYPE","METADATA_STREAM_TYPE","MAX_TS","RO_THRESH","TYPE_SHARED","handleRollover$1","TimestampRolloverStream$1","TimestampRolloverStream","lastDTS","referenceDTS","type_","_MetadataStream","timestampRolloverStream","handleRollover","percentEncode$1","parseUtf8","parseIso88591$1","parseSyncSafeInteger$1","tagParsers","TXXX","WXXX","PRIV","owner","privateData","tagSize","bufferSize","dispatchType","frameStart","frameSize","frameHeader","dataAlignmentIndicator","timeStamp","_TransportPacketStream","_TransportParseStream","_ElementaryStream","metadataStream","MP2T_PACKET_LENGTH$1","SYNC_BYTE$1","bytesInBuffer","everything","parsePsi","parsePat","parsePmt","packetsWaitingForPmt","programMapTable","payloadUnitStartIndicator","pat","section_number","last_section_number","pmtPid","pmt","sectionLength","tableEnd","programInfoLength","streamType","pid","processPes_","STREAM_TYPES","h264","adts","segmentHadPmt","timedMetadata","parsePes","pes","ptsDtsFlags","startPrefix","packetLength","forceFlush","packetFlushable","trackId","flushStreams_","m2ts","PAT_PID","MP2T_PACKET_LENGTH","TransportPacketStream","TransportParseStream","ElementaryStream","MetadataStream","_AdtsStream","m2ts_1","ONE_SECOND_IN_TS$2","ADTS_SAMPLING_FREQUENCIES$1","handlePartialSegments","frameNum","skipWarn_","frameLength","protectionSkipBytes","oldBuffer","sampleCount","adtsFrameDuration","ExpGolomb","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","bits","valu","skipLeadingZeros","leadingZeroCount","skipUnsignedExpGolomb","skipExpGolomb","readUnsignedExpGolomb","clz","readExpGolomb","readBoolean","readUnsignedByte","_H264Stream","_NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","expGolomb","syncPoint","swapBuffer","100","110","122","244","44","83","86","118","128","138","139","134","currentPts","currentDts","readSequenceParameterSet","skipScalingList","nalByteStream","nalUnitTypeCode","expGolombDecoder","deltaScale","lastScale","nextScale","chromaFormatIdc","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","aspectRatioIdc","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","_AacStream","H264Stream","NalByteStream","ADTS_SAMPLING_FREQUENCIES","parseId3TagSize","isLikelyAacData$1","parseSyncSafeInteger","percentEncode","parseIso88591","parseAdtsSize","lowThree","highTwo","parseType$2","parseSampleRate","parseAacTimestamp","isLikelyAacData","parseType","setTimestamp","bytesLeft","tempLength","_VideoSegmentStream","_AudioSegmentStream","_Transmuxer","_CoalesceStream","AUDIO_PROPERTIES","audioProperties","VIDEO_PROPERTIES","videoProperties","ONE_SECOND_IN_TS$1","retriggerForStream","addPipelineLogRetriggers","transmuxer","pipeline","arrayEquals","generateSegmentTimingInfo","startDts","endDts","prependedContentDuration","ptsOffsetFromDts","decodeDuration","presentationDuration","firstSequenceNumber","setEarliestDts","earliestDts","setVideoBaseMediaDecodeTime","setAudioAppendStart","videoClockCyclesOfSilencePrefixed","gopsToAlignWith","minPTS","gopCache_","nalUnit","gopForFusion","firstGop","lastGop","resetStream_","getGopForFusion_","alignedGops","alignGopsAtEnd","alignGopsAtEnd_","alignGopsAtStart_","gop","dtsDistance","nearestGopObj","currentGopObj","halfSecond","allowableOverlap","nearestDistance","alignIndex","gopIndex","alignEndIndex","matchFound","trimIndex","alignGopsWith","newGopsToAlignWith","numberOfTracks","remux","remuxTracks","pendingTracks","videoTrack","pendingBoxes","pendingCaptions","pendingMetadata","pendingBytes","emittedTracks","output","audioTrack","caption","id3","captionStreams","cueTime","setRemux","hasFlushed","transmuxPipeline_","setupAacPipeline","aacStream","audioTimestampRolloverStream","timedMetadataTimestampRolloverStream","adtsStream","coalesceStream","headOfPipeline","audioSegmentStream","getLogTrigger_","hasAudio","hasVideo","setupTsPipeline","packetStream","elementaryStream","h264Stream","videoSegmentStream","id3Frame","setBaseMediaDecodeTime","isAac","resetCaptions","Transmuxer","VideoSegmentStream","AudioSegmentStream","toUnsigned$3","toHexString$1","bin","toUnsigned","parseType$1","parseType_1","toUnsigned$2","findBox","subresults","findBox_1","toUnsigned$1","getUint64$1","parseTfdt","parseSampleFlags","parseSampleFlags_1","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","getInt32","parseTrun","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","sampleDescriptionIndex","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","baseDataOffsetIsMoof","parseTfhd","commonjsGlobal","globalThis","compositionStartTime","getVideoTrackIds","getTracks","getTimescaleFromMediaHeader","window_1","mapToSample","approximateOffset","findSeiNals","avcStream","seiNal","lastMatchedSample","avcView","logs","seiNals","matchingSample","parseSamples","truns","allSamples","trackRun","parseCaptionNals","videoTrackId","trafs","mdats","captionNals","mdatTrafPairs","matchingTraf","pair","headerInfo","parseEmbeddedCaptions","trackNals","CaptionParser","segmentCache","parsedCaptions","parsingPartial","isInitialized","isPartial","isNewInit","videoTrackIds","timescales","parsedData","cachedSegment","pushNals","nals","nal","clearParsedCaptions","resetCaptionStream","clearAllCaptions","captionParser","traks","lowestTime","baseTime","trafBoxes","parsedTfhd","parsedTfdt","parsedTrun","hdlrs","tkhds","handlerType","getUint8","tkhdVersion","sampleDescriptions","codecConfig","codecConfigType","codecBox","probe$2","parsePid","parsePayloadUnitStartIndicator","parseAdaptionField","pusi","payloadOffset","parsePesType","parsePesTime","parseNalUnitType","videoPacketContainsKeyFrame","nalType","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","probe$1","probe","SYNC_BYTE","parsePsi_","table","parseAudioPes_","pesType","parsed","endLoop","parseVideoPes_","firstKeyFrame","adjustTimestamp_","baseTimestamp","audioBaseTimestamp","dtsTime","ptsTime","videoBaseTimestamp","inspectAac_","audioCount","audioTimescale","inspectTs_","inspect","isAacData","tsInspector","wireTransmuxerEvents","initArray","typedArray","postMessage","action","gopInfo","timingInfo","videoSegmentTimingInfo","presentation","audioSegmentTimingInfo","trackInfo","audioTimingInfo","MessageHandlers","pushMp4Captions","trackIds","probeMp4StartTime","probeMp4Tracks","probeTs","baseStartTime","tsStartTime","timeInfo","videoStart","audioStart","clearAllMp4Captions","clearParsedMp4Captions","setTimestampOffset","timestampOffset","appendStart","onmessage","messageHandlers","TransmuxWorker","handleData_","transmuxedData","_event$data$segment","videoFrameDtsTime","videoFramePtsTime","handleDone_","handleGopInfo_","processTransmux","audioAppendStart","onData","onTrackInfo","onAudioTimingInfo","onVideoTimingInfo","onVideoSegmentTimingInfo","onAudioSegmentTimingInfo","onId3","onCaptions","onDone","onEndedTimeline","onTransmuxerLog","isEndOfTimeline","waitForEndedTimelineEvent","handleMessage","currentTransmux","dequeue","transmuxQueue","processAction","enqueueAction","transmux","createTransmuxer","term","segmentTransmuxer","workerCallback","endAction","listenForEndEvent","isArrayBuffer","transfers","REQUEST_ERRORS","FAILURE","TIMEOUT","ABORTED","abortAll","activeXhrs","getRequestStats","getProgressStats","progressEvent","stats","handleErrors","handleKeyResponse","finishProcessingFn","errorObj","parseInitSegment","_callback","handleInitSegmentResponse","encryptedBytes","parseError","handleSegmentResponse","newBytes","lastReachedChar","transmuxAndNotify","trackInfoFn","timingInfoFn","videoSegmentTimingInfoFn","audioSegmentTimingInfoFn","id3Fn","captionsFn","endedTimelineFn","dataFn","doneFn","fmp4Tracks","isMuxed","audioStartFn","audioEndFn","videoStartFn","videoEndFn","finish","id3Frames","probeResult","handleSegmentBytes","bytesAsUint8Array","isFmp4","audioCodec","videoCodec","finishLoading","decrypt","keyBytes","decryptionWorker","decryptionHandler","decrypted","encrypted","decryptSegment","requestId","decryptedBytes","waitForCompletion","didError","segmentFinish","endOfAllRequests","handleLoadEnd","_ref10","loadendState","abortFn","calledAbortFn","handleProgress","_ref11","progressFn","firstBytesReceivedAt","mediaSegmentRequest","_ref12","xhrOptions","keyRequestOptions","keyRequestCallback","keyXhr","differentMapKey","mapKeyRequestOptions","mapKeyRequestCallback","mapKeyXhr","initSegmentOptions","initSegmentRequestCallback","initSegmentXhr","segmentRequestOptions","segmentRequestCallback","segmentXhr","activeXhr","logFn$1","getCodecs","mediaAttributes","isMaat","unwrapCodecList","codecList","codecCount","codecObj","codecsForPlaylist","codecInfo","defaultCodecs","logFn","representationToString","safeGetComputedStyle","property","stableSort","sortFn","newArray","cmp","comparePlaylistBandwidth","leftBandwidth","rightBandwidth","comparePlaylistResolution","leftWidth","rightWidth","simpleSelector","playerBandwidth","playerWidth","limitRenditionByPlayerDimensions","masterPlaylistController","getAudioTrackPlaylists_","sortedPlaylistReps","rep","enabledPlaylistReps","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","_chosenRep","haveResolution","resolutionBestRepList","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","leastPixelDiffRep","resolutionBestRep","experimentalLeastPixelDiffSelector","leastPixelDiffList","pixelDiff","chosenRep","_type","lastBandwidthSelector","pixelRatio","useDevicePixelRatio","devicePixelRatio","systemBandwidth","masterPlaylistController_","movingAverageBandwidthSelector","decay","average","lastSystemBandwidth","minRebufferMaxBandwidthSelector","syncController","compatiblePlaylists","enabledPlaylists","bandwidthPlaylists","rebufferingEstimates","getSyncPoint","numRequests","requestTimeEstimate","rebufferingImpact","noRebufferingPlaylists","estimate","lowestBitrateCompatibleVariantSelector","playlistsWithVideo","concatSegments","segmentObj","createCaptionsTrackIfNotExists","inbandTextTracks","def","captionService","addCaptionData","captionArray","Cue","WebKitDataCue","deprecateOldCue","addMetadata","metadataArray","videoDuration","metadataTrack","metadataTrack_","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","nextTime","createMetadataTrackIfNotExists","inBandMetadataTrackDispatchType","removeCuesFromTrack","removeDuplicateCuesFromTrack","duplicates","occurrences","dupe","gopsSafeToAlignWith","mapping","currentTimePts","updateGopBuffer","removeGopBuffer","updatedBuffer","shallowEqual","akeys","bkeys","QUOTA_EXCEEDED_ERR","getSyncSegmentCandidate","targetTime","timelineSegments","MIN_BACK_BUFFER","CHECK_BUFFER_DELAY","finite","MIN_SEGMENT_DURATION_TO_SAVE_STATS","illegalMediaSwitch","loaderType","startingMedia","safeBackBufferTrimTime","trimTime","maxTrimTime","segmentInfoString","_segmentInfo$playlist","_segmentInfo$playlist2","mediaIndex","segmentLen","selection","isSyncRequest","independent","hasPartIndex","zeroBasedPartCount","timingInfoPropertyForMedia","timestampOffsetForSegment","overrideCheck","shouldWaitForTimelineChange","timelineChangeController","audioDisabled","lastMainTimelineChange","lastTimelineChange","pendingAudioTimelineChange","pendingTimelineChange","mediaDuration","timingInfos","maxDuration","typeTimingInfo","segmentTooLong","getTroublesomeSegmentDurationMessage","sourceType","isSegmentWayTooLong","isSegmentSlightlyTooLong","segmentTooLongMessage","severity","SegmentLoader","_videojs$EventTarget","mediaSource","throughput","roundTrip","resetStats_","hasPlayed_","hasPlayed","seekable_","seeking_","mediaSource_","loaderType_","currentMediaInfo_","startingMediaInfo_","segmentMetadataTrack_","segmentMetadataTrack","goalBufferLength_","goalBufferLength","sourceType_","sourceUpdater_","sourceUpdater","inbandTextTracks_","state_","timelineChangeController_","shouldSaveSegmentTimingInfo_","useDtsForTimestampOffset_","useDtsForTimestampOffset","captionServices_","checkBufferTimeout_","currentTimeline_","pendingSegment_","xhrOptions_","pendingSegments_","audioDisabled_","isPendingTimestampOffset_","gopBuffer_","timeMapping_","safeAppend_","appendInitSegment_","playlistOfLastInitSegment_","callQueue_","loadQueue_","metadataQueue_","waitingOnRemove_","quotaExceededErrorRetryTimeout_","activeInitSegmentId_","initSegments_","cacheEncryptionKeys_","cacheEncryptionKeys","keyCache_","decrypter_","decrypter","syncController_","syncPoint_","transmuxer_","createTransmuxer_","triggerSyncInfoUpdate_","isEndOfStream_","ended_","fetchAtBuffer_","newState","hasEnoughInfoToAppend_","processCallQueue_","hasEnoughInfoToLoad_","processLoadQueue_","mediaBytesTransferred","mediaRequests","mediaRequestsAborted","mediaRequestsTimedout","mediaRequestsErrored","mediaTransferDuration","mediaSecondsLoaded","mediaAppends","abort_","setAudio","removeAudio","monitorBuffer_","abortRequests","clearPendingTimelineChange","checkForAbort_","_error","endOfStream","buffered_","getMediaInfo_","videoBuffered","audioBuffered","initSegmentForMap","storedMap","segmentKey","storedKey","couldBeginLoading_","playlist_","init_","resetEverything","newPlaylist","syncInfo","setDateTimeMappingForStart","oldId","resyncLoader","resetLoader","mediaSequenceDiff","saveExpiredSegmentInfo","force","removesRemaining","removeFinished","removeVideo","monitorBufferTick_","fillBuffer_","updating","chooseNextRequest_","loadSegment_","appendedLastSegment","appendedLastPart","bufferedTime","preloaded","haveEnoughBuffer","_Playlist$getMediaInf","_partIndex","nextSegment","lastSegmentLastPart","generateSegmentInfo_","forceTimestampOffset","random","timestampOffsetForSegment_","audioBufferedEnd","audioTimestampOffset","videoTimestampOffset","earlyAbortWhenNeeded_","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$1","switchCandidate","timeSavedBySwitching","minimumTimeSaving","handleAbort_","handleProgress_","simpleSegment","handleTrackInfo_","checkForIllegalMediaSwitch","handleTimingInfo_","timeType","timingInfoProperty","handleCaptions_","captionData","hasAppendedData_","captionTracks","captionTrack","trackName","_captionTracks$trackN","handleId3_","processMetadataQueue_","callQueue","fun","loadQueue","getCurrentMediaInfo_","setTimeMapping_","updateMediaSecondsLoaded_","firstVideoFrameTimeForData","useVideoTimingInfo","trueSegmentStart_","currentStart","currentVideoTimestampOffset","updateAppendInitSegmentStatus","updateSourceBufferTimestampOffset_","updateTimingInfoEnd_","saveSegmentTimingInfo","shouldSaveTimelineMapping","appendData_","changedTimestampOffset","getInitSegmentAndUpdateState_","handleQuotaExceededError_","audioBufferStart","audioBufferEnd","videoBufferStart","videoBufferEnd","appendToSourceBuffer_","timeToRemoveUntil","handleAppendError_","appendBuffer","handleSegmentTimingInfo_","segmentTimingInfo","transmuxedDecodeStart","transmuxedDecodeEnd","trimBackBuffer_","updateTransmuxerAndRequestSegment_","shouldUpdateTransmuxerTimestampOffset_","createSimplifiedSegmentObj_","isEndOfStream","isWalkingForward","isDiscontinuity","segmentRequestFinished_","removeToTime","previousSegment","saveTransferStats_","saveBandwidthRelatedStats_","handleTimeout_","waitForAppendsToComplete_","timelineMapping","mappingForTimeline","waitForVideo","waitForAudio","waitingOnAppends","checkAppendsDone_","videoQueueCallback","audioQueueCallback","handleAppendsDone_","illegalMediaSwitchError","didChange","getSegmentStartTimeForTimestampOffsetCalculation_","prioritizedTimingInfo","segmentDurationMessage","recordThroughput_","addSegmentMetadataCue_","badSegmentGuess","badPartGuess","segmentProcessingTime","segmentProcessingThroughput","Vhs$1","toTitleCase","bufferTypes","_updating","sourceBuffer","queuePending","nextQueueIndexOfType","queueEntry","shiftQueue","queueIndex","cleanupBuffer","titleType","inSourceBuffers","sourceBuffers","actions","onError","_duration","addSourceBuffer","mime","removeSourceBuffer","changeType","pushQueue","onUpdateend","SourceUpdater","sourceopenListener_","audioTimestampOffset_","videoTimestampOffset_","delayedAudioAppendQueue_","videoAppendQueued_","onVideoUpdateEnd_","onAudioUpdateEnd_","onVideoError_","videoError_","onAudioError_","audioError_","createdSourceBuffers_","initializedEme_","triggeredReady_","initializedEme","hasCreatedSourceBuffers","hasInitializedAnyEme","createSourceBuffers","addOrChangeSourceBuffers","canRemoveSourceBuffer","canChangeType","SourceBuffer","processedAppend_","videoBuffer","que","audioBuffer","setDuration","uint8ToUtf8","uintArray","VTT_LINE_TERMINATORS","_char3","VTTSegmentLoader","_SegmentLoader","subtitlesTrack_","featuresNativeTextTracks_","combinedByteLength","combinedSegment","timestampOffsetForTimeline","checkTimestampOffset","skipEmptySegments_","stopForError","loadHandler","requested","parseVTTCues_","updateTimeMapping_","timelines","decodeBytesToString","timestampmap","MPEGTS","LOCAL","mapData","segmentData","mappingObj","diff","firstStart","lastStart","findAdCue","mediaTime","adStartTime","adEndTime","updateAdCues","_segment$cueOutCont$s","adOffset","adTotal","MAX_MEDIA_SEQUENCE_DIFF_FOR_SYNC","syncPointStrategies","run","timelineToDatetimeMappings","lastDistance","datetimeMapping","z","discontinuitySync","discontinuities","SyncController","syncPoints","runStrategies_","selectSyncPoint_","getExpiredTime","strategy","bestSyncPoint","bestDistance","bestStrategy","newDistance","lastRemovedSegment","firstSegment","playlistTimestamp","didCalculateSegmentTimeMapping","calculateSegmentTimeMapping_","saveDiscontinuitySyncInfo_","dateTime","accuracy","mediaIndexDiff","TimelineChangeController","pendingTimelineChanges_","lastTimelineChanges_","workerCode","createCommonjsModule","basedir","commonjsRequire","createClass","_defineProperties","_createClass","protoProps","staticProps","inheritsLoose","unpad","padded","precompute","xInv","x2","x4","x8","tEnc","tDec","tables","encTable","decTable","sbox","sboxInv","th","aesTables","AES","tmp","_tables","keyLen","rcon","encKey","decKey","encrypted0","encrypted1","encrypted2","encrypted3","out","a2","c2","nInnerRounds","kIndex","table0","table1","table2","table3","AsyncStream","jobs","timeout_","processJob_","job","ntoh","word","initVector","init0","init1","init2","init3","wordIx","encrypted32","Int32Array","decipher","decrypted32","Decrypter","STEP","asyncStream_","decryptChunk_","audioTrackKind_","stopLoaders","segmentLoader","activePlaylistLoader","startLoaders","playlistLoader","onGroupChanged","_settings$segmentLoad","segmentLoaders","mainSegmentLoader","activeTrack","activeGroup","getActiveGroup","previousActiveLoader","lastGroup","lastGroup_","lastTrack_","isMasterPlaylist","onGroupChanging","onTrackChanged","_settings$segmentLoad2","lastTrack","mpc","selectPlaylist","fastQualityChange_","blacklistCurrentPlaylist","defaultTrack","setupListeners","requestOptions","initialize","_settings$mediaTypes$","variantLabel","_settings$mediaTypes$2","_settings$mediaTypes$3","newProps","groupMatch","variants","groupKeys","groupPropertyList","activeTrack_","setupMediaGroups","_settings$segmentLoad3","audioSegmentLoader","activeAudioGroup","onAudioTrackChanged","createMediaTypes","ABORT_EARLY_BLACKLIST_SECONDS","loaderStats","sumLoaderStat","audioSegmentLoader_","mainSegmentLoader_","shouldSwitchToMedia","currentPlaylist","nextPlaylist","bufferLowWaterLine","bufferHighWaterLine","experimentalBufferBasedABR","sharedLogLine","isBuffered","forwardBuffer","maxBufferLowWaterLine","nextBandwidth","currBandwidth","logLine","_logLine","MasterPlaylistController","externVhs","useCueTags","enableLowInitialPlaylist","maxPlaylistRetries","useCueTags_","cueTagsTrack_","requestOptions_","pauseLoading","mediaTypes_","handleDurationChange_","handleSourceOpen_","handleSourceEnded_","segmentLoaderSettings","setupMasterPlaylistLoaderListeners_","subtitleSegmentLoader_","setupSegmentLoaderListeners_","startABRTimer_","stopABRTimer_","triggeredFmp4Usage","loadOnPlay_","timeToLoadedData__","mainAppendsToLoadedData__","audioAppendsToLoadedData__","timeToLoadedDataStart","mainAppendsToLoadedData_","audioAppendsToLoadedData_","appendsToLoadedData_","timeToLoadedData_","checkABR_","shouldSwitchToMedia_","switchMedia_","newId","abrTimer_","defaultPlaylists","defaultGroup","requestTimeout","triggerPresenceUsage_","setupFirstPlay","updatedPlaylist","selectedMedia","excludeUnsupportedVariants_","selectInitialPlaylist","initialMedia_","haveJsonSource","handleUpdatedMediaPlaylist","lastExcludeReason_","playlistOutdated","stuckAtPlaylistEnd_","updateAdCues_","updateDuration","defaultDemuxed","audioGroupKeys","onSyncInfoUpdate_","onEndOfStream","delegateLoaders_","updateCodecs","tryToCreateSourceBuffers_","getCodecsOrExclude_","mediaSecondsLoaded_","smoothQualityChange_","mainMediaInfo","absolutePlaylistEnd","reincluded","errorMessage","delayDuration","fnNames","loaders","dontFilterPlaylist","loader","audioSeekable","mainSeekable","oldEnd","oldStart","updateDuration_","areMediaTypesKnown_","usingAudioLoader","hasMainMediaInfo","hasAudioMediaInfo","playlistCodecs","unsupportedAudio","supportFunction","unsupportedCodecs","supporter","variantAudioGroup","switchMessages","newCodec","oldCodec","excludeIncompatibleVariants_","ids","unsupported","codecCount_","videoDetails","audioDetails","blacklistReasons","variantCodecs","variantCodecCount","variantVideoDetails","variantAudioDetails","newMax","enableFunction","playlistID","changePlaylistFn","incompatible","currentlyEnabled","Representation","vhsHandler","smoothQualityChange","qualityChangeFunction","renditionSelectionMixin","timerCancelEvents","PlaybackWatcher","allowSeeksWithinUnsafeLiveWindow","liveRangeSafeTimeDelta","consecutiveUpdates","lastRecordedTime","timer_","checkCurrentTimeTimeout_","playHandler","monitorCurrentTime_","canPlayHandler","waitingHandler","techWaiting_","cancelTimerHandler","cancelTimer_","loaderTypes","loaderChecks","resetSegmentDownloads_","updateend","checkSegmentDownloads_","setSeekingHandlers","seekingAppendCheck_","fixesBadSeeks_","clearSeekingAppendCheck_","watchForBadSeeking_","checkCurrentTime_","isBufferedDifferent","playlistId","waiting_","isAfterSeekableRange","afterSeekableWindow_","beforeSeekableWindow_","minAppendedDuration","bufferedToCheck","timeAhead","nextRange","livePoint","videoUnderflow","videoUnderflow_","difference","skipTheGap_","allowedEnd","gap","lastVideoRange","videoRange","audioRange","gapFromVideoUnderflow_","scheduledCurrentTime","gaps","defaultOptions","errorInterval","getSource","IWillNotUseThisInPlugins","initPlugin","lastCalled","localOptions","loadedMetadataHandler","cleanupEvents","reinitPlugin","reloadSourceOnError","version$4","version$3","version$2","version$1","STANDARD_PLAYLIST_SELECTOR","INITIAL_PLAYLIST_SELECTOR","LOCAL_STORAGE_KEY","handleVhsMediaChange","qualityLevels","selectedIndex_","handleVhsLoadedMetadata","addQualityLevel","emeKeySystems","keySystemOptions","audioPlaylist","videoContentType","audioContentType","keySystemContentTypes","getAllPsshKeySystemsOptions","keySystems","keySystemsArr","keySystemsOptions","keySystemsObj","waitForKeySessionCreation","sourceKeySystems","audioMedia","mainPlaylists","initializeMediaKeys","keySystemsOptionsArr","initializationFinishedPromises","keySessionCreatedPromises","race","setupEmeOptions","sourceOptions","getVhsLocalStorage","storedObject","updateVhsLocalStorage","objectToStore","expandDataUri","dataUri","supportsNativeHls","canPlay","canItPlay","supportsNativeDash","supportsTypeNatively","VhsHandler","hls","initialBandwidth","source_","ignoreNextSeekingEvent_","setOptions_","overrideNative","featuresNativeVideoTracks","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","useBandwidthFromLocalStorage","useNetworkInformationApi","option","playbackWatcherOptions","playbackWatcher_","defaultSelector","playerBandwidthEst","networkInformation","connection","mozConnection","webkitConnection","tenMbpsAsBitsPerSecond","networkInfoBandwidthEstBitsPerSec","downlink","invThroughput","invBandwidth","systemBitrate","mediaRequests_","mediaRequestsAborted_","mediaRequestsTimedout_","mediaRequestsErrored_","mediaTransferDuration_","mediaBytesTransferred_","mediaAppends_","mainAppendsToLoadedData","audioAppendsToLoadedData","appendsToLoadedData","timeToLoadedData","currentTech","playerDimensions","setupEme_","setupQualityLevels_","mediaSourceUrl_","createKeySessions_","audioPlaylistLoader","handleWaitingForKey_","didSetupEmeOptions","masterPlaylist","_videojs$log","excludedHDPlaylists","qualityLevels_","dash","convertToProgramTime","VhsSourceHandler","_videojs$mergeOptions","_videojs$mergeOptions2","_videojs$mergeOptions3","_videojs$mergeOptions4","_videojs$mergeOptions5","legacyOverrideNative","supportedType","canUseMsePlayback","supportsNativeMediaSources","DESCRIPTORS","normalizePaths","paths","headerSize","_DESCRIPTORS$z","dependsOnEsId","ocrEsId","descriptors","oti","maxBitrate","avgBitrate","complete","EBML_TAGS","EBML","DocType","Segment","SegmentInfo","Tracks","TrackNumber","DefaultDuration","TrackEntry","TrackType","FlagDefault","CodecID","CodecPrivate","Cluster","Timestamp","TimestampScale","BlockGroup","BlockDuration","Block","SimpleBlock","LENGTH_TABLE","getLength","removeLength","valueBytes","getInfinityDataSize","innerid","dataHeader","findEbml","dataStart","dataEnd","totalLength","NAL_TYPE_ONE","NAL_TYPE_TWO","EMULATION_PREVENTION","positions","dataType","nalLimit","nalStart","nalsFound","nalOffset","findH264Nal","findH265Nal","CONSTANTS","_isLikely","docType","matroska","fmp4","ac3","avi","riff","isLikelyTypes","isLikelyFn","isLikely","setToStringTag","scrollSetting","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","atob","Buffer","decodeB64ToUint8Array","b64Text","decodedString"],"mappings":"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","file":"js/chunk-e24d68ba.0dfdaeb9.js","sourcesContent":["'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n","import window from 'global/window';\nvar regexs = {\n // to determine mime types\n mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,\n webm: /^(vp0?[89]|av0?1|opus|vorbis)/,\n ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,\n // to determine if a codec is audio or video\n video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,\n audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,\n text: /^(stpp.ttml.im1t)/,\n // mux.js support regex\n muxerVideo: /^(avc0?1)/,\n muxerAudio: /^(mp4a)/,\n // match nothing as muxer does not support text right now.\n // there cannot never be a character before the start of a string\n // so this matches nothing.\n muxerText: /a^/\n};\nvar mediaTypes = ['video', 'audio', 'text'];\nvar upperMediaTypes = ['Video', 'Audio', 'Text'];\n/**\n * Replace the old apple-style `avc1.
.
` codec string with the standard\n * `avc1.`\n *\n * @param {string} codec\n * Codec string to translate\n * @return {string}\n * The translated codec string\n */\n\nexport var translateLegacyCodec = function translateLegacyCodec(codec) {\n if (!codec) {\n return codec;\n }\n\n return codec.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (orig, profile, avcLevel) {\n var profileHex = ('00' + Number(profile).toString(16)).slice(-2);\n var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2);\n return 'avc1.' + profileHex + '00' + avcLevelHex;\n });\n};\n/**\n * Replace the old apple-style `avc1.
.
` codec strings with the standard\n * `avc1.`\n *\n * @param {string[]} codecs\n * An array of codec strings to translate\n * @return {string[]}\n * The translated array of codec strings\n */\n\nexport var translateLegacyCodecs = function translateLegacyCodecs(codecs) {\n return codecs.map(translateLegacyCodec);\n};\n/**\n * Replace codecs in the codec string with the old apple-style `avc1.
.
` to the\n * standard `avc1.`.\n *\n * @param {string} codecString\n * The codec string\n * @return {string}\n * The codec string with old apple-style codecs replaced\n *\n * @private\n */\n\nexport var mapLegacyAvcCodecs = function mapLegacyAvcCodecs(codecString) {\n return codecString.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (match) {\n return translateLegacyCodecs([match])[0];\n });\n};\n/**\n * @typedef {Object} ParsedCodecInfo\n * @property {number} codecCount\n * Number of codecs parsed\n * @property {string} [videoCodec]\n * Parsed video codec (if found)\n * @property {string} [videoObjectTypeIndicator]\n * Video object type indicator (if found)\n * @property {string|null} audioProfile\n * Audio profile\n */\n\n/**\n * Parses a codec string to retrieve the number of codecs specified, the video codec and\n * object type indicator, and the audio profile.\n *\n * @param {string} [codecString]\n * The codec string to parse\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var parseCodecs = function parseCodecs(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n var codecs = codecString.split(',');\n var result = [];\n codecs.forEach(function (codec) {\n codec = codec.trim();\n var codecType;\n mediaTypes.forEach(function (name) {\n var match = regexs[name].exec(codec.toLowerCase());\n\n if (!match || match.length <= 1) {\n return;\n }\n\n codecType = name; // maintain codec case\n\n var type = codec.substring(0, match[1].length);\n var details = codec.replace(type, '');\n result.push({\n type: type,\n details: details,\n mediaType: name\n });\n });\n\n if (!codecType) {\n result.push({\n type: codec,\n details: '',\n mediaType: 'unknown'\n });\n }\n });\n return result;\n};\n/**\n * Returns a ParsedCodecInfo object for the default alternate audio playlist if there is\n * a default alternate audio playlist for the provided audio group.\n *\n * @param {Object} master\n * The master playlist\n * @param {string} audioGroupId\n * ID of the audio group for which to find the default codec info\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var codecsFromDefault = function codecsFromDefault(master, audioGroupId) {\n if (!master.mediaGroups.AUDIO || !audioGroupId) {\n return null;\n }\n\n var audioGroup = master.mediaGroups.AUDIO[audioGroupId];\n\n if (!audioGroup) {\n return null;\n }\n\n for (var name in audioGroup) {\n var audioType = audioGroup[name];\n\n if (audioType.default && audioType.playlists) {\n // codec should be the same for all playlists within the audio type\n return parseCodecs(audioType.playlists[0].attributes.CODECS);\n }\n }\n\n return null;\n};\nexport var isVideoCodec = function isVideoCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.video.test(codec.trim().toLowerCase());\n};\nexport var isAudioCodec = function isAudioCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.audio.test(codec.trim().toLowerCase());\n};\nexport var isTextCodec = function isTextCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.text.test(codec.trim().toLowerCase());\n};\nexport var getMimeForCodec = function getMimeForCodec(codecString) {\n if (!codecString || typeof codecString !== 'string') {\n return;\n }\n\n var codecs = codecString.toLowerCase().split(',').map(function (c) {\n return translateLegacyCodec(c.trim());\n }); // default to video type\n\n var type = 'video'; // only change to audio type if the only codec we have is\n // audio\n\n if (codecs.length === 1 && isAudioCodec(codecs[0])) {\n type = 'audio';\n } else if (codecs.length === 1 && isTextCodec(codecs[0])) {\n // text uses application/ for now\n type = 'application';\n } // default the container to mp4\n\n\n var container = 'mp4'; // every codec must be able to go into the container\n // for that container to be the correct one\n\n if (codecs.every(function (c) {\n return regexs.mp4.test(c);\n })) {\n container = 'mp4';\n } else if (codecs.every(function (c) {\n return regexs.webm.test(c);\n })) {\n container = 'webm';\n } else if (codecs.every(function (c) {\n return regexs.ogg.test(c);\n })) {\n container = 'ogg';\n }\n\n return type + \"/\" + container + \";codecs=\\\"\" + codecString + \"\\\"\";\n};\nexport var browserSupportsCodec = function browserSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.isTypeSupported(getMimeForCodec(codecString)) || false;\n};\nexport var muxerSupportsCodec = function muxerSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return codecString.toLowerCase().split(',').every(function (codec) {\n codec = codec.trim(); // any match is supported.\n\n for (var i = 0; i < upperMediaTypes.length; i++) {\n var type = upperMediaTypes[i];\n\n if (regexs[\"muxer\" + type].test(codec)) {\n return true;\n }\n }\n\n return false;\n });\n};\nexport var DEFAULT_AUDIO_CODEC = 'mp4a.40.2';\nexport var DEFAULT_VIDEO_CODEC = 'avc1.4d400d';","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","import { toUint8, bytesMatch } from './byte-helpers.js';\nvar ID3 = toUint8([0x49, 0x44, 0x33]);\nexport var getId3Size = function getId3Size(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n var flags = bytes[offset + 5];\n var returnSize = bytes[offset + 6] << 21 | bytes[offset + 7] << 14 | bytes[offset + 8] << 7 | bytes[offset + 9];\n var footerPresent = (flags & 16) >> 4;\n\n if (footerPresent) {\n return returnSize + 20;\n }\n\n return returnSize + 10;\n};\nexport var getId3Offset = function getId3Offset(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n\n if (bytes.length - offset < 10 || !bytesMatch(bytes, ID3, {\n offset: offset\n })) {\n return offset;\n }\n\n offset += getId3Size(bytes, offset); // recursive check for id3 tags as some files\n // have multiple ID3 tag sections even though\n // they should not.\n\n return getId3Offset(bytes, offset);\n};","\"use strict\";\n\nvar window = require(\"global/window\");\n\nvar _extends = require(\"@babel/runtime/helpers/extends\");\n\nvar isFunction = require('is-function');\n\ncreateXHR.httpHandler = require('./http-handler.js');\n/**\n * @license\n * slighly modified parse-headers 2.0.2 \n * Copyright (c) 2014 David Björklund\n * Available under the MIT license\n * \n */\n\nvar parseHeaders = function parseHeaders(headers) {\n var result = {};\n\n if (!headers) {\n return result;\n }\n\n headers.trim().split('\\n').forEach(function (row) {\n var index = row.indexOf(':');\n var key = row.slice(0, index).trim().toLowerCase();\n var value = row.slice(index + 1).trim();\n\n if (typeof result[key] === 'undefined') {\n result[key] = value;\n } else if (Array.isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n });\n return result;\n};\n\nmodule.exports = createXHR; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop;\ncreateXHR.XDomainRequest = \"withCredentials\" in new createXHR.XMLHttpRequest() ? createXHR.XMLHttpRequest : window.XDomainRequest;\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function (method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function (uri, options, callback) {\n options = initParams(uri, options, callback);\n options.method = method.toUpperCase();\n return _createXHR(options);\n };\n});\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i]);\n }\n}\n\nfunction isEmpty(obj) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) return false;\n }\n\n return true;\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri;\n\n if (isFunction(options)) {\n callback = options;\n\n if (typeof uri === \"string\") {\n params = {\n uri: uri\n };\n }\n } else {\n params = _extends({}, options, {\n uri: uri\n });\n }\n\n params.callback = callback;\n return params;\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback);\n return _createXHR(options);\n}\n\nfunction _createXHR(options) {\n if (typeof options.callback === \"undefined\") {\n throw new Error(\"callback argument missing\");\n }\n\n var called = false;\n\n var callback = function cbOnce(err, response, body) {\n if (!called) {\n called = true;\n options.callback(err, response, body);\n }\n };\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n setTimeout(loadFunc, 0);\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 {\n body = xhr.responseText || getXml(xhr);\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body);\n } catch (e) {}\n }\n\n return body;\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer);\n\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0;\n return callback(evt, failureResponse);\n } // will load the data & process the response in a special response object\n\n\n function loadFunc() {\n if (aborted) return;\n var status;\n clearTimeout(timeoutTimer);\n\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\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\n if (xhr.getAllResponseHeaders) {\n //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\n return callback(err, response, response.body);\n }\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 var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n };\n\n if (\"json\" in options && options.json !== false) {\n isJson = true;\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\"); //Don't override existing accept header declared by user\n\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\n body = JSON.stringify(options.json === true ? body : options.json);\n }\n }\n\n xhr.onreadystatechange = readystatechange;\n xhr.onload = loadFunc;\n xhr.onerror = errorFunc; // IE9 must have onprogress be set to a unique function.\n\n xhr.onprogress = function () {// IE must die\n };\n\n xhr.onabort = function () {\n aborted = true;\n };\n\n xhr.ontimeout = errorFunc;\n xhr.open(method, uri, !sync, options.username, options.password); //has to be after open\n\n if (!sync) {\n xhr.withCredentials = !!options.withCredentials;\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\n\n if (!sync && options.timeout > 0) {\n timeoutTimer = setTimeout(function () {\n if (aborted) return;\n aborted = true; //IE9 may still call readystatechange\n\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 && typeof options.beforeSend === \"function\") {\n options.beforeSend(xhr);\n } // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n\n\n xhr.send(body || null);\n return xhr;\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML;\n }\n\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\";\n\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML;\n }\n } catch (e) {}\n\n return null;\n}\n\nfunction noop() {}","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\nvar\n ONE_SECOND_IN_TS = 90000, // 90kHz clock\n secondsToVideoTs,\n secondsToAudioTs,\n videoTsToSeconds,\n audioTsToSeconds,\n audioTsToVideoTs,\n videoTsToAudioTs,\n metadataTsToSeconds;\n\nsecondsToVideoTs = function(seconds) {\n return seconds * ONE_SECOND_IN_TS;\n};\n\nsecondsToAudioTs = function(seconds, sampleRate) {\n return seconds * sampleRate;\n};\n\nvideoTsToSeconds = function(timestamp) {\n return timestamp / ONE_SECOND_IN_TS;\n};\n\naudioTsToSeconds = function(timestamp, sampleRate) {\n return timestamp / sampleRate;\n};\n\naudioTsToVideoTs = function(timestamp, sampleRate) {\n return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate));\n};\n\nvideoTsToAudioTs = function(timestamp, sampleRate) {\n return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate);\n};\n\n/**\n * Adjust ID3 tag or caption timing information by the timeline pts values\n * (if keepOriginalTimestamps is false) and convert to seconds\n */\nmetadataTsToSeconds = function(timestamp, timelineStartPts, keepOriginalTimestamps) {\n return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts);\n};\n\nmodule.exports = {\n ONE_SECOND_IN_TS: ONE_SECOND_IN_TS,\n secondsToVideoTs: secondsToVideoTs,\n secondsToAudioTs: secondsToAudioTs,\n videoTsToSeconds: videoTsToSeconds,\n audioTsToSeconds: audioTsToSeconds,\n audioTsToVideoTs: audioTsToVideoTs,\n videoTsToAudioTs: videoTsToAudioTs,\n metadataTsToSeconds: metadataTsToSeconds\n};\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import URLToolkit from 'url-toolkit';\nimport window from 'global/window';\nvar DEFAULT_LOCATION = 'http://example.com';\n\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\n // return early if we don't need to resolve\n if (/^[a-z]+:/i.test(relativeUrl)) {\n return relativeUrl;\n } // if baseUrl is a data URI, ignore it and resolve everything relative to window.location\n\n\n if (/^data:/.test(baseUrl)) {\n baseUrl = window.location && window.location.href || '';\n } // IE11 supports URL but not the URL constructor\n // feature detect the behavior we want\n\n\n var nativeURL = typeof window.URL === 'function';\n var protocolLess = /^\\/\\//.test(baseUrl); // remove location if window.location isn't available (i.e. we're in node)\n // and if baseUrl isn't an absolute url\n\n var removeLocation = !window.location && !/\\/\\//i.test(baseUrl); // if the base URL is relative then combine with the current location\n\n if (nativeURL) {\n baseUrl = new window.URL(baseUrl, window.location || DEFAULT_LOCATION);\n } else if (!/\\/\\//i.test(baseUrl)) {\n baseUrl = URLToolkit.buildAbsoluteURL(window.location && window.location.href || '', baseUrl);\n }\n\n if (nativeURL) {\n var newUrl = new URL(relativeUrl, baseUrl); // if we're a protocol-less url, remove the protocol\n // and if we're location-less, remove the location\n // otherwise, return the url unmodified\n\n if (removeLocation) {\n return newUrl.href.slice(DEFAULT_LOCATION.length);\n } else if (protocolLess) {\n return newUrl.href.slice(newUrl.protocol.length);\n }\n\n return newUrl.href;\n }\n\n return URLToolkit.buildAbsoluteURL(baseUrl, relativeUrl);\n};\n\nexport default resolveUrl;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getUint64 = require('../utils/numbers.js').getUint64;\n\nvar parseSidx = function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n references: [],\n referenceId: view.getUint32(4),\n timescale: view.getUint32(8)\n },\n i = 12;\n\n if (result.version === 0) {\n result.earliestPresentationTime = view.getUint32(i);\n result.firstOffset = view.getUint32(i + 4);\n i += 8;\n } else {\n // read 64 bits\n result.earliestPresentationTime = getUint64(data.subarray(i));\n result.firstOffset = getUint64(data.subarray(i + 8));\n i += 16;\n }\n\n i += 2; // reserved\n\n var referenceCount = view.getUint16(i);\n\n i += 2; // start of references\n\n for (; referenceCount > 0; i += 12, referenceCount--) {\n result.references.push({\n referenceType: (data[i] & 0x80) >>> 7,\n referencedSize: view.getUint32(i) & 0x7FFFFFFF,\n subsegmentDuration: view.getUint32(i + 4),\n startsWithSap: !!(data[i + 8] & 0x80),\n sapType: (data[i + 8] & 0x70) >>> 4,\n sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF\n });\n }\n\n return result;\n};\n\n\nmodule.exports = parseSidx;\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\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","/**\n * Loops through all supported media groups in master and calls the provided\n * callback for each group\n *\n * @param {Object} master\n * The parsed master manifest object\n * @param {string[]} groups\n * The media groups to call the callback for\n * @param {Function} callback\n * Callback to call for each media group\n */\nexport var forEachMediaGroup = function forEachMediaGroup(master, groups, callback) {\n groups.forEach(function (mediaType) {\n for (var groupKey in master.mediaGroups[mediaType]) {\n for (var labelKey in master.mediaGroups[mediaType][groupKey]) {\n var mediaProperties = master.mediaGroups[mediaType][groupKey][labelKey];\n callback(mediaProperties, mediaType, groupKey, labelKey);\n }\n }\n });\n};","/*! @name mpd-parser @version 0.21.1 @license Apache-2.0 */\nimport resolveUrl from '@videojs/vhs-utils/es/resolve-url';\nimport window from 'global/window';\nimport { forEachMediaGroup } from '@videojs/vhs-utils/es/media-groups';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array';\nimport { DOMParser } from '@xmldom/xmldom';\n\nvar version = \"0.21.1\";\n\nvar isObject = function isObject(obj) {\n return !!obj && typeof obj === 'object';\n};\n\nvar merge = function merge() {\n for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {\n objects[_key] = arguments[_key];\n }\n\n return objects.reduce(function (result, source) {\n if (typeof source !== 'object') {\n return result;\n }\n\n Object.keys(source).forEach(function (key) {\n if (Array.isArray(result[key]) && Array.isArray(source[key])) {\n result[key] = result[key].concat(source[key]);\n } else if (isObject(result[key]) && isObject(source[key])) {\n result[key] = merge(result[key], source[key]);\n } else {\n result[key] = source[key];\n }\n });\n return result;\n }, {});\n};\nvar values = function values(o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n};\n\nvar range = function range(start, end) {\n var result = [];\n\n for (var i = start; i < end; i++) {\n result.push(i);\n }\n\n return result;\n};\nvar flatten = function flatten(lists) {\n return lists.reduce(function (x, y) {\n return x.concat(y);\n }, []);\n};\nvar from = function from(list) {\n if (!list.length) {\n return [];\n }\n\n var result = [];\n\n for (var i = 0; i < list.length; i++) {\n result.push(list[i]);\n }\n\n return result;\n};\nvar findIndexes = function findIndexes(l, key) {\n return l.reduce(function (a, e, i) {\n if (e[key]) {\n a.push(i);\n }\n\n return a;\n }, []);\n};\n/**\n * Returns the first index that satisfies the matching function, or -1 if not found.\n *\n * Only necessary because of IE11 support.\n *\n * @param {Array} list - the list to search through\n * @param {Function} matchingFunction - the matching function\n *\n * @return {number} the matching index or -1 if not found\n */\n\nvar findIndex = function findIndex(list, matchingFunction) {\n for (var i = 0; i < list.length; i++) {\n if (matchingFunction(list[i])) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Returns a union of the included lists provided each element can be identified by a key.\n *\n * @param {Array} list - list of lists to get the union of\n * @param {Function} keyFunction - the function to use as a key for each element\n *\n * @return {Array} the union of the arrays\n */\n\nvar union = function union(lists, keyFunction) {\n return values(lists.reduce(function (acc, list) {\n list.forEach(function (el) {\n acc[keyFunction(el)] = el;\n });\n return acc;\n }, {}));\n};\n\nvar errors = {\n INVALID_NUMBER_OF_PERIOD: 'INVALID_NUMBER_OF_PERIOD',\n DASH_EMPTY_MANIFEST: 'DASH_EMPTY_MANIFEST',\n DASH_INVALID_XML: 'DASH_INVALID_XML',\n NO_BASE_URL: 'NO_BASE_URL',\n MISSING_SEGMENT_INFORMATION: 'MISSING_SEGMENT_INFORMATION',\n SEGMENT_TIME_UNSPECIFIED: 'SEGMENT_TIME_UNSPECIFIED',\n UNSUPPORTED_UTC_TIMING_SCHEME: 'UNSUPPORTED_UTC_TIMING_SCHEME'\n};\n\n/**\n * @typedef {Object} SingleUri\n * @property {string} uri - relative location of segment\n * @property {string} resolvedUri - resolved location of segment\n * @property {Object} byterange - Object containing information on how to make byte range\n * requests following byte-range-spec per RFC2616.\n * @property {String} byterange.length - length of range request\n * @property {String} byterange.offset - byte offset of range request\n *\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1\n */\n\n/**\n * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object\n * that conforms to how m3u8-parser is structured\n *\n * @see https://github.com/videojs/m3u8-parser\n *\n * @param {string} baseUrl - baseUrl provided by nodes\n * @param {string} source - source url for segment\n * @param {string} range - optional range used for range calls,\n * follows RFC 2616, Clause 14.35.1\n * @return {SingleUri} full segment information transformed into a format similar\n * to m3u8-parser\n */\n\nvar urlTypeToSegment = function urlTypeToSegment(_ref) {\n var _ref$baseUrl = _ref.baseUrl,\n baseUrl = _ref$baseUrl === void 0 ? '' : _ref$baseUrl,\n _ref$source = _ref.source,\n source = _ref$source === void 0 ? '' : _ref$source,\n _ref$range = _ref.range,\n range = _ref$range === void 0 ? '' : _ref$range,\n _ref$indexRange = _ref.indexRange,\n indexRange = _ref$indexRange === void 0 ? '' : _ref$indexRange;\n var segment = {\n uri: source,\n resolvedUri: resolveUrl(baseUrl || '', source)\n };\n\n if (range || indexRange) {\n var rangeStr = range ? range : indexRange;\n var ranges = rangeStr.split('-'); // default to parsing this as a BigInt if possible\n\n var startRange = window.BigInt ? window.BigInt(ranges[0]) : parseInt(ranges[0], 10);\n var endRange = window.BigInt ? window.BigInt(ranges[1]) : parseInt(ranges[1], 10); // convert back to a number if less than MAX_SAFE_INTEGER\n\n if (startRange < Number.MAX_SAFE_INTEGER && typeof startRange === 'bigint') {\n startRange = Number(startRange);\n }\n\n if (endRange < Number.MAX_SAFE_INTEGER && typeof endRange === 'bigint') {\n endRange = Number(endRange);\n }\n\n var length;\n\n if (typeof endRange === 'bigint' || typeof startRange === 'bigint') {\n length = window.BigInt(endRange) - window.BigInt(startRange) + window.BigInt(1);\n } else {\n length = endRange - startRange + 1;\n }\n\n if (typeof length === 'bigint' && length < Number.MAX_SAFE_INTEGER) {\n length = Number(length);\n } // byterange should be inclusive according to\n // RFC 2616, Clause 14.35.1\n\n\n segment.byterange = {\n length: length,\n offset: startRange\n };\n }\n\n return segment;\n};\nvar byteRangeToString = function byteRangeToString(byterange) {\n // `endRange` is one less than `offset + length` because the HTTP range\n // header uses inclusive ranges\n var endRange;\n\n if (typeof byterange.offset === 'bigint' || typeof byterange.length === 'bigint') {\n endRange = window.BigInt(byterange.offset) + window.BigInt(byterange.length) - window.BigInt(1);\n } else {\n endRange = byterange.offset + byterange.length - 1;\n }\n\n return byterange.offset + \"-\" + endRange;\n};\n\n/**\n * parse the end number attribue that can be a string\n * number, or undefined.\n *\n * @param {string|number|undefined} endNumber\n * The end number attribute.\n *\n * @return {number|null}\n * The result of parsing the end number.\n */\n\nvar parseEndNumber = function parseEndNumber(endNumber) {\n if (endNumber && typeof endNumber !== 'number') {\n endNumber = parseInt(endNumber, 10);\n }\n\n if (isNaN(endNumber)) {\n return null;\n }\n\n return endNumber;\n};\n/**\n * Functions for calculating the range of available segments in static and dynamic\n * manifests.\n */\n\n\nvar segmentRange = {\n /**\n * Returns the entire range of available segments for a static MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n static: function _static(attributes) {\n var duration = attributes.duration,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n sourceDuration = attributes.sourceDuration,\n periodDuration = attributes.periodDuration;\n var endNumber = parseEndNumber(attributes.endNumber);\n var segmentDuration = duration / timescale;\n\n if (typeof endNumber === 'number') {\n return {\n start: 0,\n end: endNumber\n };\n }\n\n if (typeof periodDuration === 'number') {\n return {\n start: 0,\n end: periodDuration / segmentDuration\n };\n }\n\n return {\n start: 0,\n end: sourceDuration / segmentDuration\n };\n },\n\n /**\n * Returns the current live window range of available segments for a dynamic MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n dynamic: function dynamic(attributes) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n duration = attributes.duration,\n _attributes$periodSta = attributes.periodStart,\n periodStart = _attributes$periodSta === void 0 ? 0 : _attributes$periodSta,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp,\n _attributes$timeShift = attributes.timeShiftBufferDepth,\n timeShiftBufferDepth = _attributes$timeShift === void 0 ? Infinity : _attributes$timeShift;\n var endNumber = parseEndNumber(attributes.endNumber); // clientOffset is passed in at the top level of mpd-parser and is an offset calculated\n // after retrieving UTC server time.\n\n var now = (NOW + clientOffset) / 1000; // WC stands for Wall Clock.\n // Convert the period start time to EPOCH.\n\n var periodStartWC = availabilityStartTime + periodStart; // Period end in EPOCH is manifest's retrieval time + time until next update.\n\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n var segmentCount = Math.ceil(periodDuration * timescale / duration);\n var availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);\n var availableEnd = Math.floor((now - periodStartWC) * timescale / duration);\n return {\n start: Math.max(0, availableStart),\n end: typeof endNumber === 'number' ? endNumber : Math.min(segmentCount, availableEnd)\n };\n }\n};\n/**\n * Maps a range of numbers to objects with information needed to build the corresponding\n * segment list\n *\n * @name toSegmentsCallback\n * @function\n * @param {number} number\n * Number of the segment\n * @param {number} index\n * Index of the number in the range list\n * @return {{ number: Number, duration: Number, timeline: Number, time: Number }}\n * Object with segment timing and duration info\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping a range of numbers to\n * information needed to build the segment list.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {toSegmentsCallback}\n * Callback map function\n */\n\nvar toSegments = function toSegments(attributes) {\n return function (number) {\n var duration = attributes.duration,\n _attributes$timescale3 = attributes.timescale,\n timescale = _attributes$timescale3 === void 0 ? 1 : _attributes$timescale3,\n periodStart = attributes.periodStart,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb;\n return {\n number: startNumber + number,\n duration: duration / timescale,\n timeline: periodStart,\n time: number * duration\n };\n };\n};\n/**\n * Returns a list of objects containing segment timing and duration info used for\n * building the list of segments. This uses the @duration attribute specified\n * in the MPD manifest to derive the range of segments.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseByDuration = function parseByDuration(attributes) {\n var type = attributes.type,\n duration = attributes.duration,\n _attributes$timescale4 = attributes.timescale,\n timescale = _attributes$timescale4 === void 0 ? 1 : _attributes$timescale4,\n periodDuration = attributes.periodDuration,\n sourceDuration = attributes.sourceDuration;\n\n var _segmentRange$type = segmentRange[type](attributes),\n start = _segmentRange$type.start,\n end = _segmentRange$type.end;\n\n var segments = range(start, end).map(toSegments(attributes));\n\n if (type === 'static') {\n var index = segments.length - 1; // section is either a period or the full source\n\n var sectionDuration = typeof periodDuration === 'number' ? periodDuration : sourceDuration; // final segment may be less than full segment duration\n\n segments[index].duration = sectionDuration - duration / timescale * index;\n }\n\n return segments;\n};\n\n/**\n * Translates SegmentBase into a set of segments.\n * (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @return {Object.} list of segments\n */\n\nvar segmentsFromBase = function segmentsFromBase(attributes) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ,\n sourceDuration = attributes.sourceDuration,\n _attributes$indexRang = attributes.indexRange,\n indexRange = _attributes$indexRang === void 0 ? '' : _attributes$indexRang,\n periodStart = attributes.periodStart,\n presentationTime = attributes.presentationTime,\n _attributes$number = attributes.number,\n number = _attributes$number === void 0 ? 0 : _attributes$number,\n duration = attributes.duration; // base url is required for SegmentBase to work, per spec (Section 5.3.9.2.1)\n\n if (!baseUrl) {\n throw new Error(errors.NO_BASE_URL);\n }\n\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: baseUrl,\n indexRange: indexRange\n });\n segment.map = initSegment; // If there is a duration, use it, otherwise use the given duration of the source\n // (since SegmentBase is only for one total segment)\n\n if (duration) {\n var segmentTimeInfo = parseByDuration(attributes);\n\n if (segmentTimeInfo.length) {\n segment.duration = segmentTimeInfo[0].duration;\n segment.timeline = segmentTimeInfo[0].timeline;\n }\n } else if (sourceDuration) {\n segment.duration = sourceDuration;\n segment.timeline = periodStart;\n } // If presentation time is provided, these segments are being generated by SIDX\n // references, and should use the time provided. For the general case of SegmentBase,\n // there should only be one segment in the period, so its presentation time is the same\n // as its period start.\n\n\n segment.presentationTime = presentationTime || periodStart;\n segment.number = number;\n return [segment];\n};\n/**\n * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist\n * according to the sidx information given.\n *\n * playlist.sidx has metadadata about the sidx where-as the sidx param\n * is the parsed sidx box itself.\n *\n * @param {Object} playlist the playlist to update the sidx information for\n * @param {Object} sidx the parsed sidx box\n * @return {Object} the playlist object with the updated sidx information\n */\n\nvar addSidxSegmentsToPlaylist$1 = function addSidxSegmentsToPlaylist(playlist, sidx, baseUrl) {\n // Retain init segment information\n var initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial main manifest parsing\n\n var sourceDuration = playlist.sidx.duration; // Retain source timeline\n\n var timeline = playlist.timeline || 0;\n var sidxByteRange = playlist.sidx.byterange;\n var sidxEnd = sidxByteRange.offset + sidxByteRange.length; // Retain timescale of the parsed sidx\n\n var timescale = sidx.timescale; // referenceType 1 refers to other sidx boxes\n\n var mediaReferences = sidx.references.filter(function (r) {\n return r.referenceType !== 1;\n });\n var segments = [];\n var type = playlist.endList ? 'static' : 'dynamic';\n var periodStart = playlist.sidx.timeline;\n var presentationTime = periodStart;\n var number = playlist.mediaSequence || 0; // firstOffset is the offset from the end of the sidx box\n\n var startIndex; // eslint-disable-next-line\n\n if (typeof sidx.firstOffset === 'bigint') {\n startIndex = window.BigInt(sidxEnd) + sidx.firstOffset;\n } else {\n startIndex = sidxEnd + sidx.firstOffset;\n }\n\n for (var i = 0; i < mediaReferences.length; i++) {\n var reference = sidx.references[i]; // size of the referenced (sub)segment\n\n var size = reference.referencedSize; // duration of the referenced (sub)segment, in the timescale\n // this will be converted to seconds when generating segments\n\n var duration = reference.subsegmentDuration; // should be an inclusive range\n\n var endIndex = void 0; // eslint-disable-next-line\n\n if (typeof startIndex === 'bigint') {\n endIndex = startIndex + window.BigInt(size) - window.BigInt(1);\n } else {\n endIndex = startIndex + size - 1;\n }\n\n var indexRange = startIndex + \"-\" + endIndex;\n var attributes = {\n baseUrl: baseUrl,\n timescale: timescale,\n timeline: timeline,\n periodStart: periodStart,\n presentationTime: presentationTime,\n number: number,\n duration: duration,\n sourceDuration: sourceDuration,\n indexRange: indexRange,\n type: type\n };\n var segment = segmentsFromBase(attributes)[0];\n\n if (initSegment) {\n segment.map = initSegment;\n }\n\n segments.push(segment);\n\n if (typeof startIndex === 'bigint') {\n startIndex += window.BigInt(size);\n } else {\n startIndex += size;\n }\n\n presentationTime += duration / timescale;\n number++;\n }\n\n playlist.segments = segments;\n return playlist;\n};\n\nvar SUPPORTED_MEDIA_TYPES = ['AUDIO', 'SUBTITLES']; // allow one 60fps frame as leniency (arbitrarily chosen)\n\nvar TIME_FUDGE = 1 / 60;\n/**\n * Given a list of timelineStarts, combines, dedupes, and sorts them.\n *\n * @param {TimelineStart[]} timelineStarts - list of timeline starts\n *\n * @return {TimelineStart[]} the combined and deduped timeline starts\n */\n\nvar getUniqueTimelineStarts = function getUniqueTimelineStarts(timelineStarts) {\n return union(timelineStarts, function (_ref) {\n var timeline = _ref.timeline;\n return timeline;\n }).sort(function (a, b) {\n return a.timeline > b.timeline ? 1 : -1;\n });\n};\n/**\n * Finds the playlist with the matching NAME attribute.\n *\n * @param {Array} playlists - playlists to search through\n * @param {string} name - the NAME attribute to search for\n *\n * @return {Object|null} the matching playlist object, or null\n */\n\nvar findPlaylistWithName = function findPlaylistWithName(playlists, name) {\n for (var i = 0; i < playlists.length; i++) {\n if (playlists[i].attributes.NAME === name) {\n return playlists[i];\n }\n }\n\n return null;\n};\n/**\n * Gets a flattened array of media group playlists.\n *\n * @param {Object} manifest - the main manifest object\n *\n * @return {Array} the media group playlists\n */\n\nvar getMediaGroupPlaylists = function getMediaGroupPlaylists(manifest) {\n var mediaGroupPlaylists = [];\n forEachMediaGroup(manifest, SUPPORTED_MEDIA_TYPES, function (properties, type, group, label) {\n mediaGroupPlaylists = mediaGroupPlaylists.concat(properties.playlists || []);\n });\n return mediaGroupPlaylists;\n};\n/**\n * Updates the playlist's media sequence numbers.\n *\n * @param {Object} config - options object\n * @param {Object} config.playlist - the playlist to update\n * @param {number} config.mediaSequence - the mediaSequence number to start with\n */\n\nvar updateMediaSequenceForPlaylist = function updateMediaSequenceForPlaylist(_ref2) {\n var playlist = _ref2.playlist,\n mediaSequence = _ref2.mediaSequence;\n playlist.mediaSequence = mediaSequence;\n playlist.segments.forEach(function (segment, index) {\n segment.number = playlist.mediaSequence + index;\n });\n};\n/**\n * Updates the media and discontinuity sequence numbers of newPlaylists given oldPlaylists\n * and a complete list of timeline starts.\n *\n * If no matching playlist is found, only the discontinuity sequence number of the playlist\n * will be updated.\n *\n * Since early available timelines are not supported, at least one segment must be present.\n *\n * @param {Object} config - options object\n * @param {Object[]} oldPlaylists - the old playlists to use as a reference\n * @param {Object[]} newPlaylists - the new playlists to update\n * @param {Object} timelineStarts - all timelineStarts seen in the stream to this point\n */\n\nvar updateSequenceNumbers = function updateSequenceNumbers(_ref3) {\n var oldPlaylists = _ref3.oldPlaylists,\n newPlaylists = _ref3.newPlaylists,\n timelineStarts = _ref3.timelineStarts;\n newPlaylists.forEach(function (playlist) {\n playlist.discontinuitySequence = findIndex(timelineStarts, function (_ref4) {\n var timeline = _ref4.timeline;\n return timeline === playlist.timeline;\n }); // Playlists NAMEs come from DASH Representation IDs, which are mandatory\n // (see ISO_23009-1-2012 5.3.5.2).\n //\n // If the same Representation existed in a prior Period, it will retain the same NAME.\n\n var oldPlaylist = findPlaylistWithName(oldPlaylists, playlist.attributes.NAME);\n\n if (!oldPlaylist) {\n // Since this is a new playlist, the media sequence values can start from 0 without\n // consequence.\n return;\n } // TODO better support for live SIDX\n //\n // As of this writing, mpd-parser does not support multiperiod SIDX (in live or VOD).\n // This is evident by a playlist only having a single SIDX reference. In a multiperiod\n // playlist there would need to be multiple SIDX references. In addition, live SIDX is\n // not supported when the SIDX properties change on refreshes.\n //\n // In the future, if support needs to be added, the merging logic here can be called\n // after SIDX references are resolved. For now, exit early to prevent exceptions being\n // thrown due to undefined references.\n\n\n if (playlist.sidx) {\n return;\n } // Since we don't yet support early available timelines, we don't need to support\n // playlists with no segments.\n\n\n var firstNewSegment = playlist.segments[0];\n var oldMatchingSegmentIndex = findIndex(oldPlaylist.segments, function (oldSegment) {\n return Math.abs(oldSegment.presentationTime - firstNewSegment.presentationTime) < TIME_FUDGE;\n }); // No matching segment from the old playlist means the entire playlist was refreshed.\n // In this case the media sequence should account for this update, and the new segments\n // should be marked as discontinuous from the prior content, since the last prior\n // timeline was removed.\n\n if (oldMatchingSegmentIndex === -1) {\n updateMediaSequenceForPlaylist({\n playlist: playlist,\n mediaSequence: oldPlaylist.mediaSequence + oldPlaylist.segments.length\n });\n playlist.segments[0].discontinuity = true;\n playlist.discontinuityStarts.unshift(0); // No matching segment does not necessarily mean there's missing content.\n //\n // If the new playlist's timeline is the same as the last seen segment's timeline,\n // then a discontinuity can be added to identify that there's potentially missing\n // content. If there's no missing content, the discontinuity should still be rather\n // harmless. It's possible that if segment durations are accurate enough, that the\n // existence of a gap can be determined using the presentation times and durations,\n // but if the segment timing info is off, it may introduce more problems than simply\n // adding the discontinuity.\n //\n // If the new playlist's timeline is different from the last seen segment's timeline,\n // then a discontinuity can be added to identify that this is the first seen segment\n // of a new timeline. However, the logic at the start of this function that\n // determined the disconinuity sequence by timeline index is now off by one (the\n // discontinuity of the newest timeline hasn't yet fallen off the manifest...since\n // we added it), so the disconinuity sequence must be decremented.\n //\n // A period may also have a duration of zero, so the case of no segments is handled\n // here even though we don't yet support early available periods.\n\n if (!oldPlaylist.segments.length && playlist.timeline > oldPlaylist.timeline || oldPlaylist.segments.length && playlist.timeline > oldPlaylist.segments[oldPlaylist.segments.length - 1].timeline) {\n playlist.discontinuitySequence--;\n }\n\n return;\n } // If the first segment matched with a prior segment on a discontinuity (it's matching\n // on the first segment of a period), then the discontinuitySequence shouldn't be the\n // timeline's matching one, but instead should be the one prior, and the first segment\n // of the new manifest should be marked with a discontinuity.\n //\n // The reason for this special case is that discontinuity sequence shows how many\n // discontinuities have fallen off of the playlist, and discontinuities are marked on\n // the first segment of a new \"timeline.\" Because of this, while DASH will retain that\n // Period while the \"timeline\" exists, HLS keeps track of it via the discontinuity\n // sequence, and that first segment is an indicator, but can be removed before that\n // timeline is gone.\n\n\n var oldMatchingSegment = oldPlaylist.segments[oldMatchingSegmentIndex];\n\n if (oldMatchingSegment.discontinuity && !firstNewSegment.discontinuity) {\n firstNewSegment.discontinuity = true;\n playlist.discontinuityStarts.unshift(0);\n playlist.discontinuitySequence--;\n }\n\n updateMediaSequenceForPlaylist({\n playlist: playlist,\n mediaSequence: oldPlaylist.segments[oldMatchingSegmentIndex].number\n });\n });\n};\n/**\n * Given an old parsed manifest object and a new parsed manifest object, updates the\n * sequence and timing values within the new manifest to ensure that it lines up with the\n * old.\n *\n * @param {Array} oldManifest - the old main manifest object\n * @param {Array} newManifest - the new main manifest object\n *\n * @return {Object} the updated new manifest object\n */\n\nvar positionManifestOnTimeline = function positionManifestOnTimeline(_ref5) {\n var oldManifest = _ref5.oldManifest,\n newManifest = _ref5.newManifest;\n // Starting from v4.1.2 of the IOP, section 4.4.3.3 states:\n //\n // \"MPD@availabilityStartTime and Period@start shall not be changed over MPD updates.\"\n //\n // This was added from https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/160\n //\n // Because of this change, and the difficulty of supporting periods with changing start\n // times, periods with changing start times are not supported. This makes the logic much\n // simpler, since periods with the same start time can be considerred the same period\n // across refreshes.\n //\n // To give an example as to the difficulty of handling periods where the start time may\n // change, if a single period manifest is refreshed with another manifest with a single\n // period, and both the start and end times are increased, then the only way to determine\n // if it's a new period or an old one that has changed is to look through the segments of\n // each playlist and determine the presentation time bounds to find a match. In addition,\n // if the period start changed to exceed the old period end, then there would be no\n // match, and it would not be possible to determine whether the refreshed period is a new\n // one or the old one.\n var oldPlaylists = oldManifest.playlists.concat(getMediaGroupPlaylists(oldManifest));\n var newPlaylists = newManifest.playlists.concat(getMediaGroupPlaylists(newManifest)); // Save all seen timelineStarts to the new manifest. Although this potentially means that\n // there's a \"memory leak\" in that it will never stop growing, in reality, only a couple\n // of properties are saved for each seen Period. Even long running live streams won't\n // generate too many Periods, unless the stream is watched for decades. In the future,\n // this can be optimized by mapping to discontinuity sequence numbers for each timeline,\n // but it may not become an issue, and the additional info can be useful for debugging.\n\n newManifest.timelineStarts = getUniqueTimelineStarts([oldManifest.timelineStarts, newManifest.timelineStarts]);\n updateSequenceNumbers({\n oldPlaylists: oldPlaylists,\n newPlaylists: newPlaylists,\n timelineStarts: newManifest.timelineStarts\n });\n return newManifest;\n};\n\nvar generateSidxKey = function generateSidxKey(sidx) {\n return sidx && sidx.uri + '-' + byteRangeToString(sidx.byterange);\n};\n\nvar mergeDiscontiguousPlaylists = function mergeDiscontiguousPlaylists(playlists) {\n var mergedPlaylists = values(playlists.reduce(function (acc, playlist) {\n // assuming playlist IDs are the same across periods\n // TODO: handle multiperiod where representation sets are not the same\n // across periods\n var name = playlist.attributes.id + (playlist.attributes.lang || '');\n\n if (!acc[name]) {\n // First Period\n acc[name] = playlist;\n acc[name].attributes.timelineStarts = [];\n } else {\n // Subsequent Periods\n if (playlist.segments) {\n var _acc$name$segments;\n\n // first segment of subsequent periods signal a discontinuity\n if (playlist.segments[0]) {\n playlist.segments[0].discontinuity = true;\n }\n\n (_acc$name$segments = acc[name].segments).push.apply(_acc$name$segments, playlist.segments);\n } // bubble up contentProtection, this assumes all DRM content\n // has the same contentProtection\n\n\n if (playlist.attributes.contentProtection) {\n acc[name].attributes.contentProtection = playlist.attributes.contentProtection;\n }\n }\n\n acc[name].attributes.timelineStarts.push({\n // Although they represent the same number, it's important to have both to make it\n // compatible with HLS potentially having a similar attribute.\n start: playlist.attributes.periodStart,\n timeline: playlist.attributes.periodStart\n });\n return acc;\n }, {}));\n return mergedPlaylists.map(function (playlist) {\n playlist.discontinuityStarts = findIndexes(playlist.segments || [], 'discontinuity');\n return playlist;\n });\n};\n\nvar addSidxSegmentsToPlaylist = function addSidxSegmentsToPlaylist(playlist, sidxMapping) {\n var sidxKey = generateSidxKey(playlist.sidx);\n var sidxMatch = sidxKey && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;\n\n if (sidxMatch) {\n addSidxSegmentsToPlaylist$1(playlist, sidxMatch, playlist.sidx.resolvedUri);\n }\n\n return playlist;\n};\nvar addSidxSegmentsToPlaylists = function addSidxSegmentsToPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (!Object.keys(sidxMapping).length) {\n return playlists;\n }\n\n for (var i in playlists) {\n playlists[i] = addSidxSegmentsToPlaylist(playlists[i], sidxMapping);\n }\n\n return playlists;\n};\nvar formatAudioPlaylist = function formatAudioPlaylist(_ref, isAudioOnly) {\n var _attributes;\n\n var attributes = _ref.attributes,\n segments = _ref.segments,\n sidx = _ref.sidx,\n mediaSequence = _ref.mediaSequence,\n discontinuitySequence = _ref.discontinuitySequence,\n discontinuityStarts = _ref.discontinuityStarts;\n var playlist = {\n attributes: (_attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n CODECS: attributes.codecs\n }, _attributes['PROGRAM-ID'] = 1, _attributes),\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: '',\n targetDuration: attributes.duration,\n discontinuitySequence: discontinuitySequence,\n discontinuityStarts: discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n mediaSequence: mediaSequence,\n segments: segments\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n if (isAudioOnly) {\n playlist.attributes.AUDIO = 'audio';\n playlist.attributes.SUBTITLES = 'subs';\n }\n\n return playlist;\n};\nvar formatVttPlaylist = function formatVttPlaylist(_ref2) {\n var _m3u8Attributes;\n\n var attributes = _ref2.attributes,\n segments = _ref2.segments,\n mediaSequence = _ref2.mediaSequence,\n discontinuityStarts = _ref2.discontinuityStarts,\n discontinuitySequence = _ref2.discontinuitySequence;\n\n if (typeof segments === 'undefined') {\n // vtt tracks may use single file in BaseURL\n segments = [{\n uri: attributes.baseUrl,\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n duration: attributes.sourceDuration,\n number: 0\n }]; // targetDuration should be the same duration as the only segment\n\n attributes.duration = attributes.sourceDuration;\n }\n\n var m3u8Attributes = (_m3u8Attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth\n }, _m3u8Attributes['PROGRAM-ID'] = 1, _m3u8Attributes);\n\n if (attributes.codecs) {\n m3u8Attributes.CODECS = attributes.codecs;\n }\n\n return {\n attributes: m3u8Attributes,\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n timelineStarts: attributes.timelineStarts,\n discontinuityStarts: discontinuityStarts,\n discontinuitySequence: discontinuitySequence,\n mediaSequence: mediaSequence,\n segments: segments\n };\n};\nvar organizeAudioPlaylists = function organizeAudioPlaylists(playlists, sidxMapping, isAudioOnly) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (isAudioOnly === void 0) {\n isAudioOnly = false;\n }\n\n var mainPlaylist;\n var formattedPlaylists = playlists.reduce(function (a, playlist) {\n var role = playlist.attributes.role && playlist.attributes.role.value || '';\n var language = playlist.attributes.lang || '';\n var label = playlist.attributes.label || 'main';\n\n if (language && !playlist.attributes.label) {\n var roleLabel = role ? \" (\" + role + \")\" : '';\n label = \"\" + playlist.attributes.lang + roleLabel;\n }\n\n if (!a[label]) {\n a[label] = {\n language: language,\n autoselect: true,\n default: role === 'main',\n playlists: [],\n uri: ''\n };\n }\n\n var formatted = addSidxSegmentsToPlaylist(formatAudioPlaylist(playlist, isAudioOnly), sidxMapping);\n a[label].playlists.push(formatted);\n\n if (typeof mainPlaylist === 'undefined' && role === 'main') {\n mainPlaylist = playlist;\n mainPlaylist.default = true;\n }\n\n return a;\n }, {}); // if no playlists have role \"main\", mark the first as main\n\n if (!mainPlaylist) {\n var firstLabel = Object.keys(formattedPlaylists)[0];\n formattedPlaylists[firstLabel].default = true;\n }\n\n return formattedPlaylists;\n};\nvar organizeVttPlaylists = function organizeVttPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n return playlists.reduce(function (a, playlist) {\n var label = playlist.attributes.lang || 'text';\n\n if (!a[label]) {\n a[label] = {\n language: label,\n default: false,\n autoselect: false,\n playlists: [],\n uri: ''\n };\n }\n\n a[label].playlists.push(addSidxSegmentsToPlaylist(formatVttPlaylist(playlist), sidxMapping));\n return a;\n }, {});\n};\n\nvar organizeCaptionServices = function organizeCaptionServices(captionServices) {\n return captionServices.reduce(function (svcObj, svc) {\n if (!svc) {\n return svcObj;\n }\n\n svc.forEach(function (service) {\n var channel = service.channel,\n language = service.language;\n svcObj[language] = {\n autoselect: false,\n default: false,\n instreamId: channel,\n language: language\n };\n\n if (service.hasOwnProperty('aspectRatio')) {\n svcObj[language].aspectRatio = service.aspectRatio;\n }\n\n if (service.hasOwnProperty('easyReader')) {\n svcObj[language].easyReader = service.easyReader;\n }\n\n if (service.hasOwnProperty('3D')) {\n svcObj[language]['3D'] = service['3D'];\n }\n });\n return svcObj;\n }, {});\n};\n\nvar formatVideoPlaylist = function formatVideoPlaylist(_ref3) {\n var _attributes2;\n\n var attributes = _ref3.attributes,\n segments = _ref3.segments,\n sidx = _ref3.sidx,\n discontinuityStarts = _ref3.discontinuityStarts;\n var playlist = {\n attributes: (_attributes2 = {\n NAME: attributes.id,\n AUDIO: 'audio',\n SUBTITLES: 'subs',\n RESOLUTION: {\n width: attributes.width,\n height: attributes.height\n },\n CODECS: attributes.codecs,\n BANDWIDTH: attributes.bandwidth\n }, _attributes2['PROGRAM-ID'] = 1, _attributes2),\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: '',\n targetDuration: attributes.duration,\n discontinuityStarts: discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n segments: segments\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\n\nvar videoOnly = function videoOnly(_ref4) {\n var attributes = _ref4.attributes;\n return attributes.mimeType === 'video/mp4' || attributes.mimeType === 'video/webm' || attributes.contentType === 'video';\n};\n\nvar audioOnly = function audioOnly(_ref5) {\n var attributes = _ref5.attributes;\n return attributes.mimeType === 'audio/mp4' || attributes.mimeType === 'audio/webm' || attributes.contentType === 'audio';\n};\n\nvar vttOnly = function vttOnly(_ref6) {\n var attributes = _ref6.attributes;\n return attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\n};\n/**\n * Contains start and timeline properties denoting a timeline start. For DASH, these will\n * be the same number.\n *\n * @typedef {Object} TimelineStart\n * @property {number} start - the start time of the timeline\n * @property {number} timeline - the timeline number\n */\n\n/**\n * Adds appropriate media and discontinuity sequence values to the segments and playlists.\n *\n * Throughout mpd-parser, the `number` attribute is used in relation to `startNumber`, a\n * DASH specific attribute used in constructing segment URI's from templates. However, from\n * an HLS perspective, the `number` attribute on a segment would be its `mediaSequence`\n * value, which should start at the original media sequence value (or 0) and increment by 1\n * for each segment thereafter. Since DASH's `startNumber` values are independent per\n * period, it doesn't make sense to use it for `number`. Instead, assume everything starts\n * from a 0 mediaSequence value and increment from there.\n *\n * Note that VHS currently doesn't use the `number` property, but it can be helpful for\n * debugging and making sense of the manifest.\n *\n * For live playlists, to account for values increasing in manifests when periods are\n * removed on refreshes, merging logic should be used to update the numbers to their\n * appropriate values (to ensure they're sequential and increasing).\n *\n * @param {Object[]} playlists - the playlists to update\n * @param {TimelineStart[]} timelineStarts - the timeline starts for the manifest\n */\n\n\nvar addMediaSequenceValues = function addMediaSequenceValues(playlists, timelineStarts) {\n // increment all segments sequentially\n playlists.forEach(function (playlist) {\n playlist.mediaSequence = 0;\n playlist.discontinuitySequence = findIndex(timelineStarts, function (_ref7) {\n var timeline = _ref7.timeline;\n return timeline === playlist.timeline;\n });\n\n if (!playlist.segments) {\n return;\n }\n\n playlist.segments.forEach(function (segment, index) {\n segment.number = index;\n });\n });\n};\n/**\n * Given a media group object, flattens all playlists within the media group into a single\n * array.\n *\n * @param {Object} mediaGroupObject - the media group object\n *\n * @return {Object[]}\n * The media group playlists\n */\n\nvar flattenMediaGroupPlaylists = function flattenMediaGroupPlaylists(mediaGroupObject) {\n if (!mediaGroupObject) {\n return [];\n }\n\n return Object.keys(mediaGroupObject).reduce(function (acc, label) {\n var labelContents = mediaGroupObject[label];\n return acc.concat(labelContents.playlists);\n }, []);\n};\nvar toM3u8 = function toM3u8(_ref8) {\n var _mediaGroups;\n\n var dashPlaylists = _ref8.dashPlaylists,\n locations = _ref8.locations,\n _ref8$sidxMapping = _ref8.sidxMapping,\n sidxMapping = _ref8$sidxMapping === void 0 ? {} : _ref8$sidxMapping,\n previousManifest = _ref8.previousManifest;\n\n if (!dashPlaylists.length) {\n return {};\n } // grab all main manifest attributes\n\n\n var _dashPlaylists$0$attr = dashPlaylists[0].attributes,\n duration = _dashPlaylists$0$attr.sourceDuration,\n type = _dashPlaylists$0$attr.type,\n suggestedPresentationDelay = _dashPlaylists$0$attr.suggestedPresentationDelay,\n minimumUpdatePeriod = _dashPlaylists$0$attr.minimumUpdatePeriod;\n var videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n var audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n var vttPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(vttOnly));\n var captions = dashPlaylists.map(function (playlist) {\n return playlist.attributes.captionServices;\n }).filter(Boolean);\n var manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: [],\n endList: true,\n mediaGroups: (_mediaGroups = {\n AUDIO: {},\n VIDEO: {}\n }, _mediaGroups['CLOSED-CAPTIONS'] = {}, _mediaGroups.SUBTITLES = {}, _mediaGroups),\n uri: '',\n duration: duration,\n playlists: addSidxSegmentsToPlaylists(videoPlaylists, sidxMapping)\n };\n\n if (minimumUpdatePeriod >= 0) {\n manifest.minimumUpdatePeriod = minimumUpdatePeriod * 1000;\n }\n\n if (locations) {\n manifest.locations = locations;\n }\n\n if (type === 'dynamic') {\n manifest.suggestedPresentationDelay = suggestedPresentationDelay;\n }\n\n var isAudioOnly = manifest.playlists.length === 0;\n var organizedAudioGroup = audioPlaylists.length ? organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly) : null;\n var organizedVttGroup = vttPlaylists.length ? organizeVttPlaylists(vttPlaylists, sidxMapping) : null;\n var formattedPlaylists = videoPlaylists.concat(flattenMediaGroupPlaylists(organizedAudioGroup), flattenMediaGroupPlaylists(organizedVttGroup));\n var playlistTimelineStarts = formattedPlaylists.map(function (_ref9) {\n var timelineStarts = _ref9.timelineStarts;\n return timelineStarts;\n });\n manifest.timelineStarts = getUniqueTimelineStarts(playlistTimelineStarts);\n addMediaSequenceValues(formattedPlaylists, manifest.timelineStarts);\n\n if (organizedAudioGroup) {\n manifest.mediaGroups.AUDIO.audio = organizedAudioGroup;\n }\n\n if (organizedVttGroup) {\n manifest.mediaGroups.SUBTITLES.subs = organizedVttGroup;\n }\n\n if (captions.length) {\n manifest.mediaGroups['CLOSED-CAPTIONS'].cc = organizeCaptionServices(captions);\n }\n\n if (previousManifest) {\n return positionManifestOnTimeline({\n oldManifest: previousManifest,\n newManifest: manifest\n });\n }\n\n return manifest;\n};\n\n/**\n * Calculates the R (repetition) value for a live stream (for the final segment\n * in a manifest where the r value is negative 1)\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {number} time\n * current time (typically the total time up until the final segment)\n * @param {number} duration\n * duration property for the given \n *\n * @return {number}\n * R value to reach the end of the given period\n */\nvar getLiveRValue = function getLiveRValue(attributes, time, duration) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n _attributes$periodSta = attributes.periodStart,\n periodStart = _attributes$periodSta === void 0 ? 0 : _attributes$periodSta,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp;\n var now = (NOW + clientOffset) / 1000;\n var periodStartWC = availabilityStartTime + periodStart;\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n return Math.ceil((periodDuration * timescale - time) / duration);\n};\n/**\n * Uses information provided by SegmentTemplate.SegmentTimeline to determine segment\n * timing and duration\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n *\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\n\nvar parseByTimeline = function parseByTimeline(attributes, segmentTimeline) {\n var type = attributes.type,\n _attributes$minimumUp2 = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp2 === void 0 ? 0 : _attributes$minimumUp2,\n _attributes$media = attributes.media,\n media = _attributes$media === void 0 ? '' : _attributes$media,\n sourceDuration = attributes.sourceDuration,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb,\n timeline = attributes.periodStart;\n var segments = [];\n var time = -1;\n\n for (var sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {\n var S = segmentTimeline[sIndex];\n var duration = S.d;\n var repeat = S.r || 0;\n var segmentTime = S.t || 0;\n\n if (time < 0) {\n // first segment\n time = segmentTime;\n }\n\n if (segmentTime && segmentTime > time) {\n // discontinuity\n // TODO: How to handle this type of discontinuity\n // timeline++ here would treat it like HLS discontuity and content would\n // get appended without gap\n // E.G.\n // \n // \n // \n // \n // would have $Time$ values of [0, 1, 2, 5]\n // should this be appened at time positions [0, 1, 2, 3],(#EXT-X-DISCONTINUITY)\n // or [0, 1, 2, gap, gap, 5]? (#EXT-X-GAP)\n // does the value of sourceDuration consider this when calculating arbitrary\n // negative @r repeat value?\n // E.G. Same elements as above with this added at the end\n // \n // with a sourceDuration of 10\n // Would the 2 gaps be included in the time duration calculations resulting in\n // 8 segments with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9] or 10 segments\n // with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9, 10, 11] ?\n time = segmentTime;\n }\n\n var count = void 0;\n\n if (repeat < 0) {\n var nextS = sIndex + 1;\n\n if (nextS === segmentTimeline.length) {\n // last segment\n if (type === 'dynamic' && minimumUpdatePeriod > 0 && media.indexOf('$Number$') > 0) {\n count = getLiveRValue(attributes, time, duration);\n } else {\n // TODO: This may be incorrect depending on conclusion of TODO above\n count = (sourceDuration * timescale - time) / duration;\n }\n } else {\n count = (segmentTimeline[nextS].t - time) / duration;\n }\n } else {\n count = repeat + 1;\n }\n\n var end = startNumber + segments.length + count;\n var number = startNumber + segments.length;\n\n while (number < end) {\n segments.push({\n number: number,\n duration: duration / timescale,\n time: time,\n timeline: timeline\n });\n time += duration;\n number++;\n }\n }\n\n return segments;\n};\n\nvar identifierPattern = /\\$([A-z]*)(?:(%0)([0-9]+)d)?\\$/g;\n/**\n * Replaces template identifiers with corresponding values. To be used as the callback\n * for String.prototype.replace\n *\n * @name replaceCallback\n * @function\n * @param {string} match\n * Entire match of identifier\n * @param {string} identifier\n * Name of matched identifier\n * @param {string} format\n * Format tag string. Its presence indicates that padding is expected\n * @param {string} width\n * Desired length of the replaced value. Values less than this width shall be left\n * zero padded\n * @return {string}\n * Replacement for the matched identifier\n */\n\n/**\n * Returns a function to be used as a callback for String.prototype.replace to replace\n * template identifiers\n *\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {replaceCallback}\n * Callback to be used with String.prototype.replace to replace identifiers\n */\n\nvar identifierReplacement = function identifierReplacement(values) {\n return function (match, identifier, format, width) {\n if (match === '$$') {\n // escape sequence\n return '$';\n }\n\n if (typeof values[identifier] === 'undefined') {\n return match;\n }\n\n var value = '' + values[identifier];\n\n if (identifier === 'RepresentationID') {\n // Format tag shall not be present with RepresentationID\n return value;\n }\n\n if (!format) {\n width = 1;\n } else {\n width = parseInt(width, 10);\n }\n\n if (value.length >= width) {\n return value;\n }\n\n return \"\" + new Array(width - value.length + 1).join('0') + value;\n };\n};\n/**\n * Constructs a segment url from a template string\n *\n * @param {string} url\n * Template string to construct url from\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {string}\n * Segment url with identifiers replaced\n */\n\nvar constructTemplateUrl = function constructTemplateUrl(url, values) {\n return url.replace(identifierPattern, identifierReplacement(values));\n};\n/**\n * Generates a list of objects containing timing and duration information about each\n * segment needed to generate segment uris and the complete segment object\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseTemplateInfo = function parseTemplateInfo(attributes, segmentTimeline) {\n if (!attributes.duration && !segmentTimeline) {\n // if neither @duration or SegmentTimeline are present, then there shall be exactly\n // one media segment\n return [{\n number: attributes.startNumber || 1,\n duration: attributes.sourceDuration,\n time: 0,\n timeline: attributes.periodStart\n }];\n }\n\n if (attributes.duration) {\n return parseByDuration(attributes);\n }\n\n return parseByTimeline(attributes, segmentTimeline);\n};\n/**\n * Generates a list of segments using information provided by the SegmentTemplate element\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object[]}\n * List of segment objects\n */\n\nvar segmentsFromTemplate = function segmentsFromTemplate(attributes, segmentTimeline) {\n var templateValues = {\n RepresentationID: attributes.id,\n Bandwidth: attributes.bandwidth || 0\n };\n var _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {\n sourceURL: '',\n range: ''\n } : _attributes$initializ;\n var mapSegment = urlTypeToSegment({\n baseUrl: attributes.baseUrl,\n source: constructTemplateUrl(initialization.sourceURL, templateValues),\n range: initialization.range\n });\n var segments = parseTemplateInfo(attributes, segmentTimeline);\n return segments.map(function (segment) {\n templateValues.Number = segment.number;\n templateValues.Time = segment.time;\n var uri = constructTemplateUrl(attributes.media || '', templateValues); // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n var timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n var presentationTimeOffset = attributes.presentationTimeOffset || 0;\n var presentationTime = // Even if the @t attribute is not specified for the segment, segment.time is\n // calculated in mpd-parser prior to this, so it's assumed to be available.\n attributes.periodStart + (segment.time - presentationTimeOffset) / timescale;\n var map = {\n uri: uri,\n timeline: segment.timeline,\n duration: segment.duration,\n resolvedUri: resolveUrl(attributes.baseUrl || '', uri),\n map: mapSegment,\n number: segment.number,\n presentationTime: presentationTime\n };\n return map;\n });\n};\n\n/**\n * Converts a (of type URLType from the DASH spec 5.3.9.2 Table 14)\n * to an object that matches the output of a segment in videojs/mpd-parser\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object} segmentUrl\n * node to translate into a segment object\n * @return {Object} translated segment object\n */\n\nvar SegmentURLToSegmentObject = function SegmentURLToSegmentObject(attributes, segmentUrl) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ;\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: segmentUrl.media,\n range: segmentUrl.mediaRange\n });\n segment.map = initSegment;\n return segment;\n};\n/**\n * Generates a list of segments using information provided by the SegmentList element\n * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object.} list of segments\n */\n\n\nvar segmentsFromList = function segmentsFromList(attributes, segmentTimeline) {\n var duration = attributes.duration,\n _attributes$segmentUr = attributes.segmentUrls,\n segmentUrls = _attributes$segmentUr === void 0 ? [] : _attributes$segmentUr,\n periodStart = attributes.periodStart; // Per spec (5.3.9.2.1) no way to determine segment duration OR\n // if both SegmentTimeline and @duration are defined, it is outside of spec.\n\n if (!duration && !segmentTimeline || duration && segmentTimeline) {\n throw new Error(errors.SEGMENT_TIME_UNSPECIFIED);\n }\n\n var segmentUrlMap = segmentUrls.map(function (segmentUrlObject) {\n return SegmentURLToSegmentObject(attributes, segmentUrlObject);\n });\n var segmentTimeInfo;\n\n if (duration) {\n segmentTimeInfo = parseByDuration(attributes);\n }\n\n if (segmentTimeline) {\n segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);\n }\n\n var segments = segmentTimeInfo.map(function (segmentTime, index) {\n if (segmentUrlMap[index]) {\n var segment = segmentUrlMap[index]; // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n var timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n var presentationTimeOffset = attributes.presentationTimeOffset || 0;\n segment.timeline = segmentTime.timeline;\n segment.duration = segmentTime.duration;\n segment.number = segmentTime.number;\n segment.presentationTime = periodStart + (segmentTime.time - presentationTimeOffset) / timescale;\n return segment;\n } // Since we're mapping we should get rid of any blank segments (in case\n // the given SegmentTimeline is handling for more elements than we have\n // SegmentURLs for).\n\n }).filter(function (segment) {\n return segment;\n });\n return segments;\n};\n\nvar generateSegments = function generateSegments(_ref) {\n var attributes = _ref.attributes,\n segmentInfo = _ref.segmentInfo;\n var segmentAttributes;\n var segmentsFn;\n\n if (segmentInfo.template) {\n segmentsFn = segmentsFromTemplate;\n segmentAttributes = merge(attributes, segmentInfo.template);\n } else if (segmentInfo.base) {\n segmentsFn = segmentsFromBase;\n segmentAttributes = merge(attributes, segmentInfo.base);\n } else if (segmentInfo.list) {\n segmentsFn = segmentsFromList;\n segmentAttributes = merge(attributes, segmentInfo.list);\n }\n\n var segmentsInfo = {\n attributes: attributes\n };\n\n if (!segmentsFn) {\n return segmentsInfo;\n }\n\n var segments = segmentsFn(segmentAttributes, segmentInfo.segmentTimeline); // The @duration attribute will be used to determin the playlist's targetDuration which\n // must be in seconds. Since we've generated the segment list, we no longer need\n // @duration to be in @timescale units, so we can convert it here.\n\n if (segmentAttributes.duration) {\n var _segmentAttributes = segmentAttributes,\n duration = _segmentAttributes.duration,\n _segmentAttributes$ti = _segmentAttributes.timescale,\n timescale = _segmentAttributes$ti === void 0 ? 1 : _segmentAttributes$ti;\n segmentAttributes.duration = duration / timescale;\n } else if (segments.length) {\n // if there is no @duration attribute, use the largest segment duration as\n // as target duration\n segmentAttributes.duration = segments.reduce(function (max, segment) {\n return Math.max(max, Math.ceil(segment.duration));\n }, 0);\n } else {\n segmentAttributes.duration = 0;\n }\n\n segmentsInfo.attributes = segmentAttributes;\n segmentsInfo.segments = segments; // This is a sidx box without actual segment information\n\n if (segmentInfo.base && segmentAttributes.indexRange) {\n segmentsInfo.sidx = segments[0];\n segmentsInfo.segments = [];\n }\n\n return segmentsInfo;\n};\nvar toPlaylists = function toPlaylists(representations) {\n return representations.map(generateSegments);\n};\n\nvar findChildren = function findChildren(element, name) {\n return from(element.childNodes).filter(function (_ref) {\n var tagName = _ref.tagName;\n return tagName === name;\n });\n};\nvar getContent = function getContent(element) {\n return element.textContent.trim();\n};\n\nvar parseDuration = function parseDuration(str) {\n var SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n var SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n var SECONDS_IN_DAY = 24 * 60 * 60;\n var SECONDS_IN_HOUR = 60 * 60;\n var SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S\n\n var durationRegex = /P(?:(\\d*)Y)?(?:(\\d*)M)?(?:(\\d*)D)?(?:T(?:(\\d*)H)?(?:(\\d*)M)?(?:([\\d.]*)S)?)?/;\n var match = durationRegex.exec(str);\n\n if (!match) {\n return 0;\n }\n\n var _match$slice = match.slice(1),\n year = _match$slice[0],\n month = _match$slice[1],\n day = _match$slice[2],\n hour = _match$slice[3],\n minute = _match$slice[4],\n second = _match$slice[5];\n\n return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);\n};\nvar parseDate = function parseDate(str) {\n // Date format without timezone according to ISO 8601\n // YYY-MM-DDThh:mm:ss.ssssss\n var dateRegex = /^\\d+-\\d+-\\d+T\\d+:\\d+:\\d+(\\.\\d+)?$/; // If the date string does not specifiy a timezone, we must specifiy UTC. This is\n // expressed by ending with 'Z'\n\n if (dateRegex.test(str)) {\n str += 'Z';\n }\n\n return Date.parse(str);\n};\n\nvar parsers = {\n /**\n * Specifies the duration of the entire Media Presentation. Format is a duration string\n * as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n mediaPresentationDuration: function mediaPresentationDuration(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the Segment availability start time for all Segments referred to in this\n * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability\n * time. Format is a date string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The date as seconds from unix epoch\n */\n availabilityStartTime: function availabilityStartTime(value) {\n return parseDate(value) / 1000;\n },\n\n /**\n * Specifies the smallest period between potential changes to the MPD. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n minimumUpdatePeriod: function minimumUpdatePeriod(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the suggested presentation delay. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n suggestedPresentationDelay: function suggestedPresentationDelay(value) {\n return parseDuration(value);\n },\n\n /**\n * specifices the type of mpd. Can be either \"static\" or \"dynamic\"\n *\n * @param {string} value\n * value of attribute as a string\n *\n * @return {string}\n * The type as a string\n */\n type: function type(value) {\n return value;\n },\n\n /**\n * Specifies the duration of the smallest time shifting buffer for any Representation\n * in the MPD. Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n timeShiftBufferDepth: function timeShiftBufferDepth(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.\n * Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n start: function start(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the width of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed width\n */\n width: function width(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the height of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed height\n */\n height: function height(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the bitrate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed bandwidth\n */\n bandwidth: function bandwidth(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the number of the first Media Segment in this Representation in the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n startNumber: function startNumber(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the timescale in units per seconds\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed timescale\n */\n timescale: function timescale(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTimeOffset.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTimeOffset\n */\n presentationTimeOffset: function presentationTimeOffset(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the constant approximate Segment duration\n * NOTE: The element also contains an @duration attribute. This duration\n * specifies the duration of the Period. This attribute is currently not\n * supported by the rest of the parser, however we still check for it to prevent\n * errors.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n duration: function duration(value) {\n var parsedValue = parseInt(value, 10);\n\n if (isNaN(parsedValue)) {\n return parseDuration(value);\n }\n\n return parsedValue;\n },\n\n /**\n * Specifies the Segment duration, in units of the value of the @timescale.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n d: function d(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the MPD start time, in @timescale units, the first Segment in the series\n * starts relative to the beginning of the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed time\n */\n t: function t(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the repeat count of the number of following contiguous Segments with the\n * same duration expressed by the value of @d\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n r: function r(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Default parser for all other attributes. Acts as a no-op and just returns the value\n * as a string\n *\n * @param {string} value\n * value of attribute as a string\n * @return {string}\n * Unparsed value\n */\n DEFAULT: function DEFAULT(value) {\n return value;\n }\n};\n/**\n * Gets all the attributes and values of the provided node, parses attributes with known\n * types, and returns an object with attribute names mapped to values.\n *\n * @param {Node} el\n * The node to parse attributes from\n * @return {Object}\n * Object with all attributes of el parsed\n */\n\nvar parseAttributes = function parseAttributes(el) {\n if (!(el && el.attributes)) {\n return {};\n }\n\n return from(el.attributes).reduce(function (a, e) {\n var parseFn = parsers[e.name] || parsers.DEFAULT;\n a[e.name] = parseFn(e.value);\n return a;\n }, {});\n};\n\nvar keySystemsMap = {\n 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey',\n 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha',\n 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready',\n 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime'\n};\n/**\n * Builds a list of urls that is the product of the reference urls and BaseURL values\n *\n * @param {string[]} referenceUrls\n * List of reference urls to resolve to\n * @param {Node[]} baseUrlElements\n * List of BaseURL nodes from the mpd\n * @return {string[]}\n * List of resolved urls\n */\n\nvar buildBaseUrls = function buildBaseUrls(referenceUrls, baseUrlElements) {\n if (!baseUrlElements.length) {\n return referenceUrls;\n }\n\n return flatten(referenceUrls.map(function (reference) {\n return baseUrlElements.map(function (baseUrlElement) {\n return resolveUrl(reference, getContent(baseUrlElement));\n });\n }));\n};\n/**\n * Contains all Segment information for its containing AdaptationSet\n *\n * @typedef {Object} SegmentInformation\n * @property {Object|undefined} template\n * Contains the attributes for the SegmentTemplate node\n * @property {Object[]|undefined} segmentTimeline\n * Contains a list of atrributes for each S node within the SegmentTimeline node\n * @property {Object|undefined} list\n * Contains the attributes for the SegmentList node\n * @property {Object|undefined} base\n * Contains the attributes for the SegmentBase node\n */\n\n/**\n * Returns all available Segment information contained within the AdaptationSet node\n *\n * @param {Node} adaptationSet\n * The AdaptationSet node to get Segment information from\n * @return {SegmentInformation}\n * The Segment information contained within the provided AdaptationSet\n */\n\nvar getSegmentInformation = function getSegmentInformation(adaptationSet) {\n var segmentTemplate = findChildren(adaptationSet, 'SegmentTemplate')[0];\n var segmentList = findChildren(adaptationSet, 'SegmentList')[0];\n var segmentUrls = segmentList && findChildren(segmentList, 'SegmentURL').map(function (s) {\n return merge({\n tag: 'SegmentURL'\n }, parseAttributes(s));\n });\n var segmentBase = findChildren(adaptationSet, 'SegmentBase')[0];\n var segmentTimelineParentNode = segmentList || segmentTemplate;\n var segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, 'SegmentTimeline')[0];\n var segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;\n var segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, 'Initialization')[0]; // SegmentTemplate is handled slightly differently, since it can have both\n // @initialization and an node. @initialization can be templated,\n // while the node can have a url and range specified. If the has\n // both @initialization and an subelement we opt to override with\n // the node, as this interaction is not defined in the spec.\n\n var template = segmentTemplate && parseAttributes(segmentTemplate);\n\n if (template && segmentInitialization) {\n template.initialization = segmentInitialization && parseAttributes(segmentInitialization);\n } else if (template && template.initialization) {\n // If it is @initialization we convert it to an object since this is the format that\n // later functions will rely on for the initialization segment. This is only valid\n // for \n template.initialization = {\n sourceURL: template.initialization\n };\n }\n\n var segmentInfo = {\n template: template,\n segmentTimeline: segmentTimeline && findChildren(segmentTimeline, 'S').map(function (s) {\n return parseAttributes(s);\n }),\n list: segmentList && merge(parseAttributes(segmentList), {\n segmentUrls: segmentUrls,\n initialization: parseAttributes(segmentInitialization)\n }),\n base: segmentBase && merge(parseAttributes(segmentBase), {\n initialization: parseAttributes(segmentInitialization)\n })\n };\n Object.keys(segmentInfo).forEach(function (key) {\n if (!segmentInfo[key]) {\n delete segmentInfo[key];\n }\n });\n return segmentInfo;\n};\n/**\n * Contains Segment information and attributes needed to construct a Playlist object\n * from a Representation\n *\n * @typedef {Object} RepresentationInformation\n * @property {SegmentInformation} segmentInfo\n * Segment information for this Representation\n * @property {Object} attributes\n * Inherited attributes for this Representation\n */\n\n/**\n * Maps a Representation node to an object containing Segment information and attributes\n *\n * @name inheritBaseUrlsCallback\n * @function\n * @param {Node} representation\n * Representation node from the mpd\n * @return {RepresentationInformation}\n * Representation information needed to construct a Playlist object\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Representation nodes to\n * Segment information and attributes using inherited BaseURL nodes.\n *\n * @param {Object} adaptationSetAttributes\n * Contains attributes inherited by the AdaptationSet\n * @param {string[]} adaptationSetBaseUrls\n * Contains list of resolved base urls inherited by the AdaptationSet\n * @param {SegmentInformation} adaptationSetSegmentInfo\n * Contains Segment information for the AdaptationSet\n * @return {inheritBaseUrlsCallback}\n * Callback map function\n */\n\nvar inheritBaseUrls = function inheritBaseUrls(adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) {\n return function (representation) {\n var repBaseUrlElements = findChildren(representation, 'BaseURL');\n var repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements);\n var attributes = merge(adaptationSetAttributes, parseAttributes(representation));\n var representationSegmentInfo = getSegmentInformation(representation);\n return repBaseUrls.map(function (baseUrl) {\n return {\n segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),\n attributes: merge(attributes, {\n baseUrl: baseUrl\n })\n };\n });\n };\n};\n/**\n * Tranforms a series of content protection nodes to\n * an object containing pssh data by key system\n *\n * @param {Node[]} contentProtectionNodes\n * Content protection nodes\n * @return {Object}\n * Object containing pssh data by key system\n */\n\nvar generateKeySystemInformation = function generateKeySystemInformation(contentProtectionNodes) {\n return contentProtectionNodes.reduce(function (acc, node) {\n var attributes = parseAttributes(node); // Although it could be argued that according to the UUID RFC spec the UUID string (a-f chars) should be generated\n // as a lowercase string it also mentions it should be treated as case-insensitive on input. Since the key system\n // UUIDs in the keySystemsMap are hardcoded as lowercase in the codebase there isn't any reason not to do\n // .toLowerCase() on the input UUID string from the manifest (at least I could not think of one).\n\n if (attributes.schemeIdUri) {\n attributes.schemeIdUri = attributes.schemeIdUri.toLowerCase();\n }\n\n var keySystem = keySystemsMap[attributes.schemeIdUri];\n\n if (keySystem) {\n acc[keySystem] = {\n attributes: attributes\n };\n var psshNode = findChildren(node, 'cenc:pssh')[0];\n\n if (psshNode) {\n var pssh = getContent(psshNode);\n acc[keySystem].pssh = pssh && decodeB64ToUint8Array(pssh);\n }\n }\n\n return acc;\n }, {});\n}; // defined in ANSI_SCTE 214-1 2016\n\n\nvar parseCaptionServiceMetadata = function parseCaptionServiceMetadata(service) {\n // 608 captions\n if (service.schemeIdUri === 'urn:scte:dash:cc:cea-608:2015') {\n var values = typeof service.value !== 'string' ? [] : service.value.split(';');\n return values.map(function (value) {\n var channel;\n var language; // default language to value\n\n language = value;\n\n if (/^CC\\d=/.test(value)) {\n var _value$split = value.split('=');\n\n channel = _value$split[0];\n language = _value$split[1];\n } else if (/^CC\\d$/.test(value)) {\n channel = value;\n }\n\n return {\n channel: channel,\n language: language\n };\n });\n } else if (service.schemeIdUri === 'urn:scte:dash:cc:cea-708:2015') {\n var _values = typeof service.value !== 'string' ? [] : service.value.split(';');\n\n return _values.map(function (value) {\n var flags = {\n // service or channel number 1-63\n 'channel': undefined,\n // language is a 3ALPHA per ISO 639.2/B\n // field is required\n 'language': undefined,\n // BIT 1/0 or ?\n // default value is 1, meaning 16:9 aspect ratio, 0 is 4:3, ? is unknown\n 'aspectRatio': 1,\n // BIT 1/0\n // easy reader flag indicated the text is tailed to the needs of beginning readers\n // default 0, or off\n 'easyReader': 0,\n // BIT 1/0\n // If 3d metadata is present (CEA-708.1) then 1\n // default 0\n '3D': 0\n };\n\n if (/=/.test(value)) {\n var _value$split2 = value.split('='),\n channel = _value$split2[0],\n _value$split2$ = _value$split2[1],\n opts = _value$split2$ === void 0 ? '' : _value$split2$;\n\n flags.channel = channel;\n flags.language = value;\n opts.split(',').forEach(function (opt) {\n var _opt$split = opt.split(':'),\n name = _opt$split[0],\n val = _opt$split[1];\n\n if (name === 'lang') {\n flags.language = val; // er for easyReadery\n } else if (name === 'er') {\n flags.easyReader = Number(val); // war for wide aspect ratio\n } else if (name === 'war') {\n flags.aspectRatio = Number(val);\n } else if (name === '3D') {\n flags['3D'] = Number(val);\n }\n });\n } else {\n flags.language = value;\n }\n\n if (flags.channel) {\n flags.channel = 'SERVICE' + flags.channel;\n }\n\n return flags;\n });\n }\n};\n/**\n * Maps an AdaptationSet node to a list of Representation information objects\n *\n * @name toRepresentationsCallback\n * @function\n * @param {Node} adaptationSet\n * AdaptationSet node from the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of\n * Representation information objects\n *\n * @param {Object} periodAttributes\n * Contains attributes inherited by the Period\n * @param {string[]} periodBaseUrls\n * Contains list of resolved base urls inherited by the Period\n * @param {string[]} periodSegmentInfo\n * Contains Segment Information at the period level\n * @return {toRepresentationsCallback}\n * Callback map function\n */\n\nvar toRepresentations = function toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo) {\n return function (adaptationSet) {\n var adaptationSetAttributes = parseAttributes(adaptationSet);\n var adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL'));\n var role = findChildren(adaptationSet, 'Role')[0];\n var roleAttributes = {\n role: parseAttributes(role)\n };\n var attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);\n var accessibility = findChildren(adaptationSet, 'Accessibility')[0];\n var captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));\n\n if (captionServices) {\n attrs = merge(attrs, {\n captionServices: captionServices\n });\n }\n\n var label = findChildren(adaptationSet, 'Label')[0];\n\n if (label && label.childNodes.length) {\n var labelVal = label.childNodes[0].nodeValue.trim();\n attrs = merge(attrs, {\n label: labelVal\n });\n }\n\n var contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection'));\n\n if (Object.keys(contentProtection).length) {\n attrs = merge(attrs, {\n contentProtection: contentProtection\n });\n }\n\n var segmentInfo = getSegmentInformation(adaptationSet);\n var representations = findChildren(adaptationSet, 'Representation');\n var adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);\n return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));\n };\n};\n/**\n * Contains all period information for mapping nodes onto adaptation sets.\n *\n * @typedef {Object} PeriodInformation\n * @property {Node} period.node\n * Period node from the mpd\n * @property {Object} period.attributes\n * Parsed period attributes from node plus any added\n */\n\n/**\n * Maps a PeriodInformation object to a list of Representation information objects for all\n * AdaptationSet nodes contained within the Period.\n *\n * @name toAdaptationSetsCallback\n * @function\n * @param {PeriodInformation} period\n * Period object containing necessary period information\n * @param {number} periodStart\n * Start time of the Period within the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Period nodes to a list of\n * Representation information objects\n *\n * @param {Object} mpdAttributes\n * Contains attributes inherited by the mpd\n * @param {string[]} mpdBaseUrls\n * Contains list of resolved base urls inherited by the mpd\n * @return {toAdaptationSetsCallback}\n * Callback map function\n */\n\nvar toAdaptationSets = function toAdaptationSets(mpdAttributes, mpdBaseUrls) {\n return function (period, index) {\n var periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period.node, 'BaseURL'));\n var periodAttributes = merge(mpdAttributes, {\n periodStart: period.attributes.start\n });\n\n if (typeof period.attributes.duration === 'number') {\n periodAttributes.periodDuration = period.attributes.duration;\n }\n\n var adaptationSets = findChildren(period.node, 'AdaptationSet');\n var periodSegmentInfo = getSegmentInformation(period.node);\n return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));\n };\n};\n/**\n * Gets Period@start property for a given period.\n *\n * @param {Object} options\n * Options object\n * @param {Object} options.attributes\n * Period attributes\n * @param {Object} [options.priorPeriodAttributes]\n * Prior period attributes (if prior period is available)\n * @param {string} options.mpdType\n * The MPD@type these periods came from\n * @return {number|null}\n * The period start, or null if it's an early available period or error\n */\n\nvar getPeriodStart = function getPeriodStart(_ref) {\n var attributes = _ref.attributes,\n priorPeriodAttributes = _ref.priorPeriodAttributes,\n mpdType = _ref.mpdType;\n\n // Summary of period start time calculation from DASH spec section 5.3.2.1\n //\n // A period's start is the first period's start + time elapsed after playing all\n // prior periods to this one. Periods continue one after the other in time (without\n // gaps) until the end of the presentation.\n //\n // The value of Period@start should be:\n // 1. if Period@start is present: value of Period@start\n // 2. if previous period exists and it has @duration: previous Period@start +\n // previous Period@duration\n // 3. if this is first period and MPD@type is 'static': 0\n // 4. in all other cases, consider the period an \"early available period\" (note: not\n // currently supported)\n // (1)\n if (typeof attributes.start === 'number') {\n return attributes.start;\n } // (2)\n\n\n if (priorPeriodAttributes && typeof priorPeriodAttributes.start === 'number' && typeof priorPeriodAttributes.duration === 'number') {\n return priorPeriodAttributes.start + priorPeriodAttributes.duration;\n } // (3)\n\n\n if (!priorPeriodAttributes && mpdType === 'static') {\n return 0;\n } // (4)\n // There is currently no logic for calculating the Period@start value if there is\n // no Period@start or prior Period@start and Period@duration available. This is not made\n // explicit by the DASH interop guidelines or the DASH spec, however, since there's\n // nothing about any other resolution strategies, it's implied. Thus, this case should\n // be considered an early available period, or error, and null should suffice for both\n // of those cases.\n\n\n return null;\n};\n/**\n * Traverses the mpd xml tree to generate a list of Representation information objects\n * that have inherited attributes from parent nodes\n *\n * @param {Node} mpd\n * The root node of the mpd\n * @param {Object} options\n * Available options for inheritAttributes\n * @param {string} options.manifestUri\n * The uri source of the mpd\n * @param {number} options.NOW\n * Current time per DASH IOP. Default is current time in ms since epoch\n * @param {number} options.clientOffset\n * Client time difference from NOW (in milliseconds)\n * @return {RepresentationInformation[]}\n * List of objects containing Representation information\n */\n\nvar inheritAttributes = function inheritAttributes(mpd, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$manifestUri = _options.manifestUri,\n manifestUri = _options$manifestUri === void 0 ? '' : _options$manifestUri,\n _options$NOW = _options.NOW,\n NOW = _options$NOW === void 0 ? Date.now() : _options$NOW,\n _options$clientOffset = _options.clientOffset,\n clientOffset = _options$clientOffset === void 0 ? 0 : _options$clientOffset;\n var periodNodes = findChildren(mpd, 'Period');\n\n if (!periodNodes.length) {\n throw new Error(errors.INVALID_NUMBER_OF_PERIOD);\n }\n\n var locations = findChildren(mpd, 'Location');\n var mpdAttributes = parseAttributes(mpd);\n var mpdBaseUrls = buildBaseUrls([manifestUri], findChildren(mpd, 'BaseURL')); // See DASH spec section 5.3.1.2, Semantics of MPD element. Default type to 'static'.\n\n mpdAttributes.type = mpdAttributes.type || 'static';\n mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;\n mpdAttributes.NOW = NOW;\n mpdAttributes.clientOffset = clientOffset;\n\n if (locations.length) {\n mpdAttributes.locations = locations.map(getContent);\n }\n\n var periods = []; // Since toAdaptationSets acts on individual periods right now, the simplest approach to\n // adding properties that require looking at prior periods is to parse attributes and add\n // missing ones before toAdaptationSets is called. If more such properties are added, it\n // may be better to refactor toAdaptationSets.\n\n periodNodes.forEach(function (node, index) {\n var attributes = parseAttributes(node); // Use the last modified prior period, as it may contain added information necessary\n // for this period.\n\n var priorPeriod = periods[index - 1];\n attributes.start = getPeriodStart({\n attributes: attributes,\n priorPeriodAttributes: priorPeriod ? priorPeriod.attributes : null,\n mpdType: mpdAttributes.type\n });\n periods.push({\n node: node,\n attributes: attributes\n });\n });\n return {\n locations: mpdAttributes.locations,\n representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls)))\n };\n};\n\nvar stringToMpdXml = function stringToMpdXml(manifestString) {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n var parser = new DOMParser();\n var xml;\n var mpd;\n\n try {\n xml = parser.parseFromString(manifestString, 'application/xml');\n mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null;\n } catch (e) {// ie 11 throwsw on invalid xml\n }\n\n if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) {\n throw new Error(errors.DASH_INVALID_XML);\n }\n\n return mpd;\n};\n\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} mpd\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\nvar parseUTCTimingScheme = function parseUTCTimingScheme(mpd) {\n var UTCTimingNode = findChildren(mpd, 'UTCTiming')[0];\n\n if (!UTCTimingNode) {\n return null;\n }\n\n var attributes = parseAttributes(UTCTimingNode);\n\n switch (attributes.schemeIdUri) {\n case 'urn:mpeg:dash:utc:http-head:2014':\n case 'urn:mpeg:dash:utc:http-head:2012':\n attributes.method = 'HEAD';\n break;\n\n case 'urn:mpeg:dash:utc:http-xsdate:2014':\n case 'urn:mpeg:dash:utc:http-iso:2014':\n case 'urn:mpeg:dash:utc:http-xsdate:2012':\n case 'urn:mpeg:dash:utc:http-iso:2012':\n attributes.method = 'GET';\n break;\n\n case 'urn:mpeg:dash:utc:direct:2014':\n case 'urn:mpeg:dash:utc:direct:2012':\n attributes.method = 'DIRECT';\n attributes.value = Date.parse(attributes.value);\n break;\n\n case 'urn:mpeg:dash:utc:http-ntp:2014':\n case 'urn:mpeg:dash:utc:ntp:2014':\n case 'urn:mpeg:dash:utc:sntp:2014':\n default:\n throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);\n }\n\n return attributes;\n};\n\nvar VERSION = version;\n/*\n * Given a DASH manifest string and options, parses the DASH manifest into an object in the\n * form outputed by m3u8-parser and accepted by videojs/http-streaming.\n *\n * For live DASH manifests, if `previousManifest` is provided in options, then the newly\n * parsed DASH manifest will have its media sequence and discontinuity sequence values\n * updated to reflect its position relative to the prior manifest.\n *\n * @param {string} manifestString - the DASH manifest as a string\n * @param {options} [options] - any options\n *\n * @return {Object} the manifest object\n */\n\nvar parse = function parse(manifestString, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);\n var playlists = toPlaylists(parsedManifestInfo.representationInfo);\n return toM3u8({\n dashPlaylists: playlists,\n locations: parsedManifestInfo.locations,\n sidxMapping: options.sidxMapping,\n previousManifest: options.previousManifest\n });\n};\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} manifestString\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\n\nvar parseUTCTiming = function parseUTCTiming(manifestString) {\n return parseUTCTimingScheme(stringToMpdXml(manifestString));\n};\n\nexport { VERSION, addSidxSegmentsToPlaylist$1 as addSidxSegmentsToPlaylist, generateSidxKey, inheritAttributes, parse, parseUTCTiming, stringToMpdXml, toM3u8, toPlaylists };\n","'use strict'\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var MPEGURL_REGEX = /^(audio|video|application)\\/(x-|vnd\\.apple\\.)?mpegurl/i;\nvar DASH_REGEX = /^application\\/dash\\+xml/i;\n/**\n * Returns a string that describes the type of source based on a video source object's\n * media type.\n *\n * @see {@link https://dev.w3.org/html5/pf-summary/video.html#dom-source-type|Source Type}\n *\n * @param {string} type\n * Video source object media type\n * @return {('hls'|'dash'|'vhs-json'|null)}\n * VHS source type string\n */\n\nexport var simpleTypeFromSourceType = function simpleTypeFromSourceType(type) {\n if (MPEGURL_REGEX.test(type)) {\n return 'hls';\n }\n\n if (DASH_REGEX.test(type)) {\n return 'dash';\n } // Denotes the special case of a manifest object passed to http-streaming instead of a\n // source URL.\n //\n // See https://en.wikipedia.org/wiki/Media_type for details on specifying media types.\n //\n // In this case, vnd stands for vendor, video.js for the organization, VHS for this\n // project, and the +json suffix identifies the structure of the media type.\n\n\n if (type === 'application/vnd.videojs.vhs+json') {\n return 'vhs-json';\n }\n\n return null;\n};","\"use strict\";\n\nvar window = require('global/window');\n\nvar httpResponseHandler = function httpResponseHandler(callback, decodeResponseBody) {\n if (decodeResponseBody === void 0) {\n decodeResponseBody = false;\n }\n\n return function (err, response, responseBody) {\n // if the XHR failed, return that error\n if (err) {\n callback(err);\n return;\n } // if the HTTP status code is 4xx or 5xx, the request also failed\n\n\n if (response.statusCode >= 400 && response.statusCode <= 599) {\n var cause = responseBody;\n\n if (decodeResponseBody) {\n if (window.TextDecoder) {\n var charset = getCharset(response.headers && response.headers['content-type']);\n\n try {\n cause = new TextDecoder(charset).decode(responseBody);\n } catch (e) {}\n } else {\n cause = String.fromCharCode.apply(null, new Uint8Array(responseBody));\n }\n }\n\n callback({\n cause: cause\n });\n return;\n } // otherwise, request succeeded\n\n\n callback(null, responseBody);\n };\n};\n\nfunction getCharset(contentTypeHeader) {\n if (contentTypeHeader === void 0) {\n contentTypeHeader = '';\n }\n\n return contentTypeHeader.toLowerCase().split(';').reduce(function (charset, contentType) {\n var _contentType$split = contentType.split('='),\n type = _contentType$split[0],\n value = _contentType$split[1];\n\n if (type.trim() === 'charset') {\n return value.trim();\n }\n\n return charset;\n }, 'utf-8');\n}\n\nmodule.exports = httpResponseHandler;","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 _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var MAX_UINT32 = Math.pow(2, 32);\n\nvar getUint64 = function(uint8) {\n var dv = new DataView(uint8.buffer, uint8.byteOffset, uint8.byteLength);\n var value;\n\n if (dv.getBigUint64) {\n value = dv.getBigUint64(0);\n\n if (value < Number.MAX_SAFE_INTEGER) {\n return Number(value);\n }\n\n return value;\n }\n\n return (dv.getUint32(0) * MAX_UINT32) + dv.getUint32(4);\n};\n\nmodule.exports = {\n getUint64: getUint64,\n MAX_UINT32: MAX_UINT32\n};\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar autoKeyword = \"auto\";\nvar directionSetting = {\n \"\": 1,\n \"lr\": 1,\n \"rl\": 1\n};\nvar alignSetting = {\n \"start\": 1,\n \"center\": 1,\n \"end\": 1,\n \"left\": 1,\n \"right\": 1,\n \"auto\": 1,\n \"line-left\": 1,\n \"line-right\": 1\n};\n\nfunction findDirectionSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n}\n\nfunction findAlignSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n}\n\nfunction VTTCue(startTime, endTime, text) {\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n this.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = \"\";\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = \"\";\n var _snapToLines = true;\n var _line = \"auto\";\n var _lineAlign = \"start\";\n var _position = \"auto\";\n var _positionAlign = \"auto\";\n var _size = 100;\n var _align = \"center\";\n\n Object.defineProperties(this, {\n \"id\": {\n enumerable: true,\n get: function() {\n return _id;\n },\n set: function(value) {\n _id = \"\" + value;\n }\n },\n\n \"pauseOnExit\": {\n enumerable: true,\n get: function() {\n return _pauseOnExit;\n },\n set: function(value) {\n _pauseOnExit = !!value;\n }\n },\n\n \"startTime\": {\n enumerable: true,\n get: function() {\n return _startTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Start time must be set to a number.\");\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"endTime\": {\n enumerable: true,\n get: function() {\n return _endTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"End time must be set to a number.\");\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"text\": {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = \"\" + value;\n this.hasBeenReset = true;\n }\n },\n\n \"region\": {\n enumerable: true,\n get: function() {\n return _region;\n },\n set: function(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n },\n\n \"vertical\": {\n enumerable: true,\n get: function() {\n return _vertical;\n },\n set: function(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError(\"Vertical: an invalid or illegal direction string was specified.\");\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n },\n\n \"snapToLines\": {\n enumerable: true,\n get: function() {\n return _snapToLines;\n },\n set: function(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n },\n\n \"line\": {\n enumerable: true,\n get: function() {\n return _line;\n },\n set: function(value) {\n if (typeof value !== \"number\" && value !== autoKeyword) {\n throw new SyntaxError(\"Line: an invalid number or illegal string was specified.\");\n }\n _line = value;\n this.hasBeenReset = true;\n }\n },\n\n \"lineAlign\": {\n enumerable: true,\n get: function() {\n return _lineAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n console.warn(\"lineAlign: an invalid or illegal string was specified.\");\n } else {\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }\n },\n\n \"position\": {\n enumerable: true,\n get: function() {\n return _position;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Position must be between 0 and 100.\");\n }\n _position = value;\n this.hasBeenReset = true;\n }\n },\n\n \"positionAlign\": {\n enumerable: true,\n get: function() {\n return _positionAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n console.warn(\"positionAlign: an invalid or illegal string was specified.\");\n } else {\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }\n },\n\n \"size\": {\n enumerable: true,\n get: function() {\n return _size;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Size must be between 0 and 100.\");\n }\n _size = value;\n this.hasBeenReset = true;\n }\n },\n\n \"align\": {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"align: an invalid or illegal alignment string was specified.\");\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }\n });\n\n /**\n * Other spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n this.displayState = undefined;\n}\n\n/**\n * VTTCue methods\n */\n\nVTTCue.prototype.getCueAsHTML = function() {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n return WebVTT.convertCueToDOMTree(window, this.text);\n};\n\nmodule.exports = VTTCue;\n","var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax = new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tif(source && typeof source === 'string'){\n\t\tsax.parse(source,defaultNSMap,entityMap);\n\t}else{\n\t\tsax.errorHandler.error(\"invalid doc source\");\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n \tif (this.locator) {\n \tthis.doc.documentURI = this.locator.systemId;\n \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\n\t var len = attrs.length;\n\t appendElement(this, el);\n\t this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t for (var i = 0 ; i < len; i++) {\n\t var namespaceURI = attrs.getURI(i);\n\t var value = attrs.getValue(i);\n\t var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t var ins = this.doc.createProcessingInstruction(target, data);\n\t this.locator && position(this.locator,ins)\n\t appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\n\t \tlocator.lineNumber = 0;\n\t }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t var comm = this.doc.createComment(chars);\n\t this.locator && position(this.locator,comm)\n\t appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t //used in characters() methods\n\t this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t if (impl && impl.createDocumentType) {\n\t var dt = impl.createDocumentType(name, publicId, systemId);\n\t this.locator && position(this.locator,dt)\n\t appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n * #comment(chars, start, length)\n * #startCDATA()\n * #endCDATA()\n * #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n * #endDTD()\n * #startEntity(name)\n * #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n * #elementDecl(name, model)\n * #externalEntityDecl(name, publicId, systemId)\n * #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\n * #resolveEntity(publicId, systemId)\n * #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n * #notationDecl(name, publicId, systemId) {};\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n if (!hander.currentElement) {\n hander.doc.appendChild(node);\n } else {\n hander.currentElement.appendChild(node);\n }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.DOMParser = DOMParser;\n\n/**\n * @deprecated Import/require from main entry point instead\n */\nexports.DOMImplementation = dom.DOMImplementation;\n\n/**\n * @deprecated Import/require from main entry point instead\n */\nexports.XMLSerializer = dom.XMLSerializer;\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia\n */\nexports.XML_ENTITIES = freeze({amp:'&', apos:\"'\", gt:'>', lt:'<', quot:'\"'})\n\n/**\n * A map of currently 241 entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n lt: '<',\n gt: '>',\n amp: '&',\n quot: '\"',\n apos: \"'\",\n Agrave: \"À\",\n Aacute: \"Á\",\n Acirc: \"Â\",\n Atilde: \"Ã\",\n Auml: \"Ä\",\n Aring: \"Å\",\n AElig: \"Æ\",\n Ccedil: \"Ç\",\n Egrave: \"È\",\n Eacute: \"É\",\n Ecirc: \"Ê\",\n Euml: \"Ë\",\n Igrave: \"Ì\",\n Iacute: \"Í\",\n Icirc: \"Î\",\n Iuml: \"Ï\",\n ETH: \"Ð\",\n Ntilde: \"Ñ\",\n Ograve: \"Ò\",\n Oacute: \"Ó\",\n Ocirc: \"Ô\",\n Otilde: \"Õ\",\n Ouml: \"Ö\",\n Oslash: \"Ø\",\n Ugrave: \"Ù\",\n Uacute: \"Ú\",\n Ucirc: \"Û\",\n Uuml: \"Ü\",\n Yacute: \"Ý\",\n THORN: \"Þ\",\n szlig: \"ß\",\n agrave: \"à\",\n aacute: \"á\",\n acirc: \"â\",\n atilde: \"ã\",\n auml: \"ä\",\n aring: \"å\",\n aelig: \"æ\",\n ccedil: \"ç\",\n egrave: \"è\",\n eacute: \"é\",\n ecirc: \"ê\",\n euml: \"ë\",\n igrave: \"ì\",\n iacute: \"í\",\n icirc: \"î\",\n iuml: \"ï\",\n eth: \"ð\",\n ntilde: \"ñ\",\n ograve: \"ò\",\n oacute: \"ó\",\n ocirc: \"ô\",\n otilde: \"õ\",\n ouml: \"ö\",\n oslash: \"ø\",\n ugrave: \"ù\",\n uacute: \"ú\",\n ucirc: \"û\",\n uuml: \"ü\",\n yacute: \"ý\",\n thorn: \"þ\",\n yuml: \"ÿ\",\n nbsp: \"\\u00a0\",\n iexcl: \"¡\",\n cent: \"¢\",\n pound: \"£\",\n curren: \"¤\",\n yen: \"¥\",\n brvbar: \"¦\",\n sect: \"§\",\n uml: \"¨\",\n copy: \"©\",\n ordf: \"ª\",\n laquo: \"«\",\n not: \"¬\",\n shy: \"­­\",\n reg: \"®\",\n macr: \"¯\",\n deg: \"°\",\n plusmn: \"±\",\n sup2: \"²\",\n sup3: \"³\",\n acute: \"´\",\n micro: \"µ\",\n para: \"¶\",\n middot: \"·\",\n cedil: \"¸\",\n sup1: \"¹\",\n ordm: \"º\",\n raquo: \"»\",\n frac14: \"¼\",\n frac12: \"½\",\n frac34: \"¾\",\n iquest: \"¿\",\n times: \"×\",\n divide: \"÷\",\n forall: \"∀\",\n part: \"∂\",\n exist: \"∃\",\n empty: \"∅\",\n nabla: \"∇\",\n isin: \"∈\",\n notin: \"∉\",\n ni: \"∋\",\n prod: \"∏\",\n sum: \"∑\",\n minus: \"−\",\n lowast: \"∗\",\n radic: \"√\",\n prop: \"∝\",\n infin: \"∞\",\n ang: \"∠\",\n and: \"∧\",\n or: \"∨\",\n cap: \"∩\",\n cup: \"∪\",\n 'int': \"∫\",\n there4: \"∴\",\n sim: \"∼\",\n cong: \"≅\",\n asymp: \"≈\",\n ne: \"≠\",\n equiv: \"≡\",\n le: \"≤\",\n ge: \"≥\",\n sub: \"⊂\",\n sup: \"⊃\",\n nsub: \"⊄\",\n sube: \"⊆\",\n supe: \"⊇\",\n oplus: \"⊕\",\n otimes: \"⊗\",\n perp: \"⊥\",\n sdot: \"⋅\",\n Alpha: \"Α\",\n Beta: \"Β\",\n Gamma: \"Γ\",\n Delta: \"Δ\",\n Epsilon: \"Ε\",\n Zeta: \"Ζ\",\n Eta: \"Η\",\n Theta: \"Θ\",\n Iota: \"Ι\",\n Kappa: \"Κ\",\n Lambda: \"Λ\",\n Mu: \"Μ\",\n Nu: \"Ν\",\n Xi: \"Ξ\",\n Omicron: \"Ο\",\n Pi: \"Π\",\n Rho: \"Ρ\",\n Sigma: \"Σ\",\n Tau: \"Τ\",\n Upsilon: \"Υ\",\n Phi: \"Φ\",\n Chi: \"Χ\",\n Psi: \"Ψ\",\n Omega: \"Ω\",\n alpha: \"α\",\n beta: \"β\",\n gamma: \"γ\",\n delta: \"δ\",\n epsilon: \"ε\",\n zeta: \"ζ\",\n eta: \"η\",\n theta: \"θ\",\n iota: \"ι\",\n kappa: \"κ\",\n lambda: \"λ\",\n mu: \"μ\",\n nu: \"ν\",\n xi: \"ξ\",\n omicron: \"ο\",\n pi: \"π\",\n rho: \"ρ\",\n sigmaf: \"ς\",\n sigma: \"σ\",\n tau: \"τ\",\n upsilon: \"υ\",\n phi: \"φ\",\n chi: \"χ\",\n psi: \"ψ\",\n omega: \"ω\",\n thetasym: \"ϑ\",\n upsih: \"ϒ\",\n piv: \"ϖ\",\n OElig: \"Œ\",\n oelig: \"œ\",\n Scaron: \"Š\",\n scaron: \"š\",\n Yuml: \"Ÿ\",\n fnof: \"ƒ\",\n circ: \"ˆ\",\n tilde: \"˜\",\n ensp: \" \",\n emsp: \" \",\n thinsp: \" \",\n zwnj: \"‌\",\n zwj: \"‍\",\n lrm: \"‎\",\n rlm: \"‏\",\n ndash: \"–\",\n mdash: \"—\",\n lsquo: \"‘\",\n rsquo: \"’\",\n sbquo: \"‚\",\n ldquo: \"“\",\n rdquo: \"”\",\n bdquo: \"„\",\n dagger: \"†\",\n Dagger: \"‡\",\n bull: \"•\",\n hellip: \"…\",\n permil: \"‰\",\n prime: \"′\",\n Prime: \"″\",\n lsaquo: \"‹\",\n rsaquo: \"›\",\n oline: \"‾\",\n euro: \"€\",\n trade: \"™\",\n larr: \"←\",\n uarr: \"↑\",\n rarr: \"→\",\n darr: \"↓\",\n harr: \"↔\",\n crarr: \"↵\",\n lceil: \"⌈\",\n rceil: \"⌉\",\n lfloor: \"⌊\",\n rfloor: \"⌋\",\n loz: \"◊\",\n spades: \"♠\",\n clubs: \"♣\",\n hearts: \"♥\",\n diams: \"♦\"\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES\n","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\nvar document = require('global/document');\n\nvar _objCreate = Object.create || (function() {\n function F() {}\n return function(o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create shim only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n})();\n\n// Creates a new ParserError object from an errorData object. The errorData\n// object should have default code and message properties. The default message\n// property can be overriden by passing in a message parameter.\n// See ParsingError.Errors below for acceptable errors.\nfunction ParsingError(errorData, message) {\n this.name = \"ParsingError\";\n this.code = errorData.code;\n this.message = message || errorData.message;\n}\nParsingError.prototype = _objCreate(Error.prototype);\nParsingError.prototype.constructor = ParsingError;\n\n// ParsingError metadata for acceptable ParsingErrors.\nParsingError.Errors = {\n BadSignature: {\n code: 0,\n message: \"Malformed WebVTT signature.\"\n },\n BadTimeStamp: {\n code: 1,\n message: \"Malformed time stamp.\"\n }\n};\n\n// Try to parse input as a time stamp.\nfunction parseTimeStamp(input) {\n\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{1,2})(:\\d{1,2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(\":\", \"\"), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nfunction Settings() {\n this.values = _objCreate(null);\n}\n\nSettings.prototype = {\n // Only accept the first assignment to any key.\n set: function(k, v) {\n if (!this.get(k) && v !== \"\") {\n this.values[k] = v;\n }\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function(k, v) {\n var m;\n if ((m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/))) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n};\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interprete each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== \"string\") {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var k = kv[0].trim();\n var v = kv[1].trim();\n callback(k, v);\n }\n}\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed timestamp: \" + oInput);\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"region\":\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case \"vertical\":\n settings.alt(k, v, [\"rl\", \"lr\"]);\n break;\n case \"line\":\n var vals = v.split(\",\"),\n vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set(\"snapToLines\", false) : null;\n settings.alt(k, vals0, [\"auto\"]);\n if (vals.length === 2) {\n settings.alt(\"lineAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"position\":\n vals = v.split(\",\");\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt(\"positionAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"center\", \"end\", \"left\", \"right\"]);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get(\"region\", null);\n cue.vertical = settings.get(\"vertical\", \"\");\n try {\n cue.line = settings.get(\"line\", \"auto\");\n } catch (e) {}\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n // Safari still uses the old middle value and won't accept center\n try {\n cue.align = settings.get(\"align\", \"center\");\n } catch (e) {\n cue.align = settings.get(\"align\", \"middle\");\n }\n try {\n cue.position = settings.get(\"position\", \"auto\");\n } catch (e) {\n cue.position = settings.get(\"position\", {\n start: 0,\n left: 0,\n center: 50,\n middle: 50,\n end: 100,\n right: 100\n }, cue.align);\n }\n\n\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n center: \"center\",\n middle: \"center\",\n end: \"end\",\n right: \"end\"\n }, cue.align);\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, \"\");\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== \"-->\") { // (3) next characters must match \"-->\"\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed time stamp (time stamps must be separated by '-->'): \" +\n oInput);\n }\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\n// When evaluating this file as part of a Webpack bundle for server\n// side rendering, `document` is an empty object.\nvar TEXTAREA_ELEMENT = document.createElement && document.createElement(\"textarea\");\n\nvar TAG_NAME = {\n c: \"span\",\n i: \"i\",\n b: \"b\",\n u: \"u\",\n ruby: \"ruby\",\n rt: \"rt\",\n v: \"span\",\n lang: \"span\"\n};\n\n// 5.1 default text color\n// 5.2 default text background color is equivalent to text color with bg_ prefix\nvar DEFAULT_COLOR_CLASS = {\n white: 'rgba(255,255,255,1)',\n lime: 'rgba(0,255,0,1)',\n cyan: 'rgba(0,255,255,1)',\n red: 'rgba(255,0,0,1)',\n yellow: 'rgba(255,255,0,1)',\n magenta: 'rgba(255,0,255,1)',\n blue: 'rgba(0,0,255,1)',\n black: 'rgba(0,0,0,1)'\n};\n\nvar TAG_ANNOTATION = {\n v: \"title\",\n lang: \"lang\"\n};\n\nvar NEEDS_PARENT = {\n rt: \"ruby\"\n};\n\n// Parse content into a document fragment.\nfunction parseContent(window, input) {\n function nextToken() {\n // Check for end-of-string.\n if (!input) {\n return null;\n }\n\n // Consume 'n' characters from the input.\n function consume(result) {\n input = input.substr(result.length);\n return result;\n }\n\n var m = input.match(/^([^<]*)(<[^>]*>?)?/);\n // If there is some text before the next tag, return it, otherwise return\n // the tag.\n return consume(m[1] ? m[1] : m[2]);\n }\n\n function unescape(s) {\n TEXTAREA_ELEMENT.innerHTML = s;\n s = TEXTAREA_ELEMENT.textContent;\n TEXTAREA_ELEMENT.textContent = \"\";\n return s;\n }\n\n function shouldAdd(current, element) {\n return !NEEDS_PARENT[element.localName] ||\n NEEDS_PARENT[element.localName] === current.localName;\n }\n\n // Create an element for this tag.\n function createElement(type, annotation) {\n var tagName = TAG_NAME[type];\n if (!tagName) {\n return null;\n }\n var element = window.document.createElement(tagName);\n var name = TAG_ANNOTATION[type];\n if (name && annotation) {\n element[name] = annotation.trim();\n }\n return element;\n }\n\n var rootDiv = window.document.createElement(\"div\"),\n current = rootDiv,\n t,\n tagStack = [];\n\n while ((t = nextToken()) !== null) {\n if (t[0] === '<') {\n if (t[1] === \"/\") {\n // If the closing tag matches, move back up to the parent node.\n if (tagStack.length &&\n tagStack[tagStack.length - 1] === t.substr(2).replace(\">\", \"\")) {\n tagStack.pop();\n current = current.parentNode;\n }\n // Otherwise just ignore the end tag.\n continue;\n }\n var ts = parseTimeStamp(t.substr(1, t.length - 2));\n var node;\n if (ts) {\n // Timestamps are lead nodes as well.\n node = window.document.createProcessingInstruction(\"timestamp\", ts);\n current.appendChild(node);\n continue;\n }\n var m = t.match(/^<([^.\\s/0-9>]+)(\\.[^\\s\\\\>]+)?([^>\\\\]+)?(\\\\?)>?$/);\n // If we can't parse the tag, skip to the next tag.\n if (!m) {\n continue;\n }\n // Try to construct an element, and ignore the tag if we couldn't.\n node = createElement(m[1], m[3]);\n if (!node) {\n continue;\n }\n // Determine if the tag should be added based on the context of where it\n // is placed in the cuetext.\n if (!shouldAdd(current, node)) {\n continue;\n }\n // Set the class list (as a list of classes, separated by space).\n if (m[2]) {\n var classes = m[2].split('.');\n\n classes.forEach(function(cl) {\n var bgColor = /^bg_/.test(cl);\n // slice out `bg_` if it's a background color\n var colorName = bgColor ? cl.slice(3) : cl;\n\n if (DEFAULT_COLOR_CLASS.hasOwnProperty(colorName)) {\n var propName = bgColor ? 'background-color' : 'color';\n var propValue = DEFAULT_COLOR_CLASS[colorName];\n\n node.style[propName] = propValue;\n }\n });\n\n node.className = classes.join(' ');\n }\n // Append the node to the current node, and enter the scope of the new\n // node.\n tagStack.push(m[1]);\n current.appendChild(node);\n current = node;\n continue;\n }\n\n // Text nodes are leaf nodes.\n current.appendChild(window.document.createTextNode(unescape(t)));\n }\n\n return rootDiv;\n}\n\n// This is a list of all the Unicode characters that have a strong\n// right-to-left category. What this means is that these characters are\n// written right-to-left for sure. It was generated by pulling all the strong\n// right-to-left characters out of the Unicode data table. That table can\n// found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\nvar strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6],\n [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d],\n [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6],\n [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5],\n [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815],\n [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858],\n [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f],\n [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c],\n [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1],\n [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc],\n [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808],\n [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855],\n [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f],\n [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13],\n [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58],\n [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72],\n [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f],\n [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32],\n [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42],\n [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f],\n [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59],\n [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62],\n [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77],\n [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b],\n [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]];\n\nfunction isStrongRTLChar(charCode) {\n for (var i = 0; i < strongRTLRanges.length; i++) {\n var currentRange = strongRTLRanges[i];\n if (charCode >= currentRange[0] && charCode <= currentRange[1]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction determineBidi(cueDiv) {\n var nodeStack = [],\n text = \"\",\n charCode;\n\n if (!cueDiv || !cueDiv.childNodes) {\n return \"ltr\";\n }\n\n function pushNodes(nodeStack, node) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n nodeStack.push(node.childNodes[i]);\n }\n }\n\n function nextTextNode(nodeStack) {\n if (!nodeStack || !nodeStack.length) {\n return null;\n }\n\n var node = nodeStack.pop(),\n text = node.textContent || node.innerText;\n if (text) {\n // TODO: This should match all unicode type B characters (paragraph\n // separator characters). See issue #115.\n var m = text.match(/^.*(\\n|\\r)/);\n if (m) {\n nodeStack.length = 0;\n return m[0];\n }\n return text;\n }\n if (node.tagName === \"ruby\") {\n return nextTextNode(nodeStack);\n }\n if (node.childNodes) {\n pushNodes(nodeStack, node);\n return nextTextNode(nodeStack);\n }\n }\n\n pushNodes(nodeStack, cueDiv);\n while ((text = nextTextNode(nodeStack))) {\n for (var i = 0; i < text.length; i++) {\n charCode = text.charCodeAt(i);\n if (isStrongRTLChar(charCode)) {\n return \"rtl\";\n }\n }\n }\n return \"ltr\";\n}\n\nfunction computeLinePos(cue) {\n if (typeof cue.line === \"number\" &&\n (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) {\n return cue.line;\n }\n if (!cue.track || !cue.track.textTrackList ||\n !cue.track.textTrackList.mediaElement) {\n return -1;\n }\n var track = cue.track,\n trackList = track.textTrackList,\n count = 0;\n for (var i = 0; i < trackList.length && trackList[i] !== track; i++) {\n if (trackList[i].mode === \"showing\") {\n count++;\n }\n }\n return ++count * -1;\n}\n\nfunction StyleBox() {\n}\n\n// Apply styles to a div. If there is no div passed then it defaults to the\n// div on 'this'.\nStyleBox.prototype.applyStyles = function(styles, div) {\n div = div || this.div;\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n div.style[prop] = styles[prop];\n }\n }\n};\n\nStyleBox.prototype.formatStyle = function(val, unit) {\n return val === 0 ? 0 : val + unit;\n};\n\n// Constructs the computed display state of the cue (a div). Places the div\n// into the overlay which should be a block level element (usually a div).\nfunction CueStyleBox(window, cue, styleOptions) {\n StyleBox.call(this);\n this.cue = cue;\n\n // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will\n // have inline positioning and will function as the cue background box.\n this.cueDiv = parseContent(window, cue.text);\n var styles = {\n color: \"rgba(255, 255, 255, 1)\",\n backgroundColor: \"rgba(0, 0, 0, 0.8)\",\n position: \"relative\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"inline\",\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\"\n };\n\n this.applyStyles(styles, this.cueDiv);\n\n // Create an absolutely positioned div that will be used to position the cue\n // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS\n // mirrors of them except middle instead of center on Safari.\n this.div = window.document.createElement(\"div\");\n styles = {\n direction: determineBidi(this.cueDiv),\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\",\n textAlign: cue.align === \"middle\" ? \"center\" : cue.align,\n font: styleOptions.font,\n whiteSpace: \"pre-line\",\n position: \"absolute\"\n };\n\n this.applyStyles(styles);\n this.div.appendChild(this.cueDiv);\n\n // Calculate the distance from the reference edge of the viewport to the text\n // position of the cue box. The reference edge will be resolved later when\n // the box orientation styles are applied.\n var textPos = 0;\n switch (cue.positionAlign) {\n case \"start\":\n textPos = cue.position;\n break;\n case \"center\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n textPos = cue.position - cue.size;\n break;\n }\n\n // Horizontal box orientation; textPos is the distance from the left edge of the\n // area to the left edge of the box and cue.size is the distance extending to\n // the right from there.\n if (cue.vertical === \"\") {\n this.applyStyles({\n left: this.formatStyle(textPos, \"%\"),\n width: this.formatStyle(cue.size, \"%\")\n });\n // Vertical box orientation; textPos is the distance from the top edge of the\n // area to the top edge of the box and cue.size is the height extending\n // downwards from there.\n } else {\n this.applyStyles({\n top: this.formatStyle(textPos, \"%\"),\n height: this.formatStyle(cue.size, \"%\")\n });\n }\n\n this.move = function(box) {\n this.applyStyles({\n top: this.formatStyle(box.top, \"px\"),\n bottom: this.formatStyle(box.bottom, \"px\"),\n left: this.formatStyle(box.left, \"px\"),\n right: this.formatStyle(box.right, \"px\"),\n height: this.formatStyle(box.height, \"px\"),\n width: this.formatStyle(box.width, \"px\")\n });\n };\n}\nCueStyleBox.prototype = _objCreate(StyleBox.prototype);\nCueStyleBox.prototype.constructor = CueStyleBox;\n\n// Represents the co-ordinates of an Element in a way that we can easily\n// compute things with such as if it overlaps or intersects with another Element.\n// Can initialize it with either a StyleBox or another BoxPosition.\nfunction BoxPosition(obj) {\n // Either a BoxPosition was passed in and we need to copy it, or a StyleBox\n // was passed in and we need to copy the results of 'getBoundingClientRect'\n // as the object returned is readonly. All co-ordinate values are in reference\n // to the viewport origin (top left).\n var lh, height, width, top;\n if (obj.div) {\n height = obj.div.offsetHeight;\n width = obj.div.offsetWidth;\n top = obj.div.offsetTop;\n\n var rects = (rects = obj.div.childNodes) && (rects = rects[0]) &&\n rects.getClientRects && rects.getClientRects();\n obj = obj.div.getBoundingClientRect();\n // In certain cases the outter div will be slightly larger then the sum of\n // the inner div's lines. This could be due to bold text, etc, on some platforms.\n // In this case we should get the average line height and use that. This will\n // result in the desired behaviour.\n lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length)\n : 0;\n\n }\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top || top;\n this.height = obj.height || height;\n this.bottom = obj.bottom || (top + (obj.height || height));\n this.width = obj.width || width;\n this.lineHeight = lh !== undefined ? lh : obj.lineHeight;\n}\n\n// Move the box along a particular axis. Optionally pass in an amount to move\n// the box. If no amount is passed then the default is the line height of the\n// box.\nBoxPosition.prototype.move = function(axis, toMove) {\n toMove = toMove !== undefined ? toMove : this.lineHeight;\n switch (axis) {\n case \"+x\":\n this.left += toMove;\n this.right += toMove;\n break;\n case \"-x\":\n this.left -= toMove;\n this.right -= toMove;\n break;\n case \"+y\":\n this.top += toMove;\n this.bottom += toMove;\n break;\n case \"-y\":\n this.top -= toMove;\n this.bottom -= toMove;\n break;\n }\n};\n\n// Check if this box overlaps another box, b2.\nBoxPosition.prototype.overlaps = function(b2) {\n return this.left < b2.right &&\n this.right > b2.left &&\n this.top < b2.bottom &&\n this.bottom > b2.top;\n};\n\n// Check if this box overlaps any other boxes in boxes.\nBoxPosition.prototype.overlapsAny = function(boxes) {\n for (var i = 0; i < boxes.length; i++) {\n if (this.overlaps(boxes[i])) {\n return true;\n }\n }\n return false;\n};\n\n// Check if this box is within another box.\nBoxPosition.prototype.within = function(container) {\n return this.top >= container.top &&\n this.bottom <= container.bottom &&\n this.left >= container.left &&\n this.right <= container.right;\n};\n\n// Check if this box is entirely within the container or it is overlapping\n// on the edge opposite of the axis direction passed. For example, if \"+x\" is\n// passed and the box is overlapping on the left edge of the container, then\n// return true.\nBoxPosition.prototype.overlapsOppositeAxis = function(container, axis) {\n switch (axis) {\n case \"+x\":\n return this.left < container.left;\n case \"-x\":\n return this.right > container.right;\n case \"+y\":\n return this.top < container.top;\n case \"-y\":\n return this.bottom > container.bottom;\n }\n};\n\n// Find the percentage of the area that this box is overlapping with another\n// box.\nBoxPosition.prototype.intersectPercentage = function(b2) {\n var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)),\n y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)),\n intersectArea = x * y;\n return intersectArea / (this.height * this.width);\n};\n\n// Convert the positions from this box to CSS compatible positions using\n// the reference container's positions. This has to be done because this\n// box's positions are in reference to the viewport origin, whereas, CSS\n// values are in referecne to their respective edges.\nBoxPosition.prototype.toCSSCompatValues = function(reference) {\n return {\n top: this.top - reference.top,\n bottom: reference.bottom - this.bottom,\n left: this.left - reference.left,\n right: reference.right - this.right,\n height: this.height,\n width: this.width\n };\n};\n\n// Get an object that represents the box's position without anything extra.\n// Can pass a StyleBox, HTMLElement, or another BoxPositon.\nBoxPosition.getSimpleBoxPosition = function(obj) {\n var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0;\n var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0;\n var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0;\n\n obj = obj.div ? obj.div.getBoundingClientRect() :\n obj.tagName ? obj.getBoundingClientRect() : obj;\n var ret = {\n left: obj.left,\n right: obj.right,\n top: obj.top || top,\n height: obj.height || height,\n bottom: obj.bottom || (top + (obj.height || height)),\n width: obj.width || width\n };\n return ret;\n};\n\n// Move a StyleBox to its specified, or next best, position. The containerBox\n// is the box that contains the StyleBox, such as a div. boxPositions are\n// a list of other boxes that the styleBox can't overlap with.\nfunction moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) {\n\n // Find the best position for a cue box, b, on the video. The axis parameter\n // is a list of axis, the order of which, it will move the box along. For example:\n // Passing [\"+x\", \"-x\"] will move the box first along the x axis in the positive\n // direction. If it doesn't find a good position for it there it will then move\n // it along the x axis in the negative direction.\n function findBestPosition(b, axis) {\n var bestPosition,\n specifiedPosition = new BoxPosition(b),\n percentage = 1; // Highest possible so the first thing we get is better.\n\n for (var i = 0; i < axis.length; i++) {\n while (b.overlapsOppositeAxis(containerBox, axis[i]) ||\n (b.within(containerBox) && b.overlapsAny(boxPositions))) {\n b.move(axis[i]);\n }\n // We found a spot where we aren't overlapping anything. This is our\n // best position.\n if (b.within(containerBox)) {\n return b;\n }\n var p = b.intersectPercentage(containerBox);\n // If we're outside the container box less then we were on our last try\n // then remember this position as the best position.\n if (percentage > p) {\n bestPosition = new BoxPosition(b);\n percentage = p;\n }\n // Reset the box position to the specified position.\n b = new BoxPosition(specifiedPosition);\n }\n return bestPosition || specifiedPosition;\n }\n\n var boxPosition = new BoxPosition(styleBox),\n cue = styleBox.cue,\n linePos = computeLinePos(cue),\n axis = [];\n\n // If we have a line number to align the cue to.\n if (cue.snapToLines) {\n var size;\n switch (cue.vertical) {\n case \"\":\n axis = [ \"+y\", \"-y\" ];\n size = \"height\";\n break;\n case \"rl\":\n axis = [ \"+x\", \"-x\" ];\n size = \"width\";\n break;\n case \"lr\":\n axis = [ \"-x\", \"+x\" ];\n size = \"width\";\n break;\n }\n\n var step = boxPosition.lineHeight,\n position = step * Math.round(linePos),\n maxPosition = containerBox[size] + step,\n initialAxis = axis[0];\n\n // If the specified intial position is greater then the max position then\n // clamp the box to the amount of steps it would take for the box to\n // reach the max position.\n if (Math.abs(position) > maxPosition) {\n position = position < 0 ? -1 : 1;\n position *= Math.ceil(maxPosition / step) * step;\n }\n\n // If computed line position returns negative then line numbers are\n // relative to the bottom of the video instead of the top. Therefore, we\n // need to increase our initial position by the length or width of the\n // video, depending on the writing direction, and reverse our axis directions.\n if (linePos < 0) {\n position += cue.vertical === \"\" ? containerBox.height : containerBox.width;\n axis = axis.reverse();\n }\n\n // Move the box to the specified position. This may not be its best\n // position.\n boxPosition.move(initialAxis, position);\n\n } else {\n // If we have a percentage line value for the cue.\n var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100;\n\n switch (cue.lineAlign) {\n case \"center\":\n linePos -= (calculatedPercentage / 2);\n break;\n case \"end\":\n linePos -= calculatedPercentage;\n break;\n }\n\n // Apply initial line position to the cue box.\n switch (cue.vertical) {\n case \"\":\n styleBox.applyStyles({\n top: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"rl\":\n styleBox.applyStyles({\n left: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"lr\":\n styleBox.applyStyles({\n right: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n }\n\n axis = [ \"+y\", \"-x\", \"+x\", \"-y\" ];\n\n // Get the box position again after we've applied the specified positioning\n // to it.\n boxPosition = new BoxPosition(styleBox);\n }\n\n var bestPosition = findBestPosition(boxPosition, axis);\n styleBox.move(bestPosition.toCSSCompatValues(containerBox));\n}\n\nfunction WebVTT() {\n // Nothing\n}\n\n// Helper to allow strings to be decoded instead of the default binary utf8 data.\nWebVTT.StringDecoder = function() {\n return {\n decode: function(data) {\n if (!data) {\n return \"\";\n }\n if (typeof data !== \"string\") {\n throw new Error(\"Error - expected string data.\");\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n};\n\nWebVTT.convertCueToDOMTree = function(window, cuetext) {\n if (!window || !cuetext) {\n return null;\n }\n return parseContent(window, cuetext);\n};\n\nvar FONT_SIZE_PERCENT = 0.05;\nvar FONT_STYLE = \"sans-serif\";\nvar CUE_BACKGROUND_PADDING = \"1.5%\";\n\n// Runs the processing model over the cues and regions passed to it.\n// @param overlay A block level element (usually a div) that the computed cues\n// and regions will be placed into.\nWebVTT.processCues = function(window, cues, overlay) {\n if (!window || !cues || !overlay) {\n return null;\n }\n\n // Remove all previous children.\n while (overlay.firstChild) {\n overlay.removeChild(overlay.firstChild);\n }\n\n var paddedOverlay = window.document.createElement(\"div\");\n paddedOverlay.style.position = \"absolute\";\n paddedOverlay.style.left = \"0\";\n paddedOverlay.style.right = \"0\";\n paddedOverlay.style.top = \"0\";\n paddedOverlay.style.bottom = \"0\";\n paddedOverlay.style.margin = CUE_BACKGROUND_PADDING;\n overlay.appendChild(paddedOverlay);\n\n // Determine if we need to compute the display states of the cues. This could\n // be the case if a cue's state has been changed since the last computation or\n // if it has not been computed yet.\n function shouldCompute(cues) {\n for (var i = 0; i < cues.length; i++) {\n if (cues[i].hasBeenReset || !cues[i].displayState) {\n return true;\n }\n }\n return false;\n }\n\n // We don't need to recompute the cues' display states. Just reuse them.\n if (!shouldCompute(cues)) {\n for (var i = 0; i < cues.length; i++) {\n paddedOverlay.appendChild(cues[i].displayState);\n }\n return;\n }\n\n var boxPositions = [],\n containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay),\n fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100;\n var styleOptions = {\n font: fontSize + \"px \" + FONT_STYLE\n };\n\n (function() {\n var styleBox, cue;\n\n for (var i = 0; i < cues.length; i++) {\n cue = cues[i];\n\n // Compute the intial position and styles of the cue div.\n styleBox = new CueStyleBox(window, cue, styleOptions);\n paddedOverlay.appendChild(styleBox.div);\n\n // Move the cue div to it's correct line position.\n moveBoxToLinePosition(window, styleBox, containerBox, boxPositions);\n\n // Remember the computed div so that we don't have to recompute it later\n // if we don't have too.\n cue.displayState = styleBox.div;\n\n boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox));\n }\n })();\n};\n\nWebVTT.Parser = function(window, vttjs, decoder) {\n if (!decoder) {\n decoder = vttjs;\n vttjs = {};\n }\n if (!vttjs) {\n vttjs = {};\n }\n\n this.window = window;\n this.vttjs = vttjs;\n this.state = \"INITIAL\";\n this.buffer = \"\";\n this.decoder = decoder || new TextDecoder(\"utf8\");\n this.regionList = [];\n};\n\nWebVTT.Parser.prototype = {\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError: function(e) {\n if (e instanceof ParsingError) {\n this.onparsingerror && this.onparsingerror(e);\n } else {\n throw e;\n }\n },\n parse: function (data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, {stream: true});\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.4 WebVTT region and WebVTT region settings syntax\n function parseRegion(input) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"id\":\n settings.set(k, v);\n break;\n case \"width\":\n settings.percent(k, v);\n break;\n case \"lines\":\n settings.integer(k, v);\n break;\n case \"regionanchor\":\n case \"viewportanchor\":\n var xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n var anchor = new Settings();\n anchor.percent(\"x\", xy[0]);\n anchor.percent(\"y\", xy[1]);\n if (!anchor.has(\"x\") || !anchor.has(\"y\")) {\n break;\n }\n settings.set(k + \"X\", anchor.get(\"x\"));\n settings.set(k + \"Y\", anchor.get(\"y\"));\n break;\n case \"scroll\":\n settings.alt(k, v, [\"up\"]);\n break;\n }\n }, /=/, /\\s/);\n\n // Create the region, using default values for any values that were not\n // specified.\n if (settings.has(\"id\")) {\n var region = new (self.vttjs.VTTRegion || self.window.VTTRegion)();\n region.width = settings.get(\"width\", 100);\n region.lines = settings.get(\"lines\", 3);\n region.regionAnchorX = settings.get(\"regionanchorX\", 0);\n region.regionAnchorY = settings.get(\"regionanchorY\", 100);\n region.viewportAnchorX = settings.get(\"viewportanchorX\", 0);\n region.viewportAnchorY = settings.get(\"viewportanchorY\", 100);\n region.scroll = settings.get(\"scroll\", \"\");\n // Register the region.\n self.onregion && self.onregion(region);\n // Remember the VTTRegion for later in case we parse any VTTCues that\n // reference it.\n self.regionList.push({\n id: settings.get(\"id\"),\n region: region\n });\n }\n }\n\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n function parseTimestampMap(input) {\n var settings = new Settings();\n\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"MPEGT\":\n settings.integer(k + 'S', v);\n break;\n case \"LOCA\":\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n\n self.ontimestampmap && self.ontimestampmap({\n \"MPEGTS\": settings.get(\"MPEGTS\"),\n \"LOCAL\": settings.get(\"LOCAL\")\n });\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"X-TIMESTAMP-MAP\":\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n } else {\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"Region\":\n // 3.3 WebVTT region metadata header syntax\n parseRegion(v);\n break;\n }\n }, /:/);\n }\n\n }\n\n // 5.1 WebVTT file parsing.\n try {\n var line;\n if (self.state === \"INITIAL\") {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n line = collectNextLine();\n\n var m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n\n self.state = \"HEADER\";\n }\n\n var alreadyCollectedLine = false;\n while (self.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (self.state) {\n case \"HEADER\":\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = \"ID\";\n }\n continue;\n case \"NOTE\":\n // Ignore NOTE blocks.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n case \"ID\":\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = \"NOTE\";\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n self.cue = new (self.vttjs.VTTCue || self.window.VTTCue)(0, 0, \"\");\n // Safari still uses the old middle value and won't accept center\n try {\n self.cue.align = \"center\";\n } catch (e) {\n self.cue.align = \"middle\";\n }\n self.state = \"CUE\";\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf(\"-->\") === -1) {\n self.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /*falls through*/\n case \"CUE\":\n // 40 - Collect cue timings and settings.\n try {\n parseCue(line, self.cue, self.regionList);\n } catch (e) {\n self.reportOrThrowError(e);\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = \"BADCUE\";\n continue;\n }\n self.state = \"CUETEXT\";\n continue;\n case \"CUETEXT\":\n var hasSubstring = line.indexOf(\"-->\") !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n self.oncue && self.oncue(self.cue);\n self.cue = null;\n self.state = \"ID\";\n continue;\n }\n if (self.cue.text) {\n self.cue.text += \"\\n\";\n }\n self.cue.text += line.replace(/\\u2028/g, '\\n').replace(/u2029/g, '\\n');\n continue;\n case \"BADCUE\": // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n }\n }\n } catch (e) {\n self.reportOrThrowError(e);\n\n // If we are currently parsing a cue, report what we have.\n if (self.state === \"CUETEXT\" && self.cue && self.oncue) {\n self.oncue(self.cue);\n }\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n }\n return this;\n },\n flush: function () {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === \"HEADER\") {\n self.buffer += \"\\n\\n\";\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === \"INITIAL\") {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n } catch(e) {\n self.reportOrThrowError(e);\n }\n self.onflush && self.onflush();\n return this;\n }\n};\n\nmodule.exports = WebVTT;\n","// see https://tools.ietf.org/html/rfc1808\n\n(function (root) {\n var URL_REGEX =\n /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n\n var URLToolkit = {\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n // E.g\n // With opts.alwaysNormalize = false (default, spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n // With opts.alwaysNormalize = true (not spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n buildAbsoluteURL: function (baseURL, relativeURL, opts) {\n opts = opts || {};\n // remove any remaining space and CRLF\n baseURL = baseURL.trim();\n relativeURL = relativeURL.trim();\n if (!relativeURL) {\n // 2a) If the embedded URL is entirely empty, it inherits the\n // entire base URL (i.e., is set equal to the base URL)\n // and we are done.\n if (!opts.alwaysNormalize) {\n return baseURL;\n }\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n if (!basePartsForNormalise) {\n throw new Error('Error trying to parse base URL.');\n }\n basePartsForNormalise.path = URLToolkit.normalizePath(\n basePartsForNormalise.path\n );\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\n }\n var relativeParts = URLToolkit.parseURL(relativeURL);\n if (!relativeParts) {\n throw new Error('Error trying to parse relative URL.');\n }\n if (relativeParts.scheme) {\n // 2b) If the embedded URL starts with a scheme name, it is\n // interpreted as an absolute URL and we are done.\n if (!opts.alwaysNormalize) {\n return relativeURL;\n }\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n return URLToolkit.buildURLFromParts(relativeParts);\n }\n var baseParts = URLToolkit.parseURL(baseURL);\n if (!baseParts) {\n throw new Error('Error trying to parse base URL.');\n }\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n baseParts.netLoc = pathParts[1];\n baseParts.path = pathParts[2];\n }\n if (baseParts.netLoc && !baseParts.path) {\n baseParts.path = '/';\n }\n var builtParts = {\n // 2c) Otherwise, the embedded URL inherits the scheme of\n // the base URL.\n scheme: baseParts.scheme,\n netLoc: relativeParts.netLoc,\n path: null,\n params: relativeParts.params,\n query: relativeParts.query,\n fragment: relativeParts.fragment,\n };\n if (!relativeParts.netLoc) {\n // 3) If the embedded URL's is non-empty, we skip to\n // Step 7. Otherwise, the embedded URL inherits the \n // (if any) of the base URL.\n builtParts.netLoc = baseParts.netLoc;\n // 4) If the embedded URL path is preceded by a slash \"/\", the\n // path is not relative and we skip to Step 7.\n if (relativeParts.path[0] !== '/') {\n if (!relativeParts.path) {\n // 5) If the embedded URL path is empty (and not preceded by a\n // slash), then the embedded URL inherits the base URL path\n builtParts.path = baseParts.path;\n // 5a) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and\n if (!relativeParts.params) {\n builtParts.params = baseParts.params;\n // 5b) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and we skip to step 7.\n if (!relativeParts.query) {\n builtParts.query = baseParts.query;\n }\n }\n } else {\n // 6) The last segment of the base URL's path (anything\n // following the rightmost slash \"/\", or the entire path if no\n // slash is present) is removed and the embedded URL's path is\n // appended in its place.\n var baseURLPath = baseParts.path;\n var newPath =\n baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\n relativeParts.path;\n builtParts.path = URLToolkit.normalizePath(newPath);\n }\n }\n }\n if (builtParts.path === null) {\n builtParts.path = opts.alwaysNormalize\n ? URLToolkit.normalizePath(relativeParts.path)\n : relativeParts.path;\n }\n return URLToolkit.buildURLFromParts(builtParts);\n },\n parseURL: function (url) {\n var parts = URL_REGEX.exec(url);\n if (!parts) {\n return null;\n }\n return {\n scheme: parts[1] || '',\n netLoc: parts[2] || '',\n path: parts[3] || '',\n params: parts[4] || '',\n query: parts[5] || '',\n fragment: parts[6] || '',\n };\n },\n normalizePath: function (path) {\n // The following operations are\n // then applied, in order, to the new path:\n // 6a) All occurrences of \"./\", where \".\" is a complete path\n // segment, are removed.\n // 6b) If the path ends with \".\" as a complete path segment,\n // that \".\" is removed.\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n // 6c) All occurrences of \"/../\", where is a\n // complete path segment not equal to \"..\", are removed.\n // Removal of these path segments is performed iteratively,\n // removing the leftmost matching pattern on each iteration,\n // until no matching pattern remains.\n // 6d) If the path ends with \"/..\", where is a\n // complete path segment not equal to \"..\", that\n // \"/..\" is removed.\n while (\n path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\n ) {}\n return path.split('').reverse().join('');\n },\n buildURLFromParts: function (parts) {\n return (\n parts.scheme +\n parts.netLoc +\n parts.path +\n parts.params +\n parts.query +\n parts.fragment\n );\n },\n };\n\n if (typeof exports === 'object' && typeof module === 'object')\n module.exports = URLToolkit;\n else if (typeof define === 'function' && define.amd)\n define([], function () {\n return URLToolkit;\n });\n else if (typeof exports === 'object') exports['URLToolkit'] = URLToolkit;\n else root['URLToolkit'] = URLToolkit;\n})(this);\n","/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\nexport { Stream as default };","/*! @name m3u8-parser @version 4.7.1 @license Apache-2.0 */\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport Stream from '@videojs/vhs-utils/es/stream.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array.js';\n\n/**\n * A stream that buffers string input and generates a `data` event for each\n * line.\n *\n * @class LineStream\n * @extends Stream\n */\n\nvar LineStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(LineStream, _Stream);\n\n function LineStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.buffer = '';\n return _this;\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n var _proto = LineStream.prototype;\n\n _proto.push = function push(data) {\n var nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n };\n\n return LineStream;\n}(Stream);\n\nvar TAB = String.fromCharCode(0x09);\n\nvar parseByterange = function parseByterange(byterangeString) {\n // optionally match and capture 0+ digits before `@`\n // optionally match and capture 0+ digits after `@`\n var match = /([0-9.]*)?@?([0-9.]*)?/.exec(byterangeString || '');\n var result = {};\n\n if (match[1]) {\n result.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n result.offset = parseInt(match[2], 10);\n }\n\n return result;\n};\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\n */\n\n\nvar attributeSeparator = function attributeSeparator() {\n var key = '[^=]*';\n var value = '\"[^\"]*\"|[^,]*';\n var keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\n * Parse attributes from a line given the separator\n *\n * @param {string} attributes the attribute line to parse\n */\n\n\nvar parseAttributes = function parseAttributes(attributes) {\n // split the string using attributes as the separator\n var attrs = attributes.split(attributeSeparator());\n var result = {};\n var i = attrs.length;\n var attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\n * A line-level M3U8 parser event stream. It expects to receive input one\n * line at a time and performs a context-free parse of its contents. A stream\n * interpretation of a manifest can be useful if the manifest is expected to\n * be too large to fit comfortably into memory or the entirety of the input\n * is not immediately available. Otherwise, it's probably much easier to work\n * with a regular `Parser` object.\n *\n * Produces `data` events with an object that captures the parser's\n * interpretation of the input. That object has a property `tag` that is one\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\n * property, `line`, which captures the entirety of the input without\n * interpretation. Comments similarly have a single additional property\n * `text` which is the input without the leading `#`.\n *\n * Tags always have a property `tagType` which is the lower-cased version of\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\n * tags are given the tag type `unknown` and a single additional property\n * `data` with the remainder of the input.\n *\n * @class ParseStream\n * @extends Stream\n */\n\n\nvar ParseStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(ParseStream, _Stream);\n\n function ParseStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.customParsers = [];\n _this.tagMappers = [];\n return _this;\n }\n /**\n * Parses an additional line of input.\n *\n * @param {string} line a single line of an M3U8 file to parse\n */\n\n\n var _proto = ParseStream.prototype;\n\n _proto.push = function push(line) {\n var _this2 = this;\n\n var match;\n var event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n var newLines = this.tagMappers.reduce(function (acc, mapper) {\n var mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(function (newLine) {\n for (var i = 0; i < _this2.customParsers.length; i++) {\n if (_this2.customParsers[i].call(_this2, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n _this2.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n\n return;\n }\n\n match = /^#EXTINF:?([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = _extends(parseByterange(match[1]), {\n type: 'tag',\n tagType: 'byterange'\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MAP:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n var attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n event.byterange = parseByterange(attributes.BYTERANGE);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n var split = event.attributes.RESOLUTION.split('x');\n var resolution = {};\n\n if (split[0]) {\n resolution.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n resolution.height = parseInt(split[1], 10);\n }\n\n event.attributes.RESOLUTION = resolution;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-KEY:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-START:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-SKIP:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'skip'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.hasOwnProperty('SKIPPED-SEGMENTS')) {\n event.attributes['SKIPPED-SEGMENTS'] = parseInt(event.attributes['SKIPPED-SEGMENTS'], 10);\n }\n\n if (event.attributes.hasOwnProperty('RECENTLY-REMOVED-DATERANGES')) {\n event.attributes['RECENTLY-REMOVED-DATERANGES'] = event.attributes['RECENTLY-REMOVED-DATERANGES'].split(TAB);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PART:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part'\n };\n event.attributes = parseAttributes(match[1]);\n ['DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['INDEPENDENT', 'GAP'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n if (event.attributes.hasOwnProperty('BYTERANGE')) {\n event.attributes.byterange = parseByterange(event.attributes.BYTERANGE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-SERVER-CONTROL:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'server-control'\n };\n event.attributes = parseAttributes(match[1]);\n ['CAN-SKIP-UNTIL', 'PART-HOLD-BACK', 'HOLD-BACK'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['CAN-SKIP-DATERANGES', 'CAN-BLOCK-RELOAD'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PART-INF:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part-inf'\n };\n event.attributes = parseAttributes(match[1]);\n ['PART-TARGET'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PRELOAD-HINT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'preload-hint'\n };\n event.attributes = parseAttributes(match[1]);\n ['BYTERANGE-START', 'BYTERANGE-LENGTH'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n var subkey = key === 'BYTERANGE-LENGTH' ? 'length' : 'offset';\n event.attributes.byterange = event.attributes.byterange || {};\n event.attributes.byterange[subkey] = event.attributes[key]; // only keep the parsed byterange object.\n\n delete event.attributes[key];\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-RENDITION-REPORT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'rendition-report'\n };\n event.attributes = parseAttributes(match[1]);\n ['LAST-MSN', 'LAST-PART'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n } // unknown tag type\n\n\n _this2.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\n * Add a parser for custom headers\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(_ref) {\n var _this3 = this;\n\n var expression = _ref.expression,\n customType = _ref.customType,\n dataParser = _ref.dataParser,\n segment = _ref.segment;\n\n if (typeof dataParser !== 'function') {\n dataParser = function dataParser(line) {\n return line;\n };\n }\n\n this.customParsers.push(function (line) {\n var match = expression.exec(line);\n\n if (match) {\n _this3.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType: customType,\n segment: segment\n });\n\n return true;\n }\n });\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(_ref2) {\n var expression = _ref2.expression,\n map = _ref2.map;\n\n var mapFn = function mapFn(line) {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n };\n\n return ParseStream;\n}(Stream);\n\nvar camelCase = function camelCase(str) {\n return str.toLowerCase().replace(/-(\\w)/g, function (a) {\n return a[1].toUpperCase();\n });\n};\n\nvar camelCaseKeys = function camelCaseKeys(attributes) {\n var result = {};\n Object.keys(attributes).forEach(function (key) {\n result[camelCase(key)] = attributes[key];\n });\n return result;\n}; // set SERVER-CONTROL hold back based upon targetDuration and partTargetDuration\n// we need this helper because defaults are based upon targetDuration and\n// partTargetDuration being set, but they may not be if SERVER-CONTROL appears before\n// target durations are set.\n\n\nvar setHoldBack = function setHoldBack(manifest) {\n var serverControl = manifest.serverControl,\n targetDuration = manifest.targetDuration,\n partTargetDuration = manifest.partTargetDuration;\n\n if (!serverControl) {\n return;\n }\n\n var tag = '#EXT-X-SERVER-CONTROL';\n var hb = 'holdBack';\n var phb = 'partHoldBack';\n var minTargetDuration = targetDuration && targetDuration * 3;\n var minPartDuration = partTargetDuration && partTargetDuration * 2;\n\n if (targetDuration && !serverControl.hasOwnProperty(hb)) {\n serverControl[hb] = minTargetDuration;\n this.trigger('info', {\n message: tag + \" defaulting HOLD-BACK to targetDuration * 3 (\" + minTargetDuration + \").\"\n });\n }\n\n if (minTargetDuration && serverControl[hb] < minTargetDuration) {\n this.trigger('warn', {\n message: tag + \" clamping HOLD-BACK (\" + serverControl[hb] + \") to targetDuration * 3 (\" + minTargetDuration + \")\"\n });\n serverControl[hb] = minTargetDuration;\n } // default no part hold back to part target duration * 3\n\n\n if (partTargetDuration && !serverControl.hasOwnProperty(phb)) {\n serverControl[phb] = partTargetDuration * 3;\n this.trigger('info', {\n message: tag + \" defaulting PART-HOLD-BACK to partTargetDuration * 3 (\" + serverControl[phb] + \").\"\n });\n } // if part hold back is too small default it to part target duration * 2\n\n\n if (partTargetDuration && serverControl[phb] < minPartDuration) {\n this.trigger('warn', {\n message: tag + \" clamping PART-HOLD-BACK (\" + serverControl[phb] + \") to partTargetDuration * 2 (\" + minPartDuration + \").\"\n });\n serverControl[phb] = minPartDuration;\n }\n};\n/**\n * A parser for M3U8 files. The current interpretation of the input is\n * exposed as a property `manifest` on parser objects. It's just two lines to\n * create and parse a manifest once you have the contents available as a string:\n *\n * ```js\n * var parser = new m3u8.Parser();\n * parser.push(xhr.responseText);\n * ```\n *\n * New input can later be applied to update the manifest object by calling\n * `push` again.\n *\n * The parser attempts to create a usable manifest object even if the\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\n * events during the parse if it encounters input that seems invalid or\n * requires some property of the manifest object to be defaulted.\n *\n * @class Parser\n * @extends Stream\n */\n\n\nvar Parser = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(Parser, _Stream);\n\n function Parser() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.lineStream = new LineStream();\n _this.parseStream = new ParseStream();\n\n _this.lineStream.pipe(_this.parseStream);\n /* eslint-disable consistent-this */\n\n\n var self = _assertThisInitialized(_this);\n /* eslint-enable consistent-this */\n\n\n var uris = [];\n var currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n var currentMap; // if specified, the active decryption key\n\n var _key;\n\n var hasParts = false;\n\n var noop = function noop() {};\n\n var defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n var widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n var currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n _this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: []\n }; // keep track of the last seen segment's byte range end, as segments are not required\n // to provide the offset, in which case it defaults to the next byte after the\n // previous segment\n\n var lastByterangeEnd = 0; // keep track of the last seen part's byte range end.\n\n var lastPartByterangeEnd = 0;\n\n _this.on('end', function () {\n // only add preloadSegment if we don't yet have a uri for it.\n // and we actually have parts/preloadHints\n if (currentUri.uri || !currentUri.parts && !currentUri.preloadHints) {\n return;\n }\n\n if (!currentUri.map && currentMap) {\n currentUri.map = currentMap;\n }\n\n if (!currentUri.key && _key) {\n currentUri.key = _key;\n }\n\n if (!currentUri.timeline && typeof currentTimeline === 'number') {\n currentUri.timeline = currentTimeline;\n }\n\n _this.manifest.preloadSegment = currentUri;\n }); // update the manifest with the m3u8 entry from the parse stream\n\n\n _this.parseStream.on('data', function (entry) {\n var mediaGroup;\n var rendition;\n ({\n tag: function tag() {\n // switch based on the tag type\n (({\n version: function version() {\n if (entry.version) {\n this.manifest.version = entry.version;\n }\n },\n 'allow-cache': function allowCache() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n byterange: function byterange() {\n var byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n /*\n * From the latest spec (as of this writing):\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.2.2\n *\n * Same text since EXT-X-BYTERANGE's introduction in draft 7:\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-07#section-3.3.1)\n *\n * \"If o [offset] is not present, the sub-range begins at the next byte\n * following the sub-range of the previous media segment.\"\n */\n entry.offset = lastByterangeEnd;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n\n lastByterangeEnd = byterange.offset + byterange.length;\n },\n endlist: function endlist() {\n this.manifest.endList = true;\n },\n inf: function inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n key: function key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n _key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.apple.streamingkeydelivery') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.apple.fps.1_0'] = {\n attributes: entry.attributes\n };\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.microsoft.playready') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.microsoft.playready'] = {\n uri: entry.attributes.URI\n };\n return;\n } // check if the content is encrypted for Widevine\n // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf\n\n\n if (entry.attributes.KEYFORMAT === widevineUuid) {\n var VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'];\n\n if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) {\n this.trigger('warn', {\n message: 'invalid key method provided for Widevine'\n });\n return;\n }\n\n if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') {\n this.trigger('warn', {\n message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'\n });\n }\n\n if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') {\n this.trigger('warn', {\n message: 'invalid key URI provided for Widevine'\n });\n return;\n }\n\n if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) {\n this.trigger('warn', {\n message: 'invalid key ID provided for Widevine'\n });\n return;\n } // if Widevine key attributes are valid, store them as `contentProtection`\n // on the manifest to emulate Widevine tag structure in a DASH mpd\n\n\n this.manifest.contentProtection = this.manifest.contentProtection || {};\n this.manifest.contentProtection['com.widevine.alpha'] = {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: decodeB64ToUint8Array(entry.attributes.URI.split(',')[1])\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n _key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n _key.iv = entry.attributes.IV;\n }\n },\n 'media-sequence': function mediaSequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n 'discontinuity-sequence': function discontinuitySequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n 'playlist-type': function playlistType() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n map: function map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n\n if (_key) {\n currentMap.key = _key;\n }\n },\n 'stream-inf': function streamInf() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n _extends(currentUri.attributes, entry.attributes);\n },\n media: function media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n var mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n discontinuity: function discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n 'program-date-time': function programDateTime() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n },\n targetduration: function targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n setHoldBack.call(this, this.manifest);\n },\n start: function start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n 'cue-out': function cueOut() {\n currentUri.cueOut = entry.data;\n },\n 'cue-out-cont': function cueOutCont() {\n currentUri.cueOutCont = entry.data;\n },\n 'cue-in': function cueIn() {\n currentUri.cueIn = entry.data;\n },\n 'skip': function skip() {\n this.manifest.skip = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-SKIP', entry.attributes, ['SKIPPED-SEGMENTS']);\n },\n 'part': function part() {\n var _this2 = this;\n\n hasParts = true; // parts are always specifed before a segment\n\n var segmentIndex = this.manifest.segments.length;\n var part = camelCaseKeys(entry.attributes);\n currentUri.parts = currentUri.parts || [];\n currentUri.parts.push(part);\n\n if (part.byterange) {\n if (!part.byterange.hasOwnProperty('offset')) {\n part.byterange.offset = lastPartByterangeEnd;\n }\n\n lastPartByterangeEnd = part.byterange.offset + part.byterange.length;\n }\n\n var partIndex = currentUri.parts.length - 1;\n this.warnOnMissingAttributes_(\"#EXT-X-PART #\" + partIndex + \" for segment #\" + segmentIndex, entry.attributes, ['URI', 'DURATION']);\n\n if (this.manifest.renditionReports) {\n this.manifest.renditionReports.forEach(function (r, i) {\n if (!r.hasOwnProperty('lastPart')) {\n _this2.trigger('warn', {\n message: \"#EXT-X-RENDITION-REPORT #\" + i + \" lacks required attribute(s): LAST-PART\"\n });\n }\n });\n }\n },\n 'server-control': function serverControl() {\n var attrs = this.manifest.serverControl = camelCaseKeys(entry.attributes);\n\n if (!attrs.hasOwnProperty('canBlockReload')) {\n attrs.canBlockReload = false;\n this.trigger('info', {\n message: '#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false'\n });\n }\n\n setHoldBack.call(this, this.manifest);\n\n if (attrs.canSkipDateranges && !attrs.hasOwnProperty('canSkipUntil')) {\n this.trigger('warn', {\n message: '#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set'\n });\n }\n },\n 'preload-hint': function preloadHint() {\n // parts are always specifed before a segment\n var segmentIndex = this.manifest.segments.length;\n var hint = camelCaseKeys(entry.attributes);\n var isPart = hint.type && hint.type === 'PART';\n currentUri.preloadHints = currentUri.preloadHints || [];\n currentUri.preloadHints.push(hint);\n\n if (hint.byterange) {\n if (!hint.byterange.hasOwnProperty('offset')) {\n // use last part byterange end or zero if not a part.\n hint.byterange.offset = isPart ? lastPartByterangeEnd : 0;\n\n if (isPart) {\n lastPartByterangeEnd = hint.byterange.offset + hint.byterange.length;\n }\n }\n }\n\n var index = currentUri.preloadHints.length - 1;\n this.warnOnMissingAttributes_(\"#EXT-X-PRELOAD-HINT #\" + index + \" for segment #\" + segmentIndex, entry.attributes, ['TYPE', 'URI']);\n\n if (!hint.type) {\n return;\n } // search through all preload hints except for the current one for\n // a duplicate type.\n\n\n for (var i = 0; i < currentUri.preloadHints.length - 1; i++) {\n var otherHint = currentUri.preloadHints[i];\n\n if (!otherHint.type) {\n continue;\n }\n\n if (otherHint.type === hint.type) {\n this.trigger('warn', {\n message: \"#EXT-X-PRELOAD-HINT #\" + index + \" for segment #\" + segmentIndex + \" has the same TYPE \" + hint.type + \" as preload hint #\" + i\n });\n }\n }\n },\n 'rendition-report': function renditionReport() {\n var report = camelCaseKeys(entry.attributes);\n this.manifest.renditionReports = this.manifest.renditionReports || [];\n this.manifest.renditionReports.push(report);\n var index = this.manifest.renditionReports.length - 1;\n var required = ['LAST-MSN', 'URI'];\n\n if (hasParts) {\n required.push('LAST-PART');\n }\n\n this.warnOnMissingAttributes_(\"#EXT-X-RENDITION-REPORT #\" + index, entry.attributes, required);\n },\n 'part-inf': function partInf() {\n this.manifest.partInf = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-PART-INF', entry.attributes, ['PART-TARGET']);\n\n if (this.manifest.partInf.partTarget) {\n this.manifest.partTargetDuration = this.manifest.partInf.partTarget;\n }\n\n setHoldBack.call(this, this.manifest);\n }\n })[entry.tagType] || noop).call(self);\n },\n uri: function uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (_key) {\n currentUri.key = _key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // reset the last byterange end as it needs to be 0 between parts\n\n\n lastPartByterangeEnd = 0; // prepare for the next URI\n\n currentUri = {};\n },\n comment: function comment() {// comments are not important for playback\n },\n custom: function custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n })[entry.type].call(self);\n });\n\n return _this;\n }\n\n var _proto = Parser.prototype;\n\n _proto.warnOnMissingAttributes_ = function warnOnMissingAttributes_(identifier, attributes, required) {\n var missing = [];\n required.forEach(function (key) {\n if (!attributes.hasOwnProperty(key)) {\n missing.push(key);\n }\n });\n\n if (missing.length) {\n this.trigger('warn', {\n message: identifier + \" lacks required attribute(s): \" + missing.join(', ')\n });\n }\n }\n /**\n * Parse the input string and update the manifest object.\n *\n * @param {string} chunk a potentially incomplete portion of the manifest\n */\n ;\n\n _proto.push = function push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\n * Flush any remaining input. This can be handy if the last line of an M3U8\n * manifest did not contain a trailing newline but the file has been\n * completely received.\n */\n ;\n\n _proto.end = function end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n this.trigger('end');\n }\n /**\n * Add an additional parser for non-standard tags\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.type the type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n };\n\n return Parser;\n}(Stream);\n\nexport { LineStream, ParseStream, Parser };\n","import window from 'global/window'; // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2));\n\nvar repeat = function repeat(str, len) {\n var acc = '';\n\n while (len--) {\n acc += str;\n }\n\n return acc;\n}; // count the number of bits it would take to represent a number\n// we used to do this with log2 but BigInt does not support builtin math\n// Math.ceil(log2(x));\n\n\nexport var countBits = function countBits(x) {\n return x.toString(2).length;\n}; // count the number of whole bytes it would take to represent a number\n\nexport var countBytes = function countBytes(x) {\n return Math.ceil(countBits(x) / 8);\n};\nexport var padStart = function padStart(b, len, str) {\n if (str === void 0) {\n str = ' ';\n }\n\n return (repeat(str, len) + b.toString()).slice(-len);\n};\nexport var isArrayBufferView = function isArrayBufferView(obj) {\n if (ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(obj);\n }\n\n return obj && obj.buffer instanceof ArrayBuffer;\n};\nexport var isTypedArray = function isTypedArray(obj) {\n return isArrayBufferView(obj);\n};\nexport var toUint8 = function toUint8(bytes) {\n if (bytes instanceof Uint8Array) {\n return bytes;\n }\n\n if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) {\n // any non-number or NaN leads to empty uint8array\n // eslint-disable-next-line\n if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) {\n bytes = 0;\n } else {\n bytes = [bytes];\n }\n }\n\n return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0);\n};\nexport var toHexString = function toHexString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(16), 2, '0');\n }\n\n return str;\n};\nexport var toBinaryString = function toBinaryString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(2), 8, '0');\n }\n\n return str;\n};\nvar BigInt = window.BigInt || Number;\nvar BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\nexport var ENDIANNESS = function () {\n var a = new Uint16Array([0xFFCC]);\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n\n if (b[0] === 0xFF) {\n return 'big';\n }\n\n if (b[0] === 0xCC) {\n return 'little';\n }\n\n return 'unknown';\n}();\nexport var IS_BIG_ENDIAN = ENDIANNESS === 'big';\nexport var IS_LITTLE_ENDIAN = ENDIANNESS === 'little';\nexport var bytesToNumber = function bytesToNumber(bytes, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$signed = _ref.signed,\n signed = _ref$signed === void 0 ? false : _ref$signed,\n _ref$le = _ref.le,\n le = _ref$le === void 0 ? false : _ref$le;\n\n bytes = toUint8(bytes);\n var fn = le ? 'reduce' : 'reduceRight';\n var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn];\n var number = obj.call(bytes, function (total, byte, i) {\n var exponent = le ? i : Math.abs(i + 1 - bytes.length);\n return total + BigInt(byte) * BYTE_TABLE[exponent];\n }, BigInt(0));\n\n if (signed) {\n var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1);\n number = BigInt(number);\n\n if (number > max) {\n number -= max;\n number -= max;\n number -= BigInt(2);\n }\n }\n\n return Number(number);\n};\nexport var numberToBytes = function numberToBytes(number, _temp2) {\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$le = _ref2.le,\n le = _ref2$le === void 0 ? false : _ref2$le;\n\n // eslint-disable-next-line\n if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) {\n number = 0;\n }\n\n number = BigInt(number);\n var byteCount = countBytes(number);\n var bytes = new Uint8Array(new ArrayBuffer(byteCount));\n\n for (var i = 0; i < byteCount; i++) {\n var byteIndex = le ? i : Math.abs(i + 1 - bytes.length);\n bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF));\n\n if (number < 0) {\n bytes[byteIndex] = Math.abs(~bytes[byteIndex]);\n bytes[byteIndex] -= i === 0 ? 1 : 2;\n }\n }\n\n return bytes;\n};\nexport var bytesToString = function bytesToString(bytes) {\n if (!bytes) {\n return '';\n } // TODO: should toUint8 handle cases where we only have 8 bytes\n // but report more since this is a Uint16+ Array?\n\n\n bytes = Array.prototype.slice.call(bytes);\n var string = String.fromCharCode.apply(null, toUint8(bytes));\n\n try {\n return decodeURIComponent(escape(string));\n } catch (e) {// if decodeURIComponent/escape fails, we are dealing with partial\n // or full non string data. Just return the potentially garbled string.\n }\n\n return string;\n};\nexport var stringToBytes = function stringToBytes(string, stringIsBytes) {\n if (typeof string !== 'string' && string && typeof string.toString === 'function') {\n string = string.toString();\n }\n\n if (typeof string !== 'string') {\n return new Uint8Array();\n } // If the string already is bytes, we don't have to do this\n // otherwise we do this so that we split multi length characters\n // into individual bytes\n\n\n if (!stringIsBytes) {\n string = unescape(encodeURIComponent(string));\n }\n\n var view = new Uint8Array(string.length);\n\n for (var i = 0; i < string.length; i++) {\n view[i] = string.charCodeAt(i);\n }\n\n return view;\n};\nexport var concatTypedArrays = function concatTypedArrays() {\n for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {\n buffers[_key] = arguments[_key];\n }\n\n buffers = buffers.filter(function (b) {\n return b && (b.byteLength || b.length) && typeof b !== 'string';\n });\n\n if (buffers.length <= 1) {\n // for 0 length we will return empty uint8\n // for 1 length we return the first uint8\n return toUint8(buffers[0]);\n }\n\n var totalLen = buffers.reduce(function (total, buf, i) {\n return total + (buf.byteLength || buf.length);\n }, 0);\n var tempBuffer = new Uint8Array(totalLen);\n var offset = 0;\n buffers.forEach(function (buf) {\n buf = toUint8(buf);\n tempBuffer.set(buf, offset);\n offset += buf.byteLength;\n });\n return tempBuffer;\n};\n/**\n * Check if the bytes \"b\" are contained within bytes \"a\".\n *\n * @param {Uint8Array|Array} a\n * Bytes to check in\n *\n * @param {Uint8Array|Array} b\n * Bytes to check for\n *\n * @param {Object} options\n * options\n *\n * @param {Array|Uint8Array} [offset=0]\n * offset to use when looking at bytes in a\n *\n * @param {Array|Uint8Array} [mask=[]]\n * mask to use on bytes before comparison.\n *\n * @return {boolean}\n * If all bytes in b are inside of a, taking into account\n * bit masks.\n */\n\nexport var bytesMatch = function bytesMatch(a, b, _temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n _ref3$offset = _ref3.offset,\n offset = _ref3$offset === void 0 ? 0 : _ref3$offset,\n _ref3$mask = _ref3.mask,\n mask = _ref3$mask === void 0 ? [] : _ref3$mask;\n\n a = toUint8(a);\n b = toUint8(b); // ie 11 does not support uint8 every\n\n var fn = b.every ? b.every : Array.prototype.every;\n return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8\n fn.call(b, function (bByte, i) {\n var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i];\n return bByte === aByte;\n });\n};\nexport var sliceBytes = function sliceBytes(src, start, end) {\n if (Uint8Array.prototype.slice) {\n return Uint8Array.prototype.slice.call(src, start, end);\n }\n\n return new Uint8Array(Array.prototype.slice.call(src, start, end));\n};\nexport var reverseBytes = function reverseBytes(src) {\n if (src.reverse) {\n return src.reverse();\n }\n\n return Array.prototype.reverse.call(src);\n};","// Source: http://jsfiddle.net/vWx8V/\n// http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes\n\n/**\n * Conenience method returns corresponding value for given keyName or keyCode.\n *\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Mixed}\n * @api public\n */\n\nfunction keyCode(searchInput) {\n // Keyboard Events\n if (searchInput && 'object' === typeof searchInput) {\n var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode\n if (hasKeyCode) searchInput = hasKeyCode\n }\n\n // Numbers\n if ('number' === typeof searchInput) return names[searchInput]\n\n // Everything else (cast to string)\n var search = String(searchInput)\n\n // check codes\n var foundNamedKey = codes[search.toLowerCase()]\n if (foundNamedKey) return foundNamedKey\n\n // check aliases\n var foundNamedKey = aliases[search.toLowerCase()]\n if (foundNamedKey) return foundNamedKey\n\n // weird character?\n if (search.length === 1) return search.charCodeAt(0)\n\n return undefined\n}\n\n/**\n * Compares a keyboard event with a given keyCode or keyName.\n *\n * @param {Event} event Keyboard event that should be tested\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Boolean}\n * @api public\n */\nkeyCode.isEventKey = function isEventKey(event, nameOrCode) {\n if (event && 'object' === typeof event) {\n var keyCode = event.which || event.keyCode || event.charCode\n if (keyCode === null || keyCode === undefined) { return false; }\n if (typeof nameOrCode === 'string') {\n // check codes\n var foundNamedKey = codes[nameOrCode.toLowerCase()]\n if (foundNamedKey) { return foundNamedKey === keyCode; }\n \n // check aliases\n var foundNamedKey = aliases[nameOrCode.toLowerCase()]\n if (foundNamedKey) { return foundNamedKey === keyCode; }\n } else if (typeof nameOrCode === 'number') {\n return nameOrCode === keyCode;\n }\n return false;\n }\n}\n\nexports = module.exports = keyCode;\n\n/**\n * Get by name\n *\n * exports.code['enter'] // => 13\n */\n\nvar codes = exports.code = exports.codes = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'ctrl': 17,\n 'alt': 18,\n 'pause/break': 19,\n 'caps lock': 20,\n 'esc': 27,\n 'space': 32,\n 'page up': 33,\n 'page down': 34,\n 'end': 35,\n 'home': 36,\n 'left': 37,\n 'up': 38,\n 'right': 39,\n 'down': 40,\n 'insert': 45,\n 'delete': 46,\n 'command': 91,\n 'left command': 91,\n 'right command': 93,\n 'numpad *': 106,\n 'numpad +': 107,\n 'numpad -': 109,\n 'numpad .': 110,\n 'numpad /': 111,\n 'num lock': 144,\n 'scroll lock': 145,\n 'my computer': 182,\n 'my calculator': 183,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n \"'\": 222\n}\n\n// Helper aliases\n\nvar aliases = exports.aliases = {\n 'windows': 91,\n '⇧': 16,\n '⌥': 18,\n '⌃': 17,\n '⌘': 91,\n 'ctl': 17,\n 'control': 17,\n 'option': 18,\n 'pause': 19,\n 'break': 19,\n 'caps': 20,\n 'return': 13,\n 'escape': 27,\n 'spc': 32,\n 'spacebar': 32,\n 'pgup': 33,\n 'pgdn': 34,\n 'ins': 45,\n 'del': 46,\n 'cmd': 91\n}\n\n/*!\n * Programatically add the following\n */\n\n// lower case chars\nfor (i = 97; i < 123; i++) codes[String.fromCharCode(i)] = i - 32\n\n// numbers\nfor (var i = 48; i < 58; i++) codes[i - 48] = i\n\n// function keys\nfor (i = 1; i < 13; i++) codes['f'+i] = i + 111\n\n// numpad keys\nfor (i = 0; i < 10; i++) codes['numpad '+i] = i + 96\n\n/**\n * Get by code\n *\n * exports.name[13] // => 'Enter'\n */\n\nvar names = exports.names = exports.title = {} // title for backward compat\n\n// Create reverse mapping\nfor (i in codes) names[codes[i]] = i\n\n// Add aliases\nfor (var alias in aliases) {\n codes[alias] = aliases[alias]\n}\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring \nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\t\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif(k in entityMap){\n\t\t\treturn entityMap[k]; \n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\t\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\t\t\t\t\t\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(qname, value, startIndex)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t//console.log(attrName,value,start,p)\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\t//console.dir(el)\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value.replace(/&#?\\w+;/g,entityReplacer), start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute \n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value) \n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\t\t\t\t\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor(prefix in localNSMap){\n\t\t\t\tdomBuilder.endPrefixMapping(prefix) \n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\t\t\t\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i\n * Copyright Brightcove, Inc. \n * Available under Apache License Version 2.0\n * \n *\n * Includes vtt.js \n * Available under Apache License Version 2.0\n * \n */\n\nimport window$1 from 'global/window';\nimport document from 'global/document';\nimport _extends from '@babel/runtime/helpers/extends';\nimport keycode from 'keycode';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport XHR from '@videojs/xhr';\nimport vtt from 'videojs-vtt.js';\nimport _construct from '@babel/runtime/helpers/construct';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport _resolveUrl from '@videojs/vhs-utils/es/resolve-url.js';\nimport { Parser } from 'm3u8-parser';\nimport { browserSupportsCodec, DEFAULT_VIDEO_CODEC, DEFAULT_AUDIO_CODEC, muxerSupportsCodec, parseCodecs, translateLegacyCodec, codecsFromDefault, getMimeForCodec, isAudioCodec } from '@videojs/vhs-utils/es/codecs.js';\nimport { simpleTypeFromSourceType } from '@videojs/vhs-utils/es/media-types.js';\nimport { isArrayBufferView, concatTypedArrays, stringToBytes, toUint8 } from '@videojs/vhs-utils/es/byte-helpers';\nimport { generateSidxKey, parseUTCTiming, parse, addSidxSegmentsToPlaylist } from 'mpd-parser';\nimport parseSidx from 'mux.js/lib/tools/parse-sidx';\nimport { getId3Offset } from '@videojs/vhs-utils/es/id3-helpers';\nimport { detectContainerForBytes, isLikelyFmp4MediaSegment } from '@videojs/vhs-utils/es/containers';\nimport { ONE_SECOND_IN_TS } from 'mux.js/lib/utils/clock';\n\nvar version$5 = \"7.20.3\";\n\n/**\n * An Object that contains lifecycle hooks as keys which point to an array\n * of functions that are run when a lifecycle is triggered\n *\n * @private\n */\nvar hooks_ = {};\n/**\n * Get a list of hooks for a specific lifecycle\n *\n * @param {string} type\n * the lifecyle to get hooks from\n *\n * @param {Function|Function[]} [fn]\n * Optionally add a hook (or hooks) to the lifecycle that your are getting.\n *\n * @return {Array}\n * an array of hooks, or an empty array if there are none.\n */\n\nvar hooks = function hooks(type, fn) {\n hooks_[type] = hooks_[type] || [];\n\n if (fn) {\n hooks_[type] = hooks_[type].concat(fn);\n }\n\n return hooks_[type];\n};\n/**\n * Add a function hook to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\n\n\nvar hook = function hook(type, fn) {\n hooks(type, fn);\n};\n/**\n * Remove a hook from a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle that the function hooked to\n *\n * @param {Function} fn\n * The hooked function to remove\n *\n * @return {boolean}\n * The function that was removed or undef\n */\n\n\nvar removeHook = function removeHook(type, fn) {\n var index = hooks(type).indexOf(fn);\n\n if (index <= -1) {\n return false;\n }\n\n hooks_[type] = hooks_[type].slice();\n hooks_[type].splice(index, 1);\n return true;\n};\n/**\n * Add a function hook that will only run once to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\n\n\nvar hookOnce = function hookOnce(type, fn) {\n hooks(type, [].concat(fn).map(function (original) {\n var wrapper = function wrapper() {\n removeHook(type, wrapper);\n return original.apply(void 0, arguments);\n };\n\n return wrapper;\n }));\n};\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n * @private\n */\n/**\n * Store the browser-specific methods for the fullscreen API.\n *\n * @type {Object}\n * @see [Specification]{@link https://fullscreen.spec.whatwg.org}\n * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js}\n */\n\nvar FullscreenApi = {\n prefixed: true\n}; // browser API methods\n\nvar apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'], // WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen'], // Mozilla\n['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', '-moz-full-screen'], // Microsoft\n['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', '-ms-fullscreen']];\nvar specApi = apiMap[0];\nvar browserApi; // determine the supported set of functions\n\nfor (var 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} // map the browser API names to the spec API names\n\n\nif (browserApi) {\n for (var _i = 0; _i < browserApi.length; _i++) {\n FullscreenApi[specApi[_i]] = browserApi[_i];\n }\n\n FullscreenApi.prefixed = browserApi[0] !== specApi[0];\n}\n\n/**\n * @file create-logger.js\n * @module create-logger\n */\n\nvar history = [];\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} type\n * The name of the console method to use.\n *\n * @param {Array} args\n * The arguments to be passed to the matching console method.\n */\n\nvar LogByTypeFactory = function LogByTypeFactory(name, log) {\n return function (type, level, args) {\n var lvl = log.levels[level];\n var lvlRegExp = new RegExp(\"^(\" + lvl + \")$\");\n\n if (type !== 'log') {\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n } // Add console prefix after adding to history.\n\n\n args.unshift(name + ':'); // Add a clone of the args at this point to history.\n\n if (history) {\n history.push([].concat(args)); // only store 1000 history entries\n\n var splice = history.length - 1000;\n history.splice(0, splice > 0 ? splice : 0);\n } // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n\n\n if (!window$1.console) {\n return;\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 // when the module is executed.\n\n\n var fn = window$1.console[type];\n\n if (!fn && type === 'debug') {\n // Certain browsers don't have support for console.debug. For those, we\n // should default to the closest comparable log.\n fn = window$1.console.info || window$1.console.log;\n } // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n\n\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n\n fn[Array.isArray(args) ? 'apply' : 'call'](window$1.console, args);\n };\n};\n\nfunction createLogger$1(name) {\n // This is the private tracking variable for logging level.\n var level = 'info'; // the curried logByType bound to the specific log and history\n\n var logByType;\n /**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)\n * of our JSDoc template, we cannot properly document this as both a function\n * and a namespace, so its function signature is documented here.\n *\n * #### Arguments\n * ##### *args\n * Mixed[]\n *\n * Any combination of values that could be passed to `console.log()`.\n *\n * #### Return Value\n *\n * `undefined`\n *\n * @namespace\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged.\n */\n\n var log = function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logByType('log', level, args);\n }; // This is the logByType helper that the logging methods below use\n\n\n logByType = LogByTypeFactory(name, log);\n /**\n * Create a new sublogger which chains the old name to the new name.\n *\n * For example, doing `videojs.log.createLogger('player')` and then using that logger will log the following:\n * ```js\n * mylogger('foo');\n * // > VIDEOJS: player: foo\n * ```\n *\n * @param {string} name\n * The name to add call the new logger\n * @return {Object}\n */\n\n log.createLogger = function (subname) {\n return createLogger$1(name + ': ' + subname);\n };\n /**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by Video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\n\n\n log.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n };\n /**\n * Get or set the current logging level.\n *\n * If a string matching a key from {@link module:log.levels} is provided, acts\n * as a setter.\n *\n * @param {string} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n\n log.level = function (lvl) {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error(\"\\\"\" + lvl + \"\\\" in not a valid log level\");\n }\n\n level = lvl;\n }\n\n return level;\n };\n /**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\n\n\n log.history = function () {\n return history ? [].concat(history) : [];\n };\n /**\n * Allows you to filter the history by the given logger name\n *\n * @param {string} fname\n * The name to filter by\n *\n * @return {Array}\n * The filtered list to return\n */\n\n\n log.history.filter = function (fname) {\n return (history || []).filter(function (historyItem) {\n // if the first item in each historyItem includes `fname`, then it's a match\n return new RegExp(\".*\" + fname + \".*\").test(historyItem[0]);\n });\n };\n /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n\n\n log.history.clear = function () {\n if (history) {\n history.length = 0;\n }\n };\n /**\n * Disable history tracking if it is currently enabled.\n */\n\n\n log.history.disable = function () {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n /**\n * Enable history tracking if it is currently disabled.\n */\n\n\n log.history.enable = function () {\n if (history === null) {\n history = [];\n }\n };\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as an error\n */\n\n\n log.error = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return logByType('error', level, args);\n };\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as a warning.\n */\n\n\n log.warn = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return logByType('warn', level, args);\n };\n /**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as debug.\n */\n\n\n log.debug = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return logByType('debug', level, args);\n };\n\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nvar log$1 = createLogger$1('VIDEOJS');\nvar createLogger = log$1.createLogger;\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {Mixed}\n * The new accumulated value.\n */\nvar toString = Object.prototype.toString;\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\n\nvar keys = function keys(object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\n\n\nfunction each(object, fn) {\n keys(object).forEach(function (key) {\n return fn(object[key], key);\n });\n}\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\n\nfunction reduce(object, fn, initial) {\n if (initial === void 0) {\n initial = 0;\n }\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\n\nfunction assign(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return _extends.apply(void 0, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n return target;\n}\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * @file computed-style.js\n * @module computed-style\n */\n/**\n * A safe getComputedStyle.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a\n * null-check to make sure that the player doesn't break in these cases.\n *\n * @function\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n\n if (typeof window$1.getComputedStyle === 'function') {\n var computedStyleValue;\n\n try {\n computedStyleValue = window$1.getComputedStyle(el);\n } catch (e) {\n return '';\n }\n\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n\n return '';\n}\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window$1.navigator && window$1.navigator.userAgent || '';\nvar webkitVersionMap = /AppleWebKit\\/([\\d.]+)/i.exec(USER_AGENT);\nvar appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n/**\n * Whether or not this device is an iPod.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\n/**\n * The detected iOS version - or `null`.\n *\n * @static\n * @const\n * @type {string|null}\n */\n\nvar IOS_VERSION = function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n\n if (match && match[1]) {\n return match[1];\n }\n\n return null;\n}();\n/**\n * Whether or not this is an Android device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\n/**\n * The detected Android version - or `null`.\n *\n * @static\n * @const\n * @type {number|string|null}\n */\n\nvar 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\n if (!match) {\n return null;\n }\n\n var major = match[1] && parseFloat(match[1]);\n var 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 }\n\n return null;\n}();\n/**\n * Whether or not this is a native Android browser.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n/**\n * Whether or not this is Mozilla Firefox.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\n/**\n * Whether or not this is Microsoft Edge.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_EDGE = /Edg/i.test(USER_AGENT);\n/**\n * Whether or not this is Google Chrome.\n *\n * This will also be `true` for Chrome on iOS, which will have different support\n * as it is actually Safari under the hood.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT));\n/**\n * The detected Google Chrome version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar CHROME_VERSION = function () {\n var match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n\n return null;\n}();\n/**\n * The detected Internet Explorer version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar IE_VERSION = function () {\n var result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n var version = result && parseFloat(result[1]);\n\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n\n return version;\n}();\n/**\n * Whether or not this is desktop Safari.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\n/**\n * Whether or not this is a Windows machine.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_WINDOWS = /Windows/i.test(USER_AGENT);\n/**\n * Whether or not this device is touch-enabled.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar TOUCH_ENABLED = Boolean(isReal() && ('ontouchstart' in window$1 || window$1.navigator.maxTouchPoints || window$1.DocumentTouch && window$1.document instanceof window$1.DocumentTouch));\n/**\n * Whether or not this device is an iPad.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT);\n/**\n * Whether or not this device is an iPhone.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\n\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\n/**\n * Whether or not this is an iOS device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n/**\n * Whether or not this is any flavor of Safari - including iOS.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar browser = /*#__PURE__*/Object.freeze({\n __proto__: null,\n IS_IPOD: IS_IPOD,\n IOS_VERSION: IOS_VERSION,\n IS_ANDROID: IS_ANDROID,\n ANDROID_VERSION: ANDROID_VERSION,\n IS_NATIVE_ANDROID: IS_NATIVE_ANDROID,\n IS_FIREFOX: IS_FIREFOX,\n IS_EDGE: IS_EDGE,\n IS_CHROME: IS_CHROME,\n CHROME_VERSION: CHROME_VERSION,\n IE_VERSION: IE_VERSION,\n IS_SAFARI: IS_SAFARI,\n IS_WINDOWS: IS_WINDOWS,\n TOUCH_ENABLED: TOUCH_ENABLED,\n IS_IPAD: IS_IPAD,\n IS_IPHONE: IS_IPHONE,\n IS_IOS: IS_IOS,\n IS_ANY_SAFARI: IS_ANY_SAFARI\n});\n\n/**\n * @file dom.js\n * @module dom\n */\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @private\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * Will be `true` if the string is non-blank, `false` otherwise.\n *\n */\n\nfunction isNonBlankString(str) {\n // we use str.trim as it will trim any whitespace characters\n // from the front or back of non-whitespace characters. aka\n // Any string that contains non-whitespace characters will\n // still contain them after `trim` but whitespace only strings\n // will have a length of 0, failing this check.\n return typeof str === 'string' && Boolean(str.trim());\n}\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @private\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n */\n\n\nfunction throwIfWhitespace(str) {\n // str.indexOf instead of regex because str.indexOf is faster performance wise.\n if (str.indexOf(' ') >= 0) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n/**\n * Produce a regular expression for matching a className within an elements className.\n *\n * @private\n * @param {string} className\n * The className to generate the RegExp for.\n *\n * @return {RegExp}\n * The RegExp that will check for a specific `className` in an elements\n * className.\n */\n\n\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n/**\n * Whether the current DOM interface appears to be real (i.e. not simulated).\n *\n * @return {boolean}\n * Will be `true` if the DOM appears to be real, `false` otherwise.\n */\n\n\nfunction isReal() {\n // Both document and window will never be undefined thanks to `global`.\n return document === window$1.document;\n}\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {Mixed} value\n * The value to check.\n *\n * @return {boolean}\n * Will be `true` if the value is a DOM element, `false` otherwise.\n */\n\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\n/**\n * Determines if the current DOM is embedded in an iframe.\n *\n * @return {boolean}\n * Will be `true` if the DOM is embedded in an iframe, `false`\n * otherwise.\n */\n\nfunction isInFrame() {\n // We need a try/catch here because Safari will throw errors when attempting\n // to get either `parent` or `self`\n try {\n return window$1.parent !== window$1.self;\n } catch (x) {\n return true;\n }\n}\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @private\n * @param {string} method\n * The method to create the query with.\n *\n * @return {Function}\n * The query method\n */\n\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document[method](null);\n }\n\n if (isNonBlankString(context)) {\n context = document.querySelector(context);\n }\n\n var ctx = isEl(context) ? context : document;\n return ctx[method] && ctx[method](selector);\n };\n}\n/**\n * Creates an element and applies properties, attributes, and inserts content.\n *\n * @param {string} [tagName='div']\n * Name of tag to be created.\n *\n * @param {Object} [properties={}]\n * Element properties to be applied.\n *\n * @param {Object} [attributes={}]\n * Element attributes to be applied.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor object.\n *\n * @return {Element}\n * The element that was created.\n */\n\n\nfunction createEl(tagName, properties, attributes, content) {\n if (tagName === void 0) {\n tagName = 'div';\n }\n\n if (properties === void 0) {\n properties = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n var el = document.createElement(tagName);\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName]; // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log$1.warn('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); // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n } else if (propName === 'textContent') {\n textContent(el, val);\n } else if (el[propName] !== val || propName === 'tabIndex') {\n el[propName] = val;\n }\n });\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\n\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n\n return el;\n}\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\n\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n/**\n * Check if an element has a class name.\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * Will be `true` if the element has a class, `false` otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\n\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n\n if (element.classList) {\n return element.classList.contains(classToCheck);\n }\n\n return classRegExp(classToCheck).test(element.className);\n}\n/**\n * Add a class name to an element.\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {string} classToAdd\n * Class name to add.\n *\n * @return {Element}\n * The DOM element with the added class name.\n */\n\nfunction addClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd); // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n/**\n * Remove a class name from an element.\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {string} classToRemove\n * Class name to remove\n *\n * @return {Element}\n * The DOM element with class name removed.\n */\n\nfunction removeClass(element, classToRemove) {\n // Protect in case the player gets disposed\n if (!element) {\n log$1.warn(\"removeClass was called with an element that doesn't exist\");\n return null;\n }\n\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n/**\n * The callback definition for toggleClass.\n *\n * @callback module:dom~PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * If `true` is returned, the `classToToggle` will be added to the\n * `element`. If `false`, the `classToToggle` will be removed from\n * the `element`. If `undefined`, the callback will be ignored.\n */\n\n/**\n * Adds or removes a class name to/from an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled.\n *\n * @param {boolean|module:dom~PredicateCallback} [predicate]\n * See the return value for {@link module:dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\n\nfunction toggleClass(element, classToToggle, predicate) {\n // This CANNOT use `classList` internally because IE11 does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n } // If the necessary class operation matches the current state of the\n // element, no action is required.\n\n\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addClass(element, classToToggle);\n } else {\n removeClass(element, classToToggle);\n }\n\n return element;\n}\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\n\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var 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 * Get an element's attribute values, as defined on the HTML tag.\n *\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element. Boolean attributes will be `true` or\n * `false`, others will be strings.\n */\n\nfunction getAttributes(tag) {\n var obj = {}; // known boolean attributes\n // we can check for matching boolean properties, but not all browsers\n // and not all tags know about these attributes, so, we still want to check them manually\n\n var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n var attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n var attrName = attrs[i].name;\n var attrVal = attrs[i].value; // check for known booleans\n // the matching element property will return a value for typeof\n\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 * Get the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to get the value of.\n *\n * @return {string}\n * The value of the attribute.\n */\n\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n/**\n * Set the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n */\n\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n/**\n * Remove an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to remove.\n */\n\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n/**\n * Attempt to block the ability to select text.\n */\n\nfunction blockTextSelection() {\n document.body.focus();\n\n document.onselectstart = function () {\n return false;\n };\n}\n/**\n * Turn off text selection blocking.\n */\n\nfunction unblockTextSelection() {\n document.onselectstart = function () {\n return true;\n };\n}\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain object - or `undefined` if it cannot.\n */\n\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n var rect = el.getBoundingClientRect();\n var result = {};\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n\n return result;\n }\n}\n/**\n * Represents the position of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left.\n *\n * @property {number} top\n * Pixels from the top.\n */\n\n/**\n * Get the position of an element in the DOM.\n *\n * Uses `getBoundingClientRect` technique from John Resig.\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset.\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\n\nfunction findPosition(el) {\n if (!el || el && !el.offsetParent) {\n return {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n var left = 0;\n var top = 0;\n\n while (el.offsetParent && el !== document[FullscreenApi.fullscreenElement]) {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n }\n\n return {\n left: left,\n top: top,\n width: width,\n height: height\n };\n}\n/**\n * Represents x and y coordinates for a DOM element or mouse pointer.\n *\n * @typedef {Object} module:dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get the pointer position within an element.\n *\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {module:dom~Coordinates}\n * A coordinates object corresponding to the mouse position.\n *\n */\n\nfunction getPointerPosition(el, event) {\n var translated = {\n x: 0,\n y: 0\n };\n\n if (IS_IOS) {\n var item = el;\n\n while (item && item.nodeName.toLowerCase() !== 'html') {\n var transform = computedStyle(item, 'transform');\n\n if (/^matrix/.test(transform)) {\n var values = transform.slice(7, -1).split(/,\\s/).map(Number);\n translated.x += values[4];\n translated.y += values[5];\n } else if (/^matrix3d/.test(transform)) {\n var _values = transform.slice(9, -1).split(/,\\s/).map(Number);\n\n translated.x += _values[12];\n translated.y += _values[13];\n }\n\n item = item.parentNode;\n }\n }\n\n var position = {};\n var boxTarget = findPosition(event.target);\n var box = findPosition(el);\n var boxW = box.width;\n var boxH = box.height;\n var offsetY = event.offsetY - (box.top - boxTarget.top);\n var offsetX = event.offsetX - (box.left - boxTarget.left);\n\n if (event.changedTouches) {\n offsetX = event.changedTouches[0].pageX - box.left;\n offsetY = event.changedTouches[0].pageY + box.top;\n\n if (IS_IOS) {\n offsetX -= translated.x;\n offsetY -= translated.y;\n }\n }\n\n position.y = 1 - Math.max(0, Math.min(1, offsetY / boxH));\n position.x = Math.max(0, Math.min(1, offsetX / boxW));\n return position;\n}\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * Will be `true` if the value is a text node, `false` otherwise.\n */\n\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\n\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n\n return el;\n}\n/**\n * This is a mixed value that describes content to be injected into the DOM\n * via some method. It can be of the following types:\n *\n * Type | Description\n * -----------|-------------\n * `string` | The value will be normalized into a text node.\n * `Element` | The value will be accepted as-is.\n * `TextNode` | The value will be accepted as-is.\n * `Array` | A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored).\n * `Function` | A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes.\n *\n * @typedef {string|Element|TextNode|Array|Function} module:dom~ContentDescriptor\n */\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but helps protect\n * from falling into the trap of simply writing to `innerHTML`, which could\n * be an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Array}\n * All of the content that was passed in, normalized to an array of\n * elements or text nodes.\n */\n\nfunction normalizeContent(content) {\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n } // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n\n\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document.createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with appended normalized content.\n */\n\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with inserted normalized content.\n */\n\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n/**\n * Check if an event was a single left click.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {boolean}\n * Will be `true` if a single left click, `false` otherwise.\n */\n\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n return true;\n }\n\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n return true;\n } // `mouseup` event on a single left click has\n // `button` and `buttons` equal to 0\n\n\n if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n return false;\n }\n\n return true;\n}\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\n\nvar $ = createQuerier('querySelector');\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none\n * were found.\n *\n */\n\nvar $$ = createQuerier('querySelectorAll');\n\nvar Dom = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isReal: isReal,\n isEl: isEl,\n isInFrame: isInFrame,\n createEl: createEl,\n textContent: textContent,\n prependTo: prependTo,\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n toggleClass: toggleClass,\n setAttributes: setAttributes,\n getAttributes: getAttributes,\n getAttribute: getAttribute,\n setAttribute: setAttribute,\n removeAttribute: removeAttribute,\n blockTextSelection: blockTextSelection,\n unblockTextSelection: unblockTextSelection,\n getBoundingClientRect: getBoundingClientRect,\n findPosition: findPosition,\n getPointerPosition: getPointerPosition,\n isTextNode: isTextNode,\n emptyEl: emptyEl,\n normalizeContent: normalizeContent,\n appendContent: appendContent,\n insertContent: insertContent,\n isSingleLeftClick: isSingleLeftClick,\n $: $,\n $$: $$\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nvar _windowLoaded = false;\nvar videojs$1;\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\n\nvar autoSetup = function autoSetup() {\n if (videojs$1.options.autoSetup === false) {\n return;\n }\n\n var vids = Array.prototype.slice.call(document.getElementsByTagName('video'));\n var audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n var divs = Array.prototype.slice.call(document.getElementsByTagName('video-js'));\n var mediaEls = vids.concat(audios, divs); // Check if any media elements exist\n\n if (mediaEls && mediaEls.length > 0) {\n for (var i = 0, e = mediaEls.length; i < e; i++) {\n var mediaEl = mediaEls[i]; // Check if element exists, has getAttribute func.\n\n if (mediaEl && mediaEl.getAttribute) {\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n\n if (options !== null) {\n // Create new video.js instance.\n videojs$1(mediaEl);\n }\n } // If getAttribute isn't defined, we need to wait for the DOM.\n\n } else {\n autoSetupTimeout(1);\n break;\n }\n } // No videos were found, so keep looping unless page is finished loading.\n\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\n\n\nfunction autoSetupTimeout(wait, vjs) {\n // Protect against breakage in non-browser environments\n if (!isReal()) {\n return;\n }\n\n if (vjs) {\n videojs$1 = vjs;\n }\n\n window$1.setTimeout(autoSetup, wait);\n}\n/**\n * Used to set the internal tracking of window loaded state to true.\n *\n * @private\n */\n\n\nfunction setWindowLoaded() {\n _windowLoaded = true;\n window$1.removeEventListener('load', setWindowLoaded);\n}\n\nif (isReal()) {\n if (document.readyState === 'complete') {\n setWindowLoaded();\n } else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * We use a standard event listener here to avoid incrementing the GUID\n * before any players are created.\n *\n * @listens load\n */\n window$1.addEventListener('load', setWindowLoaded);\n }\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n/**\n * Create a DOM syle element given a className for it.\n *\n * @param {string} className\n * The className to add to the created style element.\n *\n * @return {Element}\n * The element that was created.\n */\n\nvar createStyleElement = function createStyleElement(className) {\n var style = document.createElement('style');\n style.className = className;\n return style;\n};\n/**\n * Add text to a DOM element.\n *\n * @param {Element} el\n * The Element to add text content to.\n *\n * @param {string} content\n * The text to add to the element.\n */\n\nvar setTextContent = function setTextContent(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file guid.js\n * @module guid\n */\n// Default value for GUIDs. This allows us to reset the GUID counter in tests.\n//\n// The initial GUID is 3 because some users have come to rely on the first\n// default player ID ending up as `vjs_video_3`.\n//\n// See: https://github.com/videojs/video.js/pull/6216\nvar _initialGuid = 3;\n/**\n * Unique ID for an element or function\n *\n * @type {Number}\n */\n\nvar _guid = _initialGuid;\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\n\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\nvar FakeWeakMap;\n\nif (!window$1.WeakMap) {\n FakeWeakMap = /*#__PURE__*/function () {\n function FakeWeakMap() {\n this.vdata = 'vdata' + Math.floor(window$1.performance && window$1.performance.now() || Date.now());\n this.data = {};\n }\n\n var _proto = FakeWeakMap.prototype;\n\n _proto.set = function set(key, value) {\n var access = key[this.vdata] || newGUID();\n\n if (!key[this.vdata]) {\n key[this.vdata] = access;\n }\n\n this.data[access] = value;\n return this;\n };\n\n _proto.get = function get(key) {\n var access = key[this.vdata]; // we have data, return it\n\n if (access) {\n return this.data[access];\n } // we don't have data, return nothing.\n // return undefined explicitly as that's the contract for this method\n\n\n log$1('We have no data for this element', key);\n return undefined;\n };\n\n _proto.has = function has(key) {\n var access = key[this.vdata];\n return access in this.data;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var access = key[this.vdata];\n\n if (access) {\n delete this.data[access];\n delete key[this.vdata];\n }\n };\n\n return FakeWeakMap;\n }();\n}\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. 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 */\n\n\nvar DomData = window$1.WeakMap ? new WeakMap() : new FakeWeakMap();\n\n/**\n * @file events.js. An 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 * @file events.js\n * @module events\n */\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\n\nfunction _cleanUpEvents(elem, type) {\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // Remove the events of a particular type if there are none left\n\n if (data.handlers[type].length === 0) {\n delete data.handlers[type]; // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n // Remove the meta-handler from the element\n\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 } // Remove the events object if there are no types left\n\n\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n } // Finally remove the element data if there is no data left\n\n\n if (Object.getOwnPropertyNames(data).length === 0) {\n DomData[\"delete\"](elem);\n }\n}\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} callback\n * Event listener.\n */\n\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 * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\n\n\nfunction fixEvent(event) {\n if (event.fixed_) {\n return event;\n }\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\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\n\n if (!event || !event.isPropagationStopped || !event.isImmediatePropagationStopped) {\n var old = event || window$1.event;\n event = {}; // 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\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 // Lighthouse complains if Event.path is copied\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY' && key !== 'path') {\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 } // The event occurred on this element\n\n\n if (!event.target) {\n event.target = event.srcElement || document;\n } // Handle which other element the event is related to\n\n\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n } // Stop the default browser action\n\n\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false; // Stop the event from bubbling\n\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse; // Stop the event from bubbling and executing other handlers\n\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse; // Handle mouse position\n\n if (event.clientX !== null && event.clientX !== undefined) {\n var doc = document.documentElement;\n var body = document.body;\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } // Handle key presses\n\n\n event.which = event.charCode || event.keyCode; // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n\n if (event.button !== null && event.button !== undefined) {\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n\n event.fixed_ = true; // Returns fixed-up instance\n\n return event;\n}\n/**\n * Whether passive event listeners are supported\n */\n\nvar _supportsPassive;\n\nvar supportsPassive = function supportsPassive() {\n if (typeof _supportsPassive !== 'boolean') {\n _supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n window$1.addEventListener('test', null, opts);\n window$1.removeEventListener('test', null, opts);\n } catch (e) {// disregard\n }\n }\n\n return _supportsPassive;\n};\n/**\n * Touch events Chrome expects to be passive\n */\n\n\nvar passiveEvents = ['touchstart', 'touchmove'];\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\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} fn\n * Event listener.\n */\n\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n if (!DomData.has(elem)) {\n DomData.set(elem, {});\n }\n\n var data = DomData.get(elem); // We need a place to store all our handler data\n\n if (!data.handlers) {\n data.handlers = {};\n }\n\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n if (data.disabled) {\n return;\n }\n\n event = fixEvent(event);\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 try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log$1.error(e);\n }\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n var options = false;\n\n if (supportsPassive() && passiveEvents.indexOf(type) > -1) {\n options = {\n passive: true\n };\n }\n\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {EventTarget~EventListener} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\n\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // If no events exist, nothing to unbind\n\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n } // Utility function\n\n\n var removeType = function removeType(el, t) {\n data.handlers[t] = [];\n\n _cleanUpEvents(el, t);\n }; // Are we removing all bound events?\n\n\n if (type === undefined) {\n for (var t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n\n return;\n }\n\n var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind\n\n if (!handlers) {\n return;\n } // If no listener was provided, remove all listeners for type\n\n\n if (!fn) {\n removeType(elem, type);\n return;\n } // We're only removing a single handler\n\n\n if (fn.guid) {\n for (var 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 * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * Returns the opposite of `defaultPrevented` if default was\n * prevented. Otherwise, returns `undefined`\n */\n\nfunction 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 = DomData.has(elem) ? DomData.get(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument; // type = event.type || event,\n // handler;\n // If an event name was passed as a string, creates an event out of it\n\n if (typeof event === 'string') {\n event = {\n type: event,\n target: elem\n };\n } else if (!event.target) {\n event.target = elem;\n } // Normalizes the event properties.\n\n\n event = fixEvent(event); // If the passed element has a dispatcher, executes the established handlers.\n\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\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\n\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash); // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented && event.target && event.target[event.type]) {\n if (!DomData.has(event.target)) {\n DomData.set(event.target, {});\n }\n\n var targetData = DomData.get(event.target); // Checks if the target has a default action for this event.\n\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; // Executes the default action.\n\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n } // Re-enables event dispatching.\n\n\n targetData.disabled = false;\n }\n } // Inform the triggerer if the default was prevented by returning false\n\n\n return !event.defaultPrevented;\n}\n/**\n * Trigger a listener only once for an event.\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n/**\n * Trigger a listener only once and then turn if off for all\n * configured events\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction any(elem, type, fn) {\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID(); // multiple ons, but one off for everything\n\n on(elem, type, func);\n}\n\nvar Events = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fixEvent: fixEvent,\n on: on,\n off: off,\n trigger: trigger,\n one: one,\n any: any\n});\n\n/**\n * @file fn.js\n * @module fn\n */\nvar UPDATE_REFRESH_INTERVAL = 30;\n/**\n * Bind (a.k.a proxy or context). A simple method for changing the context of\n * a function.\n *\n * It also stores a unique id on the function so it can be easily removed from\n * events.\n *\n * @function\n * @param {Mixed} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\n\nvar bind = function bind(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n } // Create the new function that changes the context\n\n\n var bound = fn.bind(context); // 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\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n return bound;\n};\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\n\nvar throttle = function throttle(fn, wait) {\n var last = window$1.performance.now();\n\n var throttled = function throttled() {\n var now = window$1.performance.now();\n\n if (now - last >= wait) {\n fn.apply(void 0, arguments);\n last = now;\n }\n };\n\n return throttled;\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.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [immediate]\n * Whether or not to invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function.\n */\n\nvar debounce = function debounce(func, wait, immediate, context) {\n if (context === void 0) {\n context = window$1;\n }\n\n var timeout;\n\n var cancel = function cancel() {\n context.clearTimeout(timeout);\n timeout = null;\n };\n /* eslint-disable consistent-this */\n\n\n var debounced = function debounced() {\n var self = this;\n var args = arguments;\n\n var _later = function later() {\n timeout = null;\n _later = null;\n\n if (!immediate) {\n func.apply(self, args);\n }\n };\n\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(_later, wait);\n };\n /* eslint-enable consistent-this */\n\n\n debounced.cancel = cancel;\n return debounced;\n};\n\n/**\n * @file src/js/event-target.js\n */\n/**\n * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It\n * adds shorthand functions that wrap around lengthy functions. For example:\n * the `on` function is a wrapper around `addEventListener`.\n *\n * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget}\n * @class EventTarget\n */\n\nvar EventTarget$2 = function EventTarget() {};\n/**\n * A Custom DOM event.\n *\n * @typedef {Object} EventTarget~Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventTarget~EventListener\n * @this {EventTarget}\n *\n * @param {EventTarget~Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @private\n */\n\n\nEventTarget$2.prototype.allowedEvents_ = {};\n/**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to call with `EventTarget`s\n */\n\nEventTarget$2.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 var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n on(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\n\n\nEventTarget$2.prototype.addEventListener = EventTarget$2.prototype.on;\n/**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to remove.\n */\n\nEventTarget$2.prototype.off = function (type, fn) {\n off(this, type, fn);\n};\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\n\n\nEventTarget$2.prototype.removeEventListener = EventTarget$2.prototype.off;\n/**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to be called once for each event name.\n */\n\nEventTarget$2.prototype.one = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n one(this, type, fn);\n this.addEventListener = ael;\n};\n\nEventTarget$2.prototype.any = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n any(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\n\n\nEventTarget$2.prototype.trigger = function (event) {\n var type = event.type || event; // deprecation\n // In a future version we should default target to `this`\n // similar to how we default the target to `elem` in\n // `Events.trigger`. Right now the default `target` will be\n // `document` due to the `Event.fixEvent` call.\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n\n event = fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n trigger(this, event);\n};\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\n\n\nEventTarget$2.prototype.dispatchEvent = EventTarget$2.prototype.trigger;\nvar EVENT_MAP;\n\nEventTarget$2.prototype.queueTrigger = function (event) {\n var _this = this;\n\n // only set up EVENT_MAP if it'll be used\n if (!EVENT_MAP) {\n EVENT_MAP = new Map();\n }\n\n var type = event.type || event;\n var map = EVENT_MAP.get(this);\n\n if (!map) {\n map = new Map();\n EVENT_MAP.set(this, map);\n }\n\n var oldTimeout = map.get(type);\n map[\"delete\"](type);\n window$1.clearTimeout(oldTimeout);\n var timeout = window$1.setTimeout(function () {\n // if we cleared out all timeouts for the current target, delete its map\n if (map.size === 0) {\n map = null;\n EVENT_MAP[\"delete\"](_this);\n }\n\n _this.trigger(event);\n }, 0);\n map.set(type, timeout);\n};\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\n\nvar objName = function objName(obj) {\n if (typeof obj.name === 'function') {\n return obj.name();\n }\n\n if (typeof obj.name === 'string') {\n return obj.name;\n }\n\n if (obj.name_) {\n return obj.name_;\n }\n\n if (obj.constructor && obj.constructor.name) {\n return obj.constructor.name;\n }\n\n return typeof obj;\n};\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\n\n\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget$2 || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) {\n return typeof object[k] === 'function';\n });\n};\n/**\n * Adds a callback to run after the evented mixin applied.\n *\n * @param {Object} object\n * An object to Add\n * @param {Function} callback\n * The callback to run.\n */\n\n\nvar addEventedCallback = function addEventedCallback(target, callback) {\n if (isEvented(target)) {\n callback();\n } else {\n if (!target.eventedCallbacks) {\n target.eventedCallbacks = [];\n }\n\n target.eventedCallbacks.push(callback);\n }\n};\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\n\n\nvar isValidEventType = function isValidEventType(type) {\n return (// The regex here verifies that the `type` contains at least one non-\n // whitespace character.\n typeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length\n );\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateTarget = function validateTarget(target, obj, fnName) {\n if (!target || !target.nodeName && !isEvented(target)) {\n throw new Error(\"Invalid target for \" + objName(obj) + \"#\" + fnName + \"; must be a DOM node or evented object.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n *\n * @param {Object} obj\n* The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateEventType = function validateEventType(type, obj, fnName) {\n if (!isValidEventType(type)) {\n throw new Error(\"Invalid event type for \" + objName(obj) + \"#\" + fnName + \"; must be a non-empty string or array.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateListener = function validateListener(listener, obj, fnName) {\n if (typeof listener !== 'function') {\n throw new Error(\"Invalid listener for \" + objName(obj) + \"#\" + fnName + \"; must be a function.\");\n }\n};\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\n\n\nvar normalizeListenArgs = function normalizeListenArgs(self, args, fnName) {\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n var target;\n var type;\n var listener;\n\n if (isTargetingSelf) {\n target = self.eventBusEl_; // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n\n if (args.length >= 3) {\n args.shift();\n }\n\n type = args[0];\n listener = args[1];\n } else {\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n\n validateTarget(target, self, fnName);\n validateEventType(type, self, fnName);\n validateListener(listener, self, fnName);\n listener = bind(self, listener);\n return {\n isTargetingSelf: isTargetingSelf,\n target: target,\n type: type,\n listener: listener\n };\n};\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\n\n\nvar listen = function listen(target, method, type, listener) {\n validateTarget(target, target, method);\n\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n/**\n * Contains methods that provide event capabilities to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\n\n\nvar EventedMixin = {\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on: function on() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _normalizeListenArgs = normalizeListenArgs(this, args, 'on'),\n isTargetingSelf = _normalizeListenArgs.isTargetingSelf,\n target = _normalizeListenArgs.target,\n type = _normalizeListenArgs.type,\n listener = _normalizeListenArgs.listener;\n\n listen(target, 'on', type, listener); // If this object is listening to another evented object.\n\n if (!isTargetingSelf) {\n // If this object is disposed, remove the listener.\n var removeListenerOnDispose = function removeListenerOnDispose() {\n return _this.off(target, type, listener);\n }; // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n\n\n removeListenerOnDispose.guid = listener.guid; // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n\n var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() {\n return _this.off('dispose', removeListenerOnDispose);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n removeRemoverOnTargetDispose.guid = listener.guid;\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will be called once per event and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one: function one() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _normalizeListenArgs2 = normalizeListenArgs(this, args, 'one'),\n isTargetingSelf = _normalizeListenArgs2.isTargetingSelf,\n target = _normalizeListenArgs2.target,\n type = _normalizeListenArgs2.type,\n listener = _normalizeListenArgs2.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'one', type, listener); // Targeting another evented object.\n } else {\n // TODO: This wrapper is incorrect! It should only\n // remove the wrapper for the event type that called it.\n // Instead all listners are removed on the first trigger!\n // see https://github.com/videojs/video.js/issues/5962\n var wrapper = function wrapper() {\n _this2.off(target, type, wrapper);\n\n for (var _len3 = arguments.length, largs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n largs[_key3] = arguments[_key3];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once for the first event that is triggered\n * then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n any: function any() {\n var _this3 = this;\n\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var _normalizeListenArgs3 = normalizeListenArgs(this, args, 'any'),\n isTargetingSelf = _normalizeListenArgs3.isTargetingSelf,\n target = _normalizeListenArgs3.target,\n type = _normalizeListenArgs3.type,\n listener = _normalizeListenArgs3.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'any', type, listener); // Targeting another evented object.\n } else {\n var wrapper = function wrapper() {\n _this3.off(target, type, wrapper);\n\n for (var _len5 = arguments.length, largs = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n largs[_key5] = arguments[_key5];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'any', type, wrapper);\n }\n },\n\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off: function off$1(targetOrType, typeOrListener, listener) {\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener); // Targeting another evented object.\n } else {\n var target = targetOrType;\n var type = typeOrListener; // Fail fast and in a meaningful way!\n\n validateTarget(target, this, 'off');\n validateEventType(type, this, 'off');\n validateListener(listener, this, 'off'); // Ensure there's at least a guid, even if the function hasn't been used\n\n listener = bind(this, listener); // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n\n this.off('dispose', listener);\n\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @return {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger: function trigger$1(event, hash) {\n validateTarget(this.eventBusEl_, this, 'trigger');\n var type = event && typeof event !== 'string' ? event.type : event;\n\n if (!isValidEventType(type)) {\n var error = \"Invalid event type for \" + objName(this) + \"#trigger; \" + 'must be a non-empty string or object with a type key that has a non-empty value.';\n\n if (event) {\n (this.log || log$1).error(error);\n } else {\n throw new Error(error);\n }\n }\n\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {string} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\n\nfunction evented(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n eventBusKey = _options.eventBusKey; // Set or create the eventBusEl_.\n\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error(\"The eventBusKey \\\"\" + eventBusKey + \"\\\" does not refer to an element.\");\n }\n\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', {\n className: 'vjs-event-bus'\n });\n }\n\n assign(target, EventedMixin);\n\n if (target.eventedCallbacks) {\n target.eventedCallbacks.forEach(function (callback) {\n callback();\n });\n } // When any evented object is disposed, it removes all its listeners.\n\n\n target.on('dispose', function () {\n target.off();\n [target, target.el_, target.eventBusEl_].forEach(function (val) {\n if (val && DomData.has(val)) {\n DomData[\"delete\"](val);\n }\n });\n window$1.setTimeout(function () {\n target.eventBusEl_ = null;\n }, 0);\n });\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\n\nvar StatefulMixin = {\n /**\n * A hash containing arbitrary keys and values representing the state of\n * the object.\n *\n * @type {Object}\n */\n state: {},\n\n /**\n * Set the state of an object by mutating its\n * {@link module:stateful~StatefulMixin.state|state} object in place.\n *\n * @fires module:stateful~StatefulMixin#statechanged\n * @param {Object|Function} stateUpdates\n * A new set of properties to shallow-merge into the plugin state.\n * Can be a plain object or a function returning a plain object.\n *\n * @return {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState: function setState(stateUpdates) {\n var _this = this;\n\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n\n var changes;\n each(stateUpdates, function (value, key) {\n // Record the change if the value is different from what's in the\n // current state.\n if (_this.state[key] !== value) {\n changes = changes || {};\n changes[key] = {\n from: _this.state[key],\n to: value\n };\n }\n\n _this.state[key] = value;\n }); // Only trigger \"statechange\" if there were changes AND we have a trigger\n // function. This allows us to not require that the target object be an\n // evented object.\n\n if (changes && isEvented(this)) {\n /**\n * An event triggered on an object that is both\n * {@link module:stateful|stateful} and {@link module:evented|evented}\n * indicating that its state has changed.\n *\n * @event module:stateful~StatefulMixin#statechanged\n * @type {Object}\n * @property {Object} changes\n * A hash containing the properties that were changed and\n * the values they were changed `from` and `to`.\n */\n this.trigger({\n changes: changes,\n type: 'statechanged'\n });\n }\n\n return changes;\n }\n};\n/**\n * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target\n * object.\n *\n * If the target object is {@link module:evented|evented} and has a\n * `handleStateChanged` method, that method will be automatically bound to the\n * `statechanged` event on itself.\n *\n * @param {Object} target\n * The object to be made stateful.\n *\n * @param {Object} [defaultState]\n * A default set of properties to populate the newly-stateful object's\n * `state` property.\n *\n * @return {Object}\n * Returns the `target`.\n */\n\nfunction stateful(target, defaultState) {\n assign(target, StatefulMixin); // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n\n target.state = assign({}, target.state, defaultState); // Auto-bind the `handleStateChanged` method of the target object if it exists.\n\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n\n return target;\n}\n\n/**\n * @file string-cases.js\n * @module to-lower-case\n */\n\n/**\n * Lowercase the first letter of a string.\n *\n * @param {string} string\n * String to be lowercased\n *\n * @return {string}\n * The string with a lowercased first letter\n */\nvar toLowerCase = function toLowerCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toLowerCase();\n });\n};\n/**\n * Uppercase the first letter of a string.\n *\n * @param {string} string\n * String to be uppercased\n *\n * @return {string}\n * The string with an uppercased first letter\n */\n\nvar toTitleCase$1 = function toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toUpperCase();\n });\n};\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\n\nvar titleCaseEquals = function titleCaseEquals(str1, str2) {\n return toTitleCase$1(str1) === toTitleCase$1(str2);\n};\n\n/**\n * @file merge-options.js\n * @module merge-options\n */\n/**\n * Merge two objects recursively.\n *\n * Performs a deep merge like\n * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, but only merges\n * plain objects (not arrays, elements, or anything else).\n *\n * Non-plain object values will be copied directly from the right-most\n * argument.\n *\n * @static\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @return {Object}\n * A new object that is the merged result of all sources.\n */\n\nfunction mergeOptions$3() {\n var result = {};\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n\n result[key] = mergeOptions$3(result[key], value);\n });\n });\n return result;\n}\n\nvar MapSham = /*#__PURE__*/function () {\n function MapSham() {\n this.map_ = {};\n }\n\n var _proto = MapSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.map_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.map_[key];\n return has;\n };\n\n _proto.set = function set(key, value) {\n this.map_[key] = value;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.map_) {\n callback.call(thisArg, this.map_[key], key, this);\n }\n };\n\n return MapSham;\n}();\n\nvar Map$1 = window$1.Map ? window$1.Map : MapSham;\n\nvar SetSham = /*#__PURE__*/function () {\n function SetSham() {\n this.set_ = {};\n }\n\n var _proto = SetSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.set_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.set_[key];\n return has;\n };\n\n _proto.add = function add(key) {\n this.set_[key] = 1;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.set_) {\n callback.call(thisArg, key, key, this);\n }\n };\n\n return SetSham;\n}();\n\nvar Set$1 = window$1.Set ? window$1.Set : SetSham;\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\n\nvar Component$1 = /*#__PURE__*/function () {\n /**\n * A callback that is called when a component is ready. Does not have any\n * paramters and any callback value will be ignored.\n *\n * @callback Component~ReadyCallback\n * @this Component\n */\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of component options.\n *\n * @param {Object[]} [options.children]\n * An array of children objects to intialize this component with. Children objects have\n * a name property that will be used if more than one component of the same type needs to be\n * added.\n *\n * @param {string} [options.className]\n * A class or space separated list of classes to add the component\n *\n * @param {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n var _this = this;\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 this.isDisposed_ = false; // Hold the reference to the parent component via `addChild` method\n\n this.parentComponent_ = null; // Make a copy of prototype.options_ to protect against overriding defaults\n\n this.options_ = mergeOptions$3({}, this.options_); // Updated options with supplied options\n\n options = this.options_ = mergeOptions$3(this.options_, options); // Get ID from options or options element if one is supplied\n\n this.id_ = options.id || options.el && options.el.id; // If there was no ID from the options, generate one\n\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n var id = player && player.id && player.id() || 'no_player';\n this.id_ = id + \"_component_\" + newGUID();\n }\n\n this.name_ = options.name || null; // Create element if one wasn't provided in options\n\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n if (options.className && this.el_) {\n options.className.split(' ').forEach(function (c) {\n return _this.addClass(c);\n });\n } // if evented is anything except false, we want to mixin in evented\n\n\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, {\n eventBusKey: this.el_ ? 'el_' : null\n });\n this.handleLanguagechange = this.handleLanguagechange.bind(this);\n this.on(this.player_, 'languagechange', this.handleLanguagechange);\n }\n\n stateful(this, this.constructor.defaultState);\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n this.setTimeoutIds_ = new Set$1();\n this.setIntervalIds_ = new Set$1();\n this.rafIds_ = new Set$1();\n this.namedRafs_ = new Map$1();\n this.clearingTimersOnDispose_ = false; // Add any child components in options\n\n if (options.initChildren !== false) {\n this.initChildren();\n } // Don't want to trigger ready here or it will go before init is actually\n // finished for all children that run this constructor\n\n\n this.ready(ready);\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n *\n * @param {Object} options\n * @param {Element} options.originalEl element with which to replace player element\n */\n\n\n var _proto = Component.prototype;\n\n _proto.dispose = function dispose(options) {\n if (options === void 0) {\n options = {};\n }\n\n // Bail out if the component has already been disposed.\n if (this.isDisposed_) {\n return;\n }\n\n if (this.readyQueue_) {\n this.readyQueue_.length = 0;\n }\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the dispose event does not\n * bubble up\n */\n\n\n this.trigger({\n type: 'dispose',\n bubbles: false\n });\n this.isDisposed_ = true; // Dispose all children.\n\n if (this.children_) {\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n } // Delete child references\n\n\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n this.parentComponent_ = null;\n\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n if (options.restoreEl) {\n this.el_.parentNode.replaceChild(options.restoreEl, this.el_);\n } else {\n this.el_.parentNode.removeChild(this.el_);\n }\n }\n\n this.el_ = null;\n } // remove reference to the player after disposing of the element\n\n\n this.player_ = null;\n }\n /**\n * Determine whether or not this component has been disposed.\n *\n * @return {boolean}\n * If the component has been disposed, will be `true`. Otherwise, `false`.\n */\n ;\n\n _proto.isDisposed = function isDisposed() {\n return Boolean(this.isDisposed_);\n }\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n ;\n\n _proto.player = function player() {\n return this.player_;\n }\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:mergeOptions}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n */\n ;\n\n _proto.options = function options(obj) {\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions$3(this.options_, obj);\n return this.options_;\n }\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n ;\n\n _proto.el = function el() {\n return this.el_;\n }\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n ;\n\n _proto.createEl = function createEl$1(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n }\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n ;\n\n _proto.localize = function localize(string, tokens, defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = string;\n }\n\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n var language = languages && languages[code];\n var primaryCode = code && code.split('-')[0];\n var primaryLang = languages && languages[primaryCode];\n var localizedString = defaultValue;\n\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n var value = tokens[index - 1];\n var ret = value;\n\n if (typeof value === 'undefined') {\n ret = match;\n }\n\n return ret;\n });\n }\n\n return localizedString;\n }\n /**\n * Handles language change for the player in components. Should be overriden by sub-components.\n *\n * @abstract\n */\n ;\n\n _proto.handleLanguagechange = function handleLanguagechange() {}\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n ;\n\n _proto.contentEl = function contentEl() {\n return this.contentEl_ || this.el_;\n }\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n ;\n\n _proto.id = function id() {\n return this.id_;\n }\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n ;\n\n _proto.name = function name() {\n return this.name_;\n }\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n ;\n\n _proto.children = function children() {\n return this.children_;\n }\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n ;\n\n _proto.getChildById = function getChildById(id) {\n return this.childIndex_[id];\n }\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n ;\n\n _proto.getChild = function getChild(name) {\n if (!name) {\n return;\n }\n\n return this.childNameIndex_[name];\n }\n /**\n * Returns the descendant `Component` following the givent\n * descendant `names`. For instance ['foo', 'bar', 'baz'] would\n * try to get 'foo' on the current component, 'bar' on the 'foo'\n * component and 'baz' on the 'bar' component and return undefined\n * if any of those don't exist.\n *\n * @param {...string[]|...string} names\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The descendant `Component` following the given descendant\n * `names` or undefined.\n */\n ;\n\n _proto.getDescendant = function getDescendant() {\n for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) {\n names[_key] = arguments[_key];\n }\n\n // flatten array argument into the main array\n names = names.reduce(function (acc, n) {\n return acc.concat(n);\n }, []);\n var currentChild = this;\n\n for (var i = 0; i < names.length; i++) {\n currentChild = currentChild.getChild(names[i]);\n\n if (!currentChild || !currentChild.getChild) {\n return;\n }\n }\n\n return currentChild;\n }\n /**\n * Add a child `Component` inside the current `Component`.\n *\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n ;\n\n _proto.addChild = function addChild(child, options, index) {\n if (options === void 0) {\n options = {};\n }\n\n if (index === void 0) {\n index = this.children_.length;\n }\n\n var component;\n var componentName; // If child is a string, create component with options\n\n if (typeof child === 'string') {\n componentName = toTitleCase$1(child);\n var componentClassName = options.componentClass || componentName; // Set name through options\n\n options.name = componentName; // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n\n var ComponentClass = Component.getComponent(componentClassName);\n\n if (!ComponentClass) {\n throw new Error(\"Component \" + componentClassName + \" does not exist\");\n } // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n\n\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n\n component = new ComponentClass(this.player_ || this, options); // child is a component instance\n } else {\n component = child;\n }\n\n if (component.parentComponent_) {\n component.parentComponent_.removeChild(component);\n }\n\n this.children_.splice(index, 0, component);\n component.parentComponent_ = this;\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n } // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n\n\n componentName = componentName || component.name && toTitleCase$1(component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n this.childNameIndex_[toLowerCase(componentName)] = component;\n } // Add the UI object's element to the container div (box)\n // Having an element is not required\n\n\n if (typeof component.el === 'function' && component.el()) {\n // If inserting before a component, insert before that component's element\n var refNode = null;\n\n if (this.children_[index + 1]) {\n // Most children are components, but the video tech is an HTML element\n if (this.children_[index + 1].el_) {\n refNode = this.children_[index + 1].el_;\n } else if (isEl(this.children_[index + 1])) {\n refNode = this.children_[index + 1];\n }\n }\n\n this.contentEl().insertBefore(component.el(), refNode);\n } // Return so it can stored on parent object if desired.\n\n\n return component;\n }\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n ;\n\n _proto.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var 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 component.parentComponent_ = null;\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[toTitleCase$1(component.name())] = null;\n this.childNameIndex_[toLowerCase(component.name())] = null;\n var compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n ;\n\n _proto.initChildren = function initChildren() {\n var _this2 = this;\n\n var children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n var parentOptions = this.options_;\n\n var handleAdd = function handleAdd(child) {\n var name = child.name;\n var opts = child.opts; // 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\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n } // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n\n\n if (opts === false) {\n return;\n } // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n\n\n if (opts === true) {\n opts = {};\n } // We also want to pass the original player options\n // to each component as well so they don't need to\n // reach back into the player for options later.\n\n\n opts.playerOptions = _this2.options_.playerOptions; // 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\n var newChild = _this2.addChild(name, opts);\n\n if (newChild) {\n _this2[name] = newChild;\n }\n }; // Allow for an array of children details to passed in the options\n\n\n var workingChildren;\n var Tech = Component.getComponent('Tech');\n\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n\n workingChildren // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n }\n\n return child === wchild.name;\n });\n })).map(function (child) {\n var name;\n var opts;\n\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || _this2.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n\n return {\n name: name,\n opts: opts\n };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || toTitleCase$1(child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n }\n /**\n * Builds the default DOM class name. Should be overriden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\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 * @return {Component}\n * Returns itself; method can be chained.\n */\n ;\n\n _proto.ready = function ready(fn, sync) {\n if (sync === void 0) {\n sync = false;\n }\n\n if (!fn) {\n return;\n }\n\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n\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 }\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n ;\n\n _proto.triggerReady = function triggerReady() {\n this.isReady_ = true; // Ensure ready is triggered asynchronously\n\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_; // Reset Ready Queue\n\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n } // Allow for using event listeners also\n\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('ready');\n }, 1);\n }\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$ = function $$1(selector, context) {\n return $(selector, context || this.contentEl());\n }\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$$ = function $$$1(selector, context) {\n return $$(selector, context || this.contentEl());\n }\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n ;\n\n _proto.hasClass = function hasClass$1(classToCheck) {\n return hasClass(this.el_, classToCheck);\n }\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {string} classToAdd\n * CSS class name to add\n */\n ;\n\n _proto.addClass = function addClass$1(classToAdd) {\n addClass(this.el_, classToAdd);\n }\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {string} classToRemove\n * CSS class name to remove\n */\n ;\n\n _proto.removeClass = function removeClass$1(classToRemove) {\n removeClass(this.el_, classToRemove);\n }\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\n */\n ;\n\n _proto.toggleClass = function toggleClass$1(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n }\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n ;\n\n _proto.show = function show() {\n this.removeClass('vjs-hidden');\n }\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n ;\n\n _proto.hide = function hide() {\n this.addClass('vjs-hidden');\n }\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.lockShowing = function lockShowing() {\n this.addClass('vjs-lock-showing');\n }\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.unlockShowing = function unlockShowing() {\n this.removeClass('vjs-lock-showing');\n }\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attibute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n ;\n\n _proto.getAttribute = function getAttribute$1(attribute) {\n return getAttribute(this.el_, attribute);\n }\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n ;\n\n _proto.setAttribute = function setAttribute$1(attribute, value) {\n setAttribute(this.el_, attribute, value);\n }\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n ;\n\n _proto.removeAttribute = function removeAttribute$1(attribute) {\n removeAttribute(this.el_, attribute);\n }\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.width = function width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.height = function height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n ;\n\n _proto.dimensions = function dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n }\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number}\n * The dimension when getting or 0 if unset\n */\n ;\n\n _proto.dimension = function 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 } // Check if using css width/height (% or px) and adjust\n\n\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 } // skipListeners allows us to avoid triggering the resize event when setting both width and height\n\n\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {EventTarget~Event}\n */\n this.trigger('componentresize');\n }\n\n return;\n } // Not setting a value, so getting it\n // Make sure element exists\n\n\n if (!this.el_) {\n return 0;\n } // Get dimension value from style\n\n\n var val = this.el_.style[widthOrHeight];\n var 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 } // 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\n\n return parseInt(this.el_['offset' + toTitleCase$1(widthOrHeight)], 10);\n }\n /**\n * Get the computed width or the height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n ;\n\n _proto.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n computedWidthOrHeight = computedStyle(this.el_, widthOrHeight); // remove 'px' from variable and parse as integer\n\n computedWidthOrHeight = parseFloat(computedWidthOrHeight); // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs wherever getComputedStyle doesn't exist.\n\n if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) {\n var rule = \"offset\" + toTitleCase$1(widthOrHeight);\n computedWidthOrHeight = this.el_[rule];\n }\n\n return computedWidthOrHeight;\n }\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains computed width and height values of the\n * component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {Component~DimensionObject}\n * The computed dimensions of the component's element.\n */\n ;\n\n _proto.currentDimensions = function currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n }\n /**\n * Get the computed width of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed width of the component's element.\n */\n ;\n\n _proto.currentWidth = function currentWidth() {\n return this.currentDimension('width');\n }\n /**\n * Get the computed height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed height of the component's element.\n */\n ;\n\n _proto.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n }\n /**\n * Set the focus to this component\n */\n ;\n\n _proto.focus = function focus() {\n this.el_.focus();\n }\n /**\n * Remove the focus from this component\n */\n ;\n\n _proto.blur = function blur() {\n this.el_.blur();\n }\n /**\n * When this Component receives a `keydown` event which it does not process,\n * it passes the event to the Player for handling.\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (this.player_) {\n // We only stop propagation here because we want unhandled events to fall\n // back to the browser. Exclude Tab for focus trapping.\n if (!keycode.isEventKey(event, 'Tab')) {\n event.stopPropagation();\n }\n\n this.player_.handleKeyDown(event);\n }\n }\n /**\n * Many components used to have a `handleKeyPress` method, which was poorly\n * named because it listened to a `keydown` event. This method name now\n * delegates to `handleKeyDown`. This means anyone calling `handleKeyPress`\n * will not see their method calls stop working.\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyPress = function handleKeyPress(event) {\n this.handleKeyDown(event);\n }\n /**\n * Emit a 'tap' events when touch event support gets detected. This gets used to\n * support toggling the controls through a tap on the video. They get enabled\n * because every sub-component would have extra overhead otherwise.\n *\n * @private\n * @fires Component#tap\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchleave\n * @listens Component#touchcancel\n * @listens Component#touchend\n */\n ;\n\n _proto.emitTapEvents = function emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n var touchStart = 0;\n var firstTouch = null; // 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,\n // so 10 seems like a nice, round number.\n\n var tapMovementThreshold = 10; // The maximum length a touch can be while still being considered a tap\n\n var touchTimeThreshold = 200;\n var couldBeTap;\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 pageX/pageY from the object\n firstTouch = {\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n }; // Record start time so we can detect a tap vs. \"touch and hold\"\n\n touchStart = window$1.performance.now(); // Reset couldBeTap tracking\n\n couldBeTap = true;\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 var xdiff = event.touches[0].pageX - firstTouch.pageX;\n var ydiff = event.touches[0].pageY - firstTouch.pageY;\n var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n var noTap = function noTap() {\n couldBeTap = false;\n }; // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n\n\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap); // When the touch ends, measure how long it took and trigger the appropriate\n // event\n\n this.on('touchend', function (event) {\n firstTouch = null; // Proceed only if the touchmove/leave/cancel event didn't happen\n\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n var touchTime = window$1.performance.now() - touchStart; // Make sure the touch was less than the threshold to be considered a tap\n\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n /**\n * Triggered when a `Component` is tapped.\n *\n * @event Component#tap\n * @type {EventTarget~Event}\n */\n\n this.trigger('tap'); // 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 * This function reports user activity whenever touch events happen. This can get\n * turned off by any sub-components that wants touch events to act another way.\n *\n * Report user touch activity when touch events occur. User activity gets used to\n * determine when controls should show/hide. It is simple when it comes to mouse\n * events, because any mouse event should show the controls. So we capture mouse\n * events that bubble up to the player and report activity when that happens.\n * With touch events it isn't as easy as `touchstart` and `touchend` toggle player\n * controls. So touch events can't help us at the player level either.\n *\n * User activity gets checked asynchronously. So what could happen is a tap event\n * on the video turns the controls off. Then the `touchend` event bubbles up to\n * the player. Which, if it reported user activity, would turn the controls right\n * back on. We also don't want to completely block touch events from bubbling up.\n * Furthermore a `touchmove` event and anything other than a tap, should not turn\n * controls back on.\n *\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchend\n * @listens Component#touchcancel\n */\n ;\n\n _proto.enableTouchActivity = function 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 } // listener for reporting that the user is active\n\n\n var report = bind(this.player(), this.player().reportUserActivity);\n var touchHolding;\n this.on('touchstart', function () {\n report(); // 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\n this.clearInterval(touchHolding); // report at the same interval as activityCheck\n\n touchHolding = this.setInterval(report, 250);\n });\n\n var touchEnd = function touchEnd(event) {\n report(); // stop the interval that maintains activity if the touch is holding\n\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n /**\n * A callback that has no parameters and is bound into `Component`s context.\n *\n * @callback Component~GenericCallback\n * @this Component\n */\n\n /**\n * Creates a function that runs after an `x` millisecond timeout. This function is a\n * wrapper around `window.setTimeout`. There are a few reasons to use this one\n * instead though:\n * 1. It gets cleared via {@link Component#clearTimeout} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will gets turned into a {@link Component~GenericCallback}\n *\n * > Note: You can't use `window.clearTimeout` on the id returned by this function. This\n * will cause its dispose listener not to get cleaned up! Please use\n * {@link Component#clearTimeout} or {@link Component#dispose} instead.\n *\n * @param {Component~GenericCallback} fn\n * The function that will be run after `timeout`.\n *\n * @param {number} timeout\n * Timeout in milliseconds to delay before executing the specified function.\n *\n * @return {number}\n * Returns a timeout ID that gets used to identify the timeout. It can also\n * get used in {@link Component#clearTimeout} to clear the timeout that\n * was set.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout}\n */\n ;\n\n _proto.setTimeout = function setTimeout(fn, timeout) {\n var _this3 = this;\n\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId;\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n timeoutId = window$1.setTimeout(function () {\n if (_this3.setTimeoutIds_.has(timeoutId)) {\n _this3.setTimeoutIds_[\"delete\"](timeoutId);\n }\n\n fn();\n }, timeout);\n this.setTimeoutIds_.add(timeoutId);\n return timeoutId;\n }\n /**\n * Clears a timeout that gets created via `window.setTimeout` or\n * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout}\n * use this function instead of `window.clearTimout`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} timeoutId\n * The id of the timeout to clear. The return value of\n * {@link Component#setTimeout} or `window.setTimeout`.\n *\n * @return {number}\n * Returns the timeout id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout}\n */\n ;\n\n _proto.clearTimeout = function clearTimeout(timeoutId) {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_[\"delete\"](timeoutId);\n window$1.clearTimeout(timeoutId);\n }\n\n return timeoutId;\n }\n /**\n * Creates a function that gets run every `x` milliseconds. This function is a wrapper\n * around `window.setInterval`. There are a few reasons to use this one instead though.\n * 1. It gets cleared via {@link Component#clearInterval} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will be a {@link Component~GenericCallback}\n *\n * @param {Component~GenericCallback} fn\n * The function to run every `x` seconds.\n *\n * @param {number} interval\n * Execute the specified function every `x` milliseconds.\n *\n * @return {number}\n * Returns an id that can be used to identify the interval. It can also be be used in\n * {@link Component#clearInterval} to clear the interval.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval}\n */\n ;\n\n _proto.setInterval = function setInterval(fn, interval) {\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n var intervalId = window$1.setInterval(fn, interval);\n this.setIntervalIds_.add(intervalId);\n return intervalId;\n }\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an inteval via {@link Component#setInterval}\n * use this function instead of `window.clearInterval`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} intervalId\n * The id of the interval to clear. The return value of\n * {@link Component#setInterval} or `window.setInterval`.\n *\n * @return {number}\n * Returns the interval id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval}\n */\n ;\n\n _proto.clearInterval = function clearInterval(intervalId) {\n if (this.setIntervalIds_.has(intervalId)) {\n this.setIntervalIds_[\"delete\"](intervalId);\n window$1.clearInterval(intervalId);\n }\n\n return intervalId;\n }\n /**\n * Queues up a callback to be passed to requestAnimationFrame (rAF), but\n * with a few extra bonuses:\n *\n * - Supports browsers that do not support rAF by falling back to\n * {@link Component#setTimeout}.\n *\n * - The callback is turned into a {@link Component~GenericCallback} (i.e.\n * bound to the component).\n *\n * - Automatic cancellation of the rAF callback is handled if the component\n * is disposed before it is called.\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n *\n * @return {number}\n * Returns an rAF ID that gets used to identify the timeout. It can\n * also be used in {@link Component#cancelAnimationFrame} to cancel\n * the animation frame callback.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}\n */\n ;\n\n _proto.requestAnimationFrame = function requestAnimationFrame(fn) {\n var _this4 = this;\n\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.setTimeout(fn, 1000 / 60);\n }\n\n this.clearTimersOnDispose_(); // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n\n var id;\n fn = bind(this, fn);\n id = window$1.requestAnimationFrame(function () {\n if (_this4.rafIds_.has(id)) {\n _this4.rafIds_[\"delete\"](id);\n }\n\n fn();\n });\n this.rafIds_.add(id);\n return id;\n }\n /**\n * Request an animation frame, but only one named animation\n * frame will be queued. Another will never be added until\n * the previous one finishes.\n *\n * @param {string} name\n * The name to give this requestAnimationFrame\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n */\n ;\n\n _proto.requestNamedAnimationFrame = function requestNamedAnimationFrame(name, fn) {\n var _this5 = this;\n\n if (this.namedRafs_.has(name)) {\n return;\n }\n\n this.clearTimersOnDispose_();\n fn = bind(this, fn);\n var id = this.requestAnimationFrame(function () {\n fn();\n\n if (_this5.namedRafs_.has(name)) {\n _this5.namedRafs_[\"delete\"](name);\n }\n });\n this.namedRafs_.set(name, id);\n return name;\n }\n /**\n * Cancels a current named animation frame if it exists.\n *\n * @param {string} name\n * The name of the requestAnimationFrame to cancel.\n */\n ;\n\n _proto.cancelNamedAnimationFrame = function cancelNamedAnimationFrame(name) {\n if (!this.namedRafs_.has(name)) {\n return;\n }\n\n this.cancelAnimationFrame(this.namedRafs_.get(name));\n this.namedRafs_[\"delete\"](name);\n }\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n ;\n\n _proto.cancelAnimationFrame = function cancelAnimationFrame(id) {\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.clearTimeout(id);\n }\n\n if (this.rafIds_.has(id)) {\n this.rafIds_[\"delete\"](id);\n window$1.cancelAnimationFrame(id);\n }\n\n return id;\n }\n /**\n * A function to setup `requestAnimationFrame`, `setTimeout`,\n * and `setInterval`, clearing on dispose.\n *\n * > Previously each timer added and removed dispose listeners on it's own.\n * For better performance it was decided to batch them all, and use `Set`s\n * to track outstanding timer ids.\n *\n * @private\n */\n ;\n\n _proto.clearTimersOnDispose_ = function clearTimersOnDispose_() {\n var _this6 = this;\n\n if (this.clearingTimersOnDispose_) {\n return;\n }\n\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', function () {\n [['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(function (_ref) {\n var idName = _ref[0],\n cancelName = _ref[1];\n\n // for a `Set` key will actually be the value again\n // so forEach((val, val) =>` but for maps we want to use\n // the key.\n _this6[idName].forEach(function (val, key) {\n return _this6[cancelName](key);\n });\n });\n _this6.clearingTimersOnDispose_ = false;\n });\n }\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n ;\n\n Component.registerComponent = function registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error(\"Illegal component name, \\\"\" + name + \"\\\"; must be a non-empty string.\");\n }\n\n var Tech = Component.getComponent('Tech'); // We need to make sure this check is only done if Tech has been registered.\n\n var isTech = Tech && Tech.isTech(ComponentToRegister);\n var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype);\n\n if (isTech || !isComp) {\n var reason;\n\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n\n throw new Error(\"Illegal component, \\\"\" + name + \"\\\"; \" + reason + \".\");\n }\n\n name = toTitleCase$1(name);\n\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n var Player = Component.getComponent('Player');\n\n if (name === 'Player' && Player && Player.players) {\n var players = Player.players;\n var playerNames = Object.keys(players); // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is not null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n\n if (players && playerNames.length > 0 && playerNames.map(function (pname) {\n return players[pname];\n }).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n\n Component.components_[name] = ComponentToRegister;\n Component.components_[toLowerCase(name)] = ComponentToRegister;\n return ComponentToRegister;\n }\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {Component}\n * The `Component` that got registered under the given name.\n */\n ;\n\n Component.getComponent = function getComponent(name) {\n if (!name || !Component.components_) {\n return;\n }\n\n return Component.components_[name];\n };\n\n return Component;\n}();\n/**\n * Whether or not this component supports `requestAnimationFrame`.\n *\n * This is exposed primarily for testing purposes.\n *\n * @private\n * @type {Boolean}\n */\n\n\nComponent$1.prototype.supportsRaf_ = typeof window$1.requestAnimationFrame === 'function' && typeof window$1.cancelAnimationFrame === 'function';\nComponent$1.registerComponent('Component', Component$1);\n\n/**\n * @file time-ranges.js\n * @module time-ranges\n */\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @typedef {Function} TimeRangeIndex\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time offset at the specified index.\n *\n * @deprecated The index argument must be provided.\n * In the future, leaving it out will throw an error.\n */\n\n/**\n * An object that contains ranges of time.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this object.\n *\n * @property {module:time-ranges~TimeRangeIndex} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {module:time-ranges~TimeRangeIndex} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\n\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error(\"Failed to execute '\" + fnName + \"' on 'TimeRanges': The index provided (\" + index + \") is non-numeric or out of bounds (0-\" + maxIndex + \").\");\n }\n}\n/**\n * Get the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The property that should be used to get the time. should be\n * 'start' or 'end'\n *\n * @param {Array} ranges\n * An array of time ranges\n *\n * @param {Array} [rangeIndex=0]\n * The index to start the search at\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @deprecated rangeIndex must be set to a value, in the future this will throw an error.\n * @throws {Error} if rangeIndex is more than the length of ranges\n */\n\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n/**\n * Create a time range object given ranges of time.\n *\n * @private\n * @param {Array} [ranges]\n * An array of time ranges.\n */\n\n\nfunction createTimeRangesObj(ranges) {\n var timeRangesObj;\n\n if (ranges === undefined || ranges.length === 0) {\n timeRangesObj = {\n length: 0,\n start: function start() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n } else {\n timeRangesObj = {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n }\n\n if (window$1.Symbol && window$1.Symbol.iterator) {\n timeRangesObj[window$1.Symbol.iterator] = function () {\n return (ranges || []).values();\n };\n }\n\n return timeRangesObj;\n}\n/**\n * Create a `TimeRange` object which mimics an\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}.\n *\n * @param {number|Array[]} start\n * The start of a single range (a number) or an array of ranges (an\n * array of arrays of two numbers each).\n *\n * @param {number} end\n * The end of a single range. Cannot be used with the array form of\n * the `start` argument.\n */\n\n\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * @file buffer.js\n * @module buffer\n */\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRange` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\n\nfunction bufferedPercent(buffered, duration) {\n var bufferedDuration = 0;\n var start;\n var end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(0, 0);\n }\n\n for (var i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i); // buffered end can be bigger than duration by a very small fraction\n\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n/**\n * @file media-error.js\n */\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\n\nfunction MediaError(value) {\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n\n assign(this, value);\n }\n\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\n\n\nMediaError.prototype.code = 0;\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\n\nMediaError.prototype.message = '';\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\n\nMediaError.prototype.status = null;\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_ABORTED\n * @property {string} 2 - MEDIA_ERR_NETWORK\n * @property {string} 3 - MEDIA_ERR_DECODE\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\n\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\n\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n}; // Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum; // values should be accessible on both the class and instance\n\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n} // jsdocs for instance/static members added above\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\n\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, function (e) {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n\n return acc;\n }, {\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 });\n return ret;\n};\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\n\n\nvar textTracksToJson = function textTracksToJson(tech) {\n var trackEls = tech.$$('track');\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n\n return json;\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 * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\n\n\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n return tech.textTracks();\n};\n\nvar textTrackConverter = {\n textTracksToJson: textTracksToJson,\n jsonToTextTracks: jsonToTextTracks,\n trackToJson_: trackToJson_\n};\n\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\n\nvar ModalDialog = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ModalDialog, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Mixed} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.pauseOnOpen=true]\n * If `true`, playback will will be paused if playing when\n * the modal opens, and resumed when it closes.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n function ModalDialog(player, options) {\n var _this;\n\n _this = _Component.call(this, player, options) || this;\n\n _this.handleKeyDown_ = function (e) {\n return _this.handleKeyDown(e);\n };\n\n _this.close_ = function (e) {\n return _this.close(e);\n };\n\n _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false;\n\n _this.closeable(!_this.options_.uncloseable);\n\n _this.content(_this.options_.content); // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n\n\n _this.contentEl_ = createEl('div', {\n className: MODAL_CLASS_NAME + \"-content\"\n }, {\n role: 'document'\n });\n _this.descEl_ = createEl('p', {\n className: MODAL_CLASS_NAME + \"-description vjs-control-text\",\n id: _this.el().getAttribute('aria-describedby')\n });\n textContent(_this.descEl_, _this.description());\n\n _this.el_.appendChild(_this.descEl_);\n\n _this.el_.appendChild(_this.contentEl_);\n\n return _this;\n }\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n var _proto = ModalDialog.prototype;\n\n _proto.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': this.id() + \"_description\",\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog'\n });\n };\n\n _proto.dispose = function dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + \" vjs-hidden \" + _Component.prototype.buildCSSClass.call(this);\n }\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n ;\n\n _proto.label = function label() {\n return this.localize(this.options_.label || 'Modal Window');\n }\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n ;\n\n _proto.description = function description() {\n var desc = this.options_.description || this.localize('This is a modal window.'); // Append a universal closeability message if the modal is closeable.\n\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n\n return desc;\n }\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n ;\n\n _proto.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalopen');\n this.opened_ = true; // Fill content if the modal has never opened before and\n // never been filled.\n\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n } // If the player was playing, pause it and take note of its previously\n // playing state.\n\n\n this.wasPlaying_ = !player.paused();\n\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n\n this.on('keydown', this.handleKeyDown_); // Hide controls and note if they were enabled.\n\n this.hadControls_ = player.controls();\n player.controls(false);\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n }\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n ;\n\n _proto.opened = function opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n\n return this.opened_;\n }\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n ;\n\n _proto.close = function close() {\n if (!this.opened_) {\n return;\n }\n\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n\n this.off('keydown', this.handleKeyDown_);\n\n if (this.hadControls_) {\n player.controls(true);\n }\n\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalclose');\n this.conditionalBlur_();\n\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n ;\n\n _proto.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var close = this.getChild('closeButton'); // If this is being made closeable and has no close button, add one.\n\n if (closeable && !close) {\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', {\n controlText: 'Close Modal Dialog'\n });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close_);\n } // If this is being made uncloseable and has a close button, remove it.\n\n\n if (!closeable && close) {\n this.off(close, 'close', this.close_);\n this.removeChild(close);\n close.dispose();\n }\n }\n\n return this.closeable_;\n }\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n ;\n\n _proto.fill = function fill() {\n this.fillWith(this.content());\n }\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n ;\n\n _proto.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true; // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalfill'); // Re-inject the re-filled content element.\n\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n } // make sure that the close button is last in the dialog DOM\n\n\n var closeButton = this.getChild('closeButton');\n\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n }\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n ;\n\n _proto.empty = function empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalempty');\n }\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {Mixed} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {Mixed}\n * The current content of the modal dialog\n */\n ;\n\n _proto.content = function content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n\n return this.content_;\n }\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n ;\n\n _proto.conditionalFocus_ = function conditionalFocus_() {\n var activeEl = document.activeElement;\n var playerEl = this.player_.el_;\n this.previouslyActiveEl_ = null;\n\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n this.focus();\n }\n }\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n ;\n\n _proto.conditionalBlur_ = function conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n }\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n\n if (keycode.isEventKey(event, 'Escape') && this.closeable()) {\n event.preventDefault();\n this.close();\n return;\n } // exit early if it isn't a tab key\n\n\n if (!keycode.isEventKey(event, 'Tab')) {\n return;\n }\n\n var focusableEls = this.focusableEls_();\n var activeEl = this.el_.querySelector(':focus');\n var focusIndex;\n\n for (var i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n\n if (document.activeElement === this.el_) {\n focusIndex = 0;\n }\n\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n }\n /**\n * get all focusable elements\n *\n * @private\n */\n ;\n\n _proto.focusableEls_ = function focusableEls_() {\n var allChildren = this.el_.querySelectorAll('*');\n return Array.prototype.filter.call(allChildren, function (child) {\n return (child instanceof window$1.HTMLAnchorElement || child instanceof window$1.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window$1.HTMLInputElement || child instanceof window$1.HTMLSelectElement || child instanceof window$1.HTMLTextAreaElement || child instanceof window$1.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window$1.HTMLIFrameElement || child instanceof window$1.HTMLObjectElement || child instanceof window$1.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n };\n\n return ModalDialog;\n}(Component$1);\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\n\n\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\nComponent$1.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\n\nvar TrackList = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(TrackList, _EventTarget);\n\n /**\n * Create an instance of this class\n *\n * @param {Track[]} tracks\n * A list of tracks to initialize the list with.\n *\n * @abstract\n */\n function TrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n _this = _EventTarget.call(this) || this;\n _this.tracks_ = [];\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'length', {\n get: function get() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n _this.addTrack(tracks[i]);\n }\n\n return _this;\n }\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = TrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.tracks_[index];\n }\n });\n } // Do not add duplicate tracks\n\n\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n this.trigger({\n track: track,\n type: 'addtrack',\n target: this\n });\n }\n /**\n * Triggered when a track label is changed.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n\n track.labelchange_ = function () {\n _this2.trigger({\n track: track,\n type: 'labelchange',\n target: _this2\n });\n };\n\n if (isEvented(track)) {\n track.addEventListener('labelchange', track.labelchange_);\n }\n }\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n ;\n\n _proto.removeTrack = function removeTrack(rtrack) {\n var track;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n\n if (track.off) {\n track.off();\n }\n\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n if (!track) {\n return;\n }\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n\n\n this.trigger({\n track: track,\n type: 'removetrack',\n target: this\n });\n }\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {string} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n ;\n\n _proto.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TrackList;\n}(EventTarget$2);\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {EventTarget~Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @private\n */\n\n\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack',\n labelchange: 'labelchange'\n}; // emulate attribute EventHandler support to allow for feature detection\n\nfor (var event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers$1 = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another audio track is enabled, disable it\n\n\n list[i].enabled = false;\n }\n};\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\n\n\nvar AudioTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(AudioTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n function AudioTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n return _this;\n }\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = AudioTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.enabled) {\n disableOthers$1(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.enabledChange_ = function () {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers$1(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('enabledchange', track.enabledChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.enabledChange_) {\n rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);\n rtrack.enabledChange_ = null;\n }\n };\n\n return AudioTrackList;\n}(TrackList);\n\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another video track is enabled, disable it\n\n\n list[i].selected = false;\n }\n};\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\n\n\nvar VideoTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(VideoTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n function VideoTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selectedIndex', {\n get: function get() {\n for (var _i = 0; _i < this.length; _i++) {\n if (this[_i].selected) {\n return _i;\n }\n }\n\n return -1;\n },\n set: function set() {}\n });\n return _this;\n }\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = VideoTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.selected) {\n disableOthers(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.selectedChange_ = function () {\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('selectedchange', track.selectedChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.selectedChange_) {\n rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);\n rtrack.selectedChange_ = null;\n }\n };\n\n return VideoTrackList;\n}(TrackList);\n\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\n\nvar TextTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(TextTrackList, _TrackList);\n\n function TextTrackList() {\n return _TrackList.apply(this, arguments) || this;\n }\n\n var _proto = TextTrackList.prototype;\n\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n _proto.addTrack = function addTrack(track) {\n var _this = this;\n\n _TrackList.prototype.addTrack.call(this, track);\n\n if (!this.queueChange_) {\n this.queueChange_ = function () {\n return _this.queueTrigger('change');\n };\n }\n\n if (!this.triggerSelectedlanguagechange) {\n this.triggerSelectedlanguagechange_ = function () {\n return _this.trigger('selectedlanguagechange');\n };\n }\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('modechange', this.queueChange_);\n var nonLanguageTextTrackKind = ['metadata', 'chapters'];\n\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack); // manually remove the event handlers we added\n\n\n if (rtrack.removeEventListener) {\n if (this.queueChange_) {\n rtrack.removeEventListener('modechange', this.queueChange_);\n }\n\n if (this.selectedlanguagechange_) {\n rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n };\n\n return TextTrackList;\n}(TrackList);\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\nvar HtmlTrackElementList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n function HtmlTrackElementList(trackElements) {\n if (trackElements === void 0) {\n trackElements = [];\n }\n\n this.trackElements_ = [];\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, length = trackElements.length; i < length; i++) {\n this.addTrackElement_(trackElements[i]);\n }\n }\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n\n\n var _proto = HtmlTrackElementList.prototype;\n\n _proto.addTrackElement_ = function addTrackElement_(trackElement) {\n var index = this.trackElements_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.trackElements_[index];\n }\n });\n } // Do not add duplicate elements\n\n\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n }\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n ;\n\n _proto.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_;\n\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n break;\n }\n }\n\n return trackElement_;\n }\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n ;\n\n _proto.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') {\n this.trackElements_[i].track.off();\n }\n\n if (typeof this.trackElements_[i].off === 'function') {\n this.trackElements_[i].off();\n }\n\n this.trackElements_.splice(i, 1);\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n}();\n\n/**\n * @file text-track-cue-list.js\n */\n\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\nvar TextTrackCueList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n function TextTrackCueList(cues) {\n TextTrackCueList.prototype.setCues_.call(this, cues);\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.length_;\n }\n });\n }\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n\n\n var _proto = TextTrackCueList.prototype;\n\n _proto.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get() {\n return this.cues_[index];\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 /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n ;\n\n _proto.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\n}();\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nvar VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\n\nvar AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\n\nvar TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\n\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\n\nvar Track = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(Track, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n function Track(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n language: options.language || ''\n };\n var label = options.label || '';\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n var _loop = function _loop(key) {\n Object.defineProperty(_assertThisInitialized(_this), key, {\n get: function get() {\n return trackProps[key];\n },\n set: function set() {}\n });\n };\n\n for (var key in trackProps) {\n _loop(key);\n }\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @fires Track#labelchange\n */\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'label', {\n get: function get() {\n return label;\n },\n set: function set(newLabel) {\n if (newLabel !== label) {\n label = newLabel;\n /**\n * An event that fires when label changes on this track.\n *\n * > Note: This is not part of the spec!\n *\n * @event Track#labelchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('labelchange');\n }\n }\n });\n return _this;\n }\n\n return Track;\n}(EventTarget$2);\n\n/**\n * @file url.js\n * @module url\n */\n/**\n * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @function\n * @param {String} url\n * The url to parse\n *\n * @return {url:URLObject}\n * An object of url details\n */\n\nvar parseUrl = function parseUrl(url) {\n // This entire method can be replace with URL once we are able to drop IE11\n var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host']; // add the url to an anchor and let the browser parse the URL\n\n var a = document.createElement('a');\n a.href = url; // Copy the specific URL properties to a new object\n // This is also needed for IE because the anchor loses its\n // properties when it's removed from the dom\n\n var details = {};\n\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n } // IE adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n\n\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (!details.protocol) {\n details.protocol = window$1.location.protocol;\n }\n /* istanbul ignore if */\n\n\n if (!details.host) {\n details.host = window$1.location.host;\n }\n\n return details;\n};\n/**\n * Get absolute version of relative URL. Used to tell Flash the correct URL.\n *\n * @function\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n *\n * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n */\n\nvar getAbsoluteURL = function getAbsoluteURL(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 // add the url to an anchor and let the browser parse the URL\n var a = document.createElement('a');\n a.href = url;\n url = a.href;\n }\n\n return url;\n};\n/**\n * Returns the extension of the passed file name. It will return an empty string\n * if passed an invalid path.\n *\n * @function\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @return {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\n\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @function\n * @param {string} url\n * The url to check.\n *\n * @param {Object} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @param {string} [winLoc.protocol]\n * The window location protocol defaults to window.location.protocol\n *\n * @param {string} [winLoc.host]\n * The window location host defaults to window.location.host\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\n\nvar isCrossOrigin = function isCrossOrigin(url, winLoc) {\n if (winLoc === void 0) {\n winLoc = window$1.location;\n }\n\n var urlInfo = parseUrl(url); // IE8 protocol relative urls will return ':' for protocol\n\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol; // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n return crossOrigin;\n};\n\nvar Url = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parseUrl: parseUrl,\n getAbsoluteURL: getAbsoluteURL,\n getFileExtension: getFileExtension,\n isCrossOrigin: isCrossOrigin\n});\n\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\n\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new window$1.WebVTT.Parser(window$1, window$1.vttjs, window$1.WebVTT.StringDecoder());\n var errors = [];\n\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n\n parser.parse(srcContent);\n\n if (errors.length > 0) {\n if (window$1.console && window$1.console.groupCollapsed) {\n window$1.console.groupCollapsed(\"Text Track parsing errors for \" + track.src);\n }\n\n errors.forEach(function (error) {\n return log$1.error(error);\n });\n\n if (window$1.console && window$1.console.groupEnd) {\n window$1.console.groupEnd();\n }\n }\n\n parser.flush();\n};\n/**\n * Load a `TextTrack` from a specified url.\n *\n * @param {string} src\n * Url to load track from.\n *\n * @param {TextTrack} track\n * Track to add cues to. Comes from the content at the end of `url`.\n *\n * @private\n */\n\n\nvar loadTrack = function loadTrack(src, track) {\n var opts = {\n uri: src\n };\n var crossOrigin = isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n var withCredentials = track.tech_.crossOrigin() === 'use-credentials';\n\n if (withCredentials) {\n opts.withCredentials = withCredentials;\n }\n\n XHR(opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log$1.error(err, response);\n }\n\n track.loaded_ = true; // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n\n if (typeof window$1.WebVTT !== 'function') {\n if (track.tech_) {\n // to prevent use before define eslint error, we define loadHandler\n // as a let here\n track.tech_.any(['vttjsloaded', 'vttjserror'], function (event) {\n if (event.type === 'vttjserror') {\n log$1.error(\"vttjs failed to load, stopping trying to process \" + track.src);\n return;\n }\n\n return parseCues(responseBody, track);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\n\n\nvar TextTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(TextTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function TextTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var settings = mergeOptions$3(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n var mode = TextTrackMode[settings.mode] || 'disabled';\n var default_ = settings[\"default\"];\n\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n\n _this = _Track.call(this, settings) || this;\n _this.tech_ = settings.tech;\n _this.cues_ = [];\n _this.activeCues_ = [];\n _this.preload_ = _this.tech_.preloadTextTracks !== false;\n var cues = new TextTrackCueList(_this.cues_);\n var activeCues = new TextTrackCueList(_this.activeCues_);\n var changed = false;\n _this.timeupdateHandler = bind(_assertThisInitialized(_this), function (event) {\n if (event === void 0) {\n event = {};\n }\n\n if (this.tech_.isDisposed()) {\n return;\n }\n\n if (!this.tech_.isReady_) {\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n\n return;\n } // Accessing this.activeCues for the side-effects of updating itself\n // due to its nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n\n\n this.activeCues = this.activeCues;\n\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n });\n\n var disposeHandler = function disposeHandler() {\n _this.stopTracking();\n };\n\n _this.tech_.one('dispose', disposeHandler);\n\n if (mode !== 'disabled') {\n _this.startTracking();\n }\n\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n \"default\": {\n get: function get() {\n return default_;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n mode: {\n get: function get() {\n return mode;\n },\n set: function set(newMode) {\n if (!TextTrackMode[newMode]) {\n return;\n }\n\n if (mode === newMode) {\n return;\n }\n\n mode = newMode;\n\n if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) {\n // On-demand load.\n loadTrack(this.src, this);\n }\n\n this.stopTracking();\n\n if (mode !== 'disabled') {\n this.startTracking();\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('modechange');\n }\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n cues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n activeCues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n } // nothing to do\n\n\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\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 (var _i = 0; _i < active.length; _i++) {\n if (this.activeCues_.indexOf(active[_i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n return activeCues;\n },\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set: function set() {}\n }\n });\n\n if (settings.src) {\n _this.src = settings.src;\n\n if (!_this.preload_) {\n // Tracks will load on-demand.\n // Act like we're loaded for other purposes.\n _this.loaded_ = true;\n }\n\n if (_this.preload_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') {\n loadTrack(_this.src, _assertThisInitialized(_this));\n }\n } else {\n _this.loaded_ = true;\n }\n\n return _this;\n }\n\n var _proto = TextTrack.prototype;\n\n _proto.startTracking = function startTracking() {\n // More precise cues based on requestVideoFrameCallback with a requestAnimationFram fallback\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler); // Also listen to timeupdate in case rVFC/rAF stops (window in background, audio in video el)\n\n this.tech_.on('timeupdate', this.timeupdateHandler);\n };\n\n _proto.stopTracking = function stopTracking() {\n if (this.rvf_) {\n this.tech_.cancelVideoFrameCallback(this.rvf_);\n this.rvf_ = undefined;\n }\n\n this.tech_.off('timeupdate', this.timeupdateHandler);\n }\n /**\n * Add a cue to the internal list of cues.\n *\n * @param {TextTrack~Cue} cue\n * The cue to add to our internal list\n */\n ;\n\n _proto.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (window$1.vttjs && !(originalCue instanceof window$1.vttjs.VTTCue)) {\n cue = new window$1.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n\n for (var prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n } // make sure that `id` is copied over\n\n\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n\n var tracks = this.tech_.textTracks();\n\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n }\n /**\n * Remove a cue from our internal list\n *\n * @param {TextTrack~Cue} removeCue\n * The cue to remove from our internal list\n */\n ;\n\n _proto.removeCue = function removeCue(_removeCue) {\n var i = this.cues_.length;\n\n while (i--) {\n var cue = this.cues_[i];\n\n if (cue === _removeCue || cue.originalCue_ && cue.originalCue_ === _removeCue) {\n this.cues_.splice(i, 1);\n this.cues.setCues_(this.cues_);\n break;\n }\n }\n };\n\n return TextTrack;\n}(Track);\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\n\n\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\n/**\n * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList}\n * only one `AudioTrack` in the list will be enabled at a time.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}\n * @extends Track\n */\n\nvar AudioTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(AudioTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n function AudioTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions$3(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var enabled = false;\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'enabled', {\n get: function get() {\n return enabled;\n },\n set: function set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n\n enabled = newEnabled;\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('enabledchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.enabled) {\n _this.enabled = settings.enabled;\n }\n\n _this.loaded_ = true;\n return _this;\n }\n\n return AudioTrack;\n}(Track);\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\n\nvar VideoTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(VideoTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n function VideoTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions$3(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var selected = false;\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selected', {\n get: function get() {\n return selected;\n },\n set: function set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n\n selected = newSelected;\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('selectedchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.selected) {\n _this.selected = settings.selected;\n }\n\n return _this;\n }\n\n return VideoTrack;\n}(Track);\n\n/**\n * @memberof HTMLTrackElement\n * @typedef {HTMLTrackElement~ReadyState}\n * @enum {number}\n */\n\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\n\nvar HTMLTrackElement = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(HTMLTrackElement, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function HTMLTrackElement(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var readyState;\n var track = new TextTrack(options);\n _this.kind = track.kind;\n _this.src = track.src;\n _this.srclang = track.language;\n _this.label = track.label;\n _this[\"default\"] = track[\"default\"];\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n readyState: {\n get: function get() {\n return readyState;\n }\n },\n\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n track: {\n get: function get() {\n return track;\n }\n }\n });\n readyState = NONE;\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n _this.trigger({\n type: 'load',\n target: _assertThisInitialized(_this)\n });\n });\n return _this;\n }\n\n return HTMLTrackElement;\n}(EventTarget$2);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nvar NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = type + \"Tracks\";\n NORMAL[type].privateName = type + \"Tracks_\";\n});\nvar REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\n\nvar ALL = _extends({}, NORMAL, REMOTE);\n\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} Tech~SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\n\nfunction createTrackHelper(self, kind, label, language, options) {\n if (options === void 0) {\n options = {};\n }\n\n var tracks = self.textTracks();\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n\n if (language) {\n options.language = language;\n }\n\n options.tech = self;\n var track = new ALL.text.TrackClass(options);\n tracks.addTrack(track);\n return track;\n}\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link HTML5}\n *\n * @extends Component\n */\n\n\nvar Tech = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Tech, _Component);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Tech(options, ready) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (ready === void 0) {\n ready = function ready() {};\n }\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n _this = _Component.call(this, null, options, ready) || this;\n\n _this.onDurationChange_ = function (e) {\n return _this.onDurationChange(e);\n };\n\n _this.trackProgress_ = function (e) {\n return _this.trackProgress(e);\n };\n\n _this.trackCurrentTime_ = function (e) {\n return _this.trackCurrentTime(e);\n };\n\n _this.stopTrackingCurrentTime_ = function (e) {\n return _this.stopTrackingCurrentTime(e);\n };\n\n _this.disposeSourceHandler_ = function (e) {\n return _this.disposeSourceHandler(e);\n };\n\n _this.queuedHanders_ = new Set(); // keep track of whether the current source has played at all to\n // implement a very limited played()\n\n _this.hasStarted_ = false;\n\n _this.on('playing', function () {\n this.hasStarted_ = true;\n });\n\n _this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n\n ALL.names.forEach(function (name) {\n var props = ALL[name];\n\n if (options && options[props.getterName]) {\n _this[props.privateName] = options[props.getterName];\n }\n }); // Manually track progress in cases where the browser/tech doesn't report it.\n\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n } // Manually track timeupdates in cases where the browser/tech doesn't report it.\n\n\n if (!_this.featuresTimeupdateEvents) {\n _this.manualTimeUpdatesOn();\n }\n\n ['Text', 'Audio', 'Video'].forEach(function (track) {\n if (options[\"native\" + track + \"Tracks\"] === false) {\n _this[\"featuresNative\" + track + \"Tracks\"] = false;\n }\n });\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n _this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n _this.featuresNativeTextTracks = true;\n }\n\n if (!_this.featuresNativeTextTracks) {\n _this.emulateTextTracks();\n }\n\n _this.preloadTextTracks = options.preloadTextTracks !== false;\n _this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n\n _this.initTrackListeners(); // Turn on component tap events only if not using native controls\n\n\n if (!options.nativeControlsForTouch) {\n _this.emitTapEvents();\n }\n\n if (_this.constructor) {\n _this.name_ = _this.constructor.name || 'Unknown Tech';\n }\n\n return _this;\n }\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n\n\n var _proto = Tech.prototype;\n\n _proto.triggerSourceset = function triggerSourceset(src) {\n var _this2 = this;\n\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', function () {\n return _this2.setTimeout(function () {\n return _this2.triggerSourceset(src);\n }, 1);\n });\n }\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {EventTarget~Event}\n */\n\n\n this.trigger({\n src: src,\n type: 'sourceset'\n });\n }\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n ;\n\n _proto.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange_);\n this.manualProgress = true; // Trigger progress watching when a source begins loading\n\n this.one('ready', this.trackProgress_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n ;\n\n _proto.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n this.off('durationchange', this.onDurationChange_);\n }\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {EventTarget~Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n ;\n\n _proto.trackProgress = function trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {EventTarget~Event}\n */\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {EventTarget~Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n ;\n\n _proto.onDurationChange = function onDurationChange(event) {\n this.duration_ = this.duration();\n }\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n ;\n\n _proto.buffered = function buffered() {\n return createTimeRanges(0, 0);\n }\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n ;\n\n _proto.bufferedPercent = function bufferedPercent$1() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n ;\n\n _proto.stopTrackingProgress = function stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n ;\n\n _proto.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n this.on('play', this.trackCurrentTime_);\n this.on('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n ;\n\n _proto.manualTimeUpdatesOff = function manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime_);\n this.off('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n ;\n\n _proto.trackCurrentTime = function trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n }); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n }\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n ;\n\n _proto.stopTrackingCurrentTime = function stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval); // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n ;\n\n _proto.dispose = function dispose() {\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names); // Turn off any manual progress or timeupdate tracking\n\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n ;\n\n _proto.clearTracks = function clearTracks(types) {\n var _this3 = this;\n\n types = [].concat(types); // clear out all tracks because we can't reuse them between techs\n\n types.forEach(function (type) {\n var list = _this3[type + \"Tracks\"]() || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n if (type === 'text') {\n _this3.removeRemoteTextTrack(track);\n }\n\n list.removeTrack(track);\n }\n });\n }\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n ;\n\n _proto.cleanupAutoTextTracks = function cleanupAutoTextTracks() {\n var list = this.autoRemoteTextTracks_ || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n this.removeRemoteTextTrack(track);\n }\n }\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n ;\n\n _proto.reset = function reset() {}\n /**\n * Get the value of `crossOrigin` from the tech.\n *\n * @abstract\n *\n * @see {Html5#crossOrigin}\n */\n ;\n\n _proto.crossOrigin = function crossOrigin() {}\n /**\n * Set the value of `crossOrigin` on the tech.\n *\n * @abstract\n *\n * @param {string} crossOrigin the crossOrigin value\n * @see {Html5#setCrossOrigin}\n */\n ;\n\n _proto.setCrossOrigin = function setCrossOrigin() {}\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n ;\n\n _proto.error = function error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n\n return this.error_;\n }\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks whether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n ;\n\n _proto.played = function played() {\n if (this.hasStarted_) {\n return createTimeRanges(0, 0);\n }\n\n return createTimeRanges();\n }\n /**\n * Start playback\n *\n * @abstract\n *\n * @see {Html5#play}\n */\n ;\n\n _proto.play = function play() {}\n /**\n * Set whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#setScrubbing}\n */\n ;\n\n _proto.setScrubbing = function setScrubbing() {}\n /**\n * Get whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#scrubbing}\n */\n ;\n\n _proto.scrubbing = function scrubbing() {}\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @fires Tech#timeupdate\n */\n ;\n\n _proto.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n }\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n ;\n\n _proto.initTrackListeners = function initTrackListeners() {\n var _this4 = this;\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {EventTarget~Event}\n */\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n\n var trackListChanges = function trackListChanges() {\n _this4.trigger(name + \"trackchange\");\n };\n\n var tracks = _this4[props.getterName]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n _this4.on('dispose', function () {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n ;\n\n _proto.addWebVttScript_ = function addWebVttScript_() {\n var _this5 = this;\n\n if (window$1.WebVTT) {\n return;\n } // Initially, Tech.el_ is a child of a dummy-div wait until the Component system\n // signals that the Tech is ready at which point Tech.el_ is part of the DOM\n // before inserting the WebVTT script\n\n\n if (document.body.contains(this.el())) {\n // load via require if available and vtt.js script location was not passed in\n // as an option. novtt builds will turn the above require call into an empty object\n // which will cause this if check to always fail.\n if (!this.options_['vtt.js'] && isPlain(vtt) && Object.keys(vtt).length > 0) {\n this.trigger('vttjsloaded');\n return;\n } // load vtt.js via the script location option or the cdn of no location was\n // passed in\n\n\n var script = document.createElement('script');\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js';\n\n script.onload = function () {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjsloaded');\n };\n\n script.onerror = function () {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjserror');\n };\n\n this.on('dispose', function () {\n script.onload = null;\n script.onerror = null;\n }); // but have not loaded yet and we set it to true before the inject so that\n // we don't overwrite the injected window.WebVTT if it loads right away\n\n window$1.WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n }\n /**\n * Emulate texttracks\n *\n */\n ;\n\n _proto.emulateTextTracks = function emulateTextTracks() {\n var _this6 = this;\n\n var tracks = this.textTracks();\n var remoteTracks = this.remoteTextTracks();\n\n var handleAddTrack = function handleAddTrack(e) {\n return tracks.addTrack(e.track);\n };\n\n var handleRemoveTrack = function handleRemoveTrack(e) {\n return tracks.removeTrack(e.track);\n };\n\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n this.addWebVttScript_();\n\n var updateDisplay = function updateDisplay() {\n return _this6.trigger('texttrackchange');\n };\n\n var textTracksChanges = function textTracksChanges() {\n updateDisplay();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n this.on('dispose', function () {\n remoteTracks.off('addtrack', handleAddTrack);\n remoteTracks.off('removetrack', handleRemoveTrack);\n tracks.removeEventListener('change', textTracksChanges);\n tracks.removeEventListener('addtrack', textTracksChanges);\n tracks.removeEventListener('removetrack', textTracksChanges);\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n }\n });\n }\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n ;\n\n _proto.addTextTrack = function 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 * Create an emulated TextTrack for use by addRemoteTextTrack\n *\n * This is intended to be overridden by classes that inherit from\n * Tech in order to create native or custom TextTracks.\n *\n * @param {Object} options\n * The object should contain the options to initialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n ;\n\n _proto.createRemoteTextTrack = function createRemoteTextTrack(options) {\n var track = mergeOptions$3(options, {\n tech: this\n });\n return new REMOTE.remoteTextEl.TrackClass(track);\n }\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=true]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n * @deprecated The default functionality for this function will be equivalent\n * to \"manualCleanup=false\" in the future. The manualCleanup parameter will\n * also be removed.\n */\n ;\n\n _proto.addRemoteTextTrack = function addRemoteTextTrack(options, manualCleanup) {\n var _this7 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var htmlTrackElement = this.createRemoteTextTrack(options);\n\n if (manualCleanup !== true && manualCleanup !== false) {\n // deprecation warning\n log$1.warn('Calling addRemoteTextTrack without explicitly setting the \"manualCleanup\" parameter to `true` is deprecated and default to `false` in future version of video.js');\n manualCleanup = true;\n } // store HTMLTrackElement and TextTrack to remote list\n\n\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n\n if (manualCleanup !== true) {\n // create the TextTrackList if it doesn't exist\n this.ready(function () {\n return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track);\n });\n }\n\n return htmlTrackElement;\n }\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n ;\n\n _proto.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track); // remove HTMLTrackElement and TextTrack from remote list\n\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n }\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n ;\n\n _proto.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return {};\n }\n /**\n * Attempt to create a floating video window always on top of other windows\n * so that users may continue consuming media while they interact with other\n * content sites, or applications on their device.\n *\n * @see [Spec]{@link https://wicg.github.io/picture-in-picture}\n *\n * @return {Promise|undefined}\n * A promise with a Picture-in-Picture window if the browser supports\n * Promises (or one was passed in as an option). It returns undefined\n * otherwise.\n *\n * @abstract\n */\n ;\n\n _proto.requestPictureInPicture = function requestPictureInPicture() {\n var PromiseClass = this.options_.Promise || window$1.Promise;\n\n if (PromiseClass) {\n return PromiseClass.reject();\n }\n }\n /**\n * A method to check for the value of the 'disablePictureInPicture'