{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/parse/box.js","webpack:///./src/parse/stream.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./src/error.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/event-emitter/index.js","webpack:///./node_modules/es5-ext/object/is-value.js","webpack:///./src/parse/date.js","webpack:///./src/fmp4/buffer.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///external \"Player\"","webpack:///./node_modules/type/value/is.js","webpack:///./node_modules/concat-typed-array/lib/index.js","webpack:///./src/media/task.js","webpack:///./src/index.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/es7.string.pad-start.js","webpack:///./node_modules/core-js/modules/_string-pad.js","webpack:///./node_modules/core-js/modules/_string-repeat.js","webpack:///./src/mp4.js","webpack:///./node_modules/d/index.js","webpack:///./node_modules/type/plain-function/is.js","webpack:///./node_modules/type/function/is.js","webpack:///./node_modules/type/prototype/is.js","webpack:///./node_modules/type/object/is.js","webpack:///./node_modules/es5-ext/object/assign/index.js","webpack:///./node_modules/es5-ext/object/assign/is-implemented.js","webpack:///./node_modules/es5-ext/object/assign/shim.js","webpack:///./node_modules/es5-ext/object/keys/index.js","webpack:///./node_modules/es5-ext/object/keys/is-implemented.js","webpack:///./node_modules/es5-ext/object/keys/shim.js","webpack:///./node_modules/es5-ext/function/noop.js","webpack:///./node_modules/es5-ext/object/valid-value.js","webpack:///./node_modules/es5-ext/object/normalize-options.js","webpack:///./node_modules/es5-ext/string/#/contains/index.js","webpack:///./node_modules/es5-ext/string/#/contains/is-implemented.js","webpack:///./node_modules/es5-ext/string/#/contains/shim.js","webpack:///./node_modules/es5-ext/object/valid-callable.js","webpack:///./node_modules/deepmerge/dist/es.js","webpack:///./src/parse/index.js","webpack:///./node_modules/concat-typed-array/lib/concat.js","webpack:///./src/parse/box/vmhd.js","webpack:///./src/parse/box/url.js","webpack:///./src/parse/box/udta.js","webpack:///./src/parse/box/tkhd.js","webpack:///./src/parse/box/stts.js","webpack:///./src/parse/box/stsz.js","webpack:///./src/parse/box/stss.js","webpack:///./src/parse/box/stsd.js","webpack:///./src/parse/box/stsc.js","webpack:///./src/parse/box/stco.js","webpack:///./src/parse/box/smhd.js","webpack:///./src/parse/box/SLConfigDescriptor.js","webpack:///./src/parse/box/pasp.js","webpack:///./src/parse/box/mvhd.js","webpack:///./src/parse/box/MP4ESDescrTag.js","webpack:///./src/parse/box/MP4DecSpecificDescrTag.js","webpack:///./src/parse/box/MP4DecConfigDescrTag.js","webpack:///./src/parse/box/mp4a.js","webpack:///./src/parse/box/mdhd.js","webpack:///./src/parse/box/mdat.js","webpack:///./src/parse/box/iods.js","webpack:///./src/parse/box/hdlr.js","webpack:///./src/parse/box/ftyp.js","webpack:///./src/parse/box/esds.js","webpack:///./src/parse/box/elst.js","webpack:///./src/parse/box/dref.js","webpack:///./src/parse/box/ctts.js","webpack:///./src/parse/box/co64.js","webpack:///./src/parse/box/btrt.js","webpack:///./src/parse/box/avcC.js","webpack:///./src/parse/box/avc1.js","webpack:///./src/fmp4/mp4.js","webpack:///./src/util/index.js","webpack:///./src/media/mse.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Box","_classCallCheck","this","headSize","size","type","subBox","start","stream","position","readUint32","String","fromCharCode","readUint8","readUint64","Errors","line","handle","msg","uuid","push","end","data","buffer","slice","byteLength","parser","containerBox","find","item","containerParser","Function","readHeader","readBody","Stream","box","_error","ArrayBuffer","dataview","DataView","count","loop","Math","floor","last","readByte","sign","res","getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","global","window","self","__g","store","require","uid","USE_SYMBOL","core","version","__e","isObject","it","TypeError","_typeof","_xgplayer","_package","_Errors","vid","errd","arguments","length","undefined","url","_this","_possibleConstructorReturn","__proto__","getPrototypeOf","Player","aFunction","fn","that","a","b","apply","toString","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","O","P","Attributes","e","on","once","off","emit","methods","descriptors","base","callable","defineProperties","descriptor","configurable","writable","listener","__eeOnceListener__","__ee__","listeners","candidate","splice","args","Array","_undefined","val","UTC","time","Date","setFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setTime","getTime","toLocaleString","_concatTypedArray","Buffer","Uint8Array","_len","_key","forEach","_concatTypedArray2","default","console","error","cof","TAG","ARG","T","B","tryGet","callee","copyright","id","px","random","concat","hide","redefine","ctx","$export","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_PROTO","IS_BIND","target","S","expProto","U","W","R","createDesc","exec","document","is","createElement","has","SRC","$toString","TPL","split","inspectSource","safe","isFunction","join","toInteger","min","ceil","isNaN","defer","channel","port","invoke","html","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","event","nextTick","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","appendChild","removeChild","setTimeout","set","clear","PromiseCapability","C","resolve","reject","promise","$$resolve","$$reject","navigator","userAgent","obj","_concat","_concat2","Task","range","withCredentials","callback","_eventEmitter2","xhr","XMLHttpRequest","responseType","open","setRequestHeader","onload","status","response","remove","onerror","message","onabort","update","abort","filter","idx","Queue","sended","wait","max","limit","readyState","send","cancel","install","player","sniffer","util","mainURL","backupURL","preloadTime","config","waiterTimer","rule","pluginRule","typeOf","src","_mainURL","_backupURL","loadData","currentTime","timer","clearTimeout","mp4","seek","then","mse","updating","appendBuffer","init","MP4","Promise","MSE","packMeta","some","browser","isSupported","_start","errorHandle","err","canDownload","bufferCache","_currentTime","switchURL","_replay","clearInterval","mp4ProgressTimer","seekingFunc","pauseFunc","playingFunc","waitingFunc","endedFunc","destroyFunc","errt","play","result","logParams","pluginSrc","buffered","cut","segment","meta","duration","deepCopy","audioDuration","endTime","videoDuration","write","Blob","mp5","timeRage","curTime","getBufferedRange","removeBuffer","hasClass","root","JSON","parse","stringify","bc","bu_acu_t","played","begin","video","pt","vt","vd","playNext","len","flag","timeupdateFunc","cacheMaxTime","every","center","endOfStream","isEnded","setInterval","hasBuffered","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","LIBRARY","classof","anInstance","forOf","speciesConstructor","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","versions","v8","$Promise","isNode","empty","newPromiseCapability","USE_NATIVE","FakePromise","constructor","PromiseRejectionEvent","indexOf","isThenable","notify","isReject","_n","chain","_c","_v","ok","_s","reaction","exited","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","reason","_a","v","onrejectionhandled","$reject","_d","_w","$resolve","wrapper","executor","onFulfilled","onRejected","catch","capability","x","iter","all","iterable","values","index","remaining","$index","alreadyCalled","race","valueOf","bitmap","Constructor","forbiddenField","isArrayIter","toLength","getIterFn","BREAK","RETURN","entries","ITERATOR","step","iterator","iterFn","next","done","ret","Iterators","ArrayProto","getIteratorMethod","SPECIES","D","un","documentElement","macrotask","Observer","MutationObserver","WebKitMutationObserver","head","flush","parent","standalone","toggle","node","createTextNode","observe","characterData","promiseCapability","def","tag","stat","DESCRIPTORS","KEY","SAFE_CLOSING","riter","from","skipClosing","arr","$pad","WEBKIT_BUG","test","padStart","maxLength","repeat","defined","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","str","Infinity","RangeError","chunkSize","pow","CHUNK_SIZE","moovParse","cache","Set","_this2","moov","moovBox","mvhd","findBox","traks","videoTrak","audioTrak","videoCodec","audioCodec","videoTimeScale","audioTimeScale","sps","pps","profile","width","height","channelCount","sampleRate","decoderConfig","trak","hdlr","mdhd","codecBox","handleType","avcC","tkhd","timescale","toHex","profileCompatibility","AVCLevelIndication","sequence","map","Number","esds","mp4a","ESDescriptor","typeID","EScode","_deepmerge2","mdat","_boxes","seekTrakDuration","mdatStart","vf","videoKeyFrames","videoKeyFramesLength","createTime","modifyTime","timeScale","pixelRatio","audioConfig","getData","parsed","moovStart","boxes","Parser","nextBox","stsc","stsz","stts","stco","ctts","samples","seekSampleTime","offset","seekSampleOffset","FMP4","ftyp","timeStart","fragIndex","videoFrames","audioFrames","audioKeyFrames","nowTime","nextTime","MAX_SAFE_INTEGER","startTime","loadFragment","videoFrame","audioFrame","getSamplesByOrders","order","videoNextFrame","audioNextFrame","dat","createFragment","moof","mdatData","resBuffers","add","framesIndex","_samples","addFragment","firstFlags","flags","bufferSize","timeEnd","fragIndexStart","fragIndexEnd","loadFragmentForCut","videoStartFrame","audioStartFrame","videoEndFrame","audioEndFrame","createFragmentForCut","_videoFrames","stss","frames","_audioFrames","audioIndex","videoScale","audioScale","audioStts","entry","seekOrderSampleByTime","isValue","isPlainFunction","assign","normalizeOpts","contains","dscr","w","options","desc","gs","classRe","functionToString","isPrototype","possibleTypes","function","foo","bar","trzy","keys","dest","opts1","searchString","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","clone","deepmerge","isArray","defaultArrayMerge","element","arrayMerge","sourceIsArray","destination","mergeObject","array","Error","reduce","prev","deepmerge_1","Parse","bufferLength","ResultConstructor","totalLength","arrays","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","return","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_arr","vmhd","graphicsmode","readUint16","opcolor","location","_box","udta","modify","trackID","reserverd","layer","readInt16","alternate_group","volume","matrix","sampleCount","sampleDuration","sampleSize","stsd","entryCount","first_chunk","samples_per_chunk","sample_desc_index","preEntry","chunk_count","first_sample","pre","smhd","balance","readInt8","SLConfigDescriptor","extend","skip","SL","pasp","content","rate","nextTrackID","MP4ESDescrTag","esID","priority","MP4DecConfigDescrTag","MP4DecSpecificDescrTag","dataSize","streamUint","maximum","average","dataReferenceIndex","language","iods","major_brand","minor_version","compatibleBrands","compatible_brands","elst","entry_count","segment_duration","media_time","readInt32","media_rate_integer","media_rate_fraction","dref","read","co64","btrt","bufferSizeDB","maxBitrate","avgBitrate","configVersion","lengthSizeMinusOne","numOfSequenceParameterSets","sequenceLength","ppsCount","ppsLength","dataviewLength","avc1","horizresolution","vertresolution","frameCount","depth","_buffer","UINT32_MAX","charCodeAt","writeUint32","trak1","trak2","mvex","upperWordDuration","lowerWordDuration","bytes","mdia","samplerate","mediaTime","minf","extension","dinf","stbl","configlen","hSpacing","vSpacing","avcc","mehd","trex","mfhd","traf","tfhd","tfdt","sdtp","trun","upper","lower","sdtpLength","pad","charstr","maxlen","chars","substring","hex","_len2","rst","_key2","sample_order","chunk_start","chunk_offset","chunk_offset_sample","chunk_index","samples_offset","last_chunk","pop","chunkOffset","stscOffset","sum","ct","itemDuration","toFixed","codecs","mediaSource","MediaSource","URL","createObjectURL","sourceBuffer","addSourceBuffer","shift","state","isTypeSupported"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,I,6UClFrDnC,EAAA,I,IACAA,EAAA,I,uDACMoC,E,WACJ,SAAAA,K,4FAAeC,CAAAC,KAAAF,GACbE,KAAKC,SAAW,EAChBD,KAAKE,KAAO,EACZF,KAAKG,KAAO,GACZH,KAAKI,OAAS,GACdJ,KAAKK,OAAS,E,6CAEJC,GAIV,GAHAN,KAAKK,MAAQC,EAAOC,SACpBP,KAAKE,KAAOI,EAAOE,aACnBR,KAAKG,KAAOM,OAAOC,aAAaJ,EAAOK,YAAaL,EAAOK,YAAaL,EAAOK,YAAaL,EAAOK,aACjF,IAAdX,KAAKE,KACPF,KAAKE,KAAOI,EAAOM,kBACd,GAAkB,IAAdZ,KAAKE,MACI,SAAdF,KAAKG,KACP,MAAM,IAAIU,UAAO,QAAS,GAAI,CAACC,KAAM,GAAIC,OAAQ,mBAAoBC,IAAK,8BAG9E,GAAkB,SAAdhB,KAAKG,KAEP,IADA,IAAIc,EAAO,GACFnD,EAAI,EAAGA,EAAI,GAAIA,IACtBmD,EAAKC,KAAKZ,EAAOK,e,+BAIbL,GACR,IAAIa,EAAMnB,KAAKE,KAAOI,EAAOC,SAAWP,KAAKK,MACzCF,EAAOH,KAAKG,KAChBH,KAAKoB,KAAOd,EAAOe,OAAOC,MAAMhB,EAAOC,SAAUD,EAAOC,SAAWY,GACnEb,EAAOC,UAAYP,KAAKoB,KAAKG,WAC7B,IAAIC,UAEFA,EADE1B,EAAI2B,aAAaC,KAAK,SAAAC,GAAA,OAAQA,IAASxB,IAChCL,EAAI8B,gBAEJ9B,EAAIK,KAEDqB,aAAkBK,UAC9BL,EAAOvD,KAAK+B,Q,2BAGVM,GACJN,KAAK8B,WAAWxB,GAChBN,KAAK+B,SAASzB,M,yCAOd,IAHA,IAAIA,EAAS,IAAI0B,UAAOhC,KAAKoB,MACzBlB,EAAOI,EAAOe,OAAOE,WAElBjB,EAAOC,SAAWL,GAAM,CAC7B,IAAI+B,EAAM,IAAInC,EACdmC,EAAIH,WAAWxB,GAHNN,KAIJI,OAAOc,KAAKe,GACjBA,EAAIF,SAASzB,UALJN,KAOCoB,KACZd,EAAS,S,KAIbR,EAAI2B,aAAe,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,Q,UAErF3B,E,8VCjEfoC,EAAAxE,EAAA,G,wCACMsE,E,WACJ,SAAAA,EAAaX,GACX,G,4FADmBtB,CAAAC,KAAAgC,KACfX,aAAkBc,aAKpB,MAAM,IAAItB,UAAO,QAAS,GAAI,CAACC,KAAM,EAAGC,OAAQ,uBAAwBC,IAAK,kBAJ7EhB,KAAKqB,OAASA,EACdrB,KAAKoC,SAAW,IAAIC,SAAShB,GAC7BrB,KAAKoC,SAAS7B,SAAW,E,uCAcvB+B,GAGJ,IAFA,IAAIC,EAAOC,KAAKC,MAAMH,EAAQ,GAC1BI,EAAOJ,EAAQ,EACVxE,EAAI,EAAGA,EAAIyE,EAAMzE,IACxBkE,EAAOW,SAAS3C,KAAKoC,SAAU,GAE7BM,EAAO,GACTV,EAAOW,SAAS3C,KAAKoC,SAAUM,K,kCA2DjC,OAAOV,EAAOW,SAAS3C,KAAKoC,SAAU,K,mCAItC,OAAOJ,EAAOW,SAAS3C,KAAKoC,SAAU,K,mCAItC,OAAOJ,EAAOW,SAAS3C,KAAKoC,SAAU,K,mCAItC,OAAOJ,EAAOW,SAAS3C,KAAKoC,SAAU,K,iCAItC,OAAOJ,EAAOW,SAAS3C,KAAKoC,SAAU,GAAG,K,kCAGzC,OAAOJ,EAAOW,SAAS3C,KAAKoC,SAAU,GAAG,K,kCAGzC,OAAOJ,EAAOW,SAAS3C,KAAKoC,SAAU,GAAG,K,6BAhG7BrD,GACZiB,KAAKoC,SAAS7B,SAAWxB,G,eAIzB,OAAOiB,KAAKoC,SAAS7B,Y,gCAoBNc,EAAQnB,EAAM0C,GAC7B,IAAIC,SACJ,OAAQ3C,GACN,KAAK,EAED2C,EADED,EACIvB,EAAOyB,QAAQzB,EAAOd,UAEtBc,EAAO0B,SAAS1B,EAAOd,UAE/B,MACF,KAAK,EAEDsC,EADED,EACIvB,EAAO2B,SAAS3B,EAAOd,UAEvBc,EAAO4B,UAAU5B,EAAOd,UAEhC,MACF,KAAK,EACH,GAAIqC,EACF,KAAM,+BAENC,EAAMxB,EAAO0B,SAAS1B,EAAOd,WAAa,GAC1CsC,GAAOxB,EAAO0B,SAAS1B,EAAOd,SAAW,IAAM,EAC/CsC,GAAOxB,EAAO0B,SAAS1B,EAAOd,SAAW,GAE3C,MACF,KAAK,EAEDsC,EADED,EACIvB,EAAO6B,SAAS7B,EAAOd,UAEvBc,EAAO8B,UAAU9B,EAAOd,UAEhC,MACF,KAAK,EACH,GAAIqC,EACF,MAAM,IAAI/B,UAAO,QAAS,GAAI,CAACC,KAAM,GAAIC,OAAQ,oBAAqBC,IAAK,iCAE3E6B,EAAMxB,EAAO8B,UAAU9B,EAAOd,WAAa,GAC3CsC,GAAOxB,EAAO8B,UAAU9B,EAAOd,SAAW,GAE5C,MACF,QACEsC,EAAM,GAGV,OADAxB,EAAOd,UAAYL,EACZ2C,M,eA8BIb,E,kDC/Gf,IAAIoB,EAASvF,EAAOD,QAA2B,oBAAVyF,QAAyBA,OAAOb,MAAQA,KACzEa,OAAwB,oBAARC,MAAuBA,KAAKd,MAAQA,KAAOc,KAE3DzB,SAAS,cAATA,GACc,iBAAP0B,MAAiBA,IAAMH,I,6BCLlC,IAAII,EAAQC,EAAQ,GAARA,CAAqB,OAC7BC,EAAMD,EAAQ,IACd5E,EAAS4E,EAAQ,GAAa5E,OAC9B8E,EAA8B,mBAAV9E,GAEThB,EAAOD,QAAU,SAAUS,GACxC,OAAOmF,EAAMnF,KAAUmF,EAAMnF,GAC3BsF,GAAc9E,EAAOR,KAAUsF,EAAa9E,EAAS6E,GAAK,UAAYrF,MAGjEmF,MAAQA,G,6BCVjB,IAAII,EAAO/F,EAAOD,QAAU,CAAEiG,QAAS,SACrB,iBAAPC,MAAiBA,IAAMF,I,6BCDlC,IAAIG,EAAWN,EAAQ,GACvB5F,EAAOD,QAAU,SAAUoG,GACzB,IAAKD,EAASC,GAAK,MAAMC,UAAUD,EAAK,sBACxC,OAAOA,I,6OCHTnG,EAAOD,QAAU,SAAUoG,GACzB,MAAqB,iBAAd,IAAOA,EAAP,YAAAE,EAAOF,IAAyB,OAAPA,EAA4B,mBAAPA,I,8ECDvD,I,EAAAG,EAAAzG,EAAA,I,oCACA0G,EAAA1G,EAAA,I,IAEM2G,E,YACJ,SAAAA,EAAalE,EAAMmE,GAA0B,IAArBC,EAAqBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAd,GAAIG,EAAUH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAJ,I,4FAAIzE,CAAAC,KAAAqE,GAC3CE,EAAKV,QAAUA,UAD4B,IAAAe,E,iKAAAC,CAAA7E,MAAAqE,EAAAS,WAAAtG,OAAAuG,eAAAV,IAAApG,KAAA+B,KAErCG,EAAMmE,EAAKC,IAF0B,OAG3CK,EAAKD,IAAMA,EAHgCC,E,mUADzBI,UAAOnE,Q,eAQdwD,E,kDCVf,IAAIY,EAAYxB,EAAQ,GACxB5F,EAAOD,QAAU,SAAUsH,EAAIC,EAAMV,GAEnC,GADAQ,EAAUC,QACGR,IAATS,EAAoB,OAAOD,EAC/B,OAAQT,GACN,KAAK,EAAG,OAAO,SAAUW,GACvB,OAAOF,EAAGjH,KAAKkH,EAAMC,IAEvB,KAAK,EAAG,OAAO,SAAUA,EAAGC,GAC1B,OAAOH,EAAGjH,KAAKkH,EAAMC,EAAGC,IAE1B,KAAK,EAAG,OAAO,SAAUD,EAAGC,EAAGlH,GAC7B,OAAO+G,EAAGjH,KAAKkH,EAAMC,EAAGC,EAAGlH,IAG/B,OAAO,WACL,OAAO+G,EAAGI,MAAMH,EAAMX,c,6BCjB1B3G,EAAOD,QAAU,SAAUoG,GACzB,GAAiB,mBAANA,EAAkB,MAAMC,UAAUD,EAAK,uBAClD,OAAOA,I,6BCDTnG,EAAOD,SAAW6F,EAAQ,GAARA,CAAoB,WACpC,OAA+E,GAAxEjF,OAAOC,eAAe,GAAI,IAAK,CAAEE,IAAK,WAAc,OAAO,KAAQyG,K,6BCF5E,IAAIG,EAAW,GAAGA,SAElB1H,EAAOD,QAAU,SAAUoG,GACzB,OAAOuB,EAAStH,KAAK+F,GAAI1C,MAAM,GAAI,K,6BCHrC,IAAIkE,EAAW/B,EAAQ,GACnBgC,EAAiBhC,EAAQ,IACzBiC,EAAcjC,EAAQ,IACtBkC,EAAKnH,OAAOC,eAEhBb,EAAQgI,EAAInC,EAAQ,IAAoBjF,OAAOC,eAAiB,SAAwBoH,EAAGC,EAAGC,GAI5F,GAHAP,EAASK,GACTC,EAAIJ,EAAYI,GAAG,GACnBN,EAASO,GACLN,EAAgB,IAClB,OAAOE,EAAGE,EAAGC,EAAGC,GAChB,MAAOC,IACT,GAAI,QAASD,GAAc,QAASA,EAAY,MAAM9B,UAAU,4BAEhE,MADI,UAAW8B,IAAYF,EAAEC,GAAKC,EAAWhH,OACtC8G,I,iCCHLI,EAAIC,EAAMC,EAAKC,EAAMC,EAASC,EAAaC,E,4MAT3CnI,EAAWqF,EAAQ,IACnB+C,EAAW/C,EAAQ,IAEnB6B,EAAQzD,SAASnC,UAAU4F,MAAOrH,EAAO4D,SAASnC,UAAUzB,KAC5DmB,EAASZ,OAAOY,OAAQX,EAAiBD,OAAOC,eAChDgI,EAAmBjI,OAAOiI,iBAC1B9G,EAAiBnB,OAAOkB,UAAUC,eAClC+G,EAAa,CAAEC,cAAc,EAAMjI,YAAY,EAAOkI,UAAU,GAuBpEV,EAAO,SAAU/F,EAAM0G,GACtB,IAAIX,EAAM5C,EAUV,OARAkD,EAASK,GACTvD,EAAOtD,KACPiG,EAAGhI,KAAK+B,KAAMG,EAAM+F,EAAO,WAC1BC,EAAIlI,KAAKqF,EAAMnD,EAAM+F,GACrBZ,EAAMrH,KAAK4I,EAAU7G,KAAMwE,aAG5B0B,EAAKY,mBAAqBD,EACnB7G,MAqERqG,EAAU,CACTJ,GApGDA,EAAK,SAAU9F,EAAM0G,GACpB,IAAIzF,EAeJ,OAbAoF,EAASK,GAEJlH,EAAe1B,KAAK+B,KAAM,UAK9BoB,EAAOpB,KAAK+G,QAJZ3F,EAAOsF,EAAW3H,MAAQK,EAAO,MACjCX,EAAeuB,KAAM,SAAU0G,GAC/BA,EAAW3H,MAAQ,MAIfqC,EAAKjB,GACqB,WAAtB+D,EAAO9C,EAAKjB,IAAoBiB,EAAKjB,GAAMe,KAAK2F,GACpDzF,EAAKjB,GAAQ,CAACiB,EAAKjB,GAAO0G,GAFdzF,EAAKjB,GAAQ0G,EAIvB7G,MAqFPkG,KAAMA,EACNC,IArEDA,EAAM,SAAUhG,EAAM0G,GACrB,IAAIzF,EAAM4F,EAAWC,EAAWnJ,EAIhC,GAFA0I,EAASK,IAEJlH,EAAe1B,KAAK+B,KAAM,UAAW,OAAOA,KAEjD,KADAoB,EAAOpB,KAAK+G,QACF5G,GAAO,OAAOH,KAGxB,GAAyB,iBAArB,KAFJgH,EAAY5F,EAAKjB,IAEb,YAAA+D,EAAO8C,IACV,IAAKlJ,EAAI,EAAImJ,EAAYD,EAAUlJ,KAAOA,EACpCmJ,IAAcJ,GAChBI,EAAUH,qBAAuBD,IACV,IAArBG,EAAUvC,OAAcrD,EAAKjB,GAAQ6G,EAAUlJ,EAAI,EAAI,GACtDkJ,EAAUE,OAAOpJ,EAAG,SAItBkJ,IAAcH,GAChBG,EAAUF,qBAAuBD,UAC5BzF,EAAKjB,GAId,OAAOH,MA6CPoG,KA1CDA,EAAO,SAAUjG,GAChB,IAAIrC,EAAGC,EAAG8I,EAAUG,EAAWG,EAE/B,GAAKxH,EAAe1B,KAAK+B,KAAM,YAC/BgH,EAAYhH,KAAK+G,OAAO5G,IAGxB,GAAyB,iBAArB,IAAO6G,EAAP,YAAA9C,EAAO8C,IAAwB,CAGlC,IAFAjJ,EAAIyG,UAAUC,OACd0C,EAAO,IAAIC,MAAMrJ,EAAI,GAChBD,EAAI,EAAGA,EAAIC,IAAKD,EAAGqJ,EAAKrJ,EAAI,GAAK0G,UAAU1G,GAGhD,IADAkJ,EAAYA,EAAU1F,QACjBxD,EAAI,EAAI+I,EAAWG,EAAUlJ,KAAOA,EACxCwH,EAAMrH,KAAK4I,EAAU7G,KAAMmH,QAG5B,OAAQ3C,UAAUC,QAClB,KAAK,EACJxG,EAAKA,KAAK+I,EAAWhH,MACrB,MACD,KAAK,EACJ/B,EAAKA,KAAK+I,EAAWhH,KAAMwE,UAAU,IACrC,MACD,KAAK,EACJvG,EAAKA,KAAK+I,EAAWhH,KAAMwE,UAAU,GAAIA,UAAU,IACnD,MACD,QAGC,IAFAzG,EAAIyG,UAAUC,OACd0C,EAAO,IAAIC,MAAMrJ,EAAI,GAChBD,EAAI,EAAGA,EAAIC,IAAKD,EACpBqJ,EAAKrJ,EAAI,GAAK0G,UAAU1G,GAEzBwH,EAAMrH,KAAK+I,EAAWhH,KAAMmH,MAY/Bb,EAAc,CACbL,GAAI7H,EAAE6H,GACNC,KAAM9H,EAAE8H,GACRC,IAAK/H,EAAE+H,GACPC,KAAMhI,EAAEgI,IAGTG,EAAOE,EAAiB,GAAIH,GAE5BzI,EAAOD,QAAUA,EAAU,SAAUW,GACpC,OAAa,MAALA,EAAaa,EAAOmH,GAAQE,EAAiBjI,OAAOD,GAAI+H,IAEjE1I,EAAQyI,QAAUA,G,6BCjIlB,IAAIgB,EAAa5D,EAAQ,GAARA,GAEjB5F,EAAOD,QAAU,SAAU0J,GAAO,OAAOA,IAAQD,GAAsB,OAARC,I,2UCJzDC,E,WACJ,SAAAA,K,4FAAexH,CAAAC,KAAAuH,GACb,IAAIC,EAAO,IAAIC,KACfD,EAAKE,YAAY,MACjBF,EAAKG,SAAS,GACdH,EAAKI,QAAQ,GACbJ,EAAKK,SAAS,GACdL,EAAKM,WAAW,GAChBN,EAAKO,WAAW,GAChB/H,KAAKwH,KAAOA,E,0CAELzI,GAEP,OADAiB,KAAKwH,KAAKQ,QAAQhI,KAAKwH,KAAKS,UAAoB,EAARlJ,GACjCiB,KAAKwH,KAAKU,qB,eAINX,E,8VCjBfY,EAAAzK,EAAA,I,wCAEM0K,E,WACJ,SAAAA,K,4FAAerI,CAAAC,KAAAoI,GACbpI,KAAKqB,OAAS,IAAIgH,WAAW,G,0CAEb,IAChB,IAAI/E,EAAOtD,KADKsI,EAAA9D,UAAAC,OAARpD,EAAQ+F,MAAAkB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAARlH,EAAQkH,GAAA/D,UAAA+D,GAEhBlH,EAAOmH,QAAQ,SAAA7G,GACTA,EACF2B,EAAKjC,QAAS,EAAAoH,EAAAC,SAAOL,WAAY/E,EAAKjC,OAAQM,GAE9C0B,OAAOsF,QAAQC,MAAMjH,Q,mCAIP5C,GAClB,OAAO,IAAIsJ,WAAW,CACpBtJ,GAAS,GACRA,GAAS,GAAM,IACfA,GAAS,EAAK,IACP,IAARA,Q,eAKSqJ,E,kDC1BfvK,EAAOD,SAAU,G,6BCCjB,IAAIiL,EAAMpF,EAAQ,IACdqF,EAAMrF,EAAQ,EAARA,CAAkB,eAExBsF,EAAkD,aAA5CF,EAAI,WAAc,OAAOrE,UAArB,IASd3G,EAAOD,QAAU,SAAUoG,GACzB,IAAI6B,EAAGmD,EAAGC,EACV,YAAcvE,IAAPV,EAAmB,YAAqB,OAAPA,EAAc,OAEN,iBAApCgF,EAVD,SAAUhF,EAAI3E,GACzB,IACE,OAAO2E,EAAG3E,GACV,MAAO2G,KAOOkD,CAAOrD,EAAIrH,OAAOwF,GAAK8E,IAAoBE,EAEvDD,EAAMF,EAAIhD,GAEM,WAAfoD,EAAIJ,EAAIhD,KAAsC,mBAAZA,EAAEsD,OAAuB,YAAcF,I,6BCrBhF,IAAIrF,EAAOH,EAAQ,GACfL,EAASK,EAAQ,GAEjBD,EAAQJ,EADC,wBACkBA,EADlB,sBACmC,KAE/CvF,EAAOD,QAAU,SAAUyB,EAAKN,GAC/B,OAAOyE,EAAMnE,KAASmE,EAAMnE,QAAiBqF,IAAV3F,EAAsBA,EAAQ,MAChE,WAAY,IAAImC,KAAK,CACtB2C,QAASD,EAAKC,QACd5E,KAAMwE,EAAQ,IAAgB,OAAS,SACvC2F,UAAW,0C,6BCVb,IAAIC,EAAK,EACLC,EAAK9G,KAAK+G,SACd1L,EAAOD,QAAU,SAAUyB,GACzB,MAAO,UAAUmK,YAAe9E,IAARrF,EAAoB,GAAKA,EAAK,QAASgK,EAAKC,GAAI/D,SAAS,O,6BCHnF,IAAInC,EAASK,EAAQ,GACjBG,EAAOH,EAAQ,GACfgG,EAAOhG,EAAQ,IACfiG,EAAWjG,EAAQ,IACnBkG,EAAMlG,EAAQ,GAGdmG,EAAU,SAAVA,EAAoBzJ,EAAM9B,EAAMwL,GAClC,IAQIxK,EAAKyK,EAAKC,EAAKC,EARfC,EAAY9J,EAAOyJ,EAAQM,EAC3BC,EAAYhK,EAAOyJ,EAAQQ,EAE3BC,EAAWlK,EAAOyJ,EAAQ9D,EAC1BwE,EAAUnK,EAAOyJ,EAAQX,EACzBsB,EAASJ,EAAY/G,EAHTjD,EAAOyJ,EAAQY,EAGepH,EAAO/E,KAAU+E,EAAO/E,GAAQ,KAAO+E,EAAO/E,IAAS,IAAjB,UAChFT,EAAUuM,EAAYvG,EAAOA,EAAKvF,KAAUuF,EAAKvF,GAAQ,IACzDoM,EAAW7M,EAAA,YAAuBA,EAAA,UAAqB,IAG3D,IAAKyB,KADD8K,IAAWN,EAASxL,GACZwL,EAIVE,IAFAD,GAAOG,GAAaM,QAA0B7F,IAAhB6F,EAAOlL,IAExBkL,EAASV,GAAQxK,GAE9B2K,EAAMM,GAAWR,EAAMH,EAAII,EAAK3G,GAAUiH,GAA0B,mBAAPN,EAAoBJ,EAAI9H,SAAS5D,KAAM8L,GAAOA,EAEvGQ,GAAQb,EAASa,EAAQlL,EAAK0K,EAAK5J,EAAOyJ,EAAQc,GAElD9M,EAAQyB,IAAQ0K,GAAKN,EAAK7L,EAASyB,EAAK2K,GACxCK,GAAYI,EAASpL,IAAQ0K,IAAKU,EAASpL,GAAO0K,IAG1D3G,EAAOQ,KAAOA,EAEdgG,EAAQM,EAAI,EACZN,EAAQQ,EAAI,EACZR,EAAQY,EAAI,EACZZ,EAAQ9D,EAAI,EACZ8D,EAAQX,EAAI,GACZW,EAAQe,EAAI,GACZf,EAAQc,EAAI,GACZd,EAAQgB,EAAI,IACZ/M,EAAOD,QAAUgM,G,6BC1CjB,IAAIjE,EAAKlC,EAAQ,IACboH,EAAapH,EAAQ,IACzB5F,EAAOD,QAAU6F,EAAQ,IAAoB,SAAUjE,EAAQH,EAAKN,GAClE,OAAO4G,EAAGC,EAAEpG,EAAQH,EAAKwL,EAAW,EAAG9L,KACrC,SAAUS,EAAQH,EAAKN,GAEzB,OADAS,EAAOH,GAAON,EACPS,I,6BCNT3B,EAAOD,QAAU,SAAUkN,GACzB,IACE,QAASA,IACT,MAAO9E,GACP,OAAO,K,6BCJX,IAAIjC,EAAWN,EAAQ,GACnBsH,EAAWtH,EAAQ,GAAasH,SAEhCC,EAAKjH,EAASgH,IAAahH,EAASgH,EAASE,eACjDpN,EAAOD,QAAU,SAAUoG,GACzB,OAAOgH,EAAKD,EAASE,cAAcjH,GAAM,K,6BCL3C,IAAIZ,EAASK,EAAQ,GACjBgG,EAAOhG,EAAQ,IACfyH,EAAMzH,EAAQ,IACd0H,EAAM1H,EAAQ,GAARA,CAAkB,OACxB2H,EAAY3H,EAAQ,IAEpB4H,GAAO,GAAKD,GAAWE,MADX,YAGhB7H,EAAQ,GAAW8H,cAAgB,SAAUvH,GAC3C,OAAOoH,EAAUnN,KAAK+F,KAGvBnG,EAAOD,QAAU,SAAUiI,EAAGxG,EAAKiI,EAAKkE,GACvC,IAAIC,EAA2B,mBAAPnE,EACpBmE,IAAYP,EAAI5D,EAAK,SAAWmC,EAAKnC,EAAK,OAAQjI,IAClDwG,EAAExG,KAASiI,IACXmE,IAAYP,EAAI5D,EAAK6D,IAAQ1B,EAAKnC,EAAK6D,EAAKtF,EAAExG,GAAO,GAAKwG,EAAExG,GAAOgM,EAAIK,KAAKjL,OAAOpB,MACnFwG,IAAMzC,EACRyC,EAAExG,GAAOiI,EACCkE,EAGD3F,EAAExG,GACXwG,EAAExG,GAAOiI,EAETmC,EAAK5D,EAAGxG,EAAKiI,WALNzB,EAAExG,GACToK,EAAK5D,EAAGxG,EAAKiI,OAOdzF,SAASnC,UAvBI,WAuBkB,WAChC,MAAsB,mBAARM,MAAsBA,KAAKmL,IAAQC,EAAUnN,KAAK+B,S,6BC7BlE,IAAIL,EAAiB,GAAGA,eACxB9B,EAAOD,QAAU,SAAUoG,EAAI3E,GAC7B,OAAOM,EAAe1B,KAAK+F,EAAI3E,K,6BCFjCxB,EAAOD,QAAU,I,6BCCjB,IAAI+N,EAAYlI,EAAQ,IACpBmI,EAAMpJ,KAAKoJ,IACf/N,EAAOD,QAAU,SAAUoG,GACzB,OAAOA,EAAK,EAAI4H,EAAID,EAAU3H,GAAK,kBAAoB,I,6BCHzD,IAAI6H,EAAOrJ,KAAKqJ,KACZpJ,EAAQD,KAAKC,MACjB5E,EAAOD,QAAU,SAAUoG,GACzB,OAAO8H,MAAM9H,GAAMA,GAAM,GAAKA,EAAK,EAAIvB,EAAQoJ,GAAM7H,K,6BCJvD,IAaI+H,EAAOC,EAASC,EAbhBtC,EAAMlG,EAAQ,GACdyI,EAASzI,EAAQ,IACjB0I,EAAO1I,EAAQ,IACf2I,EAAM3I,EAAQ,IACdL,EAASK,EAAQ,GACjB4I,EAAUjJ,EAAOiJ,QACjBC,EAAUlJ,EAAOmJ,aACjBC,EAAYpJ,EAAOqJ,eACnBC,EAAiBtJ,EAAOsJ,eACxBC,EAAWvJ,EAAOuJ,SAClBC,EAAU,EACVC,EAAQ,GAGRC,EAAM,WACR,IAAIzD,GAAMrJ,KAEV,GAAI6M,EAAMlN,eAAe0J,GAAK,CAC5B,IAAInE,EAAK2H,EAAMxD,UACRwD,EAAMxD,GACbnE,MAGA2B,EAAW,SAAUkG,GACvBD,EAAI7O,KAAK8O,EAAM3L,OAGZkL,GAAYE,IACfF,EAAU,SAAsBpH,GAG9B,IAFA,IAAIiC,EAAO,GACPrJ,EAAI,EACD0G,UAAUC,OAAS3G,GAAGqJ,EAAKjG,KAAKsD,UAAU1G,MAMjD,OALA+O,IAAQD,GAAW,WAEjBV,EAAoB,mBAANhH,EAAmBA,EAAKrD,SAASqD,GAAKiC,IAEtD4E,EAAMa,GACCA,GAETJ,EAAY,SAAwBnD,UAC3BwD,EAAMxD,IAGmB,WAA9B5F,EAAQ,GAARA,CAAkB4I,GACpBN,EAAQ,SAAU1C,GAChBgD,EAAQW,SAASrD,EAAImD,EAAKzD,EAAI,KAGvBsD,GAAYA,EAASM,IAC9BlB,EAAQ,SAAU1C,GAChBsD,EAASM,IAAItD,EAAImD,EAAKzD,EAAI,KAGnBqD,GAETT,GADAD,EAAU,IAAIU,GACCQ,MACflB,EAAQmB,MAAMC,UAAYvG,EAC1BkF,EAAQpC,EAAIsC,EAAKoB,YAAapB,EAAM,IAG3B7I,EAAOkK,kBAA0C,mBAAfD,cAA8BjK,EAAOmK,eAChFxB,EAAQ,SAAU1C,GAChBjG,EAAOiK,YAAYhE,EAAK,GAAI,MAE9BjG,EAAOkK,iBAAiB,UAAWzG,GAAU,IAG7CkF,EAvDqB,uBAsDUK,EAAI,UAC3B,SAAU/C,GAChB8C,EAAKqB,YAAYpB,EAAI,WAArB,mBAAsD,WACpDD,EAAKsB,YAAYzN,MACjB8M,EAAI7O,KAAKoL,KAKL,SAAUA,GAChBqE,WAAW/D,EAAImD,EAAKzD,EAAI,GAAI,KAIlCxL,EAAOD,QAAU,CACf+P,IAAKrB,EACLsB,MAAOpB,I,6BChFT,IAAIvH,EAAYxB,EAAQ,GAExB,SAASoK,EAAkBC,GACzB,IAAIC,EAASC,EACbhO,KAAKiO,QAAU,IAAIH,EAAE,SAAUI,EAAWC,GACxC,QAAgBzJ,IAAZqJ,QAAoCrJ,IAAXsJ,EAAsB,MAAM/J,UAAU,2BACnE8J,EAAUG,EACVF,EAASG,IAEXnO,KAAK+N,QAAU9I,EAAU8I,GACzB/N,KAAKgO,OAAS/I,EAAU+I,GAG1BnQ,EAAOD,QAAQgI,EAAI,SAAUkI,GAC3B,OAAO,IAAID,EAAkBC,K,6BChB/B,IACIM,EADS3K,EAAQ,GACE2K,UAEvBvQ,EAAOD,QAAUwQ,GAAaA,EAAUC,WAAa,I,6BCFrDxQ,EAAOD,QAAU,SAAUoG,GACzB,GAAUU,MAANV,EAAiB,MAAMC,UAAU,yBAA2BD,GAChE,OAAOA,I,cCHTnG,EAAOD,QAAUoH,Q,6BCKjBnH,EAAOD,QAAU,SAAUmB,GAAS,OAAOA,U,6BCH3C,IAIgCuP,EAJ5BC,EAAU9K,EAAQ,IAElB+K,GAE4BF,EAFMC,IAEeD,EAAIpP,WAAaoP,EAAM,CAAE5F,QAAS4F,GAEvFzQ,EAAOD,QAAU4Q,EAAS9F,S,2UCR1BhL,EAAA,K,IACAA,EAAA,I,uDAEM+Q,E,WACJ,SAAAA,EAAa9J,EAAK+J,EAAOC,EAAiBC,I,4FAAU7O,CAAAC,KAAAyO,IAClD,EAAAI,EAAAnG,SAAa1I,MACbA,KAAK2E,IAAMA,EACX3E,KAAK0O,MAAQA,EACb1O,KAAK2O,gBAAkBA,EACvB3O,KAAKqJ,GAAKqF,EAAMhD,KAAK,KACrB1L,KAAKiG,IAAK,EACV,IAAI6I,EAAM,IAAIzL,OAAO0L,eACrBD,EAAIvE,OAASvK,KACb8O,EAAIE,aAAe,cACnBF,EAAIH,gBAAkB3O,KAAK2O,kBAAmB,EAC9CG,EAAIG,KAAK,MAAOtK,GAChBmK,EAAII,iBAAiB,QAArB,SAAuCR,EAAM,GAA7C,IAAmDA,EAAM,IACzDI,EAAIK,OAAS,WACQ,MAAfL,EAAIM,QAAiC,MAAfN,EAAIM,QACxBR,GAAYA,aAAoB/M,UAClC+M,EAASE,EAAIO,UAGjBP,EAAIvE,OAAO+E,UAEbR,EAAIS,QAAU,SAAUvJ,GACtB8I,EAAIvE,OAAOnE,KAAK,QAAS,IAAIvF,UAAO,UAAW,GAAI,CAACC,KAAM,GAAIC,OAAQ,qBAAsBC,IAAKgF,EAAEwJ,QAAS7K,SAC5GmK,EAAIvE,OAAO+E,UAEbR,EAAIW,QAAU,WACZX,EAAIvE,OAAO+E,UAEbtP,KAAK8O,IAAMA,EACXL,EAAK5B,MAAM3L,KAAKlB,MAChBA,KAAK0P,S,2CAGL1P,KAAK8O,IAAIa,U,+BAGD,IAAA/K,EAAA5E,KACRyO,EAAK5B,MAAM+C,OAAO,SAACjO,EAAMkO,GACvB,OAAIlO,EAAKgD,MAAQC,EAAKD,KAAOhD,EAAK0H,KAAOzE,EAAKyE,KAC5CoF,EAAK5B,MAAM3F,OAAO2I,EAAK,IAChB,KAKX7P,KAAK0P,W,+BAIL,IAAII,EAAQrB,EAAK5B,MACbkD,EAASD,EAAMF,OAAO,SAACjO,GAAD,OAAUA,EAAKsE,KACrC+J,EAAOF,EAAMF,OAAO,SAAAjO,GAAA,OAASA,EAAKsE,KAClCgK,EAAMxB,EAAKyB,MAAQH,EAAOtL,OAC9BuL,EAAKxH,QAAQ,SAAC7G,EAAMkO,GACdA,EAAMI,GACRtO,EAAKmL,U,4BAMmB,IAAxB9M,KAAK8O,IAAIqB,YACXnQ,KAAKiG,IAAK,EACVjG,KAAK8O,IAAIsB,QAETpQ,KAAKsP,Y,+BAKPb,EAAK5B,MAAMrE,QAAQ,SAAA7G,GACbA,EAAKsE,IACPtE,EAAK0O,WAGT5B,EAAK5B,MAAMpI,OAAS,M,KAIxBgK,EAAK5B,MAAQ,GACb4B,EAAKyB,MAAQ,EACb7M,OAAOoL,KAAOA,E,UAECA,E,mSCvFf/Q,EAAA,IACAA,EAAA,IACA,I,IAAAA,EAAA,K,IACAA,EAAA,K,IACAA,EAAA,M,IACAA,EAAA,K,IACAA,EAAA,K,mDAwYAsH,UAAOsL,QAAQ,YA7XC,WACd,IAAIC,EAASvQ,KAAUwQ,EAAUxL,UAAOwL,QAAaC,EAAOzL,UAAOyL,KAC/D5P,EAASmE,UAAOnE,OAAY6P,SAAaC,SACzCC,EAAcL,EAAOM,OAAOD,aAAe,GAC3CE,SACAnM,EAAM4L,EAAOM,OAAOlM,IACpBoM,EAAOR,EAAOM,OAAOG,YAAc,WAAc,OAAO,GAC5D,GAAKrM,EAAL,CAIyB,WAArB8L,EAAKQ,OAAOtM,GACd+L,EAAU/L,EACoB,UAArB8L,EAAKQ,OAAOtM,IAAoBA,EAAIF,SAC7CiM,EAAU/L,EAAI,GAAGuM,IACdvM,EAAIF,OAAS,IACdkM,EAAYhM,EAAI,GAAGuM,MAGvBX,EAAOM,OAAOM,SAAWT,EACzBH,EAAOM,OAAOO,WAAaT,EAC3B,IAAIU,EAAW,SAAXA,IAAiD,IAArCvT,EAAqC0G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAjC,EAAGgD,EAA8BhD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAvB+L,EAAOe,YAC/Bf,EAAOgB,OACTC,aAAajB,EAAOgB,OAEtB/J,EAAOhF,KAAKyN,IAAIzI,EAAM+I,EAAOe,aAC7Bf,EAAOgB,MAAQ7D,WAAW,WACxB6C,EAAOkB,IAAIC,KAAKlK,EAAW,GAAJ1J,GAAS6T,KAAK,SAAAtQ,GACnC,GAAIA,EAAQ,CACV,IAAIuQ,EAAMrB,EAAOqB,IACjBA,EAAIC,UAAW,EACfD,EAAIE,aAAazQ,GACjBuQ,EAAI1L,KAAK,YAAa,WACpB0L,EAAIC,UAAW,MAGlB,WACG/T,EAAI,IACN4P,WAAW,WACT2D,EAASvT,EAAI,IACZ,QAGN,KAEDiU,EAAO,SAACpN,GACV,IAAI8M,EAAM,IAAIO,UAAIrN,EAAK4L,EAAOM,OAAOlC,iBACjCiD,SACJ,OAAO,IAAIK,QAAQ,SAAClE,EAASC,GAC3ByD,EAAIvL,KAAK,YAAa,YACpB0L,EAAM,IAAIM,WACNjM,GAAG,aAAc,WACnB2L,EAAIE,aAAaL,EAAIU,YACrBP,EAAI1L,KAAK,YAAamL,EAAS/R,KAAKiR,MAEtCqB,EAAI3L,GAAG,QAAS,SAAUD,GACxBgI,EAAOhI,KAET+H,EAAQ,CAAC0D,EAAKG,MAEhBH,EAAIxL,GAAG,QAAS,SAACD,GACfgI,EAAOhI,QAIb,GAAI,CAAC,SAAU,SAAU,UAAUoM,KAAK,SAAAzQ,GAAA,OAAQA,IAAS6O,EAAQ6B,WAAYH,UAAII,YAAY,8CAA+C,CAE1I,GADA/B,EAAOgC,OAAShC,EAAOlQ,OAClB0Q,EAAK9S,KAAKsS,GACb,OAAO,EAGT,IAAIiC,EAAc,SAACjC,EAAQkC,GACzBA,EAAInO,IAAMiM,EAAOM,OAAOvM,IACxBmO,EAAI9N,IAAM4L,EAAOW,IACbuB,EAAIlO,MAA4B,WAApBL,EAAOuO,EAAIlO,OACrBgM,EAAOkB,MACTgB,EAAIlO,KAAKI,IAAM4L,EAAOkB,IAAI9M,IAC1B8N,EAAI9N,IAAM4L,EAAOkB,IAAI9M,IACrB4L,EAAOkB,IAAIiB,aAAc,GAG7BnC,EAAOnK,KAAK,cAAeqM,GAC3BhE,UAAKb,QACD2C,EAAOkB,KAAOlB,EAAOkB,IAAIkB,aAC3BpC,EAAOkB,IAAIkB,YAAY/E,QAErB2C,EAAOe,cACTf,EAAOqC,aAAerC,EAAOe,aAE3Bf,EAAOgC,SACThC,EAAOlQ,MAAQkQ,EAAOgC,OACtBhC,EAAOgC,OAAS,MAElBhC,EAAOsC,UAAY,KACnBtC,EAAOuC,QAAU,KAGjBC,cAAcxC,EAAOyC,kBACrBzC,EAAOpK,IAAI,UAAW8M,GACtB1C,EAAOpK,IAAI,QAAS+M,GACpB3C,EAAOpK,IAAI,UAAWgN,GACtB5C,EAAOpK,IAAI,UAAWiN,GACtB7C,EAAOpK,IAAI,QAASkN,GACpB9C,EAAOpK,IAAI,UAAWmN,GAEL,YAAbb,EAAIc,MAAsBhD,EAAOM,OAAOO,WAC1Cb,EAAOW,IAAMX,EAAOM,OAAOO,WAE3Bb,EAAOW,IAAMX,EAAOM,OAAOM,SAE7BZ,EAAOrK,KAAK,UAAW,WACjBqK,EAAOqC,eACTrC,EAAOe,YAAcf,EAAOqC,cAE9BrC,EAAOiD,UAIXjD,EAAOlQ,MAAQ,WAAyB,IAAfsE,EAAeH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAATkM,EAC7BqB,EAAKpN,GAAKgN,KAAK,SAAC8B,GACd,IAAIhC,EAAMgC,EAAO,GAAQ7B,EAAM6B,EAAO,GACtClD,EAAOgC,OAAOX,EAAIjN,KAClB4L,EAAOmD,UAAUC,UAAYhP,EAC7B4L,EAAOkB,IAAMA,EACblB,EAAOqB,IAAMA,EACbH,EAAIxL,GAAG,QAAS,SAAAwM,GACdD,EAAYjC,EAAQkC,MAErB,SAAAA,GACDlC,EAAOgC,OAAO5N,GACd6N,EAAYjC,EAAQkC,KAEtBlC,EAAOrK,KAAK,UAAW,WAErB,GAAwB,WAApBsK,EAAQ6B,SAAwB9B,EAAOqD,SAAU,CACnD,IAAIvT,EAAQkQ,EAAOqD,SAASvT,MAAM,GAClCkQ,EAAOe,YAAcjR,EAAQ,OAKnCkQ,EAAOsD,IAAM,WAA0B,IAAhBxT,EAAgBmE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAR,EAAGrD,EAAKqD,UAAA,GACjCsP,EAAU,IAAI1L,UACdqJ,EAAM,IAAIO,UAAIrN,EAAK4L,EAAOM,OAAOlC,iBACrC,OAAO,IAAIsD,QAAQ,SAAClE,EAASC,GAC3ByD,EAAIvL,KAAK,YAAa,aACf/E,GAAOA,GAAOd,KACjBc,EAAMd,EAAQ,IAEZc,EAAMsQ,EAAIsC,KAAKC,WACjB3T,EAAQoR,EAAIsC,KAAKC,UAAY7S,EAAMd,GACnCc,EAAMsQ,EAAIsC,KAAKC,UAEjBvC,EAAIoC,IAAIxT,EAAOc,GAAKwQ,KAAK,SAAAtQ,GACvB,GAAIA,EAAQ,CACV,IAAI0S,EAAO/O,UAAOyL,KAAKwD,SAAS,CAC9BD,SAAU7S,EAAMd,EAChB6T,cAAe/S,EAAMd,EACrB8T,QAAShT,EAAMd,GACdoR,EAAIsC,MACPA,EAAKC,SAAW7S,EAAMd,EACtB0T,EAAKK,cAAgBjT,EAAMd,EAC3B0T,EAAKG,cAAgB/S,EAAMd,EAC3B0T,EAAKI,QAAUhT,EAAMd,EACrByT,EAAQO,MAAM5C,EAAIU,SAAS4B,GAAO1S,GAClC0M,EAAQ,IAAIuG,KAAK,CAACR,EAAQzS,QAAS,CAAClB,KAAM,qDAIhDsR,EAAIxL,GAAG,QAAS,SAACD,GACfgI,EAAOhI,QAKbuK,EAAOsC,UAAY,SAAClO,GAClB,IAAI4P,EAAM,IAAIvC,UAAIrN,EAAK4L,EAAOM,OAAOlC,iBACjC8C,EAAMlB,EAAOkB,IACjB8C,EAAItO,GAAG,YAAa,WACFwL,EAAI+C,SAApB,IAAkCC,EAAUlE,EAAOe,YAE/CjR,EADQoR,EAAI+C,SACM9S,KAAK,SAAAC,GAAA,OAAQA,EAAK,GAAK8S,EAAU,IAAG,GACtDtT,EAAMoP,EAAOmE,mBAAmB,GAChCvT,EAAMd,EAAQ,GAAyB,WAApBmQ,EAAQ6B,SAC7B9B,EAAOqB,IAAI+C,aAAatU,EAAOc,GAE5B6D,UAAOyL,KAAKmE,SAASrE,EAAOsE,KAAM,mBACrCtE,EAAOnK,KAAK,YAAa0O,KAAKC,MAAMD,KAAKE,UAAUzE,EAAOmD,aAE5DnD,EAAOmD,UAAY,CACjBuB,GAAI,EACJC,SAAU,EACVC,OAAQ,CAAC,CACPC,MAAO7E,EAAO8E,MAAM/D,YACpBnQ,KAAM,IAERmU,IAAI,IAAI7N,MAAOQ,UACfsN,IAAI,IAAI9N,MAAOQ,UACfuN,GAAI,GAENjF,EAAOkB,IAAM8C,EACbhE,EAAOqB,IAAIE,aAAayC,EAAIpC,YAE5B5B,EAAOmD,UAAU4B,IAAK,IAAI7N,MAAOQ,UAEjCsI,EAAOmD,UAAU6B,IAAK,IAAI9N,MAAOQ,UAEjCsI,EAAOmD,UAAU8B,GAAKjF,EAAO8E,MAAMrB,SACnCzD,EAAOmD,UAAUC,UAAYhP,IAE/B4P,EAAItO,GAAG,QAAS,SAAAwM,GACdD,EAAYjC,EAAQkC,MAIxBlC,EAAOkF,SAAW,SAAC9Q,GACjB,IAAI4P,EAAM,IAAIvC,UAAIrN,EAAK4L,EAAOM,OAAOlC,iBACjC8C,EAAMlB,EAAOkB,IACjB8C,EAAItO,GAAG,YAAa,WAClB,IAAIyI,EAAQ,CAAC,EAAG,GACZkF,EAAWrD,EAAO8E,MAAMzB,SACxBtC,EAAcf,EAAO8E,MAAM/D,YAC3BrB,EAAM,EACV,GAAI2D,EACF,IAAK,IAAI9V,EAAI,EAAG4X,EAAM9B,EAASnP,OAAQ3G,EAAI4X,EAAK5X,IAC9C4Q,EAAM,GAAKkF,EAASvT,MAAMvC,GAC1B4Q,EAAM,GAAKkF,EAASzS,IAAIrD,GACpB4Q,EAAM,IAAM4C,GAAe5C,EAAM,IAAM4C,IACzCrB,EAAMvB,EAAM,GAAKuB,EAAMvB,EAAM,GAAKuB,EAClCM,EAAOqB,IAAI+C,aAAajG,EAAM,GAAIA,EAAM,KAI9C6B,EAAOkB,IAAM8C,EACbhE,EAAOqB,IAAIE,aAAayC,EAAIpC,YAC5B,IAAIwD,GAAO,EACXpF,EAAOtK,GAAG,aAAc,WACtB,GAAI0P,GAAQlE,EAAIsC,KAAKI,QAAU5D,EAAOe,YAAc,EAAG,CACrD,IAAI5C,EAAQ6B,EAAOmE,mBACnB,GAAInE,EAAOe,YAAc5C,EAAM,GAAK,KAClCiH,GAAO,EACPpF,EAAOe,YAAc,EACrBsC,EAAWrD,EAAO8E,MAAMzB,UAEtB,IAAK,IAAI9V,EAAI,EAAG4X,EAAM9B,EAASnP,OAAQ3G,EAAI4X,EAAK5X,IAC9C4Q,EAAM,GAAKkF,EAASvT,MAAMvC,GAC1B4Q,EAAM,GAAKkF,EAASzS,IAAIrD,GACpB4Q,EAAM,IAAMuB,GACdM,EAAOqB,IAAI+C,aAAajG,EAAM,GAAIA,EAAM,SAQtD6F,EAAItO,GAAG,QAAS,SAAAwM,GACdD,EAAYjC,EAAQkC,MAIxB,IAAImD,EAAiB,WACnB,IAAIhE,EAAMrB,EAAOqB,IAASH,EAAMlB,EAAOkB,IACvC,GAAIG,IAAQA,EAAIC,UAAYJ,EAAIiB,YAAa,CAC3C,IAAI8B,EAAW/C,EAAI+C,SACf9F,EAAQ6B,EAAOmE,mBAAwBmB,EAAetF,EAAOe,YAAcV,EAC/E,GAAIlC,EAAM,GAAKmH,EAAe,EAC5B,OAEFrB,EAASsB,MAAM,SAACnU,EAAMkO,GACpB,IAA4CkG,GAAhCpU,EAAK,GAAcA,EAAK,IAAiC,EACrE,OAAiB,IAAb+M,EAAM,OAGJqH,EAASrH,EAAM,KAAO+C,EAAIkB,YAAYzH,IAAI2E,UAC5CwB,EAAS,EAAG0E,MA5RZ,SAACxF,EAAQkB,GACrB,GAAIA,EAAIsC,KAAKI,QAAU5D,EAAOe,YAAc,EAAG,CAC7C,IAAI5C,EAAQ6B,EAAOmE,mBACfnE,EAAOe,YAAc5C,EAAM,GAAK,IAClC6B,EAAOqB,IAAIoE,eA8RTC,CAAQ1F,EAAQkB,KAKpBlB,EAAOyC,iBAAmBkD,YAAYN,EAAgBrF,EAAOM,OAAOmC,kBAAoB,KAExF,IAAIC,EAAc,WAChB,IAAIW,EAAWrD,EAAOqD,SAAcuC,GAAc,EAAW1B,EAAUlE,EAAOe,YAE9E,GADA7C,UAAKb,QACDgG,EAASnP,OAAQ,CACnB,IAAK,IAAI3G,EAAI,EAAG4X,EAAM9B,EAASnP,OAAQ3G,EAAI4X,EAAK5X,IAC9C,GAAI2W,GAAWb,EAASvT,MAAMvC,IAAM2W,GAAWb,EAASzS,IAAIrD,GAAI,CAC9DqY,GAAc,EACd,MAGCA,GACH9E,EAAS,EAAGoD,QAGdpD,EAAS,EAAGd,EAAOe,cAGvBf,EAAOtK,GAAG,UAAWgN,GAErB,IAAIC,EAAY,WACdzE,UAAKb,SAEP2C,EAAOtK,GAAG,QAASiN,GAEnB,IAAIC,EAAc,WACZrC,GACFU,aAAaV,IAGjBP,EAAOtK,GAAG,UAAWkN,GAErB,IAAIC,EAAc,WAChB,IAAI3B,EAAMlB,EAAOkB,IACjB,GAAKA,GAAQA,EAAIsC,KAAjB,CAGA,IAAIrF,EAAQ6B,EAAOmE,mBACfV,EAAWvC,EAAIsC,KAAKK,cACpBJ,EAAWzD,EAAOe,YAAc,IAAO0C,EAAWtF,EAAM,GAAK,GAC/D6B,EAAOqB,IAAIoE,eAEX3E,EAAS,EAAG3C,EAAM,GAAK,GACvBoC,EAAcpD,WAAW,WAEvB,IADA,IAAIkG,EAAWrD,EAAOqD,SAAcvT,SAC3BvC,EAAI,EAAG4X,EAAM9B,EAASnP,OAAQ3G,EAAI4X,EAAK5X,IAE9C,IADAuC,EAAQuT,EAASvT,MAAMvC,KACVyS,EAAOe,YAAa,CAC/Bf,EAAOe,YAAcjR,EACrB,QAGH,SAGPkQ,EAAOtK,GAAG,UAAWmN,GAErB,IAAIC,EAAY,WACd9C,EAAOpK,IAAI,UAAWiN,GAEtBL,cAAcxC,EAAOyC,mBAEvBzC,EAAOtK,GAAG,QAASoN,GAEnB,IAAIC,EAAc,WAChB7E,UAAKb,QACD2C,EAAOgB,OACTC,aAAajB,EAAOgB,QAGxBhB,EAAOrK,KAAK,UAAWoN,GAEvB/C,EAAOuC,QAAU,WACfrE,UAAKb,QACL2C,EAAOkB,IAAIkB,YAAY/E,QACvBmE,EAAKxB,EAAOkB,IAAI9M,KAAKgN,KAAK,SAAC8B,GACzB,IAAIhC,EAAMgC,EAAO,GAAQ7B,EAAM6B,EAAO,GACtClD,EAAOgC,OAAOX,EAAIjN,KAClB4L,EAAOkB,IAAMA,EACblB,EAAOqB,IAAMA,EACbrB,EAAOe,YAAc,EACrBf,EAAOiD,OACPjD,EAAOrK,KAAK,UAAW,WACrBqK,EAAOtK,GAAG,UAAWmN,GAErB7C,EAAOyC,iBAAmBkD,YAAYN,EAAgBrF,EAAOM,OAAOmC,kBAAoB,QAEzF,SAAAP,GACDD,EAAYjC,EAAQkC,YA/WxBlC,EAAOnK,KAAK,QAAS,IAAIvF,EAAO,QAAS0P,EAAOM,OAAOvM,S,6BCxB3D,IAwBI8R,EAAUC,EAA6BC,EAAsBC,EAxB7DC,EAAU/S,EAAQ,IAClBL,EAASK,EAAQ,GACjBkG,EAAMlG,EAAQ,GACdgT,EAAUhT,EAAQ,IAClBmG,EAAUnG,EAAQ,IAClBM,EAAWN,EAAQ,GACnBwB,EAAYxB,EAAQ,GACpBiT,EAAajT,EAAQ,IACrBkT,EAAQlT,EAAQ,IAChBmT,EAAqBnT,EAAQ,IAC7BoT,EAAOpT,EAAQ,IAAWkK,IAC1BmJ,EAAYrT,EAAQ,GAARA,GACZsT,EAA6BtT,EAAQ,IACrCuT,EAAUvT,EAAQ,IAClB4K,EAAY5K,EAAQ,IACpBwT,EAAiBxT,EAAQ,IAEzBQ,EAAYb,EAAOa,UACnBoI,EAAUjJ,EAAOiJ,QACjB6K,EAAW7K,GAAWA,EAAQ6K,SAC9BC,EAAKD,GAAYA,EAASC,IAAM,GAChCC,EAAWhU,EAAA,QACXiU,EAA6B,WAApBZ,EAAQpK,GACjBiL,EAAQ,aAERC,EAAuBlB,EAA8BU,EAA2BnR,EAEhF4R,IAAe,WACjB,IAEE,IAAIvJ,EAAUmJ,EAASrJ,QAAQ,GAC3B0J,GAAexJ,EAAQyJ,YAAc,IAAIjU,EAAQ,EAARA,CAAkB,YAAc,SAAUqH,GACrFA,EAAKwM,EAAOA,IAGd,OAAQD,GAA0C,mBAAzBM,wBACpB1J,EAAQ0D,KAAK2F,aAAkBG,GAIT,IAAtBN,EAAGS,QAAQ,SACyB,IAApCvJ,EAAUuJ,QAAQ,aACvB,MAAO5R,KAfQ,GAmBf6R,EAAa,SAAU7T,GACzB,IAAI2N,EACJ,SAAO5N,EAASC,IAAkC,mBAAnB2N,EAAO3N,EAAG2N,QAAsBA,GAE7DmG,EAAS,SAAU7J,EAAS8J,GAC9B,IAAI9J,EAAQ+J,GAAZ,CACA/J,EAAQ+J,IAAK,EACb,IAAIC,EAAQhK,EAAQiK,GACpBpB,EAAU,WAoCR,IAnCA,IAAI/X,EAAQkP,EAAQkK,GAChBC,EAAmB,GAAdnK,EAAQoK,GACbva,EAAI,EACJgP,EAAM,SAAUwL,GAClB,IAII7E,EAAQ9B,EAAM4G,EAJdC,EAAUJ,EAAKE,EAASF,GAAKE,EAASG,KACtC1K,EAAUuK,EAASvK,QACnBC,EAASsK,EAAStK,OAClB0K,EAASJ,EAASI,OAEtB,IACMF,GACGJ,IACe,GAAdnK,EAAQ0K,IAASC,EAAkB3K,GACvCA,EAAQ0K,GAAK,IAEC,IAAZH,EAAkB/E,EAAS1U,GAEzB2Z,GAAQA,EAAOG,QACnBpF,EAAS+E,EAAQzZ,GACb2Z,IACFA,EAAOI,OACPP,GAAS,IAGT9E,IAAW6E,EAASrK,QACtBD,EAAO/J,EAAU,yBACR0N,EAAOkG,EAAWpE,IAC3B9B,EAAK1T,KAAKwV,EAAQ1F,EAASC,GACtBD,EAAQ0F,IACVzF,EAAOjP,GACd,MAAOiH,GACH0S,IAAWH,GAAQG,EAAOI,OAC9B9K,EAAOhI,KAGJiS,EAAMxT,OAAS3G,GAAGgP,EAAImL,EAAMna,MACnCmQ,EAAQiK,GAAK,GACbjK,EAAQ+J,IAAK,EACTD,IAAa9J,EAAQ0K,IAAII,EAAY9K,OAGzC8K,EAAc,SAAU9K,GAC1B4I,EAAK5Y,KAAKmF,EAAQ,WAChB,IAEIqQ,EAAQ+E,EAAS7P,EAFjB5J,EAAQkP,EAAQkK,GAChBa,EAAYC,EAAYhL,GAe5B,GAbI+K,IACFvF,EAASuD,EAAQ,WACXK,EACFhL,EAAQjG,KAAK,qBAAsBrH,EAAOkP,IACjCuK,EAAUpV,EAAO8V,sBAC1BV,EAAQ,CAAEvK,QAASA,EAASkL,OAAQpa,KAC1B4J,EAAUvF,EAAOuF,UAAYA,EAAQC,OAC/CD,EAAQC,MAAM,8BAA+B7J,KAIjDkP,EAAQ0K,GAAKtB,GAAU4B,EAAYhL,GAAW,EAAI,GAClDA,EAAQmL,QAAK1U,EACXsU,GAAavF,EAAOzN,EAAG,MAAMyN,EAAO4F,KAGxCJ,EAAc,SAAUhL,GAC1B,OAAsB,IAAfA,EAAQ0K,IAAkD,KAArC1K,EAAQmL,IAAMnL,EAAQiK,IAAIzT,QAEpDmU,EAAoB,SAAU3K,GAChC4I,EAAK5Y,KAAKmF,EAAQ,WAChB,IAAIoV,EACAnB,EACFhL,EAAQjG,KAAK,mBAAoB6H,IACxBuK,EAAUpV,EAAOkW,qBAC1Bd,EAAQ,CAAEvK,QAASA,EAASkL,OAAQlL,EAAQkK,QAI9CoB,EAAU,SAAUxa,GACtB,IAAIkP,EAAUjO,KACViO,EAAQuL,KACZvL,EAAQuL,IAAK,GACbvL,EAAUA,EAAQwL,IAAMxL,GAChBkK,GAAKpZ,EACbkP,EAAQoK,GAAK,EACRpK,EAAQmL,KAAInL,EAAQmL,GAAKnL,EAAQiK,GAAG5W,SACzCwW,EAAO7J,GAAS,KAEdyL,EAAW,SAAXA,EAAqB3a,GACvB,IACI4S,EADA1D,EAAUjO,KAEd,IAAIiO,EAAQuL,GAAZ,CACAvL,EAAQuL,IAAK,EACbvL,EAAUA,EAAQwL,IAAMxL,EACxB,IACE,GAAIA,IAAYlP,EAAO,MAAMkF,EAAU,qCACnC0N,EAAOkG,EAAW9Y,IACpB+X,EAAU,WACR,IAAI6C,EAAU,CAAEF,GAAIxL,EAASuL,IAAI,GACjC,IACE7H,EAAK1T,KAAKc,EAAO4K,EAAI+P,EAAUC,EAAS,GAAIhQ,EAAI4P,EAASI,EAAS,IAClE,MAAO3T,GACPuT,EAAQtb,KAAK0b,EAAS3T,OAI1BiI,EAAQkK,GAAKpZ,EACbkP,EAAQoK,GAAK,EACbP,EAAO7J,GAAS,IAElB,MAAOjI,GACPuT,EAAQtb,KAAK,CAAEwb,GAAIxL,EAASuL,IAAI,GAASxT,MAKxCwR,IAEHJ,EAAW,SAAiBwC,GAC1BlD,EAAW1W,KAAMoX,EA3JP,UA2J0B,MACpCnS,EAAU2U,GACVxD,EAASnY,KAAK+B,MACd,IACE4Z,EAASjQ,EAAI+P,EAAU1Z,KAAM,GAAI2J,EAAI4P,EAASvZ,KAAM,IACpD,MAAOyS,GACP8G,EAAQtb,KAAK+B,KAAMyS,MAIvB2D,EAAW,SAAiBwD,GAC1B5Z,KAAKkY,GAAK,GACVlY,KAAKoZ,QAAK1U,EACV1E,KAAKqY,GAAK,EACVrY,KAAKwZ,IAAK,EACVxZ,KAAKmY,QAAKzT,EACV1E,KAAK2Y,GAAK,EACV3Y,KAAKgY,IAAK,IAEHtY,UAAY+D,EAAQ,GAARA,CAA2B2T,EAAS1X,UAAW,CAElEiS,KAAM,SAAckI,EAAaC,GAC/B,IAAIxB,EAAWf,EAAqBX,EAAmB5W,KAAMoX,IAO7D,OANAkB,EAASF,GAA2B,mBAAfyB,GAA4BA,EACjDvB,EAASG,KAA4B,mBAAdqB,GAA4BA,EACnDxB,EAASI,OAASrB,EAAShL,EAAQqM,YAAShU,EAC5C1E,KAAKkY,GAAGhX,KAAKoX,GACTtY,KAAKoZ,IAAIpZ,KAAKoZ,GAAGlY,KAAKoX,GACtBtY,KAAKqY,IAAIP,EAAO9X,MAAM,GACnBsY,EAASrK,SAGlB8L,MAAS,SAAUD,GACjB,OAAO9Z,KAAK2R,UAAKjN,EAAWoV,MAGhCxD,EAAuB,WACrB,IAAIrI,EAAU,IAAImI,EAClBpW,KAAKiO,QAAUA,EACfjO,KAAK+N,QAAUpE,EAAI+P,EAAUzL,EAAS,GACtCjO,KAAKgO,OAASrE,EAAI4P,EAAStL,EAAS,IAEtC8I,EAA2BnR,EAAI2R,EAAuB,SAAUzJ,GAC9D,OAAOA,IAAMsJ,GAAYtJ,IAAMyI,EAC3B,IAAID,EAAqBxI,GACzBuI,EAA4BvI,KAIpClE,EAAQA,EAAQQ,EAAIR,EAAQe,EAAIf,EAAQM,GAAKsN,EAAY,CAAEvF,QAASmF,IACpE3T,EAAQ,GAARA,CAAgC2T,EA7MlB,WA8Md3T,EAAQ,GAARA,CA9Mc,WA+Md8S,EAAU9S,EAAQ,GAAR,QAGVmG,EAAQA,EAAQY,EAAIZ,EAAQM,GAAKsN,EAlNnB,UAkNwC,CAEpDxJ,OAAQ,SAAgBpP,GACtB,IAAIob,EAAazC,EAAqBvX,MAGtC,OADAmO,EADe6L,EAAWhM,QACjBpP,GACFob,EAAW/L,WAGtBrE,EAAQA,EAAQY,EAAIZ,EAAQM,GAAKsM,IAAYgB,GA3N/B,UA2NqD,CAEjEzJ,QAAS,SAAiBkM,GACxB,OAAOhD,EAAeT,GAAWxW,OAASuW,EAAUa,EAAWpX,KAAMia,MAGzErQ,EAAQA,EAAQY,EAAIZ,EAAQM,IAAMsN,GAAc/T,EAAQ,GAARA,CAA0B,SAAUyW,GAClF9C,EAAS+C,IAAID,GAAb,MAA4B5C,MAlOhB,UAmOA,CAEZ6C,IAAK,SAAaC,GAChB,IAAItM,EAAI9N,KACJga,EAAazC,EAAqBzJ,GAClCC,EAAUiM,EAAWjM,QACrBC,EAASgM,EAAWhM,OACpByF,EAASuD,EAAQ,WACnB,IAAIqD,EAAS,GACTC,EAAQ,EACRC,EAAY,EAChB5D,EAAMyD,GAAU,EAAO,SAAUnM,GAC/B,IAAIuM,EAASF,IACTG,GAAgB,EACpBJ,EAAOnZ,UAAKwD,GACZ6V,IACAzM,EAAEC,QAAQE,GAAS0D,KAAK,SAAU5S,GAC5B0b,IACJA,GAAgB,EAChBJ,EAAOG,GAAUzb,IACfwb,GAAaxM,EAAQsM,KACtBrM,OAEHuM,GAAaxM,EAAQsM,KAGzB,OADI5G,EAAOzN,GAAGgI,EAAOyF,EAAO4F,GACrBW,EAAW/L,SAGpByM,KAAM,SAAcN,GAClB,IAAItM,EAAI9N,KACJga,EAAazC,EAAqBzJ,GAClCE,EAASgM,EAAWhM,OACpByF,EAASuD,EAAQ,WACnBL,EAAMyD,GAAU,EAAO,SAAUnM,GAC/BH,EAAEC,QAAQE,GAAS0D,KAAKqI,EAAWjM,QAASC,OAIhD,OADIyF,EAAOzN,GAAGgI,EAAOyF,EAAO4F,GACrBW,EAAW/L,Y,6BC3RtBpQ,EAAOD,SAAW6F,EAAQ,MAAsBA,EAAQ,GAARA,CAAoB,WAClE,OAA4G,GAArGjF,OAAOC,eAAegF,EAAQ,GAARA,CAAyB,OAAQ,IAAK,CAAE9E,IAAK,WAAc,OAAO,KAAQyG,K,6BCAzG,IAAIrB,EAAWN,EAAQ,GAGvB5F,EAAOD,QAAU,SAAUoG,EAAIwG,GAC7B,IAAKzG,EAASC,GAAK,OAAOA,EAC1B,IAAIkB,EAAIoC,EACR,GAAIkD,GAAkC,mBAArBtF,EAAKlB,EAAGuB,YAA4BxB,EAASuD,EAAMpC,EAAGjH,KAAK+F,IAAM,OAAOsD,EACzF,GAAgC,mBAApBpC,EAAKlB,EAAG2W,WAA2B5W,EAASuD,EAAMpC,EAAGjH,KAAK+F,IAAM,OAAOsD,EACnF,IAAKkD,GAAkC,mBAArBtF,EAAKlB,EAAGuB,YAA4BxB,EAASuD,EAAMpC,EAAGjH,KAAK+F,IAAM,OAAOsD,EAC1F,MAAMrD,UAAU,6C,6BCVlBpG,EAAOD,QAAU,SAAUgd,EAAQ7b,GACjC,MAAO,CACLL,aAAuB,EAATkc,GACdjU,eAAyB,EAATiU,GAChBhU,WAAqB,EAATgU,GACZ7b,MAAOA,K,6BCLXlB,EAAOD,QAAU6F,EAAQ,GAARA,CAAqB,4BAA6B5B,SAAS0D,W,6BCA5E1H,EAAOD,QAAU,SAAUoG,EAAI6W,EAAaxc,EAAMyc,GAChD,KAAM9W,aAAc6W,SAAoCnW,IAAnBoW,GAAgCA,KAAkB9W,EACrF,MAAMC,UAAU5F,EAAO,2BACvB,OAAO2F,I,6BCHX,IAAI2F,EAAMlG,EAAQ,GACdxF,EAAOwF,EAAQ,IACfsX,EAActX,EAAQ,IACtB+B,EAAW/B,EAAQ,GACnBuX,EAAWvX,EAAQ,IACnBwX,EAAYxX,EAAQ,IACpByX,EAAQ,GACRC,EAAS,GACTvd,EAAUC,EAAOD,QAAU,SAAUwc,EAAUgB,EAASlW,EAAIC,EAAMkW,GACpE,IAGI5W,EAAQ6W,EAAMC,EAAU9H,EAHxB+H,EAASH,EAAW,WAAc,OAAOjB,GAAca,EAAUb,GACjExU,EAAI+D,EAAIzE,EAAIC,EAAMiW,EAAU,EAAI,GAChCd,EAAQ,EAEZ,GAAqB,mBAAVkB,EAAsB,MAAMvX,UAAUmW,EAAW,qBAE5D,GAAIW,EAAYS,IAAS,IAAK/W,EAASuW,EAASZ,EAAS3V,QAASA,EAAS6V,EAAOA,IAEhF,IADA7G,EAAS2H,EAAUxV,EAAEJ,EAAS8V,EAAOlB,EAASE,IAAQ,GAAIgB,EAAK,IAAM1V,EAAEwU,EAASE,OACjEY,GAASzH,IAAW0H,EAAQ,OAAO1H,OAC7C,IAAK8H,EAAWC,EAAOvd,KAAKmc,KAAakB,EAAOC,EAASE,QAAQC,MAEtE,IADAjI,EAASxV,EAAKsd,EAAU3V,EAAG0V,EAAKvc,MAAOqc,MACxBF,GAASzH,IAAW0H,EAAQ,OAAO1H,GAGtD7V,EAAQsd,MAAQA,EAChBtd,EAAQud,OAASA,G,6BCvBjB,IAAI3V,EAAW/B,EAAQ,GACvB5F,EAAOD,QAAU,SAAU2d,EAAUrW,EAAInG,EAAOqc,GAC9C,IACE,OAAOA,EAAUlW,EAAGM,EAASzG,GAAO,GAAIA,EAAM,IAAMmG,EAAGnG,GAEvD,MAAOiH,GACP,IAAI2V,EAAMJ,EAAA,OAEV,WADY7W,IAARiX,GAAmBnW,EAASmW,EAAI1d,KAAKsd,IACnCvV,K,6BCRV,IAAI4V,EAAYnY,EAAQ,IACpB4X,EAAW5X,EAAQ,EAARA,CAAkB,YAC7BoY,EAAazU,MAAM1H,UAEvB7B,EAAOD,QAAU,SAAUoG,GACzB,YAAcU,IAAPV,IAAqB4X,EAAUxU,QAAUpD,GAAM6X,EAAWR,KAAcrX,K,6BCNjF,IAAIyS,EAAUhT,EAAQ,IAClB4X,EAAW5X,EAAQ,EAARA,CAAkB,YAC7BmY,EAAYnY,EAAQ,IACxB5F,EAAOD,QAAU6F,EAAQ,GAAWqY,kBAAoB,SAAU9X,GAChE,GAAUU,MAANV,EAAiB,OAAOA,EAAGqX,IAC1BrX,EAAG,eACH4X,EAAUnF,EAAQzS,M,6BCLzB,IAAIwB,EAAW/B,EAAQ,GACnBwB,EAAYxB,EAAQ,GACpBsY,EAAUtY,EAAQ,EAARA,CAAkB,WAChC5F,EAAOD,QAAU,SAAUiI,EAAGmW,GAC5B,IACIxR,EADAsD,EAAItI,EAASK,GAAG6R,YAEpB,YAAahT,IAANoJ,GAAiDpJ,OAA7B8F,EAAIhF,EAASsI,GAAGiO,IAAyBC,EAAI/W,EAAUuF,K,6BCNpF3M,EAAOD,QAAU,SAAUsH,EAAIiC,EAAMhC,GACnC,IAAI8W,OAAcvX,IAATS,EACT,OAAQgC,EAAK1C,QACX,KAAK,EAAG,OAAOwX,EAAK/W,IACAA,EAAGjH,KAAKkH,GAC5B,KAAK,EAAG,OAAO8W,EAAK/W,EAAGiC,EAAK,IACRjC,EAAGjH,KAAKkH,EAAMgC,EAAK,IACvC,KAAK,EAAG,OAAO8U,EAAK/W,EAAGiC,EAAK,GAAIA,EAAK,IACjBjC,EAAGjH,KAAKkH,EAAMgC,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO8U,EAAK/W,EAAGiC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1BjC,EAAGjH,KAAKkH,EAAMgC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACzD,KAAK,EAAG,OAAO8U,EAAK/W,EAAGiC,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACnCjC,EAAGjH,KAAKkH,EAAMgC,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAClE,OAAOjC,EAAGI,MAAMH,EAAMgC,K,6BCd1B,IAAI4D,EAAWtH,EAAQ,GAAasH,SACpClN,EAAOD,QAAUmN,GAAYA,EAASmR,iB,6BCDtC,IAAI9Y,EAASK,EAAQ,GACjB0Y,EAAY1Y,EAAQ,IAAWkK,IAC/ByO,EAAWhZ,EAAOiZ,kBAAoBjZ,EAAOkZ,uBAC7CjQ,EAAUjJ,EAAOiJ,QACjB4F,EAAU7O,EAAO6O,QACjBoF,EAAuC,WAA9B5T,EAAQ,GAARA,CAAkB4I,GAE/BxO,EAAOD,QAAU,WACf,IAAI2e,EAAM7Z,EAAMoV,EAEZ0E,EAAQ,WACV,IAAIC,EAAQvX,EAEZ,IADImS,IAAWoF,EAASpQ,EAAQqM,SAAS+D,EAAO3D,OACzCyD,GAAM,CACXrX,EAAKqX,EAAKrX,GACVqX,EAAOA,EAAKd,KACZ,IACEvW,IACA,MAAOc,GAGP,MAFIuW,EAAMzE,IACLpV,OAAOgC,EACNsB,GAERtD,OAAOgC,EACL+X,GAAQA,EAAO5D,SAIrB,GAAIxB,EACFS,EAAS,WACPzL,EAAQW,SAASwP,SAGd,IAAIJ,GAAchZ,EAAOgL,WAAahL,EAAOgL,UAAUsO,WAQvD,GAAIzK,GAAWA,EAAQlE,QAAS,CAErC,IAAIE,EAAUgE,EAAQlE,aAAQrJ,GAC9BoT,EAAS,WACP7J,EAAQ0D,KAAK6K,SASf1E,EAAS,WAEPqE,EAAUle,KAAKmF,EAAQoZ,QAvBgD,CACzE,IAAIG,GAAS,EACTC,EAAO7R,SAAS8R,eAAe,IACnC,IAAIT,EAASI,GAAOM,QAAQF,EAAM,CAAEG,eAAe,IACnDjF,EAAS,WACP8E,EAAKxb,KAAOub,GAAUA,GAsB1B,OAAO,SAAUzX,GACf,IAAI2R,EAAO,CAAE3R,GAAIA,EAAIuW,UAAM/W,GACvBhC,IAAMA,EAAK+Y,KAAO5E,GACjB0F,IACHA,EAAO1F,EACPiB,KACApV,EAAOmU,K,6BClEbhZ,EAAOD,QAAU,SAAUkN,GACzB,IACE,MAAO,CAAE9E,GAAG,EAAOqT,EAAGvO,KACtB,MAAO9E,GACP,MAAO,CAAEA,GAAG,EAAMqT,EAAGrT,M,6BCJzB,IAAIR,EAAW/B,EAAQ,GACnBM,EAAWN,EAAQ,GACnB8T,EAAuB9T,EAAQ,IAEnC5F,EAAOD,QAAU,SAAUkQ,EAAGmM,GAE5B,GADAzU,EAASsI,GACL/J,EAASkW,IAAMA,EAAEvC,cAAgB5J,EAAG,OAAOmM,EAC/C,IAAI+C,EAAoBzF,EAAqB3R,EAAEkI,GAG/C,OADAC,EADciP,EAAkBjP,SACxBkM,GACD+C,EAAkB/O,U,6BCV3B,IAAIvE,EAAWjG,EAAQ,IACvB5F,EAAOD,QAAU,SAAU2M,EAAQ2G,EAAK1F,GACtC,IAAK,IAAInM,KAAO6R,EAAKxH,EAASa,EAAQlL,EAAK6R,EAAI7R,GAAMmM,GACrD,OAAOjB,I,6BCHT,IAAI0S,EAAMxZ,EAAQ,IAAgBmC,EAC9BsF,EAAMzH,EAAQ,IACdqF,EAAMrF,EAAQ,EAARA,CAAkB,eAE5B5F,EAAOD,QAAU,SAAUoG,EAAIkZ,EAAKC,GAC9BnZ,IAAOkH,EAAIlH,EAAKmZ,EAAOnZ,EAAKA,EAAGtE,UAAWoJ,IAAMmU,EAAIjZ,EAAI8E,EAAK,CAAEnC,cAAc,EAAM5H,MAAOme,M,6BCJhG,IAAI9Z,EAASK,EAAQ,GACjBkC,EAAKlC,EAAQ,IACb2Z,EAAc3Z,EAAQ,IACtBsY,EAAUtY,EAAQ,EAARA,CAAkB,WAEhC5F,EAAOD,QAAU,SAAUyf,GACzB,IAAIvP,EAAI1K,EAAOia,GACXD,GAAetP,IAAMA,EAAEiO,IAAUpW,EAAGC,EAAEkI,EAAGiO,EAAS,CACpDpV,cAAc,EACdhI,IAAK,WAAc,OAAOqB,U,6BCV9B,IAAIqb,EAAW5X,EAAQ,EAARA,CAAkB,YAC7B6Z,GAAe,EAEnB,IACE,IAAIC,EAAQ,CAAC,GAAGlC,KAChBkC,EAAA,OAAkB,WAAcD,GAAe,GAE/ClW,MAAMoW,KAAKD,EAAO,WAAc,MAAM,IACtC,MAAOvX,IAETnI,EAAOD,QAAU,SAAUkN,EAAM2S,GAC/B,IAAKA,IAAgBH,EAAc,OAAO,EAC1C,IAAI9R,GAAO,EACX,IACE,IAAIkS,EAAM,CAAC,GACPxD,EAAOwD,EAAIrC,KACfnB,EAAKuB,KAAO,WAAc,MAAO,CAAEC,KAAMlQ,GAAO,IAChDkS,EAAIrC,GAAY,WAAc,OAAOnB,GACrCpP,EAAK4S,GACL,MAAO1X,IACT,OAAOwF,I,6BClBT,IAAI5B,EAAUnG,EAAQ,IAClBka,EAAOla,EAAQ,IACf4K,EAAY5K,EAAQ,IAGpBma,EAAa,mDAAmDC,KAAKxP,GAEzEzE,EAAQA,EAAQ9D,EAAI8D,EAAQM,EAAI0T,EAAY,SAAU,CACpDE,SAAU,SAAkBC,GAC1B,OAAOJ,EAAK3d,KAAM+d,EAAWvZ,UAAUC,OAAS,EAAID,UAAU,QAAKE,GAAW,O,6BCVlF,IAAIsW,EAAWvX,EAAQ,IACnBua,EAASva,EAAQ,IACjBwa,EAAUxa,EAAQ,IAEtB5F,EAAOD,QAAU,SAAUuH,EAAM4Y,EAAWG,EAAYC,GACtD,IAAI3T,EAAI/J,OAAOwd,EAAQ9Y,IACnBiZ,EAAe5T,EAAE/F,OACjB4Z,OAAyB3Z,IAAfwZ,EAA2B,IAAMzd,OAAOyd,GAClDI,EAAetD,EAAS+C,GAC5B,GAAIO,GAAgBF,GAA2B,IAAXC,EAAe,OAAO7T,EAC1D,IAAI+T,EAAUD,EAAeF,EACzBI,EAAeR,EAAO/f,KAAKogB,EAAS7b,KAAKqJ,KAAK0S,EAAUF,EAAQ5Z,SAEpE,OADI+Z,EAAa/Z,OAAS8Z,IAASC,EAAeA,EAAald,MAAM,EAAGid,IACjEJ,EAAOK,EAAehU,EAAIA,EAAIgU,I,6BCbvC,IAAI7S,EAAYlI,EAAQ,IACpBwa,EAAUxa,EAAQ,IAEtB5F,EAAOD,QAAU,SAAgB0E,GAC/B,IAAImc,EAAMhe,OAAOwd,EAAQje,OACrB6C,EAAM,GACNtD,EAAIoM,EAAUrJ,GAClB,GAAI/C,EAAI,GAAKA,GAAKmf,IAAU,MAAMC,WAAW,2BAC7C,KAAMpf,EAAI,GAAIA,KAAO,KAAOkf,GAAOA,GAAc,EAAJlf,IAAOsD,GAAO4b,GAC3D,OAAO5b,I,2UCVTnF,EAAA,K,IACAA,EAAA,K,IACAA,EAAA,K,IACAA,EAAA,K,IACAA,EAAA,M,IACAA,EAAA,K,IACAA,EAAA,M,IACAA,EAAA,I,uDAEMsU,E,WAMJ,SAAAA,EAAarN,EAAKgK,GAA8C,IAA7BiQ,EAA6Bpa,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAjBhC,KAAKqc,IAAI,GAAI,I,4FAAI9e,CAAAC,KAAAgS,IAC9D,EAAAnD,EAAAnG,SAAa1I,MACbA,KAAK2E,IAAMA,EACX3E,KAAK2O,gBAAkBA,EACvB3O,KAAK8e,WAAaF,EAClB5e,KAAK+R,KAAKpN,GACV3E,KAAKkG,KAAK,YAAalG,KAAK+e,UAAUzf,KAAKU,OAC3CA,KAAKgf,MAAQ,IAAI5W,UACjBpI,KAAK2S,YAAc,IAAIsM,IACvBjf,KAAKwU,SAAW,GAChBxU,KAAK0S,aAAc,E,4CAQ8B,IAAA9N,EAAA5E,KAA1CK,EAA0CmE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAlC,EAAGrD,EAA+BqD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAzBnE,EAAQL,KAAK8e,WACjCxb,EAAOtD,KACX,OAAO,IAAIiS,QAAQ,SAAClE,EAASC,GAChB,IAAIS,UAAK7J,EAAKD,IAAK,CAC5BtE,EAAOc,GACNyD,EAAK+J,gBAAiBZ,GACpB7H,KAAK,QAAS,SAAAuM,GACjBnP,EAAK8C,KAAK,QAASqM,S,kCASZ,IAAAyM,EAAAlf,KACPsD,EAAOtD,KACPmf,EAAOnf,KAAKof,QACZC,EAAO5O,UAAK6O,QAAQH,EAAM,QAC1BI,EAAQ9O,UAAK6O,QAAQH,EAAM,QAC3BK,SACFC,SACEC,SACFC,SACEC,SACFC,SACEC,SACFC,SACAC,SACAC,SACAC,SACEC,SACFC,SACAC,SACFd,EAAM/W,QAAQ,SAAA8X,GACZ,IAAIC,EAAO9P,UAAK6O,QAAQgB,EAAM,QAC1BE,EAAO/P,UAAK6O,QAAQgB,EAAM,QAC9B,GAAKC,GAASC,EAAd,CAIA,IACIC,EADOhQ,UAAK6O,QAAQgB,EAAM,QACVlgB,OAAO,GAC3B,GAAwB,SAApBmgB,EAAKG,WAAuB,CAC9B,IAAIC,EAAOlQ,UAAK6O,QAAQgB,EAAM,QAC1BM,EAAOnQ,UAAK6O,QAAQgB,EAAM,QAC9Bd,EAAYc,EACZV,EAAiBY,EAAKK,UAClBF,GACFjB,EAAgBe,EAAStgB,KAAZ,IAAsBsQ,UAAKqQ,MAAMH,EAAKX,QAASW,EAAKI,qBAAsBJ,EAAKK,oBAAoBtV,KAAK,IACrHoU,EAAMa,EAAKM,UAAYN,EAAKM,SAASC,IAAI,SAACvf,GAAD,OAAUwf,OAAOA,KAAKxf,KAC/Doe,EAAMY,EAAKZ,KAAOY,EAAKZ,IAAImB,IAAI,SAACvf,GAAD,OAAUwf,OAAOA,KAAKxf,KACrDqe,EAAUW,EAAKX,SAEfN,KAAgBe,EAAStgB,KAEvBygB,IACFX,EAAQW,EAAKX,MACbC,EAASU,EAAKV,QAGlB,GAAwB,SAApBK,EAAKG,WAAuB,CAC9BjB,EAAYa,EACZ,IAAIc,EAAO3Q,UAAK6O,QAAQgB,EAAM,QAC1Be,EAAO5Q,UAAK6O,QAAQgB,EAAM,QAC1BgB,EAAe7Q,UAAK6O,QAAQgB,EAAM,GACtCT,EAAiBW,EAAKK,UAEpBlB,EADEyB,EACcX,EAAStgB,KAAZ,IAAsBsQ,UAAKqQ,MAAMM,EAAKhhB,OAAO,GAAGA,OAAO,GAAGmhB,QAA1D,IAAwEH,EAAKhhB,OAAO,GAAGA,OAAO,GAAGA,OAAO,GAAGD,KAExHwf,GAAgBc,EAAStgB,KAEvBmhB,GAAgBA,EAAaE,SAC/BnB,EAAgBiB,EAAaE,OAAON,IAAI,SAACvf,GAAD,OAAUwf,OAAOA,KAAKxf,MAE5D0f,IACFlB,EAAekB,EAAKlB,aACpBC,EAAaiB,EAAKjB,kBAvCpB9c,EAAK8C,KAAK,QAAS,IAAIvF,UAAO,QAAS,GAAI,CAACC,KAAM,GAAIC,OAAQ,kBAAmB4D,IAAKrB,EAAKqB,SA2C/F3E,KAAKwf,WAAY,EAAAiC,EAAA/Y,SAAM,GAAI8W,GAC3Bxf,KAAKyf,WAAY,EAAAgC,EAAA/Y,SAAM,GAAI+W,GAC3B,IAAIiC,EAAO1hB,KAAK2hB,OAAOjgB,KAAK,SAAAC,GAAA,MAAsB,SAAdA,EAAKxB,OACrCiU,EAAgB3D,UAAKmR,iBAAiBpC,EAAWI,GACjD1L,EAAgBzD,UAAKmR,iBAAiBnC,EAAWI,GACrD7f,KAAK6hB,UAAYH,EAAKrhB,MACtB,IAAIyhB,EAAK9hB,KAAK+hB,eACVC,EAAuBF,EAAGrd,OAAS,EACvCqd,EAAGtZ,QAAQ,SAAC7G,EAAMkO,GACZA,EAAMmS,EACR9C,EAAK1K,SAAStT,KAAK,CACjBS,EAAK6F,KAAKA,KAAOoY,EACjBkC,EAAGjS,EAAM,GAAGrI,KAAKA,KAAOoY,IAG1BV,EAAK1K,SAAStT,KAAK,CACjBS,EAAK6F,KAAKA,KAAOoY,GAChB,MAIP5f,KAAK+T,KAAO,CACV2L,aACAC,aACAsC,WAAY5C,EAAK4C,WACjBC,WAAY7C,EAAK6C,WACjBlO,SAAUqL,EAAKrL,SAAWqL,EAAK8C,UAC/BA,UAAW9C,EAAK8C,UAChB/N,gBACAwL,iBACA1L,gBACA2L,iBACA1L,QAAS3R,KAAKoJ,IAAIwI,EAAeF,GACjC4L,MACAC,MACAE,QACAC,SACAF,UACAoC,WAAY,CACV,EAAG,GAELjC,eACAC,aACAiC,YAAahC,K,6BAQf,IAAI/c,EAAOtD,KACXsD,EAAKgf,UAAU3Q,KAAK,SAAC9O,GACnB,IAAI0f,SAEAC,EAAY,EAEZrD,SAEAsD,SACJ,IACEF,EAAS,IAAIG,UAAO7f,GACpB,MAAOmD,GAEP,OADA1C,EAAK8C,KAAK,QAASJ,EAAE7F,KAAO6F,EAAI,IAAInF,UAAO,QAAS,GAAI,CAACC,KAAM,IAAKC,OAAQ,aAAcC,IAAKgF,EAAEwJ,YAC1F,EAcT,GAZAlM,EAAKqe,OAASc,EAAQF,EAAOE,MAC7BA,EAAM3M,MAAM,SAAAnU,GAEV,OADA6gB,GAAa7gB,EAAKzB,KACA,SAAdyB,EAAKxB,OACPgf,EAAOxd,EACP2B,EAAK8b,QAAUD,EACf7b,EAAK8C,KAAK,YAAa+Y,IAChB,MAKNA,EAAM,CACT,IAAIwD,EAAUJ,EAAOI,QACjBA,EACmB,SAAjBA,EAAQxiB,KACVmD,EAAKgf,QAAQE,EAAWA,EAAYG,EAAQziB,KAAO,IAAIyR,KAAK,SAAA9O,GAC1D,IAAI0f,EAAS,IAAIG,UAAO7f,GACxBS,EAAKqe,OAASre,EAAKqe,OAAOnY,OAAO+Y,EAAOE,QACxCtD,EAAOoD,EAAOE,MAAM7S,OAAO,SAAA3N,GAAA,MAAoB,SAAbA,EAAI9B,QAC7BsE,QACPnB,EAAK8b,QAAUD,EAAK,GACpB7b,EAAK8C,KAAK,YAAa+Y,IAEvB7b,EAAK8C,KAAK,QAAS,IAAIvF,UAAO,QAAS,GAAI,CAACC,KAAM,IAAKC,OAAQ,aAAcC,IAAK,yBAItFsC,EAAK8C,KAAK,QAAS,IAAIvF,UAAO,QAAS,GAAI,CAACC,KAAM,IAAKC,OAAQ,aAAcC,IAAK,uBAGpFsC,EAAKgf,QAAQE,EAAW,IAAI7Q,KAAK,SAAA9O,GAC/B,IAAI0f,EAAS,IAAIG,UAAO7f,GACpB0f,GACFjf,EAAKqe,OAASre,EAAKqe,OAAOnY,OAAO+Y,EAAOE,OACxCF,EAAOE,MAAM3M,MAAM,SAAAnU,GACjB,MAAkB,SAAdA,EAAKxB,OACPgf,EAAOxd,EACP2B,EAAK8b,QAAUD,EACf7b,EAAK8C,KAAK,YAAa+Y,IAChB,MAMX7b,EAAK8C,KAAK,QAAS,IAAIvF,UAAO,QAAS,GAAI,CAACC,KAAM,IAAKC,OAAQ,aAAcC,IAAK,4BAKzF+Y,MAAM,WACPzW,EAAK8C,KAAK,QAAS,IAAIvF,UAAO,UAAW,GAAI,CAACC,KAAM,IAAKC,OAAQ,gBAAiBC,IAAK,wB,2CAI3C,IAA5Bb,EAA4BqE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAArB,QAASnE,EAAYmE,UAAA,GAALrD,EAAKqD,UAAA,GAC1C8b,EAAgB,UAATngB,EACPH,KAAKwf,UACLxf,KAAKyf,UACLmD,EAAOnS,UAAK6O,QAAQgB,EAAM,QAC1BuC,EAAOpS,UAAK6O,QAAQgB,EAAM,QAC1BwC,EAAOrS,UAAK6O,QAAQgB,EAAM,QAC1ByC,EAAOtS,UAAK6O,QAAQgB,EAAM,QAC1B0C,EAAOvS,UAAK6O,QAAQgB,EAAM,QAC1BuB,EAAY7hB,KAAK6hB,UACjBoB,EAAU,GAId,GAHA9hB,OAAcuD,IAARvD,EACFA,EACA0hB,EAAKzH,QAAQ3W,OACbpE,aAAiB+G,MACnB/G,EAAMmI,QAAQ,SAAC7G,EAAMkO,GACnBoT,EAAQ/hB,KAAK,CACX2O,IAAKlO,EACLzB,KAAM2iB,EAAKzH,QAAQzZ,GACnB6F,KAAMiJ,UAAKyS,eAAeJ,EAAME,EAAMrhB,GACtCwhB,OAAQ1S,UAAK2S,iBAAiBR,EAAMG,EAAMF,EAAMlhB,EAAMkgB,YAGrD,GAAY,IAAR1gB,EACT,IAAK,IAAIrD,EAAIuC,EAAOvC,EAAIqD,EAAKrD,IAC3BmlB,EAAQ/hB,KAAK,CACX2O,IAAK/R,EACLoC,KAAM2iB,EAAKzH,QAAQtd,GACnB0J,KAAMiJ,UAAKyS,eAAeJ,EAAME,EAAMllB,GACtCqlB,OAAQ1S,UAAK2S,iBAAiBR,EAAMG,EAAMF,EAAM/kB,EAAG+jB,UAIvDoB,EAAU,CACRpT,IAAKxP,EACLH,KAAM2iB,EAAKzH,QAAQ/a,GACnBmH,KAAMiJ,UAAKyS,eAAeJ,EAAME,EAAM3iB,GACtC8iB,OAAQ1S,UAAK2S,iBAAiBR,EAAMG,EAAMF,EAAMxiB,EAAOwhB,IAG3D,OAAOoB,I,iCA+BP,GAAKjjB,KAAK+T,KAAV,CAGA,IAAI1S,EAAS,IAAI+G,UAIjB,OAHA/G,EAAOgT,MAAMgP,UAAKC,QAClBjiB,EAAOgT,MAAMgP,UAAKlE,KAAKnf,KAAK+T,OAC5B/T,KAAKgf,MAAM3K,MAAMhT,EAAOA,QACjBA,EAAOA,U,2BAGVmG,GACJ,IAAI+b,EAAY/b,EAAOxH,KAAK+T,KAAK6L,eAC7B4D,SAEAC,EAAczjB,KAAK+hB,eAEnB2B,EAAc1jB,KAAK2jB,eA2BvB,OA1BAF,EAAY3N,MAAM,SAACnU,EAAMkO,GACvB,IAAI+T,EAAUjiB,EAAK6F,KAAKA,KAEpBqc,EAAWJ,EAAY5T,EAAM,GAC7B4T,EAAY5T,EAAM,GAAGrI,KAAKA,KAC1B2Z,OAAO2C,iBACX,QAAIF,GAAWL,GAAaA,EAAYM,KACtCL,EAAY3T,GACL,KAKX6T,EAAY5N,MAAM,SAACnU,EAAMkO,GACvB,IAAI+T,EAAUjiB,EAAKoiB,UAEfF,EAAWH,EAAY7T,EAAM,GAC7B6T,EAAY7T,EAAM,GAAGkU,UACrB5C,OAAO2C,iBACX,QAAIF,GAAWL,GAAaA,EAAYM,KACtCL,EAAYhhB,KAAKoJ,IAAIiE,EAAK2T,IACnB,KAKPxjB,KAAK2S,YAAYzH,IAAIsY,GAChBvR,QAAQlE,QAAQ,MAEhB/N,KAAKgkB,aAAaR,K,mCAGfA,GACZ,IAAInjB,EACFc,SACE8iB,EAAajkB,KAAK+hB,eAAeyB,GACjCU,EAAalkB,KAAKmkB,mBAAmB,QAASnkB,KAAK2jB,eAAeH,GAAWY,MAAO,GAExF,GADA/jB,EAAQmC,KAAKoJ,IAAIqY,EAAWd,OAAQe,EAAWf,QAC3CK,EAAYxjB,KAAK+hB,eAAetd,OAAS,EAAG,CAC9C,IAAI4f,EAAiBrkB,KAAK+hB,eAAeyB,EAAY,GACjDc,EAAiBtkB,KAAKmkB,mBAAmB,QAASnkB,KAAK2jB,eAAeH,EAAY,GAAGY,MAAO,GAChGjjB,EAAMqB,KAAKyN,IAAIoU,EAAelB,OAAQmB,EAAenB,QAEvD,IAAI7f,EAAOtD,KACX,OAAIqD,OAAOyI,MAAMzL,SAAmBqE,IAARvD,GAAqBkC,OAAOyI,MAAM3K,IAC5DmC,EAAK8C,KAAK,QAAS,IAAIvF,UAAO,QAAS,GAAI,CAAEC,KAAM,IAAKC,OAAQ,qBAAsB4D,IAAKrB,EAAKqB,QACzF,GAEL3E,KAAK2S,YAAYzH,IAAIsY,GAChBvR,QAAQlE,QAAQ,MAEhB/N,KAAKsiB,QACVjiB,EAAQiD,EAAKue,UAAW1gB,EACpBmC,EAAKue,UAAY1gB,EACjB,IAAIwQ,KAAK,SAAC4S,GACd,OAAOjhB,EAAKkhB,eAAe,IAAInc,WAAWkc,GAAMlkB,EAAOmjB,O,kCAIhDpiB,GACX,IAAIC,EAAS,IAAI+G,UAIjB,OAHA/G,EAAOgT,MAAMgP,UAAKoB,KAAKrjB,IACvBC,EAAOgT,MAAMgP,UAAK3B,KAAKtgB,IACvBpB,KAAKgf,MAAM3K,MAAMhT,EAAOA,QACjBA,EAAOA,S,qCAEAqjB,EAAUrkB,EAAOmjB,GAC/B,IACImB,EAAa,GACjB3kB,KAAK2S,YAAYiS,IAAIpB,GAEnB,IAAIqB,EAJK7kB,KAIc+hB,eAAeb,IAAI,SAACvf,GAAD,OAAUA,EAAKkO,MACrDiV,EALK9kB,KAKWmkB,mBAAmB,QAASU,EAAYrB,GAAYqB,EAAYrB,EAAY,IAC5FP,EAAU6B,EAAS5D,IAAI,SAACvf,EAAMkO,GAChC,MAAO,CACL3P,KAAMyB,EAAKzB,KACX8T,SAAUrS,EAAK6F,KAAKwM,SACpBmP,OAAQxhB,EAAK6F,KAAK2b,OAClB9hB,OAAQ,IAAIgH,WAAWqc,EAASpjB,MAAMK,EAAKwhB,OAAS9iB,EAAOsB,EAAKwhB,OAAS9iB,EAAQsB,EAAKzB,OACtFb,IAAa,IAARwQ,KAGT8U,EAAWzjB,KAAKlB,KAAK+kB,YAAY,CAAC1b,GAAI,EAAG7B,KAAMsd,EAAS,GAAGtd,KAAKA,KAAMwd,WAAY,SAAWC,MAAO,KAAOhC,aAE7G,IAAI6B,EAAW9kB,KAAKmkB,mBAClB,QAASnkB,KAAK2jB,eAAeH,GAAWY,MAAOpkB,KAAK2jB,eAAeH,EAAY,GAC3ExjB,KAAK2jB,eAAeH,EAAY,GAAGY,WACnC1f,GACFue,EAAU6B,EAAS5D,IAAI,SAACvf,EAAMkO,GAChC,MAAO,CACL3P,KAAMyB,EAAKzB,KACX8T,SAAUrS,EAAK6F,KAAKwM,SACpBmP,OAAQxhB,EAAK6F,KAAK2b,OAClB9hB,OAAQ,IAAIgH,WAAWqc,EAASpjB,MAAMK,EAAKwhB,OAAS9iB,EAAOsB,EAAKwhB,OAAS9iB,EAAQsB,EAAKzB,OACtFb,IAAa,IAARwQ,KAGT8U,EAAWzjB,KAAKlB,KAAK+kB,YAAY,CAAC1b,GAAI,EAAG7B,KAAMsd,EAAS,GAAGtd,KAAKA,KAAMwd,WAAY,EAAMC,MAAO,KAAOhC,QAASA,KAE/G,IAAIiC,EAAa,EACjBP,EAAW7O,MAAM,SAAAnU,GAEf,OADAujB,GAAcvjB,EAAKJ,YACZ,IAET,IAAIF,EAAS,IAAIgH,WAAW6c,GAExB/B,EAAS,EAMb,OALAwB,EAAW7O,MAAM,SAAAnU,GAGf,OAFAN,EAAOsM,IAAIhM,EAAMwhB,GACjBA,GAAUxhB,EAAKJ,YACR,IAEF0Q,QAAQlE,QAAQ1M,K,8DAOpBhB,EAAOc,GAEVnB,KAAK2S,YAAY/E,QACjB,IAAI2V,EAAYljB,EAAQL,KAAK+T,KAAK6L,eAC9BuF,EAAUhkB,EAAMnB,KAAK+T,KAAK6L,eAC1BwF,SACAC,SAEA5B,EAAczjB,KAAK+hB,eACnB2B,EAAc1jB,KAAK2jB,eAoCvB,OAnCAF,EAAY3N,MAAM,SAACnU,EAAMkO,GACvB,IAAI+T,EAAUjiB,EAAK6F,KAAKA,KAEpBqc,EAAWJ,EAAY5T,EAAM,GAC7B4T,EAAY5T,EAAM,GAAGrI,KAAKA,KAC1B2Z,OAAO2C,iBACX,OAAIF,GAAWL,GAAaA,EAAYM,GACtCuB,EAAiBvV,GACV,KACE+T,GAAWuB,GAAWA,EAAUtB,KACzCwB,EAAexV,GACR,KAKX6T,EAAY5N,MAAM,SAACnU,EAAMkO,GACvB,IAAI+T,EAAUjiB,EAAKoiB,UAEfF,EAAWH,EAAY7T,EAAM,GAC7B6T,EAAY7T,EAAM,GAAGkU,UACrB5C,OAAO2C,iBACX,OAAIF,GAAWL,GAAaA,EAAYM,GACtCuB,EAAiB5iB,KAAKoJ,IAAIiE,EAAKuV,IACxB,KACExB,GAAWuB,GAAWA,EAAUtB,KACzCwB,EAAe7iB,KAAKoJ,IAAIiE,EAAKwV,IACtB,KAKNA,IACHA,EAAe5B,EAAYhf,QA1ClBzE,KA4CCslB,mBAAmBF,EAAgBC,K,yCAE7BD,EAAgBC,GAClC,IAAIhlB,EACFc,EACEokB,EAAkBvlB,KAAK+hB,eAAeqD,GACtCI,EAAkBxlB,KAAKmkB,mBAAmB,QAASnkB,KAAK2jB,eAAeyB,GAAgBhB,MAAO,GAClG/jB,EAAQmC,KAAKoJ,IAAI2Z,EAAgBpC,OAAQqC,EAAgBrC,QACzD,IAAIsC,EAAgBzlB,KAAK+hB,eAAesD,GACpCK,EAAgB1lB,KAAKmkB,mBAAmB,QAASnkB,KAAK2jB,eAAe0B,GAAcjB,MAAO,GAC9FjjB,EAAMqB,KAAKyN,IAAIwV,EAActC,OAAQuC,EAAcvC,QACnD,IAAI7f,EAAOtD,KACX,OAAIqD,OAAOyI,MAAMzL,SAAmBqE,IAARvD,GAAqBkC,OAAOyI,MAAM3K,IAC5DmC,EAAK8C,KAAK,QAAS,IAAIvF,UAAO,QAAS,GAAI,CAAEC,KAAM,IAAKC,OAAQ,qBAAsB4D,IAAKrB,EAAKqB,QACzF,GAEF3E,KAAKsiB,QACVjiB,EAAQiD,EAAKue,UAAW1gB,EACpBmC,EAAKue,UAAY1gB,EACjB,IAAIwQ,KAAK,SAAC4S,GACd,OAAOjhB,EAAKqiB,qBAAqB,IAAItd,WAAWkc,GAAMlkB,EAAO+kB,EAAgBjkB,EAAKkkB,O,2CAGhEX,EAAUrkB,EAAO+kB,EAAgBjkB,EAAKkkB,GAC1D,IACIV,EAAa,GAEXE,EAHK7kB,KAGc+hB,eAAeb,IAAI,SAACvf,GAAD,OAAUA,EAAKkO,MAErDoT,EALKjjB,KAIWmkB,mBAAmB,QAASU,EAAYO,GAAiBP,EAAYQ,IAClEnE,IAAI,SAACvf,EAAMkO,GAChC,MAAO,CACL3P,KAAMyB,EAAKzB,KACX8T,SAAUrS,EAAK6F,KAAKwM,SACpBmP,OAAQxhB,EAAK6F,KAAK2b,OAClB9hB,OAAQ,IAAIgH,WAAWqc,EAASpjB,MAAMK,EAAKwhB,OAAS9iB,EAAOsB,EAAKwhB,OAAS9iB,EAAQsB,EAAKzB,OACtFb,IAAa,IAARwQ,KAGT8U,EAAWzjB,KAAKlB,KAAK+kB,YAAY,CAAC1b,GAAI,EAAG7B,KAAM,EAAGwd,WAAY,SAAWC,MAAO,KAAOhC,aAEzF,IAIIA,EAJWjjB,KAAKmkB,mBAClB,QAASnkB,KAAK2jB,eAAeyB,GAAgBhB,MAAOpkB,KAAK2jB,eAAe0B,GACpErlB,KAAK2jB,eAAe0B,GAAcjB,WAClC1f,GACiBwc,IAAI,SAACvf,EAAMkO,GAChC,MAAO,CACL3P,KAAMyB,EAAKzB,KACX8T,SAAUrS,EAAK6F,KAAKwM,SACpBmP,OAAQxhB,EAAK6F,KAAK2b,OAClB9hB,OAAQ,IAAIgH,WAAWqc,EAASpjB,MAAMK,EAAKwhB,OAAS9iB,EAAOsB,EAAKwhB,OAAS9iB,EAAQsB,EAAKzB,OACtFb,IAAa,IAARwQ,KAGT8U,EAAWzjB,KAAKlB,KAAK+kB,YAAY,CAAC1b,GAAI,EAAG7B,KAAM,EAAGwd,WAAY,EAAMC,MAAO,KAAOhC,QAASA,KAE3F,IAAIiC,EAAa,EACjBP,EAAW7O,MAAM,SAAAnU,GAEf,OADAujB,GAAcvjB,EAAKJ,YACZ,IAET,IAAIF,EAAS,IAAIgH,WAAW6c,GAExB/B,EAAS,EAMb,OALAwB,EAAW7O,MAAM,SAAAnU,GAGf,OAFAN,EAAOsM,IAAIhM,EAAMwhB,GACjBA,GAAUxhB,EAAKJ,YACR,IAEF0Q,QAAQlE,QAAQ1M,K,qCApRvB,GAAIrB,KAAK4lB,aACP,OAAO5lB,KAAK4lB,aAEd,IAAIpG,EAAYxf,KAAKwf,UACjBqG,EAAOpV,UAAK6O,QAAQE,EAAW,QAC/BsG,EAAS9lB,KAAKmkB,mBAAmB,QAAS0B,EAAKzK,QAAQ8F,IAAI,SAAAvf,GAAA,OAAQA,EAAO,KAE9E,OADA3B,KAAK4lB,aAAeE,EACbA,I,qCAIP,GAAI9lB,KAAK+lB,aACP,OAAO/lB,KAAK+lB,aAEd,IAIIC,EAJAC,EAAaxV,UAAK6O,QAAQtf,KAAKwf,UAAW,QAAQqB,UAClDqF,EAAazV,UAAK6O,QAAQtf,KAAKyf,UAAW,QAAQoB,UAClDsF,EAAY1V,UAAK6O,QAAQtf,KAAKyf,UAAW,QAAQ2G,MAOrD,OAJAJ,EAFkBhmB,KAAK+hB,eAEEb,IAAI,SAAAvf,GAC3B,OAAO8O,UAAK4V,sBAAsBF,EAAWD,EAAYvkB,EAAK6F,KAAKA,KAAOye,KAE5EjmB,KAAK+lB,aAAeC,EACbhmB,KAAK+lB,iB,eAiQD/T,E,kDC/iBf,IAAIsU,EAAkB7iB,EAAQ,IAC1B8iB,EAAkB9iB,EAAQ,IAC1B+iB,EAAkB/iB,EAAQ,IAC1BgjB,EAAkBhjB,EAAQ,IAC1BijB,EAAkBjjB,EAAQ,KAErB5F,EAAOD,QAAU,SAAU+oB,EAAM5nB,GACzC,IAAIZ,EAAG6H,EAAG4gB,EAAGC,EAASC,EAkBtB,OAjBItiB,UAAUC,OAAS,GAAqB,iBAATkiB,GAClCE,EAAU9nB,EACVA,EAAQ4nB,EACRA,EAAO,MAEPE,EAAUriB,UAAU,GAEjB8hB,EAAQK,IACXxoB,EAAIuoB,EAASzoB,KAAK0oB,EAAM,KACxB3gB,EAAI0gB,EAASzoB,KAAK0oB,EAAM,KACxBC,EAAIF,EAASzoB,KAAK0oB,EAAM,OAExBxoB,EAAIyoB,GAAI,EACR5gB,GAAI,GAGL8gB,EAAO,CAAE/nB,MAAOA,EAAO4H,aAAcxI,EAAGO,WAAYsH,EAAGY,SAAUggB,GACzDC,EAAiBL,EAAOC,EAAcI,GAAUC,GAAtCA,IAGjBC,GAAK,SAAUJ,EAAMhoB,EAAKgP,GAC3B,IAAIxP,EAAG6H,EAAG6gB,EAASC,EA6BnB,MA5BoB,iBAATH,GACVE,EAAUlZ,EACVA,EAAMhP,EACNA,EAAMgoB,EACNA,EAAO,MAEPE,EAAUriB,UAAU,GAEhB8hB,EAAQ3nB,GAED4nB,EAAgB5nB,GAGhB2nB,EAAQ3Y,GAER4Y,EAAgB5Y,KAC3BkZ,EAAUlZ,EACVA,OAAMjJ,GAHNiJ,OAAMjJ,GAHNmiB,EAAUloB,EACVA,EAAMgP,OAAMjJ,GAHZ/F,OAAM+F,EAUH4hB,EAAQK,IACXxoB,EAAIuoB,EAASzoB,KAAK0oB,EAAM,KACxB3gB,EAAI0gB,EAASzoB,KAAK0oB,EAAM,OAExBxoB,GAAI,EACJ6H,GAAI,GAGL8gB,EAAO,CAAEnoB,IAAKA,EAAKgP,IAAKA,EAAKhH,aAAcxI,EAAGO,WAAYsH,GAClD6gB,EAAiBL,EAAOC,EAAcI,GAAUC,GAAtCA,I,6BC1DnB,IAAIrb,EAAahI,EAAQ,IAErBujB,EAAU,oBAAoBC,EAAmBplB,SAASnC,UAAU6F,SAExE1H,EAAOD,QAAU,SAAUmB,GAC1B,QAAK0M,EAAW1M,KACZioB,EAAQnJ,KAAKoJ,EAAiBhpB,KAAKc,M,6BCNxC,IAAImoB,EAAczjB,EAAQ,IAE1B5F,EAAOD,QAAU,SAAUmB,GAC1B,GAAqB,mBAAVA,EAAsB,OAAO,EAExC,IAAKY,eAAe1B,KAAKc,EAAO,UAAW,OAAO,EAElD,IACC,GAA4B,iBAAjBA,EAAM0F,OAAqB,OAAO,EAC7C,GAA0B,mBAAf1F,EAAMd,KAAqB,OAAO,EAC7C,GAA2B,mBAAhBc,EAAMuG,MAAsB,OAAO,EAC7C,MAAOsD,GACR,OAAO,EAGR,OAAQse,EAAYnoB,K,6BCfrB,IAAIgF,EAAWN,EAAQ,IAEvB5F,EAAOD,QAAU,SAAUmB,GAC1B,IAAKgF,EAAShF,GAAQ,OAAO,EAC7B,IACC,QAAKA,EAAM2Y,aACJ3Y,EAAM2Y,YAAYhY,YAAcX,EACtC,MAAO6J,GACR,OAAO,K,6OCRL0d,EAAU7iB,EAAQ,IAGlB0jB,EAAgB,CAAE3nB,QAAU,EAAM4nB,UAAY,EAAM1iB,WAAa,GAErE7G,EAAOD,QAAU,SAAUmB,GAC1B,QAAKunB,EAAQvnB,IACNY,eAAe1B,KAAKkpB,OAApB,IAA0CpoB,EAA1C,YAAAmF,EAA0CnF,M,6BCPlDlB,EAAOD,QAAU6F,EAAQ,GAARA,GAAgCjF,OAAOgoB,OAAS/iB,EAAQ,K,6BCAzE5F,EAAOD,QAAU,WAChB,IAA4B0Q,EAAxBkY,EAAShoB,OAAOgoB,OACpB,MAAsB,mBAAXA,IAEXA,EADAlY,EAAM,CAAE+Y,IAAK,OACD,CAAEC,IAAK,OAAS,CAAEC,KAAM,SAC7BjZ,EAAI+Y,IAAM/Y,EAAIgZ,IAAMhZ,EAAIiZ,OAAS,gB,6BCLzC,IAAIC,EAAQ/jB,EAAQ,IAChB1E,EAAQ0E,EAAQ,IAChBwM,EAAQzN,KAAKyN,IAEjBpS,EAAOD,QAAU,SAAU6pB,EAAMvW,GAChC,IAAItI,EAAO9K,EAAsC0oB,EAAnC/hB,EAASwL,EAAIzL,UAAUC,OAAQ,GAS7C,IARAgjB,EAAOjpB,OAAOO,EAAM0oB,IACpBjB,EAAS,SAAUnnB,GAClB,IACCooB,EAAKpoB,GAAO6R,EAAI7R,GACf,MAAO2G,GACH4C,IAAOA,EAAQ5C,KAGjBlI,EAAI,EAAGA,EAAI2G,IAAU3G,EACzBoT,EAAM1M,UAAU1G,GAChB0pB,EAAKtW,GAAK1I,QAAQge,GAEnB,QAAc9hB,IAAVkE,EAAqB,MAAMA,EAC/B,OAAO6e,I,6BCnBR5pB,EAAOD,QAAU6F,EAAQ,GAARA,GAAgCjF,OAAOgpB,KAAO/jB,EAAQ,K,6BCAvE5F,EAAOD,QAAU,WAChB,IAEC,OADAY,OAAOgpB,KAAK,cACL,EACN,MAAOxhB,GACR,OAAO,K,6BCLT,IAAIsgB,EAAU7iB,EAAQ,IAElB+jB,EAAOhpB,OAAOgpB,KAElB3pB,EAAOD,QAAU,SAAU4B,GAAU,OAAOgoB,EAAKlB,EAAQ9mB,GAAUhB,OAAOgB,GAAUA,K,6BCHpF3B,EAAOD,QAAU,c,6BCDjB,IAAI0oB,EAAU7iB,EAAQ,IAEtB5F,EAAOD,QAAU,SAAUmB,GAC1B,IAAKunB,EAAQvnB,GAAQ,MAAM,IAAIkF,UAAU,gCACzC,OAAOlF,I,6BCJR,IAAIunB,EAAU7iB,EAAQ,IAElB+E,EAAUpB,MAAM1H,UAAU8I,QAASpJ,EAASZ,OAAOY,OAEnDiN,EAAU,SAAU6E,EAAK5C,GAC5B,IAAIjP,EACJ,IAAKA,KAAO6R,EAAK5C,EAAIjP,GAAO6R,EAAI7R,IAIjCxB,EAAOD,QAAU,SAAU8pB,GAC1B,IAAIjU,EAASrU,EAAO,MAKpB,OAJAoJ,EAAQvK,KAAKuG,UAAW,SAAUqiB,GAC5BP,EAAQO,IACbxa,EAAQ7N,OAAOqoB,GAAUpT,KAEnBA,I,6BChBR5V,EAAOD,QAAU6F,EAAQ,GAARA,GAAgChD,OAAOf,UAAUgnB,SAAWjjB,EAAQ,K,6BCArF,IAAIgb,EAAM,aAEV5gB,EAAOD,QAAU,WAChB,MAA4B,mBAAjB6gB,EAAIiI,YACgB,IAAxBjI,EAAIiI,SAAS,SAA2C,IAAxBjI,EAAIiI,SAAS,U,6BCJrD,IAAI9O,EAAUnX,OAAOf,UAAUkY,QAE/B/Z,EAAOD,QAAU,SAAU+pB,GAC1B,OAAO/P,EAAQ3Z,KAAK+B,KAAM2nB,EAAcnjB,UAAU,KAAO,I,6BCH1D3G,EAAOD,QAAU,SAAUsH,GAC1B,GAAkB,mBAAPA,EAAmB,MAAM,IAAIjB,UAAUiB,EAAK,sBACvD,OAAOA,I,8RCJJ0iB,EAAoB,SAA2B7oB,GAClD,OAID,SAAyBA,GACxB,QAASA,GAA0B,iBAAjB,IAAOA,EAAP,YAAAmF,EAAOnF,IALlB8oB,CAAgB9oB,KAQxB,SAAmBA,GAClB,IAAI+oB,EAActpB,OAAOkB,UAAU6F,SAAStH,KAAKc,GAEjD,MAAuB,oBAAhB+oB,GACa,kBAAhBA,GAQL,SAAwB/oB,GACvB,OAAOA,EAAMgpB,WAAaC,EARtBC,CAAelpB,GAZdmpB,CAAUnpB,IAgBhB,IACIipB,EADiC,mBAAXnpB,QAAyBA,OAAOspB,IAClBtpB,OAAOspB,IAAI,iBAAmB,MAUtE,SAASC,EAA8BrpB,EAAO8nB,GAC7C,OAA0B,IAAlBA,EAAQwB,OAAmBxB,EAAQe,kBAAkB7oB,GAC1DupB,GANiBhhB,EAMKvI,EALlBqI,MAAMmhB,QAAQjhB,GAAO,GAAK,IAKAvI,EAAO8nB,GACrC9nB,EAPJ,IAAqBuI,EAUrB,SAASkhB,EAAkBje,EAAQV,EAAQgd,GAC1C,OAAOtc,EAAOf,OAAOK,GAAQqX,IAAI,SAASuH,GACzC,OAAOL,EAA8BK,EAAS5B,KAqBhD,SAASyB,EAAU/d,EAAQV,EAAQgd,IAClCA,EAAUA,GAAW,IACb6B,WAAa7B,EAAQ6B,YAAcF,EAC3C3B,EAAQe,kBAAoBf,EAAQe,mBAAqBA,EAEzD,IAAIe,EAAgBvhB,MAAMmhB,QAAQ1e,GAIlC,OAFgC8e,IADZvhB,MAAMmhB,QAAQhe,GAKvBoe,EACH9B,EAAQ6B,WAAWne,EAAQV,EAAQgd,GA7B5C,SAAqBtc,EAAQV,EAAQgd,GACpC,IAAI+B,EAAc,GAalB,OAZI/B,EAAQe,kBAAkBrd,IAC7B/L,OAAOgpB,KAAKjd,GAAQ/B,QAAQ,SAASnJ,GACpCupB,EAAYvpB,GAAO+oB,EAA8B7d,EAAOlL,GAAMwnB,KAGhEroB,OAAOgpB,KAAK3d,GAAQrB,QAAQ,SAASnJ,GAC/BwnB,EAAQe,kBAAkB/d,EAAOxK,KAAUkL,EAAOlL,GAGtDupB,EAAYvpB,GAAOipB,EAAU/d,EAAOlL,GAAMwK,EAAOxK,GAAMwnB,GAFvD+B,EAAYvpB,GAAO+oB,EAA8Bve,EAAOxK,GAAMwnB,KAKzD+B,EAiBCC,CAAYte,EAAQV,EAAQgd,GAJ5BuB,EAA8Bve,EAAQgd,GAQ/CyB,EAAUnO,IAAM,SAAsB2O,EAAOjC,GAC5C,IAAKzf,MAAMmhB,QAAQO,GAClB,MAAM,IAAIC,MAAM,qCAGjB,OAAOD,EAAME,OAAO,SAASC,EAAMxN,GAClC,OAAO6M,EAAUW,EAAMxN,EAAMoL,IAC3B,KAGJ,IAAIqC,EAAcZ,E,UAEHY,E,mGCxFf,I,IAAAxrB,EAAA,I,IACAA,EAAA,K,IACAA,EAAA,I,23DAIE,SAAAyrB,EAAa9nB,I,4FAAQtB,CAAAC,KAAAmpB,GACnBnpB,KAAKqB,OAAS,KACdrB,KAAKyiB,MAAQ,GACbziB,KAAK2iB,QAAU,KACf3iB,KAAKK,MAAQ,EACFL,KACFqB,QACP,EAAAoH,EAAAC,SAAOL,WAFErI,KAEeqB,OAAQA,GAFvBrB,KAIJqB,OAASA,EAEhB,IAAI+nB,EAAe/nB,EAAOE,WAC1BF,EAAOd,SAAW,EAElB,IADA,IAAID,EAAS,IAAI0B,UAAOX,GACjB+nB,EAAe9oB,EAAOC,UAAY,GAAG,CAC1C,IAAI0B,EAAM,IAAInC,UAEd,GADAmC,EAAIH,WAAWxB,GACX2B,EAAI/B,KAAO,GAAMkpB,EAAe9oB,EAAOC,SACzC0B,EAAIF,SAASzB,GAbNN,KAcFyiB,MAAMvhB,KAAKe,OACX,CACL,GAAiB,SAAbA,EAAI9B,KAGD,CAnBAH,KAoBA2iB,QAAU1gB,EACf3B,EAAOC,UAAY,EACnB,MALA0B,EAAIF,SAASzB,GAjBRN,KAkBAyiB,MAAMvhB,KAAKe,IAlBXjC,KA0BNqB,OAAS,IAAIgH,WA1BPrI,KA0BuBqB,OAAOC,MAAMhB,EAAOC,Y,8sCCnC1D/B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGTnB,EAAQ8K,QAAU,SAAU2gB,GAG1B,IAFA,IAAIC,EAAc,EAEThhB,EAAO9D,UAAUC,OAAQ8kB,EAASniB,MAAMkB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAChGghB,EAAOhhB,EAAO,GAAK/D,UAAU+D,GAG/B,IAAIihB,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiBhlB,EAErB,IACE,IAAK,IAA2CilB,EAAvCC,EAAYL,EAAO1qB,OAAO0c,cAAsBiO,GAA6BG,EAAQC,EAAUnO,QAAQC,MAAO8N,GAA4B,EAAM,CACvJ,IAAI9L,EAAMiM,EAAM5qB,MAEhBuqB,GAAe5L,EAAIjZ,QAErB,MAAOgO,GACPgX,GAAoB,EACpBC,EAAiBjX,EARnB,QAUE,KACO+W,GAA6BI,EAAUC,QAC1CD,EAAUC,SAFd,QAKE,GAAIJ,EACF,MAAMC,GAKZ,IAAIjW,EAAS,IAAI4V,EAAkBC,GAC/BnG,EAAS,EACT2G,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBtlB,EAEtB,IACE,IAAK,IAA4CulB,EAAxCC,EAAaX,EAAO1qB,OAAO0c,cAAuBuO,GAA8BG,EAASC,EAAWzO,QAAQC,MAAOoO,GAA6B,EAAM,CAC7J,IAAIK,EAAOF,EAAOlrB,MAElB0U,EAAO9F,IAAIwc,EAAMhH,GACjBA,GAAUgH,EAAK1lB,QAEjB,MAAOgO,GACPsX,GAAqB,EACrBC,EAAkBvX,EATpB,QAWE,KACOqX,GAA8BI,EAAWL,QAC5CK,EAAWL,SAFf,QAKE,GAAIE,EACF,MAAMC,GAKZ,OAAOvW,I,6BClET,I,IAAA/V,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIsqB,KAAO,WACT,IAAI9pB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO,CAACrV,EAAOK,YAAaL,EAAOK,YAAaL,EAAOK,aAC5DX,KAAKqqB,aAAe/pB,EAAOgqB,aAC3BtqB,KAAKuqB,QAAU,CAACjqB,EAAOgqB,aAAchqB,EAAOgqB,aAAchqB,EAAOgqB,qBAC1DtqB,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BCXX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDACAoC,UAAI,QAAU,WACZ,IAAIQ,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO,CAACrV,EAAOK,YAAaL,EAAOK,YAAaL,EAAOK,aAE5D,IADA,IAAI6pB,EAAW,GAAQ/lB,EAASnE,EAAOe,OAAOE,WACvCjB,EAAOC,SAAWkE,GACvB+lB,EAAStpB,KAAKZ,EAAOK,aAEvBX,KAAKwqB,SAAWA,SACTxqB,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BCbX,I,EAAAmqB,EAAA/sB,EAAA,K,kCACAoC,QAAI4qB,KAAO,kBACF1qB,KAAKI,S,iECFd,I,IAAA1C,EAAA,I,IACAA,EAAA,I,IACAA,EAAA,K,mDAEAoC,UAAI8gB,KAAO,WACT,IAAItgB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,EAAG,GAC3B,IAAjBpC,KAAK6D,SACP7D,KAAKZ,OAASkB,EAAOM,aACrBZ,KAAK2qB,OAASrqB,EAAOM,aACrBZ,KAAKiiB,YAAa,IAAI1a,WAAMS,QAAsB,IAAdhI,KAAKZ,QACzCY,KAAKkiB,YAAa,IAAI3a,WAAMS,QAAsB,IAAdhI,KAAK2qB,QACzC3qB,KAAK4qB,QAAUtqB,EAAOE,aACtBR,KAAK6qB,UAAYvqB,EAAOE,aACxBR,KAAKgU,SAAW1T,EAAOM,eAEvBZ,KAAKZ,OAASkB,EAAOE,aACrBR,KAAK2qB,OAASrqB,EAAOE,aACrBR,KAAKiiB,YAAa,IAAI1a,WAAMS,QAAsB,IAAdhI,KAAKZ,QACzCY,KAAKkiB,YAAa,IAAI3a,WAAMS,QAAsB,IAAdhI,KAAK2qB,QACzC3qB,KAAK4qB,QAAUtqB,EAAOE,aACtBR,KAAK6qB,UAAYvqB,EAAOE,aACxBR,KAAKgU,SAAW1T,EAAOE,cAEzBF,EAAOM,aACPZ,KAAK8qB,MAAQxqB,EAAOyqB,YACpB/qB,KAAKgrB,gBAAkB1qB,EAAOyqB,YAC9B/qB,KAAKirB,OAAS3qB,EAAOyqB,aAAe,EACpCzqB,EAAOgqB,aAGP,IADA,IAAIY,EAAS,GACJptB,EAAI,EAAGA,EAAI,EAAGA,IACrBotB,EAAOhqB,KAAKZ,EAAOgqB,aAAe,IAAMhqB,EAAOgqB,cAEjDtqB,KAAKkrB,OAASA,EACdlrB,KAAKigB,MAAQ3f,EAAOgqB,aAAe,IAAMhqB,EAAOgqB,aAChDtqB,KAAKkgB,OAAS5f,EAAOgqB,aAAe,IAAMhqB,EAAOgqB,oBAC1CtqB,KAAKoB,YACLpB,KAAKI,OACZE,EAAS,O,iECxCX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIgjB,KAAO,WACT,IAAIxiB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7CpC,KAAKsC,MAAQhC,EAAOE,aAEpB,IADA,IAAI4lB,EAAQ,GACHtoB,EAAI,EAAGwE,EAAQtC,KAAKsC,MAAOxE,EAAIwE,EAAOxE,IAC7CsoB,EAAMllB,KAAK,CACTiqB,YAAa7qB,EAAOE,aACpB4qB,eAAgB9qB,EAAOE,eAG3BR,KAAKomB,MAAQA,SACNpmB,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BClBX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAI+iB,KAAO,WACT,IAAIviB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7CpC,KAAKqrB,WAAa/qB,EAAOE,aACzBR,KAAKsC,MAAQhC,EAAOE,aACpB,IAAI4a,EAAU,GACdpb,KAAKob,QAAUA,EACf,IAAK,IAAItd,EAAI,EAAGwE,EAAQtC,KAAKsC,MAAOxE,EAAIwE,EAAOxE,IAC7Csd,EAAQla,KAAKZ,EAAOE,qBAEfR,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BChBX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAI+lB,KAAO,WACT,IAAIvlB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7CpC,KAAKsC,MAAQhC,EAAOE,aACpB,IAAI4a,EAAU,GACdpb,KAAKob,QAAUA,EACf,IAAK,IAAItd,EAAI,EAAGwE,EAAQtC,KAAKsC,MAAOxE,EAAIwE,EAAOxE,IAC7Csd,EAAQla,KAAKZ,EAAOE,qBAEfR,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,+CCfX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDACAoC,UAAIwrB,KAAO,WACT,IAAIhrB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7CpC,KAAKurB,WAAajrB,EAAOE,aACzB,IAAIyB,EAAM,IAAInC,UACdmC,EAAIH,WAAWxB,GACfN,KAAKI,OAAOc,KAAKe,GACjBA,EAAIF,SAASzB,UACNN,KAAKoB,KACZd,EAAS,O,6BCZX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAI8iB,KAAO,WACT,IAAItiB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7CpC,KAAKsC,MAAQhC,EAAOE,aACpB,IAAI4a,EAAU,GACdpb,KAAKob,QAAUA,EACf,IAAK,IAAItd,EAAI,EAAGwE,EAAQtC,KAAKsC,MAAOxE,EAAIwE,EAAOxE,IAC7Csd,EAAQla,KAAK,CACXsqB,YAAalrB,EAAOE,aACpBirB,kBAAmBnrB,EAAOE,aAC1BkrB,kBAAmBprB,EAAOE,eAG9B,IAAK,IAA+B4lB,EAAOuF,EAAlC7tB,EAAI,EAAGwE,EAAQtC,KAAKsC,MAAwBxE,EAAIwE,EAAQ,EAAGxE,IAClEsoB,EAAQhL,EAAQtd,GAChB6tB,EAAWvQ,EAAQtd,EAAI,GACvBsoB,EAAMwF,YAAcxQ,EAAQtd,EAAI,GAAG0tB,YAAcpF,EAAMoF,YACvDpF,EAAMyF,aAAqB,IAAN/tB,EAAU,EAAI6tB,EAASE,aAAeF,EAASC,YAAcD,EAASF,kBAE7F,GAAmB,IAAfzrB,KAAKsC,MAAa,CACpB,IAAI8jB,EAAQhL,EAAQ,GACpBgL,EAAMyF,aAAe,EACrBzF,EAAMwF,YAAc,OACf,GAAI5rB,KAAKsC,MAAQ,EAAG,CACzB,IAAII,EAAO0Y,EAAQpb,KAAKsC,MAAQ,GAAQwpB,EAAM1Q,EAAQpb,KAAKsC,MAAQ,GACnEI,EAAKmpB,aAAeC,EAAID,aAAeC,EAAIF,YAAcE,EAAIL,kBAC7D/oB,EAAKkpB,YAAc,SAEd5rB,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BClCX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIijB,KAAO,WACT,IAAIziB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7CpC,KAAKsC,MAAQhC,EAAOE,aACpB,IAAI4a,EAAU,GACdpb,KAAKob,QAAUA,EACf,IAAK,IAAItd,EAAI,EAAGwE,EAAQtC,KAAKsC,MAAOxE,EAAIwE,EAAOxE,IAC7Csd,EAAQla,KAAKZ,EAAOE,qBAEfR,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BCfX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIisB,KAAO,WACT,IAAIzrB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7CpC,KAAKgsB,QAAU1rB,EAAO2rB,WAAa,IAAM3rB,EAAO2rB,kBACzCjsB,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BCVX,I,EAAAmqB,EAAA/sB,EAAA,G,oCAEAoC,UAAIosB,mBAAqB,SAAU5rB,GACjC,IAAI2B,EAAM,IAAInC,UACVI,SAaJ,OAZA+B,EAAI9B,KAAOG,EAAOK,YAEL,OADbT,EAAOI,EAAOK,cAEZsB,EAAIkqB,QAAS,EACb7rB,EAAO8rB,KAAK,GACZlsB,EAAOI,EAAOK,YAAc,GAE5BT,GAAQ,EAEV+B,EAAI/B,KAAOA,EACX+B,EAAIoqB,GAAK/rB,EAAOK,mBACTsB,EAAI7B,OACJ6B,I,iECjBT,I,IAAAvE,EAAA,I,IACAA,EAAA,I,mDACAoC,UAAIwsB,KAAO,WACT,IAAIhsB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAKusB,QAAUjsB,EAAOe,OAAOC,MAAM,EAAGtB,KAAKE,KAAO,UAC3CF,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,+CCPX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,IACAA,EAAA,K,mDAEAoC,UAAIuf,KAAO,WACT,IAAI/e,EAAS,IAAI0B,UAAOhC,KAAKoB,MAE7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7CpC,KAAKZ,OAASkB,EAAOE,aACrBR,KAAK2qB,OAASrqB,EAAOE,aACrBR,KAAKiiB,YAAa,IAAI1a,WAAMS,QAAsB,IAAdhI,KAAKZ,QACzCY,KAAKkiB,YAAa,IAAI3a,WAAMS,QAAsB,IAAdhI,KAAK2qB,QACzC3qB,KAAKmiB,UAAY7hB,EAAOE,aACxBR,KAAKgU,SAAW1T,EAAOE,aACvBR,KAAKwsB,KAAOlsB,EAAOgqB,aAAe,IAAMhqB,EAAOgqB,aAC/CtqB,KAAKirB,OAAS3qB,EAAOK,YAAc,IAAML,EAAOK,YAEhDqB,UAAOW,SAASrC,EAAO8B,SAAU,GACjCJ,UAAOW,SAASrC,EAAO8B,SAAU,GAGjC,IADA,IAAI8oB,EAAS,GACJptB,EAAI,EAAGA,EAAI,EAAGA,IACrBotB,EAAOhqB,KAAKZ,EAAOgqB,aAAe,IAAMhqB,EAAOgqB,cAEjDtqB,KAAKkrB,OAASA,EACdlpB,UAAOW,SAASrC,EAAO8B,SAAU,IACjCpC,KAAKysB,YAAcnsB,EAAOE,oBACnBR,KAAKI,cACLJ,KAAKoB,O,6BC7Bd,I,EAAAqpB,EAAA/sB,EAAA,G,oCAEAoC,UAAI4sB,cAAgB,SAAUpsB,GAC5B,IAAI2B,EAAM,IAAInC,UACVI,SAeJ,OAdA+B,EAAI9B,KAAOG,EAAOK,YAEL,OADbT,EAAOI,EAAOK,cAEZsB,EAAIkqB,QAAS,EACb7rB,EAAO8rB,KAAK,GACZlsB,EAAOI,EAAOK,YAAc,GAE5BT,GAAQ,EAEV+B,EAAI/B,KAAOA,EACX+B,EAAI0qB,KAAOrsB,EAAOgqB,aAClBroB,EAAI2qB,SAAWtsB,EAAOK,YACtBsB,EAAI7B,OAAOc,KAAKpB,UAAI+sB,qBAAqBvsB,IACzC2B,EAAI7B,OAAOc,KAAKpB,UAAIosB,mBAAmB5rB,IAChC2B,I,6BCnBT,I,EAAAwoB,EAAA/sB,EAAA,G,oCAEAoC,UAAIgtB,uBAAyB,SAAUxsB,GACrC,IAAI2B,EAAM,IAAInC,UACVI,SAAM6sB,SACV9qB,EAAI9B,KAAOG,EAAOK,YAEL,OADbT,EAAOI,EAAOK,cAEZsB,EAAIkqB,QAAS,EACb7rB,EAAO8rB,KAAK,GAEZW,GADA7sB,EAAOI,EAAOK,YAAc,GACV,IAElBosB,EAAW7sB,EACXA,GAAQ,GAEV+B,EAAI/B,KAAOA,EAEX,IADA,IAAIshB,EAAS,GACJ1jB,EAAI,EAAGA,EAAIivB,EAAUjvB,IAC5B0jB,EAAOtgB,KAAKigB,OAAO7gB,EAAOK,aAAa4E,SAAS,IAAIuY,SAAS,EAAG,MAIlE,OAFA7b,EAAIuf,OAASA,SACNvf,EAAI7B,OACJ6B,I,6BCvBT,I,IAAAvE,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAI+sB,qBAAuB,SAAUvsB,GACnC,IAAI2B,EAAM,IAAInC,UACVI,SAkBJ,OAjBA+B,EAAI9B,KAAOG,EAAOK,YAEL,OADbT,EAAOI,EAAOK,cAEZsB,EAAIkqB,QAAS,EACb7rB,EAAO8rB,KAAK,GACZlsB,EAAOI,EAAOK,YAAc,GAE5BT,GAAQ,EAEV+B,EAAI/B,KAAOA,EACX+B,EAAIsf,OAASjhB,EAAOK,YAEpBsB,EAAI+qB,WAAa1sB,EAAOK,YACxBsB,EAAIijB,WAAaljB,UAAOW,SAASrC,EAAO8B,SAAU,GAClDH,EAAIgrB,QAAU3sB,EAAOE,aACrByB,EAAIirB,QAAU5sB,EAAOE,aACrByB,EAAI7B,OAAOc,KAAKpB,UAAIgtB,uBAAuBxsB,IACpC2B,I,6BCvBT,I,IAAAvE,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIuhB,KAAO,WACT,IAAI/gB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7Bd,EAAO8rB,KAAK,GACZpsB,KAAKmtB,mBAAqB7sB,EAAOgqB,aACjChqB,EAAO8rB,KAAK,GACZpsB,KAAKmgB,aAAe7f,EAAOgqB,aAC3BtqB,KAAKqrB,WAAa/qB,EAAOgqB,aACzBhqB,EAAO8rB,KAAK,GACZpsB,KAAKogB,WAAa9f,EAAOE,cAAgB,GACzC,IAAIyB,EAAM,IAAInC,UACdmC,EAAIH,WAAWxB,GACfN,KAAKI,OAAOc,KAAKe,GACjBA,EAAIF,SAASzB,UACNN,KAAKoB,KACZd,EAAS,O,+CCjBX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,IACAA,EAAA,K,mDAEAoC,UAAI0gB,KAAO,WACT,IAAIlgB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GACxB,IAAjBpC,KAAK6D,SACP7D,KAAKZ,OAASkB,EAAOM,aACrBZ,KAAK2qB,OAASrqB,EAAOM,aACrBZ,KAAKiiB,YAAa,IAAI1a,WAAMS,QAAsB,IAAdhI,KAAKZ,QACzCY,KAAKkiB,YAAa,IAAI3a,WAAMS,QAAsB,IAAdhI,KAAK2qB,QACzC3qB,KAAK6gB,UAAYvgB,EAAOE,aACxBR,KAAKgU,SAAW1T,EAAOM,eAEvBZ,KAAKZ,OAASkB,EAAOE,aACrBR,KAAK2qB,OAASrqB,EAAOE,aACrBR,KAAKiiB,YAAa,IAAI1a,WAAMS,QAAsB,IAAdhI,KAAKZ,QACzCY,KAAKkiB,YAAa,IAAI3a,WAAMS,QAAsB,IAAdhI,KAAK2qB,QACzC3qB,KAAK6gB,UAAYvgB,EAAOE,aACxBR,KAAKgU,SAAW1T,EAAOE,cAEzBR,KAAKotB,SAAW9sB,EAAOgqB,aACvBhqB,EAAOgqB,oBACAtqB,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BC3BX,I,EAAAmqB,EAAA/sB,EAAA,K,kCAEAoC,QAAI4hB,KAAO,kBACF1hB,KAAKI,S,6BCHd,I,IAAA1C,EAAA,I,IACAA,EAAA,I,mDACAoC,UAAIutB,KAAO,WACT,IAAI/sB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAG7C,IAFA,IAAImqB,EAAU,GACV9nB,EAASnE,EAAOe,OAAOE,WACpBjB,EAAOC,SAAWkE,GACvB8nB,EAAQrrB,KAAKZ,EAAOK,aAEtBX,KAAKusB,QAAUA,SACRvsB,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,+CCdX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIygB,KAAO,WACT,IAAIjgB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7C9B,EAAO8rB,KAAK,GACZpsB,KAAK0gB,WAAL,GAAqBjgB,OAAOC,aAAaJ,EAAOK,aAAeF,OAAOC,aAAaJ,EAAOK,aAAeF,OAAOC,aAAaJ,EAAOK,aAAeF,OAAOC,aAAaJ,EAAOK,aAC9KL,EAAO8rB,KAAK,IAEZ,IADA,IAAI/tB,EAAO,GACJiC,EAAOC,SAAWP,KAAKE,KAAO,GACnC7B,EAAK6C,KAAKT,OAAOC,aAAaJ,EAAOK,cAEvCX,KAAK3B,KAAOA,EAAKqN,KAAK,WACf1L,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BCjBX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIwjB,KAAO,WACT,IAAIhjB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAKstB,YAAc7sB,OAAOC,aAAaJ,EAAOK,YAAaL,EAAOK,YAAaL,EAAOK,YAAaL,EAAOK,aAC1GX,KAAKutB,cAAgBjtB,EAAOE,aAE5B,IADA,IAAIgtB,EAAmB,GACd1vB,EAAI,EAAG4X,EAAMlT,KAAKC,OAAOnC,EAAOe,OAAOE,WAAa,GAAK,GAAIzD,EAAI4X,EAAK5X,IAC7E0vB,EAAiBtsB,KAAKT,OAAOC,aAAaJ,EAAOK,YAAaL,EAAOK,YAAaL,EAAOK,YAAaL,EAAOK,cAE/GX,KAAKytB,kBAAoBD,EACzBltB,EAAS,YACFN,KAAKI,cACLJ,KAAKoB,O,6BCdd,I,IAAA1D,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIshB,KAAO,WACT,IAAI9gB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7C,IAAIH,EAAMnC,UAAI4sB,cAAcpsB,GAC5BN,KAAKI,OAAOc,KAAKe,UACVjC,KAAKoB,KACZd,EAAS,O,6BCVX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAI4tB,KAAO,WACT,IAAIptB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7C,IAAIgZ,EAAU,GACVuS,EAAcrtB,EAAOE,aACzBR,KAAKob,QAAUA,EACf,IAAK,IAAItd,EAAI,EAAGA,EAAI6vB,EAAa7vB,IAAK,CACpC,IAAIsoB,EAAQ,GACZhL,EAAQla,KAAKklB,GACQ,IAAjBpmB,KAAK6D,SACPuiB,EAAMwH,iBAAmBttB,EAAOM,aAChCwlB,EAAMyH,WAAavtB,EAAOM,eAE1BwlB,EAAMwH,iBAAmBttB,EAAOE,aAChC4lB,EAAMyH,WAAavtB,EAAOwtB,aAE5B1H,EAAM2H,mBAAqBztB,EAAOyqB,YAClC3E,EAAM4H,oBAAsB1tB,EAAOyqB,mBAE9B/qB,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BCzBX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAImuB,KAAO,WACT,IAAI3tB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7C,IAAImpB,EAAajrB,EAAOE,aACxBR,KAAKurB,WAAaA,EAGlB,IAFA,IAESztB,EAAI,EAAGA,EAAIytB,EAAYztB,IAAK,CACnC,IAAImE,EAAM,IAAInC,UAHLE,KAIJI,OAAOc,KAAKe,GACjBA,EAAIisB,KAAK5tB,UAEJN,KAAKoB,KACZd,EAAS,O,6BCjBX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIkjB,KAAO,WACT,IAAI1iB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAE7CpC,KAAKurB,WAAajrB,EAAOE,aACzB,IAAI4lB,EAAQ,GACZpmB,KAAKomB,MAAQA,EACb,IAAK,IAAItoB,EAAI,EAAGwE,EAAQtC,KAAKurB,WAAYztB,EAAIwE,EAAOxE,IAClDsoB,EAAMllB,KAAK,CACToB,MAAOhC,EAAOE,aACd2iB,OAAQ7iB,EAAOE,sBAGZR,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BCnBX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIquB,KAAO,WACT,IAAI7tB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAK6D,QAAUvD,EAAOK,YACtBX,KAAK2V,KAAO3T,UAAOW,SAASrC,EAAO8B,SAAU,GAC7CpC,KAAKsC,MAAQhC,EAAOE,aACpB,IAAI4a,EAAU,GACdpb,KAAKob,QAAUA,EACf,IAAK,IAAItd,EAAI,EAAGwE,EAAQtC,KAAKsC,MAAOxE,EAAIwE,EAAOxE,IAC7Csd,EAAQla,KAAKZ,EAAOM,qBAEfZ,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BCfX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDACAoC,UAAIsuB,KAAO,WACT,IAAI9tB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAKquB,aAAe/tB,EAAOE,aAC3BR,KAAKsuB,WAAahuB,EAAOE,aACzBR,KAAKuuB,WAAajuB,EAAOE,oBAClBR,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BCTX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDACAoC,UAAI6gB,KAAO,WACT,IAAIrgB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAC7BpB,KAAKwuB,cAAgBluB,EAAOK,YAC5BX,KAAKggB,QAAU1f,EAAOK,YACtBX,KAAK+gB,qBAAuBzgB,EAAOK,YACnCX,KAAKghB,mBAAqB1gB,EAAOK,YACjCX,KAAKyuB,mBAAgD,GAAL,EAArBnuB,EAAOK,aAClCX,KAAK0uB,2BAAkD,GAArBpuB,EAAOK,YACzC,IAAIguB,EAAiBruB,EAAOgqB,aAC5BtqB,KAAK2uB,eAAiBA,EAEtB,IADA,IAAI1N,EAAW,GACNnjB,EAAI,EAAGA,EAAI6wB,EAAgB7wB,IAClCmjB,EAAS/f,KAAKigB,OAAO7gB,EAAOK,aAAa4E,SAAS,KAEpDvF,KAAK4uB,SAAWtuB,EAAOK,YACvB,IAAIkuB,EAAYvuB,EAAOgqB,aACvBtqB,KAAK6uB,UAAYA,EAEjB,IADA,IAAI9O,EAAM,GACDjiB,EAAI,EAAGA,EAAI+wB,EAAW/wB,IAC7BiiB,EAAI7e,KAAKigB,OAAO7gB,EAAOK,aAAa4E,SAAS,KAE/CvF,KAAK+f,IAAMA,EACX/f,KAAKihB,SAAWA,EAEhB,IADA,IAAIve,EAAO,GAAQosB,EAAiBxuB,EAAO8B,SAASb,WAC7CjB,EAAOC,SAAWuuB,GACvBpsB,EAAKxB,KAAKZ,EAAOK,aAEnBX,KAAK0C,KAAOA,SACL1C,KAAKI,cACLJ,KAAKoB,KACZd,EAAS,O,6BChCX,I,IAAA5C,EAAA,I,IACAA,EAAA,I,mDAEAoC,UAAIivB,KAAO,WACT,IAAIzuB,EAAS,IAAI0B,UAAOhC,KAAKoB,MAE7Bd,EAAO8rB,KAAK,GACZpsB,KAAKmtB,mBAAqB7sB,EAAOgqB,aACjChqB,EAAO8rB,KAAK,IACZpsB,KAAKigB,MAAQ3f,EAAOgqB,aACpBtqB,KAAKkgB,OAAS5f,EAAOgqB,aACrBtqB,KAAKgvB,gBAAkB1uB,EAAOE,aAC9BR,KAAKivB,eAAiB3uB,EAAOE,aAC7BF,EAAO8rB,KAAK,GACZpsB,KAAKkvB,WAAa5uB,EAAOgqB,aACzBhqB,EAAO8rB,KAAK,GACZ,IAAK,IAAItuB,EAAI,EAAGA,EAAI,GAAIA,IACtB2C,OAAOC,aAAaJ,EAAOK,aAI7B,IAFAX,KAAKmvB,MAAQ7uB,EAAOgqB,aACpBhqB,EAAO8rB,KAAK,GACL9rB,EAAOC,SAAWD,EAAOe,OAAOE,YAAY,CACjD,IAAIU,EAAM,IAAInC,UACdmC,EAAIH,WAAWxB,GAlBNN,KAmBJI,OAAOc,KAAKe,GACjBA,EAAIF,SAASzB,UAERN,KAAKoB,KACZd,EAAS,O,yUC5BX8uB,EAAA1xB,EAAA,I,oCACA,IAAM2xB,EAAa7sB,KAAKqc,IAAI,EAAG,IAAM,EAC/BwE,E,0KACShlB,GACX,OAAO,IAAIgK,WAAW,CAAChK,EAAKixB,WAAW,GAAIjxB,EAAKixB,WAAW,GAAIjxB,EAAKixB,WAAW,GAAIjxB,EAAKixB,WAAW,O,2BAExFvwB,GACX,OAAOqJ,UAAOmnB,YAAYxwB,K,gCAEV8E,EAAS8R,GACzB,OAAO,IAAItN,WAAW,CACpBxE,EACC8R,GAAQ,GAAM,IACdA,GAAQ,EAAK,IACP,IAAPA,M,6BAIF,IAAItU,EAAS,IAAI+G,UAOjB,OANA/G,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAAS,IAAIkI,WAAW,CAC5D,IAAM,IAAM,IAAM,IAClB,EAAK,EAAK,EAAM,EAChB,IAAM,IAAM,IAAM,IAClB,GAAM,IAAM,GAAM,MAEbhH,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UAAclI,EAAO,EAClCmf,EAAOgE,EAAKhE,KAAKje,EAAK4S,SAAU5S,EAAK+gB,WACrCqN,EAAQnM,EAAK7D,UAAUpe,GACvBquB,EAAQpM,EAAK5D,UAAUre,GACvBsuB,EAAOrM,EAAKqM,KAAKtuB,EAAK4S,SAAU5S,EAAK+gB,WAKzC,MAJA,CAAC9C,EAAMmQ,EAAOC,EAAOC,GAAMlnB,QAAQ,SAAA7G,GACjCzB,GAAQyB,EAAKJ,aAEfF,EAAOgT,MAAMgP,EAAKnjB,KAAKA,GAAOmjB,EAAKljB,KAAK,QAASkf,EAAMmQ,EAAOC,EAAOC,GAC9DruB,EAAOA,S,2BAEH2S,EAAU6M,GACrB,IAAIxf,EAAS,IAAI+G,UACjB4L,GAAY6M,EACZ,IAAM8O,EAAoBntB,KAAKC,MAAMuR,GAAYqb,EAAa,IACxDO,EAAoBptB,KAAKC,MAAMuR,GAAYqb,EAAa,IAC1DQ,EAAQ,IAAIxnB,WAAW,CACzB,EACA,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAC1C,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACzCwY,GAAa,GAAM,IACnBA,GAAa,GAAM,IACnBA,GAAa,EAAK,IACP,IAAZA,EACC8O,GAAqB,GACrBA,GAAqB,GAAM,IAC3BA,GAAqB,EAAK,IACP,IAApBA,EACCC,GAAqB,GACrBA,GAAqB,GAAM,IAC3BA,GAAqB,EAAK,IACP,IAApBA,EACA,EAAM,EAAM,EAAM,EAClB,EAAM,EACN,EAAM,EACN,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,GAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,IAAM,IAAM,IAAM,MAGpB,OADAvuB,EAAOgT,MAAMgP,EAAKnjB,KAAK,EAAI2vB,EAAMprB,QAAS4e,EAAKljB,KAAK,QAAS,IAAIkI,WAAWwnB,IACrExuB,EAAOA,S,gCAEED,GAChB,IAAIC,EAAS,IAAI+G,UAAclI,EAAO,EAClC0gB,EAAOyC,EAAKzC,KAAK,CACnBvX,GAAI,EACJ2K,SAAU5S,EAAKgT,cACfyM,UAAWzf,EAAKwe,eAChBK,MAAO7e,EAAK6e,MACZC,OAAQ9e,EAAK8e,OACb/f,KAAM,UAEJ2vB,EAAOzM,EAAKyM,KAAK,CACnB3vB,KAAM,QACN0gB,UAAWzf,EAAKwe,eAChB5L,SAAU5S,EAAKgT,cACf0L,IAAK1e,EAAK0e,IACVC,IAAK3e,EAAK2e,IACVqC,WAAYhhB,EAAKghB,WACjBnC,MAAO7e,EAAK6e,MACZC,OAAQ9e,EAAK8e,SAMf,MAJA,CAACU,EAAMkP,GAAMtnB,QAAQ,SAAA7G,GACnBzB,GAAQyB,EAAKJ,aAEfF,EAAOgT,MAAMgP,EAAKnjB,KAAKA,GAAOmjB,EAAKljB,KAAK,QAASygB,EAAMkP,GAChDzuB,EAAOA,S,gCAEED,GAChB,IAAIC,EAAS,IAAI+G,UAAclI,EAAO,EAClC0gB,EAAOyC,EAAKzC,KAAK,CACnBvX,GAAI,EACJ2K,SAAU5S,EAAK8S,cACf2M,UAAWzf,EAAKye,eAChBI,MAAO,EACPC,OAAQ,EACR/f,KAAM,UAEJ2vB,EAAOzM,EAAKyM,KAAK,CACnB3vB,KAAM,QACN0gB,UAAWzf,EAAKye,eAChB7L,SAAU5S,EAAK8S,cACfiM,aAAc/e,EAAK+e,aACnB4P,WAAY3uB,EAAKgf,WACjBiC,YAAajhB,EAAKihB,cAMpB,MAJA,CAACzB,EAAMkP,GAAMtnB,QAAQ,SAAA7G,GACnBzB,GAAQyB,EAAKJ,aAEfF,EAAOgT,MAAMgP,EAAKnjB,KAAKA,GAAOmjB,EAAKljB,KAAK,QAASygB,EAAMkP,GAChDzuB,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UACbiB,EAAKjI,EAAKiI,GAEV2K,EAAW5S,EAAK4S,SAAW5S,EAAK+gB,UAEhClC,EAAQ7e,EAAK6e,MAEbC,EAAS9e,EAAK8e,OAEd/f,EAAOiB,EAAKjB,KAEZwvB,EAAoBntB,KAAKC,MAAMuR,GAAYqb,EAAa,IAExDO,EAAoBptB,KAAKC,MAAMuR,GAAYqb,EAAa,IACxD9C,EAAU,IAAIlkB,WAAW,CAC3B,EACA,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAC1C,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACzCgB,GAAM,GAAM,IACZA,GAAM,GAAM,IACZA,GAAM,EAAK,IACP,IAALA,EACA,EAAM,EAAM,EAAM,EACjBsmB,GAAqB,GACrBA,GAAqB,GAAM,IAC3BA,GAAqB,EAAK,IACP,IAApBA,EACCC,GAAqB,GACrBA,GAAqB,GAAM,IAC3BA,GAAqB,EAAK,IACP,IAApBA,EACA,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EACN,EAAe,UAATzvB,EAAmB,EAAO,EACvB,UAATA,EAAmB,EAAO,EAAM,EAChC,EAAM,EACN,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,GAAM,EAAM,EAAM,EACjB8f,GAAS,EAAK,IACP,IAARA,EACA,EAAM,EACLC,GAAU,EAAK,IACP,IAATA,EACA,EAAM,IAGR,OADA7e,EAAOgT,MAAMgP,EAAKnjB,KAAK,EAAIqsB,EAAQhrB,YAAa8hB,EAAKljB,KAAK,QAASosB,GAC5DlrB,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UAAc4L,EAAW5S,EAAK4S,SAAcgc,EAAY5uB,EAAK4uB,UAU9E,OATA3uB,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,SAEtCkB,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,SACtCkB,EAAOgT,MAAM,IAAIhM,WAAW,CAC1B,EAAM,EAAM,EAAM,EACjB2L,GAAY,GAAM,IAAOA,GAAY,GAAM,IAAOA,GAAY,EAAK,IAAiB,IAAXA,EACzEgc,GAAa,GAAM,IAAOA,GAAa,GAAM,IAAOA,GAAa,EAAK,IAAkB,IAAZA,EAC7E,EAAM,EAAM,EAAM,KAEb3uB,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UAAclI,EAAO,EAClCsgB,EAAO6C,EAAK7C,KAAKpf,EAAKyf,WACtBN,EAAO8C,EAAK9C,KAAKnf,EAAKjB,MACtB8vB,EAAO5M,EAAK4M,KAAK7uB,GAKrB,MAJA,CAACof,EAAMD,EAAM0P,GAAMznB,QAAQ,SAAA7G,GACzBzB,GAAQyB,EAAKJ,aAEfF,EAAOgT,MAAMgP,EAAKnjB,KAAKA,GAAOmjB,EAAKljB,KAAK,QAASqgB,EAAMD,EAAM0P,GACtD5uB,EAAOA,S,2BAEHwf,GAAyB,IAAd7M,EAAcxP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAH,EAC7BnD,EAAS,IAAI+G,UACjB4L,GAAY6M,EACZ,IAAM8O,EAAoBntB,KAAKC,MAAMuR,GAAYqb,EAAa,IACxDO,EAAoBptB,KAAKC,MAAMuR,GAAYqb,EAAa,IAC1D9C,EAAU,IAAIlkB,WAAW,CAC3B,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAC1C,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACzCwY,GAAa,GAAM,IAAOA,GAAa,GAAM,IAAOA,GAAa,EAAK,IAAkB,IAAZA,EAC5E8O,GAAqB,GACrBA,GAAqB,GAAM,IAC3BA,GAAqB,EAAK,IACP,IAApBA,EACCC,GAAqB,GACrBA,GAAqB,GAAM,IAC3BA,GAAqB,EAAK,IACP,IAApBA,EACA,GAAM,IACN,EAAM,IAGR,OADAvuB,EAAOgT,MAAMgP,EAAKnjB,KAAK,GAAKqsB,EAAQhrB,YAAa8hB,EAAKljB,KAAK,QAASkjB,EAAK6M,UAAU,EAAG,GAAI3D,GACnFlrB,EAAOA,S,2BAEHlB,GACX,IAAIkB,EAAS,IAAI+G,UACbrJ,EAAQ,CAAC,EACX,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,IAAM,IAAM,IAAM,IAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,GAAM,IAAM,IAAM,IAClB,IAAM,GAAM,GAAM,IAClB,IAAM,IAAM,IAAM,IAAM,GAS1B,MAPa,UAAToB,IACFpB,EAAMmI,OAAN5B,MAAAvG,EAAA,CAAa,EAAG,GAAhByK,OAAsB,CAAC,IAAM,IAAM,IAAM,OACzCzK,EAAMmI,OAAN5B,MAAAvG,EAAA,CAAa,GAAI,IAAjByK,OAAwB,CAAC,GAAM,IAAM,IAAM,IACzC,IAAM,GAAM,GAAM,IAClB,IAAM,IAAM,IAAM,IAAM,MAE5BnI,EAAOgT,MAAMgP,EAAKnjB,KAAK,EAAInB,EAAM0F,QAAS4e,EAAKljB,KAAK,QAAS,IAAIkI,WAAWtJ,IACrEsC,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UAAclI,EAAO,EAClCkqB,EAAqB,UAAdhpB,EAAKjB,KAAmBkjB,EAAK+G,OAAS/G,EAAK0I,OAClDoE,EAAO9M,EAAK8M,OACZC,EAAO/M,EAAK+M,KAAKhvB,GAKrB,MAJA,CAACgpB,EAAM+F,EAAMC,GAAM5nB,QAAQ,SAAA7G,GACzBzB,GAAQyB,EAAKJ,aAEfF,EAAOgT,MAAMgP,EAAKnjB,KAAKA,GAAOmjB,EAAKljB,KAAK,QAASiqB,EAAM+F,EAAMC,GACtD/uB,EAAOA,S,6BAGd,IAAIA,EAAS,IAAI+G,UASjB,OARA/G,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAAS,IAAIkI,WAAW,CAC5D,EACA,EAAM,EAAM,EACZ,EAAM,EACN,EAAM,EACN,EAAM,EACN,EAAM,KAEDhH,EAAOA,S,6BAGd,IAAIA,EAAS,IAAI+G,UAOjB,OANA/G,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAAS,IAAIkI,WAAW,CAC5D,EACA,EAAM,EAAM,EACZ,EAAM,EACN,EAAM,KAEDhH,EAAOA,S,6BAGd,IAAIA,EAAS,IAAI+G,UAUjB,OADA/G,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASkjB,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAAS,IAAIkI,WAR1E,CAAC,EACV,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,GAClB,IAAM,IAAM,IAAM,GAClB,EACA,EAAM,EAAM,KAGPhH,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UAAclI,EAAO,EAClCorB,EAAOjI,EAAKiI,KAAKlqB,GACjB0hB,EAAOO,EAAKP,OACZF,EAAOS,EAAKT,OACZC,EAAOQ,EAAKR,OACZE,EAAOM,EAAKN,OAKhB,MAJA,CAACuI,EAAMxI,EAAMF,EAAMC,EAAME,GAAMva,QAAQ,SAAA7G,GACrCzB,GAAQyB,EAAKJ,aAEfF,EAAOgT,MAAMgP,EAAKnjB,KAAKA,GAAOmjB,EAAKljB,KAAK,QAASmrB,EAAMxI,EAAMF,EAAMC,EAAME,GAClE1hB,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UAAcmkB,SAa/B,OALEA,EAPgB,UAAdnrB,EAAKjB,KAOGkjB,EAAKhC,KAAKjgB,GAEViiB,EAAK0L,KAAK3tB,GAEtBC,EAAOgT,MAAMgP,EAAKnjB,KAAK,GAAKqsB,EAAQhrB,YAAa8hB,EAAKljB,KAAK,QAASkjB,EAAK6M,UAAU,EAAG,GAAI,IAAI7nB,WAAW,CAAC,EAAM,EAAM,EAAM,IAAQkkB,GAC7HlrB,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UACbmkB,EAAU,IAAIlkB,WAAW,CAC3B,EAAM,EAAM,EACZ,EAAM,EAAM,EACZ,EAAM,EACN,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAMjH,EAAK+e,aACX,EAAM,GACN,EAAM,EAAM,EAAM,EACjB/e,EAAK2uB,YAAc,EAAK,IACP,IAAlB3uB,EAAK2uB,WACL,EAAM,IAEJ3O,EAAOiC,EAAKjC,KAAKhgB,EAAKihB,aAE1B,OADAhhB,EAAOgT,MAAMgP,EAAKnjB,KAAK,EAAIqsB,EAAQhrB,WAAa6f,EAAK7f,YAAa8hB,EAAKljB,KAAK,QAASosB,EAASnL,GACvF/f,EAAOA,S,6BAEuB,IAA1BwP,EAA0BrM,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAjB,CAAC,GAAI,IAAK,EAAG,GAC3B6rB,EAAYxf,EAAOpM,OACrBpD,EAAS,IAAI+G,UACbmkB,EAAU,IAAIlkB,WAAW,CAC3B,EACA,EAAM,EAAM,EAEZ,EACA,GAAOgoB,EACP,EAAM,EACN,EAEA,EACA,GAAOA,EACP,GACA,GACA,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAElB,GACA7mB,OAAO,CAAC6mB,IAAY7mB,OAAOqH,GAAQrH,OAAO,CAAC,EAAM,EAAM,KAEzD,OADAnI,EAAOgT,MAAMgP,EAAKnjB,KAAK,EAAIqsB,EAAQhrB,YAAa8hB,EAAKljB,KAAK,QAASosB,GAC5DlrB,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UACb0X,EAAM1e,EAAK0e,IAASC,EAAM3e,EAAK2e,IAASE,EAAQ7e,EAAK6e,MAAWC,EAAS9e,EAAK8e,OAAYoQ,EAAWlvB,EAAKghB,WAAW,GAAQmO,EAAWnvB,EAAKghB,WAAW,GACxJoO,EAAO,IAAInoB,WAAW,CACxB,EACAyX,EAAI,GACJA,EAAI,GACJA,EAAI,GACJ,IACA,KACAtW,OAAO,CAACsW,EAAIrb,SAAW,EAAI,IAAmB,IAAbqb,EAAIrb,SAAgB+E,OAAOsW,GAAKtW,OAAO,GAAGA,OAAO,CAACuW,EAAItb,SAAW,EAAI,IAAmB,IAAbsb,EAAItb,SAAgB+E,OAAOuW,IACrIgP,EAAO,IAAI1mB,WAAW,CACxB,EAAM,EAAM,EACZ,EAAM,EAAM,EACZ,EAAM,EACN,EAAM,EACN,EAAM,EACN,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EACjB4X,GAAS,EAAK,IACP,IAARA,EACCC,GAAU,EAAK,IACP,IAATA,EACA,EAAM,GAAM,EAAM,EAClB,EAAM,GAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EACN,GACA,IAAM,GAAM,IAAM,IAClB,IAAM,IAAM,IAAM,IAClB,IAAM,IAAM,IAAM,GAClB,IAAM,IAAM,IAAM,GAClB,IAAM,IAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EACZ,EAAM,GACN,GAAM,KACJkO,EAAO,IAAI/lB,WAAW,CACxB,EAAM,GAAM,IAAM,IAClB,EAAM,GAAM,IAAM,IAClB,EAAM,GAAM,IAAM,MAEhBikB,EAAO,IAAIjkB,WAAW,CACvBioB,GAAY,GACZA,GAAY,GAAM,IAClBA,GAAY,EAAK,IACP,IAAXA,EACCC,GAAY,GACZA,GAAY,GAAM,IAClBA,GAAY,EAAK,IACP,IAAXA,IASF,OANAlvB,EAAOgT,MACLgP,EAAKnjB,KAvD+B,GAuDnB6uB,EAAKxtB,WAAaivB,EAAKjvB,WAAa6sB,EAAK7sB,YAAa8hB,EAAKljB,KAAK,QAAS4uB,EAC1F1L,EAAKnjB,KAAK,EAAIswB,EAAKjvB,YAAa8hB,EAAKljB,KAAK,QAASqwB,EACnDnN,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASiuB,EAClC/K,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASmsB,GAE7BjrB,EAAOA,S,6BAGd,IAAIA,EAAS,IAAI+G,UACbmkB,EAAU,IAAIlkB,WAAW,CAC3B,EACA,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,IAGpB,OADAhH,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASosB,GACxClrB,EAAOA,S,6BAGd,IAAIA,EAAS,IAAI+G,UACbmkB,EAAU,IAAIlkB,WAAW,CAC3B,EACA,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,IAGpB,OADAhH,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASosB,GACxClrB,EAAOA,S,6BAGd,IAAIA,EAAS,IAAI+G,UACbmkB,EAAU,IAAIlkB,WAAW,CAC3B,EACA,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,IAGpB,OADAhH,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASosB,GACxClrB,EAAOA,S,6BAGd,IAAIA,EAAS,IAAI+G,UACbmkB,EAAU,IAAIlkB,WAAW,CAC3B,EACA,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,IAGpB,OADAhH,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASosB,GACxClrB,EAAOA,S,2BAEH2S,EAAUmO,GACrB,IAAI9gB,EAAS,IAAI+G,UACbqoB,EAAOroB,UAAOmnB,YAAYvb,EAAWmO,GAEzC,OADA9gB,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASkjB,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASkjB,EAAK6M,UAAU,EAAG,GAAIO,EAAMpN,EAAKqN,KAAK,GAAIrN,EAAKqN,KAAK,IAC9HrvB,EAAOA,S,2BAEHgI,GACX,IAAIhI,EAAS,IAAI+G,UACbmkB,EAAU,IAAIlkB,WAAW,CAC3B,EACA,EAAM,EAAM,EACXgB,GAAM,GACNA,GAAM,GAAM,IACZA,GAAM,EAAK,IACN,IAALA,EACD,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,IAGpB,OADAhI,EAAOgT,MAAMgP,EAAKnjB,KAAK,EAAIqsB,EAAQhrB,YAAa8hB,EAAKljB,KAAK,QAASosB,GAC5DlrB,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UAAclI,EAAO,EAClCywB,EAAOtN,EAAKsN,OACZC,EAAOvN,EAAKuN,KAAKxvB,GAKrB,MAJA,CAACuvB,EAAMC,GAAMpoB,QAAQ,SAAA7G,GACnBzB,GAAQyB,EAAKJ,aAEfF,EAAOgT,MAAMgP,EAAKnjB,KAAKA,GAAOmjB,EAAKljB,KAAK,QAASwwB,EAAMC,GAChDvvB,EAAOA,S,6BAGd,IAAIA,EAAS,IAAI+G,UACbmkB,EAAUnkB,UAAOmnB,YAAYlM,EAAKpC,UAGtC,OAFAoC,EAAKpC,UAAY,EACjB5f,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASkjB,EAAK6M,UAAU,EAAG,GAAI3D,GAC9DlrB,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UAAclI,EAAO,EAClC2wB,EAAOxN,EAAKwN,KAAKzvB,EAAKiI,IACtBynB,EAAOzN,EAAKyN,KAAK1vB,EAAKoG,MACtBupB,EAAO1N,EAAK0N,KAAK3vB,GACjB4vB,EAAO3N,EAAK2N,KAAK5vB,EAAM2vB,EAAKxvB,YAKhC,MAJA,CAACsvB,EAAMC,EAAMC,EAAMC,GAAMxoB,QAAQ,SAAA7G,GAC/BzB,GAAQyB,EAAKJ,aAEfF,EAAOgT,MAAMgP,EAAKnjB,KAAKA,GAAOmjB,EAAKljB,KAAK,QAAS0wB,EAAMC,EAAMC,EAAMC,GAC5D3vB,EAAOA,S,2BAEHgI,GACX,IAAIhI,EAAS,IAAI+G,UACbmkB,EAAUnkB,UAAOmnB,YAAYlmB,GAEjC,OADAhI,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASkjB,EAAK6M,UAAU,EAAG,GAAI3D,GAC9DlrB,EAAOA,S,2BAEHmG,GACX,IAAInG,EAAS,IAAI+G,UACb6oB,EAAQzuB,KAAKC,MAAM+E,GAAQ6nB,EAAa,IAExC6B,EAAQ1uB,KAAKC,MAAM+E,GAAQ6nB,EAAa,IAE5C,OADAhuB,EAAOgT,MAAMgP,EAAKnjB,KAAK,IAAKmjB,EAAKljB,KAAK,QAASkjB,EAAK6M,UAAU,EAAG,GAAI9nB,UAAOmnB,YAAY0B,GAAQ7oB,UAAOmnB,YAAY2B,IAC5G7vB,EAAOA,S,2BAEHD,EAAM+vB,GACjB,IAAI9nB,EAAKjI,EAAKiI,GACVwC,EAAc,IAAPxC,EAAW,GAAK,GACvBhI,EAAS,IAAI+G,UACb+iB,EAAc/iB,UAAOmnB,YAAYnuB,EAAK6hB,QAAQxe,QAW9C0e,EAAS/a,UAAOmnB,YAAY,GAAwC1jB,EAAOzK,EAAK6hB,QAAQxe,OAAS0sB,GAYrG,OAXA9vB,EAAOgT,MAAMgP,EAAKnjB,KAAK,GAAK2L,EAAOzK,EAAK6hB,QAAQxe,QAAS4e,EAAKljB,KAAK,QAASkjB,EAAK6M,UAAU,EAAG9uB,EAAK6jB,OAAQkG,EAAahI,GACxH/hB,EAAK6hB,QAAQza,QAAQ,SAAC7G,EAAMkO,GAC1BxO,EAAOgT,MAAMjM,UAAOmnB,YAAY5tB,EAAKqS,WACrC3S,EAAOgT,MAAMjM,UAAOmnB,YAAY5tB,EAAKzB,OAC1B,IAAPmJ,GACFhI,EAAOgT,MAAMjM,UAAOmnB,YAAY5tB,EAAKtC,IAAM,SAAa,WACxDgC,EAAOgT,MAAMjM,UAAOmnB,YAAY5tB,EAAKwhB,UAErC9hB,EAAOgT,MAAMjM,UAAOmnB,YAAY,aAG7BluB,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UAKjB,OAJA/G,EAAOgT,MAAMgP,EAAKnjB,KAAK,GAAKkB,EAAK6hB,QAAQxe,QAAS4e,EAAKljB,KAAK,QAASkjB,EAAK6M,UAAU,EAAG,IACvF9uB,EAAK6hB,QAAQza,QAAQ,SAAA7G,GACnBN,EAAOgT,MAAM,IAAIhM,WAAuB,IAAZjH,EAAKiI,GAAW,CAAC1H,EAAKtC,IAAM,GAAK,IAAM,CAAC,QAE/DgC,EAAOA,S,2BAEHD,GACX,IAAIC,EAAS,IAAI+G,UAAclI,EAAO,EAQtC,OAPAkB,EAAK6hB,QAAQza,QAAQ,SAAA7G,GACnBzB,GAAQyB,EAAKzB,OAEfmB,EAAOgT,MAAMgP,EAAKnjB,KAAKA,GAAOmjB,EAAKljB,KAAK,SACxCiB,EAAK6hB,QAAQza,QAAQ,SAAA7G,GACnBN,EAAOgT,MAAM1S,EAAKN,UAEbA,EAAOA,W,KAIlBgiB,EAAKpC,SAAW,E,UAEDoC,E,mGC5lBf,IAAI5S,EAAO,CAUXA,QAAe,SAAUoE,EAAM1U,GAAmB,IAAbsT,EAAajP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAJ,GAC5C,GAAIqQ,EAAK1U,OAASA,GAChB,GAAI0U,GAAQA,EAAKzU,OAAQ,CACvB,IAAI6B,EAAM4S,EAAKzU,OAAOwP,OAAO,SAAAjO,GAAA,OAAQA,EAAKxB,OAASA,IAC/C8B,EAAIwC,OACNxC,EAAIuG,QAAQ,SAAA7G,GAAA,OAAQ8R,EAAOvS,KAAKS,KAEhCkT,EAAKzU,OAAOoI,QAAQ,SAAA7G,GAAA,OAAQ8O,EAAK6O,QAAQ3d,EAAMxB,EAAMsT,WAIzDA,EAAOvS,KAAK2T,GAGd,OADApB,EAAS,GAAGjK,OAAOiK,IACLhP,OAAS,EAAIgP,EAASA,EAAO,IAG7ChD,SAAgB,SAAUgO,EAAKha,EAAQ2sB,GAGrC,IAFA,IAAIC,EAAU5wB,OAAO2wB,GAAU1b,EAAMjR,GAAU,EAAO6sB,EAAS9uB,KAAKqJ,KAAK6J,EAAM2b,EAAQ5sB,QACnF8sB,EAAQ,GAAQ3yB,EAAI6B,OAAOge,GACxB6S,KACLC,EAAMrwB,KAAKmwB,GAEb,OAAOE,EAAM7lB,KAAK,IAAI8lB,UAAU,EAAG9b,EAAM9W,EAAE6F,QAAU7F,GAQvD6R,MAAa,WAAoB,IAC/B,IAAIghB,EAAM,GADqBnpB,EAAA9D,UAAAC,OAAP1F,EAAOqI,MAAAkB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPxJ,EAAOwJ,GAAA/D,UAAA+D,GAK/B,OAHAxJ,EAAMyJ,QAAQ,SAAA7G,GACZ8vB,EAAIvwB,KAAKuP,EAAKqN,SAASqD,OAAOxf,GAAM4D,SAAS,IAAK,EAAG,MAEhDksB,GAQThhB,IAAW,WAAkB,IAC3B,IAAInO,EAAQ,EADeovB,EAAAltB,UAAAC,OAALktB,EAAKvqB,MAAAsqB,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAALD,EAAKC,GAAAptB,UAAAotB,GAG3B,OADAD,EAAInpB,QAAQ,SAAA7G,GAAUW,GAASX,IACxBW,GASTmO,WAAkB,SAAUmS,EAAMiP,GAChC,IACIC,EAAclP,EAAKxH,QAAQxL,OAAO,SAACjO,GACrC,OAAOA,EAAKkqB,cAAgBgG,GAAgBA,EAAelwB,EAAKkqB,aAAelqB,EAAKiqB,YAAcjqB,EAAK8pB,oBACtG,GACH,GAAKqG,EAUE,CACL,IAAIC,EAAevvB,KAAKC,OAAOovB,EAAeC,EAAYjG,cAAgBiG,EAAYrG,mBAClFuG,EAAsBF,EAAYjG,aAAekG,EAAeD,EAAYrG,kBAGhF,MAAO,CACLwG,YAHYH,EAAYtG,YAAcuG,EAItCG,eAHe,CAACF,EAAqBH,IAbvC,IAAIM,EAAavP,EAAKxH,QAAQgX,MAC9BxP,EAAKxH,QAAQla,KAAKixB,GAClB,IAAIJ,EAAevvB,KAAKC,OAAOovB,EAAeM,EAAWtG,cAAgBsG,EAAW1G,mBAGpF,MAAO,CACLwG,YAHqBE,EAAW3G,YAAcuG,EAI9CG,eAAgB,CAHYC,EAAWtG,aAAesG,EAAW1G,kBAAoBsG,EAG3CF,KAchDphB,iBAAwB,SAAUmS,EAAMG,EAAMF,EAAMuB,EAAOvC,GACzD,IAAIwQ,EAAc5hB,EAAK6hB,WAAW1P,EAAMwB,EAAQ,GAC5C3Q,EAASsP,EAAK3H,QAAQiX,EAAYJ,YAAc,GAAKxhB,EAAK8hB,IAAIjtB,MAAM,KAAMud,EAAKzH,QAAQ9Z,MAAM+wB,EAAYH,eAAe,GAAK,EAAGG,EAAYH,eAAe,GAAK,IAAMrQ,EAC1K,QAAend,IAAX+O,EACF,eAAgBA,EAAhB,gBAAsCsP,EAAK3H,QAAQ3W,OAAnD,QAAiEgM,EAAK8hB,IAAIjtB,MAAM,KAAMud,EAAKzH,QAAQ9Z,MAAM,EAAG8iB,IACvG,GAAI3Q,EAAS,EAClB,eAAgBA,EAAhB,gBAAsCsP,EAAK3H,QAAQ3W,OAAnD,QAAiEgM,EAAK8hB,IAAIjtB,MAAM,KAAMud,EAAKzH,QAAQ9Z,MAAM,EAAG8iB,IAE9G,OAAO3Q,GAGThD,eAAsB,SAAUqS,EAAME,EAAMoB,GAC1C,IAAI5c,SAAUwM,SAAc1R,EAAQ,EAAOyhB,EAAY,EAAOZ,EAAS,EAYvE,GAXAL,EAAKsD,MAAMtQ,MAAM,SAAAnU,GAEf,OADAqS,EAAWrS,EAAKypB,eACZhH,EAAQ9hB,EAAQX,EAAKwpB,aACvB3jB,EAAOuc,GAAaK,EAAQ9hB,GAASX,EAAKypB,gBACnC,IAEP9oB,GAASX,EAAKwpB,YACdpH,GAAapiB,EAAKwpB,YAAcnX,GACzB,KAGPgP,EAAM,CACR,IAAIwP,EAAK,EACTxP,EAAKoD,MAAMtQ,MAAM,SAAAnU,GAEf,OADA6wB,GAAM7wB,EAAKW,QACP8hB,EAAQoO,KACVrP,EAASxhB,EAAKwhB,QACP,KASb,OAHK3b,IACHA,EAAOuc,GAAaK,EAAQ9hB,GAAS0R,GAEhC,CAACxM,OAAMwM,WAAUmP,WAG1B1S,sBAA6B,SAAUqS,EAAMX,EAAW3a,GACtD,IAAIuc,EAAY,EAAOK,EAAQ,EAAO9hB,EAAQ,EAAOmwB,SAarD,OAZA3P,EAAKhN,MAAM,SAACnU,EAAMkO,GAEhB,OADA4iB,EAAe9wB,EAAKwpB,YAAcxpB,EAAKypB,eAAiBjJ,EACpD3a,GAAQuc,EAAY0O,GACtBrO,EAAQ9hB,EAAQE,KAAKqJ,MAAMrE,EAAOuc,GAAa5B,EAAYxgB,EAAKypB,gBAChErH,GAAwBvhB,KAAKqJ,MAAMrE,EAAOuc,GAAa5B,EAAYxgB,EAAKypB,gBAAkBzpB,EAAKypB,eAAiBjJ,GACzG,IAEP4B,GAAa0O,EACbnwB,GAASX,EAAKwpB,aACP,KAGJ,CAAC/G,QAAOL,cAGjBtT,iBAAwB,SAAU6P,EAAM6B,GACtC,IAAIW,EAAOrS,EAAK6O,QAAQgB,EAAM,QAAatM,EAAW,EAItD,OAHA8O,EAAKsD,MAAM5d,QAAQ,SAAA7G,GACjBqS,GAAYrS,EAAKwpB,YAAcxpB,EAAKypB,iBAE/BjK,OAAOnN,EAAWmO,GAAWuQ,QAAQ,K,UAG/BjiB,E,gWChKf/S,EAAA,K,IACAA,EAAA,I,uDAEMwU,E,WACJ,SAAAA,IAAoE,IAAvDygB,EAAuDnuB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA9C,8C,4FAA8CzE,CAAAC,KAAAkS,GAClE,IAAI5O,EAAOtD,MACX,EAAA6O,EAAAnG,SAAa1I,MACbA,KAAK2yB,OAASA,EACd3yB,KAAK4yB,YAAc,IAAIvvB,OAAOwvB,YAC9B7yB,KAAK2E,IAAMtB,OAAOyvB,IAAIC,gBAAgB/yB,KAAK4yB,aAC3C5yB,KAAK6M,MAAQ,GACb7M,KAAK6R,UAAW,EAChB7R,KAAK4yB,YAAYtlB,iBAAiB,aAAc,WAC9ChK,EAAK0vB,aAAe1vB,EAAKsvB,YAAYK,gBAAgB3vB,EAAKqvB,QAC1DrvB,EAAK0vB,aAAa1lB,iBAAiB,QAAS,SAAUtH,GACpD1C,EAAK8C,KAAK,QAAS,IAAIvF,UAAO,MAAO,GAAI,CAACC,KAAM,GAAIC,OAAQ,+BAAgCC,IAAKgF,EAAEwJ,aAErGlM,EAAK0vB,aAAa1lB,iBAAiB,YAAa,SAAUtH,GACxD1C,EAAK8C,KAAK,aACV,IAAI/E,EAASiC,EAAKuJ,MAAMqmB,QACpB7xB,GAAUiC,EAAK0vB,eAAiB1vB,EAAK0vB,aAAanhB,UAA2B,SAAfvO,EAAK6vB,OACrE7vB,EAAK0vB,aAAalhB,aAAazQ,KAGnCiC,EAAK8C,KAAK,gBAEZpG,KAAK4yB,YAAYtlB,iBAAiB,cAAe,WAC/ChK,EAAK8C,KAAK,iB,+CAgBA/E,GACZ,IAAI2xB,EAAehzB,KAAKgzB,aACxB,OAAIA,IAAiBA,EAAanhB,UAA2B,SAAf7R,KAAKmzB,OACjDH,EAAalhB,aAAazQ,IACnB,IAEPrB,KAAK6M,MAAM3L,KAAKG,IACT,K,mCAIGhB,EAAOc,GACnBnB,KAAKgzB,aAAa1jB,OAAOjP,EAAOc,K,oCAIb,SAAfnB,KAAKmzB,OACPnzB,KAAK4yB,YAAY5c,gB,4BA5BnB,OAAOhW,KAAK4yB,YAAYziB,a,+BAIxB,OAAOnQ,KAAK4yB,YAAY5e,U,aAGZjV,GACZiB,KAAK4yB,YAAY5e,SAAWjV,K,mCAwBV4zB,GAClB,OAAOtvB,OAAOwvB,aAAexvB,OAAOwvB,YAAYO,gBAAgBT,O,eAIrDzgB,E","file":"index.js","sourcesContent":[" \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 38);\n","import Stream from './stream'\nimport Errors from '../error'\nclass Box {\n constructor () {\n this.headSize = 8\n this.size = 0\n this.type = ''\n this.subBox = []\n this.start = -1\n }\n readHeader (stream) {\n this.start = stream.position\n this.size = stream.readUint32()\n this.type = String.fromCharCode(stream.readUint8(), stream.readUint8(), stream.readUint8(), stream.readUint8())\n if (this.size === 1) {\n this.size = stream.readUint64()\n } else if (this.size === 0) {\n if (this.type !== 'mdat') {\n throw new Errors('parse', '', {line: 19, handle: '[Box] readHeader', msg: 'parse mp4 mdat box failed'})\n }\n }\n if (this.type === 'uuid') {\n let uuid = []\n for (let i = 0; i < 16; i++) {\n uuid.push(stream.readUint8())\n }\n }\n }\n readBody (stream) {\n let end = this.size - stream.position + this.start\n let type = this.type\n this.data = stream.buffer.slice(stream.position, stream.position + end)\n stream.position += this.data.byteLength\n let parser\n if (Box.containerBox.find(item => item === type)) {\n parser = Box.containerParser\n } else {\n parser = Box[type]\n }\n if (parser && parser instanceof Function) {\n parser.call(this)\n }\n }\n read (stream) {\n this.readHeader(stream)\n this.readBody(stream)\n }\n\n static containerParser () {\n let stream = new Stream(this.data)\n let size = stream.buffer.byteLength\n let self = this\n while (stream.position < size) {\n let box = new Box()\n box.readHeader(stream)\n self.subBox.push(box)\n box.readBody(stream)\n }\n delete self.data\n stream = null\n }\n}\n\nBox.containerBox = ['moov', 'trak', 'edts', 'mdia', 'minf', 'dinf', 'stbl', 'mvex', 'moof', 'traf', 'mfra']\n\nexport default Box\n","import Errors from '../error'\nclass Stream {\n constructor (buffer) {\n if (buffer instanceof ArrayBuffer) {\n this.buffer = buffer\n this.dataview = new DataView(buffer)\n this.dataview.position = 0\n } else {\n throw new Errors('parse', '', {line: 9, handle: '[Stream] constructor', msg: 'data is valid'})\n }\n }\n\n set position (value) {\n this.dataview.position = value\n }\n\n get position () {\n return this.dataview.position\n }\n\n skip (count) {\n let loop = Math.floor(count / 4)\n let last = count % 4\n for (let i = 0; i < loop; i++) {\n Stream.readByte(this.dataview, 4)\n }\n if (last > 0) {\n Stream.readByte(this.dataview, last)\n }\n }\n\n /**\n * [readByte 从DataView中读取数据]\n * @param {DataView} buffer [DataView实例]\n * @param {Number} size [读取字节数]\n * @return {Number} [整数]\n */\n static readByte (buffer, size, sign) {\n let res\n switch (size) {\n case 1:\n if (sign) {\n res = buffer.getInt8(buffer.position)\n } else {\n res = buffer.getUint8(buffer.position)\n }\n break\n case 2:\n if (sign) {\n res = buffer.getInt16(buffer.position)\n } else {\n res = buffer.getUint16(buffer.position)\n }\n break\n case 3:\n if (sign) {\n throw 'not supported for readByte 3'\n } else {\n res = buffer.getUint8(buffer.position) << 16\n res |= buffer.getUint8(buffer.position + 1) << 8\n res |= buffer.getUint8(buffer.position + 2)\n }\n break\n case 4:\n if (sign) {\n res = buffer.getInt32(buffer.position)\n } else {\n res = buffer.getUint32(buffer.position)\n }\n break\n case 8:\n if (sign) {\n throw new Errors('parse', '', {line: 73, handle: '[Stream] readByte', msg: 'not supported for readBody 8'})\n } else {\n res = buffer.getUint32(buffer.position) << 32\n res |= buffer.getUint32(buffer.position + 4)\n }\n break\n default:\n res = ''\n }\n buffer.position += size\n return res\n }\n\n readUint8 () {\n return Stream.readByte(this.dataview, 1)\n }\n\n readUint16 () {\n return Stream.readByte(this.dataview, 2)\n }\n\n readUint32 () {\n return Stream.readByte(this.dataview, 4)\n }\n\n readUint64 () {\n return Stream.readByte(this.dataview, 8)\n }\n\n readInt8 () {\n return Stream.readByte(this.dataview, 1, true)\n }\n readInt16 () {\n return Stream.readByte(this.dataview, 2, true)\n }\n readInt32 () {\n return Stream.readByte(this.dataview, 4, true)\n }\n}\n\nexport default Stream\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","import Player from 'xgplayer'\nimport {version} from '../package.json'\n\nclass _Errors extends Player.Errors {\n constructor (type, vid, errd = {}, url = '') {\n errd.version = version\n super(type, vid, errd)\n this.url = url\n }\n}\n\nexport default _Errors\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\n\nvar d = require('d')\n , callable = require('es5-ext/object/valid-callable')\n\n , apply = Function.prototype.apply, call = Function.prototype.call\n , create = Object.create, defineProperty = Object.defineProperty\n , defineProperties = Object.defineProperties\n , hasOwnProperty = Object.prototype.hasOwnProperty\n , descriptor = { configurable: true, enumerable: false, writable: true }\n\n , on, once, off, emit, methods, descriptors, base;\n\non = function (type, listener) {\n\tvar data;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) {\n\t\tdata = descriptor.value = create(null);\n\t\tdefineProperty(this, '__ee__', descriptor);\n\t\tdescriptor.value = null;\n\t} else {\n\t\tdata = this.__ee__;\n\t}\n\tif (!data[type]) data[type] = listener;\n\telse if (typeof data[type] === 'object') data[type].push(listener);\n\telse data[type] = [data[type], listener];\n\n\treturn this;\n};\n\nonce = function (type, listener) {\n\tvar once, self;\n\n\tcallable(listener);\n\tself = this;\n\ton.call(this, type, once = function () {\n\t\toff.call(self, type, once);\n\t\tapply.call(listener, this, arguments);\n\t});\n\n\tonce.__eeOnceListener__ = listener;\n\treturn this;\n};\n\noff = function (type, listener) {\n\tvar data, listeners, candidate, i;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return this;\n\tdata = this.__ee__;\n\tif (!data[type]) return this;\n\tlisteners = data[type];\n\n\tif (typeof listeners === 'object') {\n\t\tfor (i = 0; (candidate = listeners[i]); ++i) {\n\t\t\tif ((candidate === listener) ||\n\t\t\t\t\t(candidate.__eeOnceListener__ === listener)) {\n\t\t\t\tif (listeners.length === 2) data[type] = listeners[i ? 0 : 1];\n\t\t\t\telse listeners.splice(i, 1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif ((listeners === listener) ||\n\t\t\t\t(listeners.__eeOnceListener__ === listener)) {\n\t\t\tdelete data[type];\n\t\t}\n\t}\n\n\treturn this;\n};\n\nemit = function (type) {\n\tvar i, l, listener, listeners, args;\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return;\n\tlisteners = this.__ee__[type];\n\tif (!listeners) return;\n\n\tif (typeof listeners === 'object') {\n\t\tl = arguments.length;\n\t\targs = new Array(l - 1);\n\t\tfor (i = 1; i < l; ++i) args[i - 1] = arguments[i];\n\n\t\tlisteners = listeners.slice();\n\t\tfor (i = 0; (listener = listeners[i]); ++i) {\n\t\t\tapply.call(listener, this, args);\n\t\t}\n\t} else {\n\t\tswitch (arguments.length) {\n\t\tcase 1:\n\t\t\tcall.call(listeners, this);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tcall.call(listeners, this, arguments[1]);\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tcall.call(listeners, this, arguments[1], arguments[2]);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tl = arguments.length;\n\t\t\targs = new Array(l - 1);\n\t\t\tfor (i = 1; i < l; ++i) {\n\t\t\t\targs[i - 1] = arguments[i];\n\t\t\t}\n\t\t\tapply.call(listeners, this, args);\n\t\t}\n\t}\n};\n\nmethods = {\n\ton: on,\n\tonce: once,\n\toff: off,\n\temit: emit\n};\n\ndescriptors = {\n\ton: d(on),\n\tonce: d(once),\n\toff: d(off),\n\temit: d(emit)\n};\n\nbase = defineProperties({}, descriptors);\n\nmodule.exports = exports = function (o) {\n\treturn (o == null) ? create(base) : defineProperties(Object(o), descriptors);\n};\nexports.methods = methods;\n","\"use strict\";\n\nvar _undefined = require(\"../function/noop\")(); // Support ES3 engines\n\nmodule.exports = function (val) { return val !== _undefined && val !== null; };\n","class UTC {\n constructor () {\n let time = new Date()\n time.setFullYear(1904)\n time.setMonth(0)\n time.setDate(1)\n time.setHours(0)\n time.setMinutes(0)\n time.setSeconds(0)\n this.time = time\n }\n setTime (value) {\n this.time.setTime(this.time.getTime() + value * 1)\n return this.time.toLocaleString()\n }\n}\n\nexport default UTC\n","import Concat from 'concat-typed-array'\n\nclass Buffer {\n constructor () {\n this.buffer = new Uint8Array(0)\n }\n write (...buffer) {\n let self = this\n buffer.forEach(item => {\n if (item) {\n self.buffer = Concat(Uint8Array, self.buffer, item)\n } else {\n window.console.error(item)\n }\n })\n }\n static writeUint32 (value) {\n return new Uint8Array([\n value >> 24,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n ])\n }\n}\n\nexport default Buffer\n","module.exports = false;\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","module.exports = Player;","\"use strict\";\n\n// ES3 safe\nvar _undefined = void 0;\n\nmodule.exports = function (value) { return value !== _undefined && value !== null; };\n","'use strict';\n\nvar _concat = require('./concat');\n\nvar _concat2 = _interopRequireDefault(_concat);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _concat2.default;","import EventEmitter from 'event-emitter'\nimport Errors from '../error'\n\nclass Task {\n constructor (url, range, withCredentials, callback) {\n EventEmitter(this)\n this.url = url\n this.range = range\n this.withCredentials = withCredentials\n this.id = range.join('-')\n this.on = false\n let xhr = new window.XMLHttpRequest()\n xhr.target = this\n xhr.responseType = 'arraybuffer'\n xhr.withCredentials = this.withCredentials || false\n xhr.open('get', url)\n xhr.setRequestHeader('Range', `bytes=${range[0]}-${range[1]}`)\n xhr.onload = function () {\n if (xhr.status === 200 || xhr.status === 206) {\n if (callback && callback instanceof Function) {\n callback(xhr.response)\n }\n }\n xhr.target.remove()\n }\n xhr.onerror = function (e) {\n xhr.target.emit('error', new Errors('network', '', {line: 25, handle: '[Task] constructor', msg: e.message, url}))\n xhr.target.remove()\n }\n xhr.onabort = function () {\n xhr.target.remove()\n }\n this.xhr = xhr\n Task.queue.push(this)\n this.update()\n }\n cancel () {\n this.xhr.abort()\n }\n\n remove () {\n Task.queue.filter((item, idx) => {\n if (item.url === this.url && item.id === this.id) {\n Task.queue.splice(idx, 1)\n return true\n } else {\n return false\n }\n })\n this.update()\n }\n\n update () {\n let Queue = Task.queue\n let sended = Queue.filter((item) => item.on)\n let wait = Queue.filter(item => !item.on)\n let max = Task.limit - sended.length\n wait.forEach((item, idx) => {\n if (idx < max) {\n item.run()\n }\n })\n }\n\n run () {\n if (this.xhr.readyState === 1) {\n this.on = true\n this.xhr.send()\n } else {\n this.remove()\n }\n }\n\n static clear () {\n Task.queue.forEach(item => {\n if (item.on) {\n item.cancel()\n }\n })\n Task.queue.length = 0\n }\n}\n\nTask.queue = []\nTask.limit = 2\nwindow.Task = Task\n\nexport default Task\n","import 'core-js/modules/es6.promise.js'\nimport 'core-js/modules/es7.string.pad-start'\nimport Player from 'xgplayer'\nimport MP4 from './mp4'\nimport MSE from './media/mse'\nimport Task from './media/task'\nimport Buffer from './fmp4/buffer'\n\nlet isEnded = (player, mp4) => {\n if (mp4.meta.endTime - player.currentTime < 2) {\n let range = player.getBufferedRange()\n if (player.currentTime - range[1] < 0.1) {\n player.mse.endOfStream()\n }\n }\n}\n\nlet mp4player = function () {\n let player = this; let sniffer = Player.sniffer; let util = Player.util\n let Errors = Player.Errors; let mainURL; let backupURL\n let preloadTime = player.config.preloadTime || 15\n let waiterTimer\n let url = player.config.url\n let rule = player.config.pluginRule || function () { return true }\n if (!url) {\n player.emit('error', new Errors('other', player.config.vid))\n return\n }\n if (util.typeOf(url) === 'String') {\n mainURL = url\n } else if (util.typeOf(url) === 'Array' && url.length) {\n mainURL = url[0].src\n if(url.length > 1) {\n backupURL = url[1].src\n }\n }\n player.config._mainURL = mainURL\n player.config._backupURL = backupURL\n let loadData = (i = 0, time = player.currentTime) => {\n if (player.timer) {\n clearTimeout(player.timer)\n }\n time = Math.max(time, player.currentTime)\n player.timer = setTimeout(function () {\n player.mp4.seek(time + i * 0.1).then(buffer => {\n if (buffer) {\n let mse = player.mse\n mse.updating = true\n mse.appendBuffer(buffer)\n mse.once('updateend', () => {\n mse.updating = false\n })\n }\n }, () => {\n if (i < 10) {\n setTimeout(function () {\n loadData(i + 1)\n }, 2000)\n }\n })\n }, 50)\n }\n let init = (url) => {\n let mp4 = new MP4(url, player.config.withCredentials)\n let mse\n return new Promise((resolve, reject) => {\n mp4.once('moovReady', () => {\n mse = new MSE()\n mse.on('sourceopen', function () {\n mse.appendBuffer(mp4.packMeta())\n mse.once('updateend', loadData.bind(player))\n })\n mse.on('error', function (e) {\n reject(e)\n })\n resolve([mp4, mse])\n })\n mp4.on('error', (e) => {\n reject(e)\n })\n })\n }\n if (['chrome', 'firfox', 'safari'].some(item => item === sniffer.browser) && MSE.isSupported('video/mp4; codecs=\"avc1.64001E, mp4a.40.5\"')) {\n player._start = player.start\n if (!rule.call(player)) {\n return false\n }\n\n let errorHandle = (player, err) => {\n err.vid = player.config.vid\n err.url = player.src\n if (err.errd && typeof err.errd === 'object') {\n if (player.mp4) {\n err.errd.url = player.mp4.url\n err.url = player.mp4.url\n player.mp4.canDownload = false\n }\n }\n player.emit('DATA_REPORT', err)\n Task.clear()\n if (player.mp4 && player.mp4.bufferCache) {\n player.mp4.bufferCache.clear()\n }\n if (player.currentTime) {\n player._currentTime = player.currentTime\n }\n if (player._start) {\n player.start = player._start\n player._start = null\n }\n player.switchURL = null\n player._replay = null\n\n // player.off('timeupdate', timeupdateFunc)\n clearInterval(player.mp4ProgressTimer)\n player.off('seeking', seekingFunc)\n player.off('pause', pauseFunc)\n player.off('playing', playingFunc)\n player.off('waiting', waitingFunc)\n player.off('ended', endedFunc)\n player.off('destroy', destroyFunc)\n\n if (err.errt === 'network' && player.config._backupURL) {\n player.src = player.config._backupURL\n } else {\n player.src = player.config._mainURL\n }\n player.once('canplay', () => {\n if (player._currentTime) {\n player.currentTime = player._currentTime\n }\n player.play()\n })\n }\n\n player.start = function (url = mainURL) {\n init(url).then((result) => {\n let mp4 = result[0]; let mse = result[1]\n player._start(mse.url)\n player.logParams.pluginSrc = url\n player.mp4 = mp4\n player.mse = mse\n mp4.on('error', err => {\n errorHandle(player, err)\n })\n }, err => {\n player._start(url)\n errorHandle(player, err)\n })\n player.once('canplay', () => {\n // safari decoder time offset\n if (sniffer.browser === 'safari' && player.buffered) {\n let start = player.buffered.start(0)\n player.currentTime = start + 0.1\n }\n })\n }\n\n player.cut = function (start = 0, end) {\n let segment = new Buffer()\n let mp4 = new MP4(url, player.config.withCredentials)\n return new Promise((resolve, reject) => {\n mp4.once('moovReady', () => {\n if (!end || end <= start) {\n end = start + 15\n }\n if (end > mp4.meta.duration) {\n start = mp4.meta.duration - (end - start)\n end = mp4.meta.duration\n }\n mp4.cut(start, end).then(buffer => {\n if (buffer) {\n let meta = Player.util.deepCopy({\n duration: end - start,\n audioDuration: end - start,\n endTime: end - start\n }, mp4.meta)\n meta.duration = end - start\n meta.videoDuration = end - start\n meta.audioDuration = end - start\n meta.endTime = end - start\n segment.write(mp4.packMeta(meta), buffer)\n resolve(new Blob([segment.buffer], {type: 'video/mp4; codecs=\"avc1.64001E, mp4a.40.5\"'}))\n }\n })\n })\n mp4.on('error', (e) => {\n reject(e)\n })\n })\n }\n\n player.switchURL = (url) => {\n let mp5 = new MP4(url, player.config.withCredentials)\n let mp4 = player.mp4\n mp5.on('moovReady', () => {\n let timeRange = mp4.timeRage; let curTime = player.currentTime\n timeRange = mp4.timeRage\n let start = timeRange.find(item => item[0] - curTime > 2)[0]\n let end = player.getBufferedRange()[1]\n if (end - start > 0 && sniffer.browser !== 'safari') {\n player.mse.removeBuffer(start, end)\n }\n if (!Player.util.hasClass(player.root, 'xgplayer-ended')) {\n player.emit('urlchange', JSON.parse(JSON.stringify(player.logParams)))\n }\n player.logParams = {\n bc: 0,\n bu_acu_t: 0,\n played: [{\n begin: player.video.currentTime,\n end: -1\n }],\n pt: new Date().getTime(),\n vt: new Date().getTime(),\n vd: 0\n }\n player.mp4 = mp5\n player.mse.appendBuffer(mp5.packMeta())\n\n player.logParams.pt = new Date().getTime()\n // console.log('pt: ' + player.logParams.pt)\n player.logParams.vt = new Date().getTime()\n // console.log('vt: ' + player.logParams.vt)\n player.logParams.vd = player.video.duration\n player.logParams.pluginSrc = url\n })\n mp5.on('error', err => {\n errorHandle(player, err)\n })\n }\n\n player.playNext = (url) => {\n let mp5 = new MP4(url, player.config.withCredentials)\n let mp4 = player.mp4\n mp5.on('moovReady', () => {\n let range = [0, 0]\n let buffered = player.video.buffered\n let currentTime = player.video.currentTime\n let max = 0\n if (buffered) {\n for (let i = 0, len = buffered.length; i < len; i++) {\n range[0] = buffered.start(i)\n range[1] = buffered.end(i)\n if (range[0] <= currentTime && range[1] <= currentTime) {\n max = range[1] > max ? range[1] : max\n player.mse.removeBuffer(range[0], range[1])\n }\n }\n }\n player.mp4 = mp5\n player.mse.appendBuffer(mp5.packMeta())\n let flag = true\n player.on('timeupdate', function () {\n if (flag && mp4.meta.endTime - player.currentTime < 2) {\n let range = player.getBufferedRange()\n if (player.currentTime - range[1] < 0.1) {\n flag = false\n player.currentTime = 0\n buffered = player.video.buffered\n if (buffered) {\n for (let i = 0, len = buffered.length; i < len; i++) {\n range[0] = buffered.start(i)\n range[1] = buffered.end(i)\n if (range[0] >= max) {\n player.mse.removeBuffer(range[0], range[1])\n }\n }\n }\n }\n }\n })\n })\n mp5.on('error', err => {\n errorHandle(player, err)\n })\n }\n\n let timeupdateFunc = function () {\n let mse = player.mse; let mp4 = player.mp4\n if (mse && !mse.updating && mp4.canDownload) {\n let timeRage = mp4.timeRage\n let range = player.getBufferedRange(); let cacheMaxTime = player.currentTime + preloadTime\n if (range[1] - cacheMaxTime > 0) {\n return\n }\n timeRage.every((item, idx) => {\n let start = item[0]; let end = item[1]; let center = (start + end) / 2\n if (range[1] === 0) {\n return false\n } else {\n if (center > range[1] && !mp4.bufferCache.has(idx)) {\n loadData(0, center)\n } else {\n return true\n }\n }\n })\n isEnded(player, mp4)// hack for older webkit\n }\n }\n\n // player.on('timeupdate', timeupdateFunc)\n player.mp4ProgressTimer = setInterval(timeupdateFunc, player.config.mp4ProgressTimer || 300)\n\n let seekingFunc = function () {\n let buffered = player.buffered; let hasBuffered = false; let curTime = player.currentTime\n Task.clear()\n if (buffered.length) {\n for (let i = 0, len = buffered.length; i < len; i++) {\n if (curTime >= buffered.start(i) && curTime <= buffered.end(i)) {\n hasBuffered = true\n break\n }\n }\n if (!hasBuffered) {\n loadData(0, curTime)\n }\n } else {\n loadData(0, player.currentTime)\n }\n }\n player.on('seeking', seekingFunc)\n\n let pauseFunc = function () {\n Task.clear()\n }\n player.on('pause', pauseFunc)\n\n let playingFunc = function () {\n if (waiterTimer) {\n clearTimeout(waiterTimer)\n }\n }\n player.on('playing', playingFunc)\n\n let waitingFunc = function () {\n let mp4 = player.mp4\n if (!mp4 || !mp4.meta) {\n return\n }\n let range = player.getBufferedRange()\n let duration = mp4.meta.videoDuration\n if (duration - player.currentTime < 0.5 && duration - range[1] < 0.5) {\n player.mse.endOfStream()\n } else {\n loadData(0, range[1] + 1)\n waiterTimer = setTimeout(function () {\n let buffered = player.buffered; let start\n for (let i = 0, len = buffered.length; i < len; i++) {\n start = buffered.start(i)\n if (start >= player.currentTime) {\n player.currentTime = start\n break\n }\n }\n }, 1500)\n }\n }\n player.on('waiting', waitingFunc)\n\n let endedFunc = function () {\n player.off('waiting', waitingFunc)\n // player.off('timeupdate', timeupdateFunc)\n clearInterval(player.mp4ProgressTimer)\n }\n player.on('ended', endedFunc)\n\n let destroyFunc = function () {\n Task.clear()\n if (player.timer) {\n clearTimeout(player.timer)\n }\n }\n player.once('destroy', destroyFunc)\n\n player._replay = function () {\n Task.clear()\n player.mp4.bufferCache.clear()\n init(player.mp4.url).then((result) => {\n let mp4 = result[0]; let mse = result[1]\n player._start(mse.url)\n player.mp4 = mp4\n player.mse = mse\n player.currentTime = 0\n player.play()\n player.once('canplay', () => {\n player.on('waiting', waitingFunc)\n // player.on('timeupdate', timeupdateFunc)\n player.mp4ProgressTimer = setInterval(timeupdateFunc, player.config.mp4ProgressTimer || 300)\n })\n }, err => {\n errorHandle(player, err)\n })\n }\n }\n}\n\nPlayer.install('mp4player', mp4player)\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","import EventEmitter from 'event-emitter'\nimport Merge from 'deepmerge'\nimport Parser from './parse'\nimport Buffer from './fmp4/buffer'\nimport FMP4 from './fmp4/mp4'\nimport Task from './media/task'\nimport util from './util'\nimport Errors from './error'\n\nclass MP4 {\n /**\n * [constructor 构造函数]\n * @param {String} url [视频地址]\n * @param {Number} [chunk_size=Math.pow(25, 4)] [请求的数据块大小,对于长视频设置的较大些可以避免二次请求]\n */\n constructor (url, withCredentials, chunkSize = Math.pow(25, 4)) {\n EventEmitter(this)\n this.url = url\n this.withCredentials = withCredentials\n this.CHUNK_SIZE = chunkSize\n this.init(url)\n this.once('moovReady', this.moovParse.bind(this))\n this.cache = new Buffer()\n this.bufferCache = new Set()\n this.timeRage = []\n this.canDownload = true\n }\n\n /**\n * [getData 根据字节区间下载二进制数据]\n * @param {Number} [start=0] [起始字节]\n * @param {Number} [end=start + this.CHUNK_SIZE] [截止字节]\n */\n getData (start = 0, end = start + this.CHUNK_SIZE) {\n let self = this\n return new Promise((resolve, reject) => {\n let task = new Task(this.url, [\n start, end\n ], this.withCredentials, resolve)\n task.once('error', err => {\n self.emit('error', err)\n })\n })\n }\n\n /**\n * [moovParse 解析视频信息]\n * @return {[type]} [description]\n */\n moovParse () {\n let self = this\n let moov = this.moovBox\n let mvhd = util.findBox(moov, 'mvhd')\n let traks = util.findBox(moov, 'trak')\n let videoTrak,\n audioTrak\n let videoCodec,\n audioCodec\n let videoTimeScale,\n audioTimeScale\n let sps,\n pps,\n profile,\n width,\n height\n let channelCount,\n sampleRate,\n decoderConfig\n traks.forEach(trak => {\n let hdlr = util.findBox(trak, 'hdlr')\n let mdhd = util.findBox(trak, 'mdhd')\n if (!hdlr || !mdhd) {\n self.emit('error', new Errors('parse', '', {line: 72, handle: '[MP4] moovParse', url: self.url}))\n return\n }\n let stsd = util.findBox(trak, 'stsd')\n let codecBox = stsd.subBox[0]\n if (hdlr.handleType === 'vide') {\n let avcC = util.findBox(trak, 'avcC')\n let tkhd = util.findBox(trak, 'tkhd')\n videoTrak = trak\n videoTimeScale = mdhd.timescale\n if (avcC) {\n videoCodec = `${codecBox.type}.` + util.toHex(avcC.profile, avcC.profileCompatibility, avcC.AVCLevelIndication).join('')\n sps = avcC.sequence && avcC.sequence.map((item) => Number(`0x${item}`))\n pps = avcC.pps && avcC.pps.map((item) => Number(`0x${item}`))\n profile = avcC.profile\n } else {\n videoCodec = `${codecBox.type}`\n }\n if (tkhd) {\n width = tkhd.width\n height = tkhd.height\n }\n }\n if (hdlr.handleType === 'soun') {\n audioTrak = trak\n let esds = util.findBox(trak, 'esds')\n let mp4a = util.findBox(trak, 'mp4a')\n let ESDescriptor = util.findBox(trak, 5)\n audioTimeScale = mdhd.timescale\n if (esds) {\n audioCodec = `${codecBox.type}.` + util.toHex(esds.subBox[0].subBox[0].typeID) + `.${esds.subBox[0].subBox[0].subBox[0].type}`\n } else {\n audioCodec = `${codecBox.type}`\n }\n if (ESDescriptor && ESDescriptor.EScode) {\n decoderConfig = ESDescriptor.EScode.map((item) => Number(`0x${item}`))\n }\n if (mp4a) {\n channelCount = mp4a.channelCount\n sampleRate = mp4a.sampleRate\n }\n }\n })\n this.videoTrak = Merge({}, videoTrak)\n this.audioTrak = Merge({}, audioTrak)\n let mdat = this._boxes.find(item => item.type === 'mdat')\n let videoDuration = util.seekTrakDuration(videoTrak, videoTimeScale)\n let audioDuration = util.seekTrakDuration(audioTrak, audioTimeScale)\n this.mdatStart = mdat.start\n let vf = this.videoKeyFrames\n let videoKeyFramesLength = vf.length - 1\n vf.forEach((item, idx) => {\n if (idx < videoKeyFramesLength) {\n this.timeRage.push([\n item.time.time / videoTimeScale,\n vf[idx + 1].time.time / videoTimeScale\n ])\n } else {\n this.timeRage.push([\n item.time.time / videoTimeScale,\n -1\n ])\n }\n })\n this.meta = {\n videoCodec,\n audioCodec,\n createTime: mvhd.createTime,\n modifyTime: mvhd.modifyTime,\n duration: mvhd.duration / mvhd.timeScale,\n timeScale: mvhd.timeScale,\n videoDuration,\n videoTimeScale,\n audioDuration,\n audioTimeScale,\n endTime: Math.min(videoDuration, audioDuration),\n sps,\n pps,\n width,\n height,\n profile,\n pixelRatio: [\n 1, 1\n ],\n channelCount,\n sampleRate,\n audioConfig: decoderConfig\n }\n }\n\n /**\n * [init 实例的初始化,主要是获取视频的MOOV元信息]\n */\n init () {\n let self = this\n self.getData().then((res) => {\n let parsed\n\n let moovStart = 0\n\n let moov\n\n let boxes\n try {\n parsed = new Parser(res)\n } catch (e) {\n self.emit('error', e.type ? e : new Errors('parse', '', {line: 176, handle: '[MP4] init', msg: e.message}))\n return false\n }\n self._boxes = boxes = parsed.boxes\n boxes.every(item => {\n moovStart += item.size\n if (item.type === 'moov') {\n moov = item\n self.moovBox = moov\n self.emit('moovReady', moov)\n return false\n } else {\n return true\n }\n })\n if (!moov) {\n let nextBox = parsed.nextBox\n if (nextBox) {\n if (nextBox.type === 'moov') {\n self.getData(moovStart, moovStart + nextBox.size + 28).then(res => {\n let parsed = new Parser(res)\n self._boxes = self._boxes.concat(parsed.boxes)\n moov = parsed.boxes.filter(box => box.type === 'moov')\n if (moov.length) {\n self.moovBox = moov[0]\n self.emit('moovReady', moov)\n } else {\n self.emit('error', new Errors('parse', '', {line: 203, handle: '[MP4] init', msg: 'not find moov box'}))\n }\n })\n } else {\n self.emit('error', new Errors('parse', '', {line: 207, handle: '[MP4] init', msg: 'not find moov box'}))\n }\n } else {\n self.getData(moovStart, '').then(res => {\n let parsed = new Parser(res)\n if (parsed) {\n self._boxes = self._boxes.concat(parsed.boxes)\n parsed.boxes.every(item => {\n if (item.type === 'moov') {\n moov = item\n self.moovBox = moov\n self.emit('moovReady', moov)\n return false\n } else {\n return true\n }\n })\n } else {\n self.emit('error', new Errors('parse', '', {line: 225, handle: '[MP4] init', msg: 'not find moov box'}))\n }\n })\n }\n }\n }).catch(() => {\n self.emit('error', new Errors('network', '', {line: 231, handle: '[MP4] getData', msg: 'getData failed'}))\n })\n }\n\n getSamplesByOrders (type = 'video', start, end) {\n let trak = type === 'video'\n ? this.videoTrak\n : this.audioTrak\n let stsc = util.findBox(trak, 'stsc') // chunk~samples\n let stsz = util.findBox(trak, 'stsz') // sample-size\n let stts = util.findBox(trak, 'stts') // sample-time\n let stco = util.findBox(trak, 'stco') // chunk-offset\n let ctts = util.findBox(trak, 'ctts') // offset-compositime\n let mdatStart = this.mdatStart\n let samples = []\n end = end !== undefined\n ? end\n : stsz.entries.length\n if (start instanceof Array) {\n start.forEach((item, idx) => {\n samples.push({\n idx: item,\n size: stsz.entries[item],\n time: util.seekSampleTime(stts, ctts, item),\n offset: util.seekSampleOffset(stsc, stco, stsz, item, mdatStart)\n })\n })\n } else if (end !== 0) {\n for (let i = start; i < end; i++) {\n samples.push({\n idx: i,\n size: stsz.entries[i],\n time: util.seekSampleTime(stts, ctts, i),\n offset: util.seekSampleOffset(stsc, stco, stsz, i, mdatStart)\n })\n }\n } else {\n samples = {\n idx: start,\n size: stsz.entries[start],\n time: util.seekSampleTime(stts, ctts, start),\n offset: util.seekSampleOffset(stsc, stco, stsz, start, mdatStart)\n }\n }\n return samples\n }\n\n get videoKeyFrames () {\n if (this._videoFrames) {\n return this._videoFrames\n }\n let videoTrak = this.videoTrak\n let stss = util.findBox(videoTrak, 'stss')\n let frames = this.getSamplesByOrders('video', stss.entries.map(item => item - 1))\n this._videoFrames = frames\n return frames\n }\n\n get audioKeyFrames () {\n if (this._audioFrames) {\n return this._audioFrames\n }\n let videoScale = util.findBox(this.videoTrak, 'mdhd').timescale\n let audioScale = util.findBox(this.audioTrak, 'mdhd').timescale\n let audioStts = util.findBox(this.audioTrak, 'stts').entry\n let videoFrames = this.videoKeyFrames\n let audioIndex = []\n audioIndex = videoFrames.map(item => {\n return util.seekOrderSampleByTime(audioStts, audioScale, item.time.time / videoScale)\n })\n this._audioFrames = audioIndex\n return this._audioFrames\n }\n\n packMeta () {\n if (!this.meta) {\n return\n }\n let buffer = new Buffer()\n buffer.write(FMP4.ftyp())\n buffer.write(FMP4.moov(this.meta))\n this.cache.write(buffer.buffer)\n return buffer.buffer\n }\n\n seek (time) {\n let timeStart = time * this.meta.videoTimeScale\n let fragIndex\n\n let videoFrames = this.videoKeyFrames\n\n let audioFrames = this.audioKeyFrames\n videoFrames.every((item, idx) => {\n let nowTime = item.time.time\n\n let nextTime = videoFrames[idx + 1]\n ? videoFrames[idx + 1].time.time\n : Number.MAX_SAFE_INTEGER\n if (nowTime <= timeStart && timeStart < nextTime) {\n fragIndex = idx\n return false\n } else {\n return true\n }\n })\n audioFrames.every((item, idx) => {\n let nowTime = item.startTime\n\n let nextTime = audioFrames[idx + 1]\n ? audioFrames[idx + 1].startTime\n : Number.MAX_SAFE_INTEGER\n if (nowTime <= timeStart && timeStart < nextTime) {\n fragIndex = Math.min(idx, fragIndex)\n return false\n } else {\n return true\n }\n })\n if (this.bufferCache.has(fragIndex)) {\n return Promise.resolve(null)\n } else {\n return this.loadFragment(fragIndex)\n }\n }\n loadFragment (fragIndex) {\n let start,\n end\n let videoFrame = this.videoKeyFrames[fragIndex]\n let audioFrame = this.getSamplesByOrders('audio', this.audioKeyFrames[fragIndex].order, 0)\n start = Math.min(videoFrame.offset, audioFrame.offset)\n if (fragIndex < this.videoKeyFrames.length - 1) {\n let videoNextFrame = this.videoKeyFrames[fragIndex + 1]\n let audioNextFrame = this.getSamplesByOrders('audio', this.audioKeyFrames[fragIndex + 1].order, 0)\n end = Math.max(videoNextFrame.offset, audioNextFrame.offset)\n }\n let self = this\n if (window.isNaN(start) || (end !== undefined && window.isNaN(end))) {\n self.emit('error', new Errors('parse', '', { line: 366, handle: '[MP4] loadFragment', url: self.url }))\n return false\n }\n if (this.bufferCache.has(fragIndex)) {\n return Promise.resolve(null)\n } else {\n return this.getData(\n start + self.mdatStart, end\n ? self.mdatStart + end\n : '').then((dat) => {\n return self.createFragment(new Uint8Array(dat), start, fragIndex)\n })\n }\n }\n addFragment (data) {\n let buffer = new Buffer()\n buffer.write(FMP4.moof(data))\n buffer.write(FMP4.mdat(data))\n this.cache.write(buffer.buffer)\n return buffer.buffer\n }\n createFragment (mdatData, start, fragIndex) {\n let self = this\n let resBuffers = []\n this.bufferCache.add(fragIndex)\n {\n let framesIndex = self.videoKeyFrames.map((item) => item.idx)\n let _samples = self.getSamplesByOrders('video', framesIndex[fragIndex], framesIndex[fragIndex + 1])\n let samples = _samples.map((item, idx) => {\n return {\n size: item.size,\n duration: item.time.duration,\n offset: item.time.offset,\n buffer: new Uint8Array(mdatData.slice(item.offset - start, item.offset - start + item.size)),\n key: idx === 0\n }\n })\n resBuffers.push(this.addFragment({id: 1, time: _samples[0].time.time, firstFlags: 0x2000000, flags: 0xf01, samples}))\n }\n let _samples = this.getSamplesByOrders(\n 'audio', this.audioKeyFrames[fragIndex].order, this.audioKeyFrames[fragIndex + 1]\n ? this.audioKeyFrames[fragIndex + 1].order\n : undefined)\n let samples = _samples.map((item, idx) => {\n return {\n size: item.size,\n duration: item.time.duration,\n offset: item.time.offset,\n buffer: new Uint8Array(mdatData.slice(item.offset - start, item.offset - start + item.size)),\n key: idx === 0\n }\n })\n resBuffers.push(this.addFragment({id: 2, time: _samples[0].time.time, firstFlags: 0x00, flags: 0x701, samples: samples}))\n\n let bufferSize = 0\n resBuffers.every(item => {\n bufferSize += item.byteLength\n return true\n })\n let buffer = new Uint8Array(bufferSize)\n\n let offset = 0\n resBuffers.every(item => {\n buffer.set(item, offset)\n offset += item.byteLength\n return true\n })\n return Promise.resolve(buffer)\n }\n\n download () {\n // new Download('fmp4.mp4', this.cache.buffer)\n }\n\n cut (start, end) {\n let self = this\n this.bufferCache.clear()\n let timeStart = start * this.meta.videoTimeScale\n let timeEnd = end * this.meta.videoTimeScale\n let fragIndexStart\n let fragIndexEnd\n\n let videoFrames = this.videoKeyFrames\n let audioFrames = this.audioKeyFrames\n videoFrames.every((item, idx) => {\n let nowTime = item.time.time\n\n let nextTime = videoFrames[idx + 1]\n ? videoFrames[idx + 1].time.time\n : Number.MAX_SAFE_INTEGER\n if (nowTime <= timeStart && timeStart < nextTime) {\n fragIndexStart = idx\n return true\n } else if (nowTime <= timeEnd && timeEnd < nextTime) {\n fragIndexEnd = idx\n return false\n } else {\n return true\n }\n })\n audioFrames.every((item, idx) => {\n let nowTime = item.startTime\n\n let nextTime = audioFrames[idx + 1]\n ? audioFrames[idx + 1].startTime\n : Number.MAX_SAFE_INTEGER\n if (nowTime <= timeStart && timeStart < nextTime) {\n fragIndexStart = Math.min(idx, fragIndexStart)\n return true\n } else if (nowTime <= timeEnd && timeEnd < nextTime) {\n fragIndexEnd = Math.min(idx, fragIndexEnd)\n return false\n } else {\n return true\n }\n })\n if (!fragIndexEnd) {\n fragIndexEnd = videoFrames.length\n }\n return self.loadFragmentForCut(fragIndexStart, fragIndexEnd)\n }\n loadFragmentForCut (fragIndexStart, fragIndexEnd) {\n let start,\n end\n let videoStartFrame = this.videoKeyFrames[fragIndexStart]\n let audioStartFrame = this.getSamplesByOrders('audio', this.audioKeyFrames[fragIndexStart].order, 0)\n start = Math.min(videoStartFrame.offset, audioStartFrame.offset)\n let videoEndFrame = this.videoKeyFrames[fragIndexEnd]\n let audioEndFrame = this.getSamplesByOrders('audio', this.audioKeyFrames[fragIndexEnd].order, 0)\n end = Math.max(videoEndFrame.offset, audioEndFrame.offset)\n let self = this\n if (window.isNaN(start) || (end !== undefined && window.isNaN(end))) {\n self.emit('error', new Errors('parse', '', { line: 366, handle: '[MP4] loadFragment', url: self.url }))\n return false\n }\n return this.getData(\n start + self.mdatStart, end\n ? self.mdatStart + end\n : '').then((dat) => {\n return self.createFragmentForCut(new Uint8Array(dat), start, fragIndexStart, end, fragIndexEnd)\n })\n }\n createFragmentForCut (mdatData, start, fragIndexStart, end, fragIndexEnd) {\n let self = this\n let resBuffers = []\n {\n let framesIndex = self.videoKeyFrames.map((item) => item.idx)\n let _samples = self.getSamplesByOrders('video', framesIndex[fragIndexStart], framesIndex[fragIndexEnd])\n let samples = _samples.map((item, idx) => {\n return {\n size: item.size,\n duration: item.time.duration,\n offset: item.time.offset,\n buffer: new Uint8Array(mdatData.slice(item.offset - start, item.offset - start + item.size)),\n key: idx === 0\n }\n })\n resBuffers.push(this.addFragment({id: 1, time: 0, firstFlags: 0x2000000, flags: 0xf01, samples}))\n }\n let _samples = this.getSamplesByOrders(\n 'audio', this.audioKeyFrames[fragIndexStart].order, this.audioKeyFrames[fragIndexEnd]\n ? this.audioKeyFrames[fragIndexEnd].order\n : undefined)\n let samples = _samples.map((item, idx) => {\n return {\n size: item.size,\n duration: item.time.duration,\n offset: item.time.offset,\n buffer: new Uint8Array(mdatData.slice(item.offset - start, item.offset - start + item.size)),\n key: idx === 0\n }\n })\n resBuffers.push(this.addFragment({id: 2, time: 0, firstFlags: 0x00, flags: 0x701, samples: samples}))\n\n let bufferSize = 0\n resBuffers.every(item => {\n bufferSize += item.byteLength\n return true\n })\n let buffer = new Uint8Array(bufferSize)\n\n let offset = 0\n resBuffers.every(item => {\n buffer.set(item, offset)\n offset += item.byteLength\n return true\n })\n return Promise.resolve(buffer)\n }\n}\n\nexport default MP4\n","\"use strict\";\n\nvar isValue = require(\"type/value/is\")\n , isPlainFunction = require(\"type/plain-function/is\")\n , assign = require(\"es5-ext/object/assign\")\n , normalizeOpts = require(\"es5-ext/object/normalize-options\")\n , contains = require(\"es5-ext/string/#/contains\");\n\nvar d = (module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif (arguments.length < 2 || typeof dscr !== \"string\") {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (isValue(dscr)) {\n\t\tc = contains.call(dscr, \"c\");\n\t\te = contains.call(dscr, \"e\");\n\t\tw = contains.call(dscr, \"w\");\n\t} else {\n\t\tc = w = true;\n\t\te = false;\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n});\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== \"string\") {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (!isValue(get)) {\n\t\tget = undefined;\n\t} else if (!isPlainFunction(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (!isValue(set)) {\n\t\tset = undefined;\n\t} else if (!isPlainFunction(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (isValue(dscr)) {\n\t\tc = contains.call(dscr, \"c\");\n\t\te = contains.call(dscr, \"e\");\n\t} else {\n\t\tc = true;\n\t\te = false;\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n","\"use strict\";\n\nvar isFunction = require(\"../function/is\");\n\nvar classRe = /^\\s*class[\\s{/}]/, functionToString = Function.prototype.toString;\n\nmodule.exports = function (value) {\n\tif (!isFunction(value)) return false;\n\tif (classRe.test(functionToString.call(value))) return false;\n\treturn true;\n};\n","\"use strict\";\n\nvar isPrototype = require(\"../prototype/is\");\n\nmodule.exports = function (value) {\n\tif (typeof value !== \"function\") return false;\n\n\tif (!hasOwnProperty.call(value, \"length\")) return false;\n\n\ttry {\n\t\tif (typeof value.length !== \"number\") return false;\n\t\tif (typeof value.call !== \"function\") return false;\n\t\tif (typeof value.apply !== \"function\") return false;\n\t} catch (error) {\n\t\treturn false;\n\t}\n\n\treturn !isPrototype(value);\n};\n","\"use strict\";\n\nvar isObject = require(\"../object/is\");\n\nmodule.exports = function (value) {\n\tif (!isObject(value)) return false;\n\ttry {\n\t\tif (!value.constructor) return false;\n\t\treturn value.constructor.prototype === value;\n\t} catch (error) {\n\t\treturn false;\n\t}\n};\n","\"use strict\";\n\nvar isValue = require(\"../value/is\");\n\n// prettier-ignore\nvar possibleTypes = { \"object\": true, \"function\": true, \"undefined\": true /* document.all */ };\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) return false;\n\treturn hasOwnProperty.call(possibleTypes, typeof value);\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.assign : require(\"./shim\");\n","\"use strict\";\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== \"function\") return false;\n\tobj = { foo: \"raz\" };\n\tassign(obj, { bar: \"dwa\" }, { trzy: \"trzy\" });\n\treturn obj.foo + obj.bar + obj.trzy === \"razdwatrzy\";\n};\n","\"use strict\";\n\nvar keys = require(\"../keys\")\n , value = require(\"../valid-value\")\n , max = Math.max;\n\nmodule.exports = function (dest, src/*, …srcn*/) {\n\tvar error, i, length = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry {\n\t\t\tdest[key] = src[key];\n\t\t} catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < length; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.keys : require(\"./shim\");\n","\"use strict\";\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys(\"primitive\");\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n","\"use strict\";\n\nvar isValue = require(\"../is-value\");\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) { return keys(isValue(object) ? Object(object) : object); };\n","\"use strict\";\n\n// eslint-disable-next-line no-empty-function\nmodule.exports = function () {};\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function (opts1/*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (!isValue(options)) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? String.prototype.contains : require(\"./shim\");\n","\"use strict\";\n\nvar str = \"razdwatrzy\";\n\nmodule.exports = function () {\n\tif (typeof str.contains !== \"function\") return false;\n\treturn str.contains(\"dwa\") === true && str.contains(\"foo\") === false;\n};\n","\"use strict\";\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\n","\"use strict\";\n\nmodule.exports = function (fn) {\n\tif (typeof fn !== \"function\") throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\n","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","import Box from './box'\nimport Concat from 'concat-typed-array'\nimport Stream from './stream'\nimport * as SubBox from './box/*.js'\n\nclass Parse {\n constructor (buffer) {\n this.buffer = null\n this.boxes = []\n this.nextBox = null\n this.start = 0\n let self = this\n if (self.buffer) {\n Concat(Uint8Array, self.buffer, buffer)\n } else {\n self.buffer = buffer\n }\n let bufferLength = buffer.byteLength\n buffer.position = 0\n let stream = new Stream(buffer)\n while (bufferLength - stream.position >= 8) {\n let box = new Box()\n box.readHeader(stream)\n if (box.size - 8 <= (bufferLength - stream.position)) {\n box.readBody(stream)\n self.boxes.push(box)\n } else {\n if (box.type === 'mdat') {\n box.readBody(stream)\n self.boxes.push(box)\n } else {\n self.nextBox = box\n stream.position -= 8\n break\n }\n }\n }\n self.buffer = new Uint8Array(self.buffer.slice(stream.position))\n }\n}\n\nexport default Parse\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (ResultConstructor) {\n var totalLength = 0;\n\n for (var _len = arguments.length, arrays = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n arrays[_key - 1] = arguments[_key];\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = arrays[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var arr = _step.value;\n\n totalLength += arr.length;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var result = new ResultConstructor(totalLength);\n var offset = 0;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = arrays[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _arr = _step2.value;\n\n result.set(_arr, offset);\n offset += _arr.length;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return result;\n};","import Box from '../box'\nimport Stream from '../stream'\n\nBox.vmhd = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = [stream.readUint8(), stream.readUint8(), stream.readUint8()]\n this.graphicsmode = stream.readUint16()\n this.opcolor = [stream.readUint16(), stream.readUint16(), stream.readUint16()]\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\nBox['url '] = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = [stream.readUint8(), stream.readUint8(), stream.readUint8()]\n let location = []; let length = stream.buffer.byteLength\n while (stream.position < length) {\n location.push(stream.readUint8())\n }\n this.location = location\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nBox.udta = function () {\n delete this.subBox\n}\n","import Box from '../box'\nimport Stream from '../stream'\nimport UTC from '../date'\n\nBox.tkhd = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3, 0)\n if (this.version === 1) {\n this.create = stream.readUint64()\n this.modify = stream.readUint64()\n this.createTime = new UTC().setTime(this.create * 1000)\n this.modifyTime = new UTC().setTime(this.modify * 1000)\n this.trackID = stream.readUint32()\n this.reserverd = stream.readUint32()\n this.duration = stream.readUint64()\n } else {\n this.create = stream.readUint32()\n this.modify = stream.readUint32()\n this.createTime = new UTC().setTime(this.create * 1000)\n this.modifyTime = new UTC().setTime(this.modify * 1000)\n this.trackID = stream.readUint32()\n this.reserverd = stream.readUint32()\n this.duration = stream.readUint32()\n }\n stream.readUint64()\n this.layer = stream.readInt16()\n this.alternate_group = stream.readInt16()\n this.volume = stream.readInt16() >> 8\n stream.readUint16()\n // 视频转换矩阵\n let matrix = []\n for (let i = 0; i < 9; i++) {\n matrix.push(stream.readUint16() + '.' + stream.readUint16())\n }\n this.matrix = matrix\n this.width = stream.readUint16() + '.' + stream.readUint16()\n this.height = stream.readUint16() + '.' + stream.readUint16()\n delete this.data\n delete this.subBox\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.stts = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n this.count = stream.readUint32()\n let entry = []\n for (let i = 0, count = this.count; i < count; i++) {\n entry.push({\n sampleCount: stream.readUint32(),\n sampleDuration: stream.readUint32()\n })\n }\n this.entry = entry\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.stsz = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n this.sampleSize = stream.readUint32()\n this.count = stream.readUint32()\n let entries = []\n this.entries = entries\n for (let i = 0, count = this.count; i < count; i++) {\n entries.push(stream.readUint32())\n }\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.stss = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n this.count = stream.readUint32()\n let entries = []\n this.entries = entries\n for (let i = 0, count = this.count; i < count; i++) {\n entries.push(stream.readUint32())\n }\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\nBox.stsd = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n this.entryCount = stream.readUint32()\n let box = new Box()\n box.readHeader(stream)\n this.subBox.push(box)\n box.readBody(stream)\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.stsc = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n this.count = stream.readUint32()\n let entries = []\n this.entries = entries\n for (let i = 0, count = this.count; i < count; i++) {\n entries.push({\n first_chunk: stream.readUint32(),\n samples_per_chunk: stream.readUint32(),\n sample_desc_index: stream.readUint32()\n })\n }\n for (let i = 0, count = this.count, entry, preEntry; i < count - 1; i++) {\n entry = entries[i]\n preEntry = entries[i - 1]\n entry.chunk_count = entries[i + 1].first_chunk - entry.first_chunk\n entry.first_sample = i === 0 ? 1 : preEntry.first_sample + preEntry.chunk_count * preEntry.samples_per_chunk\n }\n if (this.count === 1) {\n let entry = entries[0]\n entry.first_sample = 1\n entry.chunk_count = 0\n } else if (this.count > 1) {\n let last = entries[this.count - 1]; let pre = entries[this.count - 2]\n last.first_sample = pre.first_sample + pre.chunk_count * pre.samples_per_chunk\n last.chunk_count = 0\n }\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.stco = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n this.count = stream.readUint32()\n let entries = []\n this.entries = entries\n for (let i = 0, count = this.count; i < count; i++) {\n entries.push(stream.readUint32())\n }\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.smhd = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n this.balance = stream.readInt8() + '.' + stream.readInt8()\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\n\nBox.SLConfigDescriptor = function (stream) {\n let box = new Box()\n let size\n box.type = stream.readUint8()\n size = stream.readUint8()\n if (size === 0x80) {\n box.extend = true\n stream.skip(2)\n size = stream.readUint8() + 5\n } else {\n size += 2\n }\n box.size = size\n box.SL = stream.readUint8()\n delete box.subBox\n return box\n}\n","import Box from '../box'\nimport Stream from '../stream'\nBox.pasp = function () {\n let stream = new Stream(this.data)\n this.content = stream.buffer.slice(0, this.size - 8)\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\nimport UTC from '../date'\n\nBox.mvhd = function () {\n let stream = new Stream(this.data)\n\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n this.create = stream.readUint32()\n this.modify = stream.readUint32()\n this.createTime = new UTC().setTime(this.create * 1000)\n this.modifyTime = new UTC().setTime(this.modify * 1000)\n this.timeScale = stream.readUint32()\n this.duration = stream.readUint32()\n this.rate = stream.readUint16() + '.' + stream.readUint16()\n this.volume = stream.readUint8() + '.' + stream.readUint8()\n // 越过保留的10字节\n Stream.readByte(stream.dataview, 8)\n Stream.readByte(stream.dataview, 2)\n // 视频转换矩阵\n let matrix = []\n for (let i = 0; i < 9; i++) {\n matrix.push(stream.readUint16() + '.' + stream.readUint16())\n }\n this.matrix = matrix\n Stream.readByte(stream.dataview, 24)\n this.nextTrackID = stream.readUint32()\n delete this.subBox\n delete this.data\n}\n","import Box from '../box'\n\nBox.MP4ESDescrTag = function (stream) {\n let box = new Box()\n let size\n box.type = stream.readUint8()\n size = stream.readUint8()\n if (size === 0x80) {\n box.extend = true\n stream.skip(2)\n size = stream.readUint8() + 5\n } else {\n size += 2\n }\n box.size = size\n box.esID = stream.readUint16()\n box.priority = stream.readUint8()\n box.subBox.push(Box.MP4DecConfigDescrTag(stream))\n box.subBox.push(Box.SLConfigDescriptor(stream))\n return box\n}\n","import Box from '../box'\n\nBox.MP4DecSpecificDescrTag = function (stream) {\n let box = new Box()\n let size, dataSize\n box.type = stream.readUint8()\n size = stream.readUint8()\n if (size === 0x80) {\n box.extend = true\n stream.skip(2)\n size = stream.readUint8() + 5\n dataSize = size - 5\n } else {\n dataSize = size\n size += 2\n }\n box.size = size\n let EScode = []\n for (let i = 0; i < dataSize; i++) {\n EScode.push(Number(stream.readUint8()).toString(16).padStart(2, '0'))\n }\n box.EScode = EScode\n delete box.subBox\n return box\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.MP4DecConfigDescrTag = function (stream) {\n let box = new Box()\n let size\n box.type = stream.readUint8()\n size = stream.readUint8()\n if (size === 0x80) {\n box.extend = true\n stream.skip(2)\n size = stream.readUint8() + 5\n } else {\n size += 2\n }\n box.size = size\n box.typeID = stream.readUint8()\n // 6 bits stream type,1 bit upstream flag,1 bit reserved flag\n box.streamUint = stream.readUint8()\n box.bufferSize = Stream.readByte(stream.dataview, 3)\n box.maximum = stream.readUint32()\n box.average = stream.readUint32()\n box.subBox.push(Box.MP4DecSpecificDescrTag(stream))\n return box\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.mp4a = function () {\n let stream = new Stream(this.data)\n stream.skip(6)\n this.dataReferenceIndex = stream.readUint16()\n stream.skip(8)\n this.channelCount = stream.readUint16()\n this.sampleSize = stream.readUint16()\n stream.skip(4)\n this.sampleRate = stream.readUint32() >> 16\n let box = new Box()\n box.readHeader(stream)\n this.subBox.push(box)\n box.readBody(stream)\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\nimport UTC from '../date'\n\nBox.mdhd = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n if (this.version === 1) {\n this.create = stream.readUint64()\n this.modify = stream.readUint64()\n this.createTime = new UTC().setTime(this.create * 1000)\n this.modifyTime = new UTC().setTime(this.modify * 1000)\n this.timescale = stream.readUint32()\n this.duration = stream.readUint64()\n } else {\n this.create = stream.readUint32()\n this.modify = stream.readUint32()\n this.createTime = new UTC().setTime(this.create * 1000)\n this.modifyTime = new UTC().setTime(this.modify * 1000)\n this.timescale = stream.readUint32()\n this.duration = stream.readUint32()\n }\n this.language = stream.readUint16()\n stream.readUint16()\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\n\nBox.mdat = function () {\n delete this.subBox\n}\n","import Box from '../box'\nimport Stream from '../stream'\nBox.iods = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n let content = []\n let length = stream.buffer.byteLength\n while (stream.position < length) {\n content.push(stream.readUint8())\n }\n this.content = content\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.hdlr = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n stream.skip(4)\n this.handleType = `${String.fromCharCode(stream.readUint8())}${String.fromCharCode(stream.readUint8())}${String.fromCharCode(stream.readUint8())}${String.fromCharCode(stream.readUint8())}`\n stream.skip(12)\n let name = []\n while (stream.position < this.size - 8) {\n name.push(String.fromCharCode(stream.readUint8()))\n }\n this.name = name.join('')\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.ftyp = function () {\n let stream = new Stream(this.data)\n this.major_brand = String.fromCharCode(stream.readUint8(), stream.readUint8(), stream.readUint8(), stream.readUint8())\n this.minor_version = stream.readUint32()\n let compatibleBrands = []\n for (let i = 0, len = Math.floor((stream.buffer.byteLength - 8) / 4); i < len; i++) {\n compatibleBrands.push(String.fromCharCode(stream.readUint8(), stream.readUint8(), stream.readUint8(), stream.readUint8()))\n }\n this.compatible_brands = compatibleBrands\n stream = null\n delete this.subBox\n delete this.data\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.esds = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n let box = Box.MP4ESDescrTag(stream)\n this.subBox.push(box)\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.elst = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n let entries = []\n let entry_count = stream.readUint32()\n this.entries = entries\n for (let i = 0; i < entry_count; i++) {\n let entry = {}\n entries.push(entry)\n if (this.version === 1) {\n entry.segment_duration = stream.readUint64()\n entry.media_time = stream.readUint64()\n } else {\n entry.segment_duration = stream.readUint32()\n entry.media_time = stream.readInt32()\n }\n entry.media_rate_integer = stream.readInt16()\n entry.media_rate_fraction = stream.readInt16()\n }\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.dref = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n let entryCount = stream.readUint32()\n this.entryCount = entryCount\n let self = this\n // 暂时不支持离散视频,视频的部分内容由url指定\n for (let i = 0; i < entryCount; i++) {\n let box = new Box()\n self.subBox.push(box)\n box.read(stream)\n }\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.ctts = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n\n this.entryCount = stream.readUint32()\n let entry = []\n this.entry = entry\n for (let i = 0, count = this.entryCount; i < count; i++) {\n entry.push({\n count: stream.readUint32(),\n offset: stream.readUint32()\n })\n }\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.co64 = function () {\n let stream = new Stream(this.data)\n this.version = stream.readUint8()\n this.flag = Stream.readByte(stream.dataview, 3)\n this.count = stream.readUint32()\n let entries = []\n this.entries = entries\n for (let i = 0, count = this.count; i < count; i++) {\n entries.push(stream.readUint64())\n }\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\nBox.btrt = function () {\n let stream = new Stream(this.data)\n this.bufferSizeDB = stream.readUint32()\n this.maxBitrate = stream.readUint32()\n this.avgBitrate = stream.readUint32()\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\nBox.avcC = function () {\n let stream = new Stream(this.data)\n this.configVersion = stream.readUint8()\n this.profile = stream.readUint8()\n this.profileCompatibility = stream.readUint8()\n this.AVCLevelIndication = stream.readUint8()\n this.lengthSizeMinusOne = (stream.readUint8() & 3) + 1\n this.numOfSequenceParameterSets = stream.readUint8() & 31\n let sequenceLength = stream.readUint16()\n this.sequenceLength = sequenceLength\n let sequence = []\n for (let i = 0; i < sequenceLength; i++) {\n sequence.push(Number(stream.readUint8()).toString(16))\n }\n this.ppsCount = stream.readUint8()\n let ppsLength = stream.readUint16()\n this.ppsLength = ppsLength\n let pps = []\n for (let i = 0; i < ppsLength; i++) {\n pps.push(Number(stream.readUint8()).toString(16))\n }\n this.pps = pps\n this.sequence = sequence\n let last = []; let dataviewLength = stream.dataview.byteLength\n while (stream.position < dataviewLength) {\n last.push(stream.readUint8())\n }\n this.last = last\n delete this.subBox\n delete this.data\n stream = null\n}\n","import Box from '../box'\nimport Stream from '../stream'\n\nBox.avc1 = function () {\n let stream = new Stream(this.data)\n let self = this\n stream.skip(6)\n this.dataReferenceIndex = stream.readUint16()\n stream.skip(16)\n this.width = stream.readUint16()\n this.height = stream.readUint16()\n this.horizresolution = stream.readUint32()\n this.vertresolution = stream.readUint32()\n stream.skip(4)\n this.frameCount = stream.readUint16()\n stream.skip(1)\n for (let i = 0; i < 31; i++) {\n String.fromCharCode(stream.readUint8())\n }\n this.depth = stream.readUint16()\n stream.skip(2)\n while (stream.position < stream.buffer.byteLength) {\n let box = new Box()\n box.readHeader(stream)\n self.subBox.push(box)\n box.readBody(stream)\n }\n delete this.data\n stream = null\n}\n","import Buffer from './buffer'\nconst UINT32_MAX = Math.pow(2, 32) - 1\nclass FMP4 {\n static type (name) {\n return new Uint8Array([name.charCodeAt(0), name.charCodeAt(1), name.charCodeAt(2), name.charCodeAt(3)])\n }\n static size (value) {\n return Buffer.writeUint32(value)\n }\n static extension (version, flag) {\n return new Uint8Array([\n version,\n (flag >> 16) & 0xff,\n (flag >> 8) & 0xff,\n flag & 0xff\n ])\n }\n static ftyp () {\n let buffer = new Buffer()\n buffer.write(FMP4.size(24), FMP4.type('ftyp'), new Uint8Array([\n 0x69, 0x73, 0x6F, 0x6D, // isom,\n 0x0, 0x0, 0x00, 0x01, // minor_version: 0x01\n 0x69, 0x73, 0x6F, 0x6D, // isom\n 0x61, 0x76, 0x63, 0x31 // avc1\n ]))\n return buffer.buffer\n }\n static moov (data) {\n let buffer = new Buffer(); let size = 8\n let mvhd = FMP4.mvhd(data.duration, data.timeScale)\n let trak1 = FMP4.videoTrak(data)\n let trak2 = FMP4.audioTrak(data)\n let mvex = FMP4.mvex(data.duration, data.timeScale);\n [mvhd, trak1, trak2, mvex].forEach(item => {\n size += item.byteLength\n })\n buffer.write(FMP4.size(size), FMP4.type('moov'), mvhd, trak1, trak2, mvex)\n return buffer.buffer\n }\n static mvhd (duration, timescale) {\n let buffer = new Buffer()\n duration *= timescale\n const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1))\n const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1))\n let bytes = new Uint8Array([\n 0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n (timescale >> 24) & 0xff,\n (timescale >> 16) & 0xff,\n (timescale >> 8) & 0xff,\n timescale & 0xff, // timescale\n (upperWordDuration >> 24),\n (upperWordDuration >> 16) & 0xff,\n (upperWordDuration >> 8) & 0xff,\n upperWordDuration & 0xff,\n (lowerWordDuration >> 24),\n (lowerWordDuration >> 16) & 0xff,\n (lowerWordDuration >> 8) & 0xff,\n lowerWordDuration & 0xff,\n 0x00, 0x01, 0x00, 0x00, // 1.0 rate\n 0x01, 0x00, // 1.0 volume\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0xff, 0xff, 0xff, 0xff // next_track_ID\n ])\n buffer.write(FMP4.size(8 + bytes.length), FMP4.type('mvhd'), new Uint8Array(bytes))\n return buffer.buffer\n }\n static videoTrak (data) {\n let buffer = new Buffer(); let size = 8\n let tkhd = FMP4.tkhd({\n id: 1,\n duration: data.videoDuration,\n timescale: data.videoTimeScale,\n width: data.width,\n height: data.height,\n type: 'video'\n })\n let mdia = FMP4.mdia({\n type: 'video',\n timescale: data.videoTimeScale,\n duration: data.videoDuration,\n sps: data.sps,\n pps: data.pps,\n pixelRatio: data.pixelRatio,\n width: data.width,\n height: data.height\n });\n [tkhd, mdia].forEach(item => {\n size += item.byteLength\n })\n buffer.write(FMP4.size(size), FMP4.type('trak'), tkhd, mdia)\n return buffer.buffer\n }\n static audioTrak (data) {\n let buffer = new Buffer(); let size = 8\n let tkhd = FMP4.tkhd({\n id: 2,\n duration: data.audioDuration,\n timescale: data.audioTimeScale,\n width: 0,\n height: 0,\n type: 'audio'\n })\n let mdia = FMP4.mdia({\n type: 'audio',\n timescale: data.audioTimeScale,\n duration: data.audioDuration,\n channelCount: data.channelCount,\n samplerate: data.sampleRate,\n audioConfig: data.audioConfig\n });\n [tkhd, mdia].forEach(item => {\n size += item.byteLength\n })\n buffer.write(FMP4.size(size), FMP4.type('trak'), tkhd, mdia)\n return buffer.buffer\n }\n static tkhd (data) {\n let buffer = new Buffer()\n let id = data.id\n\n let duration = data.duration * data.timeScale\n\n let width = data.width\n\n let height = data.height\n\n let type = data.type\n\n let upperWordDuration = Math.floor(duration / (UINT32_MAX + 1))\n\n let lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1))\n let content = new Uint8Array([\n 0x01, // version 1\n 0x00, 0x00, 0x07, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n (id >> 24) & 0xff,\n (id >> 16) & 0xff,\n (id >> 8) & 0xff,\n id & 0xff, // track_ID\n 0x00, 0x00, 0x00, 0x00, // reserved\n (upperWordDuration >> 24),\n (upperWordDuration >> 16) & 0xff,\n (upperWordDuration >> 8) & 0xff,\n upperWordDuration & 0xff,\n (lowerWordDuration >> 24),\n (lowerWordDuration >> 16) & 0xff,\n (lowerWordDuration >> 8) & 0xff,\n lowerWordDuration & 0xff,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, // layer\n 0x00, type === 'video' ? 0x01 : 0x00, // alternate_group\n type === 'audio' ? 0x01 : 0x00, 0x00, // non-audio track volume\n 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n (width >> 8) & 0xff,\n width & 0xff,\n 0x00, 0x00, // width\n (height >> 8) & 0xff,\n height & 0xff,\n 0x00, 0x00 // height\n ])\n buffer.write(FMP4.size(8 + content.byteLength), FMP4.type('tkhd'), content)\n return buffer.buffer\n }\n static edts (data) {\n let buffer = new Buffer(); let duration = data.duration; let mediaTime = data.mediaTime\n buffer.write(FMP4.size(36), FMP4.type('edts'))\n // elst\n buffer.write(FMP4.size(28), FMP4.type('elst'))\n buffer.write(new Uint8Array([\n 0x00, 0x00, 0x00, 0x01, // entry count\n (duration >> 24) & 0xff, (duration >> 16) & 0xff, (duration >> 8) & 0xff, duration & 0xff,\n (mediaTime >> 24) & 0xff, (mediaTime >> 16) & 0xff, (mediaTime >> 8) & 0xff, mediaTime & 0xff,\n 0x00, 0x00, 0x00, 0x01 // media rate\n ]))\n return buffer.buffer\n }\n static mdia (data) {\n let buffer = new Buffer(); let size = 8\n let mdhd = FMP4.mdhd(data.timescale)\n let hdlr = FMP4.hdlr(data.type)\n let minf = FMP4.minf(data);\n [mdhd, hdlr, minf].forEach(item => {\n size += item.byteLength\n })\n buffer.write(FMP4.size(size), FMP4.type('mdia'), mdhd, hdlr, minf)\n return buffer.buffer\n }\n static mdhd (timescale, duration = 0) {\n let buffer = new Buffer()\n duration *= timescale\n const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1))\n const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1))\n let content = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n (timescale >> 24) & 0xff, (timescale >> 16) & 0xff, (timescale >> 8) & 0xff, timescale & 0xff,\n (upperWordDuration >> 24),\n (upperWordDuration >> 16) & 0xff,\n (upperWordDuration >> 8) & 0xff,\n upperWordDuration & 0xff,\n (lowerWordDuration >> 24),\n (lowerWordDuration >> 16) & 0xff,\n (lowerWordDuration >> 8) & 0xff,\n lowerWordDuration & 0xff,\n 0x55, 0xc4, // 'und' language\n 0x00, 0x00\n ])\n buffer.write(FMP4.size(12 + content.byteLength), FMP4.type('mdhd'), FMP4.extension(1, 0), content)\n return buffer.buffer\n }\n static hdlr (type) {\n let buffer = new Buffer()\n let value = [0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x56, 0x69, 0x64, 0x65,\n 0x6f, 0x48, 0x61, 0x6e,\n 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]\n if (type === 'audio') {\n value.splice(8, 4, ...[0x73, 0x6f, 0x75, 0x6e])\n value.splice(24, 13, ...[0x53, 0x6f, 0x75, 0x6e,\n 0x64, 0x48, 0x61, 0x6e,\n 0x64, 0x6c, 0x65, 0x72, 0x00])\n }\n buffer.write(FMP4.size(8 + value.length), FMP4.type('hdlr'), new Uint8Array(value))\n return buffer.buffer\n }\n static minf (data) {\n let buffer = new Buffer(); let size = 8\n let vmhd = data.type === 'video' ? FMP4.vmhd() : FMP4.smhd()\n let dinf = FMP4.dinf()\n let stbl = FMP4.stbl(data);\n [vmhd, dinf, stbl].forEach(item => {\n size += item.byteLength\n })\n buffer.write(FMP4.size(size), FMP4.type('minf'), vmhd, dinf, stbl)\n return buffer.buffer\n }\n static vmhd () {\n let buffer = new Buffer()\n buffer.write(FMP4.size(20), FMP4.type('vmhd'), new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x01, // flags\n 0x00, 0x00, // graphicsmode\n 0x00, 0x00,\n 0x00, 0x00,\n 0x00, 0x00 // opcolor\n ]))\n return buffer.buffer\n }\n static smhd () {\n let buffer = new Buffer()\n buffer.write(FMP4.size(16), FMP4.type('smhd'), new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, // balance\n 0x00, 0x00 // reserved\n ]))\n return buffer.buffer\n }\n static dinf () {\n let buffer = new Buffer()\n let dref = [0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0c, // entry_size\n 0x75, 0x72, 0x6c, 0x20, // 'url' type\n 0x00, // version 0\n 0x00, 0x00, 0x01 // entry_flags\n ]\n buffer.write(FMP4.size(36), FMP4.type('dinf'), FMP4.size(28), FMP4.type('dref'), new Uint8Array(dref))\n return buffer.buffer\n }\n static stbl (data) {\n let buffer = new Buffer(); let size = 8\n let stsd = FMP4.stsd(data)\n let stts = FMP4.stts()\n let stsc = FMP4.stsc()\n let stsz = FMP4.stsz()\n let stco = FMP4.stco();\n [stsd, stts, stsc, stsz, stco].forEach(item => {\n size += item.byteLength\n })\n buffer.write(FMP4.size(size), FMP4.type('stbl'), stsd, stts, stsc, stsz, stco)\n return buffer.buffer\n }\n static stsd (data) {\n let buffer = new Buffer(); let content\n if (data.type === 'audio') {\n // if (!data.isAAC && data.codec === 'mp4') {\n // content = FMP4.mp3(data);\n // } else {\n //\n // }\n // 支持mp4a\n content = FMP4.mp4a(data)\n } else {\n content = FMP4.avc1(data)\n }\n buffer.write(FMP4.size(16 + content.byteLength), FMP4.type('stsd'), FMP4.extension(0, 0), new Uint8Array([0x00, 0x00, 0x00, 0x01]), content)\n return buffer.buffer\n }\n static mp4a (data) {\n let buffer = new Buffer()\n let content = new Uint8Array([\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, data.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n (data.samplerate >> 8) & 0xff,\n data.samplerate & 0xff, //\n 0x00, 0x00\n ])\n let esds = FMP4.esds(data.audioConfig)\n buffer.write(FMP4.size(8 + content.byteLength + esds.byteLength), FMP4.type('mp4a'), content, esds)\n return buffer.buffer\n }\n static esds (config = [43, 146, 8, 0]) {\n const configlen = config.length\n let buffer = new Buffer()\n let content = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n\n 0x03, // descriptor_type\n 0x17 + configlen, // length\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n\n 0x04, // descriptor_type\n 0x0f + configlen, // length\n 0x40, // codec : mpeg4_audio\n 0x15, // stream_type\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([configlen]).concat(config).concat([0x06, 0x01, 0x02]))\n buffer.write(FMP4.size(8 + content.byteLength), FMP4.type('esds'), content)\n return buffer.buffer\n }\n static avc1 (data) {\n let buffer = new Buffer(); let size = 40// 8(avc1)+8(avcc)+8(btrt)+16(pasp)\n let sps = data.sps; let pps = data.pps; let width = data.width; let height = data.height; let hSpacing = data.pixelRatio[0]; let vSpacing = data.pixelRatio[1]\n let avcc = new Uint8Array([\n 0x01, // version\n sps[1], // profile\n sps[2], // profile compatible\n sps[3], // level\n 0xfc | 3,\n 0xE0 | 1 // 目前只处理一个sps\n ].concat([sps.length >>> 8 & 0xff, sps.length & 0xff]).concat(sps).concat(1).concat([pps.length >>> 8 & 0xff, pps.length & 0xff]).concat(pps))\n let avc1 = new Uint8Array([\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, // pre_defined\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n (width >> 8) & 0xff,\n width & 0xff, // width\n (height >> 8) & 0xff,\n height & 0xff, // height\n 0x00, 0x48, 0x00, 0x00, // horizresolution\n 0x00, 0x48, 0x00, 0x00, // vertresolution\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // frame_count\n 0x12,\n 0x64, 0x61, 0x69, 0x6C, // dailymotion/hls.js\n 0x79, 0x6D, 0x6F, 0x74,\n 0x69, 0x6F, 0x6E, 0x2F,\n 0x68, 0x6C, 0x73, 0x2E,\n 0x6A, 0x73, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, // compressorname\n 0x00, 0x18, // depth = 24\n 0x11, 0x11]) // pre_defined = -1\n let btrt = new Uint8Array([\n 0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB\n 0x00, 0x2d, 0xc6, 0xc0, // maxBitrate\n 0x00, 0x2d, 0xc6, 0xc0 // avgBitrate\n ])\n let pasp = new Uint8Array([\n (hSpacing >> 24), // hSpacing\n (hSpacing >> 16) & 0xff,\n (hSpacing >> 8) & 0xff,\n hSpacing & 0xff,\n (vSpacing >> 24), // vSpacing\n (vSpacing >> 16) & 0xff,\n (vSpacing >> 8) & 0xff,\n vSpacing & 0xff\n ])\n\n buffer.write(\n FMP4.size(size + avc1.byteLength + avcc.byteLength + btrt.byteLength), FMP4.type('avc1'), avc1,\n FMP4.size(8 + avcc.byteLength), FMP4.type('avcC'), avcc,\n FMP4.size(20), FMP4.type('btrt'), btrt,\n FMP4.size(16), FMP4.type('pasp'), pasp\n )\n return buffer.buffer\n }\n static stts () {\n let buffer = new Buffer()\n let content = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ])\n buffer.write(FMP4.size(16), FMP4.type('stts'), content)\n return buffer.buffer\n }\n static stsc () {\n let buffer = new Buffer()\n let content = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ])\n buffer.write(FMP4.size(16), FMP4.type('stsc'), content)\n return buffer.buffer\n }\n static stco () {\n let buffer = new Buffer()\n let content = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ])\n buffer.write(FMP4.size(16), FMP4.type('stco'), content)\n return buffer.buffer\n }\n static stsz () {\n let buffer = new Buffer()\n let content = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ])\n buffer.write(FMP4.size(20), FMP4.type('stsz'), content)\n return buffer.buffer\n }\n static mvex (duration, timeScale) {\n let buffer = new Buffer()\n let mehd = Buffer.writeUint32(duration * timeScale)\n buffer.write(FMP4.size(88), FMP4.type('mvex'), FMP4.size(16), FMP4.type('mehd'), FMP4.extension(0, 0), mehd, FMP4.trex(1), FMP4.trex(2))\n return buffer.buffer\n }\n static trex (id) {\n let buffer = new Buffer()\n let content = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n (id >> 24),\n (id >> 16) & 0xff,\n (id >> 8) & 0xff,\n (id & 0xff), // track_ID\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ])\n buffer.write(FMP4.size(8 + content.byteLength), FMP4.type('trex'), content)\n return buffer.buffer\n }\n static moof (data) {\n let buffer = new Buffer(); let size = 8\n let mfhd = FMP4.mfhd()\n let traf = FMP4.traf(data);\n [mfhd, traf].forEach(item => {\n size += item.byteLength\n })\n buffer.write(FMP4.size(size), FMP4.type('moof'), mfhd, traf)\n return buffer.buffer\n }\n static mfhd () {\n let buffer = new Buffer()\n let content = Buffer.writeUint32(FMP4.sequence)\n FMP4.sequence += 1\n buffer.write(FMP4.size(16), FMP4.type('mfhd'), FMP4.extension(0, 0), content)\n return buffer.buffer\n }\n static traf (data) {\n let buffer = new Buffer(); let size = 8\n let tfhd = FMP4.tfhd(data.id)\n let tfdt = FMP4.tfdt(data.time)\n let sdtp = FMP4.sdtp(data)\n let trun = FMP4.trun(data, sdtp.byteLength);\n [tfhd, tfdt, sdtp, trun].forEach(item => {\n size += item.byteLength\n })\n buffer.write(FMP4.size(size), FMP4.type('traf'), tfhd, tfdt, sdtp, trun)\n return buffer.buffer\n }\n static tfhd (id) {\n let buffer = new Buffer()\n let content = Buffer.writeUint32(id)\n buffer.write(FMP4.size(16), FMP4.type('tfhd'), FMP4.extension(0, 0), content)\n return buffer.buffer\n }\n static tfdt (time) {\n let buffer = new Buffer()\n let upper = Math.floor(time / (UINT32_MAX + 1))\n\n let lower = Math.floor(time % (UINT32_MAX + 1))\n buffer.write(FMP4.size(20), FMP4.type('tfdt'), FMP4.extension(1, 0), Buffer.writeUint32(upper), Buffer.writeUint32(lower))\n return buffer.buffer\n }\n static trun (data, sdtpLength) {\n let id = data.id\n let ceil = id === 1 ? 16 : 12\n let buffer = new Buffer()\n let sampleCount = Buffer.writeUint32(data.samples.length)\n // mdat-header 8\n // moof-header 8\n // mfhd 16\n // traf-header 8\n // thhd 16\n // tfdt 20\n // trun-header 12\n // sampleCount 4\n // data-offset 4\n // samples.length\n let offset = Buffer.writeUint32(8 + 8 + 16 + 8 + 16 + 20 + 12 + 4 + 4 + ceil * data.samples.length + sdtpLength)\n buffer.write(FMP4.size(20 + ceil * data.samples.length), FMP4.type('trun'), FMP4.extension(0, data.flags), sampleCount, offset)\n data.samples.forEach((item, idx) => {\n buffer.write(Buffer.writeUint32(item.duration))\n buffer.write(Buffer.writeUint32(item.size))\n if (id === 1) {\n buffer.write(Buffer.writeUint32(item.key ? 0x02000000 : 0x01010000))\n buffer.write(Buffer.writeUint32(item.offset))\n } else {\n buffer.write(Buffer.writeUint32(0x1000000))\n }\n })\n return buffer.buffer\n }\n static sdtp (data) {\n let buffer = new Buffer()\n buffer.write(FMP4.size(12 + data.samples.length), FMP4.type('sdtp'), FMP4.extension(0, 0))\n data.samples.forEach(item => {\n buffer.write(new Uint8Array(data.id === 1 ? [item.key ? 32 : 16] : [16]))\n })\n return buffer.buffer\n }\n static mdat (data) {\n let buffer = new Buffer(); let size = 8\n data.samples.forEach(item => {\n size += item.size\n })\n buffer.write(FMP4.size(size), FMP4.type('mdat'))\n data.samples.forEach(item => {\n buffer.write(item.buffer)\n })\n return buffer.buffer\n }\n}\n\nFMP4.sequence = 1\n\nexport default FMP4\n","let util = {}\n\n/**\n * [使用递归查询指定type的box]\n * var mimeCodec = 'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"';\n * @param {Object} root [JSON对象]\n * @param {String} type [box的类型]\n * @param {?Array} type [box]\n * @return {Object|Array|undefined} [box]\n */\nutil.findBox = function (root, type, result = []) {\n if (root.type !== type) {\n if (root && root.subBox) {\n let box = root.subBox.filter(item => item.type === type)\n if (box.length) {\n box.forEach(item => result.push(item))\n } else {\n root.subBox.forEach(item => util.findBox(item, type, result))\n }\n }\n } else {\n result.push(root)\n }\n result = [].concat(result)\n return result.length > 1 ? result : result[0]\n}\n\nutil.padStart = function (str, length, pad) {\n let charstr = String(pad); let len = length >> 0; let maxlen = Math.ceil(len / charstr.length)\n let chars = []; let r = String(str)\n while (maxlen--) {\n chars.push(charstr)\n }\n return chars.join('').substring(0, len - r.length) + r\n}\n\n/**\n * [十进制转十六进制]\n * @param {Number} value [要转换的十进制数字]\n * @return {String} [十六进制]\n */\nutil.toHex = function (...value) {\n let hex = []\n value.forEach(item => {\n hex.push(util.padStart(Number(item).toString(16), 2, 0))\n })\n return hex\n}\n\n/**\n * [求和计算]\n * @param {[type]} rst [description]\n * @return {[type]} [description]\n */\nutil.sum = function (...rst) {\n let count = 0\n rst.forEach(item => { count += item })\n return count\n}\n\n/**\n * [计算音视频数据在Mdat中的偏移量]\n * @param {Array} stsc [块偏移量]\n * @param {Number} sample_order [帧次序]\n * @return {Object} [块的位置和当前帧的偏移数]\n */\nutil.stscOffset = function (stsc, sample_order) {\n let chunk_index; let samples_offset = ''\n let chunk_start = stsc.entries.filter((item) => {\n return item.first_sample <= sample_order && sample_order < item.first_sample + item.chunk_count * item.samples_per_chunk\n })[0]\n if (!chunk_start) {\n let last_chunk = stsc.entries.pop()\n stsc.entries.push(last_chunk)\n let chunk_offset = Math.floor((sample_order - last_chunk.first_sample) / last_chunk.samples_per_chunk)\n let last_chunk_index = last_chunk.first_chunk + chunk_offset\n let last_chunk_first_sample = last_chunk.first_sample + last_chunk.samples_per_chunk * chunk_offset\n return {\n chunk_index: last_chunk_index,\n samples_offset: [last_chunk_first_sample, sample_order]\n }\n } else {\n let chunk_offset = Math.floor((sample_order - chunk_start.first_sample) / chunk_start.samples_per_chunk)\n let chunk_offset_sample = chunk_start.first_sample + chunk_offset * chunk_start.samples_per_chunk\n chunk_index = chunk_start.first_chunk + chunk_offset\n samples_offset = [chunk_offset_sample, sample_order]\n return {\n chunk_index: chunk_index,\n samples_offset\n }\n }\n}\n\nutil.seekSampleOffset = function (stsc, stco, stsz, order, mdatStart) {\n let chunkOffset = util.stscOffset(stsc, order + 1)\n let result = stco.entries[chunkOffset.chunk_index - 1] + util.sum.apply(null, stsz.entries.slice(chunkOffset.samples_offset[0] - 1, chunkOffset.samples_offset[1] - 1)) - mdatStart\n if (result === undefined) {\n throw `result=${result},stco.length=${stco.entries.length},sum=${util.sum.apply(null, stsz.entries.slice(0, order))}`\n } else if (result < 0) {\n throw `result=${result},stco.length=${stco.entries.length},sum=${util.sum.apply(null, stsz.entries.slice(0, order))}`\n }\n return result\n}\n\nutil.seekSampleTime = function (stts, ctts, order) {\n let time; let duration; let count = 0; let startTime = 0; let offset = 0\n stts.entry.every(item => {\n duration = item.sampleDuration\n if (order < count + item.sampleCount) {\n time = startTime + (order - count) * item.sampleDuration\n return false\n } else {\n count += item.sampleCount\n startTime += item.sampleCount * duration\n return true\n }\n })\n if (ctts) {\n let ct = 0\n ctts.entry.every(item => {\n ct += item.count\n if (order < ct) {\n offset = item.offset\n return false\n } else {\n return true\n }\n })\n }\n if (!time) {\n time = startTime + (order - count) * duration\n }\n return {time, duration, offset}\n}\n\nutil.seekOrderSampleByTime = function (stts, timeScale, time) {\n let startTime = 0; let order = 0; let count = 0; let itemDuration\n stts.every((item, idx) => {\n itemDuration = item.sampleCount * item.sampleDuration / timeScale\n if (time <= startTime + itemDuration) {\n order = count + Math.ceil((time - startTime) * timeScale / item.sampleDuration)\n startTime = startTime + Math.ceil((time - startTime) * timeScale / item.sampleDuration) * item.sampleDuration / timeScale\n return false\n } else {\n startTime += itemDuration\n count += item.sampleCount\n return true\n }\n })\n return {order, startTime}\n}\n\nutil.seekTrakDuration = function (trak, timeScale) {\n let stts = util.findBox(trak, 'stts'); let duration = 0\n stts.entry.forEach(item => {\n duration += item.sampleCount * item.sampleDuration\n })\n return Number(duration / timeScale).toFixed(4)\n}\n\nexport default util\n","import EventEmitter from 'event-emitter'\nimport Errors from '../error'\n\nclass MSE {\n constructor (codecs = 'video/mp4; codecs=\"avc1.64001E, mp4a.40.5\"') {\n let self = this\n EventEmitter(this)\n this.codecs = codecs\n this.mediaSource = new window.MediaSource()\n this.url = window.URL.createObjectURL(this.mediaSource)\n this.queue = []\n this.updating = false\n this.mediaSource.addEventListener('sourceopen', function () {\n self.sourceBuffer = self.mediaSource.addSourceBuffer(self.codecs)\n self.sourceBuffer.addEventListener('error', function (e) {\n self.emit('error', new Errors('mse', '', {line: 16, handle: '[MSE] constructor sourceopen', msg: e.message}))\n })\n self.sourceBuffer.addEventListener('updateend', function (e) {\n self.emit('updateend')\n let buffer = self.queue.shift()\n if (buffer && self.sourceBuffer && !self.sourceBuffer.updating && self.state === 'open') {\n self.sourceBuffer.appendBuffer(buffer)\n }\n })\n self.emit('sourceopen')\n })\n this.mediaSource.addEventListener('sourceclose', function () {\n self.emit('sourceclose')\n })\n }\n\n get state () {\n return this.mediaSource.readyState\n }\n\n get duration () {\n return this.mediaSource.duration\n }\n\n set duration (value) {\n this.mediaSource.duration = value\n }\n\n appendBuffer (buffer) {\n let sourceBuffer = this.sourceBuffer\n if (sourceBuffer && !sourceBuffer.updating && this.state === 'open') {\n sourceBuffer.appendBuffer(buffer)\n return true\n } else {\n this.queue.push(buffer)\n return false\n }\n }\n\n removeBuffer (start, end) {\n this.sourceBuffer.remove(start, end)\n }\n\n endOfStream () {\n if (this.state === 'open') {\n this.mediaSource.endOfStream()\n }\n }\n\n static isSupported (codecs) {\n return window.MediaSource && window.MediaSource.isTypeSupported(codecs)\n }\n}\n\nexport default MSE\n"],"sourceRoot":""}