{"version":3,"sources":["webpack:///./node_modules/@videojs/vhs-utils/es/codecs.js","webpack:///./src/assets/svg/play-button--dark.svg","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/@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:///./src/components/Video.vue?990d","webpack:///src/components/Video.vue","webpack:///./src/components/Video.vue?4d88","webpack:///./src/components/Video.vue","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/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js"],"names":["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","length","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","i","DEFAULT_AUDIO_CODEC","DEFAULT_VIDEO_CODEC","module","exports","functional","render","_h","_vm","_c","data","_v","children","classNames","staticClass","style","staticStyle","attrs","rest","class","Object","assign","concat","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","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","setPrototypeOf","bind","__proto__","require","_inheritsLoose","subClass","superClass","prototype","create","constructor","DEFAULT_LOCATION","resolveUrl","baseUrl","relativeUrl","location","href","nativeURL","URL","protocolLess","removeLocation","buildAbsoluteURL","newUrl","protocol","_isNativeReflectConstruct","Reflect","construct","sham","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","isObject","merge","_len","arguments","objects","_key","reduce","source","keys","values","k","start","end","flatten","lists","x","y","from","list","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","apply","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","join","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","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","this","$createElement","_self","ref","directives","rawName","expression","poster","_t","on","onHandleClick","_e","staticRenderFns","components","IconPlay","props","src","String","required","playsinline","autoplay","loop","muted","controls","showBtnPlay","heading","slotContent","setup","liveui","sources","showPlayBtnOverlay","player","play","gtm","tempPercent","percentValue","trackingDuration","includes","showPoster","percent","getPercent","availableTrackingDurations","playerRef","addEventListener","pause","dispose","isPlaying","component","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","fromCharCode","contentTypeHeader","_contentType$split","SafeParseTuple","reviver","error","target","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","Function","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","args","Class","Constructor","instance","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","F","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","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","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","listener","off","splice","trigger","callbacks","_length","_i","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","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","FORCED","forced","targetduration","timeOffset","precise","cueOut","cueOutCont","cueIn","skip","warnOnMissingAttributes_","segmentIndex","partIndex","renditionReports","canBlockReload","canSkipDateranges","hint","isPart","otherHint","report","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","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","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","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","wait","vjs","setWindowLoaded","removeEventListener","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","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_","getChildById","getChild","getDescendant","currentChild","addChild","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","hadControls_","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","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","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","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_","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","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_","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_","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","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","stat","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","scrollSetting","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","atob","Buffer","decodeB64ToUint8Array","b64Text","decodedString"],"mappings":"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","file":"js/chunk-34e05250.1ec4d794.js","sourcesContent":["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';","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 26 26\"}, attrs),\n ...rest,\n },\n children.concat([_c('circle',{attrs:{\"cx\":\"13\",\"cy\":\"13\",\"r\":\"13\",\"fill\":\"#012B32\"}}),_c('path',{attrs:{\"d\":\"M11 9.943v6.271a.919.919 0 001.453.748l4.408-3.148a1 1 0 000-1.628L12.58 9.13a1 1 0 00-1.58.813z\",\"fill\":\"#fff\",\"stroke\":\"#fff\"}})])\n )\n }\n }\n ","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 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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"c-video\"},[_c('video-js',{ref:\"playerRef\",staticClass:\"video-js\"}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPoster),expression:\"showPoster\"}]},[(!_vm.poster)?_vm._t(\"default\"):_c('img',{attrs:{\"src\":_vm.poster,\"alt\":\"Video poster\"}})],2),(_vm.showPlayBtnOverlay)?_c('button',{staticClass:\"c-video-play-button\",on:{\"click\":_vm.onHandleClick}},[_c('IconPlay',{staticClass:\"icon\"})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Video.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Video.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Video.vue?vue&type=template&id=d2022d3c&\"\nimport script from \"./Video.vue?vue&type=script&lang=js&\"\nexport * from \"./Video.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'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'