-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
dash.mss.debug.js.map
1 lines (1 loc) · 331 KB
/
dash.mss.debug.js.map
1
{"version":3,"sources":["webpack://dashjs/webpack/universalModuleDefinition","webpack://dashjs/webpack/bootstrap","webpack://dashjs/./externals/BigInteger.js","webpack://dashjs/(webpack)/buildin/global.js","webpack://dashjs/(webpack)/buildin/module.js","webpack://dashjs/./src/core/errors/ErrorsBase.js","webpack://dashjs/./src/core/events/EventsBase.js","webpack://dashjs/./src/mss/MssFragmentInfoController.js","webpack://dashjs/./src/mss/MssFragmentMoofProcessor.js","webpack://dashjs/./src/mss/MssFragmentMoovProcessor.js","webpack://dashjs/./src/mss/MssFragmentProcessor.js","webpack://dashjs/./src/mss/MssHandler.js","webpack://dashjs/./src/mss/errors/MssErrors.js","webpack://dashjs/./src/mss/index.js","webpack://dashjs/./src/mss/parser/MssParser.js","webpack://dashjs/./src/streaming/MediaPlayerEvents.js","webpack://dashjs/./src/streaming/vo/DashJSError.js","webpack://dashjs/./src/streaming/vo/DataChunk.js","webpack://dashjs/./src/streaming/vo/FragmentRequest.js","webpack://dashjs/./src/streaming/vo/metrics/HTTPRequest.js"],"names":["bigInt","undefined","BASE","LOG_BASE","MAX_INT","MAX_INT_ARR","smallToArray","DEFAULT_ALPHABET","supportsNativeBigInt","BigInt","Integer","v","radix","alphabet","caseSensitive","parseValue","parseBase","BigInteger","value","sign","isSmall","prototype","Object","create","SmallInteger","NativeBigInt","isPrecise","n","Math","floor","arrayToSmall","arr","trim","length","compareAbs","i","createArray","x","Array","truncate","ceil","add","a","b","l_a","l_b","r","carry","base","sum","push","addAny","addSmall","l","subtract","negate","abs","plus","a_l","b_l","borrow","difference","subtractAny","subtractSmall","minus","small","multiplyLong","product","a_i","b_j","j","multiplySmall","shiftLeft","concat","multiplyKaratsuba","y","max","slice","d","c","ac","bd","abcd","useKaratsuba","l1","l2","multiply","times","multiplySmallAndArray","_multiplyBySmall","square","a_j","divMod1","result","divisorMostSignificantDigit","lambda","remainder","divisor","quotientDigit","shift","q","divModSmall","divMod2","part","guess","xlen","highx","highy","check","unshift","reverse","quotient","divModAny","self","Error","comparison","qSign","mod","mSign","divmod","divide","over","pow","isEven","toString","_0","_1","_2","isNegative","modPow","exp","isZero","isPositive","isOdd","compare","Infinity","compareTo","equals","eq","notEquals","neq","greater","gt","lesser","lt","greaterOrEquals","geq","lesserOrEquals","leq","isUnit","isDivisibleBy","isBasicPrime","millerRabinTest","nPrev","prev","t","next","isPrime","strict","bits","bitLength","logN","log","toJSNumber","isProbablePrime","iterations","randBetween","modInv","zero","newT","one","newR","lastT","lastR","powersOfTwo","powers2Length","highestPower2","shift_isSmall","String","shiftRight","remQuo","bitwise","fn","xSign","ySign","xRem","not","yRem","xDigit","yDigit","xDivMod","yDivMod","and","or","xor","LOBMASK_I","LOBMASK_BI","roughLOB","integerLogarithm","tmp","p","e","min","gcd","lcm","low","high","range","random","digits","toBase","restricted","top","digit","fromArray","text","toLowerCase","absBase","alphabetValues","start","parseBaseFromArray","val","stringify","apply","map","valueOf","neg","Number","out","left","toBaseString","join","toArray","str","zeros","toJSON","parseInt","parseStringValue","split","decimalPlace","indexOf","isValid","test","parseNumberValue","minusOne","isInstance","module","hasOwnProperty","exports","define","ErrorsBase","errors","config","override","publicOnly","err","EventsBase","events","evt","MssFragmentInfoController","instance","logger","fragmentModel","started","type","loadFragmentTimeout","startTime","startFragmentTime","index","streamProcessor","baseURLController","debug","controllerType","setup","getLogger","initialize","getType","getFragmentModel","loadNextFragmentInfo","stop","clearTimeout","reset","representation","getCurrentRepresentation","manifest","adaptation","period","mpd","Period_asArray","AdaptationSet_asArray","segments","SegmentTemplate","SegmentTimeline","S_asArray","segment","request","getRequestForSegment","requestFragment","call","timescale","FragmentRequest","mediaType","HTTPRequest","MSS_FRAGMENT_INFO_SEGMENT_TYPE","duration","quality","mediaInfo","getMediaInfo","adaptationIndex","representationId","id","url","resolve","path","media","replace","bandwidth","tManifest","representationController","getRepresentationController","isFragmentLoadedOrPending","executeRequest","fragmentInfoLoaded","response","error","deltaFragmentTime","deltaTime","delay","Date","getTime","setTimeout","__dashjs_factory_name","dashjs","FactoryMaker","getClassFactory","MssFragmentMoofProcessor","dashMetrics","playbackController","errorHandler","errHandler","eventBus","ISOBoxer","processTfrf","tfrf","tfdt","timeShiftBufferDepth","DashJSError","MssErrors","MSS_NO_TFRF_CODE","MSS_NO_TFRF_MESSAGE","S","entries","entry","segmentTime","endTime","availabilityStartTime","parseFloat","fragment_absolute_time","end","baseMediaDecodeTime","updateDVR","getStreamInfo","manifestInfo","fragment_duration","lastSegment","trigger","Events","MANIFEST_VALIDITY_CHANGED","sender","newDuration","isPaused","splice","dvrInfos","getCurrentDVRInfo","addDVRInfo","updateCurrentTime","getBoxOffset","parent","offset","boxes","size","convertFragment","isoFile","parseBuffer","tfhd","fetch","track_ID","traf","createFullBox","version","flags","trun","tfxd","_parent","sepiff","usertype","saio","entry_count","saiz","sample_count","default_sample_info_size","sample_info_size","NumberOfEntries","moof","getLength","data_offset","trafPosInMoof","sencPosInTraf","write","updateSegmentList","MssFragmentMoovProcessor","NALUTYPE_SPS","NALUTYPE_PPS","constants","protectionController","adaptationSet","contentProtection","trackId","createFtypBox","ftyp","createBox","major_brand","minor_version","compatible_brands","createMoovBox","moov","createMvhdBox","trak","createTkhdBox","mdia","createMdhdBox","createHdlrBox","minf","VIDEO","createVmhdBox","AUDIO","createSmhdBox","dinf","createDrefBox","stbl","stts","_data","stsc","stco","stsz","createStsdBox","mvex","createTrexBox","supportedKS","getSupportedKeySystemsFromContentProtection","createProtectionSystemSpecificHeaderBox","mvhd","creation_time","modification_time","round","rate","volume","reserved1","reserved2","matrix","pre_defined","next_track_ID","tkhd","layer","alternate_group","reserved3","width","height","mdhd","language","lang","hdlr","handler_type","name","reserved","vmhd","graphicsmode","opcolor","smhd","balance","dref","location","stsd","createSampleEntry","codec","codecs","substring","createAVCVisualSampleEntry","createMP4AudioSampleEntry","code","MSS_UNSUPPORTED_CODEC_CODE","message","MSS_UNSUPPORTED_CODEC_MESSAGE","data","avc1","data_reference_index","pre_defined1","pre_defined2","horizresolution","vertresolution","frame_count","compressorname","depth","pre_defined3","createAVC1ConfigurationRecord","sinf","createOriginalFormatBox","createSchemeTypeBox","createSchemeInformationBox","avcC","avcCLength","sps","pps","AVCProfileIndication","AVCLevelIndication","profile_compatibility","nalus","codecPrivateData","naluBytes","naluType","hexStringtoBuffer","Uint8Array","set","mp4a","channelcount","audioChannels","samplesize","reserved_3","samplerate","audioSamplingRate","esds","createMPEG4AACESDescriptor","audioSpecificConfig","esdsLength","frma","data_format","stringToCharCode","schm","scheme_type","scheme_version","schi","createTrackEncryptionBox","keySystems","pssh_bytes","pssh","parsedBuffer","initData","Utils","appendBox","tenc","default_IsEncrypted","default_IV_size","default_KID","trex","default_sample_description_index","default_sample_duration","default_sample_size","default_sample_flags","buf","charCodeAt","generateMoov","rep","arrayBuffer","ContentProtection","createFile","arrayEqual","arr1","arr2","every","element","saioProcessor","_procFullBox","_procField","_procFieldArray","saizProcessor","sencProcessor","_procEntries","_procEntryField","_procSubEntries","clearAndCryptedData","uuidProcessor","tfxdUserType","tfrfUserType","sepiffUserType","_parsing","fragment_count","MssFragmentProcessor","context","mssFragmentMoovProcessor","mssFragmentMoofProcessor","addBoxProcessor","processFragment","MssHandler","initSegmentType","streamController","mssFragmentProcessor","mssParser","fragmentInfoControllers","getStreamProcessor","getActiveStreamProcessors","filter","processor","getFragmentInfoController","controller","createDataChunk","streamId","endFragment","chunk","DataChunk","segmentType","startFragmentInfoControllers","processors","forEach","TEXT","fragmentInfoController","stopFragmentInfoControllers","onInitFragmentNeeded","streamInfo","FRAGMENT_LOADING_PROGRESS","bytes","INIT_FRAGMENT_LOADED","onSegmentMediaLoaded","isDynamic","dvrWindowSize","onPlaybackPaused","getIsDynamic","onPlaybackSeeking","onTTMLPreProcess","ttmlSubtitles","registerEvents","on","INIT_FRAGMENT_NEEDED","priority","getSingletonFactoryByName","getClassName","EVENT_PRIORITY_HIGH","PLAYBACK_PAUSED","PLAYBACK_SEEKING","FRAGMENT_LOADING_COMPLETED","TTML_TO_PARSE","off","createMssParser","MssParser","factory","updateClassFactory","mssErrors","window","global","BASE64","manifestModel","settings","DEFAULT_TIME_SCALE","SUPPORTED_CODECS","ROLE","ACCESSIBILITY","samplingFrequencyIndex","mimeTypeMap","initialBufferSettings","getAttributeAsBoolean","node","attrName","getAttribute","mapPeriod","smoothStreamingMedia","streams","getElementsByTagName","mapAdaptationSet","AdaptationSet","streamIndex","representations","segmentTemplate","qualityLevels","fallBackId","contentType","mimeType","subType","maxWidth","maxHeight","role","schemeIdUri","Role","Role_asArray","accessibility","Accessibility","Accessibility_asArray","mapSegmentTemplate","BaseURL","Id","mapRepresentation","Representation","Representation_asArray","qualityLevel","fourCCValue","isNaN","toUpperCase","warn","getH264Codec","getAACCodec","STPP","nalHeader","avcoti","exec","substr","samplingRate","objectType","codecPrivateDataHex","arr16","indexFreq","extensionSamplingFrequencyIndex","Channels","Uint16Array","setAttribute","mediaUrl","streamIndexTimeScale","mapSegmentTimeline","availabilityTimeOffset","segmentTimeline","chunks","prevSegment","MAX_SAFE_INTEGER","getKIDFromProtectionHeader","protectionHeader","prHeader","wrmHeader","xmlReader","KID","decodeArray","firstChild","getWRMHeaderFromPRHeader","buffer","fromCharCode","DOMParser","parseFromString","querySelector","textContent","convertUuidEndianness","recordCount","recordType","recordLength","recordValue","subarray","uuid","swapBytes","pos1","pos2","temp","createPRContentProtection","pro","__text","__prefix","pro_asArray","createWidevineContentProtection","widevineCP","wvCencHeader","encodeASCII","processManifest","xmlDoc","contentProtections","protection","adaptations","timestampOffset","segmentDuration","protocol","profiles","dvrWindowLength","mediaPresentationDuration","minBufferTime","ttmlTimeIsRelative","refreshManifestOnSwitchTrack","doNotUpdateDVRWindowOnBufferUpdated","ignorePostponeTimePeriod","Period","ContentProtection_asArray","initialization","targetLiveDelay","get","streaming","liveDelay","liveDelayFragmentCount","targetDelayCapping","bufferTime","stableBufferTime","bufferTimeAtTopQuality","bufferTimeAtTopQualityLongForm","calcFromSegmentTimeline","timeShiftBuffer","update","prevManifest","getValue","presentationTimeOffset","parseDOM","parser","getMatchers","getIron","internalParse","performance","now","xmlParseTime","mss2dashTime","info","toPrecision","parse","MediaPlayerEvents","AST_IN_FUTURE","BUFFER_EMPTY","BUFFER_LOADED","BUFFER_LEVEL_STATE_CHANGED","BUFFER_LEVEL_UPDATED","DYNAMIC_TO_STATIC","ERROR","FRAGMENT_LOADING_STARTED","FRAGMENT_LOADING_ABANDONED","LOG","MANIFEST_LOADED","METRICS_CHANGED","METRIC_CHANGED","METRIC_ADDED","METRIC_UPDATED","PERIOD_SWITCH_STARTED","PERIOD_SWITCH_COMPLETED","QUALITY_CHANGE_REQUESTED","QUALITY_CHANGE_RENDERED","TRACK_CHANGE_RENDERED","STREAM_INITIALIZING","STREAM_UPDATED","STREAM_ACTIVATED","STREAM_DEACTIVATED","STREAM_INITIALIZED","STREAM_TEARDOWN_COMPLETE","TEXT_TRACKS_ADDED","TEXT_TRACK_ADDED","TTML_PARSED","CAPTION_RENDERED","CAPTION_CONTAINER_RESIZE","CAN_PLAY","CAN_PLAY_THROUGH","PLAYBACK_ENDED","PLAYBACK_ERROR","PLAYBACK_NOT_ALLOWED","PLAYBACK_METADATA_LOADED","PLAYBACK_LOADED_DATA","PLAYBACK_PLAYING","PLAYBACK_PROGRESS","PLAYBACK_RATE_CHANGED","PLAYBACK_SEEKED","PLAYBACK_STALLED","PLAYBACK_STARTED","PLAYBACK_TIME_UPDATED","PLAYBACK_VOLUME_CHANGED","PLAYBACK_WAITING","EVENT_MODE_ON_START","EVENT_MODE_ON_RECEIVE","CONFORMANCE_VIOLATION","REPRESENTATION_SWITCH","ADAPTATION_SET_REMOVED_NO_CAPABILITIES","CONTENT_STEERING_REQUEST_COMPLETED","mediaPlayerEvents","NaN","action","ACTION_DOWNLOAD","mediaStartTime","serviceLocation","requestStartDate","firstByteDate","requestEndDate","availabilityEndTime","wallStartTime","bytesLoaded","bytesTotal","delayLoadingTime","responseType","INIT_SEGMENT_TYPE","init","MEDIA_SEGMENT_TYPE","ACTION_COMPLETE","tcpid","actualurl","trequest","tresponse","responsecode","interval","trace","_stream","_tfinish","_mediaduration","_quality","_responseHeaders","_serviceLocation","_fileLoaderType","HTTPRequestTrace","s","GET","HEAD","MPD_TYPE","XLINK_EXPANSION_TYPE","INDEX_SEGMENT_TYPE","BITSTREAM_SWITCHING_SEGMENT_TYPE","DVB_REPORTING_TYPE","LICENSE","CONTENT_STEERING_TYPE","OTHER_TYPE"],"mappings":"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;;;;;;;;;;;AC7ZhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA,IAIM9f,WAAW,6BACb,qBAAY+I,IAAI,EAAEE,OAAO,EAAEE,IAAI,EAAE;EAAA;EAC7B,IAAI,CAACJ,IAAI,GAAGA,IAAI,IAAI,IAAI;EACxB,IAAI,CAACE,OAAO,GAAGA,OAAO,IAAI,IAAI;EAC9B,IAAI,CAACE,IAAI,GAAGA,IAAI,IAAI,IAAI;AAC5B,CAAC;AAGUnJ,0EAAW,E;;;;;;;;;;;;;;;;;;;AC1C1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAHA,IAIMsQ,SAAS;AACX;AACA,qBAAc;EAAA;EACV,IAAI,CAACH,QAAQ,GAAG,IAAI;EACpB,IAAI,CAAC3S,SAAS,GAAG,IAAI;EACrB,IAAI,CAAC+S,WAAW,GAAG,IAAI;EACvB,IAAI,CAAChT,OAAO,GAAGwiB,GAAG;EAClB,IAAI,CAAC7kB,KAAK,GAAG6kB,GAAG;EAChB,IAAI,CAAC9O,KAAK,GAAG,IAAI;EACjB,IAAI,CAAChZ,KAAK,GAAG8nB,GAAG;EAChB,IAAI,CAACnf,GAAG,GAAGmf,GAAG;EACd,IAAI,CAACziB,QAAQ,GAAGyiB,GAAG;EACnB,IAAI,CAACpiB,gBAAgB,GAAG,IAAI;EAC5B,IAAI,CAACyS,WAAW,GAAG,IAAI;AAC3B,CAAC;AAGUE,wEAAS,E;;;;;;;;;;;;;;;;;;;;ACpDxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","file":"dash.mss.debug.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dashjs\"] = factory();\n\telse\n\t\troot[\"dashjs\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/mss/index.js\");\n","var bigInt=function(undefined){\"use strict\";var BASE=1e7,LOG_BASE=7,MAX_INT=9007199254740992,MAX_INT_ARR=smallToArray(MAX_INT),DEFAULT_ALPHABET=\"0123456789abcdefghijklmnopqrstuvwxyz\";var supportsNativeBigInt=typeof BigInt===\"function\";function Integer(v,radix,alphabet,caseSensitive){if(typeof v===\"undefined\")return Integer[0];if(typeof radix!==\"undefined\")return+radix===10&&!alphabet?parseValue(v):parseBase(v,radix,alphabet,caseSensitive);return parseValue(v)}function BigInteger(value,sign){this.value=value;this.sign=sign;this.isSmall=false}BigInteger.prototype=Object.create(Integer.prototype);function SmallInteger(value){this.value=value;this.sign=value<0;this.isSmall=true}SmallInteger.prototype=Object.create(Integer.prototype);function NativeBigInt(value){this.value=value}NativeBigInt.prototype=Object.create(Integer.prototype);function isPrecise(n){return-MAX_INT<n&&n<MAX_INT}function smallToArray(n){if(n<1e7)return[n];if(n<1e14)return[n%1e7,Math.floor(n/1e7)];return[n%1e7,Math.floor(n/1e7)%1e7,Math.floor(n/1e14)]}function arrayToSmall(arr){trim(arr);var length=arr.length;if(length<4&&compareAbs(arr,MAX_INT_ARR)<0){switch(length){case 0:return 0;case 1:return arr[0];case 2:return arr[0]+arr[1]*BASE;default:return arr[0]+(arr[1]+arr[2]*BASE)*BASE}}return arr}function trim(v){var i=v.length;while(v[--i]===0);v.length=i+1}function createArray(length){var x=new Array(length);var i=-1;while(++i<length){x[i]=0}return x}function truncate(n){if(n>0)return Math.floor(n);return Math.ceil(n)}function add(a,b){var l_a=a.length,l_b=b.length,r=new Array(l_a),carry=0,base=BASE,sum,i;for(i=0;i<l_b;i++){sum=a[i]+b[i]+carry;carry=sum>=base?1:0;r[i]=sum-carry*base}while(i<l_a){sum=a[i]+carry;carry=sum===base?1:0;r[i++]=sum-carry*base}if(carry>0)r.push(carry);return r}function addAny(a,b){if(a.length>=b.length)return add(a,b);return add(b,a)}function addSmall(a,carry){var l=a.length,r=new Array(l),base=BASE,sum,i;for(i=0;i<l;i++){sum=a[i]-base+carry;carry=Math.floor(sum/base);r[i]=sum-carry*base;carry+=1}while(carry>0){r[i++]=carry%base;carry=Math.floor(carry/base)}return r}BigInteger.prototype.add=function(v){var n=parseValue(v);if(this.sign!==n.sign){return this.subtract(n.negate())}var a=this.value,b=n.value;if(n.isSmall){return new BigInteger(addSmall(a,Math.abs(b)),this.sign)}return new BigInteger(addAny(a,b),this.sign)};BigInteger.prototype.plus=BigInteger.prototype.add;SmallInteger.prototype.add=function(v){var n=parseValue(v);var a=this.value;if(a<0!==n.sign){return this.subtract(n.negate())}var b=n.value;if(n.isSmall){if(isPrecise(a+b))return new SmallInteger(a+b);b=smallToArray(Math.abs(b))}return new BigInteger(addSmall(b,Math.abs(a)),a<0)};SmallInteger.prototype.plus=SmallInteger.prototype.add;NativeBigInt.prototype.add=function(v){return new NativeBigInt(this.value+parseValue(v).value)};NativeBigInt.prototype.plus=NativeBigInt.prototype.add;function subtract(a,b){var a_l=a.length,b_l=b.length,r=new Array(a_l),borrow=0,base=BASE,i,difference;for(i=0;i<b_l;i++){difference=a[i]-borrow-b[i];if(difference<0){difference+=base;borrow=1}else borrow=0;r[i]=difference}for(i=b_l;i<a_l;i++){difference=a[i]-borrow;if(difference<0)difference+=base;else{r[i++]=difference;break}r[i]=difference}for(;i<a_l;i++){r[i]=a[i]}trim(r);return r}function subtractAny(a,b,sign){var value;if(compareAbs(a,b)>=0){value=subtract(a,b)}else{value=subtract(b,a);sign=!sign}value=arrayToSmall(value);if(typeof value===\"number\"){if(sign)value=-value;return new SmallInteger(value)}return new BigInteger(value,sign)}function subtractSmall(a,b,sign){var l=a.length,r=new Array(l),carry=-b,base=BASE,i,difference;for(i=0;i<l;i++){difference=a[i]+carry;carry=Math.floor(difference/base);difference%=base;r[i]=difference<0?difference+base:difference}r=arrayToSmall(r);if(typeof r===\"number\"){if(sign)r=-r;return new SmallInteger(r)}return new BigInteger(r,sign)}BigInteger.prototype.subtract=function(v){var n=parseValue(v);if(this.sign!==n.sign){return this.add(n.negate())}var a=this.value,b=n.value;if(n.isSmall)return subtractSmall(a,Math.abs(b),this.sign);return subtractAny(a,b,this.sign)};BigInteger.prototype.minus=BigInteger.prototype.subtract;SmallInteger.prototype.subtract=function(v){var n=parseValue(v);var a=this.value;if(a<0!==n.sign){return this.add(n.negate())}var b=n.value;if(n.isSmall){return new SmallInteger(a-b)}return subtractSmall(b,Math.abs(a),a>=0)};SmallInteger.prototype.minus=SmallInteger.prototype.subtract;NativeBigInt.prototype.subtract=function(v){return new NativeBigInt(this.value-parseValue(v).value)};NativeBigInt.prototype.minus=NativeBigInt.prototype.subtract;BigInteger.prototype.negate=function(){return new BigInteger(this.value,!this.sign)};SmallInteger.prototype.negate=function(){var sign=this.sign;var small=new SmallInteger(-this.value);small.sign=!sign;return small};NativeBigInt.prototype.negate=function(){return new NativeBigInt(-this.value)};BigInteger.prototype.abs=function(){return new BigInteger(this.value,false)};SmallInteger.prototype.abs=function(){return new SmallInteger(Math.abs(this.value))};NativeBigInt.prototype.abs=function(){return new NativeBigInt(this.value>=0?this.value:-this.value)};function multiplyLong(a,b){var a_l=a.length,b_l=b.length,l=a_l+b_l,r=createArray(l),base=BASE,product,carry,i,a_i,b_j;for(i=0;i<a_l;++i){a_i=a[i];for(var j=0;j<b_l;++j){b_j=b[j];product=a_i*b_j+r[i+j];carry=Math.floor(product/base);r[i+j]=product-carry*base;r[i+j+1]+=carry}}trim(r);return r}function multiplySmall(a,b){var l=a.length,r=new Array(l),base=BASE,carry=0,product,i;for(i=0;i<l;i++){product=a[i]*b+carry;carry=Math.floor(product/base);r[i]=product-carry*base}while(carry>0){r[i++]=carry%base;carry=Math.floor(carry/base)}return r}function shiftLeft(x,n){var r=[];while(n-- >0)r.push(0);return r.concat(x)}function multiplyKaratsuba(x,y){var n=Math.max(x.length,y.length);if(n<=30)return multiplyLong(x,y);n=Math.ceil(n/2);var b=x.slice(n),a=x.slice(0,n),d=y.slice(n),c=y.slice(0,n);var ac=multiplyKaratsuba(a,c),bd=multiplyKaratsuba(b,d),abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d));var product=addAny(addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)),shiftLeft(bd,2*n));trim(product);return product}function useKaratsuba(l1,l2){return-.012*l1-.012*l2+15e-6*l1*l2>0}BigInteger.prototype.multiply=function(v){var n=parseValue(v),a=this.value,b=n.value,sign=this.sign!==n.sign,abs;if(n.isSmall){if(b===0)return Integer[0];if(b===1)return this;if(b===-1)return this.negate();abs=Math.abs(b);if(abs<BASE){return new BigInteger(multiplySmall(a,abs),sign)}b=smallToArray(abs)}if(useKaratsuba(a.length,b.length))return new BigInteger(multiplyKaratsuba(a,b),sign);return new BigInteger(multiplyLong(a,b),sign)};BigInteger.prototype.times=BigInteger.prototype.multiply;function multiplySmallAndArray(a,b,sign){if(a<BASE){return new BigInteger(multiplySmall(b,a),sign)}return new BigInteger(multiplyLong(b,smallToArray(a)),sign)}SmallInteger.prototype._multiplyBySmall=function(a){if(isPrecise(a.value*this.value)){return new SmallInteger(a.value*this.value)}return multiplySmallAndArray(Math.abs(a.value),smallToArray(Math.abs(this.value)),this.sign!==a.sign)};BigInteger.prototype._multiplyBySmall=function(a){if(a.value===0)return Integer[0];if(a.value===1)return this;if(a.value===-1)return this.negate();return multiplySmallAndArray(Math.abs(a.value),this.value,this.sign!==a.sign)};SmallInteger.prototype.multiply=function(v){return parseValue(v)._multiplyBySmall(this)};SmallInteger.prototype.times=SmallInteger.prototype.multiply;NativeBigInt.prototype.multiply=function(v){return new NativeBigInt(this.value*parseValue(v).value)};NativeBigInt.prototype.times=NativeBigInt.prototype.multiply;function square(a){var l=a.length,r=createArray(l+l),base=BASE,product,carry,i,a_i,a_j;for(i=0;i<l;i++){a_i=a[i];carry=0-a_i*a_i;for(var j=i;j<l;j++){a_j=a[j];product=2*(a_i*a_j)+r[i+j]+carry;carry=Math.floor(product/base);r[i+j]=product-carry*base}r[i+l]=carry}trim(r);return r}BigInteger.prototype.square=function(){return new BigInteger(square(this.value),false)};SmallInteger.prototype.square=function(){var value=this.value*this.value;if(isPrecise(value))return new SmallInteger(value);return new BigInteger(square(smallToArray(Math.abs(this.value))),false)};NativeBigInt.prototype.square=function(v){return new NativeBigInt(this.value*this.value)};function divMod1(a,b){var a_l=a.length,b_l=b.length,base=BASE,result=createArray(b.length),divisorMostSignificantDigit=b[b_l-1],lambda=Math.ceil(base/(2*divisorMostSignificantDigit)),remainder=multiplySmall(a,lambda),divisor=multiplySmall(b,lambda),quotientDigit,shift,carry,borrow,i,l,q;if(remainder.length<=a_l)remainder.push(0);divisor.push(0);divisorMostSignificantDigit=divisor[b_l-1];for(shift=a_l-b_l;shift>=0;shift--){quotientDigit=base-1;if(remainder[shift+b_l]!==divisorMostSignificantDigit){quotientDigit=Math.floor((remainder[shift+b_l]*base+remainder[shift+b_l-1])/divisorMostSignificantDigit)}carry=0;borrow=0;l=divisor.length;for(i=0;i<l;i++){carry+=quotientDigit*divisor[i];q=Math.floor(carry/base);borrow+=remainder[shift+i]-(carry-q*base);carry=q;if(borrow<0){remainder[shift+i]=borrow+base;borrow=-1}else{remainder[shift+i]=borrow;borrow=0}}while(borrow!==0){quotientDigit-=1;carry=0;for(i=0;i<l;i++){carry+=remainder[shift+i]-base+divisor[i];if(carry<0){remainder[shift+i]=carry+base;carry=0}else{remainder[shift+i]=carry;carry=1}}borrow+=carry}result[shift]=quotientDigit}remainder=divModSmall(remainder,lambda)[0];return[arrayToSmall(result),arrayToSmall(remainder)]}function divMod2(a,b){var a_l=a.length,b_l=b.length,result=[],part=[],base=BASE,guess,xlen,highx,highy,check;while(a_l){part.unshift(a[--a_l]);trim(part);if(compareAbs(part,b)<0){result.push(0);continue}xlen=part.length;highx=part[xlen-1]*base+part[xlen-2];highy=b[b_l-1]*base+b[b_l-2];if(xlen>b_l){highx=(highx+1)*base}guess=Math.ceil(highx/highy);do{check=multiplySmall(b,guess);if(compareAbs(check,part)<=0)break;guess--}while(guess);result.push(guess);part=subtract(part,check)}result.reverse();return[arrayToSmall(result),arrayToSmall(part)]}function divModSmall(value,lambda){var length=value.length,quotient=createArray(length),base=BASE,i,q,remainder,divisor;remainder=0;for(i=length-1;i>=0;--i){divisor=remainder*base+value[i];q=truncate(divisor/lambda);remainder=divisor-q*lambda;quotient[i]=q|0}return[quotient,remainder|0]}function divModAny(self,v){var value,n=parseValue(v);if(supportsNativeBigInt){return[new NativeBigInt(self.value/n.value),new NativeBigInt(self.value%n.value)]}var a=self.value,b=n.value;var quotient;if(b===0)throw new Error(\"Cannot divide by zero\");if(self.isSmall){if(n.isSmall){return[new SmallInteger(truncate(a/b)),new SmallInteger(a%b)]}return[Integer[0],self]}if(n.isSmall){if(b===1)return[self,Integer[0]];if(b==-1)return[self.negate(),Integer[0]];var abs=Math.abs(b);if(abs<BASE){value=divModSmall(a,abs);quotient=arrayToSmall(value[0]);var remainder=value[1];if(self.sign)remainder=-remainder;if(typeof quotient===\"number\"){if(self.sign!==n.sign)quotient=-quotient;return[new SmallInteger(quotient),new SmallInteger(remainder)]}return[new BigInteger(quotient,self.sign!==n.sign),new SmallInteger(remainder)]}b=smallToArray(abs)}var comparison=compareAbs(a,b);if(comparison===-1)return[Integer[0],self];if(comparison===0)return[Integer[self.sign===n.sign?1:-1],Integer[0]];if(a.length+b.length<=200)value=divMod1(a,b);else value=divMod2(a,b);quotient=value[0];var qSign=self.sign!==n.sign,mod=value[1],mSign=self.sign;if(typeof quotient===\"number\"){if(qSign)quotient=-quotient;quotient=new SmallInteger(quotient)}else quotient=new BigInteger(quotient,qSign);if(typeof mod===\"number\"){if(mSign)mod=-mod;mod=new SmallInteger(mod)}else mod=new BigInteger(mod,mSign);return[quotient,mod]}BigInteger.prototype.divmod=function(v){var result=divModAny(this,v);return{quotient:result[0],remainder:result[1]}};NativeBigInt.prototype.divmod=SmallInteger.prototype.divmod=BigInteger.prototype.divmod;BigInteger.prototype.divide=function(v){return divModAny(this,v)[0]};NativeBigInt.prototype.over=NativeBigInt.prototype.divide=function(v){return new NativeBigInt(this.value/parseValue(v).value)};SmallInteger.prototype.over=SmallInteger.prototype.divide=BigInteger.prototype.over=BigInteger.prototype.divide;BigInteger.prototype.mod=function(v){return divModAny(this,v)[1]};NativeBigInt.prototype.mod=NativeBigInt.prototype.remainder=function(v){return new NativeBigInt(this.value%parseValue(v).value)};SmallInteger.prototype.remainder=SmallInteger.prototype.mod=BigInteger.prototype.remainder=BigInteger.prototype.mod;BigInteger.prototype.pow=function(v){var n=parseValue(v),a=this.value,b=n.value,value,x,y;if(b===0)return Integer[1];if(a===0)return Integer[0];if(a===1)return Integer[1];if(a===-1)return n.isEven()?Integer[1]:Integer[-1];if(n.sign){return Integer[0]}if(!n.isSmall)throw new Error(\"The exponent \"+n.toString()+\" is too large.\");if(this.isSmall){if(isPrecise(value=Math.pow(a,b)))return new SmallInteger(truncate(value))}x=this;y=Integer[1];while(true){if(b&1===1){y=y.times(x);--b}if(b===0)break;b/=2;x=x.square()}return y};SmallInteger.prototype.pow=BigInteger.prototype.pow;NativeBigInt.prototype.pow=function(v){var n=parseValue(v);var a=this.value,b=n.value;var _0=BigInt(0),_1=BigInt(1),_2=BigInt(2);if(b===_0)return Integer[1];if(a===_0)return Integer[0];if(a===_1)return Integer[1];if(a===BigInt(-1))return n.isEven()?Integer[1]:Integer[-1];if(n.isNegative())return new NativeBigInt(_0);var x=this;var y=Integer[1];while(true){if((b&_1)===_1){y=y.times(x);--b}if(b===_0)break;b/=_2;x=x.square()}return y};BigInteger.prototype.modPow=function(exp,mod){exp=parseValue(exp);mod=parseValue(mod);if(mod.isZero())throw new Error(\"Cannot take modPow with modulus 0\");var r=Integer[1],base=this.mod(mod);while(exp.isPositive()){if(base.isZero())return Integer[0];if(exp.isOdd())r=r.multiply(base).mod(mod);exp=exp.divide(2);base=base.square().mod(mod)}return r};NativeBigInt.prototype.modPow=SmallInteger.prototype.modPow=BigInteger.prototype.modPow;function compareAbs(a,b){if(a.length!==b.length){return a.length>b.length?1:-1}for(var i=a.length-1;i>=0;i--){if(a[i]!==b[i])return a[i]>b[i]?1:-1}return 0}BigInteger.prototype.compareAbs=function(v){var n=parseValue(v),a=this.value,b=n.value;if(n.isSmall)return 1;return compareAbs(a,b)};SmallInteger.prototype.compareAbs=function(v){var n=parseValue(v),a=Math.abs(this.value),b=n.value;if(n.isSmall){b=Math.abs(b);return a===b?0:a>b?1:-1}return-1};NativeBigInt.prototype.compareAbs=function(v){var a=this.value;var b=parseValue(v).value;a=a>=0?a:-a;b=b>=0?b:-b;return a===b?0:a>b?1:-1};BigInteger.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var n=parseValue(v),a=this.value,b=n.value;if(this.sign!==n.sign){return n.sign?1:-1}if(n.isSmall){return this.sign?-1:1}return compareAbs(a,b)*(this.sign?-1:1)};BigInteger.prototype.compareTo=BigInteger.prototype.compare;SmallInteger.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var n=parseValue(v),a=this.value,b=n.value;if(n.isSmall){return a==b?0:a>b?1:-1}if(a<0!==n.sign){return a<0?-1:1}return a<0?1:-1};SmallInteger.prototype.compareTo=SmallInteger.prototype.compare;NativeBigInt.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var a=this.value;var b=parseValue(v).value;return a===b?0:a>b?1:-1};NativeBigInt.prototype.compareTo=NativeBigInt.prototype.compare;BigInteger.prototype.equals=function(v){return this.compare(v)===0};NativeBigInt.prototype.eq=NativeBigInt.prototype.equals=SmallInteger.prototype.eq=SmallInteger.prototype.equals=BigInteger.prototype.eq=BigInteger.prototype.equals;BigInteger.prototype.notEquals=function(v){return this.compare(v)!==0};NativeBigInt.prototype.neq=NativeBigInt.prototype.notEquals=SmallInteger.prototype.neq=SmallInteger.prototype.notEquals=BigInteger.prototype.neq=BigInteger.prototype.notEquals;BigInteger.prototype.greater=function(v){return this.compare(v)>0};NativeBigInt.prototype.gt=NativeBigInt.prototype.greater=SmallInteger.prototype.gt=SmallInteger.prototype.greater=BigInteger.prototype.gt=BigInteger.prototype.greater;BigInteger.prototype.lesser=function(v){return this.compare(v)<0};NativeBigInt.prototype.lt=NativeBigInt.prototype.lesser=SmallInteger.prototype.lt=SmallInteger.prototype.lesser=BigInteger.prototype.lt=BigInteger.prototype.lesser;BigInteger.prototype.greaterOrEquals=function(v){return this.compare(v)>=0};NativeBigInt.prototype.geq=NativeBigInt.prototype.greaterOrEquals=SmallInteger.prototype.geq=SmallInteger.prototype.greaterOrEquals=BigInteger.prototype.geq=BigInteger.prototype.greaterOrEquals;BigInteger.prototype.lesserOrEquals=function(v){return this.compare(v)<=0};NativeBigInt.prototype.leq=NativeBigInt.prototype.lesserOrEquals=SmallInteger.prototype.leq=SmallInteger.prototype.lesserOrEquals=BigInteger.prototype.leq=BigInteger.prototype.lesserOrEquals;BigInteger.prototype.isEven=function(){return(this.value[0]&1)===0};SmallInteger.prototype.isEven=function(){return(this.value&1)===0};NativeBigInt.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)};BigInteger.prototype.isOdd=function(){return(this.value[0]&1)===1};SmallInteger.prototype.isOdd=function(){return(this.value&1)===1};NativeBigInt.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)};BigInteger.prototype.isPositive=function(){return!this.sign};SmallInteger.prototype.isPositive=function(){return this.value>0};NativeBigInt.prototype.isPositive=SmallInteger.prototype.isPositive;BigInteger.prototype.isNegative=function(){return this.sign};SmallInteger.prototype.isNegative=function(){return this.value<0};NativeBigInt.prototype.isNegative=SmallInteger.prototype.isNegative;BigInteger.prototype.isUnit=function(){return false};SmallInteger.prototype.isUnit=function(){return Math.abs(this.value)===1};NativeBigInt.prototype.isUnit=function(){return this.abs().value===BigInt(1)};BigInteger.prototype.isZero=function(){return false};SmallInteger.prototype.isZero=function(){return this.value===0};NativeBigInt.prototype.isZero=function(){return this.value===BigInt(0)};BigInteger.prototype.isDivisibleBy=function(v){var n=parseValue(v);if(n.isZero())return false;if(n.isUnit())return true;if(n.compareAbs(2)===0)return this.isEven();return this.mod(n).isZero()};NativeBigInt.prototype.isDivisibleBy=SmallInteger.prototype.isDivisibleBy=BigInteger.prototype.isDivisibleBy;function isBasicPrime(v){var n=v.abs();if(n.isUnit())return false;if(n.equals(2)||n.equals(3)||n.equals(5))return true;if(n.isEven()||n.isDivisibleBy(3)||n.isDivisibleBy(5))return false;if(n.lesser(49))return true}function millerRabinTest(n,a){var nPrev=n.prev(),b=nPrev,r=0,d,t,i,x;while(b.isEven())b=b.divide(2),r++;next:for(i=0;i<a.length;i++){if(n.lesser(a[i]))continue;x=bigInt(a[i]).modPow(b,n);if(x.isUnit()||x.equals(nPrev))continue;for(d=r-1;d!=0;d--){x=x.square().mod(n);if(x.isUnit())return false;if(x.equals(nPrev))continue next}return false}return true}BigInteger.prototype.isPrime=function(strict){var isPrime=isBasicPrime(this);if(isPrime!==undefined)return isPrime;var n=this.abs();var bits=n.bitLength();if(bits<=64)return millerRabinTest(n,[2,3,5,7,11,13,17,19,23,29,31,37]);var logN=Math.log(2)*bits.toJSNumber();var t=Math.ceil(strict===true?2*Math.pow(logN,2):logN);for(var a=[],i=0;i<t;i++){a.push(bigInt(i+2))}return millerRabinTest(n,a)};NativeBigInt.prototype.isPrime=SmallInteger.prototype.isPrime=BigInteger.prototype.isPrime;BigInteger.prototype.isProbablePrime=function(iterations){var isPrime=isBasicPrime(this);if(isPrime!==undefined)return isPrime;var n=this.abs();var t=iterations===undefined?5:iterations;for(var a=[],i=0;i<t;i++){a.push(bigInt.randBetween(2,n.minus(2)))}return millerRabinTest(n,a)};NativeBigInt.prototype.isProbablePrime=SmallInteger.prototype.isProbablePrime=BigInteger.prototype.isProbablePrime;BigInteger.prototype.modInv=function(n){var t=bigInt.zero,newT=bigInt.one,r=parseValue(n),newR=this.abs(),q,lastT,lastR;while(!newR.isZero()){q=r.divide(newR);lastT=t;lastR=r;t=newT;r=newR;newT=lastT.subtract(q.multiply(newT));newR=lastR.subtract(q.multiply(newR))}if(!r.isUnit())throw new Error(this.toString()+\" and \"+n.toString()+\" are not co-prime\");if(t.compare(0)===-1){t=t.add(n)}if(this.isNegative()){return t.negate()}return t};NativeBigInt.prototype.modInv=SmallInteger.prototype.modInv=BigInteger.prototype.modInv;BigInteger.prototype.next=function(){var value=this.value;if(this.sign){return subtractSmall(value,1,this.sign)}return new BigInteger(addSmall(value,1),this.sign)};SmallInteger.prototype.next=function(){var value=this.value;if(value+1<MAX_INT)return new SmallInteger(value+1);return new BigInteger(MAX_INT_ARR,false)};NativeBigInt.prototype.next=function(){return new NativeBigInt(this.value+BigInt(1))};BigInteger.prototype.prev=function(){var value=this.value;if(this.sign){return new BigInteger(addSmall(value,1),true)}return subtractSmall(value,1,this.sign)};SmallInteger.prototype.prev=function(){var value=this.value;if(value-1>-MAX_INT)return new SmallInteger(value-1);return new BigInteger(MAX_INT_ARR,true)};NativeBigInt.prototype.prev=function(){return new NativeBigInt(this.value-BigInt(1))};var powersOfTwo=[1];while(2*powersOfTwo[powersOfTwo.length-1]<=BASE)powersOfTwo.push(2*powersOfTwo[powersOfTwo.length-1]);var powers2Length=powersOfTwo.length,highestPower2=powersOfTwo[powers2Length-1];function shift_isSmall(n){return Math.abs(n)<=BASE}BigInteger.prototype.shiftLeft=function(v){var n=parseValue(v).toJSNumber();if(!shift_isSmall(n)){throw new Error(String(n)+\" is too large for shifting.\")}if(n<0)return this.shiftRight(-n);var result=this;if(result.isZero())return result;while(n>=powers2Length){result=result.multiply(highestPower2);n-=powers2Length-1}return result.multiply(powersOfTwo[n])};NativeBigInt.prototype.shiftLeft=SmallInteger.prototype.shiftLeft=BigInteger.prototype.shiftLeft;BigInteger.prototype.shiftRight=function(v){var remQuo;var n=parseValue(v).toJSNumber();if(!shift_isSmall(n)){throw new Error(String(n)+\" is too large for shifting.\")}if(n<0)return this.shiftLeft(-n);var result=this;while(n>=powers2Length){if(result.isZero()||result.isNegative()&&result.isUnit())return result;remQuo=divModAny(result,highestPower2);result=remQuo[1].isNegative()?remQuo[0].prev():remQuo[0];n-=powers2Length-1}remQuo=divModAny(result,powersOfTwo[n]);return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]};NativeBigInt.prototype.shiftRight=SmallInteger.prototype.shiftRight=BigInteger.prototype.shiftRight;function bitwise(x,y,fn){y=parseValue(y);var xSign=x.isNegative(),ySign=y.isNegative();var xRem=xSign?x.not():x,yRem=ySign?y.not():y;var xDigit=0,yDigit=0;var xDivMod=null,yDivMod=null;var result=[];while(!xRem.isZero()||!yRem.isZero()){xDivMod=divModAny(xRem,highestPower2);xDigit=xDivMod[1].toJSNumber();if(xSign){xDigit=highestPower2-1-xDigit}yDivMod=divModAny(yRem,highestPower2);yDigit=yDivMod[1].toJSNumber();if(ySign){yDigit=highestPower2-1-yDigit}xRem=xDivMod[0];yRem=yDivMod[0];result.push(fn(xDigit,yDigit))}var sum=fn(xSign?1:0,ySign?1:0)!==0?bigInt(-1):bigInt(0);for(var i=result.length-1;i>=0;i-=1){sum=sum.multiply(highestPower2).add(bigInt(result[i]))}return sum}BigInteger.prototype.not=function(){return this.negate().prev()};NativeBigInt.prototype.not=SmallInteger.prototype.not=BigInteger.prototype.not;BigInteger.prototype.and=function(n){return bitwise(this,n,function(a,b){return a&b})};NativeBigInt.prototype.and=SmallInteger.prototype.and=BigInteger.prototype.and;BigInteger.prototype.or=function(n){return bitwise(this,n,function(a,b){return a|b})};NativeBigInt.prototype.or=SmallInteger.prototype.or=BigInteger.prototype.or;BigInteger.prototype.xor=function(n){return bitwise(this,n,function(a,b){return a^b})};NativeBigInt.prototype.xor=SmallInteger.prototype.xor=BigInteger.prototype.xor;var LOBMASK_I=1<<30,LOBMASK_BI=(BASE&-BASE)*(BASE&-BASE)|LOBMASK_I;function roughLOB(n){var v=n.value,x=typeof v===\"number\"?v|LOBMASK_I:typeof v===\"bigint\"?v|BigInt(LOBMASK_I):v[0]+v[1]*BASE|LOBMASK_BI;return x&-x}function integerLogarithm(value,base){if(base.compareTo(value)<=0){var tmp=integerLogarithm(value,base.square(base));var p=tmp.p;var e=tmp.e;var t=p.multiply(base);return t.compareTo(value)<=0?{p:t,e:e*2+1}:{p:p,e:e*2}}return{p:bigInt(1),e:0}}BigInteger.prototype.bitLength=function(){var n=this;if(n.compareTo(bigInt(0))<0){n=n.negate().subtract(bigInt(1))}if(n.compareTo(bigInt(0))===0){return bigInt(0)}return bigInt(integerLogarithm(n,bigInt(2)).e).add(bigInt(1))};NativeBigInt.prototype.bitLength=SmallInteger.prototype.bitLength=BigInteger.prototype.bitLength;function max(a,b){a=parseValue(a);b=parseValue(b);return a.greater(b)?a:b}function min(a,b){a=parseValue(a);b=parseValue(b);return a.lesser(b)?a:b}function gcd(a,b){a=parseValue(a).abs();b=parseValue(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;var c=Integer[1],d,t;while(a.isEven()&&b.isEven()){d=min(roughLOB(a),roughLOB(b));a=a.divide(d);b=b.divide(d);c=c.multiply(d)}while(a.isEven()){a=a.divide(roughLOB(a))}do{while(b.isEven()){b=b.divide(roughLOB(b))}if(a.greater(b)){t=b;b=a;a=t}b=b.subtract(a)}while(!b.isZero());return c.isUnit()?a:a.multiply(c)}function lcm(a,b){a=parseValue(a).abs();b=parseValue(b).abs();return a.divide(gcd(a,b)).multiply(b)}function randBetween(a,b){a=parseValue(a);b=parseValue(b);var low=min(a,b),high=max(a,b);var range=high.subtract(low).add(1);if(range.isSmall)return low.add(Math.floor(Math.random()*range));var digits=toBase(range,BASE).value;var result=[],restricted=true;for(var i=0;i<digits.length;i++){var top=restricted?digits[i]:BASE;var digit=truncate(Math.random()*top);result.push(digit);if(digit<top)restricted=false}return low.add(Integer.fromArray(result,BASE,false))}var parseBase=function(text,base,alphabet,caseSensitive){alphabet=alphabet||DEFAULT_ALPHABET;text=String(text);if(!caseSensitive){text=text.toLowerCase();alphabet=alphabet.toLowerCase()}var length=text.length;var i;var absBase=Math.abs(base);var alphabetValues={};for(i=0;i<alphabet.length;i++){alphabetValues[alphabet[i]]=i}for(i=0;i<length;i++){var c=text[i];if(c===\"-\")continue;if(c in alphabetValues){if(alphabetValues[c]>=absBase){if(c===\"1\"&&absBase===1)continue;throw new Error(c+\" is not a valid digit in base \"+base+\".\")}}}base=parseValue(base);var digits=[];var isNegative=text[0]===\"-\";for(i=isNegative?1:0;i<text.length;i++){var c=text[i];if(c in alphabetValues)digits.push(parseValue(alphabetValues[c]));else if(c===\"<\"){var start=i;do{i++}while(text[i]!==\">\"&&i<text.length);digits.push(parseValue(text.slice(start+1,i)))}else throw new Error(c+\" is not a valid character\")}return parseBaseFromArray(digits,base,isNegative)};function parseBaseFromArray(digits,base,isNegative){var val=Integer[0],pow=Integer[1],i;for(i=digits.length-1;i>=0;i--){val=val.add(digits[i].times(pow));pow=pow.times(base)}return isNegative?val.negate():val}function stringify(digit,alphabet){alphabet=alphabet||DEFAULT_ALPHABET;if(digit<alphabet.length){return alphabet[digit]}return\"<\"+digit+\">\"}function toBase(n,base){base=bigInt(base);if(base.isZero()){if(n.isZero())return{value:[0],isNegative:false};throw new Error(\"Cannot convert nonzero numbers to base 0.\")}if(base.equals(-1)){if(n.isZero())return{value:[0],isNegative:false};if(n.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-n.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:false};var arr=Array.apply(null,Array(n.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);arr.unshift([1]);return{value:[].concat.apply([],arr),isNegative:false}}var neg=false;if(n.isNegative()&&base.isPositive()){neg=true;n=n.abs()}if(base.isUnit()){if(n.isZero())return{value:[0],isNegative:false};return{value:Array.apply(null,Array(n.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:neg}}var out=[];var left=n,divmod;while(left.isNegative()||left.compareAbs(base)>=0){divmod=left.divmod(base);left=divmod.quotient;var digit=divmod.remainder;if(digit.isNegative()){digit=base.minus(digit).abs();left=left.next()}out.push(digit.toJSNumber())}out.push(left.toJSNumber());return{value:out.reverse(),isNegative:neg}}function toBaseString(n,base,alphabet){var arr=toBase(n,base);return(arr.isNegative?\"-\":\"\")+arr.value.map(function(x){return stringify(x,alphabet)}).join(\"\")}BigInteger.prototype.toArray=function(radix){return toBase(this,radix)};SmallInteger.prototype.toArray=function(radix){return toBase(this,radix)};NativeBigInt.prototype.toArray=function(radix){return toBase(this,radix)};BigInteger.prototype.toString=function(radix,alphabet){if(radix===undefined)radix=10;if(radix!==10)return toBaseString(this,radix,alphabet);var v=this.value,l=v.length,str=String(v[--l]),zeros=\"0000000\",digit;while(--l>=0){digit=String(v[l]);str+=zeros.slice(digit.length)+digit}var sign=this.sign?\"-\":\"\";return sign+str};SmallInteger.prototype.toString=function(radix,alphabet){if(radix===undefined)radix=10;if(radix!=10)return toBaseString(this,radix,alphabet);return String(this.value)};NativeBigInt.prototype.toString=SmallInteger.prototype.toString;NativeBigInt.prototype.toJSON=BigInteger.prototype.toJSON=SmallInteger.prototype.toJSON=function(){return this.toString()};BigInteger.prototype.valueOf=function(){return parseInt(this.toString(),10)};BigInteger.prototype.toJSNumber=BigInteger.prototype.valueOf;SmallInteger.prototype.valueOf=function(){return this.value};SmallInteger.prototype.toJSNumber=SmallInteger.prototype.valueOf;NativeBigInt.prototype.valueOf=NativeBigInt.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function parseStringValue(v){if(isPrecise(+v)){var x=+v;if(x===truncate(x))return supportsNativeBigInt?new NativeBigInt(BigInt(x)):new SmallInteger(x);throw new Error(\"Invalid integer: \"+v)}var sign=v[0]===\"-\";if(sign)v=v.slice(1);var split=v.split(/e/i);if(split.length>2)throw new Error(\"Invalid integer: \"+split.join(\"e\"));if(split.length===2){var exp=split[1];if(exp[0]===\"+\")exp=exp.slice(1);exp=+exp;if(exp!==truncate(exp)||!isPrecise(exp))throw new Error(\"Invalid integer: \"+exp+\" is not a valid exponent.\");var text=split[0];var decimalPlace=text.indexOf(\".\");if(decimalPlace>=0){exp-=text.length-decimalPlace-1;text=text.slice(0,decimalPlace)+text.slice(decimalPlace+1)}if(exp<0)throw new Error(\"Cannot include negative exponent part for integers\");text+=new Array(exp+1).join(\"0\");v=text}var isValid=/^([0-9][0-9]*)$/.test(v);if(!isValid)throw new Error(\"Invalid integer: \"+v);if(supportsNativeBigInt){return new NativeBigInt(BigInt(sign?\"-\"+v:v))}var r=[],max=v.length,l=LOG_BASE,min=max-l;while(max>0){r.push(+v.slice(min,max));min-=l;if(min<0)min=0;max-=l}trim(r);return new BigInteger(r,sign)}function parseNumberValue(v){if(supportsNativeBigInt){return new NativeBigInt(BigInt(v))}if(isPrecise(v)){if(v!==truncate(v))throw new Error(v+\" is not an integer.\");return new SmallInteger(v)}return parseStringValue(v.toString())}function parseValue(v){if(typeof v===\"number\"){return parseNumberValue(v)}if(typeof v===\"string\"){return parseStringValue(v)}if(typeof v===\"bigint\"){return new NativeBigInt(v)}return v}for(var i=0;i<1e3;i++){Integer[i]=parseValue(i);if(i>0)Integer[-i]=parseValue(-i)}Integer.one=Integer[1];Integer.zero=Integer[0];Integer.minusOne=Integer[-1];Integer.max=max;Integer.min=min;Integer.gcd=gcd;Integer.lcm=lcm;Integer.isInstance=function(x){return x instanceof BigInteger||x instanceof SmallInteger||x instanceof NativeBigInt};Integer.randBetween=randBetween;Integer.fromArray=function(digits,base,isNegative){return parseBaseFromArray(digits.map(parseValue),parseValue(base||10),isNegative)};return Integer}();if(typeof module!==\"undefined\"&&module.hasOwnProperty(\"exports\")){module.exports=bigInt}if(typeof define===\"function\"&&define.amd){define(\"big-integer\",[],function(){return bigInt})}","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass ErrorsBase {\n extend (errors, config) {\n if (!errors) return;\n\n let override = config ? config.override : false;\n let publicOnly = config ? config.publicOnly : false;\n\n\n for (const err in errors) {\n if (!errors.hasOwnProperty(err) || (this[err] && !override)) continue;\n if (publicOnly && errors[err].indexOf('public_') === -1) continue;\n this[err] = errors[err];\n\n }\n }\n}\n\nexport default ErrorsBase;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass EventsBase {\n extend (events, config) {\n if (!events) return;\n\n let override = config ? config.override : false;\n let publicOnly = config ? config.publicOnly : false;\n\n\n for (const evt in events) {\n if (!events.hasOwnProperty(evt) || (this[evt] && !override)) continue;\n if (publicOnly && events[evt].indexOf('public_') === -1) continue;\n this[evt] = events[evt];\n\n }\n }\n}\n\nexport default EventsBase;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FragmentRequest from '../streaming/vo/FragmentRequest';\nimport {HTTPRequest} from '../streaming/vo/metrics/HTTPRequest';\n\nfunction MssFragmentInfoController(config) {\n\n config = config || {};\n\n let instance,\n logger,\n fragmentModel,\n started,\n type,\n loadFragmentTimeout,\n startTime,\n startFragmentTime,\n index;\n\n const streamProcessor = config.streamProcessor;\n const baseURLController = config.baseURLController;\n const debug = config.debug;\n const controllerType = 'MssFragmentInfoController';\n\n function setup() {\n logger = debug.getLogger(instance);\n }\n\n function initialize() {\n type = streamProcessor.getType();\n fragmentModel = streamProcessor.getFragmentModel();\n\n started = false;\n startTime = null;\n startFragmentTime = null;\n }\n\n function start() {\n if (started) return;\n\n logger.debug('Start');\n\n started = true;\n index = 0;\n\n loadNextFragmentInfo();\n }\n\n function stop() {\n if (!started) return;\n\n logger.debug('Stop');\n\n clearTimeout(loadFragmentTimeout);\n started = false;\n startTime = null;\n startFragmentTime = null;\n }\n\n function reset() {\n stop();\n }\n\n function loadNextFragmentInfo() {\n if (!started) return;\n\n // Get last segment from SegmentTimeline\n const representation = getCurrentRepresentation();\n const manifest = representation.adaptation.period.mpd.manifest;\n const adaptation = manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index];\n const segments = adaptation.SegmentTemplate.SegmentTimeline.S_asArray;\n const segment = segments[segments.length - 1];\n\n // logger.debug('Last fragment time: ' + (segment.t / adaptation.SegmentTemplate.timescale));\n\n // Generate segment request\n const request = getRequestForSegment(adaptation, representation, segment);\n\n // Send segment request\n requestFragment.call(this, request);\n }\n\n function getRequestForSegment(adaptation, representation, segment) {\n let timescale = adaptation.SegmentTemplate.timescale;\n let request = new FragmentRequest();\n\n request.mediaType = type;\n request.type = HTTPRequest.MSS_FRAGMENT_INFO_SEGMENT_TYPE;\n // request.range = segment.mediaRange;\n request.startTime = segment.t / timescale;\n request.duration = segment.d / timescale;\n request.timescale = timescale;\n // request.availabilityStartTime = segment.availabilityStartTime;\n // request.availabilityEndTime = segment.availabilityEndTime;\n // request.wallStartTime = segment.wallStartTime;\n request.quality = representation.index;\n request.index = index++;\n request.mediaInfo = streamProcessor.getMediaInfo();\n request.adaptationIndex = representation.adaptation.index;\n request.representationId = representation.id;\n request.url = baseURLController.resolve(representation.path).url + adaptation.SegmentTemplate.media;\n request.url = request.url.replace('$Bandwidth$', representation.bandwidth);\n request.url = request.url.replace('$Time$', segment.tManifest ? segment.tManifest : segment.t);\n request.url = request.url.replace('/Fragments(', '/FragmentInfo(');\n\n return request;\n }\n\n function getCurrentRepresentation() {\n const representationController = streamProcessor.getRepresentationController();\n const representation = representationController.getCurrentRepresentation();\n return representation;\n }\n\n function requestFragment(request) {\n // logger.debug('Load FragmentInfo for time: ' + request.startTime);\n if (streamProcessor.getFragmentModel().isFragmentLoadedOrPending(request)) {\n // We may have reached end of timeline in case of start-over streams\n logger.debug('End of timeline');\n stop();\n return;\n }\n\n fragmentModel.executeRequest(request);\n }\n\n function fragmentInfoLoaded (e) {\n if (!started) return;\n\n const request = e.request;\n if (!e.response) {\n logger.error('Load error', request.url);\n return;\n }\n\n let deltaFragmentTime,\n deltaTime,\n delay;\n\n // logger.debug('FragmentInfo loaded: ', request.url);\n\n if (startTime === null) {\n startTime = new Date().getTime();\n }\n\n if (!startFragmentTime) {\n startFragmentTime = request.startTime;\n }\n\n // Determine delay before requesting next FragmentInfo\n deltaTime = (new Date().getTime() - startTime) / 1000;\n deltaFragmentTime = (request.startTime + request.duration) - startFragmentTime;\n delay = Math.max(0, (deltaFragmentTime - deltaTime));\n\n // Set timeout for requesting next FragmentInfo\n clearTimeout(loadFragmentTimeout);\n loadFragmentTimeout = setTimeout(function () {\n loadFragmentTimeout = null;\n loadNextFragmentInfo();\n }, delay * 1000);\n }\n\n function getType() {\n return type;\n }\n\n instance = {\n initialize: initialize,\n controllerType: controllerType,\n start: start,\n fragmentInfoLoaded: fragmentInfoLoaded,\n getType: getType,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nMssFragmentInfoController.__dashjs_factory_name = 'MssFragmentInfoController';\nexport default dashjs.FactoryMaker.getClassFactory(MssFragmentInfoController); /* jshint ignore:line */\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport DashJSError from '../streaming/vo/DashJSError';\nimport MssErrors from './errors/MssErrors';\n\nimport Events from '../streaming/MediaPlayerEvents';\n\n/**\n * @module MssFragmentMoofProcessor\n * @ignore\n * @param {Object} config object\n */\nfunction MssFragmentMoofProcessor(config) {\n\n config = config || {};\n let instance,\n type,\n logger;\n const dashMetrics = config.dashMetrics;\n const playbackController = config.playbackController;\n const errorHandler = config.errHandler;\n const eventBus = config.eventBus;\n const ISOBoxer = config.ISOBoxer;\n const debug = config.debug;\n\n function setup() {\n logger = debug.getLogger(instance);\n type = '';\n }\n\n function processTfrf(request, tfrf, tfdt, streamProcessor) {\n const representationController = streamProcessor.getRepresentationController();\n const representation = representationController.getCurrentRepresentation();\n\n const manifest = representation.adaptation.period.mpd.manifest;\n const adaptation = manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index];\n const timescale = adaptation.SegmentTemplate.timescale;\n\n type = streamProcessor.getType();\n\n // Process tfrf only for live streams or start-over static streams (timeShiftBufferDepth > 0)\n if (manifest.type !== 'dynamic' && !manifest.timeShiftBufferDepth) {\n return;\n }\n\n if (!tfrf) {\n errorHandler.error(new DashJSError(MssErrors.MSS_NO_TFRF_CODE, MssErrors.MSS_NO_TFRF_MESSAGE));\n return;\n }\n\n // Get adaptation's segment timeline (always a SegmentTimeline in Smooth Streaming use case)\n const segments = adaptation.SegmentTemplate.SegmentTimeline.S;\n const entries = tfrf.entry;\n let entry,\n segmentTime,\n range;\n let segment = null;\n let t = 0;\n let endTime;\n let availabilityStartTime = null;\n\n if (entries.length === 0) {\n return;\n }\n\n // Consider only first tfrf entry (to avoid pre-condition failure on fragment info requests)\n entry = entries[0];\n\n // In case of start-over streams, check if we have reached end of original manifest duration (set in timeShiftBufferDepth)\n // => then do not update anymore timeline\n if (manifest.type === 'static') {\n // Get first segment time\n segmentTime = segments[0].tManifest ? parseFloat(segments[0].tManifest) : segments[0].t;\n if (entry.fragment_absolute_time > (segmentTime + (manifest.timeShiftBufferDepth * timescale))) {\n return;\n }\n }\n\n // logger.debug('entry - t = ', (entry.fragment_absolute_time / timescale));\n\n // Get last segment time\n segmentTime = segments[segments.length - 1].tManifest ? parseFloat(segments[segments.length - 1].tManifest) : segments[segments.length - 1].t;\n // logger.debug('Last segment - t = ', (segmentTime / timescale));\n\n // Check if we have to append new segment to timeline\n if (entry.fragment_absolute_time <= segmentTime) {\n // Update DVR window range => set range end to end time of current segment\n range = {\n start: segments[0].t / timescale,\n end: (tfdt.baseMediaDecodeTime / timescale) + request.duration\n };\n\n updateDVR(request.mediaType, range, streamProcessor.getStreamInfo().manifestInfo);\n return;\n }\n\n // logger.debug('Add new segment - t = ', (entry.fragment_absolute_time / timescale));\n segment = {};\n segment.t = entry.fragment_absolute_time;\n segment.d = entry.fragment_duration;\n // If timestamps starts at 0 relative to 1st segment (dynamic to static) then update segment time\n if (segments[0].tManifest) {\n segment.t -= parseFloat(segments[0].tManifest) - segments[0].t;\n segment.tManifest = entry.fragment_absolute_time;\n }\n\n // Patch previous segment duration\n let lastSegment = segments[segments.length - 1];\n if (lastSegment.t + lastSegment.d !== segment.t) {\n logger.debug('Patch segment duration - t = ', lastSegment.t + ', d = ' + lastSegment.d + ' => ' + (segment.t - lastSegment.t));\n lastSegment.d = segment.t - lastSegment.t;\n }\n\n segments.push(segment);\n\n // In case of static start-over streams, update content duration\n if (manifest.type === 'static') {\n if (type === 'video') {\n segment = segments[segments.length - 1];\n endTime = (segment.t + segment.d) / timescale;\n if (endTime > representation.adaptation.period.duration) {\n eventBus.trigger(Events.MANIFEST_VALIDITY_CHANGED, { sender: this, newDuration: endTime });\n }\n }\n return;\n }\n else {\n // In case of live streams, update segment timeline according to DVR window\n if (manifest.timeShiftBufferDepth && manifest.timeShiftBufferDepth > 0) {\n // Get timestamp of the last segment\n segment = segments[segments.length - 1];\n t = segment.t;\n\n // Determine the segments' availability start time\n availabilityStartTime = (t - (manifest.timeShiftBufferDepth * timescale)) / timescale;\n\n // Remove segments prior to availability start time\n segment = segments[0];\n endTime = (segment.t + segment.d) / timescale;\n while (endTime < availabilityStartTime) {\n // Check if not currently playing the segment to be removed\n if (!playbackController.isPaused() && playbackController.getTime() < endTime) {\n break;\n }\n // logger.debug('Remove segment - t = ' + (segment.t / timescale));\n segments.splice(0, 1);\n segment = segments[0];\n endTime = (segment.t + segment.d) / timescale;\n }\n }\n\n // Update DVR window range => set range end to end time of current segment\n range = {\n start: segments[0].t / timescale,\n end: (tfdt.baseMediaDecodeTime / timescale) + request.duration\n };\n\n updateDVR(type, range, streamProcessor.getStreamInfo().manifestInfo);\n }\n\n }\n\n function updateDVR(type, range, manifestInfo) {\n if (type !== 'video' && type !== 'audio') return;\n const dvrInfos = dashMetrics.getCurrentDVRInfo(type);\n if (!dvrInfos || (range.end > dvrInfos.range.end)) {\n logger.debug('Update DVR range: [' + range.start + ' - ' + range.end + ']');\n dashMetrics.addDVRInfo(type, playbackController.getTime(), manifestInfo, range);\n playbackController.updateCurrentTime(type);\n }\n }\n\n // This function returns the offset of the 1st byte of a child box within a container box\n function getBoxOffset(parent, type) {\n let offset = 8;\n let i = 0;\n\n for (i = 0; i < parent.boxes.length; i++) {\n if (parent.boxes[i].type === type) {\n return offset;\n }\n offset += parent.boxes[i].size;\n }\n return offset;\n }\n\n function convertFragment(e, streamProcessor) {\n let i;\n\n // e.request contains request description object\n // e.response contains fragment bytes\n const isoFile = ISOBoxer.parseBuffer(e.response);\n // Update track_Id in tfhd box\n const tfhd = isoFile.fetch('tfhd');\n tfhd.track_ID = e.request.mediaInfo.index + 1;\n\n // Add tfdt box\n let tfdt = isoFile.fetch('tfdt');\n const traf = isoFile.fetch('traf');\n if (tfdt === null) {\n tfdt = ISOBoxer.createFullBox('tfdt', traf, tfhd);\n tfdt.version = 1;\n tfdt.flags = 0;\n tfdt.baseMediaDecodeTime = Math.floor(e.request.startTime * e.request.timescale);\n }\n\n const trun = isoFile.fetch('trun');\n\n // Process tfxd boxes\n // This box provide absolute timestamp but we take the segment start time for tfdt\n let tfxd = isoFile.fetch('tfxd');\n if (tfxd) {\n tfxd._parent.boxes.splice(tfxd._parent.boxes.indexOf(tfxd), 1);\n tfxd = null;\n }\n let tfrf = isoFile.fetch('tfrf');\n processTfrf(e.request, tfrf, tfdt, streamProcessor);\n if (tfrf) {\n tfrf._parent.boxes.splice(tfrf._parent.boxes.indexOf(tfrf), 1);\n tfrf = null;\n }\n\n // If protected content in PIFF1.1 format (sepiff box = Sample Encryption PIFF)\n // => convert sepiff box it into a senc box\n // => create saio and saiz boxes (if not already present)\n const sepiff = isoFile.fetch('sepiff');\n if (sepiff !== null) {\n sepiff.type = 'senc';\n sepiff.usertype = undefined;\n\n let saio = isoFile.fetch('saio');\n if (saio === null) {\n // Create Sample Auxiliary Information Offsets Box box (saio)\n saio = ISOBoxer.createFullBox('saio', traf);\n saio.version = 0;\n saio.flags = 0;\n saio.entry_count = 1;\n saio.offset = [0];\n\n const saiz = ISOBoxer.createFullBox('saiz', traf);\n saiz.version = 0;\n saiz.flags = 0;\n saiz.sample_count = sepiff.sample_count;\n saiz.default_sample_info_size = 0;\n saiz.sample_info_size = [];\n\n if (sepiff.flags & 0x02) {\n // Sub-sample encryption => set sample_info_size for each sample\n for (i = 0; i < sepiff.sample_count; i += 1) {\n // 10 = 8 (InitializationVector field size) + 2 (subsample_count field size)\n // 6 = 2 (BytesOfClearData field size) + 4 (BytesOfEncryptedData field size)\n saiz.sample_info_size[i] = 10 + (6 * sepiff.entry[i].NumberOfEntries);\n }\n } else {\n // No sub-sample encryption => set default sample_info_size = InitializationVector field size (8)\n saiz.default_sample_info_size = 8;\n }\n }\n }\n\n tfhd.flags &= 0xFFFFFE; // set tfhd.base-data-offset-present to false\n tfhd.flags |= 0x020000; // set tfhd.default-base-is-moof to true\n trun.flags |= 0x000001; // set trun.data-offset-present to true\n\n // Update trun.data_offset field that corresponds to first data byte (inside mdat box)\n const moof = isoFile.fetch('moof');\n let length = moof.getLength();\n trun.data_offset = length + 8;\n\n // Update saio box offset field according to new senc box offset\n let saio = isoFile.fetch('saio');\n if (saio !== null) {\n let trafPosInMoof = getBoxOffset(moof, 'traf');\n let sencPosInTraf = getBoxOffset(traf, 'senc');\n // Set offset from begin fragment to the first IV field in senc box\n saio.offset[0] = trafPosInMoof + sencPosInTraf + 16; // 16 = box header (12) + sample_count field size (4)\n }\n\n // Write transformed/processed fragment into request reponse data\n e.response = isoFile.write();\n }\n\n function updateSegmentList(e, streamProcessor) {\n // e.request contains request description object\n // e.response contains fragment bytes\n if (!e.response) {\n throw new Error('e.response parameter is missing');\n }\n\n const isoFile = ISOBoxer.parseBuffer(e.response);\n // Update track_Id in tfhd box\n const tfhd = isoFile.fetch('tfhd');\n tfhd.track_ID = e.request.mediaInfo.index + 1;\n\n // Add tfdt box\n let tfdt = isoFile.fetch('tfdt');\n let traf = isoFile.fetch('traf');\n if (tfdt === null) {\n tfdt = ISOBoxer.createFullBox('tfdt', traf, tfhd);\n tfdt.version = 1;\n tfdt.flags = 0;\n tfdt.baseMediaDecodeTime = Math.floor(e.request.startTime * e.request.timescale);\n }\n\n let tfrf = isoFile.fetch('tfrf');\n processTfrf(e.request, tfrf, tfdt, streamProcessor);\n if (tfrf) {\n tfrf._parent.boxes.splice(tfrf._parent.boxes.indexOf(tfrf), 1);\n tfrf = null;\n }\n }\n\n function getType() {\n return type;\n }\n\n instance = {\n convertFragment: convertFragment,\n updateSegmentList: updateSegmentList,\n getType: getType\n };\n\n setup();\n return instance;\n}\n\nMssFragmentMoofProcessor.__dashjs_factory_name = 'MssFragmentMoofProcessor';\nexport default dashjs.FactoryMaker.getClassFactory(MssFragmentMoofProcessor); /* jshint ignore:line */\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport MssErrors from './errors/MssErrors';\n\n/**\n * @module MssFragmentMoovProcessor\n * @ignore\n * @param {Object} config object\n */\nfunction MssFragmentMoovProcessor(config) {\n config = config || {};\n const NALUTYPE_SPS = 7;\n const NALUTYPE_PPS = 8;\n const constants = config.constants;\n const ISOBoxer = config.ISOBoxer;\n\n let protectionController = config.protectionController;\n let instance,\n period,\n adaptationSet,\n representation,\n contentProtection,\n timescale,\n trackId;\n\n function createFtypBox(isoFile) {\n let ftyp = ISOBoxer.createBox('ftyp', isoFile);\n ftyp.major_brand = 'iso6';\n ftyp.minor_version = 1; // is an informative integer for the minor version of the major brand\n ftyp.compatible_brands = []; //is a list, to the end of the box, of brands isom, iso6 and msdh\n ftyp.compatible_brands[0] = 'isom'; // => decimal ASCII value for isom\n ftyp.compatible_brands[1] = 'iso6'; // => decimal ASCII value for iso6\n ftyp.compatible_brands[2] = 'msdh'; // => decimal ASCII value for msdh\n\n return ftyp;\n }\n\n function createMoovBox(isoFile) {\n\n // moov box\n let moov = ISOBoxer.createBox('moov', isoFile);\n\n // moov/mvhd\n createMvhdBox(moov);\n\n // moov/trak\n let trak = ISOBoxer.createBox('trak', moov);\n\n // moov/trak/tkhd\n createTkhdBox(trak);\n\n // moov/trak/mdia\n let mdia = ISOBoxer.createBox('mdia', trak);\n\n // moov/trak/mdia/mdhd\n createMdhdBox(mdia);\n\n // moov/trak/mdia/hdlr\n createHdlrBox(mdia);\n\n // moov/trak/mdia/minf\n let minf = ISOBoxer.createBox('minf', mdia);\n\n switch (adaptationSet.type) {\n case constants.VIDEO:\n // moov/trak/mdia/minf/vmhd\n createVmhdBox(minf);\n break;\n case constants.AUDIO:\n // moov/trak/mdia/minf/smhd\n createSmhdBox(minf);\n break;\n default:\n break;\n }\n\n // moov/trak/mdia/minf/dinf\n let dinf = ISOBoxer.createBox('dinf', minf);\n\n // moov/trak/mdia/minf/dinf/dref\n createDrefBox(dinf);\n\n // moov/trak/mdia/minf/stbl\n let stbl = ISOBoxer.createBox('stbl', minf);\n\n // Create empty stts, stsc, stco and stsz boxes\n // Use data field as for codem-isoboxer unknown boxes for setting fields value\n\n // moov/trak/mdia/minf/stbl/stts\n let stts = ISOBoxer.createFullBox('stts', stbl);\n stts._data = [0, 0, 0, 0, 0, 0, 0, 0]; // version = 0, flags = 0, entry_count = 0\n\n // moov/trak/mdia/minf/stbl/stsc\n let stsc = ISOBoxer.createFullBox('stsc', stbl);\n stsc._data = [0, 0, 0, 0, 0, 0, 0, 0]; // version = 0, flags = 0, entry_count = 0\n\n // moov/trak/mdia/minf/stbl/stco\n let stco = ISOBoxer.createFullBox('stco', stbl);\n stco._data = [0, 0, 0, 0, 0, 0, 0, 0]; // version = 0, flags = 0, entry_count = 0\n\n // moov/trak/mdia/minf/stbl/stsz\n let stsz = ISOBoxer.createFullBox('stsz', stbl);\n stsz._data = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; // version = 0, flags = 0, sample_size = 0, sample_count = 0\n\n // moov/trak/mdia/minf/stbl/stsd\n createStsdBox(stbl);\n\n // moov/mvex\n let mvex = ISOBoxer.createBox('mvex', moov);\n\n // moov/mvex/trex\n createTrexBox(mvex);\n\n if (contentProtection && protectionController) {\n let supportedKS = protectionController.getSupportedKeySystemsFromContentProtection(contentProtection);\n createProtectionSystemSpecificHeaderBox(moov, supportedKS);\n }\n }\n\n function createMvhdBox(moov) {\n\n let mvhd = ISOBoxer.createFullBox('mvhd', moov);\n\n mvhd.version = 1; // version = 1 in order to have 64bits duration value\n\n mvhd.creation_time = 0; // the creation time of the presentation => ignore (set to 0)\n mvhd.modification_time = 0; // the most recent time the presentation was modified => ignore (set to 0)\n mvhd.timescale = timescale; // the time-scale for the entire presentation => 10000000 for MSS\n mvhd.duration = period.duration === Infinity ? 0xFFFFFFFFFFFFFFFF : Math.round(period.duration * timescale); // the length of the presentation (in the indicated timescale) => take duration of period\n mvhd.rate = 1.0; // 16.16 number, '1.0' = normal playback\n mvhd.volume = 1.0; // 8.8 number, '1.0' = full volume\n mvhd.reserved1 = 0;\n mvhd.reserved2 = [0x0, 0x0];\n mvhd.matrix = [\n 1, 0, 0, // provides a transformation matrix for the video;\n 0, 1, 0, // (u,v,w) are restricted here to (0,0,1)\n 0, 0, 16384\n ];\n mvhd.pre_defined = [0, 0, 0, 0, 0, 0];\n mvhd.next_track_ID = trackId + 1; // indicates a value to use for the track ID of the next track to be added to this presentation\n\n return mvhd;\n }\n\n function createTkhdBox(trak) {\n\n let tkhd = ISOBoxer.createFullBox('tkhd', trak);\n\n tkhd.version = 1; // version = 1 in order to have 64bits duration value\n tkhd.flags = 0x1 | // Track_enabled (0x000001): Indicates that the track is enabled\n 0x2 | // Track_in_movie (0x000002): Indicates that the track is used in the presentation\n 0x4; // Track_in_preview (0x000004): Indicates that the track is used when previewing the presentation\n\n tkhd.creation_time = 0; // the creation time of the presentation => ignore (set to 0)\n tkhd.modification_time = 0; // the most recent time the presentation was modified => ignore (set to 0)\n tkhd.track_ID = trackId; // uniquely identifies this track over the entire life-time of this presentation\n tkhd.reserved1 = 0;\n tkhd.duration = period.duration === Infinity ? 0xFFFFFFFFFFFFFFFF : Math.round(period.duration * timescale); // the duration of this track (in the timescale indicated in the Movie Header Box) => take duration of period\n tkhd.reserved2 = [0x0, 0x0];\n tkhd.layer = 0; // specifies the front-to-back ordering of video tracks; tracks with lower numbers are closer to the viewer => 0 since only one video track\n tkhd.alternate_group = 0; // specifies a group or collection of tracks => ignore\n tkhd.volume = 1.0; // '1.0' = full volume\n tkhd.reserved3 = 0;\n tkhd.matrix = [\n 1, 0, 0, // provides a transformation matrix for the video;\n 0, 1, 0, // (u,v,w) are restricted here to (0,0,1)\n 0, 0, 16384\n ];\n tkhd.width = representation.width; // visual presentation width\n tkhd.height = representation.height; // visual presentation height\n\n return tkhd;\n }\n\n function createMdhdBox(mdia) {\n\n let mdhd = ISOBoxer.createFullBox('mdhd', mdia);\n\n mdhd.version = 1; // version = 1 in order to have 64bits duration value\n\n mdhd.creation_time = 0; // the creation time of the presentation => ignore (set to 0)\n mdhd.modification_time = 0; // the most recent time the presentation was modified => ignore (set to 0)\n mdhd.timescale = timescale; // the time-scale for the entire presentation\n mdhd.duration = period.duration === Infinity ? 0xFFFFFFFFFFFFFFFF : Math.round(period.duration * timescale); // the duration of this media (in the scale of the timescale). If the duration cannot be determined then duration is set to all 1s.\n mdhd.language = adaptationSet.lang || 'und'; // declares the language code for this media\n mdhd.pre_defined = 0;\n\n return mdhd;\n }\n\n function createHdlrBox(mdia) {\n\n let hdlr = ISOBoxer.createFullBox('hdlr', mdia);\n\n hdlr.pre_defined = 0;\n switch (adaptationSet.type) {\n case constants.VIDEO:\n hdlr.handler_type = 'vide';\n break;\n case constants.AUDIO:\n hdlr.handler_type = 'soun';\n break;\n default:\n hdlr.handler_type = 'meta';\n break;\n }\n hdlr.name = representation.id;\n hdlr.reserved = [0, 0, 0];\n\n return hdlr;\n }\n\n function createVmhdBox(minf) {\n\n let vmhd = ISOBoxer.createFullBox('vmhd', minf);\n\n vmhd.flags = 1;\n\n vmhd.graphicsmode = 0; // specifies a composition mode for this video track, from the following enumerated set, which may be extended by derived specifications: copy = 0 copy over the existing image\n vmhd.opcolor = [0, 0, 0]; // is a set of 3 colour values (red, green, blue) available for use by graphics modes\n\n return vmhd;\n }\n\n function createSmhdBox(minf) {\n\n let smhd = ISOBoxer.createFullBox('smhd', minf);\n\n smhd.flags = 1;\n\n smhd.balance = 0; // is a fixed-point 8.8 number that places mono audio tracks in a stereo space; 0 is centre (the normal value); full left is -1.0 and full right is 1.0.\n smhd.reserved = 0;\n\n return smhd;\n }\n\n function createDrefBox(dinf) {\n\n let dref = ISOBoxer.createFullBox('dref', dinf);\n\n dref.entry_count = 1;\n dref.entries = [];\n\n let url = ISOBoxer.createFullBox('url ', dref, false);\n url.location = '';\n url.flags = 1;\n\n dref.entries.push(url);\n\n return dref;\n }\n\n function createStsdBox(stbl) {\n\n let stsd = ISOBoxer.createFullBox('stsd', stbl);\n\n stsd.entries = [];\n switch (adaptationSet.type) {\n case constants.VIDEO:\n case constants.AUDIO:\n stsd.entries.push(createSampleEntry(stsd));\n break;\n default:\n break;\n }\n\n stsd.entry_count = stsd.entries.length; // is an integer that counts the actual entries\n return stsd;\n }\n\n function createSampleEntry(stsd) {\n let codec = representation.codecs.substring(0, representation.codecs.indexOf('.'));\n\n switch (codec) {\n case 'avc1':\n return createAVCVisualSampleEntry(stsd, codec);\n case 'mp4a':\n return createMP4AudioSampleEntry(stsd, codec);\n default:\n throw {\n code: MssErrors.MSS_UNSUPPORTED_CODEC_CODE,\n message: MssErrors.MSS_UNSUPPORTED_CODEC_MESSAGE,\n data: {\n codec: codec\n }\n };\n }\n }\n\n function createAVCVisualSampleEntry(stsd, codec) {\n let avc1;\n\n if (contentProtection) {\n avc1 = ISOBoxer.createBox('encv', stsd, false);\n } else {\n avc1 = ISOBoxer.createBox('avc1', stsd, false);\n }\n\n // SampleEntry fields\n avc1.reserved1 = [0x0, 0x0, 0x0, 0x0, 0x0, 0x0];\n avc1.data_reference_index = 1;\n\n // VisualSampleEntry fields\n avc1.pre_defined1 = 0;\n avc1.reserved2 = 0;\n avc1.pre_defined2 = [0, 0, 0];\n avc1.height = representation.height;\n avc1.width = representation.width;\n avc1.horizresolution = 72; // 72 dpi\n avc1.vertresolution = 72; // 72 dpi\n avc1.reserved3 = 0;\n avc1.frame_count = 1; // 1 compressed video frame per sample\n avc1.compressorname = [\n 0x0A, 0x41, 0x56, 0x43, 0x20, 0x43, 0x6F, 0x64, // = 'AVC Coding';\n 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n ];\n avc1.depth = 0x0018; // 0x0018 – images are in colour with no alpha.\n avc1.pre_defined3 = 65535;\n avc1.config = createAVC1ConfigurationRecord();\n if (contentProtection) {\n // Create and add Protection Scheme Info Box\n let sinf = ISOBoxer.createBox('sinf', avc1);\n\n // Create and add Original Format Box => indicate codec type of the encrypted content\n createOriginalFormatBox(sinf, codec);\n\n // Create and add Scheme Type box\n createSchemeTypeBox(sinf);\n\n // Create and add Scheme Information Box\n createSchemeInformationBox(sinf);\n }\n\n return avc1;\n }\n\n function createAVC1ConfigurationRecord() {\n\n let avcC = null;\n let avcCLength = 15; // length = 15 by default (0 SPS and 0 PPS)\n\n // First get all SPS and PPS from codecPrivateData\n let sps = [];\n let pps = [];\n let AVCProfileIndication = 0;\n let AVCLevelIndication = 0;\n let profile_compatibility = 0;\n\n let nalus = representation.codecPrivateData.split('00000001').slice(1);\n let naluBytes, naluType;\n\n for (let i = 0; i < nalus.length; i++) {\n naluBytes = hexStringtoBuffer(nalus[i]);\n\n naluType = naluBytes[0] & 0x1F;\n\n switch (naluType) {\n case NALUTYPE_SPS:\n sps.push(naluBytes);\n avcCLength += naluBytes.length + 2; // 2 = sequenceParameterSetLength field length\n break;\n case NALUTYPE_PPS:\n pps.push(naluBytes);\n avcCLength += naluBytes.length + 2; // 2 = pictureParameterSetLength field length\n break;\n default:\n break;\n }\n }\n\n // Get profile and level from SPS\n if (sps.length > 0) {\n AVCProfileIndication = sps[0][1];\n profile_compatibility = sps[0][2];\n AVCLevelIndication = sps[0][3];\n }\n\n // Generate avcC buffer\n avcC = new Uint8Array(avcCLength);\n\n let i = 0;\n // length\n avcC[i++] = (avcCLength & 0xFF000000) >> 24;\n avcC[i++] = (avcCLength & 0x00FF0000) >> 16;\n avcC[i++] = (avcCLength & 0x0000FF00) >> 8;\n avcC[i++] = (avcCLength & 0x000000FF);\n avcC.set([0x61, 0x76, 0x63, 0x43], i); // type = 'avcC'\n i += 4;\n avcC[i++] = 1; // configurationVersion = 1\n avcC[i++] = AVCProfileIndication;\n avcC[i++] = profile_compatibility;\n avcC[i++] = AVCLevelIndication;\n avcC[i++] = 0xFF; // '11111' + lengthSizeMinusOne = 3\n avcC[i++] = 0xE0 | sps.length; // '111' + numOfSequenceParameterSets\n for (let n = 0; n < sps.length; n++) {\n avcC[i++] = (sps[n].length & 0xFF00) >> 8;\n avcC[i++] = (sps[n].length & 0x00FF);\n avcC.set(sps[n], i);\n i += sps[n].length;\n }\n avcC[i++] = pps.length; // numOfPictureParameterSets\n for (let n = 0; n < pps.length; n++) {\n avcC[i++] = (pps[n].length & 0xFF00) >> 8;\n avcC[i++] = (pps[n].length & 0x00FF);\n avcC.set(pps[n], i);\n i += pps[n].length;\n }\n\n return avcC;\n }\n\n function createMP4AudioSampleEntry(stsd, codec) {\n let mp4a;\n\n if (contentProtection) {\n mp4a = ISOBoxer.createBox('enca', stsd, false);\n } else {\n mp4a = ISOBoxer.createBox('mp4a', stsd, false);\n }\n\n // SampleEntry fields\n mp4a.reserved1 = [0x0, 0x0, 0x0, 0x0, 0x0, 0x0];\n mp4a.data_reference_index = 1;\n\n // AudioSampleEntry fields\n mp4a.reserved2 = [0x0, 0x0];\n mp4a.channelcount = representation.audioChannels;\n mp4a.samplesize = 16;\n mp4a.pre_defined = 0;\n mp4a.reserved_3 = 0;\n mp4a.samplerate = representation.audioSamplingRate << 16;\n\n mp4a.esds = createMPEG4AACESDescriptor();\n\n if (contentProtection) {\n // Create and add Protection Scheme Info Box\n let sinf = ISOBoxer.createBox('sinf', mp4a);\n\n // Create and add Original Format Box => indicate codec type of the encrypted content\n createOriginalFormatBox(sinf, codec);\n\n // Create and add Scheme Type box\n createSchemeTypeBox(sinf);\n\n // Create and add Scheme Information Box\n createSchemeInformationBox(sinf);\n }\n\n return mp4a;\n }\n\n function createMPEG4AACESDescriptor() {\n\n // AudioSpecificConfig (see ISO/IEC 14496-3, subpart 1) => corresponds to hex bytes contained in 'codecPrivateData' field\n let audioSpecificConfig = hexStringtoBuffer(representation.codecPrivateData);\n\n // ESDS length = esds box header length (= 12) +\n // ES_Descriptor header length (= 5) +\n // DecoderConfigDescriptor header length (= 15) +\n // decoderSpecificInfo header length (= 2) +\n // AudioSpecificConfig length (= codecPrivateData length)\n let esdsLength = 34 + audioSpecificConfig.length;\n let esds = new Uint8Array(esdsLength);\n\n let i = 0;\n // esds box\n esds[i++] = (esdsLength & 0xFF000000) >> 24; // esds box length\n esds[i++] = (esdsLength & 0x00FF0000) >> 16; // ''\n esds[i++] = (esdsLength & 0x0000FF00) >> 8; // ''\n esds[i++] = (esdsLength & 0x000000FF); // ''\n esds.set([0x65, 0x73, 0x64, 0x73], i); // type = 'esds'\n i += 4;\n esds.set([0, 0, 0, 0], i); // version = 0, flags = 0\n i += 4;\n // ES_Descriptor (see ISO/IEC 14496-1 (Systems))\n esds[i++] = 0x03; // tag = 0x03 (ES_DescrTag)\n esds[i++] = 20 + audioSpecificConfig.length; // size\n esds[i++] = (trackId & 0xFF00) >> 8; // ES_ID = track_id\n esds[i++] = (trackId & 0x00FF); // ''\n esds[i++] = 0; // flags and streamPriority\n\n // DecoderConfigDescriptor (see ISO/IEC 14496-1 (Systems))\n esds[i++] = 0x04; // tag = 0x04 (DecoderConfigDescrTag)\n esds[i++] = 15 + audioSpecificConfig.length; // size\n esds[i++] = 0x40; // objectTypeIndication = 0x40 (MPEG-4 AAC)\n esds[i] = 0x05 << 2; // streamType = 0x05 (Audiostream)\n esds[i] |= 0 << 1; // upStream = 0\n esds[i++] |= 1; // reserved = 1\n esds[i++] = 0xFF; // buffersizeDB = undefined\n esds[i++] = 0xFF; // ''\n esds[i++] = 0xFF; // ''\n esds[i++] = (representation.bandwidth & 0xFF000000) >> 24; // maxBitrate\n esds[i++] = (representation.bandwidth & 0x00FF0000) >> 16; // ''\n esds[i++] = (representation.bandwidth & 0x0000FF00) >> 8; // ''\n esds[i++] = (representation.bandwidth & 0x000000FF); // ''\n esds[i++] = (representation.bandwidth & 0xFF000000) >> 24; // avgbitrate\n esds[i++] = (representation.bandwidth & 0x00FF0000) >> 16; // ''\n esds[i++] = (representation.bandwidth & 0x0000FF00) >> 8; // ''\n esds[i++] = (representation.bandwidth & 0x000000FF); // ''\n\n // DecoderSpecificInfo (see ISO/IEC 14496-1 (Systems))\n esds[i++] = 0x05; // tag = 0x05 (DecSpecificInfoTag)\n esds[i++] = audioSpecificConfig.length; // size\n esds.set(audioSpecificConfig, i); // AudioSpecificConfig bytes\n\n return esds;\n }\n\n function createOriginalFormatBox(sinf, codec) {\n let frma = ISOBoxer.createBox('frma', sinf);\n frma.data_format = stringToCharCode(codec);\n }\n\n function createSchemeTypeBox(sinf) {\n let schm = ISOBoxer.createFullBox('schm', sinf);\n\n schm.flags = 0;\n schm.version = 0;\n schm.scheme_type = 0x63656E63; // 'cenc' => common encryption\n schm.scheme_version = 0x00010000; // version set to 0x00010000 (Major version 1, Minor version 0)\n }\n\n function createSchemeInformationBox(sinf) {\n let schi = ISOBoxer.createBox('schi', sinf);\n\n // Create and add Track Encryption Box\n createTrackEncryptionBox(schi);\n }\n\n function createProtectionSystemSpecificHeaderBox(moov, keySystems) {\n let pssh_bytes,\n pssh,\n i,\n parsedBuffer;\n\n for (i = 0; i < keySystems.length; i += 1) {\n pssh_bytes = keySystems[i].initData;\n if (pssh_bytes) {\n parsedBuffer = ISOBoxer.parseBuffer(pssh_bytes);\n pssh = parsedBuffer.fetch('pssh');\n if (pssh) {\n ISOBoxer.Utils.appendBox(moov, pssh);\n }\n }\n }\n }\n\n function createTrackEncryptionBox(schi) {\n let tenc = ISOBoxer.createFullBox('tenc', schi);\n\n tenc.flags = 0;\n tenc.version = 0;\n\n tenc.default_IsEncrypted = 0x1;\n tenc.default_IV_size = 8;\n tenc.default_KID = (contentProtection && (contentProtection.length) > 0 && contentProtection[0]['cenc:default_KID']) ?\n contentProtection[0]['cenc:default_KID'] : [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0];\n }\n\n function createTrexBox(moov) {\n let trex = ISOBoxer.createFullBox('trex', moov);\n\n trex.track_ID = trackId;\n trex.default_sample_description_index = 1;\n trex.default_sample_duration = 0;\n trex.default_sample_size = 0;\n trex.default_sample_flags = 0;\n\n return trex;\n }\n\n function hexStringtoBuffer(str) {\n let buf = new Uint8Array(str.length / 2);\n let i;\n\n for (i = 0; i < str.length / 2; i += 1) {\n buf[i] = parseInt('' + str[i * 2] + str[i * 2 + 1], 16);\n }\n return buf;\n }\n\n function stringToCharCode(str) {\n let code = 0;\n let i;\n\n for (i = 0; i < str.length; i += 1) {\n code |= str.charCodeAt(i) << ((str.length - i - 1) * 8);\n }\n return code;\n }\n\n function generateMoov(rep) {\n if (!rep || !rep.adaptation) {\n return;\n }\n\n let isoFile,\n arrayBuffer;\n\n representation = rep;\n adaptationSet = representation.adaptation;\n\n period = adaptationSet.period;\n trackId = adaptationSet.index + 1;\n contentProtection = period.mpd.manifest.Period_asArray[period.index].AdaptationSet_asArray[adaptationSet.index].ContentProtection;\n\n timescale = period.mpd.manifest.Period_asArray[period.index].AdaptationSet_asArray[adaptationSet.index].SegmentTemplate.timescale;\n\n isoFile = ISOBoxer.createFile();\n createFtypBox(isoFile);\n createMoovBox(isoFile);\n\n arrayBuffer = isoFile.write();\n\n return arrayBuffer;\n }\n\n instance = {\n generateMoov: generateMoov\n };\n\n return instance;\n}\n\nMssFragmentMoovProcessor.__dashjs_factory_name = 'MssFragmentMoovProcessor';\nexport default dashjs.FactoryMaker.getClassFactory(MssFragmentMoovProcessor); /* jshint ignore:line */\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MssFragmentMoofProcessor from './MssFragmentMoofProcessor';\nimport MssFragmentMoovProcessor from './MssFragmentMoovProcessor';\nimport {HTTPRequest} from '../streaming/vo/metrics/HTTPRequest';\n\n\n// Add specific box processors not provided by codem-isoboxer library\n\nfunction arrayEqual(arr1, arr2) {\n return (arr1.length === arr2.length) && arr1.every(function (element, index) {\n return element === arr2[index];\n });\n}\n\nfunction saioProcessor() {\n this._procFullBox();\n if (this.flags & 1) {\n this._procField('aux_info_type', 'uint', 32);\n this._procField('aux_info_type_parameter', 'uint', 32);\n }\n this._procField('entry_count', 'uint', 32);\n this._procFieldArray('offset', this.entry_count, 'uint', (this.version === 1) ? 64 : 32);\n}\n\nfunction saizProcessor() {\n this._procFullBox();\n if (this.flags & 1) {\n this._procField('aux_info_type', 'uint', 32);\n this._procField('aux_info_type_parameter', 'uint', 32);\n }\n this._procField('default_sample_info_size', 'uint', 8);\n this._procField('sample_count', 'uint', 32);\n if (this.default_sample_info_size === 0) {\n this._procFieldArray('sample_info_size', this.sample_count, 'uint', 8);\n }\n}\n\nfunction sencProcessor() {\n this._procFullBox();\n this._procField('sample_count', 'uint', 32);\n if (this.flags & 1) {\n this._procField('IV_size', 'uint', 8);\n }\n this._procEntries('entry', this.sample_count, function (entry) {\n this._procEntryField(entry, 'InitializationVector', 'data', 8);\n if (this.flags & 2) {\n this._procEntryField(entry, 'NumberOfEntries', 'uint', 16);\n this._procSubEntries(entry, 'clearAndCryptedData', entry.NumberOfEntries, function (clearAndCryptedData) {\n this._procEntryField(clearAndCryptedData, 'BytesOfClearData', 'uint', 16);\n this._procEntryField(clearAndCryptedData, 'BytesOfEncryptedData', 'uint', 32);\n });\n }\n });\n}\n\nfunction uuidProcessor() {\n let tfxdUserType = [0x6D, 0x1D, 0x9B, 0x05, 0x42, 0xD5, 0x44, 0xE6, 0x80, 0xE2, 0x14, 0x1D, 0xAF, 0xF7, 0x57, 0xB2];\n let tfrfUserType = [0xD4, 0x80, 0x7E, 0xF2, 0xCA, 0x39, 0x46, 0x95, 0x8E, 0x54, 0x26, 0xCB, 0x9E, 0x46, 0xA7, 0x9F];\n let sepiffUserType = [0xA2, 0x39, 0x4F, 0x52, 0x5A, 0x9B, 0x4f, 0x14, 0xA2, 0x44, 0x6C, 0x42, 0x7C, 0x64, 0x8D, 0xF4];\n\n if (arrayEqual(this.usertype, tfxdUserType)) {\n this._procFullBox();\n if (this._parsing) {\n this.type = 'tfxd';\n }\n this._procField('fragment_absolute_time', 'uint', (this.version === 1) ? 64 : 32);\n this._procField('fragment_duration', 'uint', (this.version === 1) ? 64 : 32);\n }\n\n if (arrayEqual(this.usertype, tfrfUserType)) {\n this._procFullBox();\n if (this._parsing) {\n this.type = 'tfrf';\n }\n this._procField('fragment_count', 'uint', 8);\n this._procEntries('entry', this.fragment_count, function (entry) {\n this._procEntryField(entry, 'fragment_absolute_time', 'uint', (this.version === 1) ? 64 : 32);\n this._procEntryField(entry, 'fragment_duration', 'uint', (this.version === 1) ? 64 : 32);\n });\n }\n\n if (arrayEqual(this.usertype, sepiffUserType)) {\n if (this._parsing) {\n this.type = 'sepiff';\n }\n sencProcessor.call(this);\n }\n}\n\nfunction MssFragmentProcessor(config) {\n\n config = config || {};\n const context = this.context;\n const dashMetrics = config.dashMetrics;\n const playbackController = config.playbackController;\n const eventBus = config.eventBus;\n const protectionController = config.protectionController;\n const ISOBoxer = config.ISOBoxer;\n const debug = config.debug;\n let mssFragmentMoovProcessor,\n mssFragmentMoofProcessor,\n instance;\n\n function setup() {\n ISOBoxer.addBoxProcessor('uuid', uuidProcessor);\n ISOBoxer.addBoxProcessor('saio', saioProcessor);\n ISOBoxer.addBoxProcessor('saiz', saizProcessor);\n ISOBoxer.addBoxProcessor('senc', sencProcessor);\n\n mssFragmentMoovProcessor = MssFragmentMoovProcessor(context).create({\n protectionController: protectionController,\n constants: config.constants,\n ISOBoxer: ISOBoxer});\n\n mssFragmentMoofProcessor = MssFragmentMoofProcessor(context).create({\n dashMetrics: dashMetrics,\n playbackController: playbackController,\n ISOBoxer: ISOBoxer,\n eventBus: eventBus,\n debug: debug,\n errHandler: config.errHandler\n });\n }\n\n function generateMoov(rep) {\n return mssFragmentMoovProcessor.generateMoov(rep);\n }\n\n function processFragment(e, streamProcessor) {\n if (!e || !e.request || !e.response) {\n throw new Error('e parameter is missing or malformed');\n }\n\n if (e.request.type === 'MediaSegment') {\n // MediaSegment => convert to Smooth Streaming moof format\n mssFragmentMoofProcessor.convertFragment(e, streamProcessor);\n\n } else if (e.request.type === HTTPRequest.MSS_FRAGMENT_INFO_SEGMENT_TYPE) {\n // FragmentInfo (live) => update segments list\n mssFragmentMoofProcessor.updateSegmentList(e, streamProcessor);\n\n // Stop event propagation (FragmentInfo must not be added to buffer)\n e.sender = null;\n }\n }\n\n instance = {\n generateMoov: generateMoov,\n processFragment: processFragment\n };\n\n setup();\n\n return instance;\n}\n\nMssFragmentProcessor.__dashjs_factory_name = 'MssFragmentProcessor';\nexport default dashjs.FactoryMaker.getClassFactory(MssFragmentProcessor); /* jshint ignore:line */\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DataChunk from '../streaming/vo/DataChunk';\nimport FragmentRequest from '../streaming/vo/FragmentRequest';\nimport MssFragmentInfoController from './MssFragmentInfoController';\nimport MssFragmentProcessor from './MssFragmentProcessor';\nimport MssParser from './parser/MssParser';\nimport MssErrors from './errors/MssErrors';\nimport DashJSError from '../streaming/vo/DashJSError';\nimport {HTTPRequest} from '../streaming/vo/metrics/HTTPRequest';\n\nfunction MssHandler(config) {\n\n config = config || {};\n const context = this.context;\n const eventBus = config.eventBus;\n const events = config.events;\n const constants = config.constants;\n const initSegmentType = config.initSegmentType;\n const dashMetrics = config.dashMetrics;\n const playbackController = config.playbackController;\n const streamController = config.streamController;\n const protectionController = config.protectionController;\n const mssFragmentProcessor = MssFragmentProcessor(context).create({\n dashMetrics: dashMetrics,\n playbackController: playbackController,\n protectionController: protectionController,\n streamController: streamController,\n eventBus: eventBus,\n constants: constants,\n ISOBoxer: config.ISOBoxer,\n debug: config.debug,\n errHandler: config.errHandler\n });\n let mssParser,\n fragmentInfoControllers,\n instance;\n\n function setup() {\n fragmentInfoControllers = [];\n }\n\n function getStreamProcessor(type) {\n return streamController.getActiveStreamProcessors().filter(processor => {\n return processor.getType() === type;\n })[0];\n }\n\n function getFragmentInfoController(type) {\n return fragmentInfoControllers.filter(controller => {\n return (controller.getType() === type);\n })[0];\n }\n\n function createDataChunk(request, streamId, endFragment) {\n const chunk = new DataChunk();\n\n chunk.streamId = streamId;\n chunk.mediaInfo = request.mediaInfo;\n chunk.segmentType = request.type;\n chunk.start = request.startTime;\n chunk.duration = request.duration;\n chunk.end = chunk.start + chunk.duration;\n chunk.index = request.index;\n chunk.quality = request.quality;\n chunk.representationId = request.representationId;\n chunk.endFragment = endFragment;\n\n return chunk;\n }\n\n function startFragmentInfoControllers() {\n\n // Create MssFragmentInfoControllers for each StreamProcessor of active stream (only for audio, video or text)\n let processors = streamController.getActiveStreamProcessors();\n processors.forEach(function (processor) {\n if (processor.getType() === constants.VIDEO ||\n processor.getType() === constants.AUDIO ||\n processor.getType() === constants.TEXT) {\n\n let fragmentInfoController = getFragmentInfoController(processor.getType());\n if (!fragmentInfoController) {\n fragmentInfoController = MssFragmentInfoController(context).create({\n streamProcessor: processor,\n baseURLController: config.baseURLController,\n debug: config.debug\n });\n fragmentInfoController.initialize();\n fragmentInfoControllers.push(fragmentInfoController);\n }\n fragmentInfoController.start();\n }\n });\n }\n\n function stopFragmentInfoControllers() {\n fragmentInfoControllers.forEach(c => {\n c.reset();\n });\n fragmentInfoControllers = [];\n }\n\n function onInitFragmentNeeded(e) {\n let streamProcessor = getStreamProcessor(e.mediaType);\n if (!streamProcessor) return;\n\n // Create init segment request\n let representationController = streamProcessor.getRepresentationController();\n let representation = representationController.getCurrentRepresentation();\n let mediaInfo = streamProcessor.getMediaInfo();\n\n let request = new FragmentRequest();\n request.mediaType = representation.adaptation.type;\n request.type = initSegmentType;\n request.range = representation.range;\n request.quality = representation.index;\n request.mediaInfo = mediaInfo;\n request.representationId = representation.id;\n\n const chunk = createDataChunk(request, mediaInfo.streamInfo.id, e.type !== events.FRAGMENT_LOADING_PROGRESS);\n\n try {\n // Generate init segment (moov)\n chunk.bytes = mssFragmentProcessor.generateMoov(representation);\n\n // Notify init segment has been loaded\n eventBus.trigger(events.INIT_FRAGMENT_LOADED,\n { chunk: chunk },\n { streamId: mediaInfo.streamInfo.id, mediaType: representation.adaptation.type }\n );\n } catch (e) {\n config.errHandler.error(new DashJSError(e.code, e.message, e.data));\n }\n\n // Change the sender value to stop event to be propagated\n e.sender = null;\n }\n\n function onSegmentMediaLoaded(e) {\n if (e.error) return;\n\n let streamProcessor = getStreamProcessor(e.request.mediaType);\n if (!streamProcessor) return;\n\n // Process moof to transcode it from MSS to DASH (or to update segment timeline for SegmentInfo fragments)\n mssFragmentProcessor.processFragment(e, streamProcessor);\n\n if (e.request.type === HTTPRequest.MSS_FRAGMENT_INFO_SEGMENT_TYPE) {\n // If FragmentInfo loaded, then notify corresponding MssFragmentInfoController\n let fragmentInfoController = getFragmentInfoController(e.request.mediaType);\n if (fragmentInfoController) {\n fragmentInfoController.fragmentInfoLoaded(e);\n }\n }\n\n // Start MssFragmentInfoControllers in case of start-over streams\n let manifestInfo = e.request.mediaInfo.streamInfo.manifestInfo;\n if (!manifestInfo.isDynamic && manifestInfo.dvrWindowSize !== Infinity) {\n startFragmentInfoControllers();\n }\n }\n\n function onPlaybackPaused() {\n if (playbackController.getIsDynamic() && playbackController.getTime() !== 0) {\n startFragmentInfoControllers();\n }\n }\n\n function onPlaybackSeeking() {\n if (playbackController.getIsDynamic() && playbackController.getTime() !== 0) {\n startFragmentInfoControllers();\n }\n }\n\n function onTTMLPreProcess(ttmlSubtitles) {\n if (!ttmlSubtitles || !ttmlSubtitles.data) {\n return;\n }\n\n ttmlSubtitles.data = ttmlSubtitles.data.replace(/http:\\/\\/www.w3.org\\/2006\\/10\\/ttaf1/gi, 'http://www.w3.org/ns/ttml');\n }\n\n function registerEvents() {\n eventBus.on(events.INIT_FRAGMENT_NEEDED, onInitFragmentNeeded, instance, { priority: dashjs.FactoryMaker.getSingletonFactoryByName(eventBus.getClassName()).EVENT_PRIORITY_HIGH }); /* jshint ignore:line */\n eventBus.on(events.PLAYBACK_PAUSED, onPlaybackPaused, instance, { priority: dashjs.FactoryMaker.getSingletonFactoryByName(eventBus.getClassName()).EVENT_PRIORITY_HIGH }); /* jshint ignore:line */\n eventBus.on(events.PLAYBACK_SEEKING, onPlaybackSeeking, instance, { priority: dashjs.FactoryMaker.getSingletonFactoryByName(eventBus.getClassName()).EVENT_PRIORITY_HIGH }); /* jshint ignore:line */\n eventBus.on(events.FRAGMENT_LOADING_COMPLETED, onSegmentMediaLoaded, instance, { priority: dashjs.FactoryMaker.getSingletonFactoryByName(eventBus.getClassName()).EVENT_PRIORITY_HIGH }); /* jshint ignore:line */\n eventBus.on(events.TTML_TO_PARSE, onTTMLPreProcess, instance);\n }\n\n function reset() {\n if (mssParser) {\n mssParser.reset();\n mssParser = undefined;\n }\n\n eventBus.off(events.INIT_FRAGMENT_NEEDED, onInitFragmentNeeded, this);\n eventBus.off(events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.off(events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.off(events.FRAGMENT_LOADING_COMPLETED, onSegmentMediaLoaded, this);\n eventBus.off(events.TTML_TO_PARSE, onTTMLPreProcess, this);\n\n // Reset FragmentInfoControllers\n stopFragmentInfoControllers();\n }\n\n function createMssParser() {\n mssParser = MssParser(context).create(config);\n return mssParser;\n }\n\n instance = {\n reset: reset,\n createMssParser: createMssParser,\n registerEvents: registerEvents\n };\n\n setup();\n\n return instance;\n}\n\nMssHandler.__dashjs_factory_name = 'MssHandler';\nconst factory = dashjs.FactoryMaker.getClassFactory(MssHandler); /* jshint ignore:line */\nfactory.errors = MssErrors;\ndashjs.FactoryMaker.updateClassFactory(MssHandler.__dashjs_factory_name, factory); /* jshint ignore:line */\nexport default factory; /* jshint ignore:line */\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport ErrorsBase from '../../core/errors/ErrorsBase';\n\n/**\n * @class\n *\n */\nclass MssErrors extends ErrorsBase {\n constructor() {\n super();\n /**\n * Error code returned when no tfrf box is detected in MSS live stream\n */\n this.MSS_NO_TFRF_CODE = 200;\n\n /**\n * Error code returned when one of the codecs defined in the manifest is not supported\n */\n this.MSS_UNSUPPORTED_CODEC_CODE = 201;\n\n this.MSS_NO_TFRF_MESSAGE = 'Missing tfrf in live media segment';\n this.MSS_UNSUPPORTED_CODEC_MESSAGE = 'Unsupported codec';\n }\n}\n\nlet mssErrors = new MssErrors();\nexport default mssErrors;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MssHandler from './MssHandler';\n\n// Shove both of these into the global scope\nvar context = (typeof window !== 'undefined' && window) || global;\n\nvar dashjs = context.dashjs;\nif (!dashjs) {\n dashjs = context.dashjs = {};\n}\n\ndashjs.MssHandler = MssHandler;\n\nexport default dashjs;\nexport { MssHandler };\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * @module MssParser\n * @ignore\n * @param {Object} config object\n */\n\nimport BigInt from '../../../externals/BigInteger';\n\nfunction MssParser(config) {\n config = config || {};\n const BASE64 = config.BASE64;\n const debug = config.debug;\n const constants = config.constants;\n const manifestModel = config.manifestModel;\n const settings = config.settings;\n\n const DEFAULT_TIME_SCALE = 10000000.0;\n const SUPPORTED_CODECS = ['AAC', 'AACL', 'AACH', 'AACP', 'AVC1', 'H264', 'TTML', 'DFXP'];\n // MPEG-DASH Role and accessibility mapping for text tracks according to ETSI TS 103 285 v1.1.1 (section 7.1.2)\n const ROLE = {\n 'CAPT': 'main',\n 'SUBT': 'alternate',\n 'DESC': 'main'\n };\n const ACCESSIBILITY = {\n 'DESC': '2'\n };\n const samplingFrequencyIndex = {\n 96000: 0x0,\n 88200: 0x1,\n 64000: 0x2,\n 48000: 0x3,\n 44100: 0x4,\n 32000: 0x5,\n 24000: 0x6,\n 22050: 0x7,\n 16000: 0x8,\n 12000: 0x9,\n 11025: 0xA,\n 8000: 0xB,\n 7350: 0xC\n };\n const mimeTypeMap = {\n 'video': 'video/mp4',\n 'audio': 'audio/mp4',\n 'text': 'application/mp4'\n };\n\n let instance,\n logger,\n initialBufferSettings;\n\n\n function setup() {\n logger = debug.getLogger(instance);\n }\n\n function getAttributeAsBoolean(node, attrName) {\n const value = node.getAttribute(attrName);\n if (!value) return false;\n return value.toLowerCase() === 'true';\n }\n\n function mapPeriod(smoothStreamingMedia, timescale) {\n const period = {};\n let streams,\n adaptation;\n\n // For each StreamIndex node, create an AdaptationSet element\n period.AdaptationSet_asArray = [];\n streams = smoothStreamingMedia.getElementsByTagName('StreamIndex');\n for (let i = 0; i < streams.length; i++) {\n adaptation = mapAdaptationSet(streams[i], timescale);\n if (adaptation !== null) {\n period.AdaptationSet_asArray.push(adaptation);\n }\n }\n\n if (period.AdaptationSet_asArray.length > 0) {\n period.AdaptationSet = (period.AdaptationSet_asArray.length > 1) ? period.AdaptationSet_asArray : period.AdaptationSet_asArray[0];\n }\n\n return period;\n }\n\n function mapAdaptationSet(streamIndex, timescale) {\n const adaptationSet = {};\n const representations = [];\n let segmentTemplate;\n let qualityLevels,\n representation,\n i,\n index;\n\n const name = streamIndex.getAttribute('Name');\n const type = streamIndex.getAttribute('Type');\n const lang = streamIndex.getAttribute('Language');\n const fallBackId = lang ? type + '_' + lang : type;\n\n adaptationSet.id = name || fallBackId;\n adaptationSet.contentType = type;\n adaptationSet.lang = lang || 'und';\n adaptationSet.mimeType = mimeTypeMap[type];\n adaptationSet.subType = streamIndex.getAttribute('Subtype');\n adaptationSet.maxWidth = streamIndex.getAttribute('MaxWidth');\n adaptationSet.maxHeight = streamIndex.getAttribute('MaxHeight');\n\n // Map text tracks subTypes to MPEG-DASH AdaptationSet role and accessibility (see ETSI TS 103 285 v1.1.1, section 7.1.2)\n if (adaptationSet.subType) {\n if (ROLE[adaptationSet.subType]) {\n let role = {\n schemeIdUri: 'urn:mpeg:dash:role:2011',\n value: ROLE[adaptationSet.subType]\n };\n adaptationSet.Role = role;\n adaptationSet.Role_asArray = [role];\n }\n if (ACCESSIBILITY[adaptationSet.subType]) {\n let accessibility = {\n schemeIdUri: 'urn:tva:metadata:cs:AudioPurposeCS:2007',\n value: ACCESSIBILITY[adaptationSet.subType]\n };\n adaptationSet.Accessibility = accessibility;\n adaptationSet.Accessibility_asArray = [accessibility];\n }\n }\n\n // Create a SegmentTemplate with a SegmentTimeline\n segmentTemplate = mapSegmentTemplate(streamIndex, timescale);\n\n qualityLevels = streamIndex.getElementsByTagName('QualityLevel');\n // For each QualityLevel node, create a Representation element\n for (i = 0; i < qualityLevels.length; i++) {\n // Propagate BaseURL and mimeType\n qualityLevels[i].BaseURL = adaptationSet.BaseURL;\n qualityLevels[i].mimeType = adaptationSet.mimeType;\n\n // Set quality level id\n index = qualityLevels[i].getAttribute('Index');\n qualityLevels[i].Id = adaptationSet.id + ((index !== null) ? ('_' + index) : '');\n\n // Map Representation to QualityLevel\n representation = mapRepresentation(qualityLevels[i], streamIndex);\n\n if (representation !== null) {\n // Copy SegmentTemplate into Representation\n representation.SegmentTemplate = segmentTemplate;\n\n representations.push(representation);\n }\n }\n\n if (representations.length === 0) {\n return null;\n }\n\n adaptationSet.Representation = (representations.length > 1) ? representations : representations[0];\n adaptationSet.Representation_asArray = representations;\n\n // Set SegmentTemplate\n adaptationSet.SegmentTemplate = segmentTemplate;\n\n return adaptationSet;\n }\n\n function mapRepresentation(qualityLevel, streamIndex) {\n const representation = {};\n const type = streamIndex.getAttribute('Type');\n let fourCCValue = null;\n let width = null;\n let height = null;\n\n representation.id = qualityLevel.Id;\n representation.bandwidth = parseInt(qualityLevel.getAttribute('Bitrate'), 10);\n representation.mimeType = qualityLevel.mimeType;\n\n width = parseInt(qualityLevel.getAttribute('MaxWidth'), 10);\n height = parseInt(qualityLevel.getAttribute('MaxHeight'), 10);\n if (!isNaN(width)) representation.width = width;\n if (!isNaN(height)) representation.height = height;\n\n\n fourCCValue = qualityLevel.getAttribute('FourCC');\n\n // If FourCC not defined at QualityLevel level, then get it from StreamIndex level\n if (fourCCValue === null || fourCCValue === '') {\n fourCCValue = streamIndex.getAttribute('FourCC');\n }\n\n // If still not defined (optionnal for audio stream, see https://msdn.microsoft.com/en-us/library/ff728116%28v=vs.95%29.aspx),\n // then we consider the stream is an audio AAC stream\n if (fourCCValue === null || fourCCValue === '') {\n if (type === constants.AUDIO) {\n fourCCValue = 'AAC';\n } else if (type === constants.VIDEO) {\n logger.debug('FourCC is not defined whereas it is required for a QualityLevel element for a StreamIndex of type \"video\"');\n return null;\n }\n }\n\n // Check if codec is supported\n if (SUPPORTED_CODECS.indexOf(fourCCValue.toUpperCase()) === -1) {\n // Do not send warning\n logger.warn('Codec not supported: ' + fourCCValue);\n return null;\n }\n\n // Get codecs value according to FourCC field\n if (fourCCValue === 'H264' || fourCCValue === 'AVC1') {\n representation.codecs = getH264Codec(qualityLevel);\n } else if (fourCCValue.indexOf('AAC') >= 0) {\n representation.codecs = getAACCodec(qualityLevel, fourCCValue);\n representation.audioSamplingRate = parseInt(qualityLevel.getAttribute('SamplingRate'), 10);\n representation.audioChannels = parseInt(qualityLevel.getAttribute('Channels'), 10);\n } else if (fourCCValue.indexOf('TTML') || fourCCValue.indexOf('DFXP')) {\n representation.codecs = constants.STPP;\n }\n\n representation.codecPrivateData = '' + qualityLevel.getAttribute('CodecPrivateData');\n representation.BaseURL = qualityLevel.BaseURL;\n\n return representation;\n }\n\n function getH264Codec(qualityLevel) {\n let codecPrivateData = qualityLevel.getAttribute('CodecPrivateData').toString();\n let nalHeader,\n avcoti;\n\n\n // Extract from the CodecPrivateData field the hexadecimal representation of the following\n // three bytes in the sequence parameter set NAL unit.\n // => Find the SPS nal header\n nalHeader = /00000001[0-9]7/.exec(codecPrivateData);\n // => Find the 6 characters after the SPS nalHeader (if it exists)\n avcoti = nalHeader && nalHeader[0] ? (codecPrivateData.substr(codecPrivateData.indexOf(nalHeader[0]) + 10, 6)) : undefined;\n\n return 'avc1.' + avcoti;\n }\n\n function getAACCodec(qualityLevel, fourCCValue) {\n const samplingRate = parseInt(qualityLevel.getAttribute('SamplingRate'), 10);\n let codecPrivateData = qualityLevel.getAttribute('CodecPrivateData').toString();\n let objectType = 0;\n let codecPrivateDataHex,\n arr16,\n indexFreq,\n extensionSamplingFrequencyIndex;\n\n //chrome problem, in implicit AAC HE definition, so when AACH is detected in FourCC\n //set objectType to 5 => strange, it should be 2\n if (fourCCValue === 'AACH') {\n objectType = 0x05;\n }\n //if codecPrivateData is empty, build it :\n if (codecPrivateData === undefined || codecPrivateData === '') {\n objectType = 0x02; //AAC Main Low Complexity => object Type = 2\n indexFreq = samplingFrequencyIndex[samplingRate];\n if (fourCCValue === 'AACH') {\n // 4 bytes : XXXXX XXXX XXXX XXXX XXXXX XXX XXXXXXX\n // ' ObjectType' 'Freq Index' 'Channels value' 'Extens Sampl Freq' 'ObjectType' 'GAS' 'alignment = 0'\n objectType = 0x05; // High Efficiency AAC Profile = object Type = 5 SBR\n codecPrivateData = new Uint8Array(4);\n extensionSamplingFrequencyIndex = samplingFrequencyIndex[samplingRate * 2]; // in HE AAC Extension Sampling frequence\n // equals to SamplingRate*2\n //Freq Index is present for 3 bits in the first byte, last bit is in the second\n codecPrivateData[0] = (objectType << 3) | (indexFreq >> 1);\n codecPrivateData[1] = (indexFreq << 7) | (qualityLevel.Channels << 3) | (extensionSamplingFrequencyIndex >> 1);\n codecPrivateData[2] = (extensionSamplingFrequencyIndex << 7) | (0x02 << 2); // origin object type equals to 2 => AAC Main Low Complexity\n codecPrivateData[3] = 0x0; //alignment bits\n\n arr16 = new Uint16Array(2);\n arr16[0] = (codecPrivateData[0] << 8) + codecPrivateData[1];\n arr16[1] = (codecPrivateData[2] << 8) + codecPrivateData[3];\n //convert decimal to hex value\n codecPrivateDataHex = arr16[0].toString(16);\n codecPrivateDataHex = arr16[0].toString(16) + arr16[1].toString(16);\n\n } else {\n // 2 bytes : XXXXX XXXX XXXX XXX\n // ' ObjectType' 'Freq Index' 'Channels value' 'GAS = 000'\n codecPrivateData = new Uint8Array(2);\n //Freq Index is present for 3 bits in the first byte, last bit is in the second\n codecPrivateData[0] = (objectType << 3) | (indexFreq >> 1);\n codecPrivateData[1] = (indexFreq << 7) | (parseInt(qualityLevel.getAttribute('Channels'), 10) << 3);\n // put the 2 bytes in an 16 bits array\n arr16 = new Uint16Array(1);\n arr16[0] = (codecPrivateData[0] << 8) + codecPrivateData[1];\n //convert decimal to hex value\n codecPrivateDataHex = arr16[0].toString(16);\n }\n\n codecPrivateData = '' + codecPrivateDataHex;\n codecPrivateData = codecPrivateData.toUpperCase();\n qualityLevel.setAttribute('CodecPrivateData', codecPrivateData);\n } else if (objectType === 0) {\n objectType = (parseInt(codecPrivateData.substr(0, 2), 16) & 0xF8) >> 3;\n }\n\n return 'mp4a.40.' + objectType;\n }\n\n function mapSegmentTemplate(streamIndex, timescale) {\n const segmentTemplate = {};\n let mediaUrl,\n streamIndexTimeScale,\n url;\n\n url = streamIndex.getAttribute('Url');\n mediaUrl = url ? url.replace('{bitrate}', '$Bandwidth$') : null;\n mediaUrl = mediaUrl ? mediaUrl.replace('{start time}', '$Time$') : null;\n\n streamIndexTimeScale = streamIndex.getAttribute('TimeScale');\n streamIndexTimeScale = streamIndexTimeScale ? parseFloat(streamIndexTimeScale) : timescale;\n\n segmentTemplate.media = mediaUrl;\n segmentTemplate.timescale = streamIndexTimeScale;\n\n segmentTemplate.SegmentTimeline = mapSegmentTimeline(streamIndex, segmentTemplate.timescale);\n\n // Patch: set availabilityTimeOffset to Infinity since segments are available as long as they are present in timeline\n segmentTemplate.availabilityTimeOffset = 'INF';\n\n return segmentTemplate;\n }\n\n function mapSegmentTimeline(streamIndex, timescale) {\n const segmentTimeline = {};\n const chunks = streamIndex.getElementsByTagName('c');\n const segments = [];\n let segment,\n prevSegment,\n tManifest,\n i, j, r;\n let duration = 0;\n\n for (i = 0; i < chunks.length; i++) {\n segment = {};\n\n // Get time 't' attribute value\n tManifest = chunks[i].getAttribute('t');\n\n // => segment.tManifest = original timestamp value as a string (for constructing the fragment request url, see DashHandler)\n // => segment.t = number value of timestamp (maybe rounded value, but only for 0.1 microsecond)\n if (tManifest && BigInt(tManifest).greater(BigInt(Number.MAX_SAFE_INTEGER))) {\n segment.tManifest = tManifest;\n }\n segment.t = parseFloat(tManifest);\n\n // Get duration 'd' attribute value\n segment.d = parseFloat(chunks[i].getAttribute('d'));\n\n // If 't' not defined for first segment then t=0\n if ((i === 0) && !segment.t) {\n segment.t = 0;\n }\n\n if (i > 0) {\n prevSegment = segments[segments.length - 1];\n // Update previous segment duration if not defined\n if (!prevSegment.d) {\n if (prevSegment.tManifest) {\n prevSegment.d = BigInt(tManifest).subtract(BigInt(prevSegment.tManifest)).toJSNumber();\n } else {\n prevSegment.d = segment.t - prevSegment.t;\n }\n duration += prevSegment.d;\n }\n // Set segment absolute timestamp if not set in manifest\n if (!segment.t) {\n if (prevSegment.tManifest) {\n segment.tManifest = BigInt(prevSegment.tManifest).add(BigInt(prevSegment.d)).toString();\n segment.t = parseFloat(segment.tManifest);\n } else {\n segment.t = prevSegment.t + prevSegment.d;\n }\n }\n }\n\n if (segment.d) {\n duration += segment.d;\n }\n\n // Create new segment\n segments.push(segment);\n\n // Support for 'r' attribute (i.e. \"repeat\" as in MPEG-DASH)\n r = parseFloat(chunks[i].getAttribute('r'));\n if (r) {\n\n for (j = 0; j < (r - 1); j++) {\n prevSegment = segments[segments.length - 1];\n segment = {};\n segment.t = prevSegment.t + prevSegment.d;\n segment.d = prevSegment.d;\n if (prevSegment.tManifest) {\n segment.tManifest = BigInt(prevSegment.tManifest).add(BigInt(prevSegment.d)).toString();\n }\n duration += segment.d;\n segments.push(segment);\n }\n }\n }\n\n segmentTimeline.S = segments;\n segmentTimeline.S_asArray = segments;\n segmentTimeline.duration = duration / timescale;\n\n return segmentTimeline;\n }\n\n function getKIDFromProtectionHeader(protectionHeader) {\n let prHeader,\n wrmHeader,\n xmlReader,\n KID;\n\n // Get PlayReady header as byte array (base64 decoded)\n prHeader = BASE64.decodeArray(protectionHeader.firstChild.data);\n\n // Get Right Management header (WRMHEADER) from PlayReady header\n wrmHeader = getWRMHeaderFromPRHeader(prHeader);\n\n if (wrmHeader) {\n // Convert from multi-byte to unicode\n wrmHeader = new Uint16Array(wrmHeader.buffer);\n\n // Convert to string\n wrmHeader = String.fromCharCode.apply(null, wrmHeader);\n\n // Parse <WRMHeader> to get KID field value\n xmlReader = (new DOMParser()).parseFromString(wrmHeader, 'application/xml');\n KID = xmlReader.querySelector('KID').textContent;\n\n // Get KID (base64 decoded) as byte array\n KID = BASE64.decodeArray(KID);\n\n // Convert UUID from little-endian to big-endian\n convertUuidEndianness(KID);\n }\n\n return KID;\n }\n\n function getWRMHeaderFromPRHeader(prHeader) {\n let length,\n recordCount,\n recordType,\n recordLength,\n recordValue;\n let i = 0;\n\n // Parse PlayReady header\n\n // Length - 32 bits (LE format)\n length = (prHeader[i + 3] << 24) + (prHeader[i + 2] << 16) + (prHeader[i + 1] << 8) + prHeader[i]; // eslint-disable-line\n i += 4;\n\n // Record count - 16 bits (LE format)\n recordCount = (prHeader[i + 1] << 8) + prHeader[i]; // eslint-disable-line\n i += 2;\n\n // Parse records\n while (i < prHeader.length) {\n // Record type - 16 bits (LE format)\n recordType = (prHeader[i + 1] << 8) + prHeader[i];\n i += 2;\n\n // Check if Rights Management header (record type = 0x01)\n if (recordType === 0x01) {\n\n // Record length - 16 bits (LE format)\n recordLength = (prHeader[i + 1] << 8) + prHeader[i];\n i += 2;\n\n // Record value => contains <WRMHEADER>\n recordValue = new Uint8Array(recordLength);\n recordValue.set(prHeader.subarray(i, i + recordLength));\n return recordValue;\n }\n }\n\n return null;\n }\n\n function convertUuidEndianness(uuid) {\n swapBytes(uuid, 0, 3);\n swapBytes(uuid, 1, 2);\n swapBytes(uuid, 4, 5);\n swapBytes(uuid, 6, 7);\n }\n\n function swapBytes(bytes, pos1, pos2) {\n const temp = bytes[pos1];\n bytes[pos1] = bytes[pos2];\n bytes[pos2] = temp;\n }\n\n\n function createPRContentProtection(protectionHeader) {\n let pro = {\n __text: protectionHeader.firstChild.data,\n __prefix: 'mspr'\n };\n return {\n schemeIdUri: 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95',\n value: 'com.microsoft.playready',\n pro: pro,\n pro_asArray: pro\n };\n }\n\n function createWidevineContentProtection(KID) {\n let widevineCP = {\n schemeIdUri: 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed',\n value: 'com.widevine.alpha'\n };\n if (!KID)\n return widevineCP;\n // Create Widevine CENC header (Protocol Buffer) with KID value\n const wvCencHeader = new Uint8Array(2 + KID.length);\n wvCencHeader[0] = 0x12;\n wvCencHeader[1] = 0x10;\n wvCencHeader.set(KID, 2);\n\n // Create a pssh box\n const length = 12 /* box length, type, version and flags */ + 16 /* SystemID */ + 4 /* data length */ + wvCencHeader.length;\n let pssh = new Uint8Array(length);\n let i = 0;\n\n // Set box length value\n pssh[i++] = (length & 0xFF000000) >> 24;\n pssh[i++] = (length & 0x00FF0000) >> 16;\n pssh[i++] = (length & 0x0000FF00) >> 8;\n pssh[i++] = (length & 0x000000FF);\n\n // Set type ('pssh'), version (0) and flags (0)\n pssh.set([0x70, 0x73, 0x73, 0x68, 0x00, 0x00, 0x00, 0x00], i);\n i += 8;\n\n // Set SystemID ('edef8ba9-79d6-4ace-a3c8-27dcd51d21ed')\n pssh.set([0xed, 0xef, 0x8b, 0xa9, 0x79, 0xd6, 0x4a, 0xce, 0xa3, 0xc8, 0x27, 0xdc, 0xd5, 0x1d, 0x21, 0xed], i);\n i += 16;\n\n // Set data length value\n pssh[i++] = (wvCencHeader.length & 0xFF000000) >> 24;\n pssh[i++] = (wvCencHeader.length & 0x00FF0000) >> 16;\n pssh[i++] = (wvCencHeader.length & 0x0000FF00) >> 8;\n pssh[i++] = (wvCencHeader.length & 0x000000FF);\n\n // Copy Widevine CENC header\n pssh.set(wvCencHeader, i);\n\n // Convert to BASE64 string\n pssh = String.fromCharCode.apply(null, pssh);\n pssh = BASE64.encodeASCII(pssh);\n\n widevineCP.pssh = { __text: pssh };\n\n return widevineCP;\n }\n\n function processManifest(xmlDoc) {\n const manifest = {};\n const contentProtections = [];\n const smoothStreamingMedia = xmlDoc.getElementsByTagName('SmoothStreamingMedia')[0];\n const protection = xmlDoc.getElementsByTagName('Protection')[0];\n let protectionHeader = null;\n let period,\n adaptations,\n contentProtection,\n KID,\n timestampOffset,\n startTime,\n segments,\n timescale,\n segmentDuration,\n i, j;\n\n // Set manifest node properties\n manifest.protocol = 'MSS';\n manifest.profiles = 'urn:mpeg:dash:profile:isoff-live:2011';\n manifest.type = getAttributeAsBoolean(smoothStreamingMedia, 'IsLive') ? 'dynamic' : 'static';\n timescale = smoothStreamingMedia.getAttribute('TimeScale');\n manifest.timescale = timescale ? parseFloat(timescale) : DEFAULT_TIME_SCALE;\n let dvrWindowLength = parseFloat(smoothStreamingMedia.getAttribute('DVRWindowLength'));\n // If the DVRWindowLength field is omitted for a live presentation or set to 0, the DVR window is effectively infinite\n if (manifest.type === 'dynamic' && (dvrWindowLength === 0 || isNaN(dvrWindowLength))) {\n dvrWindowLength = Infinity;\n }\n // Star-over\n if (dvrWindowLength === 0 && getAttributeAsBoolean(smoothStreamingMedia, 'CanSeek')) {\n dvrWindowLength = Infinity;\n }\n\n if (dvrWindowLength > 0) {\n manifest.timeShiftBufferDepth = dvrWindowLength / manifest.timescale;\n }\n\n let duration = parseFloat(smoothStreamingMedia.getAttribute('Duration'));\n manifest.mediaPresentationDuration = (duration === 0) ? Infinity : duration / manifest.timescale;\n // By default, set minBufferTime to 2 sec. (but set below according to video segment duration)\n manifest.minBufferTime = 2;\n manifest.ttmlTimeIsRelative = true;\n\n // Live manifest with Duration = start-over\n if (manifest.type === 'dynamic' && duration > 0) {\n manifest.type = 'static';\n // We set timeShiftBufferDepth to initial duration, to be used by MssFragmentController to update segment timeline\n manifest.timeShiftBufferDepth = duration / manifest.timescale;\n // Duration will be set according to current segment timeline duration (see below)\n }\n\n if (manifest.type === 'dynamic') {\n manifest.refreshManifestOnSwitchTrack = true; // Refresh manifest when switching tracks\n manifest.doNotUpdateDVRWindowOnBufferUpdated = true; // DVRWindow is update by MssFragmentMoofPocessor based on tfrf boxes\n manifest.ignorePostponeTimePeriod = true; // Never update manifest\n manifest.availabilityStartTime = new Date(null); // Returns 1970\n }\n\n // Map period node to manifest root node\n manifest.Period = mapPeriod(smoothStreamingMedia, manifest.timescale);\n manifest.Period_asArray = [manifest.Period];\n\n // Initialize period start time\n period = manifest.Period;\n period.start = 0;\n\n // Uncomment to test live to static manifests\n // if (manifest.type !== 'static') {\n // manifest.type = 'static';\n // manifest.mediaPresentationDuration = manifest.timeShiftBufferDepth;\n // manifest.timeShiftBufferDepth = null;\n // }\n\n // ContentProtection node\n if (protection !== undefined) {\n protectionHeader = xmlDoc.getElementsByTagName('ProtectionHeader')[0];\n\n // Some packagers put newlines into the ProtectionHeader base64 string, which is not good\n // because this cannot be correctly parsed. Let's just filter out any newlines found in there.\n protectionHeader.firstChild.data = protectionHeader.firstChild.data.replace(/\\n|\\r/g, '');\n\n // Get KID (in CENC format) from protection header\n KID = getKIDFromProtectionHeader(protectionHeader);\n\n // Create ContentProtection for PlayReady\n contentProtection = createPRContentProtection(protectionHeader);\n contentProtection['cenc:default_KID'] = KID;\n contentProtections.push(contentProtection);\n\n // Create ContentProtection for Widevine (as a CENC protection)\n contentProtection = createWidevineContentProtection(KID);\n contentProtection['cenc:default_KID'] = KID;\n contentProtections.push(contentProtection);\n\n manifest.ContentProtection = contentProtections;\n manifest.ContentProtection_asArray = contentProtections;\n }\n\n adaptations = period.AdaptationSet_asArray;\n\n for (i = 0; i < adaptations.length; i += 1) {\n adaptations[i].SegmentTemplate.initialization = '$Bandwidth$';\n // Propagate content protection information into each adaptation\n if (manifest.ContentProtection !== undefined) {\n adaptations[i].ContentProtection = manifest.ContentProtection;\n adaptations[i].ContentProtection_asArray = manifest.ContentProtection_asArray;\n }\n\n if (adaptations[i].contentType === 'video') {\n // Get video segment duration\n segmentDuration = adaptations[i].SegmentTemplate.SegmentTimeline.S_asArray[0].d / adaptations[i].SegmentTemplate.timescale;\n // Set minBufferTime to one segment duration\n manifest.minBufferTime = segmentDuration;\n\n if (manifest.type === 'dynamic') {\n // Match timeShiftBufferDepth to video segment timeline duration\n if (manifest.timeShiftBufferDepth > 0 &&\n manifest.timeShiftBufferDepth !== Infinity &&\n manifest.timeShiftBufferDepth > adaptations[i].SegmentTemplate.SegmentTimeline.duration) {\n manifest.timeShiftBufferDepth = adaptations[i].SegmentTemplate.SegmentTimeline.duration;\n }\n }\n }\n }\n\n // Cap minBufferTime to timeShiftBufferDepth\n manifest.minBufferTime = Math.min(manifest.minBufferTime, (manifest.timeShiftBufferDepth ? manifest.timeShiftBufferDepth : Infinity));\n\n // In case of live streams:\n // 1- configure player buffering properties according to target live delay\n // 2- adapt live delay and then buffers length in case timeShiftBufferDepth is too small compared to target live delay (see PlaybackController.computeLiveDelay())\n // 3- Set retry attempts and intervals for FragmentInfo requests\n if (manifest.type === 'dynamic') {\n let targetLiveDelay = settings.get().streaming.delay.liveDelay;\n if (!targetLiveDelay) {\n const liveDelayFragmentCount = settings.get().streaming.delay.liveDelayFragmentCount !== null && !isNaN(settings.get().streaming.delay.liveDelayFragmentCount) ? settings.get().streaming.delay.liveDelayFragmentCount : 4;\n targetLiveDelay = segmentDuration * liveDelayFragmentCount;\n }\n let targetDelayCapping = Math.max(manifest.timeShiftBufferDepth - 10/*END_OF_PLAYLIST_PADDING*/, manifest.timeShiftBufferDepth / 2);\n let liveDelay = Math.min(targetDelayCapping, targetLiveDelay);\n // Consider a margin of more than one segment in order to avoid Precondition Failed errors (412), for example if audio and video are not correctly synchronized\n let bufferTime = liveDelay - (segmentDuration * 1.5);\n\n // Store initial buffer settings\n initialBufferSettings = {\n 'streaming': {\n 'buffer': {\n 'stableBufferTime': settings.get().streaming.buffer.stableBufferTime,\n 'bufferTimeAtTopQuality': settings.get().streaming.buffer.bufferTimeAtTopQuality,\n 'bufferTimeAtTopQualityLongForm': settings.get().streaming.buffer.bufferTimeAtTopQualityLongForm\n },\n 'timeShiftBuffer': {\n calcFromSegmentTimeline: settings.get().streaming.timeShiftBuffer.calcFromSegmentTimeline\n },\n 'delay': {\n 'liveDelay': settings.get().streaming.delay.liveDelay\n }\n }\n };\n\n settings.update({\n 'streaming': {\n 'buffer': {\n 'stableBufferTime': bufferTime,\n 'bufferTimeAtTopQuality': bufferTime,\n 'bufferTimeAtTopQualityLongForm': bufferTime\n },\n 'timeShiftBuffer': {\n calcFromSegmentTimeline: true\n },\n 'delay': {\n 'liveDelay': liveDelay\n }\n }\n });\n }\n\n // Delete Content Protection under root manifest node\n delete manifest.ContentProtection;\n delete manifest.ContentProtection_asArray;\n\n // In case of VOD streams, check if start time is greater than 0\n // Then determine timestamp offset according to higher audio/video start time\n // (use case = live stream delinearization)\n if (manifest.type === 'static') {\n // In case of start-over stream and manifest reloading (due to track switch)\n // we consider previous timestampOffset to keep timelines synchronized\n var prevManifest = manifestModel.getValue();\n if (prevManifest && prevManifest.timestampOffset) {\n timestampOffset = prevManifest.timestampOffset;\n } else {\n for (i = 0; i < adaptations.length; i++) {\n if (adaptations[i].contentType === constants.AUDIO || adaptations[i].contentType === constants.VIDEO) {\n segments = adaptations[i].SegmentTemplate.SegmentTimeline.S_asArray;\n startTime = segments[0].t;\n if (timestampOffset === undefined) {\n timestampOffset = startTime;\n }\n timestampOffset = Math.min(timestampOffset, startTime);\n // Correct content duration according to minimum adaptation's segment timeline duration\n // in order to force <video> element sending 'ended' event\n manifest.mediaPresentationDuration = Math.min(manifest.mediaPresentationDuration, adaptations[i].SegmentTemplate.SegmentTimeline.duration);\n }\n }\n }\n if (timestampOffset > 0) {\n // Patch segment templates timestamps and determine period start time (since audio/video should not be aligned to 0)\n manifest.timestampOffset = timestampOffset;\n for (i = 0; i < adaptations.length; i++) {\n segments = adaptations[i].SegmentTemplate.SegmentTimeline.S_asArray;\n for (j = 0; j < segments.length; j++) {\n if (!segments[j].tManifest) {\n segments[j].tManifest = segments[j].t.toString();\n }\n segments[j].t -= timestampOffset;\n }\n if (adaptations[i].contentType === constants.AUDIO || adaptations[i].contentType === constants.VIDEO) {\n period.start = Math.max(segments[0].t, period.start);\n adaptations[i].SegmentTemplate.presentationTimeOffset = period.start;\n }\n }\n period.start /= manifest.timescale;\n }\n }\n\n // Floor the duration to get around precision differences between segments timestamps and MSE buffer timestamps\n // and then avoid 'ended' event not being raised\n manifest.mediaPresentationDuration = Math.floor(manifest.mediaPresentationDuration * 1000) / 1000;\n period.duration = manifest.mediaPresentationDuration;\n\n return manifest;\n }\n\n function parseDOM(data) {\n let xmlDoc = null;\n\n if (window.DOMParser) {\n const parser = new window.DOMParser();\n\n xmlDoc = parser.parseFromString(data, 'text/xml');\n if (xmlDoc.getElementsByTagName('parsererror').length > 0) {\n throw new Error('parsing the manifest failed');\n }\n }\n\n return xmlDoc;\n }\n\n function getMatchers() {\n return null;\n }\n\n function getIron() {\n return null;\n }\n\n function internalParse(data) {\n let xmlDoc = null;\n let manifest = null;\n\n const startTime = window.performance.now();\n\n // Parse the MSS XML manifest\n xmlDoc = parseDOM(data);\n\n const xmlParseTime = window.performance.now();\n\n if (xmlDoc === null) {\n return null;\n }\n\n // Convert MSS manifest into DASH manifest\n manifest = processManifest(xmlDoc, new Date());\n\n const mss2dashTime = window.performance.now();\n\n logger.info('Parsing complete: (xmlParsing: ' + (xmlParseTime - startTime).toPrecision(3) + 'ms, mss2dash: ' + (mss2dashTime - xmlParseTime).toPrecision(3) + 'ms, total: ' + ((mss2dashTime - startTime) / 1000).toPrecision(3) + 's)');\n\n return manifest;\n }\n\n function reset() {\n // Restore initial buffer settings\n if (initialBufferSettings) {\n settings.update(initialBufferSettings);\n }\n }\n\n instance = {\n parse: internalParse,\n getMatchers: getMatchers,\n getIron: getIron,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nMssParser.__dashjs_factory_name = 'MssParser';\nexport default dashjs.FactoryMaker.getClassFactory(MssParser); /* jshint ignore:line */\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from '../core/events/EventsBase';\n\n/**\n * @class\n * @implements EventsBase\n */\nclass MediaPlayerEvents extends EventsBase {\n\n /**\n * @description Public facing external events to be used when developing a player that implements dash.js.\n */\n constructor() {\n super();\n /**\n * Triggered when playback will not start yet\n * as the MPD's availabilityStartTime is in the future.\n * Check delay property in payload to determine time before playback will start.\n * @event MediaPlayerEvents#AST_IN_FUTURE\n */\n this.AST_IN_FUTURE = 'astInFuture';\n\n /**\n * Triggered when the video element's buffer state changes to stalled.\n * Check mediaType in payload to determine type (Video, Audio, FragmentedText).\n * @event MediaPlayerEvents#BUFFER_EMPTY\n */\n this.BUFFER_EMPTY = 'bufferStalled';\n\n /**\n * Triggered when the video element's buffer state changes to loaded.\n * Check mediaType in payload to determine type (Video, Audio, FragmentedText).\n * @event MediaPlayerEvents#BUFFER_LOADED\n */\n this.BUFFER_LOADED = 'bufferLoaded';\n\n /**\n * Triggered when the video element's buffer state changes, either stalled or loaded. Check payload for state.\n * @event MediaPlayerEvents#BUFFER_LEVEL_STATE_CHANGED\n */\n this.BUFFER_LEVEL_STATE_CHANGED = 'bufferStateChanged';\n\n /**\n * Triggered when the buffer level of a media type has been updated\n * @event MediaPlayerEvents#BUFFER_LEVEL_UPDATED\n */\n this.BUFFER_LEVEL_UPDATED = 'bufferLevelUpdated';\n\n /**\n * Triggered when a dynamic stream changed to static (transition phase between Live and On-Demand).\n * @event MediaPlayerEvents#DYNAMIC_TO_STATIC\n */\n this.DYNAMIC_TO_STATIC = 'dynamicToStatic';\n\n /**\n * Triggered when there is an error from the element or MSE source buffer.\n * @event MediaPlayerEvents#ERROR\n */\n this.ERROR = 'error';\n /**\n * Triggered when a fragment download has completed.\n * @event MediaPlayerEvents#FRAGMENT_LOADING_COMPLETED\n */\n this.FRAGMENT_LOADING_COMPLETED = 'fragmentLoadingCompleted';\n\n /**\n * Triggered when a partial fragment download has completed.\n * @event MediaPlayerEvents#FRAGMENT_LOADING_PROGRESS\n */\n this.FRAGMENT_LOADING_PROGRESS = 'fragmentLoadingProgress';\n /**\n * Triggered when a fragment download has started.\n * @event MediaPlayerEvents#FRAGMENT_LOADING_STARTED\n */\n this.FRAGMENT_LOADING_STARTED = 'fragmentLoadingStarted';\n\n /**\n * Triggered when a fragment download is abandoned due to detection of slow download base on the ABR abandon rule..\n * @event MediaPlayerEvents#FRAGMENT_LOADING_ABANDONED\n */\n this.FRAGMENT_LOADING_ABANDONED = 'fragmentLoadingAbandoned';\n\n /**\n * Triggered when {@link module:Debug} logger methods are called.\n * @event MediaPlayerEvents#LOG\n */\n this.LOG = 'log';\n\n /**\n * Triggered when the manifest load is complete\n * @event MediaPlayerEvents#MANIFEST_LOADED\n */\n this.MANIFEST_LOADED = 'manifestLoaded';\n\n /**\n * Triggered anytime there is a change to the overall metrics.\n * @event MediaPlayerEvents#METRICS_CHANGED\n */\n this.METRICS_CHANGED = 'metricsChanged';\n\n /**\n * Triggered when an individual metric is added, updated or cleared.\n * @event MediaPlayerEvents#METRIC_CHANGED\n */\n this.METRIC_CHANGED = 'metricChanged';\n\n /**\n * Triggered every time a new metric is added.\n * @event MediaPlayerEvents#METRIC_ADDED\n */\n this.METRIC_ADDED = 'metricAdded';\n\n /**\n * Triggered every time a metric is updated.\n * @event MediaPlayerEvents#METRIC_UPDATED\n */\n this.METRIC_UPDATED = 'metricUpdated';\n\n /**\n * Triggered when a new stream (period) starts.\n * @event MediaPlayerEvents#PERIOD_SWITCH_STARTED\n */\n this.PERIOD_SWITCH_STARTED = 'periodSwitchStarted';\n\n /**\n * Triggered at the stream end of a period.\n * @event MediaPlayerEvents#PERIOD_SWITCH_COMPLETED\n */\n this.PERIOD_SWITCH_COMPLETED = 'periodSwitchCompleted';\n\n /**\n * Triggered when an ABR up /down switch is initiated; either by user in manual mode or auto mode via ABR rules.\n * @event MediaPlayerEvents#QUALITY_CHANGE_REQUESTED\n */\n this.QUALITY_CHANGE_REQUESTED = 'qualityChangeRequested';\n\n /**\n * Triggered when the new ABR quality is being rendered on-screen.\n * @event MediaPlayerEvents#QUALITY_CHANGE_RENDERED\n */\n this.QUALITY_CHANGE_RENDERED = 'qualityChangeRendered';\n\n /**\n * Triggered when the new track is being rendered.\n * @event MediaPlayerEvents#TRACK_CHANGE_RENDERED\n */\n this.TRACK_CHANGE_RENDERED = 'trackChangeRendered';\n\n /**\n * Triggered when a stream (period) is being loaded\n * @event MediaPlayerEvents#STREAM_INITIALIZING\n */\n this.STREAM_INITIALIZING = 'streamInitializing';\n\n /**\n * Triggered when a stream (period) is loaded\n * @event MediaPlayerEvents#STREAM_UPDATED\n */\n this.STREAM_UPDATED = 'streamUpdated';\n\n /**\n * Triggered when a stream (period) is activated\n * @event MediaPlayerEvents#STREAM_ACTIVATED\n */\n this.STREAM_ACTIVATED = 'streamActivated';\n\n /**\n * Triggered when a stream (period) is deactivated\n * @event MediaPlayerEvents#STREAM_DEACTIVATED\n */\n this.STREAM_DEACTIVATED = 'streamDeactivated';\n\n /**\n * Triggered when a stream (period) is activated\n * @event MediaPlayerEvents#STREAM_INITIALIZED\n */\n this.STREAM_INITIALIZED = 'streamInitialized';\n\n /**\n * Triggered when the player has been reset.\n * @event MediaPlayerEvents#STREAM_TEARDOWN_COMPLETE\n */\n this.STREAM_TEARDOWN_COMPLETE = 'streamTeardownComplete';\n\n /**\n * Triggered once all text tracks detected in the MPD are added to the video element.\n * @event MediaPlayerEvents#TEXT_TRACKS_ADDED\n */\n this.TEXT_TRACKS_ADDED = 'allTextTracksAdded';\n\n /**\n * Triggered when a text track is added to the video element's TextTrackList\n * @event MediaPlayerEvents#TEXT_TRACK_ADDED\n */\n this.TEXT_TRACK_ADDED = 'textTrackAdded';\n\n /**\n * Triggered when a ttml chunk is parsed.\n * @event MediaPlayerEvents#TTML_PARSED\n */\n this.TTML_PARSED = 'ttmlParsed';\n\n /**\n * Triggered when a ttml chunk has to be parsed.\n * @event MediaPlayerEvents#TTML_TO_PARSE\n */\n this.TTML_TO_PARSE = 'ttmlToParse';\n\n /**\n * Triggered when a caption is rendered.\n * @event MediaPlayerEvents#CAPTION_RENDERED\n */\n this.CAPTION_RENDERED = 'captionRendered';\n\n /**\n * Triggered when the caption container is resized.\n * @event MediaPlayerEvents#CAPTION_CONTAINER_RESIZE\n */\n this.CAPTION_CONTAINER_RESIZE = 'captionContainerResize';\n\n /**\n * Sent when enough data is available that the media can be played,\n * at least for a couple of frames. This corresponds to the\n * HAVE_ENOUGH_DATA readyState.\n * @event MediaPlayerEvents#CAN_PLAY\n */\n this.CAN_PLAY = 'canPlay';\n\n /**\n * This corresponds to the CAN_PLAY_THROUGH readyState.\n * @event MediaPlayerEvents#CAN_PLAY_THROUGH\n */\n this.CAN_PLAY_THROUGH = 'canPlayThrough';\n\n /**\n * Sent when playback completes.\n * @event MediaPlayerEvents#PLAYBACK_ENDED\n */\n this.PLAYBACK_ENDED = 'playbackEnded';\n\n /**\n * Sent when an error occurs. The element's error\n * attribute contains more information.\n * @event MediaPlayerEvents#PLAYBACK_ERROR\n */\n this.PLAYBACK_ERROR = 'playbackError';\n\n /**\n * Sent when playback is not allowed (for example if user gesture is needed).\n * @event MediaPlayerEvents#PLAYBACK_NOT_ALLOWED\n */\n this.PLAYBACK_NOT_ALLOWED = 'playbackNotAllowed';\n\n /**\n * The media's metadata has finished loading; all attributes now\n * contain as much useful information as they're going to.\n * @event MediaPlayerEvents#PLAYBACK_METADATA_LOADED\n */\n this.PLAYBACK_METADATA_LOADED = 'playbackMetaDataLoaded';\n\n /**\n * The event is fired when the frame at the current playback position of the media has finished loading;\n * often the first frame\n * @event MediaPlayerEvents#PLAYBACK_LOADED_DATA\n */\n this.PLAYBACK_LOADED_DATA = 'playbackLoadedData';\n\n /**\n * Sent when playback is paused.\n * @event MediaPlayerEvents#PLAYBACK_PAUSED\n */\n this.PLAYBACK_PAUSED = 'playbackPaused';\n\n /**\n * Sent when the media begins to play (either for the first time, after having been paused,\n * or after ending and then restarting).\n *\n * @event MediaPlayerEvents#PLAYBACK_PLAYING\n */\n this.PLAYBACK_PLAYING = 'playbackPlaying';\n\n /**\n * Sent periodically to inform interested parties of progress downloading\n * the media. Information about the current amount of the media that has\n * been downloaded is available in the media element's buffered attribute.\n * @event MediaPlayerEvents#PLAYBACK_PROGRESS\n */\n this.PLAYBACK_PROGRESS = 'playbackProgress';\n\n /**\n * Sent when the playback speed changes.\n * @event MediaPlayerEvents#PLAYBACK_RATE_CHANGED\n */\n this.PLAYBACK_RATE_CHANGED = 'playbackRateChanged';\n\n /**\n * Sent when a seek operation completes.\n * @event MediaPlayerEvents#PLAYBACK_SEEKED\n */\n this.PLAYBACK_SEEKED = 'playbackSeeked';\n\n /**\n * Sent when a seek operation begins.\n * @event MediaPlayerEvents#PLAYBACK_SEEKING\n */\n this.PLAYBACK_SEEKING = 'playbackSeeking';\n\n /**\n * Sent when the video element reports stalled\n * @event MediaPlayerEvents#PLAYBACK_STALLED\n */\n this.PLAYBACK_STALLED = 'playbackStalled';\n\n /**\n * Sent when playback of the media starts after having been paused;\n * that is, when playback is resumed after a prior pause event.\n *\n * @event MediaPlayerEvents#PLAYBACK_STARTED\n */\n this.PLAYBACK_STARTED = 'playbackStarted';\n\n /**\n * The time indicated by the element's currentTime attribute has changed.\n * @event MediaPlayerEvents#PLAYBACK_TIME_UPDATED\n */\n this.PLAYBACK_TIME_UPDATED = 'playbackTimeUpdated';\n\n /**\n * Sent when the video element reports that the volume has changed\n * @event MediaPlayerEvents#PLAYBACK_VOLUME_CHANGED\n */\n this.PLAYBACK_VOLUME_CHANGED = 'playbackVolumeChanged';\n\n /**\n * Sent when the media playback has stopped because of a temporary lack of data.\n *\n * @event MediaPlayerEvents#PLAYBACK_WAITING\n */\n this.PLAYBACK_WAITING = 'playbackWaiting';\n\n /**\n * Manifest validity changed - As a result of an MPD validity expiration event.\n * @event MediaPlayerEvents#MANIFEST_VALIDITY_CHANGED\n */\n this.MANIFEST_VALIDITY_CHANGED = 'manifestValidityChanged';\n\n /**\n * Dash events are triggered at their respective start points on the timeline.\n * @event MediaPlayerEvents#EVENT_MODE_ON_START\n */\n this.EVENT_MODE_ON_START = 'eventModeOnStart';\n\n /**\n * Dash events are triggered as soon as they were parsed.\n * @event MediaPlayerEvents#EVENT_MODE_ON_RECEIVE\n */\n this.EVENT_MODE_ON_RECEIVE = 'eventModeOnReceive';\n\n /**\n * Event that is dispatched whenever the player encounters a potential conformance validation that might lead to unexpected/not optimal behavior\n * @event MediaPlayerEvents#CONFORMANCE_VIOLATION\n */\n this.CONFORMANCE_VIOLATION = 'conformanceViolation';\n\n /**\n * Event that is dispatched whenever the player switches to a different representation\n * @event MediaPlayerEvents#REPRESENTATION_SWITCH\n */\n this.REPRESENTATION_SWITCH = 'representationSwitch';\n\n /**\n * Event that is dispatched whenever an adaptation set is removed due to all representations not being supported.\n * @event MediaPlayerEvents#ADAPTATION_SET_REMOVED_NO_CAPABILITIES\n */\n this.ADAPTATION_SET_REMOVED_NO_CAPABILITIES = 'adaptationSetRemovedNoCapabilities';\n /**\n * Triggered when a content steering request has completed.\n * @event MediaPlayerEvents#CONTENT_STEERING_REQUEST_COMPLETED\n */\n this.CONTENT_STEERING_REQUEST_COMPLETED = 'contentSteeringRequestCompleted';\n }\n}\n\nlet mediaPlayerEvents = new MediaPlayerEvents();\nexport default mediaPlayerEvents;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass DashJSError {\n constructor(code, message, data) {\n this.code = code || null;\n this.message = message || null;\n this.data = data || null;\n }\n}\n\nexport default DashJSError;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * @class\n * @ignore\n */\nclass DataChunk {\n //Represents a data structure that keep all the necessary info about a single init/media segment\n constructor() {\n this.streamId = null;\n this.mediaInfo = null;\n this.segmentType = null;\n this.quality = NaN;\n this.index = NaN;\n this.bytes = null;\n this.start = NaN;\n this.end = NaN;\n this.duration = NaN;\n this.representationId = null;\n this.endFragment = null;\n }\n}\n\nexport default DataChunk;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { HTTPRequest } from '../vo/metrics/HTTPRequest';\n\n/**\n * @class\n * @ignore\n */\nclass FragmentRequest {\n constructor(url) {\n this.action = FragmentRequest.ACTION_DOWNLOAD;\n this.startTime = NaN;\n this.mediaStartTime = NaN;\n this.mediaType = null;\n this.mediaInfo = null;\n this.type = null;\n this.duration = NaN;\n this.timescale = NaN;\n this.range = null;\n this.url = url || null;\n this.serviceLocation = null;\n this.requestStartDate = null;\n this.firstByteDate = null;\n this.requestEndDate = null;\n this.quality = NaN;\n this.index = NaN;\n this.availabilityStartTime = null;\n this.availabilityEndTime = null;\n this.wallStartTime = null;\n this.bytesLoaded = NaN;\n this.bytesTotal = NaN;\n this.delayLoadingTime = NaN;\n this.responseType = 'arraybuffer';\n this.representationId = null;\n }\n\n isInitializationRequest() {\n return (this.type && this.type === HTTPRequest.INIT_SEGMENT_TYPE);\n }\n\n setInfo(info) {\n this.type = info && info.init ? HTTPRequest.INIT_SEGMENT_TYPE : HTTPRequest.MEDIA_SEGMENT_TYPE;\n this.url = info && info.url ? info.url : null;\n this.range = info && info.range ? info.range.start + '-' + info.range.end : null;\n this.mediaType = info && info.mediaType ? info.mediaType : null;\n }\n}\n\nFragmentRequest.ACTION_DOWNLOAD = 'download';\nFragmentRequest.ACTION_COMPLETE = 'complete';\n\nexport default FragmentRequest;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @classdesc This Object holds reference to the HTTPRequest for manifest, fragment and xlink loading.\n * Members which are not defined in ISO23009-1 Annex D should be prefixed by a _ so that they are ignored\n * by Metrics Reporting code.\n * @ignore\n */\nclass HTTPRequest {\n /**\n * @class\n */\n constructor() {\n /**\n * Identifier of the TCP connection on which the HTTP request was sent.\n * @public\n */\n this.tcpid = null;\n /**\n * This is an optional parameter and should not be included in HTTP request/response transactions for progressive download.\n * The type of the request:\n * - MPD\n * - XLink expansion\n * - Initialization Fragment\n * - Index Fragment\n * - Media Fragment\n * - Bitstream Switching Fragment\n * - other\n * @public\n */\n this.type = null;\n /**\n * The original URL (before any redirects or failures)\n * @public\n */\n this.url = null;\n /**\n * The actual URL requested, if different from above\n * @public\n */\n this.actualurl = null;\n /**\n * The contents of the byte-range-spec part of the HTTP Range header.\n * @public\n */\n this.range = null;\n /**\n * Real-Time | The real time at which the request was sent.\n * @public\n */\n this.trequest = null;\n /**\n * Real-Time | The real time at which the first byte of the response was received.\n * @public\n */\n this.tresponse = null;\n /**\n * The HTTP response code.\n * @public\n */\n this.responsecode = null;\n /**\n * The duration of the throughput trace intervals (ms), for successful requests only.\n * @public\n */\n this.interval = null;\n /**\n * Throughput traces, for successful requests only.\n * @public\n */\n this.trace = [];\n\n /**\n * Type of stream (\"audio\" | \"video\" etc..)\n * @public\n */\n this._stream = null;\n /**\n * Real-Time | The real time at which the request finished.\n * @public\n */\n this._tfinish = null;\n /**\n * The duration of the media requests, if available, in seconds.\n * @public\n */\n this._mediaduration = null;\n /**\n * The media segment quality\n * @public\n */\n this._quality = null;\n /**\n * all the response headers from request.\n * @public\n */\n this._responseHeaders = null;\n /**\n * The selected service location for the request. string.\n * @public\n */\n this._serviceLocation = null;\n /**\n * The type of the loader that was used. Distinguish between fetch loader and xhr loader\n */\n this._fileLoaderType = null;\n }\n}\n\n/**\n * @classdesc This Object holds reference to the progress of the HTTPRequest.\n * @ignore\n */\nclass HTTPRequestTrace {\n /**\n * @class\n */\n constructor() {\n /**\n * Real-Time | Measurement stream start.\n * @public\n */\n this.s = null;\n /**\n * Measurement stream duration (ms).\n * @public\n */\n this.d = null;\n /**\n * List of integers counting the bytes received in each trace interval within the measurement stream.\n * @public\n */\n this.b = [];\n }\n}\n\nHTTPRequest.GET = 'GET';\nHTTPRequest.HEAD = 'HEAD';\nHTTPRequest.MPD_TYPE = 'MPD';\nHTTPRequest.XLINK_EXPANSION_TYPE = 'XLinkExpansion';\nHTTPRequest.INIT_SEGMENT_TYPE = 'InitializationSegment';\nHTTPRequest.INDEX_SEGMENT_TYPE = 'IndexSegment';\nHTTPRequest.MEDIA_SEGMENT_TYPE = 'MediaSegment';\nHTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE = 'BitstreamSwitchingSegment';\nHTTPRequest.MSS_FRAGMENT_INFO_SEGMENT_TYPE = 'FragmentInfoSegment';\nHTTPRequest.DVB_REPORTING_TYPE = 'DVBReporting';\nHTTPRequest.LICENSE = 'license';\nHTTPRequest.CONTENT_STEERING_TYPE = 'ContentSteering';\nHTTPRequest.OTHER_TYPE = 'other';\n\nexport {HTTPRequest, HTTPRequestTrace};\n"],"sourceRoot":""}