-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
dash.mss.debug.js.map
1 lines (1 loc) · 335 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","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","OTHER_TYPE"],"mappings":"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sEAAf;AAAwB,wB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/PxB;AACA;AACA;AACA;AACA;AACA;AACA;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;;IACMxS,S;;;;;AACF,uBAAc;AAAA;;AAAA;;AACV;AACA;AACR;AACA;;AACQ,UAAKC,gBAAL,GAAwB,GAAxB;AAEA;AACR;AACA;;AACQ,UAAK8I,0BAAL,GAAkC,GAAlC;AAEA,UAAK7I,mBAAL,GAA2B,oCAA3B;AACA,UAAK+I,6BAAL,GAAqC,mBAArC;AAbU;AAcb;;;EAfmBlP,+D;;AAkBxB,IAAI2Y,SAAS,GAAG,IAAI1S,SAAJ,EAAhB;AACe0S,wEAAf,E;;;;;;;;;;;;ACvDA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CAIA;;AACA,IAAI1D,OAAO,GAAI,OAAO2D,MAAP,KAAkB,WAAlB,IAAiCA,MAAlC,IAA6CC,MAA3D;AAEA,IAAI3T,MAAM,GAAG+P,OAAO,CAAC/P,MAArB;;AACA,IAAI,CAACA,MAAL,EAAa;AACTA,QAAM,GAAG+P,OAAO,CAAC/P,MAAR,GAAiB,EAA1B;AACH;;AAEDA,MAAM,CAACoQ,UAAP,GAAoBA,mDAApB;AAEepQ,qEAAf;;;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;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;AACA;AAEA;;AAEA,SAASsT,SAAT,CAAmBtY,MAAnB,EAA2B;AACvBA,QAAM,GAAGA,MAA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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;IACM7f,W,GACF,qBAAY+I,IAAZ,EAAkBE,OAAlB,EAA2BE,IAA3B,EAAiC;AAAA;;AAC7B,OAAKJ,IAAL,GAAYA,IAAI,IAAI,IAApB;AACA,OAAKE,OAAL,GAAeA,OAAO,IAAI,IAA1B;AACA,OAAKE,IAAL,GAAYA,IAAI,IAAI,IAApB;AACH,C;;AAGUnJ,0EAAf,E;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;IACMsQ,S,GACF;AACA,qBAAc;AAAA;;AACV,OAAKH,QAAL,GAAgB,IAAhB;AACA,OAAK3S,SAAL,GAAiB,IAAjB;AACA,OAAK+S,WAAL,GAAmB,IAAnB;AACA,OAAKhT,OAAL,GAAeuiB,GAAf;AACA,OAAK5kB,KAAL,GAAa4kB,GAAb;AACA,OAAK7O,KAAL,GAAa,IAAb;AACA,OAAKhZ,KAAL,GAAa6nB,GAAb;AACA,OAAKlf,GAAL,GAAWkf,GAAX;AACA,OAAKxiB,QAAL,GAAgBwiB,GAAhB;AACA,OAAKniB,gBAAL,GAAwB,IAAxB;AACA,OAAKyS,WAAL,GAAmB,IAAnB;AACH,C;;AAGUE,wEAAf,E;;;;;;;;;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;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;AAEA;AACA;AACA;AACA;;IACMpT,e;AACF,2BAAYW,GAAZ,EAAiB;AAAA;;AACb,SAAKkiB,MAAL,GAAc7iB,eAAe,CAAC8iB,eAA9B;AACA,SAAKhlB,SAAL,GAAiB8kB,GAAjB;AACA,SAAKG,cAAL,GAAsBH,GAAtB;AACA,SAAK3iB,SAAL,GAAiB,IAAjB;AACA,SAAKK,SAAL,GAAiB,IAAjB;AACA,SAAK1C,IAAL,GAAY,IAAZ;AACA,SAAKwC,QAAL,GAAgBwiB,GAAhB;AACA,SAAK7iB,SAAL,GAAiB6iB,GAAjB;AACA,SAAKzoB,KAAL,GAAa,IAAb;AACA,SAAKwG,GAAL,GAAWA,GAAG,IAAI,IAAlB;AACA,SAAKqiB,eAAL,GAAuB,IAAvB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACA,SAAKC,aAAL,GAAqB,IAArB;AACA,SAAKC,cAAL,GAAsB,IAAtB;AACA,SAAK9iB,OAAL,GAAeuiB,GAAf;AACA,SAAK5kB,KAAL,GAAa4kB,GAAb;AACA,SAAKrf,qBAAL,GAA6B,IAA7B;AACA,SAAK6f,mBAAL,GAA2B,IAA3B;AACA,SAAKC,aAAL,GAAqB,IAArB;AACA,SAAKC,WAAL,GAAmBV,GAAnB;AACA,SAAKW,UAAL,GAAkBX,GAAlB;AACA,SAAKY,gBAAL,GAAwBZ,GAAxB;AACA,SAAKa,YAAL,GAAoB,aAApB;AACA,SAAKhjB,gBAAL,GAAwB,IAAxB;AACH;;;;WAED,mCAA0B;AACtB,aAAQ,KAAK7C,IAAL,IAAa,KAAKA,IAAL,KAAcsC,mEAAW,CAACwjB,iBAA/C;AACH;;;WAED,iBAAQvE,IAAR,EAAc;AACV,WAAKvhB,IAAL,GAAYuhB,IAAI,IAAIA,IAAI,CAACwE,IAAb,GAAoBzjB,mEAAW,CAACwjB,iBAAhC,GAAoDxjB,mEAAW,CAAC0jB,kBAA5E;AACA,WAAKjjB,GAAL,GAAWwe,IAAI,IAAIA,IAAI,CAACxe,GAAb,GAAmBwe,IAAI,CAACxe,GAAxB,GAA8B,IAAzC;AACA,WAAKxG,KAAL,GAAaglB,IAAI,IAAIA,IAAI,CAAChlB,KAAb,GAAqBglB,IAAI,CAAChlB,KAAL,CAAWY,KAAX,GAAmB,GAAnB,GAAyBokB,IAAI,CAAChlB,KAAL,CAAWuJ,GAAzD,GAA+D,IAA5E;AACA,WAAKzD,SAAL,GAAiBkf,IAAI,IAAIA,IAAI,CAAClf,SAAb,GAAyBkf,IAAI,CAAClf,SAA9B,GAA0C,IAA3D;AACH;;;;;;AAGLD,eAAe,CAAC8iB,eAAhB,GAAkC,UAAlC;AACA9iB,eAAe,CAAC6jB,eAAhB,GAAkC,UAAlC;AAEe7jB,8EAAf,E;;;;;;;;;;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;IACME,W;AACF;AACJ;AACA;AACI,uBAAc;AAAA;;AACV;AACR;AACA;AACA;AACQ,OAAK4jB,KAAL,GAAa,IAAb;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,OAAKlmB,IAAL,GAAY,IAAZ;AACA;AACR;AACA;AACA;;AACQ,OAAK+C,GAAL,GAAW,IAAX;AACA;AACR;AACA;AACA;;AACQ,OAAKojB,SAAL,GAAiB,IAAjB;AACA;AACR;AACA;AACA;;AACQ,OAAK5pB,KAAL,GAAa,IAAb;AACA;AACR;AACA;AACA;;AACQ,OAAK6pB,QAAL,GAAgB,IAAhB;AACA;AACR;AACA;AACA;;AACQ,OAAKC,SAAL,GAAiB,IAAjB;AACA;AACR;AACA;AACA;;AACQ,OAAKC,YAAL,GAAoB,IAApB;AACA;AACR;AACA;AACA;;AACQ,OAAKC,QAAL,GAAgB,IAAhB;AACA;AACR;AACA;AACA;;AACQ,OAAKC,KAAL,GAAa,EAAb;AAEA;AACR;AACA;AACA;;AACQ,OAAKC,OAAL,GAAe,IAAf;AACA;AACR;AACA;AACA;;AACQ,OAAKC,QAAL,GAAgB,IAAhB;AACA;AACR;AACA;AACA;;AACQ,OAAKC,cAAL,GAAsB,IAAtB;AACA;AACR;AACA;AACA;;AACQ,OAAKC,QAAL,GAAgB,IAAhB;AACA;AACR;AACA;AACA;;AACQ,OAAKC,gBAAL,GAAwB,IAAxB;AACA;AACR;AACA;AACA;;AACQ,OAAKC,gBAAL,GAAwB,IAAxB;AACA;AACR;AACA;;AACQ,OAAKC,eAAL,GAAuB,IAAvB;AACH,C;AAGL;AACA;AACA;AACA;;;IACMC,gB;AACF;AACJ;AACA;AACI,4BAAc;AAAA;;AACV;AACR;AACA;AACA;AACQ,OAAKC,CAAL,GAAS,IAAT;AACA;AACR;AACA;AACA;;AACQ,OAAK3yB,CAAL,GAAS,IAAT;AACA;AACR;AACA;AACA;;AACQ,OAAKnC,CAAL,GAAS,EAAT;AACH,C;;AAGLmQ,WAAW,CAAC4kB,GAAZ,GAAkB,KAAlB;AACA5kB,WAAW,CAAC6kB,IAAZ,GAAmB,MAAnB;AACA7kB,WAAW,CAAC8kB,QAAZ,GAAuB,KAAvB;AACA9kB,WAAW,CAAC+kB,oBAAZ,GAAmC,gBAAnC;AACA/kB,WAAW,CAACwjB,iBAAZ,GAAgC,uBAAhC;AACAxjB,WAAW,CAACglB,kBAAZ,GAAiC,cAAjC;AACAhlB,WAAW,CAAC0jB,kBAAZ,GAAiC,cAAjC;AACA1jB,WAAW,CAACilB,gCAAZ,GAA+C,2BAA/C;AACAjlB,WAAW,CAACC,8BAAZ,GAA6C,qBAA7C;AACAD,WAAW,CAACklB,kBAAZ,GAAiC,cAAjC;AACAllB,WAAW,CAACmlB,OAAZ,GAAsB,SAAtB;AACAnlB,WAAW,CAAColB,UAAZ,GAAyB,OAAzB","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}\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.OTHER_TYPE = 'other';\n\nexport {HTTPRequest, HTTPRequestTrace};\n"],"sourceRoot":""}