diff --git a/16747.async.js b/16747.async.js index 87d990031e..f849fca1e3 100644 --- a/16747.async.js +++ b/16747.async.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[16747],{16747:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(79800),c=n.n(r),o=n(7557),u=n.n(o),i=n(41498),s=n.n(i),a=n(59301),l=n(8591),d=n(38854),v=n(52923),m=n(45071),p=n(14533),h=n(56102),f=n(33316),y={watermark:"watermark___hNYlv",videovideo:"videovideo___ovOkV",animate__loop:"animate__loop___mvL6s",upDown:"upDown___SlgHv",container:"container___g1WYG","video-container":"video-container___XPkWR","video-controls":"video-controls___to0Zq",hide:"hide___NA3DV","video-progress":"video-progress___gqHsd",seek:"seek___iZHBm","seek-tooltip":"seek-tooltip___uWyXx","bottom-controls":"bottom-controls___uoIBm","left-controls":"left-controls___mBEx4","right-controls":"right-controls___e9L6r",rateOverlay:"rateOverlay___HHBWe",controlText:"controlText___M_BWR","volume-controls":"volume-controls___fa3mE","fullscreen-button":"fullscreen-button___ur0es","fullscreen-button1":"fullscreen-button1___rfaXm","pip-button":"pip-button___GFO8W","playback-animation":"playback-animation___ndURq",volume:"volume___OTmpP",hidden:"hidden___o7GkT"},x=n(37712);function b(e){if(isNaN(e))return{minutes:"00",seconds:"00"};var t=new Date(1e3*e).toISOString().substr(11,8);return{hour:t.substr(0,2),minutes:t.substr(3,2),seconds:t.substr(6,2)}}function _(e,t){return e-t}function k(e){e.sort(_);for(var t=0,n=0;n0&&!this.paused&&!this.ended&&this.readyState>2)}});var g=/(android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini)/i,w=(0,a.forwardRef)((function(e,t){var n,r,o=e.allow_skip,i=e.src,_=e.toLog,w=e.videoId,j=e.logWatchHistory,E=e.courseId,z=void 0===E?null:E,M=e.startTime,T=e.handlePause,L=void 0===T?function(){}:T,N=e.handlePlay,R=void 0===N?function(){}:N,q=e.handlePlayEnded,C=void 0===q?function(){}:q,P=e.autoPlay,S=void 0!==P&&P,F=e.onPlayEnded,A=void 0===F?function(){}:F,B="flv"===(null===(r=i=null===(n=i)||void 0===n?void 0:n.replace("http://","https://"))||void 0===r||null===(r=r.split("."))||void 0===r?void 0:r.pop()),D=(0,a.useRef)(),Z=(0,a.useRef)(),I=(0,a.useRef)(),H=(0,a.useRef)(),O=(0,a.useRef)(),W=(0,a.useRef)(),U=(0,a.useRef)(),X=(0,a.useRef)(),G=(0,a.useRef)(),Y=(0,a.useRef)(),V=(0,a.useRef)(),J=(0,a.useRef)(),K=(0,a.useRef)(),Q=(0,a.useRef)(),$=navigator.userAgent.toLowerCase().match(g),ee=$?$[0]:"pc",te=(0,a.useRef)(!1),ne=(0,p.eY)(),re=0,ce=0,oe=0,ue=null,ie=!1,se=20,ae=1,le=!1,de=!1,ve=[];(0,a.useImperativeHandle)(t,(function(){return{getLastUpdatedTime:function(){return D.current.currentTime},getDuration:function(){return D.current.duration}}})),l.ZP.config({maxCount:1,getContainer:function(){return I.current}});var me=(0,a.useCallback)((function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n={point:D.current.currentTime};function r(){return c.apply(this,arguments)}function c(){return(c=s()(u()().mark((function t(){var r;return u()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return le=!0,t.next=3,null==j?void 0:j(n);case 3:r=t.sent,ue=r,le=!1,e&&e();case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}ue?(n.log_id=ue,n.watch_duration=k(ve),n.total_duration=ce):(z?(n.video_id=parseInt(w,10),n.course_id=z):n.video_id=w,n.duration=re,n.device=ee),t&&(n.ed="1"),r()}),[w,z]);function pe(){D.current.paused?(H.current.style.display="none",O.current.style.display="block"):(H.current.style.display="block",O.current.style.display="none")}function he(){V.current.style.display="none",K.current.style.display="none",J.current.style.display="none",D.current.muted||0===D.current.volume?V.current.style.display="block":D.current.volume>0&&D.current.volume<=.5?K.current.style.display="block":J.current.style.display="block"}(0,a.useEffect)((function(){var e;D.current&&(H.current.style.display="none",O.current.style.display="block"),l.ZP.destroy();var t=null;return v.Z.isSupported&&B&&i&&(null===(e=i)||void 0===e?void 0:e.indexOf(".m3u8"))<0?(t=v.Z.createPlayer({type:"flv",volume:.8,cors:!0,url:i,muted:!1}),D.current&&(t.attachMediaElement(D.current),t.load())):D.current.setAttribute("src",i),he(),function(){t&&(t.unload(),t.pause(),t.destroy(),t=null)}}),[D,B,i]),(0,a.useEffect)((function(){document.getElementById("play"),document.querySelectorAll(".playback-icons use");function e(){R(),M&&!te.current&&(D.current.currentTime=M),te.current=!0,ve.push(D.current.currentTime),ie||(ie=!0,_&&me())}function t(){return n.apply(this,arguments)}function n(){return(n=s()(u()().mark((function e(){return u()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:pe(),ve.push(D.current.currentTime),_&&me((function(){ue=null,oe=0,ie=!1,le=!1,de=!1,ve=[],ce=0,ae=1}),!0),A();case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function r(){W.current.value=Math.round(D.current.currentTime),U.current.value=Math.round(D.current.currentTime)}function c(){var e=Math.round(D.current.duration);W.current.setAttribute("max",e),U.current.setAttribute("max",e);var t=b(e);X.current.innerText="".concat(t.hour>0?t.hour+":":"").concat(t.minutes,":").concat(t.seconds),X.current.setAttribute("datetime","".concat(t.hour>0?" "+t.hour+" ":"").concat(t.minutes,"m ").concat(t.seconds,"s"))}function i(){try{var e=Math.round(D.current.duration);W.current.setAttribute("max",e),U.current.setAttribute("max",e);var t=b(e);X.current.innerText="".concat(t.hour>0?t.hour+":":"").concat(t.minutes,":").concat(t.seconds),X.current.setAttribute("datetime","".concat(t.hour>0?" "+t.hour+" ":"").concat(t.minutes,"m ").concat(t.seconds,"s")),r(),function(){var e=b(Math.round(D.current.currentTime));G.current.innerText="".concat(e.hour>0?e.hour+":":"").concat(e.minutes,":").concat(e.seconds),G.current.setAttribute("datetime","".concat(e.hour>0?" "+e.hour+" ":"").concat(e.minutes,"m ").concat(e.seconds,"s"))}();var n=Z.current.getBoundingClientRect(),c=n.width,o=(n.height,n.x),u=n.y;if(o<0||u<0||!c)return;if(!de){var i=D.current.currentTime,s=i-oe;Math.abs(s)<10?(ce+=Math.abs(s),oe=i,le||ce-ae*se>=0&&(ae++,ve.push(oe),_&&me())):(oe=i,_&&me())}}catch(e){console.log(e)}}function a(){de=!0}function d(){D.current.playing&&ve.push(D.current.currentTime,oe),oe=D.current.currentTime,de=!1}function v(){(re=D.current.duration)<=20&&(se=re/3),D.current.addEventListener("play",e)}function m(){L()}function p(e){if(o){var t=e.target.dataset.seek?e.target.dataset.seek:e.target.value;D.current.currentTime=t,U.current.value=t,W.current.value=t}else l.ZP.warning("该视频禁止快进/后退播放")}function h(e){var t=Math.round(e.offsetX/e.target.clientWidth*parseInt(e.target.getAttribute("max"),10));W.current.setAttribute("data-seek",t);var n=b(t);Y.current.textContent="".concat(n.hour>0?n.hour+":":"").concat(n.minutes,":").concat(n.seconds);var r=D.current.getBoundingClientRect();Y.current.style.left="".concat(e.pageX-r.left,"px")}function y(e){switch(e.code){case"Space":e.preventDefault(),be();break;case"ArrowRight":if(e.preventDefault(),!o){l.ZP.warning("该视频禁止快进/后退播放");break}if(D.current.currentTime>=D.current.duration)break;D.current.currentTime=parseInt(D.current.currentTime)+5,r();break;case"ArrowLeft":if(e.preventDefault(),!o){l.ZP.warning("该视频禁止快进/后退播放");break}if(0===D.current.currentTime)break;D.current.currentTime=parseInt(D.current.currentTime)-5,r();break;case"ArrowUp":e.preventDefault(),D.current.volume<1&&(D.current.volume=(parseInt(10*D.current.volume)+1)/10);break;case"ArrowDown":e.preventDefault(),D.current.volume>0&&(D.current.volume=(parseInt(10*D.current.volume)-1)/10)}}return I.current.addEventListener((0,f.gH)(),(function(e){e.preventDefault(),(0,f.vp)()?(D.current.style.width="100%",D.current.style.height="100%"):D.current.style.cssText=""})),D.current.addEventListener("canplay",v),D.current.addEventListener("ended",t),D.current.addEventListener("seeking",a),D.current.addEventListener("seeked",d),D.current.addEventListener("loadedmetadata",c),W.current.addEventListener("mousemove",h),W.current.addEventListener("input",p),D.current.addEventListener("timeupdate",i),D.current.addEventListener("pause",m),D.current.addEventListener("volumechange",he),document.addEventListener("keydown",y),function(){var n,r,o,u,s,l,f,x,b,k,g,w;null===(n=D.current)||void 0===n||n.removeEventListener("canplay",v),null===(r=D.current)||void 0===r||r.removeEventListener("play",e),null===(o=D.current)||void 0===o||o.removeEventListener("ended",t),null===(u=D.current)||void 0===u||u.removeEventListener("seeking",a),null===(s=D.current)||void 0===s||s.removeEventListener("seeked",d),null===(l=W.current)||void 0===l||l.removeEventListener("mousemove",h),null===(f=W.current)||void 0===f||f.removeEventListener("input",p),null===(x=D.current)||void 0===x||x.removeEventListener("timeupdate",i),null===(b=D.current)||void 0===b||b.removeEventListener("pause",m),null===(k=D.current)||void 0===k||k.removeEventListener("loadedmetadata",c),null===(g=D.current)||void 0===g||g.removeEventListener("volumechange",he),document.removeEventListener("keydown",y),null!==(w=D.current)&&void 0!==w&&w.playing&&(ve.push(oe,D.current.currentTime),_&&me())}}),[D,i]),(0,a.useEffect)((function(){var e;if(D.current.onended=function(){C(D)},D.current.oncontextmenu=function(){return!1},(null===(e=i)||void 0===e?void 0:e.indexOf(".m3u8"))>-1)if(D.current.canPlayType("application/vnd.apple.mpegurl"))D.current.src=i;else if(m.ZP.isSupported()){var t=new m.ZP;t.loadSource(i),t.attachMedia(D.current)}}),[i]);var fe=(0,a.useState)(1),ye=c()(fe,2),xe=(ye[0],ye[1]),be=function(){D.current.paused||D.current.ended?D.current.play():D.current.pause(),pe()};return(0,x.jsxs)("div",{style:{position:"relative"},ref:I,children:[(0,x.jsx)("div",{ref:Z,className:"".concat(y.watermark," animated_alternate animate__animated_10s animate__infinite animate__stepstart ").concat(y.animate__loop),children:ne?ne.login:" "}),(0,x.jsx)("div",{className:y.container,children:(0,x.jsxs)("div",{className:y["video-container"],id:"video-container",children:[(0,x.jsx)("div",{className:y["playback-animation"],id:"playback-animation",children:(0,x.jsxs)("svg",{className:y["playback-icons"],children:[(0,x.jsx)("use",{className:"hidden",href:"#play-icon"}),(0,x.jsx)("use",{href:"#pause"})]})}),(0,x.jsx)("video",{className:y.video,id:"video",preload:"auto",disablePictureInPicture:!0,ref:D,autoPlay:S}),(0,x.jsxs)("div",{className:"".concat(y["video-controls"]," "),id:"video-controls",children:[(0,x.jsxs)("div",{className:y["bottom-controls"],children:[(0,x.jsxs)("div",{className:y["left-controls"],children:[(0,x.jsx)("button",{"data-title":"播放/暂停",id:"play",onClick:be,children:(0,x.jsxs)("svg",{className:y["playback-icons"],children:[(0,x.jsx)("use",{ref:O,href:"#play-icon"}),(0,x.jsx)("use",{ref:H,style:{display:"none"},href:"#pause"})]})}),(0,x.jsxs)("div",{className:y.time,children:[(0,x.jsx)("time",{id:"time-elapsed",ref:G,children:"00:00"}),(0,x.jsx)("span",{children:" / "}),(0,x.jsx)("time",{id:"duration",ref:X,children:"00:00"})]})]}),(0,x.jsxs)("div",{className:y["right-controls"],children:[o&&(0,x.jsx)(d.Z,{placement:"top",overlayClassName:y.rateOverlay,getPopupContainer:function(e){return e.parentNode},menu:{items:[{key:"1",label:(0,x.jsx)("span",{onClick:function(){xe(1),D.current.playbackRate=1},children:"1.0x"})},{key:"2",label:(0,x.jsx)("span",{onClick:function(){xe(1.5),D.current.playbackRate=1.5},children:"1.5x"})},{key:"3",label:(0,x.jsx)("span",{onClick:function(){xe(2),D.current.playbackRate=2},children:"2.0x"})}]},children:(0,x.jsx)("div",{className:"".concat(y.controlText," mr5"),children:"倍速"})}),(0,x.jsx)(h.CopyToClipboard,{text:i,onCopy:function(){return l.ZP.success("复制成功")},children:(0,x.jsx)("button",{"data-title":"复制链接",children:(0,x.jsx)("i",{className:"icon-lianjie2 iconfont",style:{fontSize:"12px",color:"white"}})})}),(0,x.jsxs)("div",{className:y["volume-controls"],children:[(0,x.jsxs)("button",{"data-title":"开启/关闭声音",className:y["volume-button"],id:"volume-button",onClick:function(){D.current.muted=!D.current.muted,D.current.muted?(Q.current.setAttribute("data-volume",volume.value),Q.current.value=0):Q.current.value=Q.current.dataset.volume},children:[(0,x.jsx)("i",{ref:V,className:"icon-a-bianzu8 iconfont",style:{fontSize:"14px",color:"white"}}),(0,x.jsx)("i",{ref:K,className:"icon-shengyinkaibeifen iconfont",style:{fontSize:"14px",color:"white"}}),(0,x.jsx)("i",{ref:J,className:"icon-shengyinkai iconfont",style:{fontSize:"14px",color:"white"}})]}),(0,x.jsx)("input",{className:y.volume,id:"volume",value:"1","data-mute":"0.5",type:"range",max:"1",min:"0",step:"0.01",ref:Q,style:{display:"none"},onClick:he})]}),(0,x.jsx)("button",{"data-title":"全屏/退出全屏",className:y["fullscreen-button"],onClick:function(){(0,f.vp)()?(0,f.BU)():(0,f.Dj)(I.current)},children:(0,x.jsx)("i",{className:"icon-fangda1 iconfont",style:{fontSize:"12px",color:"white"}})})]})]}),(0,x.jsxs)("div",{className:y["video-progress"],children:[(0,x.jsx)("progress",{ref:U,value:"0",min:"0"}),(0,x.jsx)("input",{className:y.seek,ref:W,value:"0",min:"0",type:"range",step:"1"}),(0,x.jsx)("div",{className:y["seek-tooltip"],ref:Y,id:"seek-tooltip",children:"00:00"})]})]})]})}),(0,x.jsx)("svg",{style:{display:"none"},children:(0,x.jsxs)("defs",{children:[(0,x.jsx)("symbol",{id:"pause",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 5.016h3.984v13.969h-3.984v-13.969zM6 18.984v-13.969h3.984v13.969h-3.984z"})}),(0,x.jsx)("symbol",{id:"play-icon",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M8.016 5.016l10.969 6.984-10.969 6.984v-13.969z"})}),(0,x.jsx)("symbol",{id:"volume-high",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 3.234q3.047 0.656 5.016 3.117t1.969 5.648-1.969 5.648-5.016 3.117v-2.063q2.203-0.656 3.586-2.484t1.383-4.219-1.383-4.219-3.586-2.484v-2.063zM16.5 12q0 2.813-2.484 4.031v-8.063q1.031 0.516 1.758 1.688t0.727 2.344zM3 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6z"})}),(0,x.jsx)("symbol",{id:"volume-low",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M5.016 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6zM18.516 12q0 2.766-2.531 4.031v-8.063q1.031 0.516 1.781 1.711t0.75 2.32z"})}),(0,x.jsx)("symbol",{id:"volume-mute",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M12 3.984v4.219l-2.109-2.109zM4.266 3l16.734 16.734-1.266 1.266-2.063-2.063q-1.547 1.313-3.656 1.828v-2.063q1.172-0.328 2.25-1.172l-4.266-4.266v6.75l-5.016-5.016h-3.984v-6h4.734l-4.734-4.734zM18.984 12q0-2.391-1.383-4.219t-3.586-2.484v-2.063q3.047 0.656 5.016 3.117t1.969 5.648q0 2.203-1.031 4.172l-1.5-1.547q0.516-1.266 0.516-2.625zM16.5 12q0 0.422-0.047 0.609l-2.438-2.438v-2.203q1.031 0.516 1.758 1.688t0.727 2.344z"})}),(0,x.jsx)("symbol",{id:"fullscreen",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 5.016h4.969v4.969h-1.969v-3h-3v-1.969zM17.016 17.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 9.984v-4.969h4.969v1.969h-3v3h-1.969zM6.984 14.016v3h3v1.969h-4.969v-4.969h1.969z"})}),(0,x.jsx)("symbol",{id:"fullscreen-exit",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M15.984 8.016h3v1.969h-4.969v-4.969h1.969v3zM14.016 18.984v-4.969h4.969v1.969h-3v3h-1.969zM8.016 8.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 15.984v-1.969h4.969v4.969h-1.969v-3h-3z"})}),(0,x.jsx)("symbol",{id:"pip",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M21 19.031v-14.063h-18v14.063h18zM23.016 18.984q0 0.797-0.609 1.406t-1.406 0.609h-18q-0.797 0-1.406-0.609t-0.609-1.406v-14.016q0-0.797 0.609-1.383t1.406-0.586h18q0.797 0 1.406 0.586t0.609 1.383v14.016zM18.984 11.016v6h-7.969v-6h7.969z"})})]})})]})}))},33316:function(e,t,n){function r(e){try{e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen&&e.webkitRequestFullScreen()}catch(e){console.log(e,":e")}}function c(){window.top.document.webkitExitFullscreen?window.top.document.webkitExitFullscreen():document.exitFullscreen?window.top.document.exitFullscreen():document.msExitFullscreen?window.top.document.msExitFullscreen():document.mozCancelFullScreen&&window.top.document.mozCancelFullScreen()}n.d(t,{BU:function(){return c},Dj:function(){return r},gH:function(){return o},vp:function(){return u}});var o=function(){return document.webkitExitFullscreen?"webkitfullscreenchange":document.exitFullscreen?"fullscreenchange":document.msExitFullscreen?"msfullscreenchange":document.mozCancelFullScreen?"mozfullscreenchange":void 0};function u(){var e=window.top.document.fullscreenElement||window.top.document.mozFullscreenElement||window.top.document.webkitFullscreenElement;document.fullscreenEnabled||document.mozFullscreenEnabled||document.webkitFullscreenEnabled;return console.log("fullscreenElement",e),null!=e}}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[16747],{16747:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(79800),c=n.n(r),o=n(7557),u=n.n(o),i=n(41498),s=n.n(i),a=n(59301),l=n(8591),d=n(38854),v=n(52923),m=n(24830),p=n(14533),h=n(56102),f=n(33316),y={watermark:"watermark___hNYlv",videovideo:"videovideo___ovOkV",animate__loop:"animate__loop___mvL6s",upDown:"upDown___SlgHv",container:"container___g1WYG","video-container":"video-container___XPkWR","video-controls":"video-controls___to0Zq",hide:"hide___NA3DV","video-progress":"video-progress___gqHsd",seek:"seek___iZHBm","seek-tooltip":"seek-tooltip___uWyXx","bottom-controls":"bottom-controls___uoIBm","left-controls":"left-controls___mBEx4","right-controls":"right-controls___e9L6r",rateOverlay:"rateOverlay___HHBWe",controlText:"controlText___M_BWR","volume-controls":"volume-controls___fa3mE","fullscreen-button":"fullscreen-button___ur0es","fullscreen-button1":"fullscreen-button1___rfaXm","pip-button":"pip-button___GFO8W","playback-animation":"playback-animation___ndURq",volume:"volume___OTmpP",hidden:"hidden___o7GkT"},x=n(37712);function b(e){if(isNaN(e))return{minutes:"00",seconds:"00"};var t=new Date(1e3*e).toISOString().substr(11,8);return{hour:t.substr(0,2),minutes:t.substr(3,2),seconds:t.substr(6,2)}}function _(e,t){return e-t}function k(e){e.sort(_);for(var t=0,n=0;n0&&!this.paused&&!this.ended&&this.readyState>2)}});var g=/(android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini)/i,w=(0,a.forwardRef)((function(e,t){var n,r,o=e.allow_skip,i=e.src,_=e.toLog,w=e.videoId,j=e.logWatchHistory,E=e.courseId,z=void 0===E?null:E,M=e.startTime,T=e.handlePause,L=void 0===T?function(){}:T,N=e.handlePlay,R=void 0===N?function(){}:N,q=e.handlePlayEnded,C=void 0===q?function(){}:q,P=e.autoPlay,S=void 0!==P&&P,F=e.onPlayEnded,A=void 0===F?function(){}:F,B="flv"===(null===(r=i=null===(n=i)||void 0===n?void 0:n.replace("http://","https://"))||void 0===r||null===(r=r.split("."))||void 0===r?void 0:r.pop()),D=(0,a.useRef)(),Z=(0,a.useRef)(),I=(0,a.useRef)(),H=(0,a.useRef)(),O=(0,a.useRef)(),W=(0,a.useRef)(),U=(0,a.useRef)(),X=(0,a.useRef)(),G=(0,a.useRef)(),Y=(0,a.useRef)(),V=(0,a.useRef)(),J=(0,a.useRef)(),K=(0,a.useRef)(),Q=(0,a.useRef)(),$=navigator.userAgent.toLowerCase().match(g),ee=$?$[0]:"pc",te=(0,a.useRef)(!1),ne=(0,p.eY)(),re=0,ce=0,oe=0,ue=null,ie=!1,se=20,ae=1,le=!1,de=!1,ve=[];(0,a.useImperativeHandle)(t,(function(){return{getLastUpdatedTime:function(){return D.current.currentTime},getDuration:function(){return D.current.duration}}})),l.ZP.config({maxCount:1,getContainer:function(){return I.current}});var me=(0,a.useCallback)((function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n={point:D.current.currentTime};function r(){return c.apply(this,arguments)}function c(){return(c=s()(u()().mark((function t(){var r;return u()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return le=!0,t.next=3,null==j?void 0:j(n);case 3:r=t.sent,ue=r,le=!1,e&&e();case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}ue?(n.log_id=ue,n.watch_duration=k(ve),n.total_duration=ce):(z?(n.video_id=parseInt(w,10),n.course_id=z):n.video_id=w,n.duration=re,n.device=ee),t&&(n.ed="1"),r()}),[w,z]);function pe(){D.current.paused?(H.current.style.display="none",O.current.style.display="block"):(H.current.style.display="block",O.current.style.display="none")}function he(){V.current.style.display="none",K.current.style.display="none",J.current.style.display="none",D.current.muted||0===D.current.volume?V.current.style.display="block":D.current.volume>0&&D.current.volume<=.5?K.current.style.display="block":J.current.style.display="block"}(0,a.useEffect)((function(){var e;D.current&&(H.current.style.display="none",O.current.style.display="block"),l.ZP.destroy();var t=null;return v.Z.isSupported&&B&&i&&(null===(e=i)||void 0===e?void 0:e.indexOf(".m3u8"))<0?(t=v.Z.createPlayer({type:"flv",volume:.8,cors:!0,url:i,muted:!1}),D.current&&(t.attachMediaElement(D.current),t.load())):D.current.setAttribute("src",i),he(),function(){t&&(t.unload(),t.pause(),t.destroy(),t=null)}}),[D,B,i]),(0,a.useEffect)((function(){document.getElementById("play"),document.querySelectorAll(".playback-icons use");function e(){R(),M&&!te.current&&(D.current.currentTime=M),te.current=!0,ve.push(D.current.currentTime),ie||(ie=!0,_&&me())}function t(){return n.apply(this,arguments)}function n(){return(n=s()(u()().mark((function e(){return u()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:pe(),ve.push(D.current.currentTime),_&&me((function(){ue=null,oe=0,ie=!1,le=!1,de=!1,ve=[],ce=0,ae=1}),!0),A();case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function r(){W.current.value=Math.round(D.current.currentTime),U.current.value=Math.round(D.current.currentTime)}function c(){var e=Math.round(D.current.duration);W.current.setAttribute("max",e),U.current.setAttribute("max",e);var t=b(e);X.current.innerText="".concat(t.hour>0?t.hour+":":"").concat(t.minutes,":").concat(t.seconds),X.current.setAttribute("datetime","".concat(t.hour>0?" "+t.hour+" ":"").concat(t.minutes,"m ").concat(t.seconds,"s"))}function i(){try{var e=Math.round(D.current.duration);W.current.setAttribute("max",e),U.current.setAttribute("max",e);var t=b(e);X.current.innerText="".concat(t.hour>0?t.hour+":":"").concat(t.minutes,":").concat(t.seconds),X.current.setAttribute("datetime","".concat(t.hour>0?" "+t.hour+" ":"").concat(t.minutes,"m ").concat(t.seconds,"s")),r(),function(){var e=b(Math.round(D.current.currentTime));G.current.innerText="".concat(e.hour>0?e.hour+":":"").concat(e.minutes,":").concat(e.seconds),G.current.setAttribute("datetime","".concat(e.hour>0?" "+e.hour+" ":"").concat(e.minutes,"m ").concat(e.seconds,"s"))}();var n=Z.current.getBoundingClientRect(),c=n.width,o=(n.height,n.x),u=n.y;if(o<0||u<0||!c)return;if(!de){var i=D.current.currentTime,s=i-oe;Math.abs(s)<10?(ce+=Math.abs(s),oe=i,le||ce-ae*se>=0&&(ae++,ve.push(oe),_&&me())):(oe=i,_&&me())}}catch(e){console.log(e)}}function a(){de=!0}function d(){D.current.playing&&ve.push(D.current.currentTime,oe),oe=D.current.currentTime,de=!1}function v(){(re=D.current.duration)<=20&&(se=re/3),D.current.addEventListener("play",e)}function m(){L()}function p(e){if(o){var t=e.target.dataset.seek?e.target.dataset.seek:e.target.value;D.current.currentTime=t,U.current.value=t,W.current.value=t}else l.ZP.warning("该视频禁止快进/后退播放")}function h(e){var t=Math.round(e.offsetX/e.target.clientWidth*parseInt(e.target.getAttribute("max"),10));W.current.setAttribute("data-seek",t);var n=b(t);Y.current.textContent="".concat(n.hour>0?n.hour+":":"").concat(n.minutes,":").concat(n.seconds);var r=D.current.getBoundingClientRect();Y.current.style.left="".concat(e.pageX-r.left,"px")}function y(e){switch(e.code){case"Space":e.preventDefault(),be();break;case"ArrowRight":if(e.preventDefault(),!o){l.ZP.warning("该视频禁止快进/后退播放");break}if(D.current.currentTime>=D.current.duration)break;D.current.currentTime=parseInt(D.current.currentTime)+5,r();break;case"ArrowLeft":if(e.preventDefault(),!o){l.ZP.warning("该视频禁止快进/后退播放");break}if(0===D.current.currentTime)break;D.current.currentTime=parseInt(D.current.currentTime)-5,r();break;case"ArrowUp":e.preventDefault(),D.current.volume<1&&(D.current.volume=(parseInt(10*D.current.volume)+1)/10);break;case"ArrowDown":e.preventDefault(),D.current.volume>0&&(D.current.volume=(parseInt(10*D.current.volume)-1)/10)}}return I.current.addEventListener((0,f.gH)(),(function(e){e.preventDefault(),(0,f.vp)()?(D.current.style.width="100%",D.current.style.height="100%"):D.current.style.cssText=""})),D.current.addEventListener("canplay",v),D.current.addEventListener("ended",t),D.current.addEventListener("seeking",a),D.current.addEventListener("seeked",d),D.current.addEventListener("loadedmetadata",c),W.current.addEventListener("mousemove",h),W.current.addEventListener("input",p),D.current.addEventListener("timeupdate",i),D.current.addEventListener("pause",m),D.current.addEventListener("volumechange",he),document.addEventListener("keydown",y),function(){var n,r,o,u,s,l,f,x,b,k,g,w;null===(n=D.current)||void 0===n||n.removeEventListener("canplay",v),null===(r=D.current)||void 0===r||r.removeEventListener("play",e),null===(o=D.current)||void 0===o||o.removeEventListener("ended",t),null===(u=D.current)||void 0===u||u.removeEventListener("seeking",a),null===(s=D.current)||void 0===s||s.removeEventListener("seeked",d),null===(l=W.current)||void 0===l||l.removeEventListener("mousemove",h),null===(f=W.current)||void 0===f||f.removeEventListener("input",p),null===(x=D.current)||void 0===x||x.removeEventListener("timeupdate",i),null===(b=D.current)||void 0===b||b.removeEventListener("pause",m),null===(k=D.current)||void 0===k||k.removeEventListener("loadedmetadata",c),null===(g=D.current)||void 0===g||g.removeEventListener("volumechange",he),document.removeEventListener("keydown",y),null!==(w=D.current)&&void 0!==w&&w.playing&&(ve.push(oe,D.current.currentTime),_&&me())}}),[D,i]),(0,a.useEffect)((function(){var e;if(D.current.onended=function(){C(D)},D.current.oncontextmenu=function(){return!1},(null===(e=i)||void 0===e?void 0:e.indexOf(".m3u8"))>-1)if(D.current.canPlayType("application/vnd.apple.mpegurl"))D.current.src=i;else if(m.ZP.isSupported()){var t=new m.ZP;t.loadSource(i),t.attachMedia(D.current)}}),[i]);var fe=(0,a.useState)(1),ye=c()(fe,2),xe=(ye[0],ye[1]),be=function(){D.current.paused||D.current.ended?D.current.play():D.current.pause(),pe()};return(0,x.jsxs)("div",{style:{position:"relative"},ref:I,children:[(0,x.jsx)("div",{ref:Z,className:"".concat(y.watermark," animated_alternate animate__animated_10s animate__infinite animate__stepstart ").concat(y.animate__loop),children:ne?ne.login:" "}),(0,x.jsx)("div",{className:y.container,children:(0,x.jsxs)("div",{className:y["video-container"],id:"video-container",children:[(0,x.jsx)("div",{className:y["playback-animation"],id:"playback-animation",children:(0,x.jsxs)("svg",{className:y["playback-icons"],children:[(0,x.jsx)("use",{className:"hidden",href:"#play-icon"}),(0,x.jsx)("use",{href:"#pause"})]})}),(0,x.jsx)("video",{className:y.video,id:"video",preload:"auto",disablePictureInPicture:!0,ref:D,autoPlay:S}),(0,x.jsxs)("div",{className:"".concat(y["video-controls"]," "),id:"video-controls",children:[(0,x.jsxs)("div",{className:y["bottom-controls"],children:[(0,x.jsxs)("div",{className:y["left-controls"],children:[(0,x.jsx)("button",{"data-title":"播放/暂停",id:"play",onClick:be,children:(0,x.jsxs)("svg",{className:y["playback-icons"],children:[(0,x.jsx)("use",{ref:O,href:"#play-icon"}),(0,x.jsx)("use",{ref:H,style:{display:"none"},href:"#pause"})]})}),(0,x.jsxs)("div",{className:y.time,children:[(0,x.jsx)("time",{id:"time-elapsed",ref:G,children:"00:00"}),(0,x.jsx)("span",{children:" / "}),(0,x.jsx)("time",{id:"duration",ref:X,children:"00:00"})]})]}),(0,x.jsxs)("div",{className:y["right-controls"],children:[o&&(0,x.jsx)(d.Z,{placement:"top",overlayClassName:y.rateOverlay,getPopupContainer:function(e){return e.parentNode},menu:{items:[{key:"1",label:(0,x.jsx)("span",{onClick:function(){xe(1),D.current.playbackRate=1},children:"1.0x"})},{key:"2",label:(0,x.jsx)("span",{onClick:function(){xe(1.5),D.current.playbackRate=1.5},children:"1.5x"})},{key:"3",label:(0,x.jsx)("span",{onClick:function(){xe(2),D.current.playbackRate=2},children:"2.0x"})}]},children:(0,x.jsx)("div",{className:"".concat(y.controlText," mr5"),children:"倍速"})}),(0,x.jsx)(h.CopyToClipboard,{text:i,onCopy:function(){return l.ZP.success("复制成功")},children:(0,x.jsx)("button",{"data-title":"复制链接",children:(0,x.jsx)("i",{className:"icon-lianjie2 iconfont",style:{fontSize:"12px",color:"white"}})})}),(0,x.jsxs)("div",{className:y["volume-controls"],children:[(0,x.jsxs)("button",{"data-title":"开启/关闭声音",className:y["volume-button"],id:"volume-button",onClick:function(){D.current.muted=!D.current.muted,D.current.muted?(Q.current.setAttribute("data-volume",volume.value),Q.current.value=0):Q.current.value=Q.current.dataset.volume},children:[(0,x.jsx)("i",{ref:V,className:"icon-a-bianzu8 iconfont",style:{fontSize:"14px",color:"white"}}),(0,x.jsx)("i",{ref:K,className:"icon-shengyinkaibeifen iconfont",style:{fontSize:"14px",color:"white"}}),(0,x.jsx)("i",{ref:J,className:"icon-shengyinkai iconfont",style:{fontSize:"14px",color:"white"}})]}),(0,x.jsx)("input",{className:y.volume,id:"volume",value:"1","data-mute":"0.5",type:"range",max:"1",min:"0",step:"0.01",ref:Q,style:{display:"none"},onClick:he})]}),(0,x.jsx)("button",{"data-title":"全屏/退出全屏",className:y["fullscreen-button"],onClick:function(){(0,f.vp)()?(0,f.BU)():(0,f.Dj)(I.current)},children:(0,x.jsx)("i",{className:"icon-fangda1 iconfont",style:{fontSize:"12px",color:"white"}})})]})]}),(0,x.jsxs)("div",{className:y["video-progress"],children:[(0,x.jsx)("progress",{ref:U,value:"0",min:"0"}),(0,x.jsx)("input",{className:y.seek,ref:W,value:"0",min:"0",type:"range",step:"1"}),(0,x.jsx)("div",{className:y["seek-tooltip"],ref:Y,id:"seek-tooltip",children:"00:00"})]})]})]})}),(0,x.jsx)("svg",{style:{display:"none"},children:(0,x.jsxs)("defs",{children:[(0,x.jsx)("symbol",{id:"pause",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 5.016h3.984v13.969h-3.984v-13.969zM6 18.984v-13.969h3.984v13.969h-3.984z"})}),(0,x.jsx)("symbol",{id:"play-icon",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M8.016 5.016l10.969 6.984-10.969 6.984v-13.969z"})}),(0,x.jsx)("symbol",{id:"volume-high",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 3.234q3.047 0.656 5.016 3.117t1.969 5.648-1.969 5.648-5.016 3.117v-2.063q2.203-0.656 3.586-2.484t1.383-4.219-1.383-4.219-3.586-2.484v-2.063zM16.5 12q0 2.813-2.484 4.031v-8.063q1.031 0.516 1.758 1.688t0.727 2.344zM3 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6z"})}),(0,x.jsx)("symbol",{id:"volume-low",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M5.016 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6zM18.516 12q0 2.766-2.531 4.031v-8.063q1.031 0.516 1.781 1.711t0.75 2.32z"})}),(0,x.jsx)("symbol",{id:"volume-mute",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M12 3.984v4.219l-2.109-2.109zM4.266 3l16.734 16.734-1.266 1.266-2.063-2.063q-1.547 1.313-3.656 1.828v-2.063q1.172-0.328 2.25-1.172l-4.266-4.266v6.75l-5.016-5.016h-3.984v-6h4.734l-4.734-4.734zM18.984 12q0-2.391-1.383-4.219t-3.586-2.484v-2.063q3.047 0.656 5.016 3.117t1.969 5.648q0 2.203-1.031 4.172l-1.5-1.547q0.516-1.266 0.516-2.625zM16.5 12q0 0.422-0.047 0.609l-2.438-2.438v-2.203q1.031 0.516 1.758 1.688t0.727 2.344z"})}),(0,x.jsx)("symbol",{id:"fullscreen",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 5.016h4.969v4.969h-1.969v-3h-3v-1.969zM17.016 17.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 9.984v-4.969h4.969v1.969h-3v3h-1.969zM6.984 14.016v3h3v1.969h-4.969v-4.969h1.969z"})}),(0,x.jsx)("symbol",{id:"fullscreen-exit",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M15.984 8.016h3v1.969h-4.969v-4.969h1.969v3zM14.016 18.984v-4.969h4.969v1.969h-3v3h-1.969zM8.016 8.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 15.984v-1.969h4.969v4.969h-1.969v-3h-3z"})}),(0,x.jsx)("symbol",{id:"pip",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M21 19.031v-14.063h-18v14.063h18zM23.016 18.984q0 0.797-0.609 1.406t-1.406 0.609h-18q-0.797 0-1.406-0.609t-0.609-1.406v-14.016q0-0.797 0.609-1.383t1.406-0.586h18q0.797 0 1.406 0.586t0.609 1.383v14.016zM18.984 11.016v6h-7.969v-6h7.969z"})})]})})]})}))},33316:function(e,t,n){function r(e){try{e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen&&e.webkitRequestFullScreen()}catch(e){console.log(e,":e")}}function c(){window.top.document.webkitExitFullscreen?window.top.document.webkitExitFullscreen():document.exitFullscreen?window.top.document.exitFullscreen():document.msExitFullscreen?window.top.document.msExitFullscreen():document.mozCancelFullScreen&&window.top.document.mozCancelFullScreen()}n.d(t,{BU:function(){return c},Dj:function(){return r},gH:function(){return o},vp:function(){return u}});var o=function(){return document.webkitExitFullscreen?"webkitfullscreenchange":document.exitFullscreen?"fullscreenchange":document.msExitFullscreen?"msfullscreenchange":document.mozCancelFullScreen?"mozfullscreenchange":void 0};function u(){var e=window.top.document.fullscreenElement||window.top.document.mozFullscreenElement||window.top.document.webkitFullscreenElement;document.fullscreenEnabled||document.mozFullscreenEnabled||document.webkitFullscreenEnabled;return console.log("fullscreenElement",e),null!=e}}}]); \ No newline at end of file diff --git a/24830.async.js b/24830.async.js new file mode 100644 index 0000000000..b21ee68e46 --- /dev/null +++ b/24830.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[24830],{24830:function(t,e,s){function i(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}s.d(e,{ZP:function(){return Oa}});var r,n,a,o,l,h={exports:{}};r=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,n=/^(?=([^\/?#]*))\1([^]*)$/,a=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,h.exports=l={buildAbsoluteURL:function(t,e,s){if(s=s||{},t=t.trim(),!(e=e.trim())){if(!s.alwaysNormalize)return t;var i=l.parseURL(t);if(!i)throw new Error("Error trying to parse base URL.");return i.path=l.normalizePath(i.path),l.buildURLFromParts(i)}var r=l.parseURL(e);if(!r)throw new Error("Error trying to parse relative URL.");if(r.scheme)return s.alwaysNormalize?(r.path=l.normalizePath(r.path),l.buildURLFromParts(r)):e;var a=l.parseURL(t);if(!a)throw new Error("Error trying to parse base URL.");if(!a.netLoc&&a.path&&"/"!==a.path[0]){var o=n.exec(a.path);a.netLoc=o[1],a.path=o[2]}a.netLoc&&!a.path&&(a.path="/");var h={scheme:a.scheme,netLoc:r.netLoc,path:null,params:r.params,query:r.query,fragment:r.fragment};if(!r.netLoc&&(h.netLoc=a.netLoc,"/"!==r.path[0]))if(r.path){var d=a.path,c=d.substring(0,d.lastIndexOf("/")+1)+r.path;h.path=l.normalizePath(c)}else h.path=a.path,r.params||(h.params=a.params,r.query||(h.query=a.query));return null===h.path&&(h.path=s.alwaysNormalize?l.normalizePath(r.path):r.path),l.buildURLFromParts(h)},parseURL:function(t){var e=r.exec(t);return e?{scheme:e[1]||"",netLoc:e[2]||"",path:e[3]||"",params:e[4]||"",query:e[5]||"",fragment:e[6]||""}:null},normalizePath:function(t){for(t=t.split("").reverse().join("").replace(a,"");t.length!==(t=t.replace(o,"")).length;);return t.split("").reverse().join("")},buildURLFromParts:function(t){return t.scheme+t.netLoc+t.path+t.params+t.query+t.fragment}};var d=h.exports;function c(t,e){var s=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),s.push.apply(s,i)}return s}function u(t){for(var e=1;e`):L}(e)}))}const k=R,D=/^(\d+)x(\d+)$/,I=/(.+?)=(".*?"|.*?)(?:,|$)/g;class w{constructor(t){"string"==typeof t&&(t=w.parseAttrList(t)),m(this,t)}get clientAttrs(){return Object.keys(this).filter((t=>"X-"===t.substring(0,2)))}decimalInteger(t){const e=parseInt(this[t],10);return e>Number.MAX_SAFE_INTEGER?1/0:e}hexadecimalInteger(t){if(this[t]){let e=(this[t]||"0x").slice(2);e=(1&e.length?"0":"")+e;const s=new Uint8Array(e.length/2);for(let t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}decimalFloatingPoint(t){return parseFloat(this[t])}optionalFloat(t,e){const s=this[t];return s?parseFloat(s):e}enumeratedString(t){return this[t]}bool(t){return"YES"===this[t]}decimalResolution(t){const e=D.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}}static parseAttrList(t){let e;const s={};for(I.lastIndex=0;null!==(e=I.exec(t));){let t=e[2];0===t.indexOf('"')&&t.lastIndexOf('"')===t.length-1&&(t=t.slice(1,-1));s[e[1].trim()]=t}return s}}function C(t){return"SCTE35-OUT"===t||"SCTE35-IN"===t}class _{constructor(t,e){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,e){const s=e.attr;for(const e in s)if(Object.prototype.hasOwnProperty.call(t,e)&&t[e]!==s[e]){k.warn(`DATERANGE tag attribute: "${e}" does not match for tags with ID: "${t.ID}"`),this._badValueForSameId=e;break}t=m(new w({}),s,t)}if(this.attr=t,this._startDate=new Date(t["START-DATE"]),"END-DATE"in this.attr){const t=new Date(this.attr["END-DATE"]);p(t.getTime())&&(this._endDate=t)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const t=this.duration;return null!==t?new Date(this._startDate.getTime()+1e3*t):null}get duration(){if("DURATION"in this.attr){const t=this.attr.decimalFloatingPoint("DURATION");if(p(t))return t}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&p(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class x{constructor(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}}var P="audio",F="video",M="audiovideo";class O{constructor(t){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[P]:null,[F]:null,[M]:null},this.baseurl=t}setByteRange(t,e){const s=t.split("@",2);let i;i=1===s.length?(null==e?void 0:e.byteRangeEndOffset)||0:parseInt(s[1]),this._byteRange=[i,parseInt(s[0])+i]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=d.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(t){this._url=t}}class N extends O{constructor(t,e){super(e),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new x,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=t}get decryptdata(){const{levelkeys:t}=this;if(!t&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const t=this.levelkeys.identity;if(t)this._decryptdata=t.getDecryptData(this.sn);else{const t=Object.keys(this.levelkeys);if(1===t.length)return this._decryptdata=this.levelkeys[t[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!p(this.programDateTime))return null;const t=p(this.duration)?this.duration:0;return this.programDateTime+1e3*t}get encrypted(){var t;if(null!=(t=this._decryptdata)&&t.encrypted)return!0;if(this.levelkeys){const t=Object.keys(this.levelkeys),e=t.length;if(e>1||1===e&&this.levelkeys[t[0]].encrypted)return!0}return!1}setKeyFormat(t){if(this.levelkeys){const e=this.levelkeys[t];e&&!this._decryptdata&&(this._decryptdata=e.getDecryptData(this.sn))}}abortRequests(){var t,e;null==(t=this.loader)||t.abort(),null==(e=this.keyLoader)||e.abort()}setElementaryStreamInfo(t,e,s,i,r,n=!1){const{elementaryStreams:a}=this,o=a[t];o?(o.startPTS=Math.min(o.startPTS,e),o.endPTS=Math.max(o.endPTS,s),o.startDTS=Math.min(o.startDTS,i),o.endDTS=Math.max(o.endDTS,r)):a[t]={startPTS:e,endPTS:s,startDTS:i,endDTS:r,partial:n}}clearElementaryStreamInfo(){const{elementaryStreams:t}=this;t[P]=null,t[F]=null,t[M]=null}}class U extends O{constructor(t,e,s,i,r){super(s),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new x,this.duration=t.decimalFloatingPoint("DURATION"),this.gap=t.bool("GAP"),this.independent=t.bool("INDEPENDENT"),this.relurl=t.enumeratedString("URI"),this.fragment=e,this.index=i;const n=t.enumeratedString("BYTERANGE");n&&this.setByteRange(n,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:t}=this;return!!(t.audio||t.video||t.audiovideo)}}class B{constructor(t){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=t}reloaded(t){if(!t)return this.advanced=!0,void(this.updated=!0);const e=this.lastPartSn-t.lastPartSn,s=this.lastPartIndex-t.lastPartIndex;this.updated=this.endSN!==t.endSN||!!s||!!e||!this.live,this.advanced=this.endSN>t.endSN||e>0||0===e&&s>0,this.updated||this.advanced?this.misses=Math.floor(.6*t.misses):this.misses=t.misses+1,this.availabilityDelay=t.availabilityDelay}get hasProgramDateTime(){return!!this.fragments.length&&p(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const t=this.driftEndTime-this.driftStartTime;if(t>0){return 1e3*(this.driftEnd-this.driftStart)/t}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var t;return null!=(t=this.fragments)&&t.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function $(t){return Uint8Array.from(atob(t),(t=>t.charCodeAt(0)))}function G(t){const e=t.split(":");let s=null;if("data"===e[0]&&2===e.length){const t=e[1].split(";"),i=t[t.length-1].split(",");if(2===i.length){const e="base64"===i[0],r=i[1];e?(t.splice(-1,1),s=$(r)):s=function(t){const e=K(t).subarray(0,16),s=new Uint8Array(16);return s.set(e,16-e.length),s}(r)}}return s}function K(t){return Uint8Array.from(unescape(encodeURIComponent(t)),(t=>t.charCodeAt(0)))}const H="undefined"!=typeof self?self:void 0;var V={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},Y="org.w3.clearkey",W="com.apple.streamingkeydelivery",j="com.microsoft.playready",q="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function X(t){switch(t){case W:return V.FAIRPLAY;case j:return V.PLAYREADY;case q:return V.WIDEVINE;case Y:return V.CLEARKEY}}var z="1077efecc0b24d02ace33c1e52e2fb4b",Q="e2719d58a985b3c9781ab030af78d30e",J="9a04f07998404286ab92e65be0885f95",Z="edef8ba979d64acea3c827dcd51d21ed";function tt(t){return t===Z?V.WIDEVINE:t===J?V.PLAYREADY:t===z||t===Q?V.CLEARKEY:void 0}function et(t){switch(t){case V.FAIRPLAY:return W;case V.PLAYREADY:return j;case V.WIDEVINE:return q;case V.CLEARKEY:return Y}}function st(t){const{drmSystems:e,widevineLicenseUrl:s}=t,i=e?[V.FAIRPLAY,V.WIDEVINE,V.PLAYREADY,V.CLEARKEY].filter((t=>!!e[t])):[];return!i[V.WIDEVINE]&&s&&i.push(V.WIDEVINE),i}const it=null!=H&&null!=(rt=H.navigator)&&rt.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var rt;function nt(t,e,s){return Uint8Array.prototype.slice?t.slice(e,s):new Uint8Array(Array.prototype.slice.call(t,e,s))}const at=(t,e)=>e+10<=t.length&&73===t[e]&&68===t[e+1]&&51===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128,ot=(t,e)=>e+10<=t.length&&51===t[e]&&68===t[e+1]&&73===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128,lt=(t,e)=>{const s=e;let i=0;for(;at(t,e);){i+=10;i+=ht(t,e+6),ot(t,e+10)&&(i+=10),e+=i}if(i>0)return t.subarray(s,s+i)},ht=(t,e)=>{let s=0;return s=(127&t[e])<<21,s|=(127&t[e+1])<<14,s|=(127&t[e+2])<<7,s|=127&t[e+3],s},dt=(t,e)=>at(t,e)&&ht(t,e+6)+10<=t.length-e,ct=t=>{const e=gt(t);for(let t=0;tt&&"PRIV"===t.key&&"com.apple.streaming.transportStreamTimestamp"===t.info,ft=t=>{const e=String.fromCharCode(t[0],t[1],t[2],t[3]),s=ht(t,4);return{type:e,size:s,data:t.subarray(10,10+s)}},gt=t=>{let e=0;const s=[];for(;at(t,e);){const i=ht(t,e+6);e+=10;const r=e+i;for(;e+8"PRIV"===t.type?pt(t):"W"===t.type[0]?yt(t):vt(t),pt=t=>{if(t.size<2)return;const e=Et(t.data,!0),s=new Uint8Array(t.data.subarray(e.length+1));return{key:t.type,info:e,data:s.buffer}},vt=t=>{if(t.size<2)return;if("TXXX"===t.type){let e=1;const s=Et(t.data.subarray(e),!0);e+=s.length+1;const i=Et(t.data.subarray(e));return{key:t.type,info:s,data:i}}const e=Et(t.data.subarray(1));return{key:t.type,data:e}},yt=t=>{if("WXXX"===t.type){if(t.size<2)return;let e=1;const s=Et(t.data.subarray(e),!0);e+=s.length+1;const i=Et(t.data.subarray(e));return{key:t.type,info:s,data:i}}const e=Et(t.data);return{key:t.type,data:e}},Tt=t=>{if(8===t.data.byteLength){const e=new Uint8Array(t.data),s=1&e[3];let i=(e[4]<<23)+(e[5]<<15)+(e[6]<<7)+e[7];return i/=45,s&&(i+=47721858.84),Math.round(i)}},Et=(t,e=!1)=>{const s=Lt();if(s){const i=s.decode(t);if(e){const t=i.indexOf("\0");return-1!==t?i.substring(0,t):i}return i.replace(/\0/g,"")}const i=t.length;let r,n,a,o="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(r);break;case 12:case 13:n=t[l++],o+=String.fromCharCode((31&r)<<6|63&n);break;case 14:n=t[l++],a=t[l++],o+=String.fromCharCode((15&r)<<12|(63&n)<<6|(63&a)<<0)}}return o};let St;function Lt(){if(!navigator.userAgent.includes("PlayStation 4"))return St||void 0===self.TextDecoder||(St=new self.TextDecoder("utf-8")),St}const At=function(t){let e="";for(let s=0;s>24,t[e+1]=s>>16&255,t[e+2]=s>>8&255,t[e+3]=255&s}function Pt(t,e){const s=[];if(!e.length)return s;const i=t.byteLength;for(let r=0;r1?r+n:i;if(Dt(t.subarray(r+4,r+8))===e[0])if(1===e.length)s.push(t.subarray(r+8,a));else{const i=Pt(t.subarray(r+8,a),e.slice(1));i.length&&bt.apply(s,i)}r=a}return s}function Ft(t){const e=[],s=t[0];let i=8;const r=wt(t,i);i+=4;let n=0,a=0;0===s?(n=wt(t,i),a=wt(t,i+4),i+=8):(n=Ct(t,i),a=Ct(t,i+8),i+=16),i+=2;let o=t.length+a;const l=It(t,i);i+=2;for(let s=0;s>>31)return k.warn("SIDX has hierarchical references (not supported)"),null;const l=wt(t,s);s+=4,e.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/r,start:o,end:o+a-1}}),o+=a,s+=4,i=s}return{earliestPresentationTime:n,timescale:r,version:s,referencesCount:l,references:e}}function Mt(t){const e=[],s=Pt(t,["moov","trak"]);for(let t=0;t{const s=wt(t,4),i=e[s];i&&(i.default={duration:wt(t,12),flags:wt(t,20)})})),e}function Ot(t){const e=t.subarray(8),s=e.subarray(86),i=Dt(e.subarray(4,8));let r=i;const n="enca"===i||"encv"===i;if(n){const t=Pt(e,[i])[0];Pt(t.subarray("enca"===i?28:78),["sinf"]).forEach((t=>{const e=Pt(t,["schm"])[0];if(e){const s=Dt(e.subarray(4,8));if("cbcs"===s||"cenc"===s){const e=Pt(t,["frma"])[0];e&&(r=Dt(e))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const t=Pt(s,["avcC"])[0];r+="."+Ut(t[1])+Ut(t[2])+Ut(t[3]);break}case"mp4a":{const t=Pt(e,[i])[0],s=Pt(t.subarray(28),["esds"])[0];if(s&&s.length>12){let t=4;if(3!==s[t++])break;t=Nt(s,t),t+=2;const e=s[t++];if(128&e&&(t+=2),64&e&&(t+=s[t++]),4!==s[t++])break;t=Nt(s,t);const i=s[t++];if(64!==i)break;if(r+="."+Ut(i),t+=12,5!==s[t++])break;t=Nt(s,t);const n=s[t++];let a=(248&n)>>3;31===a&&(a+=1+((7&n)<<3)+((224&s[t])>>5)),r+="."+a}break}case"hvc1":case"hev1":{const t=Pt(s,["hvcC"])[0],e=t[1],i=["","A","B","C"][e>>6],n=31&e,a=wt(t,2),o=(32&e)>>5?"H":"L",l=t[12],h=t.subarray(6,12);r+="."+i+n,r+="."+a.toString(16).toUpperCase(),r+="."+o+l;let d="";for(let t=h.length;t--;){const e=h[t];if(e||d){d="."+e.toString(16).toUpperCase()+d}}r+=d;break}case"dvh1":case"dvhe":{const t=Pt(s,["dvcC"])[0],e=t[2]>>1&127,i=t[2]<<5&32|t[3]>>3&31;r+="."+Bt(e)+"."+Bt(i);break}case"vp09":{const t=Pt(s,["vpcC"])[0],e=t[4],i=t[5],n=t[6]>>4&15;r+="."+Bt(e)+"."+Bt(i)+"."+Bt(n);break}case"av01":{const t=Pt(s,["av1C"])[0],e=t[1]>>>5,i=31&t[1],n=t[2]>>>7?"H":"M",a=(64&t[2])>>6,o=(32&t[2])>>5,l=2===e&&a?o?12:10:a?10:8,h=(16&t[2])>>4,d=(8&t[2])>>3,c=(4&t[2])>>2,u=3&t[2],f=1,g=1,m=1,p=0;r+="."+e+"."+Bt(i)+n+"."+Bt(l)+"."+h+"."+d+c+u+"."+Bt(f)+"."+Bt(g)+"."+Bt(m)+"."+p;break}}return{codec:r,encrypted:n}}function Nt(t,e){const s=e+5;for(;128&t[e++]&&e{const l=o.byteOffset-8;Pt(o,["traf"]).map((o=>{const h=Pt(o,["tfdt"]).map((t=>{const e=t[0];let s=wt(t,4);return 1===e&&(s*=Math.pow(2,32),s+=wt(t,8)),s/r}))[0];return void 0!==h&&(t=h),Pt(o,["tfhd"]).map((h=>{const d=wt(h,4),c=16777215&wt(h,0);let u=0;const f=0!=(16&c);let g=0;const m=0!=(32&c);let p=8;d===n&&(0!=(1&c)&&(p+=8),0!=(2&c)&&(p+=4),0!=(8&c)&&(u=wt(h,p),p+=4),f&&(g=wt(h,p),p+=4),m&&(p+=4),"video"===e.type&&(a=function(t){if(!t)return!1;const e=t.indexOf("."),s=e<0?t:t.substring(0,e);return"hvc1"===s||"hev1"===s||"dvh1"===s||"dvhe"===s}(e.codec)),Pt(o,["trun"]).map((n=>{const o=n[0],h=16777215&wt(n,0),d=0!=(1&h);let c=0;const f=0!=(4&h),m=0!=(256&h);let p=0;const v=0!=(512&h);let y=0;const T=0!=(1024&h),E=0!=(2048&h);let S=0;const L=wt(n,4);let A=8;d&&(c=wt(n,A),A+=4),f&&(A+=4);let R=c+l;for(let l=0;l>1&63;return 39===t||40===t}return 6===(31&e)}function Yt(t,e,s,i){const r=Wt(t);let n=0;n+=e;let a=0,o=0,l=0;for(;n=r.length)break;l=r[n++],a+=l}while(255===l);o=0;do{if(n>=r.length)break;l=r[n++],o+=l}while(255===l);const t=r.length-n;let e=n;if(ot){k.error(`Malformed SEI payload. ${o} is too small, only ${t} bytes left to parse.`);break}if(4===a){if(181===r[e++]){const t=It(r,e);if(e+=2,49===t){const t=wt(r,e);if(e+=4,1195456820===t){const t=r[e++];if(3===t){const n=r[e++],o=64&n,l=o?2+3*(31&n):0,h=new Uint8Array(l);if(o){h[0]=n;for(let t=1;t16){const t=[];for(let s=0;s<16;s++){const i=r[e++].toString(16);t.push(1==i.length?"0"+i:i),3!==s&&5!==s&&7!==s&&9!==s||t.push("-")}const n=o-16,l=new Uint8Array(n);for(let t=0;t0?(n=new Uint8Array(4),e.length>0&&new DataView(n.buffer).setUint32(0,e.length,!1)):n=new Uint8Array;const a=new Uint8Array(4);return s&&s.byteLength>0&&new DataView(a.buffer).setUint32(0,s.byteLength,!1),function(t,...e){const s=e.length;let i=8,r=s;for(;r--;)i+=e[r].byteLength;const n=new Uint8Array(i);for(n[0]=i>>24&255,n[1]=i>>16&255,n[2]=i>>8&255,n[3]=255&i,n.set(t,4),r=0,i=8;r>>24;if(0!==r&&1!==r)return{offset:s,size:e};const n=t.buffer,a=At(new Uint8Array(n,s+12,16)),o=t.getUint32(28);let l=null,h=null;if(0===r){if(e-32>8*(15-s)&255;return e}(t);return new zt(this.method,this.uri,"identity",this.keyFormatVersions,e)}const e=G(this.uri);if(e)switch(this.keyFormat){case q:this.pssh=e,e.length>=22&&(this.keyId=e.subarray(e.length-22,e.length-6));break;case j:{const t=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=jt(t,null,e);const s=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2),i=String.fromCharCode.apply(null,Array.from(s)),r=i.substring(i.indexOf("<"),i.length),n=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(n){const t=n.childNodes[0]?n.childNodes[0].nodeValue:n.getAttribute("VALUE");if(t){const e=$(t).subarray(0,16);!function(t){const e=function(t,e,s){const i=t[e];t[e]=t[s],t[s]=i};e(t,0,3),e(t,1,2),e(t,4,5),e(t,6,7)}(e),this.keyId=e}}break}default:{let t=e.subarray(0,16);if(16!==t.length){const e=new Uint8Array(16);e.set(t,16-t.length),t=e}this.keyId=t;break}}if(!this.keyId||16!==this.keyId.byteLength){let t=Xt[this.uri];if(!t){const e=Object.keys(Xt).length%Number.MAX_SAFE_INTEGER;t=new Uint8Array(16);new DataView(t.buffer,12,4).setUint32(0,e),Xt[this.uri]=t}this.keyId=t}return this}}const Qt=/\{\$([a-zA-Z0-9-_]+)\}/g;function Jt(t){return Qt.test(t)}function Zt(t,e,s){if(null!==t.variableList||t.hasVariableRefs)for(let i=s.length;i--;){const r=s[i],n=e[r];n&&(e[r]=te(t,n))}}function te(t,e){if(null!==t.variableList||t.hasVariableRefs){const s=t.variableList;return e.replace(Qt,(e=>{const i=e.substring(2,e.length-1),r=null==s?void 0:s[i];return void 0===r?(t.playlistParsingError||(t.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${i}"`)),e):r}))}return e}function ee(t,e,s){let i,r,n=t.variableList;if(n||(t.variableList=n={}),"QUERYPARAM"in e){i=e.QUERYPARAM;try{const t=new self.URL(s).searchParams;if(!t.has(i))throw new Error(`"${i}" does not match any query parameter in URI: "${s}"`);r=t.get(i)}catch(e){t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${e.message}`))}}else i=e.NAME,r=e.VALUE;i in n?t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${i}"`)):n[i]=r||""}function se(t,e,s){const i=e.IMPORT;if(s&&i in s){let e=t.variableList;e||(t.variableList=e={}),e[i]=s[i]}else t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${i}"`))}function ie(t=!0){if("undefined"==typeof self)return;return(t||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const re={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function ne(t,e,s=!0){return!t.split(",").some((t=>!ae(t,e,s)))}function ae(t,e,s=!0){var i;const r=ie(s);return null!=(i=null==r?void 0:r.isTypeSupported(oe(t,e)))&&i}function oe(t,e){return`${e}/mp4;codecs="${t}"`}function le(t){if(t){const e=t.substring(0,4);return re.video[e]}return 2}function he(t){return t.split(",").reduce(((t,e)=>{const s=re.video[e];return s?(2*s+t)/(t?3:2):(re.audio[e]+t)/(t?2:1)}),0)}const de={};const ce=/flac|opus/i;function ue(t,e=!0){return t.replace(ce,(t=>function(t,e=!0){if(de[t])return de[t];const s={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[t];for(let i=0;i0&&i.length({id:t.attrs.AUDIO,audioCodec:t.audioCodec}))),SUBTITLES:n.map((t=>({id:t.attrs.SUBTITLES,textCodec:t.textCodec}))),"CLOSED-CAPTIONS":[]};let o=0;for(me.lastIndex=0;null!==(i=me.exec(t));){const t=new w(i[1]),n=t.TYPE;if(n){const i=a[n],l=r[n]||[];r[n]=l,Zt(s,t,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const h=t.LANGUAGE,d=t["ASSOC-LANGUAGE"],c=t.CHANNELS,u=t.CHARACTERISTICS,f=t["INSTREAM-ID"],g={attrs:t,bitrate:0,id:o++,groupId:t["GROUP-ID"]||"",name:t.NAME||h||"",type:n,default:t.bool("DEFAULT"),autoselect:t.bool("AUTOSELECT"),forced:t.bool("FORCED"),lang:h,url:t.URI?Te.resolve(t.URI,e):""};if(d&&(g.assocLang=d),c&&(g.channels=c),u&&(g.characteristics=u),f&&(g.instreamId=f),null!=i&&i.length){const t=Te.findGroup(i,g.groupId)||i[0];Ae(g,t,"audioCodec"),Ae(g,t,"textCodec")}l.push(g)}}return r}static parseLevelPlaylist(t,e,s,i,r,n){const a=new B(e),o=a.fragments;let l,h,d,c=null,u=0,f=0,g=0,v=0,y=null,T=new N(i,e),E=-1,S=!1,L=null;for(ve.lastIndex=0,a.m3u8=t,a.hasVariableRefs=Jt(t);null!==(l=ve.exec(t));){S&&(S=!1,T=new N(i,e),T.start=g,T.sn=u,T.cc=v,T.level=s,c&&(T.initSegment=c,T.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,L&&(T.setByteRange(L),L=null)));const t=l[1];if(t){T.duration=parseFloat(t);const e=(" "+l[2]).slice(1);T.title=e||null,T.tagList.push(e?["INF",t,e]:["INF",t])}else if(l[3]){if(p(T.duration)){T.start=g,d&&ke(T,d,a),T.sn=u,T.level=s,T.cc=v,o.push(T);const t=(" "+l[3]).slice(1);T.relurl=te(a,t),Re(T,y),y=T,g+=T.duration,u++,f=0,S=!0}}else if(l[4]){const t=(" "+l[4]).slice(1);y?T.setByteRange(t,y):T.setByteRange(t)}else if(l[5])T.rawProgramDateTime=(" "+l[5]).slice(1),T.tagList.push(["PROGRAM-DATE-TIME",T.rawProgramDateTime]),-1===E&&(E=o.length);else{if(l=l[0].match(ye),!l){k.warn("No matches on slow regex match for level playlist!");continue}for(h=1;h0&&t.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=t.optionalFloat("PART-HOLD-BACK",0),a.holdBack=t.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const t=new w(r);a.partTarget=t.decimalFloatingPoint("PART-TARGET");break}case"PART":{let t=a.partList;t||(t=a.partList=[]);const s=f>0?t[t.length-1]:void 0,i=f++,n=new w(r);Zt(a,n,["BYTERANGE","URI"]);const o=new U(n,T,e,i,s);t.push(o),T.duration+=o.duration;break}case"PRELOAD-HINT":{const t=new w(r);Zt(a,t,["URI"]),a.preloadHint=t;break}case"RENDITION-REPORT":{const t=new w(r);Zt(a,t,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(t);break}default:k.warn(`line parsed but not handled: ${l}`)}}}y&&!y.relurl?(o.pop(),g-=y.duration,a.partList&&(a.fragmentHint=y)):a.partList&&(Re(T,y),T.cc=v,a.fragmentHint=T,d&&ke(T,d,a));const A=o.length,R=o[0],b=o[A-1];if(g+=a.skippedSegments*a.targetduration,g>0&&A&&b){a.averagetargetduration=g/A;const t=b.sn;a.endSN="initSegment"!==t?t:0,a.live||(b.endList=!0),R&&(a.startCC=R.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(g+=a.fragmentHint.duration),a.totalduration=g,a.endCC=v,E>0&&function(t,e){let s=t[e];for(let i=e;i--;){const e=t[i];if(!e)return;e.programDateTime=s.programDateTime-1e3*e.duration,s=e}}(o,E),a}}function Ee(t,e,s){var i,r;const n=new w(t);Zt(s,n,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(i=n.METHOD)?i:"",o=n.URI,l=n.hexadecimalInteger("IV"),h=n.KEYFORMATVERSIONS,d=null!=(r=n.KEYFORMAT)?r:"identity";o&&n.IV&&!l&&k.error(`Invalid IV: ${n.IV}`);const c=o?Te.resolve(o,e):"",u=(h||"1").split("/").map(Number).filter(Number.isFinite);return new zt(a,c,d,u,l)}function Se(t){const e=new w(t).decimalFloatingPoint("TIME-OFFSET");return p(e)?e:null}function Le(t,e){let s=(t||"").split(/[ ,]+/).filter((t=>t));["video","audio","text"].forEach((t=>{const i=s.filter((e=>function(t,e){const s=re[e];return!!s&&!!s[t.slice(0,4)]}(e,t)));i.length&&(e[`${t}Codec`]=i.join(","),s=s.filter((t=>-1===i.indexOf(t))))})),e.unknownCodecs=s}function Ae(t,e,s){const i=e[s];i&&(t[s]=i)}function Re(t,e){t.rawProgramDateTime?t.programDateTime=Date.parse(t.rawProgramDateTime):null!=e&&e.programDateTime&&(t.programDateTime=e.endProgramDateTime),p(t.programDateTime)||(t.programDateTime=null,t.rawProgramDateTime=null)}function be(t,e,s,i){t.relurl=e.URI,e.BYTERANGE&&t.setByteRange(e.BYTERANGE),t.level=s,t.sn="initSegment",i&&(t.levelkeys=i),t.initSegment=null}function ke(t,e,s){t.levelkeys=e;const{encryptedFragments:i}=s;i.length&&i[i.length-1].levelkeys===e||!Object.keys(e).some((t=>e[t].isCommonEncryption))||i.push(t)}var De="manifest",Ie="level",we="audioTrack",Ce="subtitleTrack",_e="main",xe="audio",Pe="subtitle";function Fe(t){const{type:e}=t;switch(e){case we:return xe;case Ce:return Pe;default:return _e}}function Me(t,e){let s=t.url;return void 0!==s&&0!==s.indexOf("data:")||(s=e.url),s}class Oe{constructor(t){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=t,this.registerListeners()}startLoad(t){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.on(T.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.off(T.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(t){const e=this.hls.config,s=e.pLoader,i=e.loader,r=new(s||i)(e);return this.loaders[t.type]=r,r}getInternalLoader(t){return this.loaders[t.type]}resetInternalLoader(t){this.loaders[t]&&delete this.loaders[t]}destroyInternalLoaders(){for(const t in this.loaders){const e=this.loaders[t];e&&e.destroy(),this.resetInternalLoader(t)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(t,e){const{url:s}=e;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:De,url:s,deliveryDirectives:null})}onLevelLoading(t,e){const{id:s,level:i,pathwayId:r,url:n,deliveryDirectives:a}=e;this.load({id:s,level:i,pathwayId:r,responseType:"text",type:Ie,url:n,deliveryDirectives:a})}onAudioTrackLoading(t,e){const{id:s,groupId:i,url:r,deliveryDirectives:n}=e;this.load({id:s,groupId:i,level:null,responseType:"text",type:we,url:r,deliveryDirectives:n})}onSubtitleTrackLoading(t,e){const{id:s,groupId:i,url:r,deliveryDirectives:n}=e;this.load({id:s,groupId:i,level:null,responseType:"text",type:Ce,url:r,deliveryDirectives:n})}load(t){var e;const s=this.hls.config;let i,r=this.getInternalLoader(t);if(r){const e=r.context;if(e&&e.url===t.url&&e.level===t.level)return void k.trace("[playlist-loader]: playlist request ongoing");k.log(`[playlist-loader]: aborting previous loader for type: ${t.type}`),r.abort()}if(i=t.type===De?s.manifestLoadPolicy.default:m({},s.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(t),p(null==(e=t.deliveryDirectives)?void 0:e.part)){let e;if(t.type===Ie&&null!==t.level?e=this.hls.levels[t.level].details:t.type===we&&null!==t.id?e=this.hls.audioTracks[t.id].details:t.type===Ce&&null!==t.id&&(e=this.hls.subtitleTracks[t.id].details),e){const t=e.partTarget,s=e.targetduration;if(t&&s){const e=1e3*Math.max(3*t,.8*s);i=m({},i,{maxTimeToFirstByteMs:Math.min(e,i.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(e,i.maxTimeToFirstByteMs)})}}}const n=i.errorRetry||i.timeoutRetry||{},a={loadPolicy:i,timeout:i.maxLoadTimeMs,maxRetry:n.maxNumRetry||0,retryDelay:n.retryDelayMs||0,maxRetryDelay:n.maxRetryDelayMs||0},o={onSuccess:(t,e,s,i)=>{const r=this.getInternalLoader(s);this.resetInternalLoader(s.type);const n=t.data;0===n.indexOf("#EXTM3U")?(e.parsing.start=performance.now(),Te.isMediaPlaylist(n)?this.handleTrackOrLevelPlaylist(t,e,s,i||null,r):this.handleMasterPlaylist(t,e,s,i)):this.handleManifestParsingError(t,s,new Error("no EXTM3U delimiter"),i||null,e)},onError:(t,e,s,i)=>{this.handleNetworkError(e,s,!1,t,i)},onTimeout:(t,e,s)=>{this.handleNetworkError(e,s,!0,void 0,t)}};r.load(t,a,o)}handleMasterPlaylist(t,e,s,i){const r=this.hls,n=t.data,a=Me(t,s),o=Te.parseMasterPlaylist(n,a);if(o.playlistParsingError)return void this.handleManifestParsingError(t,s,o.playlistParsingError,i,e);const{contentSteering:l,levels:h,sessionData:d,sessionKeys:c,startTimeOffset:u,variableList:f}=o;this.variableList=f;const{AUDIO:g=[],SUBTITLES:m,"CLOSED-CAPTIONS":p}=Te.parseMasterPlaylistMedia(n,a,o);if(g.length){g.some((t=>!t.url))||!h[0].audioCodec||h[0].attrs.AUDIO||(k.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),g.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new w({}),bitrate:0,url:""}))}r.trigger(T.MANIFEST_LOADED,{levels:h,audioTracks:g,subtitles:m,captions:p,contentSteering:l,url:a,stats:e,networkDetails:i,sessionData:d,sessionKeys:c,startTimeOffset:u,variableList:f})}handleTrackOrLevelPlaylist(t,e,s,i,r){const n=this.hls,{id:a,level:o,type:l}=s,h=Me(t,s),d=p(o)?o:p(a)?a:0,c=Fe(s),u=Te.parseLevelPlaylist(t.data,h,d,c,0,this.variableList);if(l===De){const t={attrs:new w({}),bitrate:0,details:u,name:"",url:h};n.trigger(T.MANIFEST_LOADED,{levels:[t],audioTracks:[],url:h,stats:e,networkDetails:i,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}e.parsing.end=performance.now(),s.levelDetails=u,this.handlePlaylistLoaded(u,t,e,s,i,r)}handleManifestParsingError(t,e,s,i,r){this.hls.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.MANIFEST_PARSING_ERROR,fatal:e.type===De,url:t.url,err:s,error:s,reason:s.message,response:t,context:e,networkDetails:i,stats:r})}handleNetworkError(t,e,s=!1,i,r){let n=`A network ${s?"timeout":"error"+(i?" (status "+i.code+")":"")} occurred while loading ${t.type}`;t.type===Ie?n+=`: ${t.level} id: ${t.id}`:t.type!==we&&t.type!==Ce||(n+=` id: ${t.id} group-id: "${t.groupId}"`);const a=new Error(n);k.warn(`[playlist-loader]: ${n}`);let o=S.UNKNOWN,l=!1;const h=this.getInternalLoader(t);switch(t.type){case De:o=s?S.MANIFEST_LOAD_TIMEOUT:S.MANIFEST_LOAD_ERROR,l=!0;break;case Ie:o=s?S.LEVEL_LOAD_TIMEOUT:S.LEVEL_LOAD_ERROR,l=!1;break;case we:o=s?S.AUDIO_TRACK_LOAD_TIMEOUT:S.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case Ce:o=s?S.SUBTITLE_TRACK_LOAD_TIMEOUT:S.SUBTITLE_LOAD_ERROR,l=!1}h&&this.resetInternalLoader(t.type);const d={type:E.NETWORK_ERROR,details:o,fatal:l,url:t.url,loader:h,context:t,error:a,networkDetails:e,stats:r};if(i){const s=(null==e?void 0:e.url)||t.url;d.response=u({url:s,data:void 0},i)}this.hls.trigger(T.ERROR,d)}handlePlaylistLoaded(t,e,s,i,r,n){const a=this.hls,{type:o,level:l,id:h,groupId:d,deliveryDirectives:c}=i,u=Me(e,i),f=Fe(i),g="number"==typeof i.level&&f===_e?l:void 0;if(!t.fragments.length){const t=new Error("No Segments found in Playlist");return void a.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:t,reason:t.message,response:e,context:i,level:g,parent:f,networkDetails:r,stats:s})}t.targetduration||(t.playlistParsingError=new Error("Missing Target Duration"));const m=t.playlistParsingError;if(m)a.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:e,context:i,level:g,parent:f,networkDetails:r,stats:s});else switch(t.live&&n&&(n.getCacheAge&&(t.ageHeader=n.getCacheAge()||0),n.getCacheAge&&!isNaN(t.ageHeader)||(t.ageHeader=0)),o){case De:case Ie:a.trigger(T.LEVEL_LOADED,{details:t,level:g||0,id:h||0,stats:s,networkDetails:r,deliveryDirectives:c});break;case we:a.trigger(T.AUDIO_TRACK_LOADED,{details:t,id:h||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:c});break;case Ce:a.trigger(T.SUBTITLE_TRACK_LOADED,{details:t,id:h||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:c})}}}function Ne(t,e){let s;try{s=new Event("addtrack")}catch(t){s=document.createEvent("Event"),s.initEvent("addtrack",!1,!1)}s.track=t,e.dispatchEvent(s)}function Ue(t,e){const s=t.mode;if("disabled"===s&&(t.mode="hidden"),t.cues&&!t.cues.getCueById(e.id))try{if(t.addCue(e),!t.cues.getCueById(e.id))throw new Error(`addCue is failed for: ${e}`)}catch(s){k.debug(`[texttrack-utils]: ${s}`);try{const s=new self.TextTrackCue(e.startTime,e.endTime,e.text);s.id=e.id,t.addCue(s)}catch(t){k.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${t}`)}}"disabled"===s&&(t.mode=s)}function Be(t){const e=t.mode;if("disabled"===e&&(t.mode="hidden"),t.cues)for(let e=t.cues.length;e--;)t.removeCue(t.cues[e]);"disabled"===e&&(t.mode=e)}function $e(t,e,s,i){const r=t.mode;if("disabled"===r&&(t.mode="hidden"),t.cues&&t.cues.length>0){const r=function(t,e,s){const i=[],r=function(t,e){if(et[s].endTime)return-1;let i=0,r=s;for(;i<=r;){const n=Math.floor((r+i)/2);if(et[n].startTime&&i-1)for(let n=r,a=t.length;n=e&&r.endTime<=s)i.push(r);else if(r.startTime>s)return i}return i}(t.cues,e,s);for(let e=0;e{const t=Ye();try{t&&new t(0,Number.POSITIVE_INFINITY,"")}catch(t){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function qe(t,e){return t.getTime()/1e3-e}class Xe{constructor(t){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=t,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(T.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(T.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(t,e){this.media=e.media}onMediaDetaching(){this.id3Track&&(Be(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(t){const e=this.getID3Track(t.textTracks);return e.mode="hidden",e}getID3Track(t){if(this.media){for(let e=0;eje&&(i=je);i-s<=0&&(i=s+.25);for(let t=0;tt.type===Ke&&o:"video"===i?t=>t.type===Ve&&a:t=>t.type===Ke&&o||t.type===Ve&&a,$e(r,e,s,t)}}onLevelUpdated(t,{details:e}){if(!this.media||!e.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:s,id3Track:i}=this,{dateRanges:r}=e,n=Object.keys(r);if(i){const t=Object.keys(s).filter((t=>!n.includes(t)));for(let e=t.length;e--;){const r=t[e];Object.keys(s[r].cues).forEach((t=>{i.removeCue(s[r].cues[t])})),delete s[r]}}const a=e.fragments[e.fragments.length-1];if(0===n.length||!p(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const o=a.programDateTime/1e3-a.start,l=Ye();for(let t=0;t{if(e!==i.id){const s=r[e];if(s.class===i.class&&s.startDate>i.startDate&&(!t||i.startDatethis.timeupdate(),this.hls=t,this.config=t.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:t,levelDetails:e}=this;return void 0!==t.liveMaxLatencyDuration?t.liveMaxLatencyDuration:e?t.liveMaxLatencyDurationCount*e.targetduration:0}get targetLatency(){const{levelDetails:t}=this;if(null===t)return null;const{holdBack:e,partHoldBack:s,targetduration:i}=t,{liveSyncDuration:r,liveSyncDurationCount:n,lowLatencyMode:a}=this.config,o=this.hls.userConfig;let l=a&&s||e;(o.liveSyncDuration||o.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:n*i);const h=i;return l+Math.min(1*this.stallCount,h)}get liveSyncPosition(){const t=this.estimateLiveEdge(),e=this.targetLatency,s=this.levelDetails;if(null===t||null===e||null===s)return null;const i=s.edge,r=t-e-this.edgeStalled,n=i-s.totalduration,a=i-(this.config.lowLatencyMode&&s.partTarget||s.targetduration);return Math.min(Math.max(n,r),a)}get drift(){const{levelDetails:t}=this;return null===t?1:t.drift}get edgeStalled(){const{levelDetails:t}=this;if(null===t)return 0;const e=3*(this.config.lowLatencyMode&&t.partTarget||t.targetduration);return Math.max(t.age-e,0)}get forwardBufferLength(){const{media:t,levelDetails:e}=this;if(!t||!e)return 0;const s=t.buffered.length;return(s?t.buffered.end(s-1):e.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(T.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(T.ERROR,this.onError,this)}onMediaAttached(t,e){this.media=e.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(t,{details:e}){this.levelDetails=e,e.advanced&&this.timeupdate(),!e.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(t,e){var s;e.details===S.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(s=this.levelDetails)&&s.live&&k.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:t,levelDetails:e}=this;if(!t||!e)return;this.currentTime=t.currentTime;const s=this.computeLatency();if(null===s)return;this._latency=s;const{lowLatencyMode:i,maxLiveSyncPlaybackRate:r}=this.config;if(!i||1===r||!e.live)return;const n=this.targetLatency;if(null===n)return;const a=s-n;if(a.05&&this.forwardBufferLength>1){const e=Math.min(2,Math.max(1,r)),s=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;t.playbackRate=Math.min(e,Math.max(1,s))}else 1!==t.playbackRate&&0!==t.playbackRate&&(t.playbackRate=1)}estimateLiveEdge(){const{levelDetails:t}=this;return null===t?null:t.edge+t.age}computeLatency(){const t=this.estimateLiveEdge();return null===t?null:t-this.currentTime}}const Qe=["NONE","TYPE-0","TYPE-1",null];const Je=["SDR","PQ","HLG"];var Ze="",ts="YES",es="v2";function ss(t){const{canSkipUntil:e,canSkipDateRanges:s,age:i}=t;return e&&i!!t)).map((t=>t.substring(0,4))).join(","),this.addGroupId("audio",t.attrs.AUDIO),this.addGroupId("text",t.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(t){return ns(this._audioGroups,t)}hasSubtitleGroup(t){return ns(this._subtitleGroups,t)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(t,e){if(e)if("audio"===t){let t=this._audioGroups;t||(t=this._audioGroups=[]),-1===t.indexOf(e)&&t.push(e)}else if("text"===t){let t=this._subtitleGroups;t||(t=this._subtitleGroups=[]),-1===t.indexOf(e)&&t.push(e)}}get urlId(){return 0}set urlId(t){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var t;return null==(t=this.audioGroups)?void 0:t[0]}get textGroupId(){var t;return null==(t=this.subtitleGroups)?void 0:t[0]}addFallback(){}}function ns(t,e){return!(!e||!t)&&-1!==t.indexOf(e)}function as(t,e){const s=e.startPTS;if(p(s)){let i,r=0;e.sn>t.sn?(r=s-t.start,i=t):(r=t.start-s,i=e),i.duration!==r&&(i.duration=r)}else if(e.sn>t.sn){t.cc===e.cc&&t.minEndPTS?e.start=t.start+(t.minEndPTS-t.start):e.start=t.start+t.duration}else e.start=Math.max(t.start-e.duration,0)}function os(t,e,s,i,r,n){i-s<=0&&(k.warn("Fragment should have a positive duration",e),i=s+e.duration,n=r+e.duration);let a=s,o=i;const l=e.startPTS,h=e.endPTS;if(p(l)){const t=Math.abs(l-s);p(e.deltaPTS)?e.deltaPTS=Math.max(t,e.deltaPTS):e.deltaPTS=t,a=Math.max(s,l),s=Math.min(s,l),r=Math.min(r,e.startDTS),o=Math.min(i,h),i=Math.max(i,h),n=Math.max(n,e.endDTS)}const d=s-e.start;0!==e.start&&(e.start=s),e.duration=i-e.start,e.startPTS=s,e.maxStartPTS=a,e.startDTS=r,e.endPTS=i,e.minEndPTS=o,e.endDTS=n;const c=e.sn;if(!t||ct.endSN)return 0;let u;const f=c-t.startSN,g=t.fragments;for(g[f]=e,u=f;u>0;u--)as(g[u],g[u-1]);for(u=f;u=0;t--){const e=i[t].initSegment;if(e){s=e;break}}t.fragmentHint&&delete t.fragmentHint.endPTS;let r,n=0;if(function(t,e,s){const i=e.skippedSegments,r=Math.max(t.startSN,e.startSN)-e.startSN,n=(t.fragmentHint?1:0)+(i?e.endSN:Math.min(t.endSN,e.endSN))-e.startSN,a=e.startSN-t.startSN,o=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,l=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments;for(let t=r;t<=n;t++){const r=l[a+t];let n=o[t];i&&!n&&t{t.relurl&&(n=t.cc-i.cc),p(t.startPTS)&&p(t.endPTS)&&(i.start=i.startPTS=t.startPTS,i.startDTS=t.startDTS,i.maxStartPTS=t.maxStartPTS,i.endPTS=t.endPTS,i.endDTS=t.endDTS,i.minEndPTS=t.minEndPTS,i.duration=t.endPTS-t.startPTS,i.duration&&(r=i),e.PTSKnown=e.alignedSliding=!0),i.elementaryStreams=t.elementaryStreams,i.loader=t.loader,i.stats=t.stats,t.initSegment&&(i.initSegment=t.initSegment,s=t.initSegment)})),s){(e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments).forEach((t=>{var e;!t||t.initSegment&&t.initSegment.relurl!==(null==(e=s)?void 0:e.relurl)||(t.initSegment=s)}))}if(e.skippedSegments)if(e.deltaUpdateFailed=e.fragments.some((t=>!t)),e.deltaUpdateFailed){k.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let t=e.skippedSegments;t--;)e.fragments.shift();e.startSN=e.fragments[0].sn,e.startCC=e.fragments[0].cc}else e.canSkipDateRanges&&(e.dateRanges=function(t,e,s){const i=m({},t);s&&s.forEach((t=>{delete i[t]}));return Object.keys(e).forEach((t=>{const s=new _(e[t].attr,i[t]);s.isValid?i[t]=s:k.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(e[t].attr)}"`)})),i}(t.dateRanges,e.dateRanges,e.recentlyRemovedDateranges));const a=e.fragments;if(n){k.warn("discontinuity sliding from playlist, take drift into account");for(let t=0;t{e.elementaryStreams=t.elementaryStreams,e.stats=t.stats})),r?os(e,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):hs(t,e),a.length&&(e.totalduration=e.edge-a[0].start),e.driftStartTime=t.driftStartTime,e.driftStart=t.driftStart;const o=e.advancedDateTime;if(e.advanced&&o){const t=e.edge;e.driftStart||(e.driftStartTime=o,e.driftStart=t),e.driftEndTime=o,e.driftEnd=t}else e.driftEndTime=t.driftEndTime,e.driftEnd=t.driftEnd,e.advancedDateTime=t.advancedDateTime}function hs(t,e){const s=e.startSN+e.skippedSegments-t.startSN,i=t.fragments;s<0||s>=i.length||ds(e,i[s].start)}function ds(t,e){if(e){const s=t.fragments;for(let i=t.skippedSegments;i{const{details:s}=t;null!=s&&s.fragments&&s.fragments.forEach((t=>{t.level=e}))}))}function gs(t){switch(t.details){case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_TIMEOUT:case S.LEVEL_LOAD_TIMEOUT:case S.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function ms(t,e){const s=gs(e);return t.default[(s?"timeout":"error")+"Retry"]}function ps(t,e){const s="linear"===t.backoff?1:Math.pow(2,e);return Math.min(s*t.retryDelayMs,t.maxRetryDelayMs)}function vs(t){return u(u({},t),{errorRetry:null,timeoutRetry:null})}function ys(t,e,s,i){if(!t)return!1;const r=null==i?void 0:i.code,n=e499)}(r)||!!s);return t.shouldRetry?t.shouldRetry(t,e,s,i,n):n}const Ts=function(t,e){let s=0,i=t.length-1,r=null,n=null;for(;s<=i;){r=(s+i)/2|0,n=t[r];const a=e(n);if(a>0)s=r+1;else{if(!(a<0))return n;i=r-1}}return null};function Es(t,e,s=0,i=0,r=.005){let n=null;if(t){n=e[t.sn-e[0].sn+1]||null;const i=t.endDTS-s;i>0&&i<15e-7&&(s+=15e-7)}else 0===s&&0===e[0].start&&(n=e[0]);if(n&&((!t||t.level===n.level)&&0===Ss(s,i,n)||function(t,e,s){if(e&&0===e.start&&e.level0){const i=e.tagList.reduce(((t,e)=>("INF"===e[0]&&(t+=parseFloat(e[1])),t)),s);return t.start<=i}return!1}(n,t,Math.min(r,i))))return n;const a=Ts(e,Ss.bind(null,s,i));return!a||a===t&&n?n:a}function Ss(t=0,e=0,s){if(s.start<=t&&s.start+s.duration>t)return 0;const i=Math.min(e,s.duration+(s.deltaPTS?s.deltaPTS:0));return s.start+s.duration-i<=t?1:s.start-i>t&&s.start?-1:0}function Ls(t,e,s){const i=1e3*Math.min(e,s.duration+(s.deltaPTS?s.deltaPTS:0));return(s.endProgramDateTime||0)-i>t}var As=0,Rs=2,bs=3,ks=5,Ds=0,Is=1,ws=2;class Cs{constructor(t,e){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=k.log.bind(k,`${e}:`),this.warn=k.warn.bind(k,`${e}:`),this.hls=t}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(t,e,s){const i=null==e?void 0:e.renditionReports;if(i){let r=-1;for(let s=0;s=0&&t>e.partTarget&&(a+=1)}const o=s&&ss(s);return new is(n,a>=0?a:void 0,o)}}}loadPlaylist(t){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(t){return this.canLoad&&!!t&&!!t.url&&(!t.details||t.details.live)}shouldReloadPlaylist(t){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(t)}playlistLoaded(t,e,s){const{details:i,stats:r}=e,n=self.performance.now(),a=r.loading.first?Math.max(0,n-r.loading.first):0;if(i.advancedDateTime=Date.now()-a,i.live||null!=s&&s.live){if(i.reloaded(s),s&&this.log(`live playlist ${t} ${i.advanced?"REFRESHED "+i.lastPartSn+"-"+i.lastPartIndex:i.updated?"UPDATED":"MISSED"}`),s&&i.fragments.length>0&&ls(s,i),!this.canLoad||!i.live)return;let a,o,l;if(i.canBlockReload&&i.endSN&&i.advanced){const t=this.hls.config.lowLatencyMode,r=i.lastPartSn,n=i.endSN,h=i.lastPartIndex,d=r===n;-1!==h?(o=d?n+1:r,l=d?t?0:h:h+1):o=n+1;const c=i.age,u=c+i.ageHeader;let f=Math.min(u-i.partTarget,1.5*i.targetduration);if(f>0){if(s&&f>s.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${s.tuneInGoal} to: ${f} with playlist age: ${i.age}`),f=0;else{const t=Math.floor(f/i.targetduration);if(o+=t,void 0!==l){l+=Math.round(f%i.targetduration/i.partTarget)}this.log(`CDN Tune-in age: ${i.ageHeader}s last advanced ${c.toFixed(2)}s goal: ${f} skip sn ${t} to part ${l}`)}i.tuneInGoal=f}if(a=this.getDeliveryDirectives(i,e.deliveryDirectives,o,l),t||!d)return void this.loadPlaylist(a)}else(i.canBlockReload||i.canSkipUntil)&&(a=this.getDeliveryDirectives(i,e.deliveryDirectives,o,l));const h=this.hls.mainForwardBufferInfo,d=h?h.end-h.len:0,c=function(t,e=1/0){let s=1e3*t.targetduration;if(t.updated){const i=t.fragments,r=4;if(i.length&&s*r>e){const t=1e3*i[i.length-1].duration;tthis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==o&&i.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*i.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(t,e,s,i){let r=ss(t);return null!=e&&e.skip&&t.deltaUpdateFailed&&(s=e.msn,i=e.part,r=Ze),new is(s,i,r)}checkRetry(t){const e=t.details,s=gs(t),i=t.errorAction,{action:r,retryCount:n=0,retryConfig:a}=i||{},o=!!i&&!!a&&(r===ks||!i.resolved&&r===Rs);if(o){var l;if(this.requestScheduled=-1,n>=a.maxNumRetry)return!1;if(s&&null!=(l=t.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${e}" without delivery-directives`),this.loadPlaylist();else{const t=ps(a,n);this.timer=self.setTimeout((()=>this.loadPlaylist()),t),this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${e}" in ${t}ms`)}t.levelRetry=!0,i.resolved=!0}return o}}class _s{constructor(t,e=0,s=0){this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=t,this.alpha_=t?Math.exp(Math.log(.5)/t):0,this.estimate_=e,this.totalWeight_=s}sample(t,e){const s=Math.pow(this.alpha_,t);this.estimate_=e*(1-s)+s*this.estimate_,this.totalWeight_+=t}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const t=1-Math.pow(this.alpha_,this.totalWeight_);if(t)return this.estimate_/t}return this.estimate_}}class xs{constructor(t,e,s,i=100){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=s,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new _s(t),this.fast_=new _s(e),this.defaultTTFB_=i,this.ttfb_=new _s(t)}update(t,e){const{slow_:s,fast_:i,ttfb_:r}=this;s.halfLife!==t&&(this.slow_=new _s(t,s.getEstimate(),s.getTotalWeight())),i.halfLife!==e&&(this.fast_=new _s(e,i.getEstimate(),i.getTotalWeight())),r.halfLife!==t&&(this.ttfb_=new _s(t,r.getEstimate(),r.getTotalWeight()))}sample(t,e){const s=(t=Math.max(t,this.minDelayMs_))/1e3,i=8*e/s;this.fast_.sample(s,i),this.slow_.sample(s,i)}sampleTTFB(t){const e=t/1e3,s=Math.sqrt(2)*Math.exp(-Math.pow(e,2)/2);this.ttfb_.sample(s,Math.max(t,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const Ps={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},Fs={};function Ms(t,e,s,i,r,n){const a=t.audioCodec?t.audioGroups:null,o=null==n?void 0:n.audioCodec,l=null==n?void 0:n.channels,h=l?parseInt(l):o?1/0:2;let d=null;if(null!=a&&a.length)try{d=1===a.length&&a[0]?e.groups[a[0]].channels:a.reduce(((t,s)=>{if(s){const i=e.groups[s];if(!i)throw new Error(`Audio track group ${s} not found`);Object.keys(i.channels).forEach((e=>{t[e]=(t[e]||0)+i.channels[e]}))}return t}),{2:0})}catch(t){return!0}return void 0!==t.videoCodec&&(t.width>1920&&t.height>1088||t.height>1920&&t.width>1088||t.frameRate>Math.max(i,30)||"SDR"!==t.videoRange&&t.videoRange!==s||t.bitrate>Math.max(r,8e6))||!!d&&p(h)&&Object.keys(d).some((t=>parseInt(t)>h))}function Os(t,e,s){const i=t.videoCodec,r=t.audioCodec;if(!i||!r||!s)return Promise.resolve(Ps);const n={width:t.width,height:t.height,bitrate:Math.ceil(Math.max(.9*t.bitrate,t.averageBitrate)),framerate:t.frameRate||30},a=t.videoRange;"SDR"!==a&&(n.transferFunction=a.toLowerCase());const o=i.split(",").map((t=>({type:"media-source",video:u(u({},n),{},{contentType:oe(t,"video")})})));return r&&t.audioGroups&&t.audioGroups.forEach((t=>{var s;t&&(null==(s=e.groups[t])||s.tracks.forEach((e=>{if(e.groupId===t){const t=e.channels||"",s=parseFloat(t);p(s)&&s>2&&o.push.apply(o,r.split(",").map((t=>({type:"media-source",audio:{contentType:oe(t,"audio"),channels:""+s}}))))}})))})),Promise.all(o.map((t=>{const e=function(t){const{audio:e,video:s}=t,i=s||e;if(i){const t=i.contentType.split('"')[1];if(s)return`r${s.height}x${s.width}f${Math.ceil(s.framerate)}${s.transferFunction||"sd"}_${t}_${Math.ceil(s.bitrate/1e5)}`;if(e)return`c${e.channels}${e.spatialRendering?"s":"n"}_${t}`}return""}(t);return Fs[e]||(Fs[e]=s.decodingInfo(t))}))).then((t=>({supported:!t.some((t=>!t.supported)),configurations:o,decodingInfoResults:t}))).catch((t=>({supported:!1,configurations:o,decodingInfoResults:[],error:t})))}function Ns(t,e){let s=!1,i=[];return t&&(s="SDR"!==t,i=[t]),e&&(i=e.allowedVideoRanges||Je.slice(0),s=void 0!==e.preferHDR?e.preferHDR:function(){if("function"==typeof matchMedia){const t=matchMedia("(dynamic-range: high)"),e=matchMedia("bad query");if(t.media!==e.media)return!0===t.matches}return!1}(),i=s?i.filter((t=>"SDR"!==t)):["SDR"]),{preferHDR:s,allowedVideoRanges:i}}function Us(t,e){k.log(`[abr] start candidates with "${t}" ignored because ${e}`)}function Bs(t,e,s){if("attrs"in t){const s=e.indexOf(t);if(-1!==s)return s}for(let i=0;i-1===i.indexOf(t)))}(o,e.characteristics))&&(void 0===s||s(t,e))}function Gs(t,e){const{audioCodec:s,channels:i}=t;return!(void 0!==s&&(e.audioCodec||"").substring(0,4)!==s.substring(0,4)||void 0!==i&&i!==(e.channels||"2"))}function Ks(t,e,s){for(let i=e;i>-1;i--)if(s(t[i]))return i;for(let i=e+1;i1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}var Vs="NOT_LOADED",Ys="APPENDING",Ws="PARTIAL",js="OK";class qs{constructor(t){this.activePartLists=Object.create(null),this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hasGaps=!1,this.hls=t,this._registerListeners()}_registerListeners(){const{hls:t}=this;t.on(T.BUFFER_APPENDED,this.onBufferAppended,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.BUFFER_APPENDED,this.onBufferAppended,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this)}destroy(){this._unregisterListeners(),this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null}getAppendedFrag(t,e){const s=this.activePartLists[e];if(s)for(let e=s.length;e--;){const i=s[e];if(!i)break;const r=i.end;if(i.start<=t&&null!==r&&t<=r)return i}return this.getBufferedFrag(t,e)}getBufferedFrag(t,e){const{fragments:s}=this,i=Object.keys(s);for(let r=i.length;r--;){const n=s[i[r]];if((null==n?void 0:n.body.type)===e&&n.buffered){const e=n.body;if(e.start<=t&&t<=e.end)return e}}return null}detectEvictedFragments(t,e,s,i){this.timeRanges&&(this.timeRanges[t]=e);const r=(null==i?void 0:i.fragment.sn)||-1;Object.keys(this.fragments).forEach((i=>{const n=this.fragments[i];if(!n)return;if(r>=n.body.sn)return;if(!n.buffered&&!n.loaded)return void(n.body.type===s&&this.removeFragment(n.body));const a=n.range[t];a&&a.time.some((t=>{const s=!this.isTimeBuffered(t.startPTS,t.endPTS,e);return s&&this.removeFragment(n.body),s}))}))}detectPartialFragments(t){const e=this.timeRanges,{frag:s,part:i}=t;if(!e||"initSegment"===s.sn)return;const r=zs(s),n=this.fragments[r];if(!n||n.buffered&&s.gap)return;const a=!s.relurl;if(Object.keys(e).forEach((t=>{const r=s.elementaryStreams[t];if(!r)return;const o=e[t],l=a||!0===r.partial;n.range[t]=this.getBufferedTimes(s,i,l,o)})),n.loaded=null,Object.keys(n.range).length){n.buffered=!0;(n.body.endList=s.endList||n.body.endList)&&(this.endListFragments[n.body.type]=n),Xs(n)||this.removeParts(s.sn-1,s.type)}else this.removeFragment(n.body)}removeParts(t,e){const s=this.activePartLists[e];s&&(this.activePartLists[e]=s.filter((e=>e.fragment.sn>=t)))}fragBuffered(t,e){const s=zs(t);let i=this.fragments[s];!i&&e&&(i=this.fragments[s]={body:t,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},t.gap&&(this.hasGaps=!0)),i&&(i.loaded=null,i.buffered=!0)}getBufferedTimes(t,e,s,i){const r={time:[],partial:s},n=t.start,a=t.end,o=t.minEndPTS||a,l=t.maxStartPTS||n;for(let t=0;t=e&&o<=s){r.time.push({startPTS:Math.max(n,i.start(t)),endPTS:Math.min(a,i.end(t))});break}if(ne){const e=Math.max(n,i.start(t)),s=Math.min(a,i.end(t));s>e&&(r.partial=!0,r.time.push({startPTS:e,endPTS:s}))}else if(a<=e)break}return r}getPartialFragment(t){let e,s,i,r=null,n=0;const{bufferPadding:a,fragments:o}=this;return Object.keys(o).forEach((l=>{const h=o[l];h&&Xs(h)&&(s=h.body.start-a,i=h.body.end+a,t>=s&&t<=i&&(e=Math.min(t-s,i-t),n<=e&&(r=h.body,n=e)))})),r}isEndListAppended(t){const e=this.endListFragments[t];return void 0!==e&&(e.buffered||Xs(e))}getState(t){const e=zs(t),s=this.fragments[e];return s?s.buffered?Xs(s)?Ws:js:Ys:Vs}isTimeBuffered(t,e,s){let i,r;for(let n=0;n=i&&e<=r)return!0;if(e<=i)return!1}return!1}onFragLoaded(t,e){const{frag:s,part:i}=e;if("initSegment"===s.sn||s.bitrateTest)return;const r=i?null:e,n=zs(s);this.fragments[n]={body:s,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(t,e){const{frag:s,part:i,timeRanges:r}=e;if("initSegment"===s.sn)return;const n=s.type;if(i){let t=this.activePartLists[n];t||(this.activePartLists[n]=t=[]),t.push(i)}this.timeRanges=r,Object.keys(r).forEach((t=>{const e=r[t];this.detectEvictedFragments(t,e,n,i)}))}onFragBuffered(t,e){this.detectPartialFragments(e)}hasFragment(t){const e=zs(t);return!!this.fragments[e]}hasParts(t){var e;return!(null==(e=this.activePartLists[t])||!e.length)}removeFragmentsInRange(t,e,s,i,r){i&&!this.hasGaps||Object.keys(this.fragments).forEach((n=>{const a=this.fragments[n];if(!a)return;const o=a.body;o.type!==s||i&&!o.gap||o.startt&&(a.buffered||r)&&this.removeFragment(o)}))}removeFragment(t){const e=zs(t);t.stats.loaded=0,t.clearElementaryStreamInfo();const s=this.activePartLists[t.type];if(s){const e=t.sn;this.activePartLists[t.type]=s.filter((t=>t.fragment.sn!==e))}delete this.fragments[e],t.endList&&delete this.endListFragments[t.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function Xs(t){var e,s,i;return t.buffered&&(t.body.gap||(null==(e=t.range.video)?void 0:e.partial)||(null==(s=t.range.audio)?void 0:s.partial)||(null==(i=t.range.audiovideo)?void 0:i.partial))}function zs(t){return`${t.type}_${t.level}_${t.sn}`}const Qs={length:0,start:()=>0,end:()=>0};class Js{static isBuffered(t,e){try{if(t){const s=Js.getBuffered(t);for(let t=0;t=s.start(t)&&e<=s.end(t))return!0}}catch(t){}return!1}static bufferInfo(t,e,s){try{if(t){const i=Js.getBuffered(t),r=[];let n;for(n=0;nn&&(i[r-1].end=t[e].end):i.push(t[e])}else i.push(t[e])}else i=t;let r,n=0,a=e,o=e;for(let t=0;t=l&&es.startCC||t&&t.cc{if(this.loader&&this.loader.destroy(),t.gap){if(t.tagList.some((t=>"GAP"===t[0])))return void o(li(t));t.gap=!1}const l=this.loader=t.loader=r?new r(i):new n(i),h=oi(t),d=vs(i.fragLoadPolicy.default),c={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===t.sn?1/0:ni};t.stats=l.stats,l.load(h,c,{onSuccess:(e,s,i,r)=>{this.resetLoader(t,l);let n=e.data;i.resetIV&&t.decryptdata&&(t.decryptdata.iv=new Uint8Array(n.slice(0,16)),n=n.slice(16)),a({frag:t,part:null,payload:n,networkDetails:r})},onError:(e,i,r,n)=>{this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,response:u({url:s,data:void 0},e),error:new Error(`HTTP Error ${e.code} ${e.text}`),networkDetails:r,stats:n}))},onAbort:(e,s,i)=>{this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.INTERNAL_ABORTED,fatal:!1,frag:t,error:new Error("Aborted"),networkDetails:i,stats:e}))},onTimeout:(e,s,i)=>{this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:i,stats:e}))},onProgress:(s,i,r,n)=>{e&&e({frag:t,part:null,payload:r,networkDetails:n})}})}))}loadPart(t,e,s){this.abort();const i=this.config,r=i.fLoader,n=i.loader;return new Promise(((a,o)=>{if(this.loader&&this.loader.destroy(),t.gap||e.gap)return void o(li(t,e));const l=this.loader=t.loader=r?new r(i):new n(i),h=oi(t,e),d=vs(i.fragLoadPolicy.default),c={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:ni};e.stats=l.stats,l.load(h,c,{onSuccess:(i,r,n,o)=>{this.resetLoader(t,l),this.updateStatsFromPart(t,e);const h={frag:t,part:e,payload:i.data,networkDetails:o};s(h),a(h)},onError:(s,i,r,n)=>{this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,part:e,response:u({url:h.url,data:void 0},s),error:new Error(`HTTP Error ${s.code} ${s.text}`),networkDetails:r,stats:n}))},onAbort:(s,i,r)=>{t.stats.aborted=e.stats.aborted,this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.INTERNAL_ABORTED,fatal:!1,frag:t,part:e,error:new Error("Aborted"),networkDetails:r,stats:s}))},onTimeout:(s,i,r)=>{this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t,part:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:s}))}})}))}updateStatsFromPart(t,e){const s=t.stats,i=e.stats,r=i.total;if(s.loaded+=i.loaded,r){const i=Math.round(t.duration/e.duration),n=Math.min(Math.round(s.loaded/r),i),a=(i-n)*Math.round(s.loaded/n);s.total=s.loaded+a}else s.total=Math.max(s.loaded,s.total);const n=s.loading,a=i.loading;n.start?n.first+=a.first-a.start:(n.start=a.start,n.first=a.first),n.end=a.end}resetLoader(t,e){t.loader=null,this.loader===e&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),e.destroy()}}function oi(t,e=null){const s=e||t,i={frag:t,part:e,responseType:"arraybuffer",url:s.url,headers:{},rangeStart:0,rangeEnd:0},r=s.byteRangeStartOffset,n=s.byteRangeEndOffset;if(p(r)&&p(n)){var a;let e=r,s=n;if("initSegment"===t.sn&&"AES-128"===(null==(a=t.decryptdata)?void 0:a.method)){const t=n-r;t%16&&(s=n+(16-t%16)),0!==r&&(i.resetIV=!0,e=r-16)}i.rangeStart=e,i.rangeEnd=s}return i}function li(t,e){const s=new Error(`GAP ${t.gap?"tag":"attribute"} found`),i={type:E.MEDIA_ERROR,details:S.FRAG_GAP,fatal:!1,frag:t,error:s,networkDetails:null};return e&&(i.part=e),(e||t).stats.aborted=!0,new hi(i)}class hi extends Error{constructor(t){super(t.error.message),this.data=void 0,this.data=t}}class di{constructor(t,e){this.subtle=void 0,this.aesIV=void 0,this.subtle=t,this.aesIV=e}decrypt(t,e){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},e,t)}}class ci{constructor(t,e){this.subtle=void 0,this.key=void 0,this.subtle=t,this.key=e}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class ui{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(t){const e=new DataView(t),s=new Uint32Array(4);for(let t=0;t<4;t++)s[t]=e.getUint32(4*t);return s}initTable(){const t=this.sBox,e=this.invSBox,s=this.subMix,i=s[0],r=s[1],n=s[2],a=s[3],o=this.invSubMix,l=o[0],h=o[1],d=o[2],c=o[3],u=new Uint32Array(256);let f=0,g=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let s=g^g<<1^g<<2^g<<3^g<<4;s=s>>>8^255&s^99,t[f]=s,e[s]=f;const o=u[f],m=u[o],p=u[m];let v=257*u[s]^16843008*s;i[f]=v<<24|v>>>8,r[f]=v<<16|v>>>16,n[f]=v<<8|v>>>24,a[f]=v,v=16843009*p^65537*m^257*o^16843008*f,l[s]=v<<24|v>>>8,h[s]=v<<16|v>>>16,d[s]=v<<8|v>>>24,c[s]=v,f?(f=o^u[u[u[p^o]]],g^=u[u[g]]):f=g=1}}expandKey(t){const e=this.uint8ArrayToUint32Array_(t);let s=!0,i=0;for(;i{if(!this.subtle)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new di(this.subtle,new Uint8Array(s)).decrypt(t.buffer,e)})).catch((i=>(k.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${i.name}: ${i.message}`),this.onWebCryptoError(t,e,s))))}onWebCryptoError(t,e,s){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(t,e,s);const i=this.flush();if(i)return i.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(t){let e=t;const s=t.length-t.length%16;return s!==t.length&&(e=nt(t,0,s),this.remainderData=nt(t,s)),e}logOnce(t){this.logEnabled&&(k.log(`[decrypter]: ${t}`),this.logEnabled=!1)}}const gi=function(t){let e="";const s=t.length;for(let i=0;ia.end){const t=n>r;(n{if(this.fragContextChanged(t))return this.warn(`Fragment ${t.sn}${e.part?" p: "+e.part.index:""} of level ${t.level} was dropped during download.`),void this.fragmentTracker.removeFragment(t);t.stats.chunkCount++,this._handleFragmentLoadProgress(e)})).then((e=>{if(!e)return;const s=this.state;this.fragContextChanged(t)?(s===yi||!this.fragCurrent&&s===Si)&&(this.fragmentTracker.removeFragment(t),this.state=pi):("payload"in e&&(this.log(`Loaded fragment ${t.sn} of level ${t.level}`),this.hls.trigger(T.FRAG_LOADED,e)),this._handleFragmentLoadComplete(e))})).catch((e=>{this.state!==mi&&this.state!==Ri&&(this.warn(`Frag error: ${(null==e?void 0:e.message)||e}`),this.resetFragmentLoading(t))}))}clearTrackerIfNeeded(t){var e;const{fragmentTracker:s}=this;if(s.getState(t)===Ys){const e=t.type,i=this.getFwdBufferInfo(this.mediaBuffer,e),r=Math.max(t.duration,i?i.len:this.config.maxBufferLength),n=this.backtrackFragment;(1===(n?t.sn-n.sn:0)||this.reduceMaxBufferLength(r,t.duration))&&s.removeFragment(t)}else 0===(null==(e=this.mediaBuffer)?void 0:e.buffered.length)?s.removeAllFragments():s.hasParts(t.type)&&(s.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type}),s.getState(t)===Ws&&s.removeFragment(t))}checkLiveUpdate(t){if(t.updated&&!t.live){const e=t.fragments[t.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type})}t.fragments[0]||(t.deltaUpdateFailed=!0)}flushMainBuffer(t,e,s=null){if(!(t-e))return;const i={startOffset:t,endOffset:e,type:s};this.hls.trigger(T.BUFFER_FLUSHING,i)}_loadInitSegment(t,e){this._doFragLoad(t,e).then((e=>{if(!e||this.fragContextChanged(t)||!this.levels)throw new Error("init load aborted");return e})).then((e=>{const{hls:s}=this,{payload:i}=e,r=t.decryptdata;if(i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const n=self.performance.now();return this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=self.performance.now();return s.trigger(T.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:n,tdecrypt:r}}),e.payload=i,this.completeInitSegmentLoad(e)}))}return this.completeInitSegmentLoad(e)})).catch((e=>{this.state!==mi&&this.state!==Ri&&(this.warn(e),this.resetFragmentLoading(t))}))}completeInitSegmentLoad(t){const{levels:e}=this;if(!e)throw new Error("init load aborted, missing levels");const s=t.frag.stats;this.state=pi,t.frag.data=new Uint8Array(t.payload),s.parsing.start=s.buffering.start=self.performance.now(),s.parsing.end=s.buffering.end=self.performance.now(),this.tick()}fragContextChanged(t){const{fragCurrent:e}=this;return!t||!e||t.sn!==e.sn||t.level!==e.level}fragBufferedComplete(t,e){var s,i,r,n;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${t.type} sn: ${t.sn}${e?" part: "+e.index:""} of ${this.playlistType===_e?"level":"track"} ${t.level} (frag:[${(null!=(s=t.startPTS)?s:NaN).toFixed(3)}-${(null!=(i=t.endPTS)?i:NaN).toFixed(3)}] > buffer:${a?gi(Js.getBuffered(a)):"(detached)"})`),"initSegment"!==t.sn){var o;if(t.type!==Pe){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return void(this.state=pi)}const e=null==(o=this.levels)?void 0:o[t.level];null!=e&&e.fragmentError&&(this.log(`Resetting level fragment error count of ${e.fragmentError} on frag buffered`),e.fragmentError=0)}this.state=pi,a&&(!this.loadedmetadata&&t.type==_e&&a.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(n=this.fragPrevious)?void 0:n.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(t){const{transmuxer:e}=this;if(!e)return;const{frag:s,part:i,partsLoaded:r}=t,n=!r||0===r.length||r.some((t=>!t)),a=new Zs(s.level,s.sn,s.stats.chunkCount+1,0,i?i.index:-1,!n);e.flush(a)}_handleFragmentLoadProgress(t){}_doFragLoad(t,e,s=null,i){var r;const n=null==e?void 0:e.details;if(!this.levels||!n)throw new Error(`frag load aborted, missing level${n?"":" detail"}s`);let a=null;if(!t.encrypted||null!=(r=t.decryptdata)&&r.key?!t.encrypted&&n.encryptedFragments.length&&this.keyLoader.loadClear(t,n.encryptedFragments):(this.log(`Loading key for ${t.sn} of [${n.startSN}-${n.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${t.level}`),this.state=vi,this.fragCurrent=t,a=this.keyLoader.load(t).then((t=>{if(!this.fragContextChanged(t.frag))return this.hls.trigger(T.KEY_LOADED,t),this.state===vi&&(this.state=pi),t})),this.hls.trigger(T.KEY_LOADING,{frag:t}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),s=Math.max(t.start,s||0),this.config.lowLatencyMode&&"initSegment"!==t.sn){const r=n.partList;if(r&&i){s>t.end&&n.fragmentHint&&(t=n.fragmentHint);const o=this.getNextPart(r,t,s);if(o>-1){const l=r[o];let h;return this.log(`Loading part sn: ${t.sn} p: ${l.index} cc: ${t.cc} of playlist [${n.startSN}-${n.endSN}] parts [0-${o}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${t.level}, target: ${parseFloat(s.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=yi,h=a?a.then((s=>!s||this.fragContextChanged(s.frag)?null:this.doFragPartsLoad(t,l,e,i))).catch((t=>this.handleFragLoadError(t))):this.doFragPartsLoad(t,l,e,i).catch((t=>this.handleFragLoadError(t))),this.hls.trigger(T.FRAG_LOADING,{frag:t,part:l,targetBufferTime:s}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):h}if(!t.url||this.loadedEndOfParts(r,s))return Promise.resolve(null)}}this.log(`Loading fragment ${t.sn} cc: ${t.cc} ${n?"of ["+n.startSN+"-"+n.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${t.level}, target: ${parseFloat(s.toFixed(3))}`),p(t.sn)&&!this.bitrateTest&&(this.nextLoadPosition=t.start+t.duration),this.state=yi;const o=this.config.progressive;let l;return l=o&&a?a.then((e=>!e||this.fragContextChanged(null==e?void 0:e.frag)?null:this.fragmentLoader.load(t,i))).catch((t=>this.handleFragLoadError(t))):Promise.all([this.fragmentLoader.load(t,o?i:void 0),a]).then((([t])=>(!o&&t&&i&&i(t),t))).catch((t=>this.handleFragLoadError(t))),this.hls.trigger(T.FRAG_LOADING,{frag:t,targetBufferTime:s}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(t,e,s,i){return new Promise(((r,n)=>{var a;const o=[],l=null==(a=s.details)?void 0:a.partList,h=e=>{this.fragmentLoader.loadPart(t,e,i).then((i=>{o[e.index]=i;const n=i.part;this.hls.trigger(T.FRAG_LOADED,i);const a=cs(s,t.sn,e.index+1)||us(l,t.sn,e.index+1);if(!a)return r({frag:t,part:n,partsLoaded:o});h(a)})).catch(n)};h(e)}))}handleFragLoadError(t){if("data"in t){const e=t.data;t.data&&e.details===S.INTERNAL_ABORTED?this.handleFragLoadAborted(e.frag,e.part):this.hls.trigger(T.ERROR,e)}else this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,err:t,error:t,fatal:!0});return null}_handleTransmuxerFlush(t){const e=this.getCurrentContext(t);if(!e||this.state!==Si)return void(this.fragCurrent||this.state===mi||this.state===Ri||(this.state=pi));const{frag:s,part:i,level:r}=e,n=self.performance.now();s.stats.parsing.end=n,i&&(i.stats.parsing.end=n),this.updateLevelTiming(s,i,r,t.partial)}getCurrentContext(t){const{levels:e,fragCurrent:s}=this,{level:i,sn:r,part:n}=t;if(null==e||!e[i])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${i}. The current chunk will not be buffered.`),null;const a=e[i],o=n>-1?cs(a,r,n):null,l=o?o.fragment:function(t,e,s){if(null==t||!t.details)return null;const i=t.details;let r=i.fragments[e-i.startSN];return r||(r=i.fragmentHint,r&&r.sn===e?r:en&&this.flushMainBuffer(a,t.start)}getFwdBufferInfo(t,e){const s=this.getLoadPosition();return p(s)?this.getFwdBufferInfoAtPos(t,s,e):null}getFwdBufferInfoAtPos(t,e,s){const{config:{maxBufferHole:i}}=this,r=Js.bufferInfo(t,e,i);if(0===r.len&&void 0!==r.nextStart){const n=this.fragmentTracker.getBufferedFrag(e,s);if(n&&r.nextStart=i&&(s.maxMaxBufferLength=r,this.warn(`Reduce max buffer length to ${r}s`),!0)}getAppendedFrag(t,e=_e){const s=this.fragmentTracker.getAppendedFrag(t,_e);return s&&"fragment"in s?s.fragment:s}getNextFragment(t,e){const s=e.fragments,i=s.length;if(!i)return null;const{config:r}=this,n=s[0].start;let a;if(e.live){const o=r.initialLiveManifestSize;if(ie}getNextFragmentLoopLoading(t,e,s,i,r){const n=t.gap,a=this.getNextFragment(this.nextLoadPosition,e);if(null===a)return a;if(t=a,n&&t&&!t.gap&&s.nextStart){const e=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,s.nextStart,i);if(null!==e&&s.len+e.len>=r)return this.log(`buffer full after gaps in "${i}" playlist starting at sn: ${t.sn}`),null}return t}mapToInitFragWhenRequired(t){return null==t||!t.initSegment||null!=t&&t.initSegment.data||this.bitrateTest?t:t.initSegment}getNextPart(t,e,s){let i=-1,r=!1,n=!0;for(let a=0,o=t.length;a-1&&ss.start&&s.loaded}getInitialLiveFragment(t,e){const s=this.fragPrevious;let i=null;if(s){if(t.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${s.programDateTime}`),i=function(t,e,s){if(null===e||!Array.isArray(t)||!t.length||!p(e))return null;if(e<(t[0].programDateTime||0))return null;if(e>=(t[t.length-1].endProgramDateTime||0))return null;s=s||0;for(let i=0;i=t.startSN&&r<=t.endSN){const n=e[r-t.startSN];s.cc===n.cc&&(i=n,this.log(`Live playlist, switching playlist, load frag with next SN: ${i.sn}`))}i||(i=function(t,e){return Ts(t,(t=>t.cce?-1:0))}(e,s.cc),i&&this.log(`Live playlist, switching playlist, load frag with same CC: ${i.sn}`))}}else{const e=this.hls.liveSyncPosition;null!==e&&(i=this.getFragmentAtPosition(e,this.bitrateTest?t.fragmentEnd:t.edge,t))}return i}getFragmentAtPosition(t,e,s){const{config:i}=this;let{fragPrevious:r}=this,{fragments:n,endSN:a}=s;const{fragmentHint:o}=s,{maxFragLookUpTolerance:l}=i,h=s.partList,d=!!(i.lowLatencyMode&&null!=h&&h.length&&o);let c;if(d&&o&&!this.bitrateTest&&(n=n.concat(o),a=o.sn),te-l?0:l)}else c=n[n.length-1];if(c){const t=c.sn-s.startSN,e=this.fragmentTracker.getState(c);if((e===js||e===Ws&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!d||h[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const e=n[t+1];c=c.sn=n-e.maxFragLookUpTolerance&&r<=a;if(null!==i&&s.duration>i&&(r${t.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${i}`),n}return r}waitForCdnTuneIn(t){return t.live&&t.canBlockReload&&t.partTarget&&t.tuneInGoal>Math.max(t.partHoldBack,3*t.partTarget)}setStartPosition(t,e){let s=this.startPosition;if(s ${null==(i=this.fragCurrent)?void 0:i.url}`);const r=e.details===S.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(s,!0);const n=e.errorAction,{action:a,retryCount:o=0,retryConfig:l}=n||{};if(n&&a===ks&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const i=ps(l,o);this.warn(`Fragment ${s.sn} of ${t} ${s.level} errored with ${e.details}, retrying loading ${o+1}/${l.maxNumRetry} in ${i}ms`),n.resolved=!0,this.retryDate=self.performance.now()+i,this.state=Ti}else if(l&&n){if(this.resetFragmentErrors(t),!(o.5;r&&this.reduceMaxBufferLength(i.len,(null==e?void 0:e.duration)||10);const n=!r;return n&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${s} buffer`),e&&(this.fragmentTracker.removeFragment(e),this.nextLoadPosition=e.start),this.resetLoadingState(),n}return!1}resetFragmentErrors(t){t===xe&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==mi&&(this.state=pi)}afterBufferFlushed(t,e,s){if(!t)return;const i=Js.getBuffered(t);this.fragmentTracker.detectEvictedFragments(e,i,s),this.state===Ai&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=pi}resetStartWhenNotLoaded(t){if(!this.loadedmetadata){this.startFragRequested=!1;const e=t?t.details:null;null!=e&&e.live?(this.startPosition=-1,this.setStartPosition(e,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(t){this.warn(`The loading context changed while buffering fragment ${t.sn} of level ${t.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState()}removeUnbufferedFrags(t=0){this.fragmentTracker.removeFragmentsInRange(t,1/0,this.playlistType,!1,!0)}updateLevelTiming(t,e,s,i){var r;const n=s.details;if(!n)return void this.warn("level.details undefined");if(!Object.keys(t.elementaryStreams).reduce(((e,r)=>{const a=t.elementaryStreams[r];if(a){const o=a.endPTS-a.startPTS;if(o<=0)return this.warn(`Could not parse fragment ${t.sn} ${r} duration reliably (${o})`),e||!1;const l=i?0:os(n,t,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(T.LEVEL_PTS_UPDATED,{details:n,level:s,drift:l,type:r,frag:t,start:a.startPTS,end:a.endPTS}),!0}return e}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const e=new Error(`Found no media in fragment ${t.sn} of level ${t.level} resetting transmuxer to fallback to playlist timing`);if(0===s.fragmentError&&(s.fragmentError++,t.gap=!0,this.fragmentTracker.removeFragment(t),this.fragmentTracker.fragBuffered(t,!0)),this.warn(e.message),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:e,frag:t,reason:`Found no media in msn ${t.sn} of level "${s.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=Li,this.hls.trigger(T.FRAG_PARSED,{frag:t,part:e})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(t){"demuxerWorker"===t.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(t){const e=this._state;e!==t&&(this._state=t,this.log(`${e}->${t}`))}get state(){return this._state}}class Ii{constructor(){this.chunks=[],this.dataLength=0}push(t){this.chunks.push(t),this.dataLength+=t.length}flush(){const{chunks:t,dataLength:e}=this;let s;return t.length?(s=1===t.length?t[0]:function(t,e){const s=new Uint8Array(e);let i=0;for(let e=0;e0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:i,type:Ke,duration:Number.POSITIVE_INFINITY});r{if(p(t))return 90*t;return 9e4*e+(s?9e4*s.baseTime/s.timescale:0)};function xi(t,e){return 255===t[e]&&240==(246&t[e+1])}function Pi(t,e){return 1&t[e+1]?7:9}function Fi(t,e){return(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5}function Mi(t,e){return e+1=t.length)return!1;const i=Fi(t,e);if(i<=s)return!1;const r=e+i;return r===t.length||Mi(t,r)}return!1}function Ni(t,e,s,i,r){if(!t.samplerate){const n=function(t,e,s,i){let r,n,a,o;const l=navigator.userAgent.toLowerCase(),h=i,d=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&e[s+2])>>>6);const c=(60&e[s+2])>>>2;if(!(c>d.length-1))return a=(1&e[s+2])<<2,a|=(192&e[s+3])>>>6,k.log(`manifest codec:${i}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,o=new Array(4),n=c-3):(r=2,o=new Array(2),n=c):-1!==l.indexOf("android")?(r=2,o=new Array(2),n=c):(r=5,o=new Array(4),i&&(-1!==i.indexOf("mp4a.40.29")||-1!==i.indexOf("mp4a.40.5"))||!i&&c>=6?n=c-3:((i&&-1!==i.indexOf("mp4a.40.2")&&(c>=6&&1===a||/vivaldi/i.test(l))||!i&&1===a)&&(r=2,o=new Array(2)),n=c)),o[0]=r<<3,o[0]|=(14&c)>>1,o[1]|=(1&c)<<7,o[1]|=a<<3,5===r&&(o[1]|=(14&n)>>1,o[2]=(1&n)<<7,o[2]|=8,o[3]=0),{config:o,samplerate:d[c],channelCount:a,codec:"mp4a.40."+r,manifestCodec:h};{const e=new Error(`invalid ADTS sampling index:${c}`);t.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!0,error:e,reason:e.message})}}(e,s,i,r);if(!n)return;t.config=n.config,t.samplerate=n.samplerate,t.channelCount=n.channelCount,t.codec=n.codec,t.manifestCodec=n.manifestCodec,k.log(`parsed codec:${t.codec}, rate:${n.samplerate}, channels:${n.channelCount}`)}}function Ui(t){return 9216e4/t}function Bi(t,e,s,i,r){const n=i+r*Ui(t.samplerate),a=function(t,e){const s=Pi(t,e);if(e+s<=t.length){const i=Fi(t,e)-s;if(i>0)return{headerLength:s,frameLength:i}}}(e,s);let o;if(a){const{frameLength:i,headerLength:r}=a,l=r+i,h=Math.max(0,s+l-e.length);h?(o=new Uint8Array(l-r),o.set(e.subarray(s+r,e.length),0)):o=e.subarray(s+r,s+l);const d={unit:o,pts:n};return h||t.samples.push(d),{sample:d,length:l,missing:h}}const l=e.length-s;o=new Uint8Array(l),o.set(e.subarray(s,e.length),0);return{sample:{unit:o,pts:n},length:l,missing:-1}}let $i=null;const Gi=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],Ki=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Hi=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Vi=[0,1,1,4];function Yi(t,e,s,i,r){if(s+24>e.length)return;const n=Wi(e,s);if(n&&s+n.frameLength<=e.length){const a=i+r*(9e4*n.samplesPerFrame/n.sampleRate),o={unit:e.subarray(s,s+n.frameLength),pts:a,dts:a};return t.config=[],t.channelCount=n.channelCount,t.samplerate=n.sampleRate,t.samples.push(o),{sample:o,length:n.frameLength,missing:0}}}function Wi(t,e){const s=t[e+1]>>3&3,i=t[e+1]>>1&3,r=t[e+2]>>4&15,n=t[e+2]>>2&3;if(1!==s&&0!==r&&15!==r&&3!==n){const a=t[e+2]>>1&1,o=t[e+3]>>6,l=1e3*Gi[14*(3===s?3-i:3===i?3:4)+r-1],h=Ki[3*(3===s?0:2===s?1:2)+n],d=3===o?1:2,c=Hi[s][i],u=Vi[i],f=8*c*u,g=Math.floor(c*l/h+a)*u;if(null===$i){const t=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);$i=t?parseInt(t[1]):0}return!!$i&&$i<=87&&2===i&&l>=224e3&&0===o&&(t[e+3]=128|t[e+3]),{sampleRate:h,channelCount:d,frameLength:g,samplesPerFrame:f}}}function ji(t,e){return 255===t[e]&&224==(224&t[e+1])&&0!=(6&t[e+1])}function qi(t,e){return e+1{let s=0,i=5;e+=i;const r=new Uint32Array(1),n=new Uint32Array(1),a=new Uint8Array(1);for(;i>0;){a[0]=t[e];const o=Math.min(i,8),l=8-o;n[0]=4278190080>>>24+l<>l,s=s?s<e.length)return-1;if(11!==e[s]||119!==e[s+1])return-1;const n=e[s+4]>>6;if(n>=3)return-1;const a=[48e3,44100,32e3][n],o=63&e[s+4],l=2*[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][3*o+n];if(s+l>e.length)return-1;const h=e[s+6]>>5;let d=0;2===h?d+=2:(1&h&&1!==h&&(d+=2),4&h&&(d+=2));const c=(e[s+6]<<8|e[s+7])>>12-d&1,u=[2,1,2,3,3,4,4,5][h]+c,f=e[s+5]>>3,g=7&e[s+5],m=new Uint8Array([n<<6|f<<1|g>>2,(3&g)<<6|h<<3|c<<2|o>>4,o<<4&224]),p=i+r*(1536/a*9e4),v=e.subarray(s,s+l);return t.config=m,t.channelCount=u,t.samplerate=a,t.samples.push({unit:v,pts:p}),l}class tr{constructor(){this.VideoSample=null}createVideoSample(t,e,s,i){return{key:t,frame:!1,pts:e,dts:s,units:[],debug:i,length:0}}getLastNalUnit(t){var e;let s,i=this.VideoSample;if(i&&0!==i.units.length||(i=t[t.length-1]),null!=(e=i)&&e.units){const t=i.units;s=t[t.length-1]}return s}pushAccessUnit(t,e){if(t.units.length&&t.frame){if(void 0===t.pts){const s=e.samples,i=s.length;if(!i)return void e.dropped++;{const e=s[i-1];t.pts=e.pts,t.dts=e.dts}}e.samples.push(t)}t.debug.length&&k.log(t.pts+"/"+t.dts+":"+t.debug)}}class er{constructor(t){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=t,this.bytesAvailable=t.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const t=this.data,e=this.bytesAvailable,s=t.byteLength-e,i=new Uint8Array(4),r=Math.min(4,e);if(0===r)throw new Error("no bytes available");i.set(t.subarray(s,s+r)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(t){let e;t=Math.min(t,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>t?(this.word<<=t,this.bitsAvailable-=t):(e=(t-=this.bitsAvailable)>>3,t-=e<<3,this.bytesAvailable-=e,this.loadWord(),this.word<<=t,this.bitsAvailable-=t)}readBits(t){let e=Math.min(this.bitsAvailable,t);const s=this.word>>>32-e;if(t>32&&k.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0)this.word<<=e;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return e=t-e,e>0&&this.bitsAvailable?s<>>t))return this.word<<=t,this.bitsAvailable-=t,t;return this.loadWord(),t+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const t=this.skipLZ();return this.readBits(t+1)-1}readEG(){const t=this.readUEG();return 1&t?1+t>>>1:-1*(t>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(t){let e,s=8,i=8;for(let r=0;r{var n;switch(i.type){case 1:{let e=!1;a=!0;const r=i.data;if(l&&r.length>4){const t=new er(r).readSliceType();2!==t&&4!==t&&7!==t&&9!==t||(e=!0)}var h;if(e)null!=(h=o)&&h.frame&&!o.key&&(this.pushAccessUnit(o,t),o=this.VideoSample=null);o||(o=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts,"")),o.frame=!0,o.key=e;break}case 5:a=!0,null!=(n=o)&&n.frame&&!o.key&&(this.pushAccessUnit(o,t),o=this.VideoSample=null),o||(o=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts,"")),o.key=!0,o.frame=!0;break;case 6:a=!0,Yt(i.data,1,s.pts,e.samples);break;case 7:{var d,c;a=!0,l=!0;const e=i.data,s=new er(e).readSPS();if(!t.sps||t.width!==s.width||t.height!==s.height||(null==(d=t.pixelRatio)?void 0:d[0])!==s.pixelRatio[0]||(null==(c=t.pixelRatio)?void 0:c[1])!==s.pixelRatio[1]){t.width=s.width,t.height=s.height,t.pixelRatio=s.pixelRatio,t.sps=[e],t.duration=r;const i=e.subarray(1,4);let n="avc1.";for(let t=0;t<3;t++){let e=i[t].toString(16);e.length<2&&(e="0"+e),n+=e}t.codec=n}break}case 8:a=!0,t.pps=[i.data];break;case 9:a=!0,t.audFound=!0,o&&this.pushAccessUnit(o,t),o=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts,"");break;case 12:a=!0;break;default:a=!1,o&&(o.debug+="unknown NAL "+i.type+" ")}if(o&&a){o.units.push(i)}})),i&&o&&(this.pushAccessUnit(o,t),this.VideoSample=null)}parseAVCNALu(t,e){const s=e.byteLength;let i=t.naluState||0;const r=i,n=[];let a,o,l,h=0,d=-1,c=0;for(-1===i&&(d=0,c=31&e[0],i=0,h=1);h=0){const t={data:e.subarray(d,o),type:c};n.push(t)}else{const s=this.getLastNalUnit(t.samples);s&&(r&&h<=4-r&&s.state&&(s.data=s.data.subarray(0,s.data.byteLength-r)),o>0&&(s.data=Kt(s.data,e.subarray(0,o)),s.state=0))}h=0&&i>=0){const t={data:e.subarray(d,s),type:c,state:i};n.push(t)}if(0===n.length){const s=this.getLastNalUnit(t.samples);s&&(s.data=Kt(s.data,e))}return t.naluState=i,n}}class ir{constructor(t,e,s){this.keyData=void 0,this.decrypter=void 0,this.keyData=s,this.decrypter=new fi(e,{removePKCS7Padding:!1})}decryptBuffer(t){return this.decrypter.decrypt(t,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(t,e,s){const i=t[e].unit;if(i.length<=16)return;const r=i.subarray(16,i.length-i.length%16),n=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(n).then((r=>{const n=new Uint8Array(r);i.set(n,16),this.decrypter.isSync()||this.decryptAacSamples(t,e+1,s)}))}decryptAacSamples(t,e,s){for(;;e++){if(e>=t.length)return void s();if(!(t[e].unit.length<32)&&(this.decryptAacSample(t,e,s),!this.decrypter.isSync()))return}}getAvcEncryptedData(t){const e=16*Math.floor((t.length-48)/160)+16,s=new Int8Array(e);let i=0;for(let e=32;e{r.data=this.getAvcDecryptedUnit(n,a),this.decrypter.isSync()||this.decryptAvcSamples(t,e,s+1,i)}))}decryptAvcSamples(t,e,s,i){if(t instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;e++,s=0){if(e>=t.length)return void i();const r=t[e].units;for(;!(s>=r.length);s++){const n=r[s];if(!(n.data.length<=48||1!==n.type&&5!==n.type||(this.decryptAvcSample(t,e,s,i,n),this.decrypter.isSync())))return}}}}const rr=188;class nr{constructor(t,e,s){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=t,this.config=e,this.typeSupported=s,this.videoParser=new sr}static probe(t){const e=nr.syncOffset(t);return e>0&&k.warn(`MPEG2-TS detected but first sync word found @ offset ${e}`),-1!==e}static syncOffset(t){const e=t.length;let s=Math.min(940,e-rr)+1,i=0;for(;i1&&(0===n&&a>2||o+rr>s))return n}i++}return-1}static createTrack(t,e){return{container:"video"===t||"audio"===t?"video/mp2t":void 0,type:t,id:kt[t],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===t?e:void 0}}resetInitSegment(t,e,s,i){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=nr.createTrack("video"),this._audioTrack=nr.createTrack("audio",i),this._id3Track=nr.createTrack("id3"),this._txtTrack=nr.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=e,this.videoCodec=s,this._duration=i}resetTimeStamp(){}resetContiguity(){const{_audioTrack:t,_videoTrack:e,_id3Track:s}=this;t&&(t.pesData=null),e&&(e.pesData=null),s&&(s.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(t,e,s=!1,i=!1){let r;s||(this.sampleAes=null);const n=this._videoTrack,a=this._audioTrack,o=this._id3Track,l=this._txtTrack;let h=n.pid,d=n.pesData,c=a.pid,u=o.pid,f=a.pesData,g=o.pesData,m=null,p=this.pmtParsed,v=this._pmtId,y=t.length;if(this.remainderData&&(y=(t=Kt(this.remainderData,t)).length,this.remainderData=null),y>4>1){if(E=e+5+t[e+4],E===e+rr)continue}else E=e+4;switch(y){case h:i&&(d&&(r=cr(d))&&this.videoParser.parseAVCPES(n,l,r,!1,this._duration),d={data:[],size:0}),d&&(d.data.push(t.subarray(E,e+rr)),d.size+=e+rr-E);break;case c:if(i){if(f&&(r=cr(f)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,r);break;case"mp3":this.parseMPEGPES(a,r);break;case"ac3":this.parseAC3PES(a,r)}f={data:[],size:0}}f&&(f.data.push(t.subarray(E,e+rr)),f.size+=e+rr-E);break;case u:i&&(g&&(r=cr(g))&&this.parseID3PES(o,r),g={data:[],size:0}),g&&(g.data.push(t.subarray(E,e+rr)),g.size+=e+rr-E);break;case 0:i&&(E+=t[E]+1),v=this._pmtId=or(t,E);break;case v:{i&&(E+=t[E]+1);const r=lr(t,E,this.typeSupported,s,this.observer);h=r.videoPid,h>0&&(n.pid=h,n.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(a.pid=c,a.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(o.pid=u),null===m||p||(k.warn(`MPEG-TS PMT found at ${e} after unknown PID '${m}'. Backtracking to sync byte @${T} to parse all TS packets.`),m=null,e=T-188),p=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=y}}else E++;E>0&&hr(this.observer,new Error(`Found ${E} TS packet/s that do not start with 0x47`)),n.pesData=d,a.pesData=f,o.pesData=g;const S={audioTrack:a,videoTrack:n,id3Track:o,textTrack:l};return i&&this.extractRemainingSamples(S),S}flush(){const{remainderData:t}=this;let e;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e}extractRemainingSamples(t){const{audioTrack:e,videoTrack:s,id3Track:i,textTrack:r}=t,n=s.pesData,a=e.pesData,o=i.pesData;let l;if(n&&(l=cr(n))?(this.videoParser.parseAVCPES(s,r,l,!0,this._duration),s.pesData=null):s.pesData=n,a&&(l=cr(a))){switch(e.segmentCodec){case"aac":this.parseAACPES(e,l);break;case"mp3":this.parseMPEGPES(e,l);break;case"ac3":this.parseAC3PES(e,l)}e.pesData=null}else null!=a&&a.size&&k.log("last AAC PES packet truncated,might overlap between fragments"),e.pesData=a;o&&(l=cr(o))?(this.parseID3PES(i,l),i.pesData=null):i.pesData=o}demuxSampleAes(t,e,s){const i=this.demux(t,s,!0,!this.config.progressive),r=this.sampleAes=new ir(this.observer,this.config,e);return this.decrypt(i,r)}decrypt(t,e){return new Promise((s=>{const{audioTrack:i,videoTrack:r}=t;i.samples&&"aac"===i.segmentCodec?e.decryptAacSamples(i.samples,0,(()=>{r.samples?e.decryptAvcSamples(r.samples,0,0,(()=>{s(t)})):s(t)})):r.samples&&e.decryptAvcSamples(r.samples,0,0,(()=>{s(t)}))}))}destroy(){this._duration=0}parseAACPES(t,e){let s=0;const i=this.aacOverFlow;let r,n,a,o=e.data;if(i){this.aacOverFlow=null;const e=i.missing,r=i.sample.unit.byteLength;if(-1===e)o=Kt(i.sample.unit,o);else{const n=r-e;i.sample.unit.set(o.subarray(0,e),n),t.samples.push(i.sample),s=i.missing}}for(r=s,n=o.length;r0;)o+=n}}parseID3PES(t,e){if(void 0===e.pts)return void k.warn("[tsdemuxer]: ID3 PES unknown PTS");const s=m({},e,{type:this._videoTrack?Ve:Ke,duration:Number.POSITIVE_INFINITY});t.samples.push(s)}}function ar(t,e){return((31&t[e+1])<<8)+t[e+2]}function or(t,e){return(31&t[e+10])<<8|t[e+11]}function lr(t,e,s,i,r){const n={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},a=e+3+((15&t[e+1])<<8|t[e+2])-4;for(e+=12+((15&t[e+10])<<8|t[e+11]);e0){let i=e+5,r=o;for(;r>2;){if(106===t[i])!0!==s.ac3?k.log("AC-3 audio found, not supported in this browser for now"):(n.audioPid=a,n.segmentAudioCodec="ac3");const e=t[i+1]+2;i+=e,r-=e}}break;case 194:case 135:return hr(r,new Error("Unsupported EC-3 in M2TS found")),n;case 36:return hr(r,new Error("Unsupported HEVC in M2TS found")),n}e+=o+5}return n}function hr(t,e,s){k.warn(`parsing error: ${e.message}`),t.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,levelRetry:s,error:e,reason:e.message})}function dr(t){k.log(`${t} with AES-128-CBC encryption found in unencrypted stream`)}function cr(t){let e,s,i,r,n,a=0;const o=t.data;if(!t||0===t.size)return null;for(;o[0].length<19&&o.length>1;)o[0]=Kt(o[0],o[1]),o.splice(1,1);e=o[0];if(1===(e[0]<<16)+(e[1]<<8)+e[2]){if(s=(e[4]<<8)+e[5],s&&s>t.size-6)return null;const l=e[7];192&l&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&l?(n=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-n>54e5&&(k.warn(`${Math.round((r-n)/9e4)}s delta between PTS and DTS, align them`),r=n)):n=r),i=e[8];let h=i+9;if(t.size<=h)return null;t.size-=h;const d=new Uint8Array(t.size);for(let t=0,s=o.length;ts){h-=s;continue}e=e.subarray(h),s-=h,h=0}d.set(e,a),a+=s}return s&&(s-=i+3),{data:d,pts:r,dts:n,len:s}}return null}class ur{static getSilentFrame(t,e){if("mp4a.40.2"===t){if(1===e)return new Uint8Array([0,200,0,128,35,128]);if(2===e)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===e)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}const fr=Math.pow(2,32)-1;class gr{static init(){let t;for(t in gr.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},gr.types)gr.types.hasOwnProperty(t)&&(gr.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);const e=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),s=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);gr.HDLR_TYPES={video:e,audio:s};const i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);gr.STTS=gr.STSC=gr.STCO=r,gr.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),gr.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),gr.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),gr.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const n=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),o=new Uint8Array([0,0,0,1]);gr.FTYP=gr.box(gr.types.ftyp,n,o,n,a),gr.DINF=gr.box(gr.types.dinf,gr.box(gr.types.dref,i))}static box(t,...e){let s=8,i=e.length;const r=i;for(;i--;)s+=e[i].byteLength;const n=new Uint8Array(s);for(n[0]=s>>24&255,n[1]=s>>16&255,n[2]=s>>8&255,n[3]=255&s,n.set(t,4),i=0,s=8;i>24&255,t>>16&255,t>>8&255,255&t,s>>24,s>>16&255,s>>8&255,255&s,i>>24,i>>16&255,i>>8&255,255&i,85,196,0,0]))}static mdia(t){return gr.box(gr.types.mdia,gr.mdhd(t.timescale,t.duration),gr.hdlr(t.type),gr.minf(t))}static mfhd(t){return gr.box(gr.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}static minf(t){return"audio"===t.type?gr.box(gr.types.minf,gr.box(gr.types.smhd,gr.SMHD),gr.DINF,gr.stbl(t)):gr.box(gr.types.minf,gr.box(gr.types.vmhd,gr.VMHD),gr.DINF,gr.stbl(t))}static moof(t,e,s){return gr.box(gr.types.moof,gr.mfhd(t),gr.traf(s,e))}static moov(t){let e=t.length;const s=[];for(;e--;)s[e]=gr.trak(t[e]);return gr.box.apply(null,[gr.types.moov,gr.mvhd(t[0].timescale,t[0].duration)].concat(s).concat(gr.mvex(t)))}static mvex(t){let e=t.length;const s=[];for(;e--;)s[e]=gr.trex(t[e]);return gr.box.apply(null,[gr.types.mvex,...s])}static mvhd(t,e){e*=t;const s=Math.floor(e/(fr+1)),i=Math.floor(e%(fr+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,s>>24,s>>16&255,s>>8&255,255&s,i>>24,i>>16&255,i>>8&255,255&i,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return gr.box(gr.types.mvhd,r)}static sdtp(t){const e=t.samples||[],s=new Uint8Array(4+e.length);let i,r;for(i=0;i>>8&255),r.push(255&i),r=r.concat(Array.prototype.slice.call(s));for(e=0;e>>8&255),n.push(255&i),n=n.concat(Array.prototype.slice.call(s));const a=gr.box(gr.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|t.sps.length].concat(r).concat([t.pps.length]).concat(n))),o=t.width,l=t.height,h=t.pixelRatio[0],d=t.pixelRatio[1];return gr.box(gr.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,o>>8&255,255&o,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),a,gr.box(gr.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),gr.box(gr.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,255&h,d>>24,d>>16&255,d>>8&255,255&d])))}static esds(t){const e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))}static audioStsd(t){const e=t.samplerate;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,e>>8&255,255&e,0,0])}static mp4a(t){return gr.box(gr.types.mp4a,gr.audioStsd(t),gr.box(gr.types.esds,gr.esds(t)))}static mp3(t){return gr.box(gr.types[".mp3"],gr.audioStsd(t))}static ac3(t){return gr.box(gr.types["ac-3"],gr.audioStsd(t),gr.box(gr.types.dac3,t.config))}static stsd(t){return"audio"===t.type?"mp3"===t.segmentCodec&&"mp3"===t.codec?gr.box(gr.types.stsd,gr.STSD,gr.mp3(t)):"ac3"===t.segmentCodec?gr.box(gr.types.stsd,gr.STSD,gr.ac3(t)):gr.box(gr.types.stsd,gr.STSD,gr.mp4a(t)):gr.box(gr.types.stsd,gr.STSD,gr.avc1(t))}static tkhd(t){const e=t.id,s=t.duration*t.timescale,i=t.width,r=t.height,n=Math.floor(s/(fr+1)),a=Math.floor(s%(fr+1));return gr.box(gr.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,a>>24,a>>16&255,a>>8&255,255&a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,255&i,0,0,r>>8&255,255&r,0,0]))}static traf(t,e){const s=gr.sdtp(t),i=t.id,r=Math.floor(e/(fr+1)),n=Math.floor(e%(fr+1));return gr.box(gr.types.traf,gr.box(gr.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i])),gr.box(gr.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,n>>24,n>>16&255,n>>8&255,255&n])),gr.trun(t,s.length+16+20+8+16+8+8),s)}static trak(t){return t.duration=t.duration||4294967295,gr.box(gr.types.trak,gr.tkhd(t),gr.mdia(t))}static trex(t){const e=t.id;return gr.box(gr.types.trex,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(t,e){const s=t.samples||[],i=s.length,r=12+16*i,n=new Uint8Array(r);let a,o,l,h,d,c;for(e+=8+r,n.set(["video"===t.type?1:0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i,e>>>24&255,e>>>16&255,e>>>8&255,255&e],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,h>>>24&255,h>>>16&255,h>>>8&255,255&h,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.paddingValue<<1|d.isNonSync,61440&d.degradPrio,15&d.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a);return gr.box(gr.types.trun,n)}static initSegment(t){gr.types||gr.init();const e=gr.moov(t);return Kt(gr.FTYP,e)}}gr.types=void 0,gr.HDLR_TYPES=void 0,gr.STTS=void 0,gr.STSC=void 0,gr.STCO=void 0,gr.STSZ=void 0,gr.VMHD=void 0,gr.SMHD=void 0,gr.STSD=void 0,gr.FTYP=void 0,gr.DINF=void 0;function mr(t,e,s=1,i=!1){const r=t*e*s;return i?Math.round(r):r}function pr(t,e=!1){return mr(t,1e3,1/9e4,e)}let vr,yr=null,Tr=null;class Er{constructor(t,e,s,i=""){if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=t,this.config=e,this.typeSupported=s,this.ISGenerated=!1,null===yr){const t=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);yr=t?parseInt(t[1]):0}if(null===Tr){const t=navigator.userAgent.match(/Safari\/(\d+)/i);Tr=t?parseInt(t[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(t){k.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=t}resetNextTimestamp(){k.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){k.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(t){let e=!1;const s=t.reduce(((t,s)=>{const i=s.pts-t;return i<-4294967296?(e=!0,Sr(t,s.pts)):i>0?t:s.pts}),t[0].pts);return e&&k.debug("PTS rollover detected"),s}remux(t,e,s,i,r,n,a,o){let l,h,d,c,u,f,g=r,m=r;const p=t.pid>-1,v=e.pid>-1,y=e.samples.length,T=t.samples.length>0,E=a&&y>0||y>1;if((!p||T)&&(!v||E)||this.ISGenerated||a){if(this.ISGenerated){var S,L,A,R;const t=this.videoTrackConfig;!t||e.width===t.width&&e.height===t.height&&(null==(S=e.pixelRatio)?void 0:S[0])===(null==(L=t.pixelRatio)?void 0:L[0])&&(null==(A=e.pixelRatio)?void 0:A[1])===(null==(R=t.pixelRatio)?void 0:R[1])||this.resetInitSegment()}else d=this.generateIS(t,e,r,n);const s=this.isVideoContiguous;let i,a=-1;if(E&&(a=function(t){for(let e=0;e0){k.warn(`[mp4-remuxer]: Dropped ${a} out of ${y} video samples due to a missing keyframe`);const t=this.getVideoStartPts(e.samples);e.samples=e.samples.slice(a),e.dropped+=a,m+=(e.samples[0].pts-t)/e.inputTimeScale,i=m}else-1===a&&(k.warn(`[mp4-remuxer]: No keyframe found out of ${y} video samples`),f=!1);if(this.ISGenerated){if(T&&E){const s=this.getVideoStartPts(e.samples),i=(Sr(t.samples[0].pts,s)-s)/e.inputTimeScale;g+=Math.max(0,i),m+=Math.max(0,-i)}if(T){if(t.samplerate||(k.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),d=this.generateIS(t,e,r,n)),h=this.remuxAudio(t,g,this.isAudioContiguous,n,v||E||o===xe?m:void 0),E){const i=h?h.endPTS-h.startPTS:0;e.inputTimeScale||(k.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),d=this.generateIS(t,e,r,n)),l=this.remuxVideo(e,m,s,i)}}else E&&(l=this.remuxVideo(e,m,s,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=i)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(s.samples.length&&(u=Lr(s,r,this._initPTS,this._initDTS)),i.samples.length&&(c=Ar(i,r,this._initPTS))),{audio:h,video:l,initSegment:d,independent:f,text:c,id3:u}}generateIS(t,e,s,i){const r=t.samples,n=e.samples,a=this.typeSupported,o={},l=this._initPTS;let h,d,c,u=!l||i,f="audio/mp4";if(u&&(h=d=1/0),t.config&&r.length){switch(t.timescale=t.samplerate,t.segmentCodec){case"mp3":a.mpeg?(f="audio/mpeg",t.codec=""):a.mp3&&(t.codec="mp3");break;case"ac3":t.codec="ac-3"}o.audio={id:"audio",container:f,codec:t.codec,initSegment:"mp3"===t.segmentCodec&&a.mpeg?new Uint8Array(0):gr.initSegment([t]),metadata:{channelCount:t.channelCount}},u&&(c=t.inputTimeScale,l&&c===l.timescale?u=!1:h=d=r[0].pts-Math.round(c*s))}if(e.sps&&e.pps&&n.length){if(e.timescale=e.inputTimeScale,o.video={id:"main",container:"video/mp4",codec:e.codec,initSegment:gr.initSegment([e]),metadata:{width:e.width,height:e.height}},u)if(c=e.inputTimeScale,l&&c===l.timescale)u=!1;else{const t=this.getVideoStartPts(n),e=Math.round(c*s);d=Math.min(d,Sr(n[0].dts,t)-e),h=Math.min(h,t-e)}this.videoTrackConfig={width:e.width,height:e.height,pixelRatio:e.pixelRatio}}if(Object.keys(o).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:h,timescale:c},this._initDTS={baseTime:d,timescale:c}):h=c=void 0,{tracks:o,initPTS:h,timescale:c}}remuxVideo(t,e,s,i){const r=t.inputTimeScale,n=t.samples,a=[],o=n.length,l=this._initPTS;let h,d,c=this.nextAvcDts,u=8,f=this.videoSampleDuration,g=Number.POSITIVE_INFINITY,p=Number.NEGATIVE_INFINITY,v=!1;if(!s||null===c){const t=e*r,i=n[0].pts-Sr(n[0].dts,n[0].pts);yr&&null!==c&&Math.abs(t-i-c)<15e3?s=!0:c=t-i}const y=l.baseTime*r/l.timescale;for(let t=0;t0?t-1:t].dts&&(v=!0)}v&&n.sort((function(t,e){const s=t.dts-e.dts,i=t.pts-e.pts;return s||i})),h=n[0].dts,d=n[n.length-1].dts;const L=d-h,A=L?Math.round(L/(o-1)):f||t.inputTimeScale/30;if(s){const t=h-c,s=t>A,i=t<-1;if((s||i)&&(s?k.warn(`AVC: ${pr(t,!0)} ms (${t}dts) hole between fragments detected at ${e.toFixed(3)}`):k.warn(`AVC: ${pr(-t,!0)} ms (${t}dts) overlapping between fragments detected at ${e.toFixed(3)}`),!i||c>=n[0].pts||yr)){h=c;const e=n[0].pts-t;if(s)n[0].dts=h,n[0].pts=e;else for(let s=0;se);s++)n[s].dts-=t,n[s].pts-=t;k.log(`Video: Initial PTS/DTS adjusted: ${pr(e,!0)}/${pr(h,!0)}, delta: ${pr(t,!0)} ms`)}}h=Math.max(0,h);let R=0,b=0,D=h;for(let t=0;t0?e.dts-n[t-1].dts:A;if(l=t>0?e.pts-n[t-1].pts:A,s.stretchShortVideoTrack&&null!==this.nextAudioPts){const t=Math.floor(s.maxBufferHole*r),n=(i?g+i*r:this.nextAudioPts)-e.pts;n>t?(f=n-a,f<0?f=a:_=!0,k.log(`[mp4-remuxer]: It is approximately ${n/90} ms to the next segment; using duration ${f/90} ms for the last video frame.`)):f=a}else f=a}const d=Math.round(e.pts-e.dts);x=Math.min(x,f),F=Math.max(F,f),P=Math.min(P,l),M=Math.max(M,l),a.push(new Rr(e.key,f,h,d))}if(a.length)if(yr){if(yr<70){const t=a[0].flags;t.dependsOn=2,t.isNonSync=0}}else if(Tr&&M-P0&&(i&&Math.abs(v-p)<9e3||Math.abs(Sr(f[0].pts-y,v)-p)<20*l),f.forEach((function(t){t.pts=Sr(t.pts-y,v)})),!s||p<0){if(f=f.filter((t=>t.pts>=0)),!f.length)return;p=0===r?0:i&&!u?Math.max(0,v):f[0].pts}if("aac"===t.segmentCodec){const e=this.config.maxAudioFramesDrift;for(let s=0,i=p;s=e*l&&h<1e4&&u){let e=Math.round(o/l);i=a-e*l,i<0&&(e--,i+=l),0===s&&(this.nextAudioPts=p=i),k.warn(`[mp4-remuxer]: Injecting ${e} audio frame @ ${(i/n).toFixed(3)}s due to ${Math.round(1e3*o/n)} ms gap.`);for(let n=0;n0))return;b+=g;try{L=new Uint8Array(b)}catch(t){return void this.observer.emit(T.ERROR,T.ERROR,{type:E.MUX_ERROR,details:S.REMUX_ALLOC_ERROR,fatal:!1,error:t,bytes:b,reason:`fail allocating audio mdat ${b}`})}if(!d){new DataView(L.buffer).setUint32(0,b),L.set(gr.types.mdat,4)}}L.set(r,g);const l=r.byteLength;g+=l,c.push(new Rr(!0,o,l,0)),R=n}const I=c.length;if(!I)return;const w=c[c.length-1];this.nextAudioPts=p=R+a*w.duration;const C=d?new Uint8Array(0):gr.moof(t.sequenceNumber++,A/a,m({},t,{samples:c}));t.samples=[];const _=A/n,x=p/n,P={data1:C,data2:L,startPTS:_,endPTS:x,startDTS:_,endDTS:x,type:"audio",hasAudio:!0,hasVideo:!1,nb:I};return this.isAudioContiguous=!0,P}remuxEmptyAudio(t,e,s,i){const r=t.inputTimeScale,n=r/(t.samplerate?t.samplerate:r),a=this.nextAudioPts,o=this._initDTS,l=9e4*o.baseTime/o.timescale,h=(null!==a?a:i.startDTS*r)+l,d=i.endDTS*r+l,c=1024*n,u=Math.ceil((d-h)/c),f=ur.getSilentFrame(t.manifestCodec||t.codec,t.channelCount);if(k.warn("[mp4-remuxer]: remux empty Audio"),!f)return void k.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const g=[];for(let t=0;t4294967296;)t+=s;return t}function Lr(t,e,s,i){const r=t.samples.length;if(!r)return;const n=t.inputTimeScale;for(let a=0;at.pts-e.pts));const n=t.samples;return t.samples=[],{samples:n}}class Rr{constructor(t,e,s,i){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=e,this.size=s,this.cts=i,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:t?2:1,isNonSync:t?0:1}}}function br(t,e){const s=null==t?void 0:t.codec;if(s&&s.length>4)return s;if(e===P){if("ec-3"===s||"ac-3"===s||"alac"===s)return s;if("fLaC"===s||"Opus"===s){return ue(s,!1)}const t="mp4a.40.5";return k.info(`Parsed audio codec "${s}" or audio object type not handled. Using "${t}"`),t}return k.warn(`Unhandled video codec "${s}"`),"hvc1"===s||"hev1"===s?"hvc1.1.6.L120.90":"av01"===s?"av01.0.04M.08":"avc1.42e01e"}try{vr=self.performance.now.bind(self.performance)}catch(t){k.debug("Unable to use Performance API on this environment"),vr=null==H?void 0:H.Date.now}const kr=[{demux:class{constructor(t,e){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=e}resetTimeStamp(){}resetInitSegment(t,e,s,i){const r=this.videoTrack=wi("video",1),n=this.audioTrack=wi("audio",1),a=this.txtTrack=wi("text",1);if(this.id3Track=wi("id3",1),this.timeOffset=0,null==t||!t.byteLength)return;const o=Mt(t);if(o.video){const{id:t,timescale:e,codec:s}=o.video;r.id=t,r.timescale=a.timescale=e,r.codec=s}if(o.audio){const{id:t,timescale:e,codec:s}=o.audio;n.id=t,n.timescale=e,n.codec=s}a.id=kt.text,r.sampleDuration=0,r.duration=n.duration=i}resetContiguity(){this.remainderData=null}static probe(t){return function(t){const e=t.byteLength;for(let s=0;s8&&109===t[s+4]&&111===t[s+5]&&111===t[s+6]&&102===t[s+7])return!0;s=i>1?s+i:e}return!1}(t)}demux(t,e){this.timeOffset=e;let s=t;const i=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(s=Kt(this.remainderData,t));const e=function(t){const e={valid:null,remainder:null},s=Pt(t,["moof"]);if(s.length<2)return e.remainder=t,e;const i=s[s.length-1];return e.valid=nt(t,0,i.byteOffset-8),e.remainder=nt(t,i.byteOffset-8),e}(s);this.remainderData=e.remainder,i.samples=e.valid||new Uint8Array}else i.samples=s;const n=this.extractID3Track(i,e);return r.samples=Ht(e,i),{videoTrack:i,audioTrack:this.audioTrack,id3Track:n,textTrack:this.txtTrack}}flush(){const t=this.timeOffset,e=this.videoTrack,s=this.txtTrack;e.samples=this.remainderData||new Uint8Array,this.remainderData=null;const i=this.extractID3Track(e,this.timeOffset);return s.samples=Ht(t,e),{videoTrack:e,audioTrack:wi(),id3Track:i,textTrack:wi()}}extractID3Track(t,e){const s=this.id3Track;if(t.samples.length){const i=Pt(t.samples,["emsg"]);i&&i.forEach((t=>{const i=function(t){const e=t[0];let s="",i="",r=0,n=0,a=0,o=0,l=0,h=0;if(0===e){for(;"\0"!==Dt(t.subarray(h,h+1));)s+=Dt(t.subarray(h,h+1)),h+=1;for(s+=Dt(t.subarray(h,h+1)),h+=1;"\0"!==Dt(t.subarray(h,h+1));)i+=Dt(t.subarray(h,h+1)),h+=1;i+=Dt(t.subarray(h,h+1)),h+=1,r=wt(t,12),n=wt(t,16),o=wt(t,20),l=wt(t,24),h=28}else if(1===e){h+=4,r=wt(t,h),h+=4;const e=wt(t,h);h+=4;const n=wt(t,h);for(h+=4,a=2**32*e+n,v(a)||(a=Number.MAX_SAFE_INTEGER,k.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),o=wt(t,h),h+=4,l=wt(t,h),h+=4;"\0"!==Dt(t.subarray(h,h+1));)s+=Dt(t.subarray(h,h+1)),h+=1;for(s+=Dt(t.subarray(h,h+1)),h+=1;"\0"!==Dt(t.subarray(h,h+1));)i+=Dt(t.subarray(h,h+1)),h+=1;i+=Dt(t.subarray(h,h+1)),h+=1}return{schemeIdUri:s,value:i,timeScale:r,presentationTime:a,presentationTimeDelta:n,eventDuration:o,id:l,payload:t.subarray(h,t.byteLength)}}(t);if(zi.test(i.schemeIdUri)){const t=p(i.presentationTime)?i.presentationTime/i.timeScale:e+i.presentationTimeDelta/i.timeScale;let r=4294967295===i.eventDuration?Number.POSITIVE_INFINITY:i.eventDuration/i.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const n=i.payload;s.samples.push({data:n,len:n.byteLength,dts:t,pts:t,type:Ve,duration:r})}}))}return s}demuxSampleAes(t,e,s){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(t){this.initPTS=t,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(t,e,s,i){this.audioCodec=e,this.videoCodec=s,this.generateInitSegment(function(t,e){if(!t||!e)return t;const s=e.keyId;s&&e.isCommonEncryption&&Pt(t,["moov","trak"]).forEach((t=>{const e=Pt(t,["mdia","minf","stbl","stsd"])[0].subarray(8);let i=Pt(e,["enca"]);const r=i.length>0;r||(i=Pt(e,["encv"])),i.forEach((t=>{Pt(r?t.subarray(28):t.subarray(78),["sinf"]).forEach((t=>{const e=$t(t);if(e){const t=e.subarray(8,24);t.some((t=>0!==t))||(k.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${At(t)} -> ${At(s)}`),e.set(s,8))}}))}))}));return t}(t,i)),this.emitInitSegment=!0}generateInitSegment(t){let{audioCodec:e,videoCodec:s}=this;if(null==t||!t.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const i=this.initData=Mt(t);i.audio&&(e=br(i.audio,P)),i.video&&(s=br(i.video,F));const r={};i.audio&&i.video?r.audiovideo={container:"video/mp4",codec:e+","+s,initSegment:t,id:"main"}:i.audio?r.audio={container:"audio/mp4",codec:e,initSegment:t,id:"audio"}:i.video?r.video={container:"video/mp4",codec:s,initSegment:t,id:"main"}:k.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(t,e,s,i,r,n){var a,o;let{initPTS:l,lastEndTime:h}=this;const d={audio:void 0,video:void 0,text:i,id3:s,initSegment:void 0};p(h)||(h=this.lastEndTime=r||0);const c=e.samples;if(null==c||!c.length)return d;const u={initPTS:void 0,timescale:1};let f=this.initData;if(null!=(a=f)&&a.length||(this.generateInitSegment(c),f=this.initData),null==(o=f)||!o.length)return k.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),d;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const g=function(t,e){let s=0,i=0,r=0;const n=Pt(t,["moof","traf"]);for(let t=0;tt+e.info.duration||0),0);s=Math.max(s,t+n.earliestPresentationTime/n.timescale),i=s-e}}if(i&&p(i))return i}return i||r}(c,f),m=function(t,e){return Pt(e,["moof","traf"]).reduce(((e,s)=>{const i=Pt(s,["tfdt"])[0],r=i[0],n=Pt(s,["tfhd"]).reduce(((e,s)=>{const n=wt(s,4),a=t[n];if(a){let t=wt(i,4);if(1===r){if(t===Rt)return k.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),e;t*=Rt+1,t+=wt(i,8)}const s=t/(a.timescale||9e4);if(p(s)&&(null===e||sr}(l,v,r,g)||u.timescale!==l.timescale&&n)&&(u.initPTS=v-r,l&&1===l.timescale&&k.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=t?v-l.baseTime/l.timescale:h,T=y+g;!function(t,e,s){Pt(e,["moof","traf"]).forEach((e=>{Pt(e,["tfhd"]).forEach((i=>{const r=wt(i,4),n=t[r];if(!n)return;const a=n.timescale||9e4;Pt(e,["tfdt"]).forEach((t=>{const e=t[0],i=s*a;if(i){let s=wt(t,4);if(0===e)s-=i,s=Math.max(s,0),xt(t,4,s);else{s*=Math.pow(2,32),s+=wt(t,8),s-=i,s=Math.max(s,0);const e=Math.floor(s/(Rt+1)),r=Math.floor(s%(Rt+1));xt(t,4,e),xt(t,8,r)}}}))}))}))}(f,c,l.baseTime/l.timescale),g>0?this.lastEndTime=T:(k.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const E=!!f.audio,S=!!f.video;let L="";E&&(L+="audio"),S&&(L+="video");const A={data1:c,startPTS:y,startDTS:y,endPTS:T,endDTS:T,type:L,hasAudio:E,hasVideo:S,nb:1,dropped:0};return d.audio="audio"===A.type?A:void 0,d.video="audio"!==A.type?A:void 0,d.initSegment=u,d.id3=Lr(s,r,l,l),i.samples.length&&(d.text=Ar(i,r,l)),d}}},{demux:nr,remux:Er},{demux:class extends Ci{constructor(t,e){super(),this.observer=void 0,this.config=void 0,this.observer=t,this.config=e}resetInitSegment(t,e,s,i){super.resetInitSegment(t,e,s,i),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:e,duration:i,inputTimeScale:9e4,dropped:0}}static probe(t){if(!t)return!1;const e=lt(t,0);let s=(null==e?void 0:e.length)||0;if(Xi(t,s))return!1;for(let e=t.length;s0&&null!=(null==e?void 0:e.key)&&null!==e.iv&&null!=e.method&&(s=e);return s}(n,e);if(L&&"AES-128"===L.method){const t=this.getDecrypter();if(!t.isSync())return this.decryptionPromise=t.webCryptoDecrypt(n,L.key.buffer,L.iv.buffer).then((t=>{const e=this.push(t,null,s);return this.decryptionPromise=null,e})),this.decryptionPromise;{let e=t.softwareDecrypt(n,L.key.buffer,L.iv.buffer);if(s.part>-1&&(e=t.flush()),!e)return r.executeEnd=vr(),Ir(s);n=new Uint8Array(e)}}const A=this.needsProbing(h,d);if(A){const t=this.configureTransmuxer(n);if(t)return k.warn(`[transmuxer] ${t.message}`),this.observer.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:t,reason:t.message}),r.executeEnd=vr(),Ir(s)}(h||d||f||A)&&this.resetInitSegment(y,g,m,v,e),(h||f||A)&&this.resetInitialTimestamp(p),l||this.resetContiguity();const R=this.transmux(n,L,u,c,s),b=this.currentTransmuxState;return b.contiguous=!0,b.discontinuity=!1,b.trackSwitch=!1,r.executeEnd=vr(),R}flush(t){const e=t.transmuxing;e.executeStart=vr();const{decrypter:s,currentTransmuxState:i,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(t)));const n=[],{timeOffset:a}=i;if(s){const e=s.flush();e&&n.push(this.push(e,null,t))}const{demuxer:o,remuxer:l}=this;if(!o||!l)return e.executeEnd=vr(),[Ir(t)];const h=o.flush(a);return wr(h)?h.then((e=>(this.flushRemux(n,e,t),n))):(this.flushRemux(n,h,t),n)}flushRemux(t,e,s){const{audioTrack:i,videoTrack:r,id3Track:n,textTrack:a}=e,{accurateTimeOffset:o,timeOffset:l}=this.currentTransmuxState;k.log(`[transmuxer.ts]: Flushed fragment ${s.sn}${s.part>-1?" p: "+s.part:""} of level ${s.level}`);const h=this.remuxer.remux(i,r,n,a,l,o,!0,this.id);t.push({remuxResult:h,chunkMeta:s}),s.transmuxing.executeEnd=vr()}resetInitialTimestamp(t){const{demuxer:e,remuxer:s}=this;e&&s&&(e.resetTimeStamp(t),s.resetTimeStamp(t))}resetContiguity(){const{demuxer:t,remuxer:e}=this;t&&e&&(t.resetContiguity(),e.resetNextTimestamp())}resetInitSegment(t,e,s,i,r){const{demuxer:n,remuxer:a}=this;n&&a&&(n.resetInitSegment(t,e,s,i),a.resetInitSegment(t,e,s,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(t,e,s,i,r){let n;return n=e&&"SAMPLE-AES"===e.method?this.transmuxSampleAes(t,e,s,i,r):this.transmuxUnencrypted(t,s,i,r),n}transmuxUnencrypted(t,e,s,i){const{audioTrack:r,videoTrack:n,id3Track:a,textTrack:o}=this.demuxer.demux(t,e,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,n,a,o,e,s,!1,this.id),chunkMeta:i}}transmuxSampleAes(t,e,s,i,r){return this.demuxer.demuxSampleAes(t,e,s).then((t=>({remuxResult:this.remuxer.remux(t.audioTrack,t.videoTrack,t.id3Track,t.textTrack,s,i,!1,this.id),chunkMeta:r})))}configureTransmuxer(t){const{config:e,observer:s,typeSupported:i,vendor:r}=this;let n;for(let e=0,s=kr.length;e({remuxResult:{},chunkMeta:t});function wr(t){return"then"in t&&t.then instanceof Function}class Cr{constructor(t,e,s,i,r){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=t,this.videoCodec=e,this.initSegmentData=s,this.duration=i,this.defaultInitPts=r||null}}class _r{constructor(t,e,s,i,r,n){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=t,this.contiguous=e,this.accurateTimeOffset=s,this.trackSwitch=i,this.timeOffset=r,this.initSegmentChange=n}}var xr={exports:{}};!function(t){var e=Object.prototype.hasOwnProperty,s="~";function i(){}function r(t,e,s){this.fn=t,this.context=e,this.once=s||!1}function n(t,e,i,n,a){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new r(i,n||t,a),l=s?s+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],o]:t._events[l].push(o):(t._events[l]=o,t._eventsCount++),t}function a(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(s=!1)),o.prototype.eventNames=function(){var t,i,r=[];if(0===this._eventsCount)return r;for(i in t=this._events)e.call(t,i)&&r.push(s?i.slice(1):i);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(t)):r},o.prototype.listeners=function(t){var e=s?s+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var r=0,n=i.length,a=new Array(n);r{(e=e||{}).frag=this.frag,e.id=this.id,t===T.ERROR&&(this.error=e.error),this.hls.trigger(t,e)};this.observer=new Pr,this.observer.on(T.FRAG_DECRYPTED,n),this.observer.on(T.ERROR,n);const a=ie(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},o={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')};if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?(k.log(`loading Web Worker ${r.workerPath} for "${e}"`),this.workerContext=function(t){const e=new self.URL(t,self.location.href).href;return{worker:new self.Worker(e),scriptURL:e}}(r.workerPath)):(k.log(`injecting Web Worker for "${e}"`),this.workerContext=function(){const t=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),e=self.URL.createObjectURL(t);return{worker:new self.Worker(e),objectURL:e}}()),this.onwmsg=t=>this.onWorkerMessage(t);const{worker:t}=this.workerContext;t.addEventListener("message",this.onwmsg),t.onerror=t=>{const s=new Error(`${t.message} (${t.filename}:${t.lineno})`);r.enableWorker=!1,k.warn(`Error in "${e}" Web Worker, fallback to inline`),this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:s})},t.postMessage({cmd:"init",typeSupported:o,vendor:"",id:e,config:JSON.stringify(r)})}catch(t){k.warn(`Error setting up "${e}" Web Worker, fallback to inline`,t),this.resetWorker(),this.error=null,this.transmuxer=new Dr(this.observer,o,r,"",e)}return}}this.transmuxer=new Dr(this.observer,o,r,"",e)}resetWorker(){if(this.workerContext){const{worker:t,objectURL:e}=this.workerContext;e&&self.URL.revokeObjectURL(e),t.removeEventListener("message",this.onwmsg),t.onerror=null,t.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}const t=this.observer;t&&t.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(t,e,s,i,r,n,a,o,l,h){var d,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,f=n?n.start:r.start,g=r.decryptdata,m=this.frag,p=!(m&&r.cc===m.cc),v=!(m&&l.level===m.level),y=m?l.sn-m.sn:-1,T=this.part?l.part-this.part.index:-1,E=0===y&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),S=!v&&(1===y||0===y&&(1===T||E&&T<=0)),L=self.performance.now();(v||y||0===r.stats.parsing.start)&&(r.stats.parsing.start=L),!n||!T&&S||(n.stats.parsing.start=L);const A=!(m&&(null==(d=r.initSegment)?void 0:d.url)===(null==(c=m.initSegment)?void 0:c.url)),R=new _r(p,S,o,v,f,A);if(!S||p||A){k.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${p}\n trackSwitch: ${v}\n contiguous: ${S}\n accurateTimeOffset: ${o}\n timeOffset: ${f}\n initSegmentChange: ${A}`);const t=new Cr(s,i,e,a,h);this.configureTransmuxer(t)}if(this.frag=r,this.part=n,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:t,decryptdata:g,chunkMeta:l,state:R},t instanceof ArrayBuffer?[t]:[]);else if(u){const e=u.push(t,g,l,R);wr(e)?(u.async=!0,e.then((t=>{this.handleTransmuxComplete(t)})).catch((t=>{this.transmuxerError(t,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(e))}}flush(t){t.transmuxing.start=self.performance.now();const{transmuxer:e}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:t});else if(e){let s=e.flush(t);wr(s)||e.async?(wr(s)||(s=Promise.resolve(s)),s.then((e=>{this.handleFlushResult(e,t)})).catch((e=>{this.transmuxerError(e,t,"transmuxer-interface flush error")}))):this.handleFlushResult(s,t)}}transmuxerError(t,e,s){this.hls&&(this.error=t,this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,chunkMeta:e,frag:this.frag||void 0,fatal:!1,error:t,err:t,reason:s}))}handleFlushResult(t,e){t.forEach((t=>{this.handleTransmuxComplete(t)})),this.onFlush(e)}onWorkerMessage(t){const e=t.data;if(null==e||!e.event)return void k.warn("worker message received with no "+(e?"event name":"data"));const s=this.hls;if(this.hls)switch(e.event){case"init":{var i;const t=null==(i=this.workerContext)?void 0:i.objectURL;t&&self.URL.revokeObjectURL(t);break}case"transmuxComplete":this.handleTransmuxComplete(e.data);break;case"flush":this.onFlush(e.data);break;case"workerLog":k[e.data.logType]&&k[e.data.logType](e.data.message);break;default:e.data=e.data||{},e.data.frag=this.frag,e.data.id=this.id,s.trigger(e.event,e.data)}}configureTransmuxer(t){const{transmuxer:e}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:t}):e&&e.configure(t)}handleTransmuxComplete(t){t.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(t)}}function Mr(t,e){if(t.length!==e.length)return!1;for(let s=0;st[s]!==e[s]))}function Nr(t,e){return e.label.toLowerCase()===t.name.toLowerCase()&&(!e.language||e.language.toLowerCase()===(t.lang||"").toLowerCase())}class Ur{constructor(t){this.buffered=void 0;const e=(e,s,i)=>{if((s>>>=0)>i-1)throw new DOMException(`Failed to execute '${e}' on 'TimeRanges': The index provided (${s}) is greater than the maximum bound (${i})`);return t[s][e]};this.buffered={get length(){return t.length},end(s){return e("end",s,t.length)},start(s){return e("start",s,t.length)}}}}class Br{constructor(t){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=t}append(t,e,s){const i=this.queues[e];i.push(t),1!==i.length||s||this.executeNext(e)}insertAbort(t,e){this.queues[e].unshift(t),this.executeNext(e)}appendBlocker(t){let e;const s=new Promise((t=>{e=t})),i={execute:e,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(i,t),s}executeNext(t){const e=this.queues[t];if(e.length){const s=e[0];try{s.execute()}catch(e){k.warn(`[buffer-operation-queue]: Exception executing "${t}" SourceBuffer operation: ${e}`),s.onError(e);const i=this.buffers[t];null!=i&&i.updating||this.shiftAndExecuteNext(t)}}}shiftAndExecuteNext(t){this.queues[t].shift(),this.executeNext(t)}current(t){return this.queues[t][0]}}const $r=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function Gr(t){const e=t.querySelectorAll("source");[].slice.call(e).forEach((e=>{t.removeChild(e)}))}const Kr={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},Hr=t=>String.fromCharCode(Kr[t]||t),Vr=15,Yr=100,Wr={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},jr={17:2,18:4,21:6,22:8,23:10,19:13,20:15},qr={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Xr={25:2,26:4,29:6,30:8,31:10,27:13,28:15},zr=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Qr{constructor(){this.time=null,this.verboseLevel=0}log(t,e){if(this.verboseLevel>=t){const s="function"==typeof e?e():e;k.log(`${this.time} [${t}] ${s}`)}}}const Jr=function(t){const e=[];for(let s=0;sYr&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Yr)}moveCursor(t){const e=this.pos+t;if(t>1)for(let t=this.pos+1;t=144&&this.backSpace();const e=Hr(t);this.pos>=Yr?this.logger.log(0,(()=>"Cannot insert "+t.toString(16)+" ("+e+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(e,this.currPenState),this.moveCursor(1))}clearFromPos(t){let e;for(e=t;e"pacData = "+JSON.stringify(t)));let e=t.row-1;if(this.nrRollUpRows&&e"bkgData = "+JSON.stringify(t))),this.backSpace(),this.setPen(t),this.insertChar(32)}setRollUpRows(t){this.nrRollUpRows=t}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const t=this.currRow+1-this.nrRollUpRows,e=this.rows.splice(t,1)[0];e.clear(),this.rows.splice(this.currRow,0,e),this.logger.log(2,"Rolling up")}getDisplayText(t){t=t||!1;const e=[];let s="",i=-1;for(let s=0;s0&&(s=t?"["+e.join(" | ")+"]":e.join("\n")),s}getTextAndFormat(){return this.rows}}class rn{constructor(t,e,s){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=t,this.outputFilter=e,this.mode=null,this.verbose=0,this.displayedMemory=new sn(s),this.nonDisplayedMemory=new sn(s),this.lastOutputScreen=new sn(s),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=s}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(t){this.outputFilter=t}setPAC(t){this.writeScreen.setPAC(t)}setBkgData(t){this.writeScreen.setBkgData(t)}setMode(t){t!==this.mode&&(this.mode=t,this.logger.log(2,(()=>"MODE="+t)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=t)}insertChars(t){for(let e=0;ee+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(t){this.logger.log(2,"RU("+t+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(t)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const t=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=t,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(t){this.logger.log(2,"TO("+t+") - Tab Offset"),this.writeScreen.moveCursor(t)}ccMIDROW(t){const e={flash:!1};if(e.underline=t%2==1,e.italics=t>=46,e.italics)e.foreground="white";else{const s=Math.floor(t/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];e.foreground=i[s]}this.logger.log(2,"MIDROW: "+JSON.stringify(e)),this.writeScreen.setPen(e)}outputDataUpdate(t=!1){const e=this.logger.time;null!==e&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),t&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(t){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,t,this.displayedMemory),this.cueStartTime=t))}}class nn{constructor(t,e,s){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const i=this.logger=new Qr;this.channels=[null,new rn(t,e,i),new rn(t+1,s,i)]}getHandler(t){return this.channels[t].getHandler()}setHandler(t,e){this.channels[t].setHandler(e)}addData(t,e){this.logger.time=t;for(let t=0;t"["+Jr([e[t],e[t+1]])+"] -> ("+Jr([s,i])+")"));const a=this.cmdHistory;if(s>=16&&s<=31){if(on(s,i,a)){an(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Jr([s,i])+") is dropped"));continue}an(s,i,this.cmdHistory),r=this.parseCmd(s,i),r||(r=this.parseMidrow(s,i)),r||(r=this.parsePAC(s,i)),r||(r=this.parseBackgroundAttributes(s,i))}else an(null,null,a);if(!r&&(n=this.parseChars(s,i),n)){const t=this.currentChannel;if(t&&t>0){this.channels[t].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}r||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Jr([s,i])+" orig: "+Jr([e[t],e[t+1]])))}}parseCmd(t,e){if(!((20===t||28===t||21===t||29===t)&&e>=32&&e<=47)&&!((23===t||31===t)&&e>=33&&e<=35))return!1;const s=20===t||21===t||23===t?1:2,i=this.channels[s];return 20===t||21===t||28===t||29===t?32===e?i.ccRCL():33===e?i.ccBS():34===e?i.ccAOF():35===e?i.ccAON():36===e?i.ccDER():37===e?i.ccRU(2):38===e?i.ccRU(3):39===e?i.ccRU(4):40===e?i.ccFON():41===e?i.ccRDC():42===e?i.ccTR():43===e?i.ccRTD():44===e?i.ccEDM():45===e?i.ccCR():46===e?i.ccENM():47===e&&i.ccEOC():i.ccTO(e-32),this.currentChannel=s,!0}parseMidrow(t,e){let s=0;if((17===t||25===t)&&e>=32&&e<=47){if(s=17===t?1:2,s!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const i=this.channels[s];return!!i&&(i.ccMIDROW(e),this.logger.log(3,(()=>"MIDROW ("+Jr([t,e])+")")),!0)}return!1}parsePAC(t,e){let s;if(!((t>=17&&t<=23||t>=25&&t<=31)&&e>=64&&e<=127)&&!((16===t||24===t)&&e>=64&&e<=95))return!1;const i=t<=23?1:2;s=e>=64&&e<=95?1===i?Wr[t]:qr[t]:1===i?jr[t]:Xr[t];const r=this.channels[i];return!!r&&(r.setPAC(this.interpretPAC(s,e)),this.currentChannel=i,!0)}interpretPAC(t,e){let s;const i={color:null,italics:!1,indent:null,underline:!1,row:t};return s=e>95?e-96:e-64,i.underline=1==(1&s),s<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(s/2)]:s<=15?(i.italics=!0,i.color="white"):i.indent=4*Math.floor((s-16)/2),i}parseChars(t,e){let s,i=null,r=null;if(t>=25?(s=2,r=t-8):(s=1,r=t),r>=17&&r<=19){let t;t=17===r?e+80:18===r?e+112:e+144,this.logger.log(2,(()=>"Special char '"+Hr(t)+"' in channel "+s)),i=[t]}else t>=32&&t<=127&&(i=0===e?[t]:[t,e]);return i&&this.logger.log(3,(()=>"Char codes = "+Jr(i).join(","))),i}parseBackgroundAttributes(t,e){if(!((16===t||24===t)&&e>=32&&e<=47)&&!((23===t||31===t)&&e>=45&&e<=47))return!1;let s;const i={};16===t||24===t?(s=Math.floor((e-32)/2),i.background=zr[s],e%2==1&&(i.background=i.background+"_semi")):45===e?i.background="transparent":(i.foreground="black",47===e&&(i.underline=!0));const r=t<=23?1:2;return this.channels[r].setBkgData(i),!0}reset(){for(let t=0;tt)&&(this.startTime=t),this.endTime=e,this.screen=s,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var hn=function(){if(null!=H&&H.VTTCue)return self.VTTCue;const t=["","lr","rl"],e=["start","middle","end","left","right"];function s(t,e){if("string"!=typeof e)return!1;if(!Array.isArray(t))return!1;const s=e.toLowerCase();return!!~t.indexOf(s)&&s}function i(t){return s(e,t)}function r(t,...e){let s=1;for(;s100)throw new Error("Position must be between 0 and 100.");T=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",r({},l,{get:function(){return E},set:function(t){const e=i(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");E=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",r({},l,{get:function(){return S},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");S=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",r({},l,{get:function(){return L},set:function(t){const e=i(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");L=e,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class dn{decode(t,e){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))}}function cn(t){function e(t,e,s,i){return 3600*(0|t)+60*(0|e)+(0|s)+parseFloat(i||0)}const s=t.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return s?parseFloat(s[2])>59?e(s[2],s[3],0,s[4]):e(s[1],s[2],s[3],s[4]):null}class un{constructor(){this.values=Object.create(null)}set(t,e){this.get(t)||""===e||(this.values[t]=e)}get(t,e,s){return s?this.has(t)?this.values[t]:e[s]:this.has(t)?this.values[t]:e}has(t){return t in this.values}alt(t,e,s){for(let i=0;i=0&&s<=100)return this.set(t,s),!0}return!1}}function fn(t,e,s,i){const r=i?t.split(i):[t];for(const t in r){if("string"!=typeof r[t])continue;const i=r[t].split(s);if(2!==i.length)continue;e(i[0],i[1])}}const gn=new hn(0,0,""),mn="middle"===gn.align?"middle":"center";function pn(t,e,s){const i=t;function r(){const e=cn(t);if(null===e)throw new Error("Malformed timestamp: "+i);return t=t.replace(/^[^\sa-zA-Z-]+/,""),e}function n(){t=t.replace(/^\s+/,"")}if(n(),e.startTime=r(),n(),"--\x3e"!==t.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+i);t=t.slice(3),n(),e.endTime=r(),n(),function(t,e){const i=new un;fn(t,(function(t,e){let r;switch(t){case"region":for(let r=s.length-1;r>=0;r--)if(s[r].id===e){i.set(t,s[r].region);break}break;case"vertical":i.alt(t,e,["rl","lr"]);break;case"line":r=e.split(","),i.integer(t,r[0]),i.percent(t,r[0])&&i.set("snapToLines",!1),i.alt(t,r[0],["auto"]),2===r.length&&i.alt("lineAlign",r[1],["start",mn,"end"]);break;case"position":r=e.split(","),i.percent(t,r[0]),2===r.length&&i.alt("positionAlign",r[1],["start",mn,"end","line-left","line-right","auto"]);break;case"size":i.percent(t,e);break;case"align":i.alt(t,e,["start",mn,"end","left","right"])}}),/:/,/\s/),e.region=i.get("region",null),e.vertical=i.get("vertical","");let r=i.get("line","auto");"auto"===r&&-1===gn.line&&(r=-1),e.line=r,e.lineAlign=i.get("lineAlign","start"),e.snapToLines=i.get("snapToLines",!0),e.size=i.get("size",100),e.align=i.get("align",mn);let n=i.get("position","auto");"auto"===n&&50===gn.position&&(n="start"===e.align||"left"===e.align?0:"end"===e.align||"right"===e.align?100:50),e.position=n}(t,e)}function vn(t){return t.replace(//gi,"\n")}class yn{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new dn,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(t){const e=this;function s(){let t=e.buffer,s=0;for(t=vn(t);s>>0).toString()};function Ln(t,e,s){return Sn(t.toString())+Sn(e.toString())+Sn(s)}function An(t,e,s,i,r,n,a){const o=new yn,l=Et(new Uint8Array(t)).trim().replace(Tn,"\n").split("\n"),h=[],d=e?function(t,e=1){return mr(t,9e4,1/e)}(e.baseTime,e.timescale):0;let c,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(t){const n=s[i];let a=s.ccOffset;const o=(f-d)/9e4;if(null!=n&&n.new&&(void 0!==g?a=s.ccOffset=n.start:function(t,e,s){let i=t[e],r=t[i.prevCC];if(!r||!r.new&&i.new)return t.ccOffset=t.presentationOffset=i.start,void(i.new=!1);for(;null!=(n=r)&&n.new;){var n;t.ccOffset+=i.start-r.start,i.new=!1,i=r,r=t[i.prevCC]}t.presentationOffset=s}(s,i,o)),o){if(!e)return void(c=new Error("Missing initPTS for VTT MPEGTS"));a=o-s.presentationOffset}const l=t.endTime-t.startTime,u=Sr(9e4*(t.startTime+a-g),9e4*r)/9e4;t.startTime=Math.max(u,0),t.endTime=Math.max(u+l,0);const m=t.text.trim();t.text=decodeURIComponent(encodeURIComponent(m)),t.id||(t.id=Ln(t.startTime,t.endTime,m)),t.endTime>0&&h.push(t)},o.onparsingerror=function(t){c=t},o.onflush=function(){c?a(c):n(h)},l.forEach((t=>{if(m){if(En(t,"X-TIMESTAMP-MAP=")){m=!1,t.slice(16).split(",").forEach((t=>{En(t,"LOCAL:")?u=t.slice(6):En(t,"MPEGTS:")&&(f=parseInt(t.slice(7)))}));try{g=function(t){let e=parseInt(t.slice(-3));const s=parseInt(t.slice(-6,-4)),i=parseInt(t.slice(-9,-7)),r=t.length>9?parseInt(t.substring(0,t.indexOf(":"))):0;if(!(p(e)&&p(s)&&p(i)&&p(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${t}`);return e+=1e3*s,e+=6e4*i,e+=36e5*r,e}(u)/1e3}catch(t){c=t}return}""===t&&(m=!1)}o.parse(t+"\n")})),o.flush()}const Rn="stpp.ttml.im1t",bn=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,kn=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,Dn={left:"start",center:"center",right:"end",start:"start",end:"end"};function In(t,e,s,i){const r=Pt(new Uint8Array(t),["mdat"]);if(0===r.length)return void i(new Error("Could not parse IMSC1 mdat"));const n=r.map((t=>Et(t))),a=function(t,e,s=1,i=!1){return mr(t,e,1/s,i)}(e.baseTime,1,e.timescale);try{n.forEach((t=>s(function(t,e){const s=(new DOMParser).parseFromString(t,"text/xml"),i=s.getElementsByTagName("tt")[0];if(!i)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(r).reduce(((t,e)=>(t[e]=i.getAttribute(`ttp:${e}`)||r[e],t)),{}),a="preserve"!==i.getAttribute("xml:space"),o=Cn(wn(i,"styling","style")),l=Cn(wn(i,"layout","region")),h=wn(i,"body","[begin]");return[].map.call(h,(t=>{const s=_n(t,a);if(!s||!t.hasAttribute("begin"))return null;const i=Fn(t.getAttribute("begin"),n),r=Fn(t.getAttribute("dur"),n);let h=Fn(t.getAttribute("end"),n);if(null===i)throw Pn(t);if(null===h){if(null===r)throw Pn(t);h=i+r}const d=new hn(i-e,h-e,s);d.id=Ln(d.startTime,d.endTime,d.text);const c=function(t,e,s){const i="http://www.w3.org/ns/ttml#styling";let r=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=t&&t.hasAttribute("style")?t.getAttribute("style"):null;a&&s.hasOwnProperty(a)&&(r=s[a]);return n.reduce(((s,n)=>{const a=xn(e,i,n)||xn(t,i,n)||xn(r,i,n);return a&&(s[n]=a),s}),{})}(l[t.getAttribute("region")],o[t.getAttribute("style")],o),{textAlign:u}=c;if(u){const t=Dn[u];t&&(d.lineAlign=t),d.align=u}return m(d,c),d})).filter((t=>null!==t))}(t,a))))}catch(t){i(t)}}function wn(t,e,s){const i=t.getElementsByTagName(e)[0];return i?[].slice.call(i.querySelectorAll(s)):[]}function Cn(t){return t.reduce(((t,e)=>{const s=e.getAttribute("xml:id");return s&&(t[s]=e),t}),{})}function _n(t,e){return[].slice.call(t.childNodes).reduce(((t,s,i)=>{var r;return"br"===s.nodeName&&i?t+"\n":null!=(r=s.childNodes)&&r.length?_n(s,e):e?t+s.textContent.trim().replace(/\s+/g," "):t+s.textContent}),"")}function xn(t,e,s){return t&&t.hasAttributeNS(e,s)?t.getAttributeNS(e,s):null}function Pn(t){return new Error(`Could not parse ttml timestamp ${t}`)}function Fn(t,e){if(!t)return null;let s=cn(t);return null===s&&(bn.test(t)?s=function(t,e){const s=bn.exec(t),i=(0|s[4])+(0|s[5])/e.subFrameRate;return 3600*(0|s[1])+60*(0|s[2])+(0|s[3])+i/e.frameRate}(t,e):kn.test(t)&&(s=function(t,e){const s=kn.exec(t),i=Number(s[1]);switch(s[2]){case"h":return 3600*i;case"m":return 60*i;case"ms":return 1e3*i;case"f":return i/e.frameRate;case"t":return i/e.tickRate}return i}(t,e))),s}function Mn(t){return t.characteristics&&/transcribes-spoken-dialog/gi.test(t.characteristics)&&/describes-music-and-sound/gi.test(t.characteristics)?"captions":"subtitles"}function On(t,e){return!!t&&t.kind===Mn(e)&&Nr(e,t)}class Nn{constructor(t){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=t,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(t){this.streamController=t}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:t}=this;t.on(T.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(T.BUFFER_CODECS,this.onBufferCodecs,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:t}=this;t.off(T.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(T.BUFFER_CODECS,this.onBufferCodecs,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(t,e){const s=this.hls.levels[e.droppedLevel];this.isLevelAllowed(s)&&this.restrictedLevels.push({bitrate:s.bitrate,height:s.height,width:s.width})}onMediaAttaching(t,e){this.media=e.media instanceof HTMLVideoElement?e.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(t,e){const s=this.hls;this.restrictedLevels=[],this.firstLevel=e.firstLevel,s.config.capLevelToPlayerSize&&e.video&&this.startCapping()}onLevelsUpdated(t,e){this.timer&&p(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(t,e){this.hls.config.capLevelToPlayerSize&&e.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const t=this.hls.levels;if(t.length){const e=this.hls,s=this.getMaxLevel(t.length-1);s!==this.autoLevelCapping&&k.log(`Setting autoLevelCapping to ${s}: ${t[s].height}p@${t[s].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),e.autoLevelCapping=s,e.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=e.autoLevelCapping}}}getMaxLevel(t){const e=this.hls.levels;if(!e.length)return-1;const s=e.filter(((e,s)=>this.isLevelAllowed(e)&&s<=t));return this.clientRect=null,Nn.getMaxLevelByMediaSize(s,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const t=this.media,e={width:0,height:0};if(t){const s=t.getBoundingClientRect();e.width=s.width,e.height=s.height,e.width||e.height||(e.width=s.right-s.left||t.width||0,e.height=s.bottom-s.top||t.height||0)}return this.clientRect=e,e}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let t=1;if(!this.hls.config.ignoreDevicePixelRatio)try{t=self.devicePixelRatio}catch(t){}return t}isLevelAllowed(t){return!this.restrictedLevels.some((e=>t.bitrate===e.bitrate&&t.width===e.width&&t.height===e.height))}static getMaxLevelByMediaSize(t,e,s){if(null==t||!t.length)return-1;let i=t.length-1;const r=Math.max(e,s);for(let e=0;e=r||s.height>=r)&&(n=s,!(a=t[e+1])||n.width!==a.width||n.height!==a.height)){i=e;break}}var n,a;return i}}const Un="[eme]";class Bn{constructor(t){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=Bn.CDMCleanupPromise?[Bn.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=k.debug.bind(k,Un),this.log=k.log.bind(k,Un),this.warn=k.warn.bind(k,Un),this.error=k.error.bind(k,Un),this.hls=t,this.config=t.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const t=this.config;t.requestMediaKeySystemAccessFunc=null,t.licenseXhrSetup=t.licenseResponseCallback=void 0,t.drmSystems=t.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(T.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(T.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(T.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(T.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(t){const{drmSystems:e,widevineLicenseUrl:s}=this.config,i=e[t];if(i)return i.licenseUrl;if(t===V.WIDEVINE&&s)return s;throw new Error(`no license server URL configured for key-system "${t}"`)}getServerCertificateUrl(t){const{drmSystems:e}=this.config,s=e[t];if(s)return s.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${t}"]`)}attemptKeySystemAccess(t){const e=this.hls.levels,s=(t,e,s)=>!!t&&s.indexOf(t)===e,i=e.map((t=>t.audioCodec)).filter(s),r=e.map((t=>t.videoCodec)).filter(s);return i.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((e,s)=>{const n=t=>{const a=t.shift();this.getMediaKeysPromise(a,i,r).then((t=>e({keySystem:a,mediaKeys:t}))).catch((e=>{t.length?n(t):s(e instanceof $n?e:new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_ACCESS,error:e,fatal:!0},e.message))}))};n(t)}))}requestMediaKeySystemAccess(t,e){const{requestMediaKeySystemAccessFunc:s}=this.config;if("function"!=typeof s){let t=`Configured requestMediaKeySystemAccess is not a function ${s}`;return null===it&&"http:"===self.location.protocol&&(t=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(t))}return s(t,e)}getMediaKeysPromise(t,e,s){const i=function(t,e,s,i){let r;switch(t){case V.FAIRPLAY:r=["cenc","sinf"];break;case V.WIDEVINE:case V.PLAYREADY:r=["cenc"];break;case V.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${t}`)}return function(t,e,s,i){return[{initDataTypes:t,persistentState:i.persistentState||"optional",distinctiveIdentifier:i.distinctiveIdentifier||"optional",sessionTypes:i.sessionTypes||[i.sessionType||"temporary"],audioCapabilities:e.map((t=>({contentType:`audio/mp4; codecs="${t}"`,robustness:i.audioRobustness||"",encryptionScheme:i.audioEncryptionScheme||null}))),videoCapabilities:s.map((t=>({contentType:`video/mp4; codecs="${t}"`,robustness:i.videoRobustness||"",encryptionScheme:i.videoEncryptionScheme||null})))}]}(r,e,s,i)}(t,e,s,this.config.drmSystemOptions),r=this.keySystemAccessPromises[t];let n=null==r?void 0:r.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${t}" key-system access with config: ${JSON.stringify(i)}`),n=this.requestMediaKeySystemAccess(t,i);const e=this.keySystemAccessPromises[t]={keySystemAccess:n};return n.catch((e=>{this.log(`Failed to obtain access to key-system "${t}": ${e}`)})),n.then((s=>{this.log(`Access for key-system "${s.keySystem}" obtained`);const i=this.fetchServerCertificate(t);return this.log(`Create media-keys for "${t}"`),e.mediaKeys=s.createMediaKeys().then((e=>(this.log(`Media-keys created for "${t}"`),i.then((s=>s?this.setMediaKeysServerCertificate(e,t,s):e))))),e.mediaKeys.catch((e=>{this.error(`Failed to create media-keys for "${t}"}: ${e}`)})),e.mediaKeys}))}return n.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:t,keySystem:e,mediaKeys:s}){this.log(`Creating key-system session "${e}" keyId: ${At(t.keyId||[])}`);const i=s.createSession(),r={decryptdata:t,keySystem:e,mediaKeys:s,mediaKeysSession:i,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(t){const e=t.decryptdata;if(e.pssh){const s=this.createMediaKeySessionContext(t),i=this.getKeyIdString(e),r="cenc";this.keyIdToKeySessionPromise[i]=this.generateRequestWithPreferredKeySession(s,r,e.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(t)}getKeyIdString(t){if(!t)throw new Error("Could not read keyId of undefined decryptdata");if(null===t.keyId)throw new Error("keyId is null");return At(t.keyId)}updateKeySession(t,e){var s;const i=t.mediaKeysSession;return this.log(`Updating key-session "${i.sessionId}" for keyID ${At((null==(s=t.decryptdata)?void 0:s.keyId)||[])}\n } (data length: ${e?e.byteLength:e})`),i.update(e)}selectKeySystemFormat(t){const e=Object.keys(t.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${t.sn} ${t.type}: ${t.level}) key formats ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)),this.keyFormatPromise}getKeyFormatPromise(t){return new Promise(((e,s)=>{const i=st(this.config),r=t.map(X).filter((t=>!!t&&-1!==i.indexOf(t)));return this.getKeySystemSelectionPromise(r).then((({keySystem:t})=>{const i=et(t);i?e(i):s(new Error(`Unable to find format for key-system "${t}"`))})).catch(s)}))}loadKey(t){const e=t.keyInfo.decryptdata,s=this.getKeyIdString(e),i=`(keyId: ${s} format: "${e.keyFormat}" method: ${e.method} uri: ${e.uri})`;this.log(`Starting session for key ${i}`);let r=this.keyIdToKeySessionPromise[s];return r||(r=this.keyIdToKeySessionPromise[s]=this.getKeySystemForKeyPromise(e).then((({keySystem:s,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${t.frag.sn} ${t.frag.type}: ${t.frag.level} using key ${i}`),this.attemptSetMediaKeys(s,r).then((()=>{this.throwIfDestroyed();const t=this.createMediaKeySessionContext({keySystem:s,mediaKeys:r,decryptdata:e});return this.generateRequestWithPreferredKeySession(t,"cenc",e.pssh,"playlist-key")}))))),r.catch((t=>this.handleError(t)))),r}throwIfDestroyed(t="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(t){this.hls&&(this.error(t.message),t instanceof $n?this.hls.trigger(T.ERROR,t.data):this.hls.trigger(T.ERROR,{type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_KEYS,error:t,fatal:!0}))}getKeySystemForKeyPromise(t){const e=this.getKeyIdString(t),s=this.keyIdToKeySessionPromise[e];if(!s){const e=X(t.keyFormat),s=e?[e]:st(this.config);return this.attemptKeySystemAccess(s)}return s}getKeySystemSelectionPromise(t){if(t.length||(t=st(this.config)),0===t.length)throw new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(t)}_onMediaEncrypted(t){const{initDataType:e,initData:s}=t,i=`"${t.type}" event: init data type: "${e}"`;if(this.debug(i),null===s)return;let r,n;if("sinf"===e&&this.config.drmSystems[V.FAIRPLAY]){const t=Dt(new Uint8Array(s));try{const e=$(JSON.parse(t).sinf),s=$t(new Uint8Array(e));if(!s)throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc");r=s.subarray(8,24),n=V.FAIRPLAY}catch(t){return void this.warn(`${i} Failed to parse sinf: ${t}`)}}else{const t=function(t){const e=[];if(t instanceof ArrayBuffer){const s=t.byteLength;let i=0;for(;i+32t.systemId===Z))[0];if(!e)return void(0===t.length||t.some((t=>!t.systemId))?this.warn(`${i} contains incomplete or invalid pssh data`):this.log(`ignoring ${i} for ${t.map((t=>tt(t.systemId))).join(",")} pssh data in favor of playlist keys`));if(n=tt(e.systemId),0===e.version&&e.data){const t=e.data.length-22;r=e.data.subarray(t,t+16)}}if(!n||!r)return;const a=At(r),{keyIdToKeySessionPromise:o,mediaKeySessions:l}=this;let h=o[a];for(let t=0;tthis.generateRequestWithPreferredKeySession(i,e,s,"encrypted-event-key-match")));break}}h||(h=o[a]=this.getKeySystemSelectionPromise([n]).then((({keySystem:t,mediaKeys:i})=>{var n;this.throwIfDestroyed();const o=new zt("ISO-23001-7",a,null!=(n=et(t))?n:"");return o.pssh=new Uint8Array(s),o.keyId=r,this.attemptSetMediaKeys(t,i).then((()=>{this.throwIfDestroyed();const r=this.createMediaKeySessionContext({decryptdata:o,keySystem:t,mediaKeys:i});return this.generateRequestWithPreferredKeySession(r,e,s,"encrypted-event-no-match")}))}))),h.catch((t=>this.handleError(t)))}_onWaitingForKey(t){this.log(`"${t.type}" event`)}attemptSetMediaKeys(t,e){const s=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${t}"`);const i=Promise.all(s).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(e)}));return this.setMediaKeysQueue.push(i),i.then((()=>{this.log(`Media-keys set for "${t}"`),s.push(i),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((t=>-1===s.indexOf(t)))}))}generateRequestWithPreferredKeySession(t,e,s,i){var r,n;const a=null==(r=this.config.drmSystems)||null==(n=r[t.keySystem])?void 0:n.generateRequest;if(a)try{const i=a.call(this.hls,e,s,t);if(!i)throw new Error("Invalid response from configured generateRequest filter");e=i.initDataType,s=t.decryptdata.pssh=i.initData?new Uint8Array(i.initData):null}catch(t){var o;if(this.warn(t.message),null!=(o=this.hls)&&o.config.debug)throw t}if(null===s)return this.log(`Skipping key-session request for "${i}" (no initData)`),Promise.resolve(t);const l=this.getKeyIdString(t.decryptdata);this.log(`Generating key-session request for "${i}": ${l} (init data type: ${e} length: ${s?s.byteLength:null})`);const h=new Pr,d=t._onmessage=e=>{const s=t.mediaKeysSession;if(!s)return void h.emit("error",new Error("invalid state"));const{messageType:i,message:r}=e;this.log(`"${i}" message event for session "${s.sessionId}" message size: ${r.byteLength}`),"license-request"===i||"license-renewal"===i?this.renewLicense(t,r).catch((t=>{this.handleError(t),h.emit("error",t)})):"license-release"===i?t.keySystem===V.FAIRPLAY&&(this.updateKeySession(t,K("acknowledged")),this.removeSession(t)):this.warn(`unhandled media key message type "${i}"`)},c=t._onkeystatuseschange=e=>{if(!t.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(t);const s=t.keyStatus;h.emit("keyStatus",s),"expired"===s&&(this.warn(`${t.keySystem} expired for key ${l}`),this.renewKeySession(t))};t.mediaKeysSession.addEventListener("message",d),t.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((t,e)=>{h.on("error",e),h.on("keyStatus",(s=>{s.startsWith("usable")?t():"output-restricted"===s?e(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===s?e(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${s}"`)):"expired"===s?e(new Error("key expired while generating request")):this.warn(`unhandled key status change "${s}"`)}))}));return t.mediaKeysSession.generateRequest(e,s).then((()=>{var e;this.log(`Request generated for key-session "${null==(e=t.mediaKeysSession)?void 0:e.sessionId}" keyId: ${l}`)})).catch((t=>{throw new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_SESSION,error:t,fatal:!1},`Error generating key-session request: ${t}`)})).then((()=>u)).catch((e=>{throw h.removeAllListeners(),this.removeSession(t),e})).then((()=>(h.removeAllListeners(),t)))}onKeyStatusChange(t){t.mediaKeysSession.keyStatuses.forEach(((e,s)=>{this.log(`key status change "${e}" for keyStatuses keyId: ${At("buffer"in s?new Uint8Array(s.buffer,s.byteOffset,s.byteLength):new Uint8Array(s))} session keyId: ${At(new Uint8Array(t.decryptdata.keyId||[]))} uri: ${t.decryptdata.uri}`),t.keyStatus=e}))}fetchServerCertificate(t){const e=this.config,s=new(0,e.loader)(e),i=this.getServerCertificateUrl(t);return i?(this.log(`Fetching server certificate for "${t}"`),new Promise(((r,n)=>{const a={responseType:"arraybuffer",url:i},o=e.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(t,e,s,i)=>{r(t.data)},onError:(e,s,r,o)=>{n(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:u({url:a.url,data:void 0},e)},`"${t}" certificate request failed (${i}). Status: ${e.code} (${e.text})`))},onTimeout:(e,s,r)=>{n(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:a.url,data:void 0}},`"${t}" certificate request timed out (${i})`))},onAbort:(t,e,s)=>{n(new Error("aborted"))}};s.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(t,e,s){return new Promise(((i,r)=>{t.setServerCertificate(s).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==s?void 0:s.byteLength}) on "${e}"`),i(t)})).catch((t=>{r(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:t,fatal:!0},t.message))}))}))}renewLicense(t,e){return this.requestLicense(t,new Uint8Array(e)).then((e=>this.updateKeySession(t,new Uint8Array(e)).catch((t=>{throw new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:t,fatal:!0},t.message)}))))}unpackPlayReadyKeyMessage(t,e){const s=String.fromCharCode.apply(null,new Uint16Array(e.buffer));if(!s.includes("PlayReadyKeyMessage"))return t.setRequestHeader("Content-Type","text/xml; charset=utf-8"),e;const i=(new DOMParser).parseFromString(s,"application/xml"),r=i.querySelectorAll("HttpHeader");if(r.length>0){let e;for(let s=0,i=r.length;s in key message");return K(atob(l))}setupLicenseXHR(t,e,s,i){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!s.decryptdata)throw new Error("Key removed");return r.call(this.hls,t,e,s,i)})).catch((n=>{if(!s.decryptdata)throw n;return t.open("POST",e,!0),r.call(this.hls,t,e,s,i)})).then((s=>{t.readyState||t.open("POST",e,!0);return{xhr:t,licenseChallenge:s||i}})):(t.open("POST",e,!0),Promise.resolve({xhr:t,licenseChallenge:i}))}requestLicense(t,e){const s=this.config.keyLoadPolicy.default;return new Promise(((i,r)=>{const n=this.getLicenseServerUrl(t.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!t.mediaKeysSession)return r(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let e=a.response;this.log(`License received ${e instanceof ArrayBuffer?e.byteLength:e}`);const s=this.config.licenseResponseCallback;if(s)try{e=s.call(this.hls,a,n,t)}catch(t){this.error(t)}i(e)}else{const o=s.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)r(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const s=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${s} attempts left`),this.requestLicense(t,e).then(i,r)}}},t.licenseXhr&&t.licenseXhr.readyState!==XMLHttpRequest.DONE&&t.licenseXhr.abort(),t.licenseXhr=a,this.setupLicenseXHR(a,n,t,e).then((({xhr:e,licenseChallenge:s})=>{t.keySystem==V.PLAYREADY&&(s=this.unpackPlayReadyKeyMessage(e,s)),e.send(s)}))}))}onMediaAttached(t,e){if(!this.config.emeEnabled)return;const s=e.media;this.media=s,s.addEventListener("encrypted",this.onMediaEncrypted),s.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const t=this.media,e=this.mediaKeySessions;t&&(t.removeEventListener("encrypted",this.onMediaEncrypted),t.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},zt.clearKeyUriToKeyIdMap();const s=e.length;Bn.CDMCleanupPromise=Promise.all(e.map((t=>this.removeSession(t))).concat(null==t?void 0:t.setMediaKeys(null).catch((t=>{this.log(`Could not clear media keys: ${t}`)})))).then((()=>{s&&(this.log("finished closing key sessions and clearing media keys"),e.length=0)})).catch((t=>{this.log(`Could not close sessions and clear media keys: ${t}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(t,{sessionKeys:e}){if(e&&this.config.emeEnabled&&!this.keyFormatPromise){const t=e.reduce(((t,e)=>(-1===t.indexOf(e.keyFormat)&&t.push(e.keyFormat),t)),[]);this.log(`Selecting key-system from session-keys ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)}}removeSession(t){const{mediaKeysSession:e,licenseXhr:s}=t;if(e){this.log(`Remove licenses and keys and close session ${e.sessionId}`),t._onmessage&&(e.removeEventListener("message",t._onmessage),t._onmessage=void 0),t._onkeystatuseschange&&(e.removeEventListener("keystatuseschange",t._onkeystatuseschange),t._onkeystatuseschange=void 0),s&&s.readyState!==XMLHttpRequest.DONE&&s.abort(),t.mediaKeysSession=t.decryptdata=t.licenseXhr=void 0;const i=this.mediaKeySessions.indexOf(t);return i>-1&&this.mediaKeySessions.splice(i,1),e.remove().catch((t=>{this.log(`Could not remove session: ${t}`)})).then((()=>e.close())).catch((t=>{this.log(`Could not close session: ${t}`)}))}}}Bn.CDMCleanupPromise=void 0;class $n extends Error{constructor(t,e){super(e),this.data=void 0,t.error||(t.error=new Error(e)),this.data=t,t.err=t.error}}var Gn,Kn,Hn;!function(t){t.MANIFEST="m",t.AUDIO="a",t.VIDEO="v",t.MUXED="av",t.INIT="i",t.CAPTION="c",t.TIMED_TEXT="tt",t.KEY="k",t.OTHER="o"}(Gn||(Gn={})),function(t){t.DASH="d",t.HLS="h",t.SMOOTH="s",t.OTHER="o"}(Kn||(Kn={})),function(t){t.OBJECT="CMCD-Object",t.REQUEST="CMCD-Request",t.SESSION="CMCD-Session",t.STATUS="CMCD-Status"}(Hn||(Hn={}));const Vn={[Hn.OBJECT]:["br","d","ot","tb"],[Hn.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[Hn.SESSION]:["cid","pr","sf","sid","st","v"],[Hn.STATUS]:["bs","rtp"]};class Yn{constructor(t,e){this.value=void 0,this.params=void 0,Array.isArray(t)&&(t=t.map((t=>t instanceof Yn?t:new Yn(t)))),this.value=t,this.params=e}}class Wn{constructor(t){this.description=void 0,this.description=t}}function jn(t,e,s,i){return new Error(`failed to ${t} "${r=e,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${s}`,{cause:i});var r}const qn="Bare Item";const Xn=/[\x00-\x1f\x7f]+/;function zn(t,e,s){return jn("serialize",t,e,s)}function Qn(t){if(!1===ArrayBuffer.isView(t))throw zn(t,"Byte Sequence");return`:${e=t,btoa(String.fromCharCode(...e))}:`;var e}function Jn(t){if(function(t){return t<-999999999999999||99999999999999912)throw zn(t,"Decimal");const s=e.toString();return s.includes(".")?s:`${s}.0`}function ea(t){const e=(s=t).description||s.toString().slice(7,-1);var s;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(e))throw zn(e,"Token");return e}function sa(t){switch(typeof t){case"number":if(!p(t))throw zn(t,qn);return Number.isInteger(t)?Jn(t):ta(t);case"string":return function(t){if(Xn.test(t))throw zn(t,"String");return`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(t);case"symbol":return ea(t);case"boolean":return function(t){if("boolean"!=typeof t)throw zn(t,"Boolean");return t?"?1":"?0"}(t);case"object":if(t instanceof Date)return function(t){return`@${Jn(t.getTime()/1e3)}`}(t);if(t instanceof Uint8Array)return Qn(t);if(t instanceof Wn)return ea(t);default:throw zn(t,qn)}}function ia(t){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(t))throw zn(t,"Key");return t}function ra(t){return null==t?"":Object.entries(t).map((([t,e])=>!0===e?`;${ia(t)}`:`;${ia(t)}=${sa(e)}`)).join("")}function na(t){return t instanceof Yn?`${sa(t.value)}${ra(t.params)}`:sa(t)}function aa(t,e={whitespace:!0}){if("object"!=typeof t)throw zn(t,"Dict");const s=t instanceof Map?t.entries():Object.entries(t),i=null!=e&&e.whitespace?" ":"";return Array.from(s).map((([t,e])=>{e instanceof Yn==!1&&(e=new Yn(e));let s=ia(t);var i;return!0===e.value?s+=ra(e.params):(s+="=",Array.isArray(e.value)?s+=`(${(i=e).value.map(na).join(" ")})${ra(i.params)}`:s+=na(e)),s})).join(`,${i}`)}const oa=t=>Math.round(t),la=t=>100*oa(t/100),ha={br:oa,d:oa,bl:la,dl:la,mtp:la,nor:(t,e)=>(null!=e&&e.baseUrl&&(t=function(t,e){const s=new URL(t),i=new URL(e);if(s.origin!==i.origin)return t;const r=s.pathname.split("/").slice(1),n=i.pathname.split("/").slice(1,-1);for(;r[0]===n[0];)r.shift(),n.shift();for(;n.length;)n.shift(),r.unshift("..");return r.join("/")}(t,e.baseUrl)),encodeURIComponent(t)),rtp:la,tb:oa};function da(t,e){const s={};if(null==t||"object"!=typeof t)return s;const i=Object.keys(t).sort(),r=m({},ha,null==e?void 0:e.formatters),n=null==e?void 0:e.filter;return i.forEach((i=>{if(null!=n&&n(i))return;let a=t[i];const o=r[i];o&&(a=o(a,e)),"v"===i&&1===a||"pr"==i&&1===a||(t=>"number"==typeof t?p(t):null!=t&&""!==t&&!1!==t)(a)&&((t=>"ot"===t||"sf"===t||"st"===t)(i)&&"string"==typeof a&&(a=new Wn(a)),s[i]=a)})),s}function ca(t,e={}){return t?function(t,e){return aa(t,e)}(da(t,e),m({whitespace:!1},e)):""}function ua(t,e,s){return m(t,function(t,e={}){if(!t)return{};const s=Object.entries(t),i=Object.entries(Vn).concat(Object.entries((null==e?void 0:e.customHeaderMap)||{})),r=s.reduce(((t,e)=>{var s;const[r,n]=e,a=(null==(s=i.find((t=>t[1].includes(r))))?void 0:s[0])||Hn.REQUEST;return null!=t[a]||(t[a]={}),t[a][r]=n,t}),{});return Object.entries(r).reduce(((t,[s,i])=>(t[s]=ca(i,e),t)),{})}(e,s))}const fa=/CMCD=[^&#]+/;function ga(t,e,s){const i=function(t,e={}){if(!t)return"";const s=ca(t,e);return`CMCD=${encodeURIComponent(s)}`}(e,s);if(!i)return t;if(fa.test(t))return t.replace(fa,i);const r=t.includes("?")?"&":"?";return`${t}${r}${i}`}function ma(t,e,s,i){t&&Object.keys(e).forEach((r=>{const n=t.filter((t=>t.groupId===r)).map((t=>{const n=m({},t);return n.details=void 0,n.attrs=new w(n.attrs),n.url=n.attrs.URI=pa(t.url,t.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",s),n.groupId=n.attrs["GROUP-ID"]=e[r],n.attrs["PATHWAY-ID"]=i,n}));t.push(...n)}))}function pa(t,e,s,i){const{HOST:r,PARAMS:n,[s]:a}=i;let o;e&&(o=null==a?void 0:a[e],o&&(t=o));const l=new self.URL(t);return r&&!o&&(l.host=r),n&&Object.keys(n).sort().forEach((t=>{t&&l.searchParams.set(t,n[t])})),l.href}const va=/^age:\s*[\d.]+\s*$/im;class ya{constructor(t){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=t&&t.xhrSetup||null,this.stats=new x,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const t=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),t&&(t.onreadystatechange=null,t.onprogress=null,4!==t.readyState&&(this.stats.aborted=!0,t.abort()))}abort(){var t;this.abortInternal(),null!=(t=this.callbacks)&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(t,e,s){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=t,this.config=e,this.callbacks=s,this.loadInternal()}loadInternal(){const{config:t,context:e}=this;if(!t||!e)return;const s=this.loader=new self.XMLHttpRequest,i=this.stats;i.loading.first=0,i.loaded=0,i.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(this.loader===s&&!this.stats.aborted)return r(s,e.url)})).catch((t=>{if(this.loader===s&&!this.stats.aborted)return s.open("GET",e.url,!0),r(s,e.url)})).then((()=>{this.loader!==s||this.stats.aborted||this.openAndSendXhr(s,e,t)})).catch((t=>{this.callbacks.onError({code:s.status,text:t.message},e,s,i)})):this.openAndSendXhr(s,e,t)}openAndSendXhr(t,e,s){t.readyState||t.open("GET",e.url,!0);const i=e.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:n}=s.loadPolicy;if(i)for(const e in i)t.setRequestHeader(e,i[e]);e.rangeEnd&&t.setRequestHeader("Range","bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=e.responseType,self.clearTimeout(this.requestTimeout),s.timeout=r&&p(r)?r:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout),t.send()}readystatechange(){const{context:t,loader:e,stats:s}=this;if(!t||!e)return;const i=e.readyState,r=this.config;if(!s.aborted&&i>=2&&(0===s.loading.first&&(s.loading.first=Math.max(self.performance.now(),s.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(s.loading.first-s.loading.start)))),4===i)){self.clearTimeout(this.requestTimeout),e.onreadystatechange=null,e.onprogress=null;const i=e.status,n="text"!==e.responseType;if(i>=200&&i<300&&(n&&e.response||null!==e.responseText)){s.loading.end=Math.max(self.performance.now(),s.loading.first);const r=n?e.response:e.responseText,a="arraybuffer"===e.responseType?r.byteLength:r.length;if(s.loaded=s.total=a,s.bwEstimate=8e3*s.total/(s.loading.end-s.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(s,t,r,e),!this.callbacks)return;const l={url:e.responseURL,data:r,code:i};this.callbacks.onSuccess(l,s,t,e)}else{const n=r.loadPolicy.errorRetry;ys(n,s.retry,!1,{url:t.url,data:void 0,code:i})?this.retry(n):(k.error(`${i} while loading ${t.url}`),this.callbacks.onError({code:i,text:e.statusText},t,e,s))}}}loadtimeout(){if(!this.config)return;const t=this.config.loadPolicy.timeoutRetry;if(ys(t,this.stats.retry,!0))this.retry(t);else{var e;k.warn(`timeout while loading ${null==(e=this.context)?void 0:e.url}`);const t=this.callbacks;t&&(this.abortInternal(),t.onTimeout(this.stats,this.context,this.loader))}}retry(t){const{context:e,stats:s}=this;this.retryDelay=ps(t,s.retry),s.retry++,k.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==e?void 0:e.url}, retrying ${s.retry}/${t.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(t){const e=this.stats;e.loaded=t.loaded,t.lengthComputable&&(e.total=t.total)}getCacheAge(){let t=null;if(this.loader&&va.test(this.loader.getAllResponseHeaders())){const e=this.loader.getResponseHeader("age");t=e?parseFloat(e):null}return t}getResponseHeader(t){return this.loader&&new RegExp(`^${t}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(t):null}}const Ta=/(\d+)-(\d+)\/(\d+)/;class Ea{constructor(t){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=t.fetchSetup||Sa,this.controller=new self.AbortController,this.stats=new x}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var t;this.abortInternal(),null!=(t=this.callbacks)&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(t,e,s){const i=this.stats;if(i.loading.start)throw new Error("Loader can only be used once.");i.loading.start=self.performance.now();const r=function(t,e){const s={method:"GET",mode:"cors",credentials:"same-origin",signal:e,headers:new self.Headers(m({},t.headers))};t.rangeEnd&&s.headers.set("Range","bytes="+t.rangeStart+"-"+String(t.rangeEnd-1));return s}(t,this.controller.signal),n=s.onProgress,a="arraybuffer"===t.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=e.loadPolicy;this.context=t,this.config=e,this.callbacks=s,this.request=this.fetchSetup(t,r),self.clearTimeout(this.requestTimeout),e.timeout=l&&p(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),s.onTimeout(i,t,this.response)}),e.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const o=Math.max(self.performance.now(),i.loading.start);if(self.clearTimeout(this.requestTimeout),e.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),s.onTimeout(i,t,this.response)}),h-(o-i.loading.start)),!r.ok){const{status:t,statusText:e}=r;throw new La(e||"fetch, bad network response",t,r)}return i.loading.first=o,i.total=function(t){const e=t.get("Content-Range");if(e){const t=function(t){const e=Ta.exec(t);if(e)return parseInt(e[2])-parseInt(e[1])+1}(e);if(p(t))return t}const s=t.get("Content-Length");if(s)return parseInt(s)}(r.headers)||i.total,n&&p(e.highWaterMark)?this.loadProgressively(r,i,t,e.highWaterMark,n):a?r.arrayBuffer():"json"===t.responseType?r.json():r.text()})).then((r=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),i.loading.end=Math.max(self.performance.now(),i.loading.first);const l=r[o];l&&(i.loaded=i.total=l);const h={url:a.url,data:r,code:a.status};n&&!p(e.highWaterMark)&&n(i,t,r,a),s.onSuccess(h,i,t,a)})).catch((e=>{if(self.clearTimeout(this.requestTimeout),i.aborted)return;const r=e&&e.code||0,n=e?e.message:null;s.onError({code:r,text:n},t,e?e.details:null,i)}))}getCacheAge(){let t=null;if(this.response){const e=this.response.headers.get("age");t=e?parseFloat(e):null}return t}getResponseHeader(t){return this.response?this.response.headers.get(t):null}loadProgressively(t,e,s,i=0,r){const n=new Ii,a=t.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&r(e,s,n.flush(),t),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return e.loaded+=h,h=i&&r(e,s,n.flush(),t)):r(e,s,l,t),o()})).catch((()=>Promise.reject()));return o()}}function Sa(t,e){return new self.Request(t.url,e)}class La extends Error{constructor(t,e,s){super(t),this.code=void 0,this.details=void 0,this.code=e,this.details=s}}const Aa=/\s/,Ra={newCue(t,e,s,i){const r=[];let n,a,o,l,h;const d=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const i=vn(h.trim()),f=Ln(e,s,i);null!=t&&null!=(c=t.cues)&&c.getCueById(f)||(a=new d(e,s,i),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(a))}return t&&r.length&&(r.sort(((t,e)=>"auto"===t.line||"auto"===e.line?0:t.line>8&&e.line>8?e.line-t.line:t.line-e.line)),r.forEach((e=>Ue(t,e)))),r}},ba=u(u({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:ya,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(t){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:t,partCurrent:e,hls:s}=this,{autoLevelEnabled:i,media:r}=s;if(!t||!r)return;const n=performance.now(),a=e?e.stats:t.stats,o=e?e.duration:t.duration,l=n-a.loading.start,h=s.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||t.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!i||r.paused||!r.playbackRate||!r.readyState)return;const d=s.mainForwardBufferInfo;if(null===d)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,o/(2*u)*1e3))return;const f=d.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,v=this.getBwEstimate(),y=s.levels,E=y[t.level],S=a.total||Math.max(a.loaded,Math.round(o*E.averageBitrate/8));let L=m?l-g:l;L<1&&m&&(L=Math.min(l,8*a.loaded/v));const A=m?1e3*a.loaded/L:0,R=A?(S-a.loaded)/A:8*S/v+c/1e3;if(R<=f)return;const b=A?8*A:v;let D,I=Number.POSITIVE_INFINITY;for(D=t.level-1;D>h;D--){const t=y[D].maxBitrate;if(I=this.getTimeToLoadFrag(c/1e3,b,o*t,!y[D].details),I=R)return;if(I>10*o)return;s.nextLoadLevel=s.nextAutoLevel=D,m?this.bwEstimator.sample(l-Math.min(c,g),a.loaded):this.bwEstimator.sampleTTFB(l);const w=y[D].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>w&&this.resetEstimator(w),this.clearTimer(),k.warn(`[abr] Fragment ${t.sn}${e?" part "+e.index:""} of level ${t.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${R.toFixed(3)} s\n Estimated load time for down switch fragment: ${I.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${p(v)?0|v:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${D} @ ${0|w} bps`),s.trigger(T.FRAG_LOAD_EMERGENCY_ABORTED,{frag:t,part:e,stats:a})},this.hls=t,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(t){t&&(k.log(`setting initial bwe to ${t}`),this.hls.config.abrEwmaDefaultEstimate=t),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const t=this.hls.config;return new xs(t.abrEwmaSlowVoD,t.abrEwmaFastVoD,t.abrEwmaDefaultEstimate)}registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.FRAG_LOADING,this.onFragLoading,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.LEVEL_LOADED,this.onLevelLoaded,this),t.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(T.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t&&(t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.FRAG_LOADING,this.onFragLoading,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.LEVEL_LOADED,this.onLevelLoaded,this),t.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(T.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),t.off(T.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(t,e){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(t,e){const s=e.frag;if(!this.ignoreFragment(s)){var i;if(!s.bitrateTest)this.fragCurrent=s,this.partCurrent=null!=(i=e.part)?i:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(t,e){this.clearTimer()}onError(t,e){if(!e.fatal)switch(e.details){case S.BUFFER_ADD_CODEC_ERROR:case S.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case S.FRAG_LOAD_TIMEOUT:{const t=e.frag,{fragCurrent:s,partCurrent:i}=this;if(t&&s&&t.sn===s.sn&&t.level===s.level){const e=performance.now(),s=i?i.stats:t.stats,r=e-s.loading.start,n=s.loading.first?s.loading.first-s.loading.start:-1;if(s.loaded&&n>-1){const t=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(t,n),s.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(t,e,s,i){return t+s/e+(i?this.lastLevelLoadSec:0)}onLevelLoaded(t,e){const s=this.hls.config,{loading:i}=e.stats,r=i.end-i.start;p(r)&&(this.lastLevelLoadSec=r/1e3),e.details.live?this.bwEstimator.update(s.abrEwmaSlowLive,s.abrEwmaFastLive):this.bwEstimator.update(s.abrEwmaSlowVoD,s.abrEwmaFastVoD)}onFragLoaded(t,{frag:e,part:s}){const i=s?s.stats:e.stats;if(e.type===_e&&this.bwEstimator.sampleTTFB(i.loading.first-i.loading.start),!this.ignoreFragment(e)){if(this.clearTimer(),e.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const t=s?s.duration:e.duration,r=this.hls.levels[e.level],n=(r.loaded?r.loaded.bytes:0)+i.loaded,a=(r.loaded?r.loaded.duration:0)+t;r.loaded={bytes:n,duration:a},r.realBitrate=Math.round(8*n/a)}if(e.bitrateTest){const t={stats:i,frag:e,part:s,id:e.type};this.onFragBuffered(T.FRAG_BUFFERED,t),e.bitrateTest=!1}else this.lastLoadedFragLevel=e.level}}onFragBuffered(t,e){const{frag:s,part:i}=e,r=null!=i&&i.stats.loaded?i.stats:s.stats;if(r.aborted)return;if(this.ignoreFragment(s))return;const n=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,r.loaded),r.bwEstimate=this.getBwEstimate(),s.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(t){return t.type!==_e||"initSegment"===t.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:t,minAutoLevel:e}=this.hls,s=this.getBwEstimate(),i=this.hls.config.maxStarvationDelay,r=this.findBestLevel(s,e,t,0,i,1,1);if(r>-1)return r;const n=this.hls.firstLevel,a=Math.min(Math.max(n,e),t);return k.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const t=this.forcedAutoLevel,e=this.bwEstimator.canEstimate(),s=this.lastLoadedFragLevel>-1;if(!(-1===t||e&&s&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return t;const i=e&&s?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==t){const e=this.hls.levels;if(e.length>Math.max(t,i)&&e[t].loadError<=e[i].loadError)return t}return this._nextAutoLevel=i,this.nextAutoLevelKey=this.getAutoLevelKey(),i}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:t,partCurrent:e,hls:s}=this,{maxAutoLevel:i,config:r,minAutoLevel:n}=s,a=e?e.duration:t?t.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=r.abrBandWidthFactor,d=r.abrBandWidthUpFactor;if(l){const t=this.findBestLevel(o,n,i,l,0,h,d);if(t>=0)return t}let c=a?Math.min(a,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const t=this.bitrateTestDelay;if(t){c=(a?Math.min(a,r.maxLoadingDelay):r.maxLoadingDelay)-t,k.info(`[abr] bitrate test took ${Math.round(1e3*t)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),h=d=1}}const u=this.findBestLevel(o,n,i,l,c,h,d);if(k.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=s.levels[n],g=s.levels[s.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:s.loadLevel}getStarvationDelay(){const t=this.hls,e=t.media;if(!e)return 1/0;const s=e&&0!==e.playbackRate?Math.abs(e.playbackRate):1,i=t.mainForwardBufferInfo;return(i?i.len:0)/s}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(t,e,s,i,r,n,a){var o;const l=i+r,h=this.lastLoadedFragLevel,d=-1===h?this.hls.firstLevel:h,{fragCurrent:c,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:v}=this.hls;if(1===f.length)return 0;const y=f[d],T=!(null==y||null==(o=y.details)||!o.live),E=-1===m||-1===h;let S,L="SDR",A=(null==y?void 0:y.frameRate)||0;const{audioPreference:R,videoPreference:b}=v,D=this.audioTracksByGroup||(this.audioTracksByGroup=function(t){return t.reduce(((t,e)=>{let s=t.groups[e.groupId];s||(s=t.groups[e.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),s.tracks.push(e);const i=e.channels||"2";return s.channels[i]=(s.channels[i]||0)+1,s.hasDefault=s.hasDefault||e.default,s.hasAutoSelect=s.hasAutoSelect||e.autoselect,s.hasDefault&&(t.hasDefaultAudio=!0),s.hasAutoSelect&&(t.hasAutoSelectAudio=!0),t}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(E){if(-1!==this.firstSelection)return this.firstSelection;const i=this.codecTiers||(this.codecTiers=function(t,e,s,i){return t.slice(s,i+1).reduce(((t,s)=>{if(!s.codecSet)return t;const i=s.audioGroups;let r=t[s.codecSet];r||(t[s.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!i,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,s.bitrate);const n=Math.min(s.height,s.width);return r.minHeight=Math.min(r.minHeight,n),r.minFramerate=Math.min(r.minFramerate,s.frameRate),r.maxScore=Math.max(r.maxScore,s.score),r.fragmentError+=s.fragmentError,r.videoRanges[s.videoRange]=(r.videoRanges[s.videoRange]||0)+1,i&&i.forEach((t=>{if(!t)return;const s=e.groups[t];s&&(r.hasDefaultAudio=r.hasDefaultAudio||e.hasDefaultAudio?s.hasDefault:s.hasAutoSelect||!e.hasDefaultAudio&&!e.hasAutoSelectAudio,Object.keys(s.channels).forEach((t=>{r.channels[t]=(r.channels[t]||0)+s.channels[t]})))})),t}),{})}(f,D,e,s)),r=function(t,e,s,i,r){const n=Object.keys(t),a=null==i?void 0:i.channels,o=null==i?void 0:i.audioCodec,l=a&&2===parseInt(a);let h=!0,d=!1,c=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:v,allowedVideoRanges:y}=Ns(e,r);for(let e=n.length;e--;){const s=t[n[e]];h=s.channels[2]>0,c=Math.min(c,s.minHeight),u=Math.min(u,s.minFramerate),f=Math.min(f,s.minBitrate);const i=y.filter((t=>s.videoRanges[t]>0));i.length>0&&(d=!0,m=i)}c=p(c)?c:0,u=p(u)?u:0;const T=Math.max(1080,c),E=Math.max(30,u);return f=p(f)?f:s,s=Math.max(f,s),d||(e=void 0,m=[]),{codecSet:n.reduce(((e,i)=>{const r=t[i];if(i===e)return e;if(r.minBitrate>s)return Us(i,`min bitrate of ${r.minBitrate} > current estimate of ${s}`),e;if(!r.hasDefaultAudio)return Us(i,"no renditions with default or auto-select sound found"),e;if(o&&i.indexOf(o.substring(0,4))%5!=0)return Us(i,`audio codec preference "${o}" not found`),e;if(a&&!l){if(!r.channels[a])return Us(i,`no renditions with ${a} channel sound found (channels options: ${Object.keys(r.channels)})`),e}else if((!o||l)&&h&&0===r.channels[2])return Us(i,"no renditions with stereo sound found"),e;return r.minHeight>T?(Us(i,`min resolution of ${r.minHeight} > maximum of ${T}`),e):r.minFramerate>E?(Us(i,`min framerate of ${r.minFramerate} > maximum of ${E}`),e):m.some((t=>r.videoRanges[t]>0))?r.maxScore=he(e)||r.fragmentError>t[e].fragmentError)?e:(g=r.maxScore,i):(Us(i,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),e)}),void 0),videoRanges:m,preferHDR:v,minFramerate:u,minBitrate:f}}(i,L,t,R,b),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=r;S=n,L=h?a[a.length-1]:a[0],A=o,t=Math.max(t,l),k.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else S=null==y?void 0:y.codecSet,L=null==y?void 0:y.videoRange;const I=u?u.duration:c?c.duration:0,w=this.bwEstimator.getEstimateTTFB()/1e3,C=[];for(let o=s;o>=e;o--){var _;const e=f[o],c=o>d;if(!e)continue;if(v.useMediaCapabilities&&!e.supportedResult&&!e.supportedPromise){const s=navigator.mediaCapabilities;"function"==typeof(null==s?void 0:s.decodingInfo)&&Ms(e,D,L,A,t,R)?(e.supportedPromise=Os(e,D,s),e.supportedPromise.then((t=>{if(!this.hls)return;e.supportedResult=t;const s=this.hls.levels,i=s.indexOf(e);t.error?k.warn(`[abr] MediaCapabilities decodingInfo error: "${t.error}" for level ${i} ${JSON.stringify(t)}`):t.supported||(k.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${i} ${JSON.stringify(t)}`),i>-1&&s.length>1&&(k.log(`[abr] Removing unsupported level ${i}`),this.hls.removeLevel(i)))}))):e.supportedResult=Ps}if(S&&e.codecSet!==S||L&&e.videoRange!==L||c&&A>e.frameRate||!c&&A>0&&A=2*I&&0===r?f[o].averageBitrate:f[o].maxBitrate,F=this.getTimeToLoadFrag(w,x,P*b,void 0===g);if(x>=P&&(o===h||0===e.loadError&&0===e.fragmentError)&&(F<=w||!p(F)||T&&!this.bitrateTestDelay||F${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-P)} ttfb:${w.toFixed(1)} avgDuration:${b.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${F.toFixed(1)} firstSelection:${E} codecSet:${S} videoRange:${L} hls.loadLevel:${m}`)),E&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(t){const{maxAutoLevel:e,minAutoLevel:s}=this.hls,i=Math.min(Math.max(t,s),e);this._nextAutoLevel!==i&&(this.nextAutoLevelKey="",this._nextAutoLevel=i)}},bufferController:class{constructor(t){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=t=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=t=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:t,mediaSource:e}=this;this.log("Media source opened"),t&&(t.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(T.MEDIA_ATTACHED,{media:t,mediaSource:e})),e&&e.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:t,_objectUrl:e}=this;t!==e&&k.error(`Media element src was set while attaching MediaSource (${e} > ${t})`)},this.hls=t;const e="[buffer-controller]";var s;this.appendSource=(s=ie(t.config.preferManagedMediaSource),"undefined"!=typeof self&&s===self.ManagedMediaSource),this.log=k.log.bind(k,e),this.warn=k.warn.bind(k,e),this.error=k.error.bind(k,e),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.BUFFER_RESET,this.onBufferReset,this),t.on(T.BUFFER_APPENDING,this.onBufferAppending,this),t.on(T.BUFFER_CODECS,this.onBufferCodecs,this),t.on(T.BUFFER_EOS,this.onBufferEos,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),t.on(T.FRAG_PARSED,this.onFragParsed,this),t.on(T.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.BUFFER_RESET,this.onBufferReset,this),t.off(T.BUFFER_APPENDING,this.onBufferAppending,this),t.off(T.BUFFER_CODECS,this.onBufferCodecs,this),t.off(T.BUFFER_EOS,this.onBufferEos,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),t.off(T.FRAG_PARSED,this.onFragParsed,this),t.off(T.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Br(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(t,e){let s=2;(e.audio&&!e.video||!e.altAudio)&&(s=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=s,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(t,e){const s=this.media=e.media,i=ie(this.appendSource);if(s&&i){var r;const t=this.mediaSource=new i;this.log(`created media source: ${null==(r=t.constructor)?void 0:r.name}`),t.addEventListener("sourceopen",this._onMediaSourceOpen),t.addEventListener("sourceended",this._onMediaSourceEnded),t.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(t.addEventListener("startstreaming",this._onStartStreaming),t.addEventListener("endstreaming",this._onEndStreaming));const e=this._objectUrl=self.URL.createObjectURL(t);if(this.appendSource)try{s.removeAttribute("src");const i=self.ManagedMediaSource;s.disableRemotePlayback=s.disableRemotePlayback||i&&t instanceof i,Gr(s),function(t,e){const s=self.document.createElement("source");s.type="video/mp4",s.src=e,t.appendChild(s)}(s,e),s.load()}catch(t){s.src=e}else s.src=e;s.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:t,mediaSource:e,_objectUrl:s}=this;if(e){if(this.log("media source detaching"),"open"===e.readyState)try{e.endOfStream()}catch(t){this.warn(`onMediaDetaching: ${t.message} while calling endOfStream`)}this.onBufferReset(),e.removeEventListener("sourceopen",this._onMediaSourceOpen),e.removeEventListener("sourceended",this._onMediaSourceEnded),e.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.removeEventListener("startstreaming",this._onStartStreaming),e.removeEventListener("endstreaming",this._onEndStreaming)),t&&(t.removeEventListener("emptied",this._onMediaEmptied),s&&self.URL.revokeObjectURL(s),this.mediaSrc===s?(t.removeAttribute("src"),this.appendSource&&Gr(t),t.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(T.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((t=>{this.resetBuffer(t)})),this._initSourceBuffer()}resetBuffer(t){const e=this.sourceBuffer[t];try{var s;if(e)this.removeBufferListeners(t),this.sourceBuffer[t]=void 0,null!=(s=this.mediaSource)&&s.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(e)}catch(e){this.warn(`onBufferReset ${t}`,e)}}onBufferCodecs(t,e){const s=this.getSourceBufferTypes().length,i=Object.keys(e);if(i.forEach((t=>{if(s){const s=this.tracks[t];if(s&&"function"==typeof s.buffer.changeType){var i;const{id:r,codec:n,levelCodec:a,container:o,metadata:l}=e[t],h=fe(s.codec,s.levelCodec),d=null==h?void 0:h.replace($r,"$1");let c=fe(n,a);const u=null==(i=c)?void 0:i.replace($r,"$1");if(c&&d!==u){"audio"===t.slice(0,5)&&(c=ue(c,this.appendSource));const e=`${o};codecs=${c}`;this.appendChangeType(t,e),this.log(`switching codec ${h} to ${c}`),this.tracks[t]={buffer:s.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:r}}}}else this.pendingTracks[t]=e[t]})),s)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${i.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(t,e){const{operationQueue:s}=this,i={execute:()=>{const i=this.sourceBuffer[t];i&&(this.log(`changing ${t} sourceBuffer type to ${e}`),i.changeType(e)),s.shiftAndExecuteNext(t)},onStart:()=>{},onComplete:()=>{},onError:e=>{this.warn(`Failed to change ${t} SourceBuffer type`,e)}};s.append(i,t,!!this.pendingTracks[t])}onBufferAppending(t,e){const{hls:s,operationQueue:i,tracks:r}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=e,d=h.buffering[a],c=self.performance.now();d.start=c;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=c),f&&0===f.start&&(f.start=c);const g=r.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(d.executeStart=self.performance.now(),m){const t=this.sourceBuffer[a];if(t){const e=p-t.timestampOffset;Math.abs(e)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${e}) sn: ${o.sn})`),t.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const t=self.performance.now();d.executeEnd=d.end=t,0===u.first&&(u.first=t),f&&0===f.first&&(f.first=t);const{sourceBuffer:e}=this,s={};for(const t in e)s[t]=Js.getBuffered(e[t]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(T.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:s})},onError:t=>{const e={type:E.MEDIA_ERROR,parent:o.type,details:S.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:t,err:t,fatal:!1};if(t.code===DOMException.QUOTA_EXCEEDED_ERR)e.details=S.BUFFER_FULL_ERROR;else{const t=++this.appendErrors[a];e.details=S.BUFFER_APPEND_ERROR,this.warn(`Failed ${t}/${s.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),t>=s.config.appendErrorMaxRetry&&(e.fatal=!0)}s.trigger(T.ERROR,e)}};i.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(t,e){const{operationQueue:s}=this,i=t=>({execute:this.removeExecutor.bind(this,t,e.startOffset,e.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(T.BUFFER_FLUSHED,{type:t})},onError:e=>{this.warn(`Failed to remove from ${t} SourceBuffer`,e)}});e.type?s.append(i(e.type),e.type):this.getSourceBufferTypes().forEach((t=>{s.append(i(t),t)}))}onFragParsed(t,e){const{frag:s,part:i}=e,r=[],n=i?i.elementaryStreams:s.elementaryStreams;n[M]?r.push("audiovideo"):(n[P]&&r.push("audio"),n[F]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${s.type} level: ${s.level} sn: ${s.sn}`),this.blockBuffers((()=>{const t=self.performance.now();s.stats.buffering.end=t,i&&(i.stats.buffering.end=t);const e=i?i.stats:s.stats;this.hls.trigger(T.FRAG_BUFFERED,{frag:s,part:i,stats:e,id:s.type})}),r)}onFragChanged(t,e){this.trimBuffers()}onBufferEos(t,e){this.getSourceBufferTypes().reduce(((t,s)=>{const i=this.sourceBuffer[s];return!i||e.type&&e.type!==s||(i.ending=!0,i.ended||(i.ended=!0,this.log(`${s} sourceBuffer now EOS`))),t&&!(i&&!i.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((t=>{const e=this.sourceBuffer[t];e&&(e.ending=!1)}));const{mediaSource:t}=this;t&&"open"===t.readyState?(this.log("Calling mediaSource.endOfStream()"),t.endOfStream()):t&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${t.readyState}`)})))}onLevelUpdated(t,{details:e}){e.fragments.length&&(this.details=e,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:t,details:e,media:s}=this;if(!s||null===e)return;if(!this.getSourceBufferTypes().length)return;const i=t.config,r=s.currentTime,n=e.levelTargetDuration,a=e.live&&null!==i.liveBackBufferLength?i.liveBackBufferLength:i.backBufferLength;if(p(a)&&a>0){const t=Math.max(a,n),e=Math.floor(r/n)*n-t;this.flushBackBuffer(r,n,e)}if(p(i.frontBufferFlushThreshold)&&i.frontBufferFlushThreshold>0){const t=Math.max(i.maxBufferLength,i.frontBufferFlushThreshold),e=Math.max(t,n),s=Math.floor(r/n)*n+e;this.flushFrontBuffer(r,n,s)}}flushBackBuffer(t,e,s){const{details:i,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((n=>{const a=r[n];if(a){const r=Js.getBuffered(a);if(r.length>0&&s>r.start(0)){if(this.hls.trigger(T.BACK_BUFFER_REACHED,{bufferEnd:s}),null!=i&&i.live)this.hls.trigger(T.LIVE_BACK_BUFFER_REACHED,{bufferEnd:s});else if(a.ended&&r.end(r.length-1)-t<2*e)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:0,endOffset:s,type:n})}}}))}flushFrontBuffer(t,e,s){const{sourceBuffer:i}=this;this.getSourceBufferTypes().forEach((r=>{const n=i[r];if(n){const i=Js.getBuffered(n),a=i.length;if(a<2)return;const o=i.start(a-1),l=i.end(a-1);if(s>o||t>=o&&t<=l)return;if(n.ended&&t-l<2*e)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:t,hls:e,media:s,mediaSource:i}=this,r=t.fragments[0].start+t.totalduration,n=s.duration,a=p(i.duration)?i.duration:0;t.live&&e.config.liveDurationInfinity?(i.duration=1/0,this.updateSeekableRange(t)):(r>a&&r>n||!p(n))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),i.duration=r)}updateSeekableRange(t){const e=this.mediaSource,s=t.fragments;if(s.length&&t.live&&null!=e&&e.setLiveSeekableRange){const i=Math.max(0,s[0].start),r=Math.max(i,i+t.totalduration);this.log(`Media Source duration is set to ${e.duration}. Setting seekable range to ${i}-${r}.`),e.setLiveSeekableRange(i,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:t,operationQueue:e,pendingTracks:s}=this,i=Object.keys(s).length;if(i&&(!t||2===i||"audiovideo"in s)){this.createSourceBuffers(s),this.pendingTracks={};const t=this.getSourceBufferTypes();if(t.length)this.hls.trigger(T.BUFFER_CREATED,{tracks:this.tracks}),t.forEach((t=>{e.executeNext(t)}));else{const t=new Error("could not create source buffer for media codec(s)");this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:t,reason:t.message})}}}createSourceBuffers(t){const{sourceBuffer:e,mediaSource:s}=this;if(!s)throw Error("createSourceBuffers called when mediaSource was null");for(const r in t)if(!e[r]){var i;const n=t[r];if(!n)throw Error(`source buffer exists for track ${r}, however track does not`);let a=-1===(null==(i=n.levelCodec)?void 0:i.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===r.slice(0,5)&&(a=ue(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const t=e[r]=s.addSourceBuffer(o),i=r;this.addBufferListener(i,"updatestart",this._onSBUpdateStart),this.addBufferListener(i,"updateend",this._onSBUpdateEnd),this.addBufferListener(i,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(i,"bufferedchange",((t,e)=>{const s=e.removedRanges;null!=s&&s.length&&this.hls.trigger(T.BUFFER_FLUSHED,{type:r})})),this.tracks[r]={buffer:t,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(t){this.error(`error while trying to add sourceBuffer: ${t.message}`),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:t,sourceBufferName:r,mimeType:o})}}}get mediaSrc(){var t,e;const s=(null==(t=this.media)||null==(e=t.querySelector)?void 0:e.call(t,"source"))||this.media;return null==s?void 0:s.src}_onSBUpdateStart(t){const{operationQueue:e}=this;e.current(t).onStart()}_onSBUpdateEnd(t){var e;if("closed"===(null==(e=this.mediaSource)?void 0:e.readyState))return void this.resetBuffer(t);const{operationQueue:s}=this;s.current(t).onComplete(),s.shiftAndExecuteNext(t)}_onSBUpdateError(t,e){var s;const i=new Error(`${t} SourceBuffer error. MediaSource readyState: ${null==(s=this.mediaSource)?void 0:s.readyState}`);this.error(`${i}`,e),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_APPENDING_ERROR,sourceBufferName:t,error:i,fatal:!1});const r=this.operationQueue.current(t);r&&r.onError(i)}removeExecutor(t,e,s){const{media:i,mediaSource:r,operationQueue:n,sourceBuffer:a}=this,o=a[t];if(!i||!r||!o)return this.warn(`Attempting to remove from the ${t} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(t);const l=p(i.duration)?i.duration:1/0,h=p(r.duration)?r.duration:1/0,d=Math.max(0,e),c=Math.min(s,l,h);c>d&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${d},${c}] from the ${t} SourceBuffer`),o.remove(d,c)):n.shiftAndExecuteNext(t)}appendExecutor(t,e){const s=this.sourceBuffer[e];if(s)s.ended=!1,s.appendBuffer(t);else if(!this.pendingTracks[e])throw new Error(`Attempting to append to the ${e} SourceBuffer, but it does not exist`)}blockBuffers(t,e=this.getSourceBufferTypes()){if(!e.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(t);const{operationQueue:s}=this,i=e.map((t=>s.appendBlocker(t)));Promise.all(i).then((()=>{t(),e.forEach((t=>{const e=this.sourceBuffer[t];null!=e&&e.updating||s.shiftAndExecuteNext(t)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(t,e,s){const i=this.sourceBuffer[t];if(!i)return;const r=s.bind(this,t);this.listeners[t].push({event:e,listener:r}),i.addEventListener(e,r)}removeBufferListeners(t){const e=this.sourceBuffer[t];e&&this.listeners[t].forEach((t=>{e.removeEventListener(t.event,t.listener)}))}},capLevelController:Nn,errorController:class{constructor(t){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=t,this.log=k.log.bind(k,"[info]:"),this.warn=k.warn.bind(k,"[warning]:"),this.error=k.error.bind(k,"[error]:"),this.registerListeners()}registerListeners(){const t=this.hls;t.on(T.ERROR,this.onError,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const t=this.hls;t&&(t.off(T.ERROR,this.onError,this),t.off(T.ERROR,this.onErrorOut,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(t){}stopLoad(){this.playlistError=0}getVariantLevelIndex(t){return(null==t?void 0:t.type)===_e?t.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(t,e){var s,i;if(e.fatal)return;const r=this.hls,n=e.context;switch(e.details){case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:return void(e.errorAction=this.getFragRetryOrSwitchAction(e));case S.FRAG_PARSING_ERROR:if(null!=(s=e.frag)&&s.gap)return void(e.errorAction={action:As,flags:Ds});case S.FRAG_GAP:case S.FRAG_DECRYPT_ERROR:return e.errorAction=this.getFragRetryOrSwitchAction(e),void(e.errorAction.action=Rs);case S.LEVEL_EMPTY_ERROR:case S.LEVEL_PARSING_ERROR:{var a,o;const t=e.parent===_e?e.level:r.loadLevel;e.details===S.LEVEL_EMPTY_ERROR&&null!=(a=e.context)&&null!=(o=a.levelDetails)&&o.live?e.errorAction=this.getPlaylistRetryOrSwitchAction(e,t):(e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t))}return;case S.LEVEL_LOAD_ERROR:case S.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(e.errorAction=this.getPlaylistRetryOrSwitchAction(e,n.level)));case S.AUDIO_TRACK_LOAD_ERROR:case S.AUDIO_TRACK_LOAD_TIMEOUT:case S.SUBTITLE_LOAD_ERROR:case S.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const t=r.levels[r.loadLevel];if(t&&(n.type===we&&t.hasAudioGroup(n.groupId)||n.type===Ce&&t.hasSubtitleGroup(n.groupId)))return e.errorAction=this.getPlaylistRetryOrSwitchAction(e,r.loadLevel),e.errorAction.action=Rs,void(e.errorAction.flags=Is)}return;case S.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const t=r.levels[r.loadLevel],s=null==t?void 0:t.attrs["HDCP-LEVEL"];s?e.errorAction={action:Rs,flags:ws,hdcpLevel:s}:this.keySystemError(e)}return;case S.BUFFER_ADD_CODEC_ERROR:case S.REMUX_ALLOC_ERROR:case S.BUFFER_APPEND_ERROR:return void(e.errorAction=this.getLevelSwitchAction(e,null!=(i=e.level)?i:r.loadLevel));case S.INTERNAL_EXCEPTION:case S.BUFFER_APPENDING_ERROR:case S.BUFFER_FULL_ERROR:case S.LEVEL_SWITCH_ERROR:case S.BUFFER_STALLED_ERROR:case S.BUFFER_SEEK_OVER_HOLE:case S.BUFFER_NUDGE_ON_STALL:return void(e.errorAction={action:As,flags:Ds})}e.type===E.KEY_SYSTEM_ERROR&&this.keySystemError(e)}keySystemError(t){const e=this.getVariantLevelIndex(t.frag);t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e)}getPlaylistRetryOrSwitchAction(t,e){const s=ms(this.hls.config.playlistLoadPolicy,t),i=this.playlistError++;if(ys(s,i,gs(t),t.response))return{action:ks,flags:Ds,retryConfig:s,retryCount:i};const r=this.getLevelSwitchAction(t,e);return s&&(r.retryConfig=s,r.retryCount=i),r}getFragRetryOrSwitchAction(t){const e=this.hls,s=this.getVariantLevelIndex(t.frag),i=e.levels[s],{fragLoadPolicy:r,keyLoadPolicy:n}=e.config,a=ms(t.details.startsWith("key")?n:r,t),o=e.levels.reduce(((t,e)=>t+e.fragmentError),0);if(i){t.details!==S.FRAG_GAP&&i.fragmentError++;if(ys(a,o,gs(t),t.response))return{action:ks,flags:Ds,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(t,s);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(t,e){const s=this.hls;null==e&&(e=s.loadLevel);const i=this.hls.levels[e];if(i){var r,n;const e=t.details;i.loadError++,e===S.BUFFER_APPEND_ERROR&&i.fragmentError++;let l=-1;const{levels:h,loadLevel:d,minAutoLevel:c,maxAutoLevel:u}=s;s.autoLevelEnabled||(s.loadLevel=-1);const f=null==(r=t.frag)?void 0:r.type,g=(f===xe&&e===S.FRAG_PARSING_ERROR||"audio"===t.sourceBufferName&&(e===S.BUFFER_ADD_CODEC_ERROR||e===S.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:t})=>i.audioCodec!==t)),m="video"===t.sourceBufferName&&(e===S.BUFFER_ADD_CODEC_ERROR||e===S.BUFFER_APPEND_ERROR)&&h.some((({codecSet:t,audioCodec:e})=>i.codecSet!==t&&i.audioCodec===e)),{type:p,groupId:v}=null!=(n=t.context)?n:{};for(let s=h.length;s--;){const r=(s+d)%h.length;if(r!==d&&r>=c&&r<=u&&0===h[r].loadError){var a,o;const s=h[r];if(e===S.FRAG_GAP&&f===_e&&t.frag){const e=h[r].details;if(e){const s=Es(t.frag,e.fragments,t.frag.start);if(null!=s&&s.gap)continue}}else{if(p===we&&s.hasAudioGroup(v)||p===Ce&&s.hasSubtitleGroup(v))continue;if(f===xe&&null!=(a=i.audioGroups)&&a.some((t=>s.hasAudioGroup(t)))||f===Pe&&null!=(o=i.subtitleGroups)&&o.some((t=>s.hasSubtitleGroup(t)))||g&&i.audioCodec===s.audioCodec||!g&&i.audioCodec!==s.audioCodec||m&&i.codecSet===s.codecSet)continue}l=r;break}}if(l>-1&&s.loadLevel!==l)return t.levelRetry=!0,this.playlistError=0,{action:Rs,flags:Ds,nextAutoLevel:l}}return{action:Rs,flags:Is}}onErrorOut(t,e){var s;switch(null==(s=e.errorAction)?void 0:s.action){case As:break;case Rs:this.sendAlternateToPenaltyBox(e),e.errorAction.resolved||e.details===S.FRAG_GAP?/MediaSource readyState: ended/.test(e.error.message)&&(this.warn(`MediaSource ended after "${e.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):e.fatal=!0}e.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(t){const e=this.hls,s=t.errorAction;if(!s)return;const{flags:i,hdcpLevel:r,nextAutoLevel:n}=s;switch(i){case Ds:this.switchLevel(t,n);break;case ws:r&&(e.maxHdcpLevel=Qe[Qe.indexOf(r)-1],s.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${e.maxHdcpLevel}" or lower`)}s.resolved||this.switchLevel(t,n)}switchLevel(t,e){void 0!==e&&t.errorAction&&(this.warn(`switching to level ${e} after ${t.details}`),this.hls.nextAutoLevel=e,t.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)}},fpsController:class{constructor(t){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=t,this.registerListeners()}setStreamController(t){this.streamController=t}registerListeners(){this.hls.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(t,e){const s=this.hls.config;if(s.capLevelOnFPSDrop){const t=e.media instanceof self.HTMLVideoElement?e.media:null;this.media=t,t&&"function"==typeof t.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),s.fpsDroppedMonitoringPeriod)}}checkFPS(t,e,s){const i=performance.now();if(e){if(this.lastTime){const t=i-this.lastTime,r=s-this.lastDroppedFrames,n=e-this.lastDecodedFrames,a=1e3*r/t,o=this.hls;if(o.trigger(T.FPS_DROP,{currentDropped:r,currentDecoded:n,totalDroppedFrames:s}),a>0&&r>o.config.fpsDroppedMonitoringThreshold*n){let t=o.currentLevel;k.warn("drop FPS ratio greater than max allowed value for currentLevel: "+t),t>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=t)&&(t-=1,o.trigger(T.FPS_DROP_LEVEL_CAPPING,{level:t,droppedLevel:o.currentLevel}),o.autoLevelCapping=t,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=s,this.lastDecodedFrames=e}}checkFPSInterval(){const t=this.media;if(t)if(this.isVideoPlaybackQualityAvailable){const e=t.getVideoPlaybackQuality();this.checkFPS(t,e.totalVideoFrames,e.droppedVideoFrames)}else this.checkFPS(t,t.webkitDecodedFrameCount,t.webkitDroppedFrameCount)}},stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:it,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},{cueHandler:Ra,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends Di{constructor(t,e,s){super(t,e,s,"[subtitle-stream-controller]",Pe),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.LEVEL_LOADED,this.onLevelLoaded,this),t.on(T.ERROR,this.onError,this),t.on(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(T.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),t.on(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.on(T.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.LEVEL_LOADED,this.onLevelLoaded,this),t.off(T.ERROR,this.onError,this),t.off(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(T.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),t.off(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.off(T.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(t){this.stopLoad(),this.state=pi,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(t,e){this.mainDetails=e.details}onSubtitleFragProcessed(t,e){const{frag:s,success:i}=e;if(this.fragPrevious=s,this.state=pi,!i)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let n;const a=s.start;for(let t=0;t=r[t].start&&a<=r[t].end){n=r[t];break}const o=s.start+s.duration;n?n.end=o:(n={start:a,end:o},r.push(n)),this.fragmentTracker.fragBuffered(s),this.fragBufferedComplete(s,null)}onBufferFlushing(t,e){const{startOffset:s,endOffset:i}=e;if(0===s&&i!==Number.POSITIVE_INFINITY){const t=i-1;if(t<=0)return;e.endOffsetSubtitles=Math.max(0,t),this.tracksBuffered.forEach((e=>{for(let s=0;snew rs(t))):(this.tracksBuffered=[],this.levels=e.map((t=>{const e=new rs(t);return this.tracksBuffered[e.id]=[],e})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,Pe),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(t,e){var s;if(this.currentTrackId=e.id,null==(s=this.levels)||!s.length||-1===this.currentTrackId)return void this.clearInterval();const i=this.levels[this.currentTrackId];null!=i&&i.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,i&&this.setInterval(500)}onSubtitleTrackLoaded(t,e){var s;const{currentTrackId:i,levels:r}=this,{details:n,id:a}=e;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=r[a];if(a>=r.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(s=o.details)&&s.live){const t=this.mainDetails;if(n.deltaUpdateFailed||!t)return;const e=t.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&e&&(l=e.start,ds(n,l));else n.hasProgramDateTime&&t.hasProgramDateTime?(ri(n,t),l=n.fragments[0].start):e&&(l=e.start,ds(n,l))}if(o.details=n,this.levelLastLoaded=o,a===i&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===pi)){Es(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(t){const{frag:e,payload:s}=t,i=e.decryptdata,r=this.hls;if(!this.fragContextChanged(e)&&s&&s.byteLength>0&&null!=i&&i.key&&i.iv&&"AES-128"===i.method){const t=performance.now();this.decrypter.decrypt(new Uint8Array(s),i.key.buffer,i.iv.buffer).catch((t=>{throw r.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const i=performance.now();r.trigger(T.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:t,tdecrypt:i}})})).catch((t=>{this.warn(`${t.name}: ${t.message}`),this.state=pi}))}}doTick(){if(this.media){if(this.state===pi){const{currentTrackId:t,levels:e}=this,s=null==e?void 0:e[t];if(!s||!e.length||!s.details)return;const{config:i}=this,r=this.getLoadPosition(),n=Js.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,i.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,_e),h=s.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const d=h.fragments,c=d.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-t?0:t;f=Es(g,d,Math.max(d[0].start,a),e),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let t=null;const e=Ge(this.media.textTracks);for(let s=0;s-1&&this.toggleTrackModes()}registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.off(T.ERROR,this.onError,this)}onMediaAttached(t,e){this.media=e.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))}pollTrackChange(t){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,t)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);Ge(this.media.textTracks).forEach((t=>{Be(t)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(t,e){this.tracks=e.subtitleTracks}onSubtitleTrackLoaded(t,e){const{id:s,groupId:i,details:r}=e,n=this.tracksInGroup[s];if(!n||n.groupId!==i)return void this.warn(`Subtitle track with id:${s} and group:${i} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=e.details,this.log(`Subtitle track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,e,a)}onLevelLoading(t,e){this.switchLevel(e.level)}onLevelSwitching(t,e){this.switchLevel(e.level)}switchLevel(t){const e=this.hls.levels[t];if(!e)return;const s=e.subtitleGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||(null==i?void 0:i.length)!==(null==s?void 0:s.length)||null!=s&&s.some((t=>-1===(null==i?void 0:i.indexOf(t))))){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const t=this.tracks.filter((t=>!s||-1!==s.indexOf(t.groupId)));if(t.length)this.selectDefaultTrack&&!t.some((t=>t.default))&&(this.selectDefaultTrack=!1),t.forEach(((t,e)=>{t.id=e}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=t;const e=this.hls.config.subtitlePreference;if(!r&&e){this.selectDefaultTrack=!1;const s=Bs(e,t);if(s>-1)r=t[s];else{const t=Bs(e,this.tracks);r=this.tracks[t]}}let i=this.findTrackId(r);-1===i&&r&&(i=this.findTrackId(null));const n={subtitleTracks:t};this.log(`Updating subtitle tracks, ${t.length} track(s) found in "${null==s?void 0:s.join(",")}" group-id`),this.hls.trigger(T.SUBTITLE_TRACKS_UPDATED,n),-1!==i&&-1===this.trackId&&this.setSubtitleTrack(i)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(t){const e=this.tracksInGroup,s=this.selectDefaultTrack;for(let i=0;i-1){const t=this.tracksInGroup[i];return this.setSubtitleTrack(i),t}if(s)return null;{const s=Bs(t,e);if(s>-1)return e[s]}}}return null}loadPlaylist(t){super.loadPlaylist();const e=this.currentTrack;if(this.shouldLoadPlaylist(e)&&e){const s=e.id,i=e.groupId;let r=e.url;if(t)try{r=t.addDirectives(r)}catch(t){this.warn(`Could not construct new URL with HLS Delivery Directives: ${t}`)}this.log(`Loading subtitle playlist for id ${s}`),this.hls.trigger(T.SUBTITLE_TRACK_LOADING,{url:r,id:s,groupId:i,deliveryDirectives:t||null})}}toggleTrackModes(){const{media:t}=this;if(!t)return;const e=Ge(t.textTracks),s=this.currentTrack;let i;if(s&&(i=e.filter((t=>Nr(s,t)))[0],i||this.warn(`Unable to find subtitle TextTrack with name "${s.name}" and language "${s.lang}"`)),[].slice.call(e).forEach((t=>{"disabled"!==t.mode&&t!==i&&(t.mode="disabled")})),i){const t=this.subtitleDisplay?"showing":"hidden";i.mode!==t&&(i.mode=t)}}setSubtitleTrack(t){const e=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=t);if(t<-1||t>=e.length||!p(t))return void this.warn(`Invalid subtitle track id: ${t}`);this.clearTimer(),this.selectDefaultTrack=!1;const s=this.currentTrack,i=e[t]||null;if(this.trackId=t,this.currentTrack=i,this.toggleTrackModes(),!i)return void this.hls.trigger(T.SUBTITLE_TRACK_SWITCH,{id:t});const r=!!i.details&&!i.details.live;if(t===this.trackId&&i===s&&r)return;this.log(`Switching to subtitle-track ${t}`+(i?` "${i.name}" lang:${i.lang} group:${i.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=i;this.hls.trigger(T.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const d=this.switchParams(i.url,null==s?void 0:s.details,i.details);this.loadPlaylist(d)}},timelineController:class{constructor(t){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this.captionsProperties=void 0,this.hls=t,this.config=t.config,this.Cues=t.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(T.FRAG_LOADING,this.onFragLoading,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this),t.on(T.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.on(T.FRAG_DECRYPTED,this.onFragDecrypted,this),t.on(T.INIT_PTS_FOUND,this.onInitPtsFound,this),t.on(T.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:t}=this;t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(T.FRAG_LOADING,this.onFragLoading,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this),t.off(T.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.off(T.FRAG_DECRYPTED,this.onFragDecrypted,this),t.off(T.INIT_PTS_FOUND,this.onInitPtsFound,this),t.off(T.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const t=new ln(this,"textTrack1"),e=new ln(this,"textTrack2"),s=new ln(this,"textTrack3"),i=new ln(this,"textTrack4");this.cea608Parser1=new nn(1,t,e),this.cea608Parser2=new nn(3,s,i)}}addCues(t,e,s,i,r){let n=!1;for(let t=r.length;t--;){const i=r[t],d=(a=i[0],o=i[1],l=e,h=s,Math.min(o,h)-Math.max(a,l));if(d>=0&&(i[0]=Math.min(i[0],e),i[1]=Math.max(i[1],s),n=!0,d/(s-e)>.5))return}var a,o,l,h;if(n||r.push([e,s]),this.config.renderTextTracksNatively){const r=this.captionsTracks[t];this.Cues.newCue(r,e,s,i)}else{const r=this.Cues.newCue(null,e,s,i);this.hls.trigger(T.CUES_PARSED,{type:"captions",cues:r,track:t})}}onInitPtsFound(t,{frag:e,id:s,initPTS:i,timescale:r}){const{unparsedVttFrags:n}=this;"main"===s&&(this.initPTS[e.cc]={baseTime:i,timescale:r}),n.length&&(this.unparsedVttFrags=[],n.forEach((t=>{this.onFragLoaded(T.FRAG_LOADED,t)})))}getExistingTrack(t,e){const{media:s}=this;if(s)for(let i=0;i{Be(t[e]),delete t[e]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:t}=this;if(!t)return;const e=t.textTracks;if(e)for(let t=0;tt.textCodec===Rn));if(this.config.enableWebVTT||i&&this.config.enableIMSC1){if(Mr(this.tracks,s))return void(this.tracks=s);if(this.textTracks=[],this.tracks=s,this.config.renderTextTracksNatively){const t=this.media,e=t?Ge(t.textTracks):null;if(this.tracks.forEach(((t,s)=>{let i;if(e){let s=null;for(let i=0;inull!==t)).map((t=>t.label));t.length&&k.warn(`Media element contains unused subtitle tracks: ${t.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const t=this.tracks.map((t=>({label:t.name,kind:t.type.toLowerCase(),default:t.default,subtitleTrack:t})));this.hls.trigger(T.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:t})}}}onManifestLoaded(t,e){this.config.enableCEA708Captions&&e.captions&&e.captions.forEach((t=>{const e=/(?:CC|SERVICE)([1-4])/.exec(t.instreamId);if(!e)return;const s=`textTrack${e[1]}`,i=this.captionsProperties[s];i&&(i.label=t.name,t.lang&&(i.languageCode=t.lang),i.media=t)}))}closedCaptionsForLevel(t){const e=this.hls.levels[t.level];return null==e?void 0:e.attrs["CLOSED-CAPTIONS"]}onFragLoading(t,e){if(this.enabled&&e.frag.type===_e){var s,i;const{cea608Parser1:t,cea608Parser2:r,lastSn:n}=this,{cc:a,sn:o}=e.frag,l=null!=(s=null==(i=e.part)?void 0:i.index)?s:-1;t&&r&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(t.reset(),r.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(t,e){const{frag:s,payload:i}=e;if(s.type===Pe)if(i.byteLength){const t=s.decryptdata,r="stats"in e;if(null==t||!t.encrypted||r){const t=this.tracks[s.level],r=this.vttCCs;r[s.cc]||(r[s.cc]={start:s.start,prevCC:this.prevCC,new:!0},this.prevCC=s.cc),t&&t.textCodec===Rn?this._parseIMSC1(s,i):this._parseVTTs(e)}}else this.hls.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:new Error("Empty subtitle payload")})}_parseIMSC1(t,e){const s=this.hls;In(e,this.initPTS[t.cc],(e=>{this._appendCues(e,t.level),s.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t})}),(e=>{k.log(`Failed to parse IMSC1: ${e}`),s.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t,error:e})}))}_parseVTTs(t){var e;const{frag:s,payload:i}=t,{initPTS:r,unparsedVttFrags:n}=this,a=r.length-1;if(!r[s.cc]&&-1===a)return void n.push(t);const o=this.hls;An(null!=(e=s.initSegment)&&e.data?Kt(s.initSegment.data,new Uint8Array(i)):i,this.initPTS[s.cc],this.vttCCs,s.cc,s.start,(t=>{this._appendCues(t,s.level),o.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:s})}),(e=>{const r="Missing initPTS for VTT MPEGTS"===e.message;r?n.push(t):this._fallbackToIMSC1(s,i),k.log(`Failed to parse VTT cue: ${e}`),r&&a>s.cc||o.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:e})}))}_fallbackToIMSC1(t,e){const s=this.tracks[t.level];s.textCodec||In(e,this.initPTS[t.cc],(()=>{s.textCodec=Rn,this._parseIMSC1(t,e)}),(()=>{s.textCodec="wvtt"}))}_appendCues(t,e){const s=this.hls;if(this.config.renderTextTracksNatively){const s=this.textTracks[e];if(!s||"disabled"===s.mode)return;t.forEach((t=>Ue(s,t)))}else{const i=this.tracks[e];if(!i)return;const r=i.default?"default":"subtitles"+e;s.trigger(T.CUES_PARSED,{type:"subtitles",cues:t,track:r})}}onFragDecrypted(t,e){const{frag:s}=e;s.type===Pe&&this.onFragLoaded(T.FRAG_LOADED,e)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(t,e){this.initCea608Parsers();const{cea608Parser1:s,cea608Parser2:i}=this;if(!this.enabled||!s||!i)return;const{frag:r,samples:n}=e;if(r.type!==_e||"NONE"!==this.closedCaptionsForLevel(r))for(let t=0;t$e(t[i],e,s)))}if(this.config.renderTextTracksNatively&&0===e&&void 0!==i){const{textTracks:t}=this;Object.keys(t).forEach((s=>$e(t[s],e,i)))}}}extractCea608Data(t){const e=[[],[]],s=31&t[0];let i=2;for(let r=0;r0&&-1===t?(this.log(`Override startPosition with lastCurrentTime @${e.toFixed(3)}`),t=e,this.state=pi):(this.loadedmetadata=!1,this.state=Ei),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}doTick(){switch(this.state){case pi:this.doTickIdle();break;case Ei:{var t;const{levels:e,trackId:s}=this,i=null==e||null==(t=e[s])?void 0:t.details;if(i){if(this.waitForCdnTuneIn(i))break;this.state=bi}break}case Ti:{var e;const t=performance.now(),s=this.retryDate;if(!s||t>=s||null!=(e=this.media)&&e.seeking){const{levels:t,trackId:e}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==t?void 0:t[e])||null),this.state=pi}break}case bi:{const t=this.waitingData;if(t){const{frag:e,part:s,cache:i,complete:r}=t;if(void 0!==this.initPTS[e.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=yi;const t={frag:e,part:s,payload:i.flush(),networkDetails:null};this._handleFragmentLoadProgress(t),r&&super._handleFragmentLoadComplete(t)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${e.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const t=this.getLoadPosition(),s=Js.bufferInfo(this.mediaBuffer,t,this.config.maxBufferHole);Ss(s.end,this.config.maxFragLookUpTolerance,e)<0&&(this.log(`Waiting fragment cc (${e.cc}) @ ${e.start} cancelled because another fragment at ${s.end} is needed`),this.clearWaitingFragment())}}else this.state=pi}}this.onTickEnd()}clearWaitingFragment(){const t=this.waitingData;t&&(this.fragmentTracker.removeFragment(t.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=pi)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:t}=this;null!=t&&t.readyState&&(this.lastCurrentTime=t.currentTime)}doTickIdle(){const{hls:t,levels:e,media:s,trackId:i}=this,r=t.config;if(!s&&(this.startFragRequested||!r.startFragPrefetch)||null==e||!e[i])return;const n=e[i],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=Ei);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,P,xe));const l=this.getFwdBufferInfo(o,xe);if(null===l)return;const{bufferedTrack:h,switchingTrack:d}=this;if(!d&&this._streamEnded(l,a))return t.trigger(T.BUFFER_EOS,{type:"audio"}),void(this.state=Ai);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,_e),u=l.len,f=this.getMaxBufferLength(null==c?void 0:c.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(d&&s){const t=this.getLoadPosition();h&&!Or(d.attrs,h.attrs)&&(p=t),a.PTSKnown&&tm||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),s.currentTime=m+.05)}if(u>=f&&!d&&pc.end+a.targetduration;if(E||(null==c||!c.len)&&l.len){const t=this.getAppendedFrag(v.start,_e);if(null===t)return;if(y||(y=!!t.gap||!!E&&0===c.len),E&&!y||y&&l.nextStart&&l.nextStartnew rs(t)))}onAudioTrackSwitching(t,e){const s=!!e.url;this.trackId=e.id;const{fragCurrent:i}=this;i&&(i.abortRequests(),this.removeUnbufferedFrags(i.start)),this.resetLoadingState(),s?this.setInterval(100):this.resetTransmuxer(),s?(this.switchingTrack=e,this.state=pi,this.flushAudioIfNeeded(e)):(this.switchingTrack=null,this.bufferedTrack=e,this.state=mi),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(t,e){this.mainDetails=e.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(T.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(t,e){var s;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=e);const{levels:i}=this,{details:r,id:n}=e;if(!i)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const a=i[n];let o=0;if(r.live||null!=(s=a.details)&&s.live){this.checkLiveUpdate(r);const t=this.mainDetails;if(r.deltaUpdateFailed||!t)return;var l;if(!a.details&&r.hasProgramDateTime&&t.hasProgramDateTime)ri(r,t),o=r.fragments[0].start;else o=this.alignPlaylists(r,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=r,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,o),this.state!==Ei||this.waitForCdnTuneIn(r)||(this.state=pi),this.tick()}_handleFragmentLoadProgress(t){var e;const{frag:s,part:i,payload:r}=t,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(s.start);const d=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new Fr(this.hls,xe,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[s.cc],f=null==(e=s.initSegment)?void 0:e.data;if(void 0!==u){const t=!1,e=i?i.index:-1,n=-1!==e,a=new Zs(s.level,s.sn,s.stats.chunkCount,r.byteLength,e,n);c.push(r,f,d,"",s,i,h.totalduration,t,a,u)}else{this.log(`Unknown video PTS for cc ${s.cc}, waiting for video PTS before demuxing audio frag ${s.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:t}=this.waitingData=this.waitingData||{frag:s,part:i,cache:new Ii,complete:!1};t.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=bi}}_handleFragmentLoadComplete(t){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(t)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(t,e){const s=e.tracks.audio;s&&(this.mediaBuffer=s.buffer||null),e.tracks.video&&(this.videoBuffer=e.tracks.video.buffer||null)}onFragBuffered(t,e){const{frag:s,part:i}=e;if(s.type===xe)if(this.fragContextChanged(s))this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==s.sn){this.fragPrevious=s;const t=this.switchingTrack;t&&(this.bufferedTrack=t,this.switchingTrack=null,this.hls.trigger(T.AUDIO_TRACK_SWITCHED,u({},t)))}this.fragBufferedComplete(s,i)}else if(!this.loadedmetadata&&s.type===_e){const t=this.videoBuffer||this.media;if(t){Js.getBuffered(t).length&&(this.loadedmetadata=!0)}}}onError(t,e){var s;if(e.fatal)this.state=Ri;else switch(e.details){case S.FRAG_GAP:case S.FRAG_PARSING_ERROR:case S.FRAG_DECRYPT_ERROR:case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(xe,e);break;case S.AUDIO_TRACK_LOAD_ERROR:case S.AUDIO_TRACK_LOAD_TIMEOUT:case S.LEVEL_PARSING_ERROR:e.levelRetry||this.state!==Ei||(null==(s=e.context)?void 0:s.type)!==we||(this.state=pi);break;case S.BUFFER_APPEND_ERROR:case S.BUFFER_FULL_ERROR:if(!e.parent||"audio"!==e.parent)return;if(e.details===S.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(e)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case S.INTERNAL_EXCEPTION:this.recoverWorkerError(e)}}onBufferFlushing(t,{type:e}){e!==F&&(this.flushing=!0)}onBufferFlushed(t,{type:e}){if(e!==F){this.flushing=!1,this.bufferFlushed=!0,this.state===Ai&&(this.state=pi);const t=this.mediaBuffer||this.media;t&&(this.afterBufferFlushed(t,e,xe),this.tick())}}_handleTransmuxComplete(t){var e;const s="audio",{hls:i}=this,{remuxResult:r,chunkMeta:n}=t,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:d}=h,{audio:c,text:u,id3:f,initSegment:g}=r;if(!this.fragContextChanged(o)&&d){if(this.state=Si,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const t=o.initSegment||o;this._bufferInitSegment(h,g.tracks,t,n),i.trigger(T.FRAG_PARSING_INIT_SEGMENT,{frag:t,id:s,tracks:g.tracks})}if(c){const{startPTS:t,endPTS:e,startDTS:s,endDTS:i}=c;l&&(l.elementaryStreams[P]={startPTS:t,endPTS:e,startDTS:s,endDTS:i}),o.setElementaryStreamInfo(P,t,e,s,i),this.bufferFragmentData(c,o,l,n)}if(null!=f&&null!=(e=f.samples)&&e.length){const t=m({id:s,frag:o,details:d},f);i.trigger(T.FRAG_PARSING_METADATA,t)}if(u){const t=m({id:s,frag:o,details:d},u);i.trigger(T.FRAG_PARSING_USERDATA,t)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(t,e,s,i){if(this.state!==Si)return;e.video&&delete e.video;const r=e.audio;if(!r)return;r.id="audio";const n=t.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${n}/${r.codec}]`),n&&1===n.split(",").length&&(r.levelCodec=n),this.hls.trigger(T.BUFFER_CODECS,e);const a=r.initSegment;if(null!=a&&a.byteLength){const t={type:"audio",frag:s,part:null,chunkMeta:i,parent:s.type,data:a};this.hls.trigger(T.BUFFER_APPENDING,t)}this.tickImmediate()}loadFragment(t,e,s){const i=this.fragmentTracker.getState(t);var r;if(this.fragCurrent=t,this.switchingTrack||i===Vs||i===Ws)if("initSegment"===t.sn)this._loadInitSegment(t,e);else if(null!=(r=e.details)&&r.live&&!this.initPTS[t.cc]){this.log(`Waiting for video PTS in continuity counter ${t.cc} of live stream before loading audio fragment ${t.sn} of level ${this.trackId}`),this.state=bi;const s=this.mainDetails;s&&s.fragments[0].start!==e.details.fragments[0].start&&ri(e.details,s)}else this.startFragRequested=!0,super.loadFragment(t,e,s);else this.clearTrackerIfNeeded(t)}flushAudioIfNeeded(t){const{media:e,bufferedTrack:s}=this,i=null==s?void 0:s.attrs,r=t.attrs;e&&i&&(i.CHANNELS!==r.CHANNELS||s.name!==t.name||s.lang!==t.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(t){const{hls:e}=this;this.flushAudioIfNeeded(t),this.bufferedTrack=t,this.switchingTrack=null,e.trigger(T.AUDIO_TRACK_SWITCHED,u({},t))}},audioTrackController:class extends Cs{constructor(t){super(t,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),t.off(T.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(t,e){this.tracks=e.audioTracks||[]}onAudioTrackLoaded(t,e){const{id:s,groupId:i,details:r}=e,n=this.tracksInGroup[s];if(!n||n.groupId!==i)return void this.warn(`Audio track with id:${s} and group:${i} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=e.details,this.log(`Audio track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,e,a)}onLevelLoading(t,e){this.switchLevel(e.level)}onLevelSwitching(t,e){this.switchLevel(e.level)}switchLevel(t){const e=this.hls.levels[t];if(!e)return;const s=e.audioGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||(null==i?void 0:i.length)!==(null==s?void 0:s.length)||null!=s&&s.some((t=>-1===(null==i?void 0:i.indexOf(t))))){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const t=this.tracks.filter((t=>!s||-1!==s.indexOf(t.groupId)));if(t.length)this.selectDefaultTrack&&!t.some((t=>t.default))&&(this.selectDefaultTrack=!1),t.forEach(((t,e)=>{t.id=e}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=t;const e=this.hls.config.audioPreference;if(!r&&e){const s=Bs(e,t,Gs);if(s>-1)r=t[s];else{const t=Bs(e,this.tracks);r=this.tracks[t]}}let i=this.findTrackId(r);-1===i&&r&&(i=this.findTrackId(null));const a={audioTracks:t};this.log(`Updating audio tracks, ${t.length} track(s) found in group(s): ${null==s?void 0:s.join(",")}`),this.hls.trigger(T.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==i&&-1===o)this.setAudioTrack(i);else if(t.length&&-1===o){var n;const e=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${t.length}`);this.warn(e.message),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:e})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(t,e){!e.fatal&&e.context&&(e.context.type!==we||e.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(e.context.groupId)||(this.requestScheduled=-1,this.checkRetry(e)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(t){this.selectDefaultTrack=!1,this.setAudioTrack(t)}setAudioOption(t){const e=this.hls;if(e.config.audioPreference=t,t){const s=this.allAudioTracks;if(this.selectDefaultTrack=!1,s.length){const i=this.currentTrack;if(i&&$s(t,i,Gs))return i;const r=Bs(t,this.tracksInGroup,Gs);if(r>-1){const t=this.tracksInGroup[r];return this.setAudioTrack(r),t}if(i){let i=e.loadLevel;-1===i&&(i=e.firstAutoLevel);const r=function(t,e,s,i,r){const n=e[i],a=e.reduce(((t,e,s)=>{const i=e.uri;return(t[i]||(t[i]=[])).push(s),t}),{})[n.uri];a.length>1&&(i=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),d=Ks(e,i,(e=>{if(e.videoRange!==o||e.frameRate!==l||e.codecSet.substring(0,4)!==h)return!1;const i=e.audioGroups,n=s.filter((t=>!i||-1!==i.indexOf(t.groupId)));return Bs(t,n,r)>-1}));return d>-1?d:Ks(e,i,(e=>{const i=e.audioGroups,n=s.filter((t=>!i||-1!==i.indexOf(t.groupId)));return Bs(t,n,r)>-1}))}(t,e.levels,s,i,Gs);if(-1===r)return null;e.nextLoadLevel=r}if(t.channels||t.audioCodec){const e=Bs(t,s);if(e>-1)return s[e]}}}return null}setAudioTrack(t){const e=this.tracksInGroup;if(t<0||t>=e.length)return void this.warn(`Invalid audio track id: ${t}`);this.clearTimer(),this.selectDefaultTrack=!1;const s=this.currentTrack,i=e[t],r=i.details&&!i.details.live;if(t===this.trackId&&i===s&&r)return;if(this.log(`Switching to audio-track ${t} "${i.name}" lang:${i.lang} group:${i.groupId} channels:${i.channels}`),this.trackId=t,this.currentTrack=i,this.hls.trigger(T.AUDIO_TRACK_SWITCHING,u({},i)),r)return;const n=this.switchParams(i.url,null==s?void 0:s.details,i.details);this.loadPlaylist(n)}findTrackId(t){const e=this.tracksInGroup;for(let s=0;s{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=t=>{try{this.apply(t,{ot:Gn.MANIFEST,su:!this.initialized})}catch(t){k.warn("Could not generate manifest CMCD data.",t)}},this.applyFragmentData=t=>{try{const e=t.frag,s=this.hls.levels[e.level],i=this.getObjectType(e),r={d:1e3*e.duration,ot:i};i!==Gn.VIDEO&&i!==Gn.AUDIO&&i!=Gn.MUXED||(r.br=s.bitrate/1e3,r.tb=this.getTopBandwidth(i)/1e3,r.bl=this.getBufferLength(i)),this.apply(t,r)}catch(t){k.warn("Could not generate segment CMCD data.",t)}},this.hls=t;const e=this.config=t.config,{cmcd:s}=e;null!=s&&(e.pLoader=this.createPlaylistLoader(),e.fLoader=this.createFragmentLoader(),this.sid=s.sessionId||function(){try{return crypto.randomUUID()}catch(t){try{const t=URL.createObjectURL(new Blob),e=t.toString();return URL.revokeObjectURL(t),e.slice(e.lastIndexOf("/")+1)}catch(t){let e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(t=>{const s=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?s:3&s|8).toString(16)}))}}}(),this.cid=s.contentId,this.useHeaders=!0===s.useHeaders,this.includeKeys=s.includeKeys,this.registerListeners())}registerListeners(){const t=this.hls;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHED,this.onMediaDetached,this),t.on(T.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const t=this.hls;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHED,this.onMediaDetached,this),t.off(T.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(t,e){this.media=e.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(t,e){var s,i;this.audioBuffer=null==(s=e.tracks.audio)?void 0:s.buffer,this.videoBuffer=null==(i=e.tracks.video)?void 0:i.buffer}createData(){var t;return{v:1,sf:Kn.HLS,sid:this.sid,cid:this.cid,pr:null==(t=this.media)?void 0:t.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(t,e={}){m(e,this.createData());const s=e.ot===Gn.INIT||e.ot===Gn.VIDEO||e.ot===Gn.MUXED;this.starved&&s&&(e.bs=!0,e.su=!0,this.starved=!1),null==e.su&&(e.su=this.buffering);const{includeKeys:i}=this;i&&(e=Object.keys(e).reduce(((t,s)=>(i.includes(s)&&(t[s]=e[s]),t)),{})),this.useHeaders?(t.headers||(t.headers={}),ua(t.headers,e)):t.url=ga(t.url,e)}getObjectType(t){const{type:e}=t;return"subtitle"===e?Gn.TIMED_TEXT:"initSegment"===t.sn?Gn.INIT:"audio"===e?Gn.AUDIO:"main"===e?this.hls.audioTracks.length?Gn.VIDEO:Gn.MUXED:void 0}getTopBandwidth(t){let e,s=0;const i=this.hls;if(t===Gn.AUDIO)e=i.audioTracks;else{const t=i.maxAutoLevel,s=t>-1?t+1:i.levels.length;e=i.levels.slice(0,s)}for(const t of e)t.bitrate>s&&(s=t.bitrate);return s>0?s:NaN}getBufferLength(t){const e=this.hls.media,s=t===Gn.AUDIO?this.audioBuffer:this.videoBuffer;if(!s||!e)return NaN;return 1e3*Js.bufferInfo(s,e.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:t}=this.config,e=this.applyPlaylistData,s=t||this.config.loader;return class{constructor(t){this.loader=void 0,this.loader=new s(t)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(t,s,i){e(t),this.loader.load(t,s,i)}}}createFragmentLoader(){const{fLoader:t}=this.config,e=this.applyFragmentData,s=t||this.config.loader;return class{constructor(t){this.loader=void 0,this.loader=new s(t)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(t,s,i){e(t),this.loader.load(t,s,i)}}}},contentSteeringController:class{constructor(t){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=t,this.log=k.log.bind(k,"[content-steering]:"),this.registerListeners()}registerListeners(){const t=this.hls;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const t=this.hls;t&&(t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const t=1e3*this.timeToLoad-(performance.now()-this.updated);if(t>0)return void this.scheduleRefresh(this.uri,t)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(t){const e=this.levels;e&&(this.levels=e.filter((e=>e!==t)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(t,e){const{contentSteering:s}=e;null!==s&&(this.pathwayId=s.pathwayId,this.uri=s.uri,this.started&&this.startLoad())}onManifestParsed(t,e){this.audioTracks=e.audioTracks,this.subtitleTracks=e.subtitleTracks}onError(t,e){const{errorAction:s}=e;if((null==s?void 0:s.action)===Rs&&s.flags===Is){const t=this.levels;let i=this.pathwayPriority,r=this.pathwayId;if(e.context){const{groupId:s,pathwayId:i,type:n}=e.context;s&&t?r=this.getPathwayForGroupId(s,n,r):i&&(r=i)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!i&&t&&(i=t.reduce(((t,e)=>(-1===t.indexOf(e.pathwayId)&&t.push(e.pathwayId),t)),[])),i&&i.length>1&&(this.updatePathwayPriority(i),s.resolved=this.pathwayId!==r),s.resolved||k.warn(`Could not resolve ${e.details} ("${e.error.message}") with content-steering for Pathway: ${r} levels: ${t?t.length:t} priorities: ${JSON.stringify(i)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(t){this.levels=t;let e=this.getLevelsForPathway(this.pathwayId);if(0===e.length){const s=t[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${s}"`),e=this.getLevelsForPathway(s),this.pathwayId=s}return e.length!==t.length&&this.log(`Found ${e.length}/${t.length} levels in Pathway "${this.pathwayId}"`),e}getLevelsForPathway(t){return null===this.levels?[]:this.levels.filter((e=>t===e.pathwayId))}updatePathwayPriority(t){let e;this.pathwayPriority=t;const s=this.penalizedPathways,i=performance.now();Object.keys(s).forEach((t=>{i-s[t]>3e5&&delete s[t]}));for(let i=0;i0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,fs(e),this.hls.trigger(T.LEVELS_UPDATED,{levels:e});const t=this.hls.levels[n];a&&t&&this.levels&&(t.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&t.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${t.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(t,e,s){const i=this.getLevelsForPathway(s).concat(this.levels||[]);for(let s=0;s{const{ID:r,"BASE-ID":n,"URI-REPLACEMENT":a}=t;if(e.some((t=>t.pathwayId===r)))return;const o=this.getLevelsForPathway(n).map((t=>{const e=new w(t.attrs);e["PATHWAY-ID"]=r;const n=e.AUDIO&&`${e.AUDIO}_clone_${r}`,o=e.SUBTITLES&&`${e.SUBTITLES}_clone_${r}`;n&&(s[e.AUDIO]=n,e.AUDIO=n),o&&(i[e.SUBTITLES]=o,e.SUBTITLES=o);const l=pa(t.uri,e["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new rs({attrs:e,audioCodec:t.audioCodec,bitrate:t.bitrate,height:t.height,name:t.name,url:l,videoCodec:t.videoCodec,width:t.width});if(t.audioGroups)for(let e=1;e{this.log(`Loaded steering manifest: "${i}"`);const n=t.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,i).href}catch(t){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||s.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:i.toString()};this.hls.trigger(T.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(t,e,s,i)=>{if(this.log(`Error loading steering manifest: ${t.code} ${t.text} (${e.url})`),this.stopLoad(),410===t.code)return this.enabled=!1,void this.log(`Steering manifest ${e.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==t.code)this.scheduleRefresh(this.uri||e.url,r);else{const t=this.loader;if("function"==typeof(null==t?void 0:t.getResponseHeader)){const e=t.getResponseHeader("Retry-After");e&&(r=1e3*parseFloat(e))}this.log(`Steering manifest ${e.url} rate limited`)}},onTimeout:(t,e,s)=>{this.log(`Timeout loading steering manifest (${e.url})`),this.scheduleRefresh(this.uri||e.url)}};this.log(`Requesting steering manifest: ${i}`),this.loader.load(r,o,l)}scheduleRefresh(t,e=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var e;const s=null==(e=this.hls)?void 0:e.media;!s||s.ended?this.scheduleRefresh(t,1e3*this.timeToLoad):this.loadSteeringManifest(t)}),e)}}});function ka(t){return t&&"object"==typeof t?Array.isArray(t)?t.map(ka):Object.keys(t).reduce(((e,s)=>(e[s]=ka(t[s]),e)),{}):t}function Da(t){const e=t.loader;if(e!==Ea&&e!==ya)k.log("[config]: Custom loader detected, cannot enable progressive streaming"),t.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(t){}return!1})()&&(t.loader=Ea,t.progressive=!0,t.enableSoftwareAES=!0,k.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let Ia;class wa extends Cs{constructor(t,e){super(t,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=e,this._registerListeners()}_registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(T.LEVEL_LOADED,this.onLevelLoaded,this),t.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.ERROR,this.onError,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(T.LEVEL_LOADED,this.onLevelLoaded,this),t.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((t=>{t.loadError=0,t.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(t,e){this.resetLevels()}onManifestLoaded(t,e){const s=this.hls.config.preferManagedMediaSource,i=[],r={},n={};let a=!1,o=!1,l=!1;e.levels.forEach((t=>{var e,h;const d=t.attrs;let{audioCodec:c,videoCodec:u}=t;-1!==(null==(e=c)?void 0:e.indexOf("mp4a.40.34"))&&(Ia||(Ia=/chrome|firefox/i.test(navigator.userAgent)),Ia&&(t.audioCodec=c=void 0)),c&&(t.audioCodec=c=ue(c,s)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=t.videoCodec=function(t){const e=t.split(",");for(let t=0;t2){let i=s.shift()+".";i+=parseInt(s.shift()).toString(16),i+=("000"+parseInt(s.shift()).toString(16)).slice(-4),e[t]=i}}return e.join(",")}(u));const{width:f,height:g,unknownCodecs:m}=t;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!c),null!=m&&m.length||c&&!ne(c,"audio",s)||u&&!ne(u,"video",s))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=d,L=`${`${T||"."}-`}${t.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(r[L])if(r[L].uri===t.url||t.attrs["PATHWAY-ID"])r[L].addGroupId("audio",d.AUDIO),r[L].addGroupId("text",d.SUBTITLES);else{const e=n[L]+=1;t.attrs["PATHWAY-ID"]=new Array(e+1).join(".");const s=new rs(t);r[L]=s,i.push(s)}else{const e=new rs(t);r[L]=e,n[L]=1,i.push(e)}})),this.filterAndSortMediaOptions(i,e,a,o,l)}filterAndSortMediaOptions(t,e,s,i,r){let n=[],a=[],o=t;if((s||i)&&r&&(o=o.filter((({videoCodec:t,videoRange:e,width:s,height:i})=>{return(!!t||!(!s||!i))&&(!!(r=e)&&Je.indexOf(r)>-1);var r}))),0===o.length)return void Promise.resolve().then((()=>{if(this.hls){e.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(e.levels[0].attrs)}`);const t=new Error("no level with compatible codecs found in manifest");this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:e.url,error:t,reason:t.message})}}));if(e.audioTracks){const{preferManagedMediaSource:t}=this.hls.config;n=e.audioTracks.filter((e=>!e.audioCodec||ne(e.audioCodec,"audio",t))),Ca(n)}e.subtitles&&(a=e.subtitles,Ca(a));const l=o.slice(0);o.sort(((t,e)=>{if(t.attrs["HDCP-LEVEL"]!==e.attrs["HDCP-LEVEL"])return(t.attrs["HDCP-LEVEL"]||"")>(e.attrs["HDCP-LEVEL"]||"")?1:-1;if(s&&t.height!==e.height)return t.height-e.height;if(t.frameRate!==e.frameRate)return t.frameRate-e.frameRate;if(t.videoRange!==e.videoRange)return Je.indexOf(t.videoRange)-Je.indexOf(e.videoRange);if(t.videoCodec!==e.videoCodec){const s=le(t.videoCodec),i=le(e.videoCodec);if(s!==i)return i-s}if(t.uri===e.uri&&t.codecSet!==e.codecSet){const s=he(t.codecSet),i=he(e.codecSet);if(s!==i)return i-s}return t.averageBitrate!==e.averageBitrate?t.averageBitrate-e.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let t=0;ts&&s===ba.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=t)}break}const c=r&&!i,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:e.sessionData,sessionKeys:e.sessionKeys,firstLevel:this._firstLevel,stats:e.stats,audio:r,video:i,altAudio:!c&&n.some((t=>!!t.url))};this.hls.trigger(T.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(t){const e=this._levels;if(0===e.length)return;if(t<0||t>=e.length){const s=new Error("invalid level idx"),i=t<0;if(this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.LEVEL_SWITCH_ERROR,level:t,fatal:i,error:s,reason:s.message}),i)return;t=Math.min(t,e.length-1)}const s=this.currentLevelIndex,i=this.currentLevel,r=i?i.attrs["PATHWAY-ID"]:void 0,n=e[t],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=t,this.currentLevel=n,s===t&&n.details&&i&&r===a)return;this.log(`Switching to level ${t} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${s}${r?" with Pathway "+r:""}`);const o={level:t,attrs:n.attrs,details:n.details,bitrate:n.bitrate,averageBitrate:n.averageBitrate,maxBitrate:n.maxBitrate,realBitrate:n.realBitrate,width:n.width,height:n.height,codecSet:n.codecSet,audioCodec:n.audioCodec,videoCodec:n.videoCodec,audioGroups:n.audioGroups,subtitleGroups:n.subtitleGroups,loaded:n.loaded,loadError:n.loadError,fragmentError:n.fragmentError,name:n.name,id:n.id,uri:n.uri,url:n.url,urlId:0,audioGroupIds:n.audioGroupIds,textGroupIds:n.textGroupIds};this.hls.trigger(T.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const t=this.switchParams(n.uri,null==i?void 0:i.details,l);this.loadPlaylist(t)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(t){this.manualLevelIndex=t,void 0===this._startLevel&&(this._startLevel=t),-1!==t&&(this.level=t)}get firstLevel(){return this._firstLevel}set firstLevel(t){this._firstLevel=t}get startLevel(){if(void 0===this._startLevel){const t=this.hls.config.startLevel;return void 0!==t?t:this.hls.firstAutoLevel}return this._startLevel}set startLevel(t){this._startLevel=t}onError(t,e){!e.fatal&&e.context&&e.context.type===Ie&&e.context.level===this.level&&this.checkRetry(e)}onFragBuffered(t,{frag:e}){if(void 0!==e&&e.type===_e){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return;const s=this._levels[e.level];null!=s&&s.loadError&&(this.log(`Resetting level error count of ${s.loadError} on frag buffered`),s.loadError=0)}}onLevelLoaded(t,e){var s;const{level:i,details:r}=e,n=this._levels[i];var a;if(!n)return this.warn(`Invalid level index ${i}`),void(null!=(a=e.deliveryDirectives)&&a.skip&&(r.deltaUpdateFailed=!0));i===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(i,e,n.details)):null!=(s=e.deliveryDirectives)&&s.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(t){super.loadPlaylist();const e=this.currentLevelIndex,s=this.currentLevel;if(s&&this.shouldLoadPlaylist(s)){let i=s.uri;if(t)try{i=t.addDirectives(i)}catch(t){this.warn(`Could not construct new URL with HLS Delivery Directives: ${t}`)}const r=s.attrs["PATHWAY-ID"];this.log(`Loading level index ${e}${void 0!==(null==t?void 0:t.msn)?" at sn "+t.msn+" part "+t.part:""} with${r?" Pathway "+r:""} ${i}`),this.clearTimer(),this.hls.trigger(T.LEVEL_LOADING,{url:i,level:e,pathwayId:s.attrs["PATHWAY-ID"],id:0,deliveryDirectives:t||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(t){this.level=t,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=t)}removeLevel(t){var e;const s=this._levels.filter(((e,s)=>s!==t||(this.steering&&this.steering.removeLevel(e),e===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,e.details&&e.details.fragments.forEach((t=>t.level=-1))),!1)));fs(s),this._levels=s,this.currentLevelIndex>-1&&null!=(e=this.currentLevel)&&e.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(T.LEVELS_UPDATED,{levels:s})}onLevelsUpdated(t,{levels:e}){this._levels=e}checkMaxAutoUpdated(){const{autoLevelCapping:t,maxAutoLevel:e,maxHdcpLevel:s}=this.hls;this._maxAutoLevel!==e&&(this._maxAutoLevel=e,this.hls.trigger(T.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:t,levels:this.levels,maxAutoLevel:e,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:s}))}}function Ca(t){const e={};t.forEach((t=>{const s=t.groupId||"";t.id=e[s]=e[s]||0,e[s]++}))}class _a{constructor(t){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=t}abort(t){for(const s in this.keyUriToKeyInfo){const i=this.keyUriToKeyInfo[s].loader;if(i){var e;if(t&&t!==(null==(e=i.context)?void 0:e.frag.type))return;i.abort()}}}detach(){for(const t in this.keyUriToKeyInfo){const e=this.keyUriToKeyInfo[t];(e.mediaKeySessionContext||e.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[t]}}destroy(){this.detach();for(const t in this.keyUriToKeyInfo){const e=this.keyUriToKeyInfo[t].loader;e&&e.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(t,e=S.KEY_LOAD_ERROR,s,i,r){return new hi({type:E.NETWORK_ERROR,details:e,fatal:!1,frag:t,response:r,error:s,networkDetails:i})}loadClear(t,e){if(this.emeController&&this.config.emeEnabled){const{sn:s,cc:i}=t;for(let t=0;t{r.setKeyFormat(t)}));break}}}}load(t){return!t.decryptdata&&t.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(t).then((e=>this.loadInternal(t,e))):this.loadInternal(t)}loadInternal(t,e){var s,i;e&&t.setKeyFormat(e);const r=t.decryptdata;if(!r){const s=new Error(e?`Expected frag.decryptdata to be defined after setting format ${e}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,s))}const n=r.uri;if(!n)return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(s=a)&&s.decryptdata.key)return r.key=a.decryptdata.key,Promise.resolve({frag:t,keyInfo:a});var o;if(null!=(i=a)&&i.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((e=>(r.key=e.keyInfo.decryptdata.key,{frag:t,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(a,t):this.loadKeyEME(a,t);case"AES-128":return this.loadKeyHTTP(a,t);default:return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(t,e){const s={frag:e,keyInfo:t};if(this.emeController&&this.config.emeEnabled){const e=this.emeController.loadKey(s);if(e)return(t.keyLoadPromise=e.then((e=>(t.mediaKeySessionContext=e,s)))).catch((e=>{throw t.keyLoadPromise=null,e}))}return Promise.resolve(s)}loadKeyHTTP(t,e){const s=this.config,i=new(0,s.loader)(s);return e.keyLoader=t.loader=i,t.keyLoadPromise=new Promise(((r,n)=>{const a={keyInfo:t,frag:e,responseType:"arraybuffer",url:t.decryptdata.uri},o=s.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(t,e,s,i)=>{const{frag:a,keyInfo:o,url:l}=s;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,S.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),i));o.decryptdata.key=a.decryptdata.key=new Uint8Array(t.data),a.keyLoader=null,o.loader=null,r({frag:a,keyInfo:o})},onError:(t,s,i,r)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.KEY_LOAD_ERROR,new Error(`HTTP Error ${t.code} loading key ${t.text}`),i,u({url:a.url,data:void 0},t)))},onTimeout:(t,s,i)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),i))},onAbort:(t,s,i)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.INTERNAL_ABORTED,new Error("key loading aborted"),i))}};i.load(a,l,h)}))}resetLoader(t){const{frag:e,keyInfo:s,url:i}=t,r=s.loader;e.keyLoader===r&&(e.keyLoader=null,s.loader=null),delete this.keyUriToKeyInfo[i],r&&r.destroy()}}function xa(){return self.SourceBuffer||self.WebKitSourceBuffer}function Pa(){if(!ie())return!1;const t=xa();return!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove}class Fa{constructor(t,e,s,i){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=t,this.media=e,this.fragmentTracker=s,this.hls=i}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(t,e){const{config:s,media:i,stalled:r}=this;if(null===i)return;const{currentTime:n,seeking:a}=i,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==t){if(this.moved=!0,a||(this.nudgeRetry=0),null!==r){if(this.stallReported){const t=self.performance.now()-r;k.warn(`playback not stuck anymore @${n}, after ${Math.round(t)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(i.paused&&!a||i.ended||0===i.playbackRate||!Js.getBuffered(i).length)return void(this.nudgeRetry=0);const h=Js.bufferInfo(i,n,0),d=h.nextStart||0;if(a){const t=h.len>2,s=!d||e&&e.start<=n||d-n>2&&!this.fragmentTracker.getPartialFragment(n);if(t||s)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(h.len>0)&&!d)return;const t=Math.max(d,h.start||0)-n,e=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,s=(null==e||null==(c=e.details)?void 0:c.live)?2*e.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(n);if(t>0&&(t<=s||r))return void(i.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const f=u-r;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=Js.bufferInfo(i,n,s.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(t,e){const{config:s,fragmentTracker:i,media:r}=this;if(null===r)return;const n=r.currentTime,a=i.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(t.len>s.maxBufferHole||t.nextStart&&t.nextStart-n1e3*s.highBufferWatchdogPeriod&&(k.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(t){const{hls:e,media:s,stallReported:i}=this;if(!i&&s){this.stallReported=!0;const i=new Error(`Playback stalling at @${s.currentTime} due to low buffer (${JSON.stringify(t)})`);k.warn(i.message),e.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_STALLED_ERROR,fatal:!1,error:i,buffer:t.len})}}_trySkipBufferHole(t){const{config:e,hls:s,media:i}=this;if(null===i)return 0;const r=i.currentTime,n=Js.bufferInfo(i,r,0),a=r0&&n.len<1&&i.readyState<3,h=a-r;if(h>0&&(o||l)){if(h>e.maxBufferHole){const{fragmentTracker:e}=this;let s=!1;if(0===r){const t=e.getAppendedFrag(0,_e);t&&a1?(t=0,this.bitrateTest=!0):t=s.firstAutoLevel),s.nextLoadLevel=t,this.level=s.loadLevel,this.loadedmetadata=!1}e>0&&-1===t&&(this.log(`Override startPosition with lastCurrentTime @${e.toFixed(3)}`),t=e),this.state=pi,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}else this._forceStartLoad=!0,this.state=mi}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case ki:{const{levels:t,level:e}=this,s=null==t?void 0:t[e],i=null==s?void 0:s.details;if(i&&(!i.live||this.levelLastLoaded===s)){if(this.waitForCdnTuneIn(i))break;this.state=pi;break}if(this.hls.nextLoadLevel!==this.level){this.state=pi;break}break}case Ti:{var t;const e=self.performance.now(),s=this.retryDate;if(!s||e>=s||null!=(t=this.media)&&t.seeking){const{levels:t,level:e}=this,s=null==t?void 0:t[e];this.resetStartWhenNotLoaded(s||null),this.state=pi}}}this.state===pi&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:t,levelLastLoaded:e,levels:s,media:i}=this;if(null===e||!i&&(this.startFragRequested||!t.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=t.nextLoadLevel;if(null==s||!s[r])return;const n=s[r],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const t={};return this.altAudio&&(t.type="video"),this.hls.trigger(T.BUFFER_EOS,t),void(this.state=Ai)}t.loadLevel!==r&&-1===t.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=t.nextLoadLevel=r;const l=n.details;if(!l||this.state===ki||l.live&&this.levelLastLoaded!==n)return this.level=r,void(this.state=ki);const h=a.len,d=this.getMaxBufferLength(n.maxBitrate);if(h>=d)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==js){var f;const t=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,e=l.fragments[t-1];e&&u.cc===e.cc&&(u=e,this.fragmentTracker.removeFragment(e))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const t=this.audioOnly&&!this.altAudio?P:F,e=(t===F?this.videoBuffer:this.mediaBuffer)||this.media;e&&this.afterBufferFlushed(e,t,_e)}u=this.getNextFragmentLoopLoading(u,l,a,_e,d)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,c))}loadFragment(t,e,s){const i=this.fragmentTracker.getState(t);this.fragCurrent=t,i===Vs||i===Ws?"initSegment"===t.sn?this._loadInitSegment(t,e):this.bitrateTest?(this.log(`Fragment ${t.sn} of level ${t.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(t,e)):(this.startFragRequested=!0,super.loadFragment(t,e,s)):this.clearTrackerIfNeeded(t)}getBufferedFrag(t){return this.fragmentTracker.getBufferedFrag(t,_e)}followingBufferedFrag(t){return t?this.getBufferedFrag(t.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:t,media:e}=this;if(null!=e&&e.readyState){let s;const i=this.getAppendedFrag(e.currentTime);i&&i.start>1&&this.flushMainBuffer(0,i.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const t=this.getMainFwdBufferInfo();if(!t||t.len<2*r.targetduration)return}if(!e.paused&&t){const e=t[this.hls.nextLoadLevel],i=this.fragLastKbps;s=i&&this.fragCurrent?this.fragCurrent.duration*e.maxBitrate/(1e3*i)+1:0}else s=0;const n=this.getBufferedFrag(e.currentTime+s);if(n){const t=this.followingBufferedFrag(n);if(t){this.abortCurrentFrag();const e=t.maxStartPTS?t.maxStartPTS:t.start,s=t.duration,i=Math.max(n.end,e+Math.min(Math.max(s-this.config.maxFragLookUpTolerance,s*(this.couldBacktrack?.5:.125)),s*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(i,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const t=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,t&&(t.abortRequests(),this.fragmentTracker.removeFragment(t)),this.state){case vi:case yi:case Ti:case Si:case Li:this.state=pi}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(t,e){super.flushMainBuffer(t,e,this.altAudio?"video":null)}onMediaAttached(t,e){super.onMediaAttached(t,e);const s=e.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),s.addEventListener("playing",this.onvplaying),s.addEventListener("seeked",this.onvseeked),this.gapController=new Fa(this.config,s,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:t}=this;t&&this.onvplaying&&this.onvseeked&&(t.removeEventListener("playing",this.onvplaying),t.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const t=this.media,e=t?t.currentTime:null;p(e)&&this.log(`Media seeked to ${e.toFixed(3)}`);const s=this.getMainFwdBufferInfo();null!==s&&0!==s.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${s?s.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(T.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=this.fragLastKbps=0,this.levels=this.fragPlaying=this.backtrackFragment=this.levelLastLoaded=null,this.altAudio=this.audioOnly=this.startFragRequested=!1}onManifestParsed(t,e){let s=!1,i=!1;e.levels.forEach((t=>{const e=t.audioCodec;e&&(s=s||-1!==e.indexOf("mp4a.40.2"),i=i||-1!==e.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=s&&i&&!function(){var t;const e=xa();return"function"==typeof(null==e||null==(t=e.prototype)?void 0:t.changeType)}(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=e.levels,this.startFragRequested=!1}onLevelLoading(t,e){const{levels:s}=this;if(!s||this.state!==pi)return;const i=s[e.level];(!i.details||i.details.live&&this.levelLastLoaded!==i||this.waitForCdnTuneIn(i.details))&&(this.state=ki)}onLevelLoaded(t,e){var s;const{levels:i}=this,r=e.level,n=e.details,a=n.totalduration;if(!i)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=i[r],l=this.fragCurrent;!l||this.state!==yi&&this.state!==Ti||l.level!==e.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(s=o.details)&&s.live){var d;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(d=this.levelLastLoaded)?void 0:d.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(T.LEVEL_UPDATED,{details:n,level:r}),this.state===ki){if(this.waitForCdnTuneIn(n))return;this.state=pi}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(t){var e;const{frag:s,part:i,payload:r}=t,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);const a=n[s.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${s.sn} of level ${s.level} after level details were reset`),void this.fragmentTracker.removeFragment(s);const l=a.videoCodec,h=o.PTSKnown||!o.live,d=null==(e=s.initSegment)?void 0:e.data,c=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new Fr(this.hls,_e,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=i?i.index:-1,g=-1!==f,m=new Zs(s.level,s.sn,s.stats.chunkCount,r.byteLength,f,g),p=this.initPTS[s.cc];u.push(r,d,c,l,s,i,o.totalduration,h,m,p)}onAudioTrackSwitching(t,e){const s=this.altAudio;if(!!!e.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;const t=this.fragCurrent;t&&(this.log("Switching to main audio track, cancel main fragment load"),t.abortRequests(),this.fragmentTracker.removeFragment(t)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const t=this.hls;s&&(t.trigger(T.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),t.trigger(T.AUDIO_TRACK_SWITCHED,e)}}onAudioTrackSwitched(t,e){const s=e.id,i=!!this.hls.audioTracks[s].url;if(i){const t=this.videoBuffer;t&&this.mediaBuffer!==t&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=t)}this.altAudio=i,this.tick()}onBufferCreated(t,e){const s=e.tracks;let i,r,n=!1;for(const t in s){const e=s[t];if("main"===e.id){if(r=t,i=e,"video"===t){const e=s[t];e&&(this.videoBuffer=e.buffer)}}else n=!0}n&&i?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=i.buffer):this.mediaBuffer=this.media}onFragBuffered(t,e){const{frag:s,part:i}=e;if(s&&s.type!==_e)return;if(this.fragContextChanged(s))return this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===Li&&(this.state=pi));const r=i?i.stats:s.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==s.sn&&(this.fragPrevious=s),this.fragBufferedComplete(s,i)}onError(t,e){var s;if(e.fatal)this.state=Ri;else switch(e.details){case S.FRAG_GAP:case S.FRAG_PARSING_ERROR:case S.FRAG_DECRYPT_ERROR:case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(_e,e);break;case S.LEVEL_LOAD_ERROR:case S.LEVEL_LOAD_TIMEOUT:case S.LEVEL_PARSING_ERROR:e.levelRetry||this.state!==ki||(null==(s=e.context)?void 0:s.type)!==Ie||(this.state=pi);break;case S.BUFFER_APPEND_ERROR:case S.BUFFER_FULL_ERROR:if(!e.parent||"main"!==e.parent)return;if(e.details===S.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(e)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case S.INTERNAL_EXCEPTION:this.recoverWorkerError(e)}}checkBuffer(){const{media:t,gapController:e}=this;if(t&&e&&t.readyState){if(this.loadedmetadata||!Js.getBuffered(t).length){const t=this.state!==pi?this.fragCurrent:null;e.poll(this.lastCurrentTime,t)}this.lastCurrentTime=t.currentTime}}onFragLoadEmergencyAborted(){this.state=pi,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(t,{type:e}){if(e!==P||this.audioOnly&&!this.altAudio){const t=(e===F?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(t,e,_e),this.tick()}}onLevelsUpdated(t,e){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=e.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:t}=this;if(!t)return;const e=t.currentTime;let s=this.startPosition;if(s>=0&&e0&&(r{const{hls:i}=this;if(!s||this.fragContextChanged(t))return;e.fragmentError=0,this.state=pi,this.startFragRequested=!1,this.bitrateTest=!1;const r=t.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),i.trigger(T.FRAG_LOADED,s),t.bitrateTest=!1}))}_handleTransmuxComplete(t){var e;const s="main",{hls:i}=this,{remuxResult:r,chunkMeta:n}=t,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:d,text:c,id3:u,initSegment:f}=r,{details:g}=h,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=Si,f){if(null!=f&&f.tracks){const t=o.initSegment||o;this._bufferInitSegment(h,f.tracks,t,n),i.trigger(T.FRAG_PARSING_INIT_SEGMENT,{frag:t,id:s,tracks:f.tracks})}const t=f.initPTS,e=f.timescale;p(t)&&(this.initPTS[o.cc]={baseTime:t,timescale:e},i.trigger(T.INIT_PTS_FOUND,{frag:o,id:s,initPTS:t,timescale:e}))}if(d&&g&&"initSegment"!==o.sn){const t=g.fragments[o.sn-1-g.startSN],e=o.sn===g.startSN,s=!t||o.cc>t.cc;if(!1!==r.independent){const{startPTS:t,endPTS:i,startDTS:r,endDTS:a}=d;if(l)l.elementaryStreams[d.type]={startPTS:t,endPTS:i,startDTS:r,endDTS:a};else if(d.firstKeyFrame&&d.independent&&1===n.id&&!s&&(this.couldBacktrack=!0),d.dropped&&d.independent){const r=this.getMainFwdBufferInfo(),n=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=d.firstKeyFramePTS?d.firstKeyFramePTS:t;if(!e&&n2&&(o.gap=!0);o.setElementaryStreamInfo(d.type,t,i,r,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(d,o,l,n,e||s)}else{if(!e&&!s)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:t,endPTS:e,startDTS:s,endDTS:i}=m;l&&(l.elementaryStreams[P]={startPTS:t,endPTS:e,startDTS:s,endDTS:i}),o.setElementaryStreamInfo(P,t,e,s,i),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(e=u.samples)&&e.length){const t={id:s,frag:o,details:g,samples:u.samples};i.trigger(T.FRAG_PARSING_METADATA,t)}if(g&&c){const t={id:s,frag:o,details:g,samples:c.samples};i.trigger(T.FRAG_PARSING_USERDATA,t)}}}_bufferInitSegment(t,e,s,i){if(this.state!==Si)return;this.audioOnly=!!e.audio&&!e.video,this.altAudio&&!this.audioOnly&&delete e.audio;const{audio:r,video:n,audiovideo:a}=e;if(r){let e=t.audioCodec;const s=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){e&&(e=-1!==e.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const t=r.metadata;t&&"channelCount"in t&&1!==(t.channelCount||1)&&-1===s.indexOf("firefox")&&(e="mp4a.40.5")}e&&-1!==e.indexOf("mp4a.40.5")&&-1!==s.indexOf("android")&&"audio/mpeg"!==r.container&&(e="mp4a.40.2",this.log(`Android: force audio codec to ${e}`)),t.audioCodec&&t.audioCodec!==e&&this.log(`Swapping manifest audio codec "${t.audioCodec}" for "${e}"`),r.levelCodec=e,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${e||""}/${t.audioCodec||""}/${r.codec}]`)}n&&(n.levelCodec=t.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${t.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${t.codecs}/${a.codec}]`),this.hls.trigger(T.BUFFER_CODECS,e),Object.keys(e).forEach((t=>{const r=e[t].initSegment;null!=r&&r.byteLength&&this.hls.trigger(T.BUFFER_APPENDING,{type:t,data:r,frag:s,part:null,chunkMeta:i,parent:s.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,_e)}backtrack(t){this.couldBacktrack=!0,this.backtrackFragment=t,this.resetTransmuxer(),this.flushBufferGap(t),this.fragmentTracker.removeFragment(t),this.fragPrevious=null,this.nextLoadPosition=t.start,this.state=pi}checkFragmentChanged(){const t=this.media;let e=null;if(t&&t.readyState>1&&!1===t.seeking){const s=t.currentTime;if(Js.isBuffered(t,s)?e=this.getAppendedFrag(s):Js.isBuffered(t,s+.1)&&(e=this.getAppendedFrag(s+.1)),e){this.backtrackFragment=null;const t=this.fragPlaying,s=e.level;t&&e.sn===t.sn&&t.level===s||(this.fragPlaying=e,this.hls.trigger(T.FRAG_CHANGED,{frag:e}),t&&t.level===s||this.hls.trigger(T.LEVEL_SWITCHED,{level:s}))}}}get nextLevel(){const t=this.nextBufferedFrag;return t?t.level:-1}get currentFrag(){const t=this.media;return t?this.fragPlaying||this.getAppendedFrag(t.currentTime):null}get currentProgramDateTime(){const t=this.media;if(t){const e=t.currentTime,s=this.currentFrag;if(s&&p(e)&&p(s.programDateTime)){const t=s.programDateTime+1e3*(e-s.start);return new Date(t)}}return null}get currentLevel(){const t=this.currentFrag;return t?t.level:-1}get nextBufferedFrag(){const t=this.currentFrag;return t?this.followingBufferedFrag(t):null}get forceStartLoad(){return this._forceStartLoad}}class Oa{static get version(){return"1.5.17"}static isMSESupported(){return Pa()}static isSupported(){return function(){if(!Pa())return!1;const t=ie();return"function"==typeof(null==t?void 0:t.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((e=>t.isTypeSupported(oe(e,"video"))))||["mp4a.40.2","fLaC"].some((e=>t.isTypeSupported(oe(e,"audio")))))}()}static getMediaSource(){return ie()}static get Events(){return T}static get ErrorTypes(){return E}static get ErrorDetails(){return S}static get DefaultConfig(){return Oa.defaultConfig?Oa.defaultConfig:ba}static set DefaultConfig(t){Oa.defaultConfig=t}constructor(t={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new Pr,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,this.triggeringException=void 0,function(t,e){if("object"==typeof console&&!0===t||"object"==typeof t){b(t,"debug","log","info","warn","error");try{R.log(`Debug logs enabled for "${e}" in hls.js version 1.5.17`)}catch(t){R=A}}else R=A}(t.debug||!1,"Hls instance");const e=this.config=function(t,e){if((e.liveSyncDurationCount||e.liveMaxLatencyDurationCount)&&(e.liveSyncDuration||e.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==e.liveMaxLatencyDurationCount&&(void 0===e.liveSyncDurationCount||e.liveMaxLatencyDurationCount<=e.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==e.liveMaxLatencyDuration&&(void 0===e.liveSyncDuration||e.liveMaxLatencyDuration<=e.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const s=ka(t),i=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((t=>{const r=`${"level"===t?"playlist":t}LoadPolicy`,n=void 0===e[r],a=[];i.forEach((i=>{const o=`${t}Loading${i}`,l=e[o];if(void 0!==l&&n){a.push(o);const t=s[r].default;switch(e[r]={default:t},i){case"TimeOut":t.maxLoadTimeMs=l,t.maxTimeToFirstByteMs=l;break;case"MaxRetry":t.errorRetry.maxNumRetry=l,t.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":t.errorRetry.retryDelayMs=l,t.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":t.errorRetry.maxRetryDelayMs=l,t.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&k.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(e[r])}`)})),u(u({},s),e)}(Oa.DefaultConfig,t);this.userConfig=t,e.progressive&&Da(e);const{abrController:s,bufferController:i,capLevelController:r,errorController:n,fpsController:a}=e,o=new n(this),l=this.abrController=new s(this),h=this.bufferController=new i(this),d=this.capLevelController=new r(this),c=new a(this),f=new Oe(this),g=new Xe(this),m=e.contentSteeringController,p=m?new m(this):null,v=this.levelController=new wa(this,p),y=new qs(this),E=new _a(this.config),S=this.streamController=new Ma(this,y,E);d.setStreamController(S),c.setStreamController(S);const L=[f,v,S];p&&L.splice(1,0,p),this.networkControllers=L;const D=[l,h,d,c,g,y];this.audioTrackController=this.createController(e.audioTrackController,L);const I=e.audioStreamController;I&&L.push(new I(this,y,E)),this.subtitleTrackController=this.createController(e.subtitleTrackController,L);const w=e.subtitleStreamController;w&&L.push(new w(this,y,E)),this.createController(e.timelineController,D),E.emeController=this.emeController=this.createController(e.emeController,D),this.cmcdController=this.createController(e.cmcdController,D),this.latencyController=this.createController(ze,D),this.coreComponents=D,L.push(o);const C=o.onErrorOut;"function"==typeof C&&this.on(T.ERROR,C,o)}createController(t,e){if(t){const s=new t(this);return e&&e.push(s),s}return null}on(t,e,s=this){this._emitter.on(t,e,s)}once(t,e,s=this){this._emitter.once(t,e,s)}removeAllListeners(t){this._emitter.removeAllListeners(t)}off(t,e,s=this,i){this._emitter.off(t,e,s,i)}listeners(t){return this._emitter.listeners(t)}emit(t,e,s){return this._emitter.emit(t,e,s)}trigger(t,e){if(this.config.debug)return this.emit(t,t,e);try{return this.emit(t,t,e)}catch(e){if(k.error("An internal error happened while handling event "+t+'. Error message: "'+e.message+'". Here is a stacktrace:',e),!this.triggeringException){this.triggeringException=!0;const s=t===T.ERROR;this.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,fatal:s,event:t,error:e}),this.triggeringException=!1}}return!1}listenerCount(t){return this._emitter.listenerCount(t)}destroy(){k.log("destroy"),this.trigger(T.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((t=>t.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((t=>t.destroy())),this.coreComponents.length=0;const t=this.config;t.xhrSetup=t.fetchSetup=void 0,this.userConfig=null}attachMedia(t){k.log("attachMedia"),this._media=t,this.trigger(T.MEDIA_ATTACHING,{media:t})}detachMedia(){k.log("detachMedia"),this.trigger(T.MEDIA_DETACHING,void 0),this._media=null}loadSource(t){this.stopLoad();const e=this.media,s=this.url,i=this.url=d.buildAbsoluteURL(self.location.href,t,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,k.log(`loadSource:${i}`),e&&s&&(s!==i||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(e)),this.trigger(T.MANIFEST_LOADING,{url:t})}startLoad(t=-1){k.log(`startLoad(${t})`),this.started=!0,this.networkControllers.forEach((e=>{e.startLoad(t)}))}stopLoad(){k.log("stopLoad"),this.started=!1,this.networkControllers.forEach((t=>{t.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((t=>{"fragmentLoader"in t&&t.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((t=>{"fragmentLoader"in t&&t.stopLoad()}))}swapAudioCodec(){k.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){k.log("recoverMediaError");const t=this._media;this.detachMedia(),t&&this.attachMedia(t)}removeLevel(t){this.levelController.removeLevel(t)}get levels(){const t=this.levelController.levels;return t||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(t){k.log(`set currentLevel:${t}`),this.levelController.manualLevel=t,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(t){k.log(`set nextLevel:${t}`),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(t){k.log(`set loadLevel:${t}`),this.levelController.manualLevel=t}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(t){this.levelController.nextLoadLevel=t}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(t){k.log(`set firstLevel:${t}`),this.levelController.firstLevel=t}get startLevel(){const t=this.levelController.startLevel;return-1===t&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:t}set startLevel(t){k.log(`set startLevel:${t}`),-1!==t&&(t=Math.max(t,this.minAutoLevel)),this.levelController.startLevel=t}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(t){const e=!!t;e!==this.config.capLevelToPlayerSize&&(e?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=e)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimate():NaN}set bandwidthEstimate(t){this.abrController.resetEstimator(t)}get ttfbEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimateTTFB():NaN}set autoLevelCapping(t){this._autoLevelCapping!==t&&(k.log(`set autoLevelCapping:${t}`),this._autoLevelCapping=t,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(t){(function(t){return Qe.indexOf(t)>-1})(t)&&this._maxHdcpLevel!==t&&(this._maxHdcpLevel=t,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:t,config:{minAutoBitrate:e}}=this;if(!t)return 0;const s=t.length;for(let i=0;i=e)return i;return 0}get maxAutoLevel(){const{levels:t,autoLevelCapping:e,maxHdcpLevel:s}=this;let i;if(i=-1===e&&null!=t&&t.length?t.length-1:e,s)for(let e=i;e--;){const i=t[e].attrs["HDCP-LEVEL"];if(i&&i<=s)return e}return i}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(t){this.abrController.nextAutoLevel=t}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(t){var e;return null==(e=this.audioTrackController)?void 0:e.setAudioOption(t)}setSubtitleOption(t){var e;return null==(e=this.subtitleTrackController)||e.setSubtitleOption(t),null}get allAudioTracks(){const t=this.audioTrackController;return t?t.allAudioTracks:[]}get audioTracks(){const t=this.audioTrackController;return t?t.audioTracks:[]}get audioTrack(){const t=this.audioTrackController;return t?t.audioTrack:-1}set audioTrack(t){const e=this.audioTrackController;e&&(e.audioTrack=t)}get allSubtitleTracks(){const t=this.subtitleTrackController;return t?t.allSubtitleTracks:[]}get subtitleTracks(){const t=this.subtitleTrackController;return t?t.subtitleTracks:[]}get subtitleTrack(){const t=this.subtitleTrackController;return t?t.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(t){const e=this.subtitleTrackController;e&&(e.subtitleTrack=t)}get subtitleDisplay(){const t=this.subtitleTrackController;return!!t&&t.subtitleDisplay}set subtitleDisplay(t){const e=this.subtitleTrackController;e&&(e.subtitleDisplay=t)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(t){this.config.lowLatencyMode=t}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}Oa.defaultConfig=void 0}}]); \ No newline at end of file diff --git a/45071.async.js b/45071.async.js deleted file mode 100644 index 6ddbab6c31..0000000000 --- a/45071.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[45071],{45071:function(t,e,s){function i(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}s.d(e,{ZP:function(){return Oa}});var r,n,a,o,l,h={exports:{}};r=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,n=/^(?=([^\/?#]*))\1([^]*)$/,a=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,h.exports=l={buildAbsoluteURL:function(t,e,s){if(s=s||{},t=t.trim(),!(e=e.trim())){if(!s.alwaysNormalize)return t;var i=l.parseURL(t);if(!i)throw new Error("Error trying to parse base URL.");return i.path=l.normalizePath(i.path),l.buildURLFromParts(i)}var r=l.parseURL(e);if(!r)throw new Error("Error trying to parse relative URL.");if(r.scheme)return s.alwaysNormalize?(r.path=l.normalizePath(r.path),l.buildURLFromParts(r)):e;var a=l.parseURL(t);if(!a)throw new Error("Error trying to parse base URL.");if(!a.netLoc&&a.path&&"/"!==a.path[0]){var o=n.exec(a.path);a.netLoc=o[1],a.path=o[2]}a.netLoc&&!a.path&&(a.path="/");var h={scheme:a.scheme,netLoc:r.netLoc,path:null,params:r.params,query:r.query,fragment:r.fragment};if(!r.netLoc&&(h.netLoc=a.netLoc,"/"!==r.path[0]))if(r.path){var d=a.path,c=d.substring(0,d.lastIndexOf("/")+1)+r.path;h.path=l.normalizePath(c)}else h.path=a.path,r.params||(h.params=a.params,r.query||(h.query=a.query));return null===h.path&&(h.path=s.alwaysNormalize?l.normalizePath(r.path):r.path),l.buildURLFromParts(h)},parseURL:function(t){var e=r.exec(t);return e?{scheme:e[1]||"",netLoc:e[2]||"",path:e[3]||"",params:e[4]||"",query:e[5]||"",fragment:e[6]||""}:null},normalizePath:function(t){for(t=t.split("").reverse().join("").replace(a,"");t.length!==(t=t.replace(o,"")).length;);return t.split("").reverse().join("")},buildURLFromParts:function(t){return t.scheme+t.netLoc+t.path+t.params+t.query+t.fragment}};var d=h.exports;function c(t,e){var s=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),s.push.apply(s,i)}return s}function u(t){for(var e=1;e`):L}(e)}))}const k=R,D=/^(\d+)x(\d+)$/,I=/(.+?)=(".*?"|.*?)(?:,|$)/g;class w{constructor(t){"string"==typeof t&&(t=w.parseAttrList(t)),m(this,t)}get clientAttrs(){return Object.keys(this).filter((t=>"X-"===t.substring(0,2)))}decimalInteger(t){const e=parseInt(this[t],10);return e>Number.MAX_SAFE_INTEGER?1/0:e}hexadecimalInteger(t){if(this[t]){let e=(this[t]||"0x").slice(2);e=(1&e.length?"0":"")+e;const s=new Uint8Array(e.length/2);for(let t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}decimalFloatingPoint(t){return parseFloat(this[t])}optionalFloat(t,e){const s=this[t];return s?parseFloat(s):e}enumeratedString(t){return this[t]}bool(t){return"YES"===this[t]}decimalResolution(t){const e=D.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}}static parseAttrList(t){let e;const s={};for(I.lastIndex=0;null!==(e=I.exec(t));){let t=e[2];0===t.indexOf('"')&&t.lastIndexOf('"')===t.length-1&&(t=t.slice(1,-1));s[e[1].trim()]=t}return s}}function C(t){return"SCTE35-OUT"===t||"SCTE35-IN"===t}class _{constructor(t,e){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,e){const s=e.attr;for(const e in s)if(Object.prototype.hasOwnProperty.call(t,e)&&t[e]!==s[e]){k.warn(`DATERANGE tag attribute: "${e}" does not match for tags with ID: "${t.ID}"`),this._badValueForSameId=e;break}t=m(new w({}),s,t)}if(this.attr=t,this._startDate=new Date(t["START-DATE"]),"END-DATE"in this.attr){const t=new Date(this.attr["END-DATE"]);p(t.getTime())&&(this._endDate=t)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const t=this.duration;return null!==t?new Date(this._startDate.getTime()+1e3*t):null}get duration(){if("DURATION"in this.attr){const t=this.attr.decimalFloatingPoint("DURATION");if(p(t))return t}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&p(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class x{constructor(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}}var P="audio",F="video",M="audiovideo";class O{constructor(t){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[P]:null,[F]:null,[M]:null},this.baseurl=t}setByteRange(t,e){const s=t.split("@",2);let i;i=1===s.length?(null==e?void 0:e.byteRangeEndOffset)||0:parseInt(s[1]),this._byteRange=[i,parseInt(s[0])+i]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=d.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(t){this._url=t}}class N extends O{constructor(t,e){super(e),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new x,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=t}get decryptdata(){const{levelkeys:t}=this;if(!t&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const t=this.levelkeys.identity;if(t)this._decryptdata=t.getDecryptData(this.sn);else{const t=Object.keys(this.levelkeys);if(1===t.length)return this._decryptdata=this.levelkeys[t[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!p(this.programDateTime))return null;const t=p(this.duration)?this.duration:0;return this.programDateTime+1e3*t}get encrypted(){var t;if(null!=(t=this._decryptdata)&&t.encrypted)return!0;if(this.levelkeys){const t=Object.keys(this.levelkeys),e=t.length;if(e>1||1===e&&this.levelkeys[t[0]].encrypted)return!0}return!1}setKeyFormat(t){if(this.levelkeys){const e=this.levelkeys[t];e&&!this._decryptdata&&(this._decryptdata=e.getDecryptData(this.sn))}}abortRequests(){var t,e;null==(t=this.loader)||t.abort(),null==(e=this.keyLoader)||e.abort()}setElementaryStreamInfo(t,e,s,i,r,n=!1){const{elementaryStreams:a}=this,o=a[t];o?(o.startPTS=Math.min(o.startPTS,e),o.endPTS=Math.max(o.endPTS,s),o.startDTS=Math.min(o.startDTS,i),o.endDTS=Math.max(o.endDTS,r)):a[t]={startPTS:e,endPTS:s,startDTS:i,endDTS:r,partial:n}}clearElementaryStreamInfo(){const{elementaryStreams:t}=this;t[P]=null,t[F]=null,t[M]=null}}class U extends O{constructor(t,e,s,i,r){super(s),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new x,this.duration=t.decimalFloatingPoint("DURATION"),this.gap=t.bool("GAP"),this.independent=t.bool("INDEPENDENT"),this.relurl=t.enumeratedString("URI"),this.fragment=e,this.index=i;const n=t.enumeratedString("BYTERANGE");n&&this.setByteRange(n,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:t}=this;return!!(t.audio||t.video||t.audiovideo)}}class B{constructor(t){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=t}reloaded(t){if(!t)return this.advanced=!0,void(this.updated=!0);const e=this.lastPartSn-t.lastPartSn,s=this.lastPartIndex-t.lastPartIndex;this.updated=this.endSN!==t.endSN||!!s||!!e||!this.live,this.advanced=this.endSN>t.endSN||e>0||0===e&&s>0,this.updated||this.advanced?this.misses=Math.floor(.6*t.misses):this.misses=t.misses+1,this.availabilityDelay=t.availabilityDelay}get hasProgramDateTime(){return!!this.fragments.length&&p(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const t=this.driftEndTime-this.driftStartTime;if(t>0){return 1e3*(this.driftEnd-this.driftStart)/t}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var t;return null!=(t=this.fragments)&&t.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function $(t){return Uint8Array.from(atob(t),(t=>t.charCodeAt(0)))}function G(t){const e=t.split(":");let s=null;if("data"===e[0]&&2===e.length){const t=e[1].split(";"),i=t[t.length-1].split(",");if(2===i.length){const e="base64"===i[0],r=i[1];e?(t.splice(-1,1),s=$(r)):s=function(t){const e=K(t).subarray(0,16),s=new Uint8Array(16);return s.set(e,16-e.length),s}(r)}}return s}function K(t){return Uint8Array.from(unescape(encodeURIComponent(t)),(t=>t.charCodeAt(0)))}const H="undefined"!=typeof self?self:void 0;var V={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},Y="org.w3.clearkey",W="com.apple.streamingkeydelivery",j="com.microsoft.playready",q="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function X(t){switch(t){case W:return V.FAIRPLAY;case j:return V.PLAYREADY;case q:return V.WIDEVINE;case Y:return V.CLEARKEY}}var z="1077efecc0b24d02ace33c1e52e2fb4b",Q="e2719d58a985b3c9781ab030af78d30e",J="9a04f07998404286ab92e65be0885f95",Z="edef8ba979d64acea3c827dcd51d21ed";function tt(t){return t===Z?V.WIDEVINE:t===J?V.PLAYREADY:t===z||t===Q?V.CLEARKEY:void 0}function et(t){switch(t){case V.FAIRPLAY:return W;case V.PLAYREADY:return j;case V.WIDEVINE:return q;case V.CLEARKEY:return Y}}function st(t){const{drmSystems:e,widevineLicenseUrl:s}=t,i=e?[V.FAIRPLAY,V.WIDEVINE,V.PLAYREADY,V.CLEARKEY].filter((t=>!!e[t])):[];return!i[V.WIDEVINE]&&s&&i.push(V.WIDEVINE),i}const it=null!=H&&null!=(rt=H.navigator)&&rt.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var rt;function nt(t,e,s){return Uint8Array.prototype.slice?t.slice(e,s):new Uint8Array(Array.prototype.slice.call(t,e,s))}const at=(t,e)=>e+10<=t.length&&73===t[e]&&68===t[e+1]&&51===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128,ot=(t,e)=>e+10<=t.length&&51===t[e]&&68===t[e+1]&&73===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128,lt=(t,e)=>{const s=e;let i=0;for(;at(t,e);){i+=10;i+=ht(t,e+6),ot(t,e+10)&&(i+=10),e+=i}if(i>0)return t.subarray(s,s+i)},ht=(t,e)=>{let s=0;return s=(127&t[e])<<21,s|=(127&t[e+1])<<14,s|=(127&t[e+2])<<7,s|=127&t[e+3],s},dt=(t,e)=>at(t,e)&&ht(t,e+6)+10<=t.length-e,ct=t=>{const e=gt(t);for(let t=0;tt&&"PRIV"===t.key&&"com.apple.streaming.transportStreamTimestamp"===t.info,ft=t=>{const e=String.fromCharCode(t[0],t[1],t[2],t[3]),s=ht(t,4);return{type:e,size:s,data:t.subarray(10,10+s)}},gt=t=>{let e=0;const s=[];for(;at(t,e);){const i=ht(t,e+6);e+=10;const r=e+i;for(;e+8"PRIV"===t.type?pt(t):"W"===t.type[0]?yt(t):vt(t),pt=t=>{if(t.size<2)return;const e=Et(t.data,!0),s=new Uint8Array(t.data.subarray(e.length+1));return{key:t.type,info:e,data:s.buffer}},vt=t=>{if(t.size<2)return;if("TXXX"===t.type){let e=1;const s=Et(t.data.subarray(e),!0);e+=s.length+1;const i=Et(t.data.subarray(e));return{key:t.type,info:s,data:i}}const e=Et(t.data.subarray(1));return{key:t.type,data:e}},yt=t=>{if("WXXX"===t.type){if(t.size<2)return;let e=1;const s=Et(t.data.subarray(e),!0);e+=s.length+1;const i=Et(t.data.subarray(e));return{key:t.type,info:s,data:i}}const e=Et(t.data);return{key:t.type,data:e}},Tt=t=>{if(8===t.data.byteLength){const e=new Uint8Array(t.data),s=1&e[3];let i=(e[4]<<23)+(e[5]<<15)+(e[6]<<7)+e[7];return i/=45,s&&(i+=47721858.84),Math.round(i)}},Et=(t,e=!1)=>{const s=Lt();if(s){const i=s.decode(t);if(e){const t=i.indexOf("\0");return-1!==t?i.substring(0,t):i}return i.replace(/\0/g,"")}const i=t.length;let r,n,a,o="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(r);break;case 12:case 13:n=t[l++],o+=String.fromCharCode((31&r)<<6|63&n);break;case 14:n=t[l++],a=t[l++],o+=String.fromCharCode((15&r)<<12|(63&n)<<6|(63&a)<<0)}}return o};let St;function Lt(){if(!navigator.userAgent.includes("PlayStation 4"))return St||void 0===self.TextDecoder||(St=new self.TextDecoder("utf-8")),St}const At=function(t){let e="";for(let s=0;s>24,t[e+1]=s>>16&255,t[e+2]=s>>8&255,t[e+3]=255&s}function Pt(t,e){const s=[];if(!e.length)return s;const i=t.byteLength;for(let r=0;r1?r+n:i;if(Dt(t.subarray(r+4,r+8))===e[0])if(1===e.length)s.push(t.subarray(r+8,a));else{const i=Pt(t.subarray(r+8,a),e.slice(1));i.length&&bt.apply(s,i)}r=a}return s}function Ft(t){const e=[],s=t[0];let i=8;const r=wt(t,i);i+=4;let n=0,a=0;0===s?(n=wt(t,i),a=wt(t,i+4),i+=8):(n=Ct(t,i),a=Ct(t,i+8),i+=16),i+=2;let o=t.length+a;const l=It(t,i);i+=2;for(let s=0;s>>31)return k.warn("SIDX has hierarchical references (not supported)"),null;const l=wt(t,s);s+=4,e.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/r,start:o,end:o+a-1}}),o+=a,s+=4,i=s}return{earliestPresentationTime:n,timescale:r,version:s,referencesCount:l,references:e}}function Mt(t){const e=[],s=Pt(t,["moov","trak"]);for(let t=0;t{const s=wt(t,4),i=e[s];i&&(i.default={duration:wt(t,12),flags:wt(t,20)})})),e}function Ot(t){const e=t.subarray(8),s=e.subarray(86),i=Dt(e.subarray(4,8));let r=i;const n="enca"===i||"encv"===i;if(n){const t=Pt(e,[i])[0];Pt(t.subarray("enca"===i?28:78),["sinf"]).forEach((t=>{const e=Pt(t,["schm"])[0];if(e){const s=Dt(e.subarray(4,8));if("cbcs"===s||"cenc"===s){const e=Pt(t,["frma"])[0];e&&(r=Dt(e))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const t=Pt(s,["avcC"])[0];r+="."+Ut(t[1])+Ut(t[2])+Ut(t[3]);break}case"mp4a":{const t=Pt(e,[i])[0],s=Pt(t.subarray(28),["esds"])[0];if(s&&s.length>12){let t=4;if(3!==s[t++])break;t=Nt(s,t),t+=2;const e=s[t++];if(128&e&&(t+=2),64&e&&(t+=s[t++]),4!==s[t++])break;t=Nt(s,t);const i=s[t++];if(64!==i)break;if(r+="."+Ut(i),t+=12,5!==s[t++])break;t=Nt(s,t);const n=s[t++];let a=(248&n)>>3;31===a&&(a+=1+((7&n)<<3)+((224&s[t])>>5)),r+="."+a}break}case"hvc1":case"hev1":{const t=Pt(s,["hvcC"])[0],e=t[1],i=["","A","B","C"][e>>6],n=31&e,a=wt(t,2),o=(32&e)>>5?"H":"L",l=t[12],h=t.subarray(6,12);r+="."+i+n,r+="."+a.toString(16).toUpperCase(),r+="."+o+l;let d="";for(let t=h.length;t--;){const e=h[t];if(e||d){d="."+e.toString(16).toUpperCase()+d}}r+=d;break}case"dvh1":case"dvhe":{const t=Pt(s,["dvcC"])[0],e=t[2]>>1&127,i=t[2]<<5&32|t[3]>>3&31;r+="."+Bt(e)+"."+Bt(i);break}case"vp09":{const t=Pt(s,["vpcC"])[0],e=t[4],i=t[5],n=t[6]>>4&15;r+="."+Bt(e)+"."+Bt(i)+"."+Bt(n);break}case"av01":{const t=Pt(s,["av1C"])[0],e=t[1]>>>5,i=31&t[1],n=t[2]>>>7?"H":"M",a=(64&t[2])>>6,o=(32&t[2])>>5,l=2===e&&a?o?12:10:a?10:8,h=(16&t[2])>>4,d=(8&t[2])>>3,c=(4&t[2])>>2,u=3&t[2],f=1,g=1,m=1,p=0;r+="."+e+"."+Bt(i)+n+"."+Bt(l)+"."+h+"."+d+c+u+"."+Bt(f)+"."+Bt(g)+"."+Bt(m)+"."+p;break}}return{codec:r,encrypted:n}}function Nt(t,e){const s=e+5;for(;128&t[e++]&&e{const l=o.byteOffset-8;Pt(o,["traf"]).map((o=>{const h=Pt(o,["tfdt"]).map((t=>{const e=t[0];let s=wt(t,4);return 1===e&&(s*=Math.pow(2,32),s+=wt(t,8)),s/r}))[0];return void 0!==h&&(t=h),Pt(o,["tfhd"]).map((h=>{const d=wt(h,4),c=16777215&wt(h,0);let u=0;const f=0!=(16&c);let g=0;const m=0!=(32&c);let p=8;d===n&&(0!=(1&c)&&(p+=8),0!=(2&c)&&(p+=4),0!=(8&c)&&(u=wt(h,p),p+=4),f&&(g=wt(h,p),p+=4),m&&(p+=4),"video"===e.type&&(a=function(t){if(!t)return!1;const e=t.indexOf("."),s=e<0?t:t.substring(0,e);return"hvc1"===s||"hev1"===s||"dvh1"===s||"dvhe"===s}(e.codec)),Pt(o,["trun"]).map((n=>{const o=n[0],h=16777215&wt(n,0),d=0!=(1&h);let c=0;const f=0!=(4&h),m=0!=(256&h);let p=0;const v=0!=(512&h);let y=0;const T=0!=(1024&h),E=0!=(2048&h);let S=0;const L=wt(n,4);let A=8;d&&(c=wt(n,A),A+=4),f&&(A+=4);let R=c+l;for(let l=0;l>1&63;return 39===t||40===t}return 6===(31&e)}function Yt(t,e,s,i){const r=Wt(t);let n=0;n+=e;let a=0,o=0,l=0;for(;n=r.length)break;l=r[n++],a+=l}while(255===l);o=0;do{if(n>=r.length)break;l=r[n++],o+=l}while(255===l);const t=r.length-n;let e=n;if(ot){k.error(`Malformed SEI payload. ${o} is too small, only ${t} bytes left to parse.`);break}if(4===a){if(181===r[e++]){const t=It(r,e);if(e+=2,49===t){const t=wt(r,e);if(e+=4,1195456820===t){const t=r[e++];if(3===t){const n=r[e++],o=64&n,l=o?2+3*(31&n):0,h=new Uint8Array(l);if(o){h[0]=n;for(let t=1;t16){const t=[];for(let s=0;s<16;s++){const i=r[e++].toString(16);t.push(1==i.length?"0"+i:i),3!==s&&5!==s&&7!==s&&9!==s||t.push("-")}const n=o-16,l=new Uint8Array(n);for(let t=0;t0?(n=new Uint8Array(4),e.length>0&&new DataView(n.buffer).setUint32(0,e.length,!1)):n=new Uint8Array;const a=new Uint8Array(4);return s&&s.byteLength>0&&new DataView(a.buffer).setUint32(0,s.byteLength,!1),function(t,...e){const s=e.length;let i=8,r=s;for(;r--;)i+=e[r].byteLength;const n=new Uint8Array(i);for(n[0]=i>>24&255,n[1]=i>>16&255,n[2]=i>>8&255,n[3]=255&i,n.set(t,4),r=0,i=8;r>>24;if(0!==r&&1!==r)return{offset:s,size:e};const n=t.buffer,a=At(new Uint8Array(n,s+12,16)),o=t.getUint32(28);let l=null,h=null;if(0===r){if(e-32>8*(15-s)&255;return e}(t);return new zt(this.method,this.uri,"identity",this.keyFormatVersions,e)}const e=G(this.uri);if(e)switch(this.keyFormat){case q:this.pssh=e,e.length>=22&&(this.keyId=e.subarray(e.length-22,e.length-6));break;case j:{const t=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=jt(t,null,e);const s=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2),i=String.fromCharCode.apply(null,Array.from(s)),r=i.substring(i.indexOf("<"),i.length),n=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(n){const t=n.childNodes[0]?n.childNodes[0].nodeValue:n.getAttribute("VALUE");if(t){const e=$(t).subarray(0,16);!function(t){const e=function(t,e,s){const i=t[e];t[e]=t[s],t[s]=i};e(t,0,3),e(t,1,2),e(t,4,5),e(t,6,7)}(e),this.keyId=e}}break}default:{let t=e.subarray(0,16);if(16!==t.length){const e=new Uint8Array(16);e.set(t,16-t.length),t=e}this.keyId=t;break}}if(!this.keyId||16!==this.keyId.byteLength){let t=Xt[this.uri];if(!t){const e=Object.keys(Xt).length%Number.MAX_SAFE_INTEGER;t=new Uint8Array(16);new DataView(t.buffer,12,4).setUint32(0,e),Xt[this.uri]=t}this.keyId=t}return this}}const Qt=/\{\$([a-zA-Z0-9-_]+)\}/g;function Jt(t){return Qt.test(t)}function Zt(t,e,s){if(null!==t.variableList||t.hasVariableRefs)for(let i=s.length;i--;){const r=s[i],n=e[r];n&&(e[r]=te(t,n))}}function te(t,e){if(null!==t.variableList||t.hasVariableRefs){const s=t.variableList;return e.replace(Qt,(e=>{const i=e.substring(2,e.length-1),r=null==s?void 0:s[i];return void 0===r?(t.playlistParsingError||(t.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${i}"`)),e):r}))}return e}function ee(t,e,s){let i,r,n=t.variableList;if(n||(t.variableList=n={}),"QUERYPARAM"in e){i=e.QUERYPARAM;try{const t=new self.URL(s).searchParams;if(!t.has(i))throw new Error(`"${i}" does not match any query parameter in URI: "${s}"`);r=t.get(i)}catch(e){t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${e.message}`))}}else i=e.NAME,r=e.VALUE;i in n?t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${i}"`)):n[i]=r||""}function se(t,e,s){const i=e.IMPORT;if(s&&i in s){let e=t.variableList;e||(t.variableList=e={}),e[i]=s[i]}else t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${i}"`))}function ie(t=!0){if("undefined"==typeof self)return;return(t||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const re={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function ne(t,e,s=!0){return!t.split(",").some((t=>!ae(t,e,s)))}function ae(t,e,s=!0){var i;const r=ie(s);return null!=(i=null==r?void 0:r.isTypeSupported(oe(t,e)))&&i}function oe(t,e){return`${e}/mp4;codecs="${t}"`}function le(t){if(t){const e=t.substring(0,4);return re.video[e]}return 2}function he(t){return t.split(",").reduce(((t,e)=>{const s=re.video[e];return s?(2*s+t)/(t?3:2):(re.audio[e]+t)/(t?2:1)}),0)}const de={};const ce=/flac|opus/i;function ue(t,e=!0){return t.replace(ce,(t=>function(t,e=!0){if(de[t])return de[t];const s={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[t];for(let i=0;i0&&i.length({id:t.attrs.AUDIO,audioCodec:t.audioCodec}))),SUBTITLES:n.map((t=>({id:t.attrs.SUBTITLES,textCodec:t.textCodec}))),"CLOSED-CAPTIONS":[]};let o=0;for(me.lastIndex=0;null!==(i=me.exec(t));){const t=new w(i[1]),n=t.TYPE;if(n){const i=a[n],l=r[n]||[];r[n]=l,Zt(s,t,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const h=t.LANGUAGE,d=t["ASSOC-LANGUAGE"],c=t.CHANNELS,u=t.CHARACTERISTICS,f=t["INSTREAM-ID"],g={attrs:t,bitrate:0,id:o++,groupId:t["GROUP-ID"]||"",name:t.NAME||h||"",type:n,default:t.bool("DEFAULT"),autoselect:t.bool("AUTOSELECT"),forced:t.bool("FORCED"),lang:h,url:t.URI?Te.resolve(t.URI,e):""};if(d&&(g.assocLang=d),c&&(g.channels=c),u&&(g.characteristics=u),f&&(g.instreamId=f),null!=i&&i.length){const t=Te.findGroup(i,g.groupId)||i[0];Ae(g,t,"audioCodec"),Ae(g,t,"textCodec")}l.push(g)}}return r}static parseLevelPlaylist(t,e,s,i,r,n){const a=new B(e),o=a.fragments;let l,h,d,c=null,u=0,f=0,g=0,v=0,y=null,T=new N(i,e),E=-1,S=!1,L=null;for(ve.lastIndex=0,a.m3u8=t,a.hasVariableRefs=Jt(t);null!==(l=ve.exec(t));){S&&(S=!1,T=new N(i,e),T.start=g,T.sn=u,T.cc=v,T.level=s,c&&(T.initSegment=c,T.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,L&&(T.setByteRange(L),L=null)));const t=l[1];if(t){T.duration=parseFloat(t);const e=(" "+l[2]).slice(1);T.title=e||null,T.tagList.push(e?["INF",t,e]:["INF",t])}else if(l[3]){if(p(T.duration)){T.start=g,d&&ke(T,d,a),T.sn=u,T.level=s,T.cc=v,o.push(T);const t=(" "+l[3]).slice(1);T.relurl=te(a,t),Re(T,y),y=T,g+=T.duration,u++,f=0,S=!0}}else if(l[4]){const t=(" "+l[4]).slice(1);y?T.setByteRange(t,y):T.setByteRange(t)}else if(l[5])T.rawProgramDateTime=(" "+l[5]).slice(1),T.tagList.push(["PROGRAM-DATE-TIME",T.rawProgramDateTime]),-1===E&&(E=o.length);else{if(l=l[0].match(ye),!l){k.warn("No matches on slow regex match for level playlist!");continue}for(h=1;h0&&t.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=t.optionalFloat("PART-HOLD-BACK",0),a.holdBack=t.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const t=new w(r);a.partTarget=t.decimalFloatingPoint("PART-TARGET");break}case"PART":{let t=a.partList;t||(t=a.partList=[]);const s=f>0?t[t.length-1]:void 0,i=f++,n=new w(r);Zt(a,n,["BYTERANGE","URI"]);const o=new U(n,T,e,i,s);t.push(o),T.duration+=o.duration;break}case"PRELOAD-HINT":{const t=new w(r);Zt(a,t,["URI"]),a.preloadHint=t;break}case"RENDITION-REPORT":{const t=new w(r);Zt(a,t,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(t);break}default:k.warn(`line parsed but not handled: ${l}`)}}}y&&!y.relurl?(o.pop(),g-=y.duration,a.partList&&(a.fragmentHint=y)):a.partList&&(Re(T,y),T.cc=v,a.fragmentHint=T,d&&ke(T,d,a));const A=o.length,R=o[0],b=o[A-1];if(g+=a.skippedSegments*a.targetduration,g>0&&A&&b){a.averagetargetduration=g/A;const t=b.sn;a.endSN="initSegment"!==t?t:0,a.live||(b.endList=!0),R&&(a.startCC=R.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(g+=a.fragmentHint.duration),a.totalduration=g,a.endCC=v,E>0&&function(t,e){let s=t[e];for(let i=e;i--;){const e=t[i];if(!e)return;e.programDateTime=s.programDateTime-1e3*e.duration,s=e}}(o,E),a}}function Ee(t,e,s){var i,r;const n=new w(t);Zt(s,n,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(i=n.METHOD)?i:"",o=n.URI,l=n.hexadecimalInteger("IV"),h=n.KEYFORMATVERSIONS,d=null!=(r=n.KEYFORMAT)?r:"identity";o&&n.IV&&!l&&k.error(`Invalid IV: ${n.IV}`);const c=o?Te.resolve(o,e):"",u=(h||"1").split("/").map(Number).filter(Number.isFinite);return new zt(a,c,d,u,l)}function Se(t){const e=new w(t).decimalFloatingPoint("TIME-OFFSET");return p(e)?e:null}function Le(t,e){let s=(t||"").split(/[ ,]+/).filter((t=>t));["video","audio","text"].forEach((t=>{const i=s.filter((e=>function(t,e){const s=re[e];return!!s&&!!s[t.slice(0,4)]}(e,t)));i.length&&(e[`${t}Codec`]=i.join(","),s=s.filter((t=>-1===i.indexOf(t))))})),e.unknownCodecs=s}function Ae(t,e,s){const i=e[s];i&&(t[s]=i)}function Re(t,e){t.rawProgramDateTime?t.programDateTime=Date.parse(t.rawProgramDateTime):null!=e&&e.programDateTime&&(t.programDateTime=e.endProgramDateTime),p(t.programDateTime)||(t.programDateTime=null,t.rawProgramDateTime=null)}function be(t,e,s,i){t.relurl=e.URI,e.BYTERANGE&&t.setByteRange(e.BYTERANGE),t.level=s,t.sn="initSegment",i&&(t.levelkeys=i),t.initSegment=null}function ke(t,e,s){t.levelkeys=e;const{encryptedFragments:i}=s;i.length&&i[i.length-1].levelkeys===e||!Object.keys(e).some((t=>e[t].isCommonEncryption))||i.push(t)}var De="manifest",Ie="level",we="audioTrack",Ce="subtitleTrack",_e="main",xe="audio",Pe="subtitle";function Fe(t){const{type:e}=t;switch(e){case we:return xe;case Ce:return Pe;default:return _e}}function Me(t,e){let s=t.url;return void 0!==s&&0!==s.indexOf("data:")||(s=e.url),s}class Oe{constructor(t){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=t,this.registerListeners()}startLoad(t){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.on(T.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.off(T.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(t){const e=this.hls.config,s=e.pLoader,i=e.loader,r=new(s||i)(e);return this.loaders[t.type]=r,r}getInternalLoader(t){return this.loaders[t.type]}resetInternalLoader(t){this.loaders[t]&&delete this.loaders[t]}destroyInternalLoaders(){for(const t in this.loaders){const e=this.loaders[t];e&&e.destroy(),this.resetInternalLoader(t)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(t,e){const{url:s}=e;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:De,url:s,deliveryDirectives:null})}onLevelLoading(t,e){const{id:s,level:i,pathwayId:r,url:n,deliveryDirectives:a}=e;this.load({id:s,level:i,pathwayId:r,responseType:"text",type:Ie,url:n,deliveryDirectives:a})}onAudioTrackLoading(t,e){const{id:s,groupId:i,url:r,deliveryDirectives:n}=e;this.load({id:s,groupId:i,level:null,responseType:"text",type:we,url:r,deliveryDirectives:n})}onSubtitleTrackLoading(t,e){const{id:s,groupId:i,url:r,deliveryDirectives:n}=e;this.load({id:s,groupId:i,level:null,responseType:"text",type:Ce,url:r,deliveryDirectives:n})}load(t){var e;const s=this.hls.config;let i,r=this.getInternalLoader(t);if(r){const e=r.context;if(e&&e.url===t.url&&e.level===t.level)return void k.trace("[playlist-loader]: playlist request ongoing");k.log(`[playlist-loader]: aborting previous loader for type: ${t.type}`),r.abort()}if(i=t.type===De?s.manifestLoadPolicy.default:m({},s.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(t),p(null==(e=t.deliveryDirectives)?void 0:e.part)){let e;if(t.type===Ie&&null!==t.level?e=this.hls.levels[t.level].details:t.type===we&&null!==t.id?e=this.hls.audioTracks[t.id].details:t.type===Ce&&null!==t.id&&(e=this.hls.subtitleTracks[t.id].details),e){const t=e.partTarget,s=e.targetduration;if(t&&s){const e=1e3*Math.max(3*t,.8*s);i=m({},i,{maxTimeToFirstByteMs:Math.min(e,i.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(e,i.maxTimeToFirstByteMs)})}}}const n=i.errorRetry||i.timeoutRetry||{},a={loadPolicy:i,timeout:i.maxLoadTimeMs,maxRetry:n.maxNumRetry||0,retryDelay:n.retryDelayMs||0,maxRetryDelay:n.maxRetryDelayMs||0},o={onSuccess:(t,e,s,i)=>{const r=this.getInternalLoader(s);this.resetInternalLoader(s.type);const n=t.data;0===n.indexOf("#EXTM3U")?(e.parsing.start=performance.now(),Te.isMediaPlaylist(n)?this.handleTrackOrLevelPlaylist(t,e,s,i||null,r):this.handleMasterPlaylist(t,e,s,i)):this.handleManifestParsingError(t,s,new Error("no EXTM3U delimiter"),i||null,e)},onError:(t,e,s,i)=>{this.handleNetworkError(e,s,!1,t,i)},onTimeout:(t,e,s)=>{this.handleNetworkError(e,s,!0,void 0,t)}};r.load(t,a,o)}handleMasterPlaylist(t,e,s,i){const r=this.hls,n=t.data,a=Me(t,s),o=Te.parseMasterPlaylist(n,a);if(o.playlistParsingError)return void this.handleManifestParsingError(t,s,o.playlistParsingError,i,e);const{contentSteering:l,levels:h,sessionData:d,sessionKeys:c,startTimeOffset:u,variableList:f}=o;this.variableList=f;const{AUDIO:g=[],SUBTITLES:m,"CLOSED-CAPTIONS":p}=Te.parseMasterPlaylistMedia(n,a,o);if(g.length){g.some((t=>!t.url))||!h[0].audioCodec||h[0].attrs.AUDIO||(k.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),g.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new w({}),bitrate:0,url:""}))}r.trigger(T.MANIFEST_LOADED,{levels:h,audioTracks:g,subtitles:m,captions:p,contentSteering:l,url:a,stats:e,networkDetails:i,sessionData:d,sessionKeys:c,startTimeOffset:u,variableList:f})}handleTrackOrLevelPlaylist(t,e,s,i,r){const n=this.hls,{id:a,level:o,type:l}=s,h=Me(t,s),d=p(o)?o:p(a)?a:0,c=Fe(s),u=Te.parseLevelPlaylist(t.data,h,d,c,0,this.variableList);if(l===De){const t={attrs:new w({}),bitrate:0,details:u,name:"",url:h};n.trigger(T.MANIFEST_LOADED,{levels:[t],audioTracks:[],url:h,stats:e,networkDetails:i,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}e.parsing.end=performance.now(),s.levelDetails=u,this.handlePlaylistLoaded(u,t,e,s,i,r)}handleManifestParsingError(t,e,s,i,r){this.hls.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.MANIFEST_PARSING_ERROR,fatal:e.type===De,url:t.url,err:s,error:s,reason:s.message,response:t,context:e,networkDetails:i,stats:r})}handleNetworkError(t,e,s=!1,i,r){let n=`A network ${s?"timeout":"error"+(i?" (status "+i.code+")":"")} occurred while loading ${t.type}`;t.type===Ie?n+=`: ${t.level} id: ${t.id}`:t.type!==we&&t.type!==Ce||(n+=` id: ${t.id} group-id: "${t.groupId}"`);const a=new Error(n);k.warn(`[playlist-loader]: ${n}`);let o=S.UNKNOWN,l=!1;const h=this.getInternalLoader(t);switch(t.type){case De:o=s?S.MANIFEST_LOAD_TIMEOUT:S.MANIFEST_LOAD_ERROR,l=!0;break;case Ie:o=s?S.LEVEL_LOAD_TIMEOUT:S.LEVEL_LOAD_ERROR,l=!1;break;case we:o=s?S.AUDIO_TRACK_LOAD_TIMEOUT:S.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case Ce:o=s?S.SUBTITLE_TRACK_LOAD_TIMEOUT:S.SUBTITLE_LOAD_ERROR,l=!1}h&&this.resetInternalLoader(t.type);const d={type:E.NETWORK_ERROR,details:o,fatal:l,url:t.url,loader:h,context:t,error:a,networkDetails:e,stats:r};if(i){const s=(null==e?void 0:e.url)||t.url;d.response=u({url:s,data:void 0},i)}this.hls.trigger(T.ERROR,d)}handlePlaylistLoaded(t,e,s,i,r,n){const a=this.hls,{type:o,level:l,id:h,groupId:d,deliveryDirectives:c}=i,u=Me(e,i),f=Fe(i),g="number"==typeof i.level&&f===_e?l:void 0;if(!t.fragments.length){const t=new Error("No Segments found in Playlist");return void a.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:t,reason:t.message,response:e,context:i,level:g,parent:f,networkDetails:r,stats:s})}t.targetduration||(t.playlistParsingError=new Error("Missing Target Duration"));const m=t.playlistParsingError;if(m)a.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:e,context:i,level:g,parent:f,networkDetails:r,stats:s});else switch(t.live&&n&&(n.getCacheAge&&(t.ageHeader=n.getCacheAge()||0),n.getCacheAge&&!isNaN(t.ageHeader)||(t.ageHeader=0)),o){case De:case Ie:a.trigger(T.LEVEL_LOADED,{details:t,level:g||0,id:h||0,stats:s,networkDetails:r,deliveryDirectives:c});break;case we:a.trigger(T.AUDIO_TRACK_LOADED,{details:t,id:h||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:c});break;case Ce:a.trigger(T.SUBTITLE_TRACK_LOADED,{details:t,id:h||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:c})}}}function Ne(t,e){let s;try{s=new Event("addtrack")}catch(t){s=document.createEvent("Event"),s.initEvent("addtrack",!1,!1)}s.track=t,e.dispatchEvent(s)}function Ue(t,e){const s=t.mode;if("disabled"===s&&(t.mode="hidden"),t.cues&&!t.cues.getCueById(e.id))try{if(t.addCue(e),!t.cues.getCueById(e.id))throw new Error(`addCue is failed for: ${e}`)}catch(s){k.debug(`[texttrack-utils]: ${s}`);try{const s=new self.TextTrackCue(e.startTime,e.endTime,e.text);s.id=e.id,t.addCue(s)}catch(t){k.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${t}`)}}"disabled"===s&&(t.mode=s)}function Be(t){const e=t.mode;if("disabled"===e&&(t.mode="hidden"),t.cues)for(let e=t.cues.length;e--;)t.removeCue(t.cues[e]);"disabled"===e&&(t.mode=e)}function $e(t,e,s,i){const r=t.mode;if("disabled"===r&&(t.mode="hidden"),t.cues&&t.cues.length>0){const r=function(t,e,s){const i=[],r=function(t,e){if(et[s].endTime)return-1;let i=0,r=s;for(;i<=r;){const n=Math.floor((r+i)/2);if(et[n].startTime&&i-1)for(let n=r,a=t.length;n=e&&r.endTime<=s)i.push(r);else if(r.startTime>s)return i}return i}(t.cues,e,s);for(let e=0;e{const t=Ye();try{t&&new t(0,Number.POSITIVE_INFINITY,"")}catch(t){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function qe(t,e){return t.getTime()/1e3-e}class Xe{constructor(t){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=t,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(T.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(T.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(t,e){this.media=e.media}onMediaDetaching(){this.id3Track&&(Be(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(t){const e=this.getID3Track(t.textTracks);return e.mode="hidden",e}getID3Track(t){if(this.media){for(let e=0;eje&&(i=je);i-s<=0&&(i=s+.25);for(let t=0;tt.type===Ke&&o:"video"===i?t=>t.type===Ve&&a:t=>t.type===Ke&&o||t.type===Ve&&a,$e(r,e,s,t)}}onLevelUpdated(t,{details:e}){if(!this.media||!e.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:s,id3Track:i}=this,{dateRanges:r}=e,n=Object.keys(r);if(i){const t=Object.keys(s).filter((t=>!n.includes(t)));for(let e=t.length;e--;){const r=t[e];Object.keys(s[r].cues).forEach((t=>{i.removeCue(s[r].cues[t])})),delete s[r]}}const a=e.fragments[e.fragments.length-1];if(0===n.length||!p(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const o=a.programDateTime/1e3-a.start,l=Ye();for(let t=0;t{if(e!==i.id){const s=r[e];if(s.class===i.class&&s.startDate>i.startDate&&(!t||i.startDatethis.timeupdate(),this.hls=t,this.config=t.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:t,levelDetails:e}=this;return void 0!==t.liveMaxLatencyDuration?t.liveMaxLatencyDuration:e?t.liveMaxLatencyDurationCount*e.targetduration:0}get targetLatency(){const{levelDetails:t}=this;if(null===t)return null;const{holdBack:e,partHoldBack:s,targetduration:i}=t,{liveSyncDuration:r,liveSyncDurationCount:n,lowLatencyMode:a}=this.config,o=this.hls.userConfig;let l=a&&s||e;(o.liveSyncDuration||o.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:n*i);const h=i;return l+Math.min(1*this.stallCount,h)}get liveSyncPosition(){const t=this.estimateLiveEdge(),e=this.targetLatency,s=this.levelDetails;if(null===t||null===e||null===s)return null;const i=s.edge,r=t-e-this.edgeStalled,n=i-s.totalduration,a=i-(this.config.lowLatencyMode&&s.partTarget||s.targetduration);return Math.min(Math.max(n,r),a)}get drift(){const{levelDetails:t}=this;return null===t?1:t.drift}get edgeStalled(){const{levelDetails:t}=this;if(null===t)return 0;const e=3*(this.config.lowLatencyMode&&t.partTarget||t.targetduration);return Math.max(t.age-e,0)}get forwardBufferLength(){const{media:t,levelDetails:e}=this;if(!t||!e)return 0;const s=t.buffered.length;return(s?t.buffered.end(s-1):e.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(T.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(T.ERROR,this.onError,this)}onMediaAttached(t,e){this.media=e.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(t,{details:e}){this.levelDetails=e,e.advanced&&this.timeupdate(),!e.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(t,e){var s;e.details===S.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(s=this.levelDetails)&&s.live&&k.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:t,levelDetails:e}=this;if(!t||!e)return;this.currentTime=t.currentTime;const s=this.computeLatency();if(null===s)return;this._latency=s;const{lowLatencyMode:i,maxLiveSyncPlaybackRate:r}=this.config;if(!i||1===r||!e.live)return;const n=this.targetLatency;if(null===n)return;const a=s-n;if(a.05&&this.forwardBufferLength>1){const e=Math.min(2,Math.max(1,r)),s=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;t.playbackRate=Math.min(e,Math.max(1,s))}else 1!==t.playbackRate&&0!==t.playbackRate&&(t.playbackRate=1)}estimateLiveEdge(){const{levelDetails:t}=this;return null===t?null:t.edge+t.age}computeLatency(){const t=this.estimateLiveEdge();return null===t?null:t-this.currentTime}}const Qe=["NONE","TYPE-0","TYPE-1",null];const Je=["SDR","PQ","HLG"];var Ze="",ts="YES",es="v2";function ss(t){const{canSkipUntil:e,canSkipDateRanges:s,age:i}=t;return e&&i!!t)).map((t=>t.substring(0,4))).join(","),this.addGroupId("audio",t.attrs.AUDIO),this.addGroupId("text",t.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(t){return ns(this._audioGroups,t)}hasSubtitleGroup(t){return ns(this._subtitleGroups,t)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(t,e){if(e)if("audio"===t){let t=this._audioGroups;t||(t=this._audioGroups=[]),-1===t.indexOf(e)&&t.push(e)}else if("text"===t){let t=this._subtitleGroups;t||(t=this._subtitleGroups=[]),-1===t.indexOf(e)&&t.push(e)}}get urlId(){return 0}set urlId(t){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var t;return null==(t=this.audioGroups)?void 0:t[0]}get textGroupId(){var t;return null==(t=this.subtitleGroups)?void 0:t[0]}addFallback(){}}function ns(t,e){return!(!e||!t)&&-1!==t.indexOf(e)}function as(t,e){const s=e.startPTS;if(p(s)){let i,r=0;e.sn>t.sn?(r=s-t.start,i=t):(r=t.start-s,i=e),i.duration!==r&&(i.duration=r)}else if(e.sn>t.sn){t.cc===e.cc&&t.minEndPTS?e.start=t.start+(t.minEndPTS-t.start):e.start=t.start+t.duration}else e.start=Math.max(t.start-e.duration,0)}function os(t,e,s,i,r,n){i-s<=0&&(k.warn("Fragment should have a positive duration",e),i=s+e.duration,n=r+e.duration);let a=s,o=i;const l=e.startPTS,h=e.endPTS;if(p(l)){const t=Math.abs(l-s);p(e.deltaPTS)?e.deltaPTS=Math.max(t,e.deltaPTS):e.deltaPTS=t,a=Math.max(s,l),s=Math.min(s,l),r=Math.min(r,e.startDTS),o=Math.min(i,h),i=Math.max(i,h),n=Math.max(n,e.endDTS)}const d=s-e.start;0!==e.start&&(e.start=s),e.duration=i-e.start,e.startPTS=s,e.maxStartPTS=a,e.startDTS=r,e.endPTS=i,e.minEndPTS=o,e.endDTS=n;const c=e.sn;if(!t||ct.endSN)return 0;let u;const f=c-t.startSN,g=t.fragments;for(g[f]=e,u=f;u>0;u--)as(g[u],g[u-1]);for(u=f;u=0;t--){const e=i[t].initSegment;if(e){s=e;break}}t.fragmentHint&&delete t.fragmentHint.endPTS;let r,n=0;if(function(t,e,s){const i=e.skippedSegments,r=Math.max(t.startSN,e.startSN)-e.startSN,n=(t.fragmentHint?1:0)+(i?e.endSN:Math.min(t.endSN,e.endSN))-e.startSN,a=e.startSN-t.startSN,o=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,l=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments;for(let t=r;t<=n;t++){const r=l[a+t];let n=o[t];i&&!n&&t{t.relurl&&(n=t.cc-i.cc),p(t.startPTS)&&p(t.endPTS)&&(i.start=i.startPTS=t.startPTS,i.startDTS=t.startDTS,i.maxStartPTS=t.maxStartPTS,i.endPTS=t.endPTS,i.endDTS=t.endDTS,i.minEndPTS=t.minEndPTS,i.duration=t.endPTS-t.startPTS,i.duration&&(r=i),e.PTSKnown=e.alignedSliding=!0),i.elementaryStreams=t.elementaryStreams,i.loader=t.loader,i.stats=t.stats,t.initSegment&&(i.initSegment=t.initSegment,s=t.initSegment)})),s){(e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments).forEach((t=>{var e;!t||t.initSegment&&t.initSegment.relurl!==(null==(e=s)?void 0:e.relurl)||(t.initSegment=s)}))}if(e.skippedSegments)if(e.deltaUpdateFailed=e.fragments.some((t=>!t)),e.deltaUpdateFailed){k.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let t=e.skippedSegments;t--;)e.fragments.shift();e.startSN=e.fragments[0].sn,e.startCC=e.fragments[0].cc}else e.canSkipDateRanges&&(e.dateRanges=function(t,e,s){const i=m({},t);s&&s.forEach((t=>{delete i[t]}));return Object.keys(e).forEach((t=>{const s=new _(e[t].attr,i[t]);s.isValid?i[t]=s:k.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(e[t].attr)}"`)})),i}(t.dateRanges,e.dateRanges,e.recentlyRemovedDateranges));const a=e.fragments;if(n){k.warn("discontinuity sliding from playlist, take drift into account");for(let t=0;t{e.elementaryStreams=t.elementaryStreams,e.stats=t.stats})),r?os(e,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):hs(t,e),a.length&&(e.totalduration=e.edge-a[0].start),e.driftStartTime=t.driftStartTime,e.driftStart=t.driftStart;const o=e.advancedDateTime;if(e.advanced&&o){const t=e.edge;e.driftStart||(e.driftStartTime=o,e.driftStart=t),e.driftEndTime=o,e.driftEnd=t}else e.driftEndTime=t.driftEndTime,e.driftEnd=t.driftEnd,e.advancedDateTime=t.advancedDateTime}function hs(t,e){const s=e.startSN+e.skippedSegments-t.startSN,i=t.fragments;s<0||s>=i.length||ds(e,i[s].start)}function ds(t,e){if(e){const s=t.fragments;for(let i=t.skippedSegments;i{const{details:s}=t;null!=s&&s.fragments&&s.fragments.forEach((t=>{t.level=e}))}))}function gs(t){switch(t.details){case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_TIMEOUT:case S.LEVEL_LOAD_TIMEOUT:case S.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function ms(t,e){const s=gs(e);return t.default[(s?"timeout":"error")+"Retry"]}function ps(t,e){const s="linear"===t.backoff?1:Math.pow(2,e);return Math.min(s*t.retryDelayMs,t.maxRetryDelayMs)}function vs(t){return u(u({},t),{errorRetry:null,timeoutRetry:null})}function ys(t,e,s,i){if(!t)return!1;const r=null==i?void 0:i.code,n=e499)}(r)||!!s);return t.shouldRetry?t.shouldRetry(t,e,s,i,n):n}const Ts=function(t,e){let s=0,i=t.length-1,r=null,n=null;for(;s<=i;){r=(s+i)/2|0,n=t[r];const a=e(n);if(a>0)s=r+1;else{if(!(a<0))return n;i=r-1}}return null};function Es(t,e,s=0,i=0,r=.005){let n=null;if(t){n=e[t.sn-e[0].sn+1]||null;const i=t.endDTS-s;i>0&&i<15e-7&&(s+=15e-7)}else 0===s&&0===e[0].start&&(n=e[0]);if(n&&((!t||t.level===n.level)&&0===Ss(s,i,n)||function(t,e,s){if(e&&0===e.start&&e.level0){const i=e.tagList.reduce(((t,e)=>("INF"===e[0]&&(t+=parseFloat(e[1])),t)),s);return t.start<=i}return!1}(n,t,Math.min(r,i))))return n;const a=Ts(e,Ss.bind(null,s,i));return!a||a===t&&n?n:a}function Ss(t=0,e=0,s){if(s.start<=t&&s.start+s.duration>t)return 0;const i=Math.min(e,s.duration+(s.deltaPTS?s.deltaPTS:0));return s.start+s.duration-i<=t?1:s.start-i>t&&s.start?-1:0}function Ls(t,e,s){const i=1e3*Math.min(e,s.duration+(s.deltaPTS?s.deltaPTS:0));return(s.endProgramDateTime||0)-i>t}var As=0,Rs=2,bs=3,ks=5,Ds=0,Is=1,ws=2;class Cs{constructor(t,e){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=k.log.bind(k,`${e}:`),this.warn=k.warn.bind(k,`${e}:`),this.hls=t}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(t,e,s){const i=null==e?void 0:e.renditionReports;if(i){let r=-1;for(let s=0;s=0&&t>e.partTarget&&(a+=1)}const o=s&&ss(s);return new is(n,a>=0?a:void 0,o)}}}loadPlaylist(t){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(t){return this.canLoad&&!!t&&!!t.url&&(!t.details||t.details.live)}shouldReloadPlaylist(t){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(t)}playlistLoaded(t,e,s){const{details:i,stats:r}=e,n=self.performance.now(),a=r.loading.first?Math.max(0,n-r.loading.first):0;if(i.advancedDateTime=Date.now()-a,i.live||null!=s&&s.live){if(i.reloaded(s),s&&this.log(`live playlist ${t} ${i.advanced?"REFRESHED "+i.lastPartSn+"-"+i.lastPartIndex:i.updated?"UPDATED":"MISSED"}`),s&&i.fragments.length>0&&ls(s,i),!this.canLoad||!i.live)return;let a,o,l;if(i.canBlockReload&&i.endSN&&i.advanced){const t=this.hls.config.lowLatencyMode,r=i.lastPartSn,n=i.endSN,h=i.lastPartIndex,d=r===n;-1!==h?(o=d?n+1:r,l=d?t?0:h:h+1):o=n+1;const c=i.age,u=c+i.ageHeader;let f=Math.min(u-i.partTarget,1.5*i.targetduration);if(f>0){if(s&&f>s.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${s.tuneInGoal} to: ${f} with playlist age: ${i.age}`),f=0;else{const t=Math.floor(f/i.targetduration);if(o+=t,void 0!==l){l+=Math.round(f%i.targetduration/i.partTarget)}this.log(`CDN Tune-in age: ${i.ageHeader}s last advanced ${c.toFixed(2)}s goal: ${f} skip sn ${t} to part ${l}`)}i.tuneInGoal=f}if(a=this.getDeliveryDirectives(i,e.deliveryDirectives,o,l),t||!d)return void this.loadPlaylist(a)}else(i.canBlockReload||i.canSkipUntil)&&(a=this.getDeliveryDirectives(i,e.deliveryDirectives,o,l));const h=this.hls.mainForwardBufferInfo,d=h?h.end-h.len:0,c=function(t,e=1/0){let s=1e3*t.targetduration;if(t.updated){const i=t.fragments,r=4;if(i.length&&s*r>e){const t=1e3*i[i.length-1].duration;tthis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==o&&i.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*i.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(t,e,s,i){let r=ss(t);return null!=e&&e.skip&&t.deltaUpdateFailed&&(s=e.msn,i=e.part,r=Ze),new is(s,i,r)}checkRetry(t){const e=t.details,s=gs(t),i=t.errorAction,{action:r,retryCount:n=0,retryConfig:a}=i||{},o=!!i&&!!a&&(r===ks||!i.resolved&&r===Rs);if(o){var l;if(this.requestScheduled=-1,n>=a.maxNumRetry)return!1;if(s&&null!=(l=t.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${e}" without delivery-directives`),this.loadPlaylist();else{const t=ps(a,n);this.timer=self.setTimeout((()=>this.loadPlaylist()),t),this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${e}" in ${t}ms`)}t.levelRetry=!0,i.resolved=!0}return o}}class _s{constructor(t,e=0,s=0){this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=t,this.alpha_=t?Math.exp(Math.log(.5)/t):0,this.estimate_=e,this.totalWeight_=s}sample(t,e){const s=Math.pow(this.alpha_,t);this.estimate_=e*(1-s)+s*this.estimate_,this.totalWeight_+=t}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const t=1-Math.pow(this.alpha_,this.totalWeight_);if(t)return this.estimate_/t}return this.estimate_}}class xs{constructor(t,e,s,i=100){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=s,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new _s(t),this.fast_=new _s(e),this.defaultTTFB_=i,this.ttfb_=new _s(t)}update(t,e){const{slow_:s,fast_:i,ttfb_:r}=this;s.halfLife!==t&&(this.slow_=new _s(t,s.getEstimate(),s.getTotalWeight())),i.halfLife!==e&&(this.fast_=new _s(e,i.getEstimate(),i.getTotalWeight())),r.halfLife!==t&&(this.ttfb_=new _s(t,r.getEstimate(),r.getTotalWeight()))}sample(t,e){const s=(t=Math.max(t,this.minDelayMs_))/1e3,i=8*e/s;this.fast_.sample(s,i),this.slow_.sample(s,i)}sampleTTFB(t){const e=t/1e3,s=Math.sqrt(2)*Math.exp(-Math.pow(e,2)/2);this.ttfb_.sample(s,Math.max(t,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const Ps={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},Fs={};function Ms(t,e,s,i,r,n){const a=t.audioCodec?t.audioGroups:null,o=null==n?void 0:n.audioCodec,l=null==n?void 0:n.channels,h=l?parseInt(l):o?1/0:2;let d=null;if(null!=a&&a.length)try{d=1===a.length&&a[0]?e.groups[a[0]].channels:a.reduce(((t,s)=>{if(s){const i=e.groups[s];if(!i)throw new Error(`Audio track group ${s} not found`);Object.keys(i.channels).forEach((e=>{t[e]=(t[e]||0)+i.channels[e]}))}return t}),{2:0})}catch(t){return!0}return void 0!==t.videoCodec&&(t.width>1920&&t.height>1088||t.height>1920&&t.width>1088||t.frameRate>Math.max(i,30)||"SDR"!==t.videoRange&&t.videoRange!==s||t.bitrate>Math.max(r,8e6))||!!d&&p(h)&&Object.keys(d).some((t=>parseInt(t)>h))}function Os(t,e,s){const i=t.videoCodec,r=t.audioCodec;if(!i||!r||!s)return Promise.resolve(Ps);const n={width:t.width,height:t.height,bitrate:Math.ceil(Math.max(.9*t.bitrate,t.averageBitrate)),framerate:t.frameRate||30},a=t.videoRange;"SDR"!==a&&(n.transferFunction=a.toLowerCase());const o=i.split(",").map((t=>({type:"media-source",video:u(u({},n),{},{contentType:oe(t,"video")})})));return r&&t.audioGroups&&t.audioGroups.forEach((t=>{var s;t&&(null==(s=e.groups[t])||s.tracks.forEach((e=>{if(e.groupId===t){const t=e.channels||"",s=parseFloat(t);p(s)&&s>2&&o.push.apply(o,r.split(",").map((t=>({type:"media-source",audio:{contentType:oe(t,"audio"),channels:""+s}}))))}})))})),Promise.all(o.map((t=>{const e=function(t){const{audio:e,video:s}=t,i=s||e;if(i){const t=i.contentType.split('"')[1];if(s)return`r${s.height}x${s.width}f${Math.ceil(s.framerate)}${s.transferFunction||"sd"}_${t}_${Math.ceil(s.bitrate/1e5)}`;if(e)return`c${e.channels}${e.spatialRendering?"s":"n"}_${t}`}return""}(t);return Fs[e]||(Fs[e]=s.decodingInfo(t))}))).then((t=>({supported:!t.some((t=>!t.supported)),configurations:o,decodingInfoResults:t}))).catch((t=>({supported:!1,configurations:o,decodingInfoResults:[],error:t})))}function Ns(t,e){let s=!1,i=[];return t&&(s="SDR"!==t,i=[t]),e&&(i=e.allowedVideoRanges||Je.slice(0),s=void 0!==e.preferHDR?e.preferHDR:function(){if("function"==typeof matchMedia){const t=matchMedia("(dynamic-range: high)"),e=matchMedia("bad query");if(t.media!==e.media)return!0===t.matches}return!1}(),i=s?i.filter((t=>"SDR"!==t)):["SDR"]),{preferHDR:s,allowedVideoRanges:i}}function Us(t,e){k.log(`[abr] start candidates with "${t}" ignored because ${e}`)}function Bs(t,e,s){if("attrs"in t){const s=e.indexOf(t);if(-1!==s)return s}for(let i=0;i-1===i.indexOf(t)))}(o,e.characteristics))&&(void 0===s||s(t,e))}function Gs(t,e){const{audioCodec:s,channels:i}=t;return!(void 0!==s&&(e.audioCodec||"").substring(0,4)!==s.substring(0,4)||void 0!==i&&i!==(e.channels||"2"))}function Ks(t,e,s){for(let i=e;i;i--)if(s(t[i]))return i;for(let i=e+1;i1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}var Vs="NOT_LOADED",Ys="APPENDING",Ws="PARTIAL",js="OK";class qs{constructor(t){this.activePartLists=Object.create(null),this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hasGaps=!1,this.hls=t,this._registerListeners()}_registerListeners(){const{hls:t}=this;t.on(T.BUFFER_APPENDED,this.onBufferAppended,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.BUFFER_APPENDED,this.onBufferAppended,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this)}destroy(){this._unregisterListeners(),this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null}getAppendedFrag(t,e){const s=this.activePartLists[e];if(s)for(let e=s.length;e--;){const i=s[e];if(!i)break;const r=i.end;if(i.start<=t&&null!==r&&t<=r)return i}return this.getBufferedFrag(t,e)}getBufferedFrag(t,e){const{fragments:s}=this,i=Object.keys(s);for(let r=i.length;r--;){const n=s[i[r]];if((null==n?void 0:n.body.type)===e&&n.buffered){const e=n.body;if(e.start<=t&&t<=e.end)return e}}return null}detectEvictedFragments(t,e,s,i){this.timeRanges&&(this.timeRanges[t]=e);const r=(null==i?void 0:i.fragment.sn)||-1;Object.keys(this.fragments).forEach((i=>{const n=this.fragments[i];if(!n)return;if(r>=n.body.sn)return;if(!n.buffered&&!n.loaded)return void(n.body.type===s&&this.removeFragment(n.body));const a=n.range[t];a&&a.time.some((t=>{const s=!this.isTimeBuffered(t.startPTS,t.endPTS,e);return s&&this.removeFragment(n.body),s}))}))}detectPartialFragments(t){const e=this.timeRanges,{frag:s,part:i}=t;if(!e||"initSegment"===s.sn)return;const r=zs(s),n=this.fragments[r];if(!n||n.buffered&&s.gap)return;const a=!s.relurl;if(Object.keys(e).forEach((t=>{const r=s.elementaryStreams[t];if(!r)return;const o=e[t],l=a||!0===r.partial;n.range[t]=this.getBufferedTimes(s,i,l,o)})),n.loaded=null,Object.keys(n.range).length){n.buffered=!0;(n.body.endList=s.endList||n.body.endList)&&(this.endListFragments[n.body.type]=n),Xs(n)||this.removeParts(s.sn-1,s.type)}else this.removeFragment(n.body)}removeParts(t,e){const s=this.activePartLists[e];s&&(this.activePartLists[e]=s.filter((e=>e.fragment.sn>=t)))}fragBuffered(t,e){const s=zs(t);let i=this.fragments[s];!i&&e&&(i=this.fragments[s]={body:t,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},t.gap&&(this.hasGaps=!0)),i&&(i.loaded=null,i.buffered=!0)}getBufferedTimes(t,e,s,i){const r={time:[],partial:s},n=t.start,a=t.end,o=t.minEndPTS||a,l=t.maxStartPTS||n;for(let t=0;t=e&&o<=s){r.time.push({startPTS:Math.max(n,i.start(t)),endPTS:Math.min(a,i.end(t))});break}if(ne){const e=Math.max(n,i.start(t)),s=Math.min(a,i.end(t));s>e&&(r.partial=!0,r.time.push({startPTS:e,endPTS:s}))}else if(a<=e)break}return r}getPartialFragment(t){let e,s,i,r=null,n=0;const{bufferPadding:a,fragments:o}=this;return Object.keys(o).forEach((l=>{const h=o[l];h&&Xs(h)&&(s=h.body.start-a,i=h.body.end+a,t>=s&&t<=i&&(e=Math.min(t-s,i-t),n<=e&&(r=h.body,n=e)))})),r}isEndListAppended(t){const e=this.endListFragments[t];return void 0!==e&&(e.buffered||Xs(e))}getState(t){const e=zs(t),s=this.fragments[e];return s?s.buffered?Xs(s)?Ws:js:Ys:Vs}isTimeBuffered(t,e,s){let i,r;for(let n=0;n=i&&e<=r)return!0;if(e<=i)return!1}return!1}onFragLoaded(t,e){const{frag:s,part:i}=e;if("initSegment"===s.sn||s.bitrateTest)return;const r=i?null:e,n=zs(s);this.fragments[n]={body:s,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(t,e){const{frag:s,part:i,timeRanges:r}=e;if("initSegment"===s.sn)return;const n=s.type;if(i){let t=this.activePartLists[n];t||(this.activePartLists[n]=t=[]),t.push(i)}this.timeRanges=r,Object.keys(r).forEach((t=>{const e=r[t];this.detectEvictedFragments(t,e,n,i)}))}onFragBuffered(t,e){this.detectPartialFragments(e)}hasFragment(t){const e=zs(t);return!!this.fragments[e]}hasParts(t){var e;return!(null==(e=this.activePartLists[t])||!e.length)}removeFragmentsInRange(t,e,s,i,r){i&&!this.hasGaps||Object.keys(this.fragments).forEach((n=>{const a=this.fragments[n];if(!a)return;const o=a.body;o.type!==s||i&&!o.gap||o.startt&&(a.buffered||r)&&this.removeFragment(o)}))}removeFragment(t){const e=zs(t);t.stats.loaded=0,t.clearElementaryStreamInfo();const s=this.activePartLists[t.type];if(s){const e=t.sn;this.activePartLists[t.type]=s.filter((t=>t.fragment.sn!==e))}delete this.fragments[e],t.endList&&delete this.endListFragments[t.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function Xs(t){var e,s,i;return t.buffered&&(t.body.gap||(null==(e=t.range.video)?void 0:e.partial)||(null==(s=t.range.audio)?void 0:s.partial)||(null==(i=t.range.audiovideo)?void 0:i.partial))}function zs(t){return`${t.type}_${t.level}_${t.sn}`}const Qs={length:0,start:()=>0,end:()=>0};class Js{static isBuffered(t,e){try{if(t){const s=Js.getBuffered(t);for(let t=0;t=s.start(t)&&e<=s.end(t))return!0}}catch(t){}return!1}static bufferInfo(t,e,s){try{if(t){const i=Js.getBuffered(t),r=[];let n;for(n=0;nn&&(i[r-1].end=t[e].end):i.push(t[e])}else i.push(t[e])}else i=t;let r,n=0,a=e,o=e;for(let t=0;t=l&&es.startCC||t&&t.cc{if(this.loader&&this.loader.destroy(),t.gap){if(t.tagList.some((t=>"GAP"===t[0])))return void o(li(t));t.gap=!1}const l=this.loader=t.loader=r?new r(i):new n(i),h=oi(t),d=vs(i.fragLoadPolicy.default),c={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===t.sn?1/0:ni};t.stats=l.stats,l.load(h,c,{onSuccess:(e,s,i,r)=>{this.resetLoader(t,l);let n=e.data;i.resetIV&&t.decryptdata&&(t.decryptdata.iv=new Uint8Array(n.slice(0,16)),n=n.slice(16)),a({frag:t,part:null,payload:n,networkDetails:r})},onError:(e,i,r,n)=>{this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,response:u({url:s,data:void 0},e),error:new Error(`HTTP Error ${e.code} ${e.text}`),networkDetails:r,stats:n}))},onAbort:(e,s,i)=>{this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.INTERNAL_ABORTED,fatal:!1,frag:t,error:new Error("Aborted"),networkDetails:i,stats:e}))},onTimeout:(e,s,i)=>{this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:i,stats:e}))},onProgress:(s,i,r,n)=>{e&&e({frag:t,part:null,payload:r,networkDetails:n})}})}))}loadPart(t,e,s){this.abort();const i=this.config,r=i.fLoader,n=i.loader;return new Promise(((a,o)=>{if(this.loader&&this.loader.destroy(),t.gap||e.gap)return void o(li(t,e));const l=this.loader=t.loader=r?new r(i):new n(i),h=oi(t,e),d=vs(i.fragLoadPolicy.default),c={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:ni};e.stats=l.stats,l.load(h,c,{onSuccess:(i,r,n,o)=>{this.resetLoader(t,l),this.updateStatsFromPart(t,e);const h={frag:t,part:e,payload:i.data,networkDetails:o};s(h),a(h)},onError:(s,i,r,n)=>{this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,part:e,response:u({url:h.url,data:void 0},s),error:new Error(`HTTP Error ${s.code} ${s.text}`),networkDetails:r,stats:n}))},onAbort:(s,i,r)=>{t.stats.aborted=e.stats.aborted,this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.INTERNAL_ABORTED,fatal:!1,frag:t,part:e,error:new Error("Aborted"),networkDetails:r,stats:s}))},onTimeout:(s,i,r)=>{this.resetLoader(t,l),o(new hi({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t,part:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:s}))}})}))}updateStatsFromPart(t,e){const s=t.stats,i=e.stats,r=i.total;if(s.loaded+=i.loaded,r){const i=Math.round(t.duration/e.duration),n=Math.min(Math.round(s.loaded/r),i),a=(i-n)*Math.round(s.loaded/n);s.total=s.loaded+a}else s.total=Math.max(s.loaded,s.total);const n=s.loading,a=i.loading;n.start?n.first+=a.first-a.start:(n.start=a.start,n.first=a.first),n.end=a.end}resetLoader(t,e){t.loader=null,this.loader===e&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),e.destroy()}}function oi(t,e=null){const s=e||t,i={frag:t,part:e,responseType:"arraybuffer",url:s.url,headers:{},rangeStart:0,rangeEnd:0},r=s.byteRangeStartOffset,n=s.byteRangeEndOffset;if(p(r)&&p(n)){var a;let e=r,s=n;if("initSegment"===t.sn&&"AES-128"===(null==(a=t.decryptdata)?void 0:a.method)){const t=n-r;t%16&&(s=n+(16-t%16)),0!==r&&(i.resetIV=!0,e=r-16)}i.rangeStart=e,i.rangeEnd=s}return i}function li(t,e){const s=new Error(`GAP ${t.gap?"tag":"attribute"} found`),i={type:E.MEDIA_ERROR,details:S.FRAG_GAP,fatal:!1,frag:t,error:s,networkDetails:null};return e&&(i.part=e),(e||t).stats.aborted=!0,new hi(i)}class hi extends Error{constructor(t){super(t.error.message),this.data=void 0,this.data=t}}class di{constructor(t,e){this.subtle=void 0,this.aesIV=void 0,this.subtle=t,this.aesIV=e}decrypt(t,e){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},e,t)}}class ci{constructor(t,e){this.subtle=void 0,this.key=void 0,this.subtle=t,this.key=e}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class ui{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(t){const e=new DataView(t),s=new Uint32Array(4);for(let t=0;t<4;t++)s[t]=e.getUint32(4*t);return s}initTable(){const t=this.sBox,e=this.invSBox,s=this.subMix,i=s[0],r=s[1],n=s[2],a=s[3],o=this.invSubMix,l=o[0],h=o[1],d=o[2],c=o[3],u=new Uint32Array(256);let f=0,g=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let s=g^g<<1^g<<2^g<<3^g<<4;s=s>>>8^255&s^99,t[f]=s,e[s]=f;const o=u[f],m=u[o],p=u[m];let v=257*u[s]^16843008*s;i[f]=v<<24|v>>>8,r[f]=v<<16|v>>>16,n[f]=v<<8|v>>>24,a[f]=v,v=16843009*p^65537*m^257*o^16843008*f,l[s]=v<<24|v>>>8,h[s]=v<<16|v>>>16,d[s]=v<<8|v>>>24,c[s]=v,f?(f=o^u[u[u[p^o]]],g^=u[u[g]]):f=g=1}}expandKey(t){const e=this.uint8ArrayToUint32Array_(t);let s=!0,i=0;for(;i{if(!this.subtle)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new di(this.subtle,new Uint8Array(s)).decrypt(t.buffer,e)})).catch((i=>(k.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${i.name}: ${i.message}`),this.onWebCryptoError(t,e,s))))}onWebCryptoError(t,e,s){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(t,e,s);const i=this.flush();if(i)return i.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(t){let e=t;const s=t.length-t.length%16;return s!==t.length&&(e=nt(t,0,s),this.remainderData=nt(t,s)),e}logOnce(t){this.logEnabled&&(k.log(`[decrypter]: ${t}`),this.logEnabled=!1)}}const gi=function(t){let e="";const s=t.length;for(let i=0;ia.end){const t=n>r;(n{if(this.fragContextChanged(t))return this.warn(`Fragment ${t.sn}${e.part?" p: "+e.part.index:""} of level ${t.level} was dropped during download.`),void this.fragmentTracker.removeFragment(t);t.stats.chunkCount++,this._handleFragmentLoadProgress(e)})).then((e=>{if(!e)return;const s=this.state;this.fragContextChanged(t)?(s===yi||!this.fragCurrent&&s===Si)&&(this.fragmentTracker.removeFragment(t),this.state=pi):("payload"in e&&(this.log(`Loaded fragment ${t.sn} of level ${t.level}`),this.hls.trigger(T.FRAG_LOADED,e)),this._handleFragmentLoadComplete(e))})).catch((e=>{this.state!==mi&&this.state!==Ri&&(this.warn(`Frag error: ${(null==e?void 0:e.message)||e}`),this.resetFragmentLoading(t))}))}clearTrackerIfNeeded(t){var e;const{fragmentTracker:s}=this;if(s.getState(t)===Ys){const e=t.type,i=this.getFwdBufferInfo(this.mediaBuffer,e),r=Math.max(t.duration,i?i.len:this.config.maxBufferLength),n=this.backtrackFragment;(1===(n?t.sn-n.sn:0)||this.reduceMaxBufferLength(r,t.duration))&&s.removeFragment(t)}else 0===(null==(e=this.mediaBuffer)?void 0:e.buffered.length)?s.removeAllFragments():s.hasParts(t.type)&&(s.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type}),s.getState(t)===Ws&&s.removeFragment(t))}checkLiveUpdate(t){if(t.updated&&!t.live){const e=t.fragments[t.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type})}t.fragments[0]||(t.deltaUpdateFailed=!0)}flushMainBuffer(t,e,s=null){if(!(t-e))return;const i={startOffset:t,endOffset:e,type:s};this.hls.trigger(T.BUFFER_FLUSHING,i)}_loadInitSegment(t,e){this._doFragLoad(t,e).then((e=>{if(!e||this.fragContextChanged(t)||!this.levels)throw new Error("init load aborted");return e})).then((e=>{const{hls:s}=this,{payload:i}=e,r=t.decryptdata;if(i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const n=self.performance.now();return this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=self.performance.now();return s.trigger(T.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:n,tdecrypt:r}}),e.payload=i,this.completeInitSegmentLoad(e)}))}return this.completeInitSegmentLoad(e)})).catch((e=>{this.state!==mi&&this.state!==Ri&&(this.warn(e),this.resetFragmentLoading(t))}))}completeInitSegmentLoad(t){const{levels:e}=this;if(!e)throw new Error("init load aborted, missing levels");const s=t.frag.stats;this.state=pi,t.frag.data=new Uint8Array(t.payload),s.parsing.start=s.buffering.start=self.performance.now(),s.parsing.end=s.buffering.end=self.performance.now(),this.tick()}fragContextChanged(t){const{fragCurrent:e}=this;return!t||!e||t.sn!==e.sn||t.level!==e.level}fragBufferedComplete(t,e){var s,i,r,n;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${t.type} sn: ${t.sn}${e?" part: "+e.index:""} of ${this.playlistType===_e?"level":"track"} ${t.level} (frag:[${(null!=(s=t.startPTS)?s:NaN).toFixed(3)}-${(null!=(i=t.endPTS)?i:NaN).toFixed(3)}] > buffer:${a?gi(Js.getBuffered(a)):"(detached)"})`),"initSegment"!==t.sn){var o;if(t.type!==Pe){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return void(this.state=pi)}const e=null==(o=this.levels)?void 0:o[t.level];null!=e&&e.fragmentError&&(this.log(`Resetting level fragment error count of ${e.fragmentError} on frag buffered`),e.fragmentError=0)}this.state=pi,a&&(!this.loadedmetadata&&t.type==_e&&a.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(n=this.fragPrevious)?void 0:n.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(t){const{transmuxer:e}=this;if(!e)return;const{frag:s,part:i,partsLoaded:r}=t,n=!r||0===r.length||r.some((t=>!t)),a=new Zs(s.level,s.sn,s.stats.chunkCount+1,0,i?i.index:-1,!n);e.flush(a)}_handleFragmentLoadProgress(t){}_doFragLoad(t,e,s=null,i){var r;const n=null==e?void 0:e.details;if(!this.levels||!n)throw new Error(`frag load aborted, missing level${n?"":" detail"}s`);let a=null;if(!t.encrypted||null!=(r=t.decryptdata)&&r.key?!t.encrypted&&n.encryptedFragments.length&&this.keyLoader.loadClear(t,n.encryptedFragments):(this.log(`Loading key for ${t.sn} of [${n.startSN}-${n.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${t.level}`),this.state=vi,this.fragCurrent=t,a=this.keyLoader.load(t).then((t=>{if(!this.fragContextChanged(t.frag))return this.hls.trigger(T.KEY_LOADED,t),this.state===vi&&(this.state=pi),t})),this.hls.trigger(T.KEY_LOADING,{frag:t}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),s=Math.max(t.start,s||0),this.config.lowLatencyMode&&"initSegment"!==t.sn){const r=n.partList;if(r&&i){s>t.end&&n.fragmentHint&&(t=n.fragmentHint);const o=this.getNextPart(r,t,s);if(o>-1){const l=r[o];let h;return this.log(`Loading part sn: ${t.sn} p: ${l.index} cc: ${t.cc} of playlist [${n.startSN}-${n.endSN}] parts [0-${o}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${t.level}, target: ${parseFloat(s.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=yi,h=a?a.then((s=>!s||this.fragContextChanged(s.frag)?null:this.doFragPartsLoad(t,l,e,i))).catch((t=>this.handleFragLoadError(t))):this.doFragPartsLoad(t,l,e,i).catch((t=>this.handleFragLoadError(t))),this.hls.trigger(T.FRAG_LOADING,{frag:t,part:l,targetBufferTime:s}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):h}if(!t.url||this.loadedEndOfParts(r,s))return Promise.resolve(null)}}this.log(`Loading fragment ${t.sn} cc: ${t.cc} ${n?"of ["+n.startSN+"-"+n.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${t.level}, target: ${parseFloat(s.toFixed(3))}`),p(t.sn)&&!this.bitrateTest&&(this.nextLoadPosition=t.start+t.duration),this.state=yi;const o=this.config.progressive;let l;return l=o&&a?a.then((e=>!e||this.fragContextChanged(null==e?void 0:e.frag)?null:this.fragmentLoader.load(t,i))).catch((t=>this.handleFragLoadError(t))):Promise.all([this.fragmentLoader.load(t,o?i:void 0),a]).then((([t])=>(!o&&t&&i&&i(t),t))).catch((t=>this.handleFragLoadError(t))),this.hls.trigger(T.FRAG_LOADING,{frag:t,targetBufferTime:s}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(t,e,s,i){return new Promise(((r,n)=>{var a;const o=[],l=null==(a=s.details)?void 0:a.partList,h=e=>{this.fragmentLoader.loadPart(t,e,i).then((i=>{o[e.index]=i;const n=i.part;this.hls.trigger(T.FRAG_LOADED,i);const a=cs(s,t.sn,e.index+1)||us(l,t.sn,e.index+1);if(!a)return r({frag:t,part:n,partsLoaded:o});h(a)})).catch(n)};h(e)}))}handleFragLoadError(t){if("data"in t){const e=t.data;t.data&&e.details===S.INTERNAL_ABORTED?this.handleFragLoadAborted(e.frag,e.part):this.hls.trigger(T.ERROR,e)}else this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,err:t,error:t,fatal:!0});return null}_handleTransmuxerFlush(t){const e=this.getCurrentContext(t);if(!e||this.state!==Si)return void(this.fragCurrent||this.state===mi||this.state===Ri||(this.state=pi));const{frag:s,part:i,level:r}=e,n=self.performance.now();s.stats.parsing.end=n,i&&(i.stats.parsing.end=n),this.updateLevelTiming(s,i,r,t.partial)}getCurrentContext(t){const{levels:e,fragCurrent:s}=this,{level:i,sn:r,part:n}=t;if(null==e||!e[i])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${i}. The current chunk will not be buffered.`),null;const a=e[i],o=n>-1?cs(a,r,n):null,l=o?o.fragment:function(t,e,s){if(null==t||!t.details)return null;const i=t.details;let r=i.fragments[e-i.startSN];return r||(r=i.fragmentHint,r&&r.sn===e?r:en&&this.flushMainBuffer(a,t.start)}getFwdBufferInfo(t,e){const s=this.getLoadPosition();return p(s)?this.getFwdBufferInfoAtPos(t,s,e):null}getFwdBufferInfoAtPos(t,e,s){const{config:{maxBufferHole:i}}=this,r=Js.bufferInfo(t,e,i);if(0===r.len&&void 0!==r.nextStart){const n=this.fragmentTracker.getBufferedFrag(e,s);if(n&&r.nextStart=i&&(s.maxMaxBufferLength=r,this.warn(`Reduce max buffer length to ${r}s`),!0)}getAppendedFrag(t,e=_e){const s=this.fragmentTracker.getAppendedFrag(t,_e);return s&&"fragment"in s?s.fragment:s}getNextFragment(t,e){const s=e.fragments,i=s.length;if(!i)return null;const{config:r}=this,n=s[0].start;let a;if(e.live){const o=r.initialLiveManifestSize;if(ie}getNextFragmentLoopLoading(t,e,s,i,r){const n=t.gap,a=this.getNextFragment(this.nextLoadPosition,e);if(null===a)return a;if(t=a,n&&t&&!t.gap&&s.nextStart){const e=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,s.nextStart,i);if(null!==e&&s.len+e.len>=r)return this.log(`buffer full after gaps in "${i}" playlist starting at sn: ${t.sn}`),null}return t}mapToInitFragWhenRequired(t){return null==t||!t.initSegment||null!=t&&t.initSegment.data||this.bitrateTest?t:t.initSegment}getNextPart(t,e,s){let i=-1,r=!1,n=!0;for(let a=0,o=t.length;a-1&&ss.start&&s.loaded}getInitialLiveFragment(t,e){const s=this.fragPrevious;let i=null;if(s){if(t.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${s.programDateTime}`),i=function(t,e,s){if(null===e||!Array.isArray(t)||!t.length||!p(e))return null;if(e<(t[0].programDateTime||0))return null;if(e>=(t[t.length-1].endProgramDateTime||0))return null;s=s||0;for(let i=0;i=t.startSN&&r<=t.endSN){const n=e[r-t.startSN];s.cc===n.cc&&(i=n,this.log(`Live playlist, switching playlist, load frag with next SN: ${i.sn}`))}i||(i=function(t,e){return Ts(t,(t=>t.cce?-1:0))}(e,s.cc),i&&this.log(`Live playlist, switching playlist, load frag with same CC: ${i.sn}`))}}else{const e=this.hls.liveSyncPosition;null!==e&&(i=this.getFragmentAtPosition(e,this.bitrateTest?t.fragmentEnd:t.edge,t))}return i}getFragmentAtPosition(t,e,s){const{config:i}=this;let{fragPrevious:r}=this,{fragments:n,endSN:a}=s;const{fragmentHint:o}=s,{maxFragLookUpTolerance:l}=i,h=s.partList,d=!!(i.lowLatencyMode&&null!=h&&h.length&&o);let c;if(d&&o&&!this.bitrateTest&&(n=n.concat(o),a=o.sn),te-l?0:l)}else c=n[n.length-1];if(c){const t=c.sn-s.startSN,e=this.fragmentTracker.getState(c);if((e===js||e===Ws&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!d||h[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const e=n[t+1];c=c.sn=n-e.maxFragLookUpTolerance&&r<=a;if(null!==i&&s.duration>i&&(r${t.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${i}`),n}return r}waitForCdnTuneIn(t){return t.live&&t.canBlockReload&&t.partTarget&&t.tuneInGoal>Math.max(t.partHoldBack,3*t.partTarget)}setStartPosition(t,e){let s=this.startPosition;if(s ${null==(i=this.fragCurrent)?void 0:i.url}`);const r=e.details===S.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(s,!0);const n=e.errorAction,{action:a,retryCount:o=0,retryConfig:l}=n||{};if(n&&a===ks&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const i=ps(l,o);this.warn(`Fragment ${s.sn} of ${t} ${s.level} errored with ${e.details}, retrying loading ${o+1}/${l.maxNumRetry} in ${i}ms`),n.resolved=!0,this.retryDate=self.performance.now()+i,this.state=Ti}else if(l&&n){if(this.resetFragmentErrors(t),!(o.5;r&&this.reduceMaxBufferLength(i.len,(null==e?void 0:e.duration)||10);const n=!r;return n&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${s} buffer`),e&&(this.fragmentTracker.removeFragment(e),this.nextLoadPosition=e.start),this.resetLoadingState(),n}return!1}resetFragmentErrors(t){t===xe&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==mi&&(this.state=pi)}afterBufferFlushed(t,e,s){if(!t)return;const i=Js.getBuffered(t);this.fragmentTracker.detectEvictedFragments(e,i,s),this.state===Ai&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=pi}resetStartWhenNotLoaded(t){if(!this.loadedmetadata){this.startFragRequested=!1;const e=t?t.details:null;null!=e&&e.live?(this.startPosition=-1,this.setStartPosition(e,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(t){this.warn(`The loading context changed while buffering fragment ${t.sn} of level ${t.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState()}removeUnbufferedFrags(t=0){this.fragmentTracker.removeFragmentsInRange(t,1/0,this.playlistType,!1,!0)}updateLevelTiming(t,e,s,i){var r;const n=s.details;if(!n)return void this.warn("level.details undefined");if(!Object.keys(t.elementaryStreams).reduce(((e,r)=>{const a=t.elementaryStreams[r];if(a){const o=a.endPTS-a.startPTS;if(o<=0)return this.warn(`Could not parse fragment ${t.sn} ${r} duration reliably (${o})`),e||!1;const l=i?0:os(n,t,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(T.LEVEL_PTS_UPDATED,{details:n,level:s,drift:l,type:r,frag:t,start:a.startPTS,end:a.endPTS}),!0}return e}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const e=new Error(`Found no media in fragment ${t.sn} of level ${t.level} resetting transmuxer to fallback to playlist timing`);if(0===s.fragmentError&&(s.fragmentError++,t.gap=!0,this.fragmentTracker.removeFragment(t),this.fragmentTracker.fragBuffered(t,!0)),this.warn(e.message),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:e,frag:t,reason:`Found no media in msn ${t.sn} of level "${s.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=Li,this.hls.trigger(T.FRAG_PARSED,{frag:t,part:e})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(t){"demuxerWorker"===t.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(t){const e=this._state;e!==t&&(this._state=t,this.log(`${e}->${t}`))}get state(){return this._state}}class Ii{constructor(){this.chunks=[],this.dataLength=0}push(t){this.chunks.push(t),this.dataLength+=t.length}flush(){const{chunks:t,dataLength:e}=this;let s;return t.length?(s=1===t.length?t[0]:function(t,e){const s=new Uint8Array(e);let i=0;for(let e=0;e0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:i,type:Ke,duration:Number.POSITIVE_INFINITY});r{if(p(t))return 90*t;return 9e4*e+(s?9e4*s.baseTime/s.timescale:0)};function xi(t,e){return 255===t[e]&&240==(246&t[e+1])}function Pi(t,e){return 1&t[e+1]?7:9}function Fi(t,e){return(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5}function Mi(t,e){return e+1=t.length)return!1;const i=Fi(t,e);if(i<=s)return!1;const r=e+i;return r===t.length||Mi(t,r)}return!1}function Ni(t,e,s,i,r){if(!t.samplerate){const n=function(t,e,s,i){let r,n,a,o;const l=navigator.userAgent.toLowerCase(),h=i,d=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&e[s+2])>>>6);const c=(60&e[s+2])>>>2;if(!(c>d.length-1))return a=(1&e[s+2])<<2,a|=(192&e[s+3])>>>6,k.log(`manifest codec:${i}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,o=new Array(4),n=c-3):(r=2,o=new Array(2),n=c):-1!==l.indexOf("android")?(r=2,o=new Array(2),n=c):(r=5,o=new Array(4),i&&(-1!==i.indexOf("mp4a.40.29")||-1!==i.indexOf("mp4a.40.5"))||!i&&c>=6?n=c-3:((i&&-1!==i.indexOf("mp4a.40.2")&&(c>=6&&1===a||/vivaldi/i.test(l))||!i&&1===a)&&(r=2,o=new Array(2)),n=c)),o[0]=r<<3,o[0]|=(14&c)>>1,o[1]|=(1&c)<<7,o[1]|=a<<3,5===r&&(o[1]|=(14&n)>>1,o[2]=(1&n)<<7,o[2]|=8,o[3]=0),{config:o,samplerate:d[c],channelCount:a,codec:"mp4a.40."+r,manifestCodec:h};{const e=new Error(`invalid ADTS sampling index:${c}`);t.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!0,error:e,reason:e.message})}}(e,s,i,r);if(!n)return;t.config=n.config,t.samplerate=n.samplerate,t.channelCount=n.channelCount,t.codec=n.codec,t.manifestCodec=n.manifestCodec,k.log(`parsed codec:${t.codec}, rate:${n.samplerate}, channels:${n.channelCount}`)}}function Ui(t){return 9216e4/t}function Bi(t,e,s,i,r){const n=i+r*Ui(t.samplerate),a=function(t,e){const s=Pi(t,e);if(e+s<=t.length){const i=Fi(t,e)-s;if(i>0)return{headerLength:s,frameLength:i}}}(e,s);let o;if(a){const{frameLength:i,headerLength:r}=a,l=r+i,h=Math.max(0,s+l-e.length);h?(o=new Uint8Array(l-r),o.set(e.subarray(s+r,e.length),0)):o=e.subarray(s+r,s+l);const d={unit:o,pts:n};return h||t.samples.push(d),{sample:d,length:l,missing:h}}const l=e.length-s;o=new Uint8Array(l),o.set(e.subarray(s,e.length),0);return{sample:{unit:o,pts:n},length:l,missing:-1}}let $i=null;const Gi=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],Ki=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Hi=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Vi=[0,1,1,4];function Yi(t,e,s,i,r){if(s+24>e.length)return;const n=Wi(e,s);if(n&&s+n.frameLength<=e.length){const a=i+r*(9e4*n.samplesPerFrame/n.sampleRate),o={unit:e.subarray(s,s+n.frameLength),pts:a,dts:a};return t.config=[],t.channelCount=n.channelCount,t.samplerate=n.sampleRate,t.samples.push(o),{sample:o,length:n.frameLength,missing:0}}}function Wi(t,e){const s=t[e+1]>>3&3,i=t[e+1]>>1&3,r=t[e+2]>>4&15,n=t[e+2]>>2&3;if(1!==s&&0!==r&&15!==r&&3!==n){const a=t[e+2]>>1&1,o=t[e+3]>>6,l=1e3*Gi[14*(3===s?3-i:3===i?3:4)+r-1],h=Ki[3*(3===s?0:2===s?1:2)+n],d=3===o?1:2,c=Hi[s][i],u=Vi[i],f=8*c*u,g=Math.floor(c*l/h+a)*u;if(null===$i){const t=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);$i=t?parseInt(t[1]):0}return!!$i&&$i<=87&&2===i&&l>=224e3&&0===o&&(t[e+3]=128|t[e+3]),{sampleRate:h,channelCount:d,frameLength:g,samplesPerFrame:f}}}function ji(t,e){return 255===t[e]&&224==(224&t[e+1])&&0!=(6&t[e+1])}function qi(t,e){return e+1{let s=0,i=5;e+=i;const r=new Uint32Array(1),n=new Uint32Array(1),a=new Uint8Array(1);for(;i>0;){a[0]=t[e];const o=Math.min(i,8),l=8-o;n[0]=4278190080>>>24+l<>l,s=s?s<e.length)return-1;if(11!==e[s]||119!==e[s+1])return-1;const n=e[s+4]>>6;if(n>=3)return-1;const a=[48e3,44100,32e3][n],o=63&e[s+4],l=2*[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][3*o+n];if(s+l>e.length)return-1;const h=e[s+6]>>5;let d=0;2===h?d+=2:(1&h&&1!==h&&(d+=2),4&h&&(d+=2));const c=(e[s+6]<<8|e[s+7])>>12-d&1,u=[2,1,2,3,3,4,4,5][h]+c,f=e[s+5]>>3,g=7&e[s+5],m=new Uint8Array([n<<6|f<<1|g>>2,(3&g)<<6|h<<3|c<<2|o>>4,o<<4&224]),p=i+r*(1536/a*9e4),v=e.subarray(s,s+l);return t.config=m,t.channelCount=u,t.samplerate=a,t.samples.push({unit:v,pts:p}),l}class tr{constructor(){this.VideoSample=null}createVideoSample(t,e,s,i){return{key:t,frame:!1,pts:e,dts:s,units:[],debug:i,length:0}}getLastNalUnit(t){var e;let s,i=this.VideoSample;if(i&&0!==i.units.length||(i=t[t.length-1]),null!=(e=i)&&e.units){const t=i.units;s=t[t.length-1]}return s}pushAccessUnit(t,e){if(t.units.length&&t.frame){if(void 0===t.pts){const s=e.samples,i=s.length;if(!i)return void e.dropped++;{const e=s[i-1];t.pts=e.pts,t.dts=e.dts}}e.samples.push(t)}t.debug.length&&k.log(t.pts+"/"+t.dts+":"+t.debug)}}class er{constructor(t){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=t,this.bytesAvailable=t.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const t=this.data,e=this.bytesAvailable,s=t.byteLength-e,i=new Uint8Array(4),r=Math.min(4,e);if(0===r)throw new Error("no bytes available");i.set(t.subarray(s,s+r)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(t){let e;t=Math.min(t,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>t?(this.word<<=t,this.bitsAvailable-=t):(e=(t-=this.bitsAvailable)>>3,t-=e<<3,this.bytesAvailable-=e,this.loadWord(),this.word<<=t,this.bitsAvailable-=t)}readBits(t){let e=Math.min(this.bitsAvailable,t);const s=this.word>>>32-e;if(t>32&&k.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0)this.word<<=e;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return e=t-e,e>0&&this.bitsAvailable?s<>>t))return this.word<<=t,this.bitsAvailable-=t,t;return this.loadWord(),t+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const t=this.skipLZ();return this.readBits(t+1)-1}readEG(){const t=this.readUEG();return 1&t?1+t>>>1:-1*(t>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(t){let e,s=8,i=8;for(let r=0;r{var n;switch(i.type){case 1:{let e=!1;a=!0;const r=i.data;if(l&&r.length>4){const t=new er(r).readSliceType();2!==t&&4!==t&&7!==t&&9!==t||(e=!0)}var h;if(e)null!=(h=o)&&h.frame&&!o.key&&(this.pushAccessUnit(o,t),o=this.VideoSample=null);o||(o=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts,"")),o.frame=!0,o.key=e;break}case 5:a=!0,null!=(n=o)&&n.frame&&!o.key&&(this.pushAccessUnit(o,t),o=this.VideoSample=null),o||(o=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts,"")),o.key=!0,o.frame=!0;break;case 6:a=!0,Yt(i.data,1,s.pts,e.samples);break;case 7:{var d,c;a=!0,l=!0;const e=i.data,s=new er(e).readSPS();if(!t.sps||t.width!==s.width||t.height!==s.height||(null==(d=t.pixelRatio)?void 0:d[0])!==s.pixelRatio[0]||(null==(c=t.pixelRatio)?void 0:c[1])!==s.pixelRatio[1]){t.width=s.width,t.height=s.height,t.pixelRatio=s.pixelRatio,t.sps=[e],t.duration=r;const i=e.subarray(1,4);let n="avc1.";for(let t=0;t<3;t++){let e=i[t].toString(16);e.length<2&&(e="0"+e),n+=e}t.codec=n}break}case 8:a=!0,t.pps=[i.data];break;case 9:a=!0,t.audFound=!0,o&&this.pushAccessUnit(o,t),o=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts,"");break;case 12:a=!0;break;default:a=!1,o&&(o.debug+="unknown NAL "+i.type+" ")}if(o&&a){o.units.push(i)}})),i&&o&&(this.pushAccessUnit(o,t),this.VideoSample=null)}parseAVCNALu(t,e){const s=e.byteLength;let i=t.naluState||0;const r=i,n=[];let a,o,l,h=0,d=-1,c=0;for(-1===i&&(d=0,c=31&e[0],i=0,h=1);h=0){const t={data:e.subarray(d,o),type:c};n.push(t)}else{const s=this.getLastNalUnit(t.samples);s&&(r&&h<=4-r&&s.state&&(s.data=s.data.subarray(0,s.data.byteLength-r)),o>0&&(s.data=Kt(s.data,e.subarray(0,o)),s.state=0))}h=0&&i>=0){const t={data:e.subarray(d,s),type:c,state:i};n.push(t)}if(0===n.length){const s=this.getLastNalUnit(t.samples);s&&(s.data=Kt(s.data,e))}return t.naluState=i,n}}class ir{constructor(t,e,s){this.keyData=void 0,this.decrypter=void 0,this.keyData=s,this.decrypter=new fi(e,{removePKCS7Padding:!1})}decryptBuffer(t){return this.decrypter.decrypt(t,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(t,e,s){const i=t[e].unit;if(i.length<=16)return;const r=i.subarray(16,i.length-i.length%16),n=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(n).then((r=>{const n=new Uint8Array(r);i.set(n,16),this.decrypter.isSync()||this.decryptAacSamples(t,e+1,s)}))}decryptAacSamples(t,e,s){for(;;e++){if(e>=t.length)return void s();if(!(t[e].unit.length<32)&&(this.decryptAacSample(t,e,s),!this.decrypter.isSync()))return}}getAvcEncryptedData(t){const e=16*Math.floor((t.length-48)/160)+16,s=new Int8Array(e);let i=0;for(let e=32;e{r.data=this.getAvcDecryptedUnit(n,a),this.decrypter.isSync()||this.decryptAvcSamples(t,e,s+1,i)}))}decryptAvcSamples(t,e,s,i){if(t instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;e++,s=0){if(e>=t.length)return void i();const r=t[e].units;for(;!(s>=r.length);s++){const n=r[s];if(!(n.data.length<=48||1!==n.type&&5!==n.type||(this.decryptAvcSample(t,e,s,i,n),this.decrypter.isSync())))return}}}}const rr=188;class nr{constructor(t,e,s){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=t,this.config=e,this.typeSupported=s,this.videoParser=new sr}static probe(t){const e=nr.syncOffset(t);return e>0&&k.warn(`MPEG2-TS detected but first sync word found @ offset ${e}`),-1!==e}static syncOffset(t){const e=t.length;let s=Math.min(940,e-rr)+1,i=0;for(;i1&&(0===n&&a>2||o+rr>s))return n}i++}return-1}static createTrack(t,e){return{container:"video"===t||"audio"===t?"video/mp2t":void 0,type:t,id:kt[t],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===t?e:void 0}}resetInitSegment(t,e,s,i){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=nr.createTrack("video"),this._audioTrack=nr.createTrack("audio",i),this._id3Track=nr.createTrack("id3"),this._txtTrack=nr.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=e,this.videoCodec=s,this._duration=i}resetTimeStamp(){}resetContiguity(){const{_audioTrack:t,_videoTrack:e,_id3Track:s}=this;t&&(t.pesData=null),e&&(e.pesData=null),s&&(s.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(t,e,s=!1,i=!1){let r;s||(this.sampleAes=null);const n=this._videoTrack,a=this._audioTrack,o=this._id3Track,l=this._txtTrack;let h=n.pid,d=n.pesData,c=a.pid,u=o.pid,f=a.pesData,g=o.pesData,m=null,p=this.pmtParsed,v=this._pmtId,y=t.length;if(this.remainderData&&(y=(t=Kt(this.remainderData,t)).length,this.remainderData=null),y>4>1){if(E=e+5+t[e+4],E===e+rr)continue}else E=e+4;switch(y){case h:i&&(d&&(r=cr(d))&&this.videoParser.parseAVCPES(n,l,r,!1,this._duration),d={data:[],size:0}),d&&(d.data.push(t.subarray(E,e+rr)),d.size+=e+rr-E);break;case c:if(i){if(f&&(r=cr(f)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,r);break;case"mp3":this.parseMPEGPES(a,r);break;case"ac3":this.parseAC3PES(a,r)}f={data:[],size:0}}f&&(f.data.push(t.subarray(E,e+rr)),f.size+=e+rr-E);break;case u:i&&(g&&(r=cr(g))&&this.parseID3PES(o,r),g={data:[],size:0}),g&&(g.data.push(t.subarray(E,e+rr)),g.size+=e+rr-E);break;case 0:i&&(E+=t[E]+1),v=this._pmtId=or(t,E);break;case v:{i&&(E+=t[E]+1);const r=lr(t,E,this.typeSupported,s,this.observer);h=r.videoPid,h>0&&(n.pid=h,n.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(a.pid=c,a.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(o.pid=u),null===m||p||(k.warn(`MPEG-TS PMT found at ${e} after unknown PID '${m}'. Backtracking to sync byte @${T} to parse all TS packets.`),m=null,e=T-188),p=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=y}}else E++;E>0&&hr(this.observer,new Error(`Found ${E} TS packet/s that do not start with 0x47`)),n.pesData=d,a.pesData=f,o.pesData=g;const S={audioTrack:a,videoTrack:n,id3Track:o,textTrack:l};return i&&this.extractRemainingSamples(S),S}flush(){const{remainderData:t}=this;let e;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e}extractRemainingSamples(t){const{audioTrack:e,videoTrack:s,id3Track:i,textTrack:r}=t,n=s.pesData,a=e.pesData,o=i.pesData;let l;if(n&&(l=cr(n))?(this.videoParser.parseAVCPES(s,r,l,!0,this._duration),s.pesData=null):s.pesData=n,a&&(l=cr(a))){switch(e.segmentCodec){case"aac":this.parseAACPES(e,l);break;case"mp3":this.parseMPEGPES(e,l);break;case"ac3":this.parseAC3PES(e,l)}e.pesData=null}else null!=a&&a.size&&k.log("last AAC PES packet truncated,might overlap between fragments"),e.pesData=a;o&&(l=cr(o))?(this.parseID3PES(i,l),i.pesData=null):i.pesData=o}demuxSampleAes(t,e,s){const i=this.demux(t,s,!0,!this.config.progressive),r=this.sampleAes=new ir(this.observer,this.config,e);return this.decrypt(i,r)}decrypt(t,e){return new Promise((s=>{const{audioTrack:i,videoTrack:r}=t;i.samples&&"aac"===i.segmentCodec?e.decryptAacSamples(i.samples,0,(()=>{r.samples?e.decryptAvcSamples(r.samples,0,0,(()=>{s(t)})):s(t)})):r.samples&&e.decryptAvcSamples(r.samples,0,0,(()=>{s(t)}))}))}destroy(){this._duration=0}parseAACPES(t,e){let s=0;const i=this.aacOverFlow;let r,n,a,o=e.data;if(i){this.aacOverFlow=null;const e=i.missing,r=i.sample.unit.byteLength;if(-1===e)o=Kt(i.sample.unit,o);else{const n=r-e;i.sample.unit.set(o.subarray(0,e),n),t.samples.push(i.sample),s=i.missing}}for(r=s,n=o.length;r0;)o+=n}}parseID3PES(t,e){if(void 0===e.pts)return void k.warn("[tsdemuxer]: ID3 PES unknown PTS");const s=m({},e,{type:this._videoTrack?Ve:Ke,duration:Number.POSITIVE_INFINITY});t.samples.push(s)}}function ar(t,e){return((31&t[e+1])<<8)+t[e+2]}function or(t,e){return(31&t[e+10])<<8|t[e+11]}function lr(t,e,s,i,r){const n={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},a=e+3+((15&t[e+1])<<8|t[e+2])-4;for(e+=12+((15&t[e+10])<<8|t[e+11]);e0){let i=e+5,r=o;for(;r>2;){if(106===t[i])!0!==s.ac3?k.log("AC-3 audio found, not supported in this browser for now"):(n.audioPid=a,n.segmentAudioCodec="ac3");const e=t[i+1]+2;i+=e,r-=e}}break;case 194:case 135:return hr(r,new Error("Unsupported EC-3 in M2TS found")),n;case 36:return hr(r,new Error("Unsupported HEVC in M2TS found")),n}e+=o+5}return n}function hr(t,e,s){k.warn(`parsing error: ${e.message}`),t.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,levelRetry:s,error:e,reason:e.message})}function dr(t){k.log(`${t} with AES-128-CBC encryption found in unencrypted stream`)}function cr(t){let e,s,i,r,n,a=0;const o=t.data;if(!t||0===t.size)return null;for(;o[0].length<19&&o.length>1;)o[0]=Kt(o[0],o[1]),o.splice(1,1);e=o[0];if(1===(e[0]<<16)+(e[1]<<8)+e[2]){if(s=(e[4]<<8)+e[5],s&&s>t.size-6)return null;const l=e[7];192&l&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&l?(n=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-n>54e5&&(k.warn(`${Math.round((r-n)/9e4)}s delta between PTS and DTS, align them`),r=n)):n=r),i=e[8];let h=i+9;if(t.size<=h)return null;t.size-=h;const d=new Uint8Array(t.size);for(let t=0,s=o.length;ts){h-=s;continue}e=e.subarray(h),s-=h,h=0}d.set(e,a),a+=s}return s&&(s-=i+3),{data:d,pts:r,dts:n,len:s}}return null}class ur{static getSilentFrame(t,e){if("mp4a.40.2"===t){if(1===e)return new Uint8Array([0,200,0,128,35,128]);if(2===e)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===e)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}const fr=Math.pow(2,32)-1;class gr{static init(){let t;for(t in gr.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},gr.types)gr.types.hasOwnProperty(t)&&(gr.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);const e=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),s=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);gr.HDLR_TYPES={video:e,audio:s};const i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);gr.STTS=gr.STSC=gr.STCO=r,gr.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),gr.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),gr.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),gr.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const n=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),o=new Uint8Array([0,0,0,1]);gr.FTYP=gr.box(gr.types.ftyp,n,o,n,a),gr.DINF=gr.box(gr.types.dinf,gr.box(gr.types.dref,i))}static box(t,...e){let s=8,i=e.length;const r=i;for(;i--;)s+=e[i].byteLength;const n=new Uint8Array(s);for(n[0]=s>>24&255,n[1]=s>>16&255,n[2]=s>>8&255,n[3]=255&s,n.set(t,4),i=0,s=8;i>24&255,t>>16&255,t>>8&255,255&t,s>>24,s>>16&255,s>>8&255,255&s,i>>24,i>>16&255,i>>8&255,255&i,85,196,0,0]))}static mdia(t){return gr.box(gr.types.mdia,gr.mdhd(t.timescale,t.duration),gr.hdlr(t.type),gr.minf(t))}static mfhd(t){return gr.box(gr.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}static minf(t){return"audio"===t.type?gr.box(gr.types.minf,gr.box(gr.types.smhd,gr.SMHD),gr.DINF,gr.stbl(t)):gr.box(gr.types.minf,gr.box(gr.types.vmhd,gr.VMHD),gr.DINF,gr.stbl(t))}static moof(t,e,s){return gr.box(gr.types.moof,gr.mfhd(t),gr.traf(s,e))}static moov(t){let e=t.length;const s=[];for(;e--;)s[e]=gr.trak(t[e]);return gr.box.apply(null,[gr.types.moov,gr.mvhd(t[0].timescale,t[0].duration)].concat(s).concat(gr.mvex(t)))}static mvex(t){let e=t.length;const s=[];for(;e--;)s[e]=gr.trex(t[e]);return gr.box.apply(null,[gr.types.mvex,...s])}static mvhd(t,e){e*=t;const s=Math.floor(e/(fr+1)),i=Math.floor(e%(fr+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,s>>24,s>>16&255,s>>8&255,255&s,i>>24,i>>16&255,i>>8&255,255&i,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return gr.box(gr.types.mvhd,r)}static sdtp(t){const e=t.samples||[],s=new Uint8Array(4+e.length);let i,r;for(i=0;i>>8&255),r.push(255&i),r=r.concat(Array.prototype.slice.call(s));for(e=0;e>>8&255),n.push(255&i),n=n.concat(Array.prototype.slice.call(s));const a=gr.box(gr.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|t.sps.length].concat(r).concat([t.pps.length]).concat(n))),o=t.width,l=t.height,h=t.pixelRatio[0],d=t.pixelRatio[1];return gr.box(gr.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,o>>8&255,255&o,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),a,gr.box(gr.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),gr.box(gr.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,255&h,d>>24,d>>16&255,d>>8&255,255&d])))}static esds(t){const e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))}static audioStsd(t){const e=t.samplerate;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,e>>8&255,255&e,0,0])}static mp4a(t){return gr.box(gr.types.mp4a,gr.audioStsd(t),gr.box(gr.types.esds,gr.esds(t)))}static mp3(t){return gr.box(gr.types[".mp3"],gr.audioStsd(t))}static ac3(t){return gr.box(gr.types["ac-3"],gr.audioStsd(t),gr.box(gr.types.dac3,t.config))}static stsd(t){return"audio"===t.type?"mp3"===t.segmentCodec&&"mp3"===t.codec?gr.box(gr.types.stsd,gr.STSD,gr.mp3(t)):"ac3"===t.segmentCodec?gr.box(gr.types.stsd,gr.STSD,gr.ac3(t)):gr.box(gr.types.stsd,gr.STSD,gr.mp4a(t)):gr.box(gr.types.stsd,gr.STSD,gr.avc1(t))}static tkhd(t){const e=t.id,s=t.duration*t.timescale,i=t.width,r=t.height,n=Math.floor(s/(fr+1)),a=Math.floor(s%(fr+1));return gr.box(gr.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,a>>24,a>>16&255,a>>8&255,255&a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,255&i,0,0,r>>8&255,255&r,0,0]))}static traf(t,e){const s=gr.sdtp(t),i=t.id,r=Math.floor(e/(fr+1)),n=Math.floor(e%(fr+1));return gr.box(gr.types.traf,gr.box(gr.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i])),gr.box(gr.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,n>>24,n>>16&255,n>>8&255,255&n])),gr.trun(t,s.length+16+20+8+16+8+8),s)}static trak(t){return t.duration=t.duration||4294967295,gr.box(gr.types.trak,gr.tkhd(t),gr.mdia(t))}static trex(t){const e=t.id;return gr.box(gr.types.trex,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(t,e){const s=t.samples||[],i=s.length,r=12+16*i,n=new Uint8Array(r);let a,o,l,h,d,c;for(e+=8+r,n.set(["video"===t.type?1:0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i,e>>>24&255,e>>>16&255,e>>>8&255,255&e],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,h>>>24&255,h>>>16&255,h>>>8&255,255&h,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.paddingValue<<1|d.isNonSync,61440&d.degradPrio,15&d.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a);return gr.box(gr.types.trun,n)}static initSegment(t){gr.types||gr.init();const e=gr.moov(t);return Kt(gr.FTYP,e)}}gr.types=void 0,gr.HDLR_TYPES=void 0,gr.STTS=void 0,gr.STSC=void 0,gr.STCO=void 0,gr.STSZ=void 0,gr.VMHD=void 0,gr.SMHD=void 0,gr.STSD=void 0,gr.FTYP=void 0,gr.DINF=void 0;function mr(t,e,s=1,i=!1){const r=t*e*s;return i?Math.round(r):r}function pr(t,e=!1){return mr(t,1e3,1/9e4,e)}let vr,yr=null,Tr=null;class Er{constructor(t,e,s,i=""){if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=t,this.config=e,this.typeSupported=s,this.ISGenerated=!1,null===yr){const t=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);yr=t?parseInt(t[1]):0}if(null===Tr){const t=navigator.userAgent.match(/Safari\/(\d+)/i);Tr=t?parseInt(t[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(t){k.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=t}resetNextTimestamp(){k.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){k.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(t){let e=!1;const s=t.reduce(((t,s)=>{const i=s.pts-t;return i<-4294967296?(e=!0,Sr(t,s.pts)):i>0?t:s.pts}),t[0].pts);return e&&k.debug("PTS rollover detected"),s}remux(t,e,s,i,r,n,a,o){let l,h,d,c,u,f,g=r,m=r;const p=t.pid>-1,v=e.pid>-1,y=e.samples.length,T=t.samples.length>0,E=a&&y>0||y>1;if((!p||T)&&(!v||E)||this.ISGenerated||a){if(this.ISGenerated){var S,L,A,R;const t=this.videoTrackConfig;!t||e.width===t.width&&e.height===t.height&&(null==(S=e.pixelRatio)?void 0:S[0])===(null==(L=t.pixelRatio)?void 0:L[0])&&(null==(A=e.pixelRatio)?void 0:A[1])===(null==(R=t.pixelRatio)?void 0:R[1])||this.resetInitSegment()}else d=this.generateIS(t,e,r,n);const s=this.isVideoContiguous;let i,a=-1;if(E&&(a=function(t){for(let e=0;e0){k.warn(`[mp4-remuxer]: Dropped ${a} out of ${y} video samples due to a missing keyframe`);const t=this.getVideoStartPts(e.samples);e.samples=e.samples.slice(a),e.dropped+=a,m+=(e.samples[0].pts-t)/e.inputTimeScale,i=m}else-1===a&&(k.warn(`[mp4-remuxer]: No keyframe found out of ${y} video samples`),f=!1);if(this.ISGenerated){if(T&&E){const s=this.getVideoStartPts(e.samples),i=(Sr(t.samples[0].pts,s)-s)/e.inputTimeScale;g+=Math.max(0,i),m+=Math.max(0,-i)}if(T){if(t.samplerate||(k.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),d=this.generateIS(t,e,r,n)),h=this.remuxAudio(t,g,this.isAudioContiguous,n,v||E||o===xe?m:void 0),E){const i=h?h.endPTS-h.startPTS:0;e.inputTimeScale||(k.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),d=this.generateIS(t,e,r,n)),l=this.remuxVideo(e,m,s,i)}}else E&&(l=this.remuxVideo(e,m,s,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=i)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(s.samples.length&&(u=Lr(s,r,this._initPTS,this._initDTS)),i.samples.length&&(c=Ar(i,r,this._initPTS))),{audio:h,video:l,initSegment:d,independent:f,text:c,id3:u}}generateIS(t,e,s,i){const r=t.samples,n=e.samples,a=this.typeSupported,o={},l=this._initPTS;let h,d,c,u=!l||i,f="audio/mp4";if(u&&(h=d=1/0),t.config&&r.length){switch(t.timescale=t.samplerate,t.segmentCodec){case"mp3":a.mpeg?(f="audio/mpeg",t.codec=""):a.mp3&&(t.codec="mp3");break;case"ac3":t.codec="ac-3"}o.audio={id:"audio",container:f,codec:t.codec,initSegment:"mp3"===t.segmentCodec&&a.mpeg?new Uint8Array(0):gr.initSegment([t]),metadata:{channelCount:t.channelCount}},u&&(c=t.inputTimeScale,l&&c===l.timescale?u=!1:h=d=r[0].pts-Math.round(c*s))}if(e.sps&&e.pps&&n.length){if(e.timescale=e.inputTimeScale,o.video={id:"main",container:"video/mp4",codec:e.codec,initSegment:gr.initSegment([e]),metadata:{width:e.width,height:e.height}},u)if(c=e.inputTimeScale,l&&c===l.timescale)u=!1;else{const t=this.getVideoStartPts(n),e=Math.round(c*s);d=Math.min(d,Sr(n[0].dts,t)-e),h=Math.min(h,t-e)}this.videoTrackConfig={width:e.width,height:e.height,pixelRatio:e.pixelRatio}}if(Object.keys(o).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:h,timescale:c},this._initDTS={baseTime:d,timescale:c}):h=c=void 0,{tracks:o,initPTS:h,timescale:c}}remuxVideo(t,e,s,i){const r=t.inputTimeScale,n=t.samples,a=[],o=n.length,l=this._initPTS;let h,d,c=this.nextAvcDts,u=8,f=this.videoSampleDuration,g=Number.POSITIVE_INFINITY,p=Number.NEGATIVE_INFINITY,v=!1;if(!s||null===c){const t=e*r,i=n[0].pts-Sr(n[0].dts,n[0].pts);yr&&null!==c&&Math.abs(t-i-c)<15e3?s=!0:c=t-i}const y=l.baseTime*r/l.timescale;for(let t=0;t0?t-1:t].dts&&(v=!0)}v&&n.sort((function(t,e){const s=t.dts-e.dts,i=t.pts-e.pts;return s||i})),h=n[0].dts,d=n[n.length-1].dts;const L=d-h,A=L?Math.round(L/(o-1)):f||t.inputTimeScale/30;if(s){const t=h-c,s=t>A,i=t<-1;if((s||i)&&(s?k.warn(`AVC: ${pr(t,!0)} ms (${t}dts) hole between fragments detected at ${e.toFixed(3)}`):k.warn(`AVC: ${pr(-t,!0)} ms (${t}dts) overlapping between fragments detected at ${e.toFixed(3)}`),!i||c>=n[0].pts||yr)){h=c;const e=n[0].pts-t;if(s)n[0].dts=h,n[0].pts=e;else for(let s=0;se);s++)n[s].dts-=t,n[s].pts-=t;k.log(`Video: Initial PTS/DTS adjusted: ${pr(e,!0)}/${pr(h,!0)}, delta: ${pr(t,!0)} ms`)}}h=Math.max(0,h);let R=0,b=0,D=h;for(let t=0;t0?e.dts-n[t-1].dts:A;if(l=t>0?e.pts-n[t-1].pts:A,s.stretchShortVideoTrack&&null!==this.nextAudioPts){const t=Math.floor(s.maxBufferHole*r),n=(i?g+i*r:this.nextAudioPts)-e.pts;n>t?(f=n-a,f<0?f=a:_=!0,k.log(`[mp4-remuxer]: It is approximately ${n/90} ms to the next segment; using duration ${f/90} ms for the last video frame.`)):f=a}else f=a}const d=Math.round(e.pts-e.dts);x=Math.min(x,f),F=Math.max(F,f),P=Math.min(P,l),M=Math.max(M,l),a.push(new Rr(e.key,f,h,d))}if(a.length)if(yr){if(yr<70){const t=a[0].flags;t.dependsOn=2,t.isNonSync=0}}else if(Tr&&M-P0&&(i&&Math.abs(v-p)<9e3||Math.abs(Sr(f[0].pts-y,v)-p)<20*l),f.forEach((function(t){t.pts=Sr(t.pts-y,v)})),!s||p<0){if(f=f.filter((t=>t.pts>=0)),!f.length)return;p=0===r?0:i&&!u?Math.max(0,v):f[0].pts}if("aac"===t.segmentCodec){const e=this.config.maxAudioFramesDrift;for(let s=0,i=p;s=e*l&&h<1e4&&u){let e=Math.round(o/l);i=a-e*l,i<0&&(e--,i+=l),0===s&&(this.nextAudioPts=p=i),k.warn(`[mp4-remuxer]: Injecting ${e} audio frame @ ${(i/n).toFixed(3)}s due to ${Math.round(1e3*o/n)} ms gap.`);for(let n=0;n0))return;b+=g;try{L=new Uint8Array(b)}catch(t){return void this.observer.emit(T.ERROR,T.ERROR,{type:E.MUX_ERROR,details:S.REMUX_ALLOC_ERROR,fatal:!1,error:t,bytes:b,reason:`fail allocating audio mdat ${b}`})}if(!d){new DataView(L.buffer).setUint32(0,b),L.set(gr.types.mdat,4)}}L.set(r,g);const l=r.byteLength;g+=l,c.push(new Rr(!0,o,l,0)),R=n}const I=c.length;if(!I)return;const w=c[c.length-1];this.nextAudioPts=p=R+a*w.duration;const C=d?new Uint8Array(0):gr.moof(t.sequenceNumber++,A/a,m({},t,{samples:c}));t.samples=[];const _=A/n,x=p/n,P={data1:C,data2:L,startPTS:_,endPTS:x,startDTS:_,endDTS:x,type:"audio",hasAudio:!0,hasVideo:!1,nb:I};return this.isAudioContiguous=!0,P}remuxEmptyAudio(t,e,s,i){const r=t.inputTimeScale,n=r/(t.samplerate?t.samplerate:r),a=this.nextAudioPts,o=this._initDTS,l=9e4*o.baseTime/o.timescale,h=(null!==a?a:i.startDTS*r)+l,d=i.endDTS*r+l,c=1024*n,u=Math.ceil((d-h)/c),f=ur.getSilentFrame(t.manifestCodec||t.codec,t.channelCount);if(k.warn("[mp4-remuxer]: remux empty Audio"),!f)return void k.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const g=[];for(let t=0;t4294967296;)t+=s;return t}function Lr(t,e,s,i){const r=t.samples.length;if(!r)return;const n=t.inputTimeScale;for(let a=0;at.pts-e.pts));const n=t.samples;return t.samples=[],{samples:n}}class Rr{constructor(t,e,s,i){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=e,this.size=s,this.cts=i,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:t?2:1,isNonSync:t?0:1}}}function br(t,e){const s=null==t?void 0:t.codec;if(s&&s.length>4)return s;if(e===P){if("ec-3"===s||"ac-3"===s||"alac"===s)return s;if("fLaC"===s||"Opus"===s){return ue(s,!1)}const t="mp4a.40.5";return k.info(`Parsed audio codec "${s}" or audio object type not handled. Using "${t}"`),t}return k.warn(`Unhandled video codec "${s}"`),"hvc1"===s||"hev1"===s?"hvc1.1.6.L120.90":"av01"===s?"av01.0.04M.08":"avc1.42e01e"}try{vr=self.performance.now.bind(self.performance)}catch(t){k.debug("Unable to use Performance API on this environment"),vr=null==H?void 0:H.Date.now}const kr=[{demux:class{constructor(t,e){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=e}resetTimeStamp(){}resetInitSegment(t,e,s,i){const r=this.videoTrack=wi("video",1),n=this.audioTrack=wi("audio",1),a=this.txtTrack=wi("text",1);if(this.id3Track=wi("id3",1),this.timeOffset=0,null==t||!t.byteLength)return;const o=Mt(t);if(o.video){const{id:t,timescale:e,codec:s}=o.video;r.id=t,r.timescale=a.timescale=e,r.codec=s}if(o.audio){const{id:t,timescale:e,codec:s}=o.audio;n.id=t,n.timescale=e,n.codec=s}a.id=kt.text,r.sampleDuration=0,r.duration=n.duration=i}resetContiguity(){this.remainderData=null}static probe(t){return function(t){const e=t.byteLength;for(let s=0;s8&&109===t[s+4]&&111===t[s+5]&&111===t[s+6]&&102===t[s+7])return!0;s=i>1?s+i:e}return!1}(t)}demux(t,e){this.timeOffset=e;let s=t;const i=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(s=Kt(this.remainderData,t));const e=function(t){const e={valid:null,remainder:null},s=Pt(t,["moof"]);if(s.length<2)return e.remainder=t,e;const i=s[s.length-1];return e.valid=nt(t,0,i.byteOffset-8),e.remainder=nt(t,i.byteOffset-8),e}(s);this.remainderData=e.remainder,i.samples=e.valid||new Uint8Array}else i.samples=s;const n=this.extractID3Track(i,e);return r.samples=Ht(e,i),{videoTrack:i,audioTrack:this.audioTrack,id3Track:n,textTrack:this.txtTrack}}flush(){const t=this.timeOffset,e=this.videoTrack,s=this.txtTrack;e.samples=this.remainderData||new Uint8Array,this.remainderData=null;const i=this.extractID3Track(e,this.timeOffset);return s.samples=Ht(t,e),{videoTrack:e,audioTrack:wi(),id3Track:i,textTrack:wi()}}extractID3Track(t,e){const s=this.id3Track;if(t.samples.length){const i=Pt(t.samples,["emsg"]);i&&i.forEach((t=>{const i=function(t){const e=t[0];let s="",i="",r=0,n=0,a=0,o=0,l=0,h=0;if(0===e){for(;"\0"!==Dt(t.subarray(h,h+1));)s+=Dt(t.subarray(h,h+1)),h+=1;for(s+=Dt(t.subarray(h,h+1)),h+=1;"\0"!==Dt(t.subarray(h,h+1));)i+=Dt(t.subarray(h,h+1)),h+=1;i+=Dt(t.subarray(h,h+1)),h+=1,r=wt(t,12),n=wt(t,16),o=wt(t,20),l=wt(t,24),h=28}else if(1===e){h+=4,r=wt(t,h),h+=4;const e=wt(t,h);h+=4;const n=wt(t,h);for(h+=4,a=2**32*e+n,v(a)||(a=Number.MAX_SAFE_INTEGER,k.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),o=wt(t,h),h+=4,l=wt(t,h),h+=4;"\0"!==Dt(t.subarray(h,h+1));)s+=Dt(t.subarray(h,h+1)),h+=1;for(s+=Dt(t.subarray(h,h+1)),h+=1;"\0"!==Dt(t.subarray(h,h+1));)i+=Dt(t.subarray(h,h+1)),h+=1;i+=Dt(t.subarray(h,h+1)),h+=1}return{schemeIdUri:s,value:i,timeScale:r,presentationTime:a,presentationTimeDelta:n,eventDuration:o,id:l,payload:t.subarray(h,t.byteLength)}}(t);if(zi.test(i.schemeIdUri)){const t=p(i.presentationTime)?i.presentationTime/i.timeScale:e+i.presentationTimeDelta/i.timeScale;let r=4294967295===i.eventDuration?Number.POSITIVE_INFINITY:i.eventDuration/i.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const n=i.payload;s.samples.push({data:n,len:n.byteLength,dts:t,pts:t,type:Ve,duration:r})}}))}return s}demuxSampleAes(t,e,s){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(t){this.initPTS=t,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(t,e,s,i){this.audioCodec=e,this.videoCodec=s,this.generateInitSegment(function(t,e){if(!t||!e)return t;const s=e.keyId;s&&e.isCommonEncryption&&Pt(t,["moov","trak"]).forEach((t=>{const e=Pt(t,["mdia","minf","stbl","stsd"])[0].subarray(8);let i=Pt(e,["enca"]);const r=i.length>0;r||(i=Pt(e,["encv"])),i.forEach((t=>{Pt(r?t.subarray(28):t.subarray(78),["sinf"]).forEach((t=>{const e=$t(t);if(e){const t=e.subarray(8,24);t.some((t=>0!==t))||(k.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${At(t)} -> ${At(s)}`),e.set(s,8))}}))}))}));return t}(t,i)),this.emitInitSegment=!0}generateInitSegment(t){let{audioCodec:e,videoCodec:s}=this;if(null==t||!t.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const i=this.initData=Mt(t);i.audio&&(e=br(i.audio,P)),i.video&&(s=br(i.video,F));const r={};i.audio&&i.video?r.audiovideo={container:"video/mp4",codec:e+","+s,initSegment:t,id:"main"}:i.audio?r.audio={container:"audio/mp4",codec:e,initSegment:t,id:"audio"}:i.video?r.video={container:"video/mp4",codec:s,initSegment:t,id:"main"}:k.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(t,e,s,i,r,n){var a,o;let{initPTS:l,lastEndTime:h}=this;const d={audio:void 0,video:void 0,text:i,id3:s,initSegment:void 0};p(h)||(h=this.lastEndTime=r||0);const c=e.samples;if(null==c||!c.length)return d;const u={initPTS:void 0,timescale:1};let f=this.initData;if(null!=(a=f)&&a.length||(this.generateInitSegment(c),f=this.initData),null==(o=f)||!o.length)return k.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),d;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const g=function(t,e){let s=0,i=0,r=0;const n=Pt(t,["moof","traf"]);for(let t=0;tt+e.info.duration||0),0);s=Math.max(s,t+n.earliestPresentationTime/n.timescale),i=s-e}}if(i&&p(i))return i}return i||r}(c,f),m=function(t,e){return Pt(e,["moof","traf"]).reduce(((e,s)=>{const i=Pt(s,["tfdt"])[0],r=i[0],n=Pt(s,["tfhd"]).reduce(((e,s)=>{const n=wt(s,4),a=t[n];if(a){let t=wt(i,4);if(1===r){if(t===Rt)return k.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),e;t*=Rt+1,t+=wt(i,8)}const s=t/(a.timescale||9e4);if(p(s)&&(null===e||sr}(l,v,r,g)||u.timescale!==l.timescale&&n)&&(u.initPTS=v-r,l&&1===l.timescale&&k.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=t?v-l.baseTime/l.timescale:h,T=y+g;!function(t,e,s){Pt(e,["moof","traf"]).forEach((e=>{Pt(e,["tfhd"]).forEach((i=>{const r=wt(i,4),n=t[r];if(!n)return;const a=n.timescale||9e4;Pt(e,["tfdt"]).forEach((t=>{const e=t[0],i=s*a;if(i){let s=wt(t,4);if(0===e)s-=i,s=Math.max(s,0),xt(t,4,s);else{s*=Math.pow(2,32),s+=wt(t,8),s-=i,s=Math.max(s,0);const e=Math.floor(s/(Rt+1)),r=Math.floor(s%(Rt+1));xt(t,4,e),xt(t,8,r)}}}))}))}))}(f,c,l.baseTime/l.timescale),g>0?this.lastEndTime=T:(k.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const E=!!f.audio,S=!!f.video;let L="";E&&(L+="audio"),S&&(L+="video");const A={data1:c,startPTS:y,startDTS:y,endPTS:T,endDTS:T,type:L,hasAudio:E,hasVideo:S,nb:1,dropped:0};return d.audio="audio"===A.type?A:void 0,d.video="audio"!==A.type?A:void 0,d.initSegment=u,d.id3=Lr(s,r,l,l),i.samples.length&&(d.text=Ar(i,r,l)),d}}},{demux:nr,remux:Er},{demux:class extends Ci{constructor(t,e){super(),this.observer=void 0,this.config=void 0,this.observer=t,this.config=e}resetInitSegment(t,e,s,i){super.resetInitSegment(t,e,s,i),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:e,duration:i,inputTimeScale:9e4,dropped:0}}static probe(t){if(!t)return!1;const e=lt(t,0);let s=(null==e?void 0:e.length)||0;if(Xi(t,s))return!1;for(let e=t.length;s0&&null!=(null==e?void 0:e.key)&&null!==e.iv&&null!=e.method&&(s=e);return s}(n,e);if(L&&"AES-128"===L.method){const t=this.getDecrypter();if(!t.isSync())return this.decryptionPromise=t.webCryptoDecrypt(n,L.key.buffer,L.iv.buffer).then((t=>{const e=this.push(t,null,s);return this.decryptionPromise=null,e})),this.decryptionPromise;{let e=t.softwareDecrypt(n,L.key.buffer,L.iv.buffer);if(s.part>-1&&(e=t.flush()),!e)return r.executeEnd=vr(),Ir(s);n=new Uint8Array(e)}}const A=this.needsProbing(h,d);if(A){const t=this.configureTransmuxer(n);if(t)return k.warn(`[transmuxer] ${t.message}`),this.observer.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:t,reason:t.message}),r.executeEnd=vr(),Ir(s)}(h||d||f||A)&&this.resetInitSegment(y,g,m,v,e),(h||f||A)&&this.resetInitialTimestamp(p),l||this.resetContiguity();const R=this.transmux(n,L,u,c,s),b=this.currentTransmuxState;return b.contiguous=!0,b.discontinuity=!1,b.trackSwitch=!1,r.executeEnd=vr(),R}flush(t){const e=t.transmuxing;e.executeStart=vr();const{decrypter:s,currentTransmuxState:i,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(t)));const n=[],{timeOffset:a}=i;if(s){const e=s.flush();e&&n.push(this.push(e,null,t))}const{demuxer:o,remuxer:l}=this;if(!o||!l)return e.executeEnd=vr(),[Ir(t)];const h=o.flush(a);return wr(h)?h.then((e=>(this.flushRemux(n,e,t),n))):(this.flushRemux(n,h,t),n)}flushRemux(t,e,s){const{audioTrack:i,videoTrack:r,id3Track:n,textTrack:a}=e,{accurateTimeOffset:o,timeOffset:l}=this.currentTransmuxState;k.log(`[transmuxer.ts]: Flushed fragment ${s.sn}${s.part>-1?" p: "+s.part:""} of level ${s.level}`);const h=this.remuxer.remux(i,r,n,a,l,o,!0,this.id);t.push({remuxResult:h,chunkMeta:s}),s.transmuxing.executeEnd=vr()}resetInitialTimestamp(t){const{demuxer:e,remuxer:s}=this;e&&s&&(e.resetTimeStamp(t),s.resetTimeStamp(t))}resetContiguity(){const{demuxer:t,remuxer:e}=this;t&&e&&(t.resetContiguity(),e.resetNextTimestamp())}resetInitSegment(t,e,s,i,r){const{demuxer:n,remuxer:a}=this;n&&a&&(n.resetInitSegment(t,e,s,i),a.resetInitSegment(t,e,s,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(t,e,s,i,r){let n;return n=e&&"SAMPLE-AES"===e.method?this.transmuxSampleAes(t,e,s,i,r):this.transmuxUnencrypted(t,s,i,r),n}transmuxUnencrypted(t,e,s,i){const{audioTrack:r,videoTrack:n,id3Track:a,textTrack:o}=this.demuxer.demux(t,e,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,n,a,o,e,s,!1,this.id),chunkMeta:i}}transmuxSampleAes(t,e,s,i,r){return this.demuxer.demuxSampleAes(t,e,s).then((t=>({remuxResult:this.remuxer.remux(t.audioTrack,t.videoTrack,t.id3Track,t.textTrack,s,i,!1,this.id),chunkMeta:r})))}configureTransmuxer(t){const{config:e,observer:s,typeSupported:i,vendor:r}=this;let n;for(let e=0,s=kr.length;e({remuxResult:{},chunkMeta:t});function wr(t){return"then"in t&&t.then instanceof Function}class Cr{constructor(t,e,s,i,r){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=t,this.videoCodec=e,this.initSegmentData=s,this.duration=i,this.defaultInitPts=r||null}}class _r{constructor(t,e,s,i,r,n){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=t,this.contiguous=e,this.accurateTimeOffset=s,this.trackSwitch=i,this.timeOffset=r,this.initSegmentChange=n}}var xr={exports:{}};!function(t){var e=Object.prototype.hasOwnProperty,s="~";function i(){}function r(t,e,s){this.fn=t,this.context=e,this.once=s||!1}function n(t,e,i,n,a){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new r(i,n||t,a),l=s?s+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],o]:t._events[l].push(o):(t._events[l]=o,t._eventsCount++),t}function a(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(s=!1)),o.prototype.eventNames=function(){var t,i,r=[];if(0===this._eventsCount)return r;for(i in t=this._events)e.call(t,i)&&r.push(s?i.slice(1):i);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(t)):r},o.prototype.listeners=function(t){var e=s?s+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var r=0,n=i.length,a=new Array(n);r{(e=e||{}).frag=this.frag,e.id=this.id,t===T.ERROR&&(this.error=e.error),this.hls.trigger(t,e)};this.observer=new Pr,this.observer.on(T.FRAG_DECRYPTED,n),this.observer.on(T.ERROR,n);const a=ie(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},o={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')};if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?(k.log(`loading Web Worker ${r.workerPath} for "${e}"`),this.workerContext=function(t){const e=new self.URL(t,self.location.href).href;return{worker:new self.Worker(e),scriptURL:e}}(r.workerPath)):(k.log(`injecting Web Worker for "${e}"`),this.workerContext=function(){const t=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),e=self.URL.createObjectURL(t);return{worker:new self.Worker(e),objectURL:e}}()),this.onwmsg=t=>this.onWorkerMessage(t);const{worker:t}=this.workerContext;t.addEventListener("message",this.onwmsg),t.onerror=t=>{const s=new Error(`${t.message} (${t.filename}:${t.lineno})`);r.enableWorker=!1,k.warn(`Error in "${e}" Web Worker, fallback to inline`),this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:s})},t.postMessage({cmd:"init",typeSupported:o,vendor:"",id:e,config:JSON.stringify(r)})}catch(t){k.warn(`Error setting up "${e}" Web Worker, fallback to inline`,t),this.resetWorker(),this.error=null,this.transmuxer=new Dr(this.observer,o,r,"",e)}return}}this.transmuxer=new Dr(this.observer,o,r,"",e)}resetWorker(){if(this.workerContext){const{worker:t,objectURL:e}=this.workerContext;e&&self.URL.revokeObjectURL(e),t.removeEventListener("message",this.onwmsg),t.onerror=null,t.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}const t=this.observer;t&&t.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(t,e,s,i,r,n,a,o,l,h){var d,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,f=n?n.start:r.start,g=r.decryptdata,m=this.frag,p=!(m&&r.cc===m.cc),v=!(m&&l.level===m.level),y=m?l.sn-m.sn:-1,T=this.part?l.part-this.part.index:-1,E=0===y&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),S=!v&&(1===y||0===y&&(1===T||E&&T<=0)),L=self.performance.now();(v||y||0===r.stats.parsing.start)&&(r.stats.parsing.start=L),!n||!T&&S||(n.stats.parsing.start=L);const A=!(m&&(null==(d=r.initSegment)?void 0:d.url)===(null==(c=m.initSegment)?void 0:c.url)),R=new _r(p,S,o,v,f,A);if(!S||p||A){k.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${p}\n trackSwitch: ${v}\n contiguous: ${S}\n accurateTimeOffset: ${o}\n timeOffset: ${f}\n initSegmentChange: ${A}`);const t=new Cr(s,i,e,a,h);this.configureTransmuxer(t)}if(this.frag=r,this.part=n,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:t,decryptdata:g,chunkMeta:l,state:R},t instanceof ArrayBuffer?[t]:[]);else if(u){const e=u.push(t,g,l,R);wr(e)?(u.async=!0,e.then((t=>{this.handleTransmuxComplete(t)})).catch((t=>{this.transmuxerError(t,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(e))}}flush(t){t.transmuxing.start=self.performance.now();const{transmuxer:e}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:t});else if(e){let s=e.flush(t);wr(s)||e.async?(wr(s)||(s=Promise.resolve(s)),s.then((e=>{this.handleFlushResult(e,t)})).catch((e=>{this.transmuxerError(e,t,"transmuxer-interface flush error")}))):this.handleFlushResult(s,t)}}transmuxerError(t,e,s){this.hls&&(this.error=t,this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,chunkMeta:e,frag:this.frag||void 0,fatal:!1,error:t,err:t,reason:s}))}handleFlushResult(t,e){t.forEach((t=>{this.handleTransmuxComplete(t)})),this.onFlush(e)}onWorkerMessage(t){const e=t.data;if(null==e||!e.event)return void k.warn("worker message received with no "+(e?"event name":"data"));const s=this.hls;if(this.hls)switch(e.event){case"init":{var i;const t=null==(i=this.workerContext)?void 0:i.objectURL;t&&self.URL.revokeObjectURL(t);break}case"transmuxComplete":this.handleTransmuxComplete(e.data);break;case"flush":this.onFlush(e.data);break;case"workerLog":k[e.data.logType]&&k[e.data.logType](e.data.message);break;default:e.data=e.data||{},e.data.frag=this.frag,e.data.id=this.id,s.trigger(e.event,e.data)}}configureTransmuxer(t){const{transmuxer:e}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:t}):e&&e.configure(t)}handleTransmuxComplete(t){t.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(t)}}function Mr(t,e){if(t.length!==e.length)return!1;for(let s=0;st[s]!==e[s]))}function Nr(t,e){return e.label.toLowerCase()===t.name.toLowerCase()&&(!e.language||e.language.toLowerCase()===(t.lang||"").toLowerCase())}class Ur{constructor(t){this.buffered=void 0;const e=(e,s,i)=>{if((s>>>=0)>i-1)throw new DOMException(`Failed to execute '${e}' on 'TimeRanges': The index provided (${s}) is greater than the maximum bound (${i})`);return t[s][e]};this.buffered={get length(){return t.length},end(s){return e("end",s,t.length)},start(s){return e("start",s,t.length)}}}}class Br{constructor(t){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=t}append(t,e,s){const i=this.queues[e];i.push(t),1!==i.length||s||this.executeNext(e)}insertAbort(t,e){this.queues[e].unshift(t),this.executeNext(e)}appendBlocker(t){let e;const s=new Promise((t=>{e=t})),i={execute:e,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(i,t),s}executeNext(t){const e=this.queues[t];if(e.length){const s=e[0];try{s.execute()}catch(e){k.warn(`[buffer-operation-queue]: Exception executing "${t}" SourceBuffer operation: ${e}`),s.onError(e);const i=this.buffers[t];null!=i&&i.updating||this.shiftAndExecuteNext(t)}}}shiftAndExecuteNext(t){this.queues[t].shift(),this.executeNext(t)}current(t){return this.queues[t][0]}}const $r=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function Gr(t){const e=t.querySelectorAll("source");[].slice.call(e).forEach((e=>{t.removeChild(e)}))}const Kr={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},Hr=t=>String.fromCharCode(Kr[t]||t),Vr=15,Yr=100,Wr={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},jr={17:2,18:4,21:6,22:8,23:10,19:13,20:15},qr={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Xr={25:2,26:4,29:6,30:8,31:10,27:13,28:15},zr=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Qr{constructor(){this.time=null,this.verboseLevel=0}log(t,e){if(this.verboseLevel>=t){const s="function"==typeof e?e():e;k.log(`${this.time} [${t}] ${s}`)}}}const Jr=function(t){const e=[];for(let s=0;sYr&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Yr)}moveCursor(t){const e=this.pos+t;if(t>1)for(let t=this.pos+1;t=144&&this.backSpace();const e=Hr(t);this.pos>=Yr?this.logger.log(0,(()=>"Cannot insert "+t.toString(16)+" ("+e+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(e,this.currPenState),this.moveCursor(1))}clearFromPos(t){let e;for(e=t;e"pacData = "+JSON.stringify(t)));let e=t.row-1;if(this.nrRollUpRows&&e"bkgData = "+JSON.stringify(t))),this.backSpace(),this.setPen(t),this.insertChar(32)}setRollUpRows(t){this.nrRollUpRows=t}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const t=this.currRow+1-this.nrRollUpRows,e=this.rows.splice(t,1)[0];e.clear(),this.rows.splice(this.currRow,0,e),this.logger.log(2,"Rolling up")}getDisplayText(t){t=t||!1;const e=[];let s="",i=-1;for(let s=0;s0&&(s=t?"["+e.join(" | ")+"]":e.join("\n")),s}getTextAndFormat(){return this.rows}}class rn{constructor(t,e,s){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=t,this.outputFilter=e,this.mode=null,this.verbose=0,this.displayedMemory=new sn(s),this.nonDisplayedMemory=new sn(s),this.lastOutputScreen=new sn(s),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=s}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(t){this.outputFilter=t}setPAC(t){this.writeScreen.setPAC(t)}setBkgData(t){this.writeScreen.setBkgData(t)}setMode(t){t!==this.mode&&(this.mode=t,this.logger.log(2,(()=>"MODE="+t)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=t)}insertChars(t){for(let e=0;ee+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(t){this.logger.log(2,"RU("+t+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(t)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const t=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=t,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(t){this.logger.log(2,"TO("+t+") - Tab Offset"),this.writeScreen.moveCursor(t)}ccMIDROW(t){const e={flash:!1};if(e.underline=t%2==1,e.italics=t>=46,e.italics)e.foreground="white";else{const s=Math.floor(t/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];e.foreground=i[s]}this.logger.log(2,"MIDROW: "+JSON.stringify(e)),this.writeScreen.setPen(e)}outputDataUpdate(t=!1){const e=this.logger.time;null!==e&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),t&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(t){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,t,this.displayedMemory),this.cueStartTime=t))}}class nn{constructor(t,e,s){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const i=this.logger=new Qr;this.channels=[null,new rn(t,e,i),new rn(t+1,s,i)]}getHandler(t){return this.channels[t].getHandler()}setHandler(t,e){this.channels[t].setHandler(e)}addData(t,e){this.logger.time=t;for(let t=0;t"["+Jr([e[t],e[t+1]])+"] -> ("+Jr([s,i])+")"));const a=this.cmdHistory;if(s>=16&&s<=31){if(on(s,i,a)){an(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Jr([s,i])+") is dropped"));continue}an(s,i,this.cmdHistory),r=this.parseCmd(s,i),r||(r=this.parseMidrow(s,i)),r||(r=this.parsePAC(s,i)),r||(r=this.parseBackgroundAttributes(s,i))}else an(null,null,a);if(!r&&(n=this.parseChars(s,i),n)){const t=this.currentChannel;if(t&&t>0){this.channels[t].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}r||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Jr([s,i])+" orig: "+Jr([e[t],e[t+1]])))}}parseCmd(t,e){if(!((20===t||28===t||21===t||29===t)&&e>=32&&e<=47)&&!((23===t||31===t)&&e>=33&&e<=35))return!1;const s=20===t||21===t||23===t?1:2,i=this.channels[s];return 20===t||21===t||28===t||29===t?32===e?i.ccRCL():33===e?i.ccBS():34===e?i.ccAOF():35===e?i.ccAON():36===e?i.ccDER():37===e?i.ccRU(2):38===e?i.ccRU(3):39===e?i.ccRU(4):40===e?i.ccFON():41===e?i.ccRDC():42===e?i.ccTR():43===e?i.ccRTD():44===e?i.ccEDM():45===e?i.ccCR():46===e?i.ccENM():47===e&&i.ccEOC():i.ccTO(e-32),this.currentChannel=s,!0}parseMidrow(t,e){let s=0;if((17===t||25===t)&&e>=32&&e<=47){if(s=17===t?1:2,s!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const i=this.channels[s];return!!i&&(i.ccMIDROW(e),this.logger.log(3,(()=>"MIDROW ("+Jr([t,e])+")")),!0)}return!1}parsePAC(t,e){let s;if(!((t>=17&&t<=23||t>=25&&t<=31)&&e>=64&&e<=127)&&!((16===t||24===t)&&e>=64&&e<=95))return!1;const i=t<=23?1:2;s=e>=64&&e<=95?1===i?Wr[t]:qr[t]:1===i?jr[t]:Xr[t];const r=this.channels[i];return!!r&&(r.setPAC(this.interpretPAC(s,e)),this.currentChannel=i,!0)}interpretPAC(t,e){let s;const i={color:null,italics:!1,indent:null,underline:!1,row:t};return s=e>95?e-96:e-64,i.underline=1==(1&s),s<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(s/2)]:s<=15?(i.italics=!0,i.color="white"):i.indent=4*Math.floor((s-16)/2),i}parseChars(t,e){let s,i=null,r=null;if(t>=25?(s=2,r=t-8):(s=1,r=t),r>=17&&r<=19){let t;t=17===r?e+80:18===r?e+112:e+144,this.logger.log(2,(()=>"Special char '"+Hr(t)+"' in channel "+s)),i=[t]}else t>=32&&t<=127&&(i=0===e?[t]:[t,e]);return i&&this.logger.log(3,(()=>"Char codes = "+Jr(i).join(","))),i}parseBackgroundAttributes(t,e){if(!((16===t||24===t)&&e>=32&&e<=47)&&!((23===t||31===t)&&e>=45&&e<=47))return!1;let s;const i={};16===t||24===t?(s=Math.floor((e-32)/2),i.background=zr[s],e%2==1&&(i.background=i.background+"_semi")):45===e?i.background="transparent":(i.foreground="black",47===e&&(i.underline=!0));const r=t<=23?1:2;return this.channels[r].setBkgData(i),!0}reset(){for(let t=0;tt)&&(this.startTime=t),this.endTime=e,this.screen=s,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var hn=function(){if(null!=H&&H.VTTCue)return self.VTTCue;const t=["","lr","rl"],e=["start","middle","end","left","right"];function s(t,e){if("string"!=typeof e)return!1;if(!Array.isArray(t))return!1;const s=e.toLowerCase();return!!~t.indexOf(s)&&s}function i(t){return s(e,t)}function r(t,...e){let s=1;for(;s100)throw new Error("Position must be between 0 and 100.");T=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",r({},l,{get:function(){return E},set:function(t){const e=i(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");E=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",r({},l,{get:function(){return S},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");S=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",r({},l,{get:function(){return L},set:function(t){const e=i(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");L=e,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class dn{decode(t,e){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))}}function cn(t){function e(t,e,s,i){return 3600*(0|t)+60*(0|e)+(0|s)+parseFloat(i||0)}const s=t.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return s?parseFloat(s[2])>59?e(s[2],s[3],0,s[4]):e(s[1],s[2],s[3],s[4]):null}class un{constructor(){this.values=Object.create(null)}set(t,e){this.get(t)||""===e||(this.values[t]=e)}get(t,e,s){return s?this.has(t)?this.values[t]:e[s]:this.has(t)?this.values[t]:e}has(t){return t in this.values}alt(t,e,s){for(let i=0;i=0&&s<=100)return this.set(t,s),!0}return!1}}function fn(t,e,s,i){const r=i?t.split(i):[t];for(const t in r){if("string"!=typeof r[t])continue;const i=r[t].split(s);if(2!==i.length)continue;e(i[0],i[1])}}const gn=new hn(0,0,""),mn="middle"===gn.align?"middle":"center";function pn(t,e,s){const i=t;function r(){const e=cn(t);if(null===e)throw new Error("Malformed timestamp: "+i);return t=t.replace(/^[^\sa-zA-Z-]+/,""),e}function n(){t=t.replace(/^\s+/,"")}if(n(),e.startTime=r(),n(),"--\x3e"!==t.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+i);t=t.slice(3),n(),e.endTime=r(),n(),function(t,e){const i=new un;fn(t,(function(t,e){let r;switch(t){case"region":for(let r=s.length-1;r>=0;r--)if(s[r].id===e){i.set(t,s[r].region);break}break;case"vertical":i.alt(t,e,["rl","lr"]);break;case"line":r=e.split(","),i.integer(t,r[0]),i.percent(t,r[0])&&i.set("snapToLines",!1),i.alt(t,r[0],["auto"]),2===r.length&&i.alt("lineAlign",r[1],["start",mn,"end"]);break;case"position":r=e.split(","),i.percent(t,r[0]),2===r.length&&i.alt("positionAlign",r[1],["start",mn,"end","line-left","line-right","auto"]);break;case"size":i.percent(t,e);break;case"align":i.alt(t,e,["start",mn,"end","left","right"])}}),/:/,/\s/),e.region=i.get("region",null),e.vertical=i.get("vertical","");let r=i.get("line","auto");"auto"===r&&-1===gn.line&&(r=-1),e.line=r,e.lineAlign=i.get("lineAlign","start"),e.snapToLines=i.get("snapToLines",!0),e.size=i.get("size",100),e.align=i.get("align",mn);let n=i.get("position","auto");"auto"===n&&50===gn.position&&(n="start"===e.align||"left"===e.align?0:"end"===e.align||"right"===e.align?100:50),e.position=n}(t,e)}function vn(t){return t.replace(//gi,"\n")}class yn{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new dn,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(t){const e=this;function s(){let t=e.buffer,s=0;for(t=vn(t);s>>0).toString()};function Ln(t,e,s){return Sn(t.toString())+Sn(e.toString())+Sn(s)}function An(t,e,s,i,r,n,a){const o=new yn,l=Et(new Uint8Array(t)).trim().replace(Tn,"\n").split("\n"),h=[],d=e?function(t,e=1){return mr(t,9e4,1/e)}(e.baseTime,e.timescale):0;let c,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(t){const n=s[i];let a=s.ccOffset;const o=(f-d)/9e4;if(null!=n&&n.new&&(void 0!==g?a=s.ccOffset=n.start:function(t,e,s){let i=t[e],r=t[i.prevCC];if(!r||!r.new&&i.new)return t.ccOffset=t.presentationOffset=i.start,void(i.new=!1);for(;null!=(n=r)&&n.new;){var n;t.ccOffset+=i.start-r.start,i.new=!1,i=r,r=t[i.prevCC]}t.presentationOffset=s}(s,i,o)),o){if(!e)return void(c=new Error("Missing initPTS for VTT MPEGTS"));a=o-s.presentationOffset}const l=t.endTime-t.startTime,u=Sr(9e4*(t.startTime+a-g),9e4*r)/9e4;t.startTime=Math.max(u,0),t.endTime=Math.max(u+l,0);const m=t.text.trim();t.text=decodeURIComponent(encodeURIComponent(m)),t.id||(t.id=Ln(t.startTime,t.endTime,m)),t.endTime>0&&h.push(t)},o.onparsingerror=function(t){c=t},o.onflush=function(){c?a(c):n(h)},l.forEach((t=>{if(m){if(En(t,"X-TIMESTAMP-MAP=")){m=!1,t.slice(16).split(",").forEach((t=>{En(t,"LOCAL:")?u=t.slice(6):En(t,"MPEGTS:")&&(f=parseInt(t.slice(7)))}));try{g=function(t){let e=parseInt(t.slice(-3));const s=parseInt(t.slice(-6,-4)),i=parseInt(t.slice(-9,-7)),r=t.length>9?parseInt(t.substring(0,t.indexOf(":"))):0;if(!(p(e)&&p(s)&&p(i)&&p(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${t}`);return e+=1e3*s,e+=6e4*i,e+=36e5*r,e}(u)/1e3}catch(t){c=t}return}""===t&&(m=!1)}o.parse(t+"\n")})),o.flush()}const Rn="stpp.ttml.im1t",bn=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,kn=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,Dn={left:"start",center:"center",right:"end",start:"start",end:"end"};function In(t,e,s,i){const r=Pt(new Uint8Array(t),["mdat"]);if(0===r.length)return void i(new Error("Could not parse IMSC1 mdat"));const n=r.map((t=>Et(t))),a=function(t,e,s=1,i=!1){return mr(t,e,1/s,i)}(e.baseTime,1,e.timescale);try{n.forEach((t=>s(function(t,e){const s=(new DOMParser).parseFromString(t,"text/xml"),i=s.getElementsByTagName("tt")[0];if(!i)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(r).reduce(((t,e)=>(t[e]=i.getAttribute(`ttp:${e}`)||r[e],t)),{}),a="preserve"!==i.getAttribute("xml:space"),o=Cn(wn(i,"styling","style")),l=Cn(wn(i,"layout","region")),h=wn(i,"body","[begin]");return[].map.call(h,(t=>{const s=_n(t,a);if(!s||!t.hasAttribute("begin"))return null;const i=Fn(t.getAttribute("begin"),n),r=Fn(t.getAttribute("dur"),n);let h=Fn(t.getAttribute("end"),n);if(null===i)throw Pn(t);if(null===h){if(null===r)throw Pn(t);h=i+r}const d=new hn(i-e,h-e,s);d.id=Ln(d.startTime,d.endTime,d.text);const c=function(t,e,s){const i="http://www.w3.org/ns/ttml#styling";let r=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=t&&t.hasAttribute("style")?t.getAttribute("style"):null;a&&s.hasOwnProperty(a)&&(r=s[a]);return n.reduce(((s,n)=>{const a=xn(e,i,n)||xn(t,i,n)||xn(r,i,n);return a&&(s[n]=a),s}),{})}(l[t.getAttribute("region")],o[t.getAttribute("style")],o),{textAlign:u}=c;if(u){const t=Dn[u];t&&(d.lineAlign=t),d.align=u}return m(d,c),d})).filter((t=>null!==t))}(t,a))))}catch(t){i(t)}}function wn(t,e,s){const i=t.getElementsByTagName(e)[0];return i?[].slice.call(i.querySelectorAll(s)):[]}function Cn(t){return t.reduce(((t,e)=>{const s=e.getAttribute("xml:id");return s&&(t[s]=e),t}),{})}function _n(t,e){return[].slice.call(t.childNodes).reduce(((t,s,i)=>{var r;return"br"===s.nodeName&&i?t+"\n":null!=(r=s.childNodes)&&r.length?_n(s,e):e?t+s.textContent.trim().replace(/\s+/g," "):t+s.textContent}),"")}function xn(t,e,s){return t&&t.hasAttributeNS(e,s)?t.getAttributeNS(e,s):null}function Pn(t){return new Error(`Could not parse ttml timestamp ${t}`)}function Fn(t,e){if(!t)return null;let s=cn(t);return null===s&&(bn.test(t)?s=function(t,e){const s=bn.exec(t),i=(0|s[4])+(0|s[5])/e.subFrameRate;return 3600*(0|s[1])+60*(0|s[2])+(0|s[3])+i/e.frameRate}(t,e):kn.test(t)&&(s=function(t,e){const s=kn.exec(t),i=Number(s[1]);switch(s[2]){case"h":return 3600*i;case"m":return 60*i;case"ms":return 1e3*i;case"f":return i/e.frameRate;case"t":return i/e.tickRate}return i}(t,e))),s}function Mn(t){return t.characteristics&&/transcribes-spoken-dialog/gi.test(t.characteristics)&&/describes-music-and-sound/gi.test(t.characteristics)?"captions":"subtitles"}function On(t,e){return!!t&&t.kind===Mn(e)&&Nr(e,t)}class Nn{constructor(t){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=t,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(t){this.streamController=t}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:t}=this;t.on(T.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(T.BUFFER_CODECS,this.onBufferCodecs,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:t}=this;t.off(T.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(T.BUFFER_CODECS,this.onBufferCodecs,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(t,e){const s=this.hls.levels[e.droppedLevel];this.isLevelAllowed(s)&&this.restrictedLevels.push({bitrate:s.bitrate,height:s.height,width:s.width})}onMediaAttaching(t,e){this.media=e.media instanceof HTMLVideoElement?e.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(t,e){const s=this.hls;this.restrictedLevels=[],this.firstLevel=e.firstLevel,s.config.capLevelToPlayerSize&&e.video&&this.startCapping()}onLevelsUpdated(t,e){this.timer&&p(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(t,e){this.hls.config.capLevelToPlayerSize&&e.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const t=this.hls.levels;if(t.length){const e=this.hls,s=this.getMaxLevel(t.length-1);s!==this.autoLevelCapping&&k.log(`Setting autoLevelCapping to ${s}: ${t[s].height}p@${t[s].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),e.autoLevelCapping=s,e.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=e.autoLevelCapping}}}getMaxLevel(t){const e=this.hls.levels;if(!e.length)return-1;const s=e.filter(((e,s)=>this.isLevelAllowed(e)&&s<=t));return this.clientRect=null,Nn.getMaxLevelByMediaSize(s,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const t=this.media,e={width:0,height:0};if(t){const s=t.getBoundingClientRect();e.width=s.width,e.height=s.height,e.width||e.height||(e.width=s.right-s.left||t.width||0,e.height=s.bottom-s.top||t.height||0)}return this.clientRect=e,e}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let t=1;if(!this.hls.config.ignoreDevicePixelRatio)try{t=self.devicePixelRatio}catch(t){}return t}isLevelAllowed(t){return!this.restrictedLevels.some((e=>t.bitrate===e.bitrate&&t.width===e.width&&t.height===e.height))}static getMaxLevelByMediaSize(t,e,s){if(null==t||!t.length)return-1;let i=t.length-1;const r=Math.max(e,s);for(let e=0;e=r||s.height>=r)&&(n=s,!(a=t[e+1])||n.width!==a.width||n.height!==a.height)){i=e;break}}var n,a;return i}}const Un="[eme]";class Bn{constructor(t){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=Bn.CDMCleanupPromise?[Bn.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=k.debug.bind(k,Un),this.log=k.log.bind(k,Un),this.warn=k.warn.bind(k,Un),this.error=k.error.bind(k,Un),this.hls=t,this.config=t.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const t=this.config;t.requestMediaKeySystemAccessFunc=null,t.licenseXhrSetup=t.licenseResponseCallback=void 0,t.drmSystems=t.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(T.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(T.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(T.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(T.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(t){const{drmSystems:e,widevineLicenseUrl:s}=this.config,i=e[t];if(i)return i.licenseUrl;if(t===V.WIDEVINE&&s)return s;throw new Error(`no license server URL configured for key-system "${t}"`)}getServerCertificateUrl(t){const{drmSystems:e}=this.config,s=e[t];if(s)return s.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${t}"]`)}attemptKeySystemAccess(t){const e=this.hls.levels,s=(t,e,s)=>!!t&&s.indexOf(t)===e,i=e.map((t=>t.audioCodec)).filter(s),r=e.map((t=>t.videoCodec)).filter(s);return i.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((e,s)=>{const n=t=>{const a=t.shift();this.getMediaKeysPromise(a,i,r).then((t=>e({keySystem:a,mediaKeys:t}))).catch((e=>{t.length?n(t):s(e instanceof $n?e:new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_ACCESS,error:e,fatal:!0},e.message))}))};n(t)}))}requestMediaKeySystemAccess(t,e){const{requestMediaKeySystemAccessFunc:s}=this.config;if("function"!=typeof s){let t=`Configured requestMediaKeySystemAccess is not a function ${s}`;return null===it&&"http:"===self.location.protocol&&(t=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(t))}return s(t,e)}getMediaKeysPromise(t,e,s){const i=function(t,e,s,i){let r;switch(t){case V.FAIRPLAY:r=["cenc","sinf"];break;case V.WIDEVINE:case V.PLAYREADY:r=["cenc"];break;case V.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${t}`)}return function(t,e,s,i){return[{initDataTypes:t,persistentState:i.persistentState||"optional",distinctiveIdentifier:i.distinctiveIdentifier||"optional",sessionTypes:i.sessionTypes||[i.sessionType||"temporary"],audioCapabilities:e.map((t=>({contentType:`audio/mp4; codecs="${t}"`,robustness:i.audioRobustness||"",encryptionScheme:i.audioEncryptionScheme||null}))),videoCapabilities:s.map((t=>({contentType:`video/mp4; codecs="${t}"`,robustness:i.videoRobustness||"",encryptionScheme:i.videoEncryptionScheme||null})))}]}(r,e,s,i)}(t,e,s,this.config.drmSystemOptions),r=this.keySystemAccessPromises[t];let n=null==r?void 0:r.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${t}" key-system access with config: ${JSON.stringify(i)}`),n=this.requestMediaKeySystemAccess(t,i);const e=this.keySystemAccessPromises[t]={keySystemAccess:n};return n.catch((e=>{this.log(`Failed to obtain access to key-system "${t}": ${e}`)})),n.then((s=>{this.log(`Access for key-system "${s.keySystem}" obtained`);const i=this.fetchServerCertificate(t);return this.log(`Create media-keys for "${t}"`),e.mediaKeys=s.createMediaKeys().then((e=>(this.log(`Media-keys created for "${t}"`),i.then((s=>s?this.setMediaKeysServerCertificate(e,t,s):e))))),e.mediaKeys.catch((e=>{this.error(`Failed to create media-keys for "${t}"}: ${e}`)})),e.mediaKeys}))}return n.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:t,keySystem:e,mediaKeys:s}){this.log(`Creating key-system session "${e}" keyId: ${At(t.keyId||[])}`);const i=s.createSession(),r={decryptdata:t,keySystem:e,mediaKeys:s,mediaKeysSession:i,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(t){const e=t.decryptdata;if(e.pssh){const s=this.createMediaKeySessionContext(t),i=this.getKeyIdString(e),r="cenc";this.keyIdToKeySessionPromise[i]=this.generateRequestWithPreferredKeySession(s,r,e.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(t)}getKeyIdString(t){if(!t)throw new Error("Could not read keyId of undefined decryptdata");if(null===t.keyId)throw new Error("keyId is null");return At(t.keyId)}updateKeySession(t,e){var s;const i=t.mediaKeysSession;return this.log(`Updating key-session "${i.sessionId}" for keyID ${At((null==(s=t.decryptdata)?void 0:s.keyId)||[])}\n } (data length: ${e?e.byteLength:e})`),i.update(e)}selectKeySystemFormat(t){const e=Object.keys(t.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${t.sn} ${t.type}: ${t.level}) key formats ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)),this.keyFormatPromise}getKeyFormatPromise(t){return new Promise(((e,s)=>{const i=st(this.config),r=t.map(X).filter((t=>!!t&&-1!==i.indexOf(t)));return this.getKeySystemSelectionPromise(r).then((({keySystem:t})=>{const i=et(t);i?e(i):s(new Error(`Unable to find format for key-system "${t}"`))})).catch(s)}))}loadKey(t){const e=t.keyInfo.decryptdata,s=this.getKeyIdString(e),i=`(keyId: ${s} format: "${e.keyFormat}" method: ${e.method} uri: ${e.uri})`;this.log(`Starting session for key ${i}`);let r=this.keyIdToKeySessionPromise[s];return r||(r=this.keyIdToKeySessionPromise[s]=this.getKeySystemForKeyPromise(e).then((({keySystem:s,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${t.frag.sn} ${t.frag.type}: ${t.frag.level} using key ${i}`),this.attemptSetMediaKeys(s,r).then((()=>{this.throwIfDestroyed();const t=this.createMediaKeySessionContext({keySystem:s,mediaKeys:r,decryptdata:e});return this.generateRequestWithPreferredKeySession(t,"cenc",e.pssh,"playlist-key")}))))),r.catch((t=>this.handleError(t)))),r}throwIfDestroyed(t="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(t){this.hls&&(this.error(t.message),t instanceof $n?this.hls.trigger(T.ERROR,t.data):this.hls.trigger(T.ERROR,{type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_KEYS,error:t,fatal:!0}))}getKeySystemForKeyPromise(t){const e=this.getKeyIdString(t),s=this.keyIdToKeySessionPromise[e];if(!s){const e=X(t.keyFormat),s=e?[e]:st(this.config);return this.attemptKeySystemAccess(s)}return s}getKeySystemSelectionPromise(t){if(t.length||(t=st(this.config)),0===t.length)throw new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(t)}_onMediaEncrypted(t){const{initDataType:e,initData:s}=t,i=`"${t.type}" event: init data type: "${e}"`;if(this.debug(i),null===s)return;let r,n;if("sinf"===e&&this.config.drmSystems[V.FAIRPLAY]){const t=Dt(new Uint8Array(s));try{const e=$(JSON.parse(t).sinf),s=$t(new Uint8Array(e));if(!s)throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc");r=s.subarray(8,24),n=V.FAIRPLAY}catch(t){return void this.warn(`${i} Failed to parse sinf: ${t}`)}}else{const t=function(t){const e=[];if(t instanceof ArrayBuffer){const s=t.byteLength;let i=0;for(;i+32t.systemId===Z))[0];if(!e)return void(0===t.length||t.some((t=>!t.systemId))?this.warn(`${i} contains incomplete or invalid pssh data`):this.log(`ignoring ${i} for ${t.map((t=>tt(t.systemId))).join(",")} pssh data in favor of playlist keys`));if(n=tt(e.systemId),0===e.version&&e.data){const t=e.data.length-22;r=e.data.subarray(t,t+16)}}if(!n||!r)return;const a=At(r),{keyIdToKeySessionPromise:o,mediaKeySessions:l}=this;let h=o[a];for(let t=0;tthis.generateRequestWithPreferredKeySession(i,e,s,"encrypted-event-key-match")));break}}h||(h=o[a]=this.getKeySystemSelectionPromise([n]).then((({keySystem:t,mediaKeys:i})=>{var n;this.throwIfDestroyed();const o=new zt("ISO-23001-7",a,null!=(n=et(t))?n:"");return o.pssh=new Uint8Array(s),o.keyId=r,this.attemptSetMediaKeys(t,i).then((()=>{this.throwIfDestroyed();const r=this.createMediaKeySessionContext({decryptdata:o,keySystem:t,mediaKeys:i});return this.generateRequestWithPreferredKeySession(r,e,s,"encrypted-event-no-match")}))}))),h.catch((t=>this.handleError(t)))}_onWaitingForKey(t){this.log(`"${t.type}" event`)}attemptSetMediaKeys(t,e){const s=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${t}"`);const i=Promise.all(s).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(e)}));return this.setMediaKeysQueue.push(i),i.then((()=>{this.log(`Media-keys set for "${t}"`),s.push(i),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((t=>-1===s.indexOf(t)))}))}generateRequestWithPreferredKeySession(t,e,s,i){var r,n;const a=null==(r=this.config.drmSystems)||null==(n=r[t.keySystem])?void 0:n.generateRequest;if(a)try{const i=a.call(this.hls,e,s,t);if(!i)throw new Error("Invalid response from configured generateRequest filter");e=i.initDataType,s=t.decryptdata.pssh=i.initData?new Uint8Array(i.initData):null}catch(t){var o;if(this.warn(t.message),null!=(o=this.hls)&&o.config.debug)throw t}if(null===s)return this.log(`Skipping key-session request for "${i}" (no initData)`),Promise.resolve(t);const l=this.getKeyIdString(t.decryptdata);this.log(`Generating key-session request for "${i}": ${l} (init data type: ${e} length: ${s?s.byteLength:null})`);const h=new Pr,d=t._onmessage=e=>{const s=t.mediaKeysSession;if(!s)return void h.emit("error",new Error("invalid state"));const{messageType:i,message:r}=e;this.log(`"${i}" message event for session "${s.sessionId}" message size: ${r.byteLength}`),"license-request"===i||"license-renewal"===i?this.renewLicense(t,r).catch((t=>{this.handleError(t),h.emit("error",t)})):"license-release"===i?t.keySystem===V.FAIRPLAY&&(this.updateKeySession(t,K("acknowledged")),this.removeSession(t)):this.warn(`unhandled media key message type "${i}"`)},c=t._onkeystatuseschange=e=>{if(!t.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(t);const s=t.keyStatus;h.emit("keyStatus",s),"expired"===s&&(this.warn(`${t.keySystem} expired for key ${l}`),this.renewKeySession(t))};t.mediaKeysSession.addEventListener("message",d),t.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((t,e)=>{h.on("error",e),h.on("keyStatus",(s=>{s.startsWith("usable")?t():"output-restricted"===s?e(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===s?e(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${s}"`)):"expired"===s?e(new Error("key expired while generating request")):this.warn(`unhandled key status change "${s}"`)}))}));return t.mediaKeysSession.generateRequest(e,s).then((()=>{var e;this.log(`Request generated for key-session "${null==(e=t.mediaKeysSession)?void 0:e.sessionId}" keyId: ${l}`)})).catch((t=>{throw new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_SESSION,error:t,fatal:!1},`Error generating key-session request: ${t}`)})).then((()=>u)).catch((e=>{throw h.removeAllListeners(),this.removeSession(t),e})).then((()=>(h.removeAllListeners(),t)))}onKeyStatusChange(t){t.mediaKeysSession.keyStatuses.forEach(((e,s)=>{this.log(`key status change "${e}" for keyStatuses keyId: ${At("buffer"in s?new Uint8Array(s.buffer,s.byteOffset,s.byteLength):new Uint8Array(s))} session keyId: ${At(new Uint8Array(t.decryptdata.keyId||[]))} uri: ${t.decryptdata.uri}`),t.keyStatus=e}))}fetchServerCertificate(t){const e=this.config,s=new(0,e.loader)(e),i=this.getServerCertificateUrl(t);return i?(this.log(`Fetching server certificate for "${t}"`),new Promise(((r,n)=>{const a={responseType:"arraybuffer",url:i},o=e.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(t,e,s,i)=>{r(t.data)},onError:(e,s,r,o)=>{n(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:u({url:a.url,data:void 0},e)},`"${t}" certificate request failed (${i}). Status: ${e.code} (${e.text})`))},onTimeout:(e,s,r)=>{n(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:a.url,data:void 0}},`"${t}" certificate request timed out (${i})`))},onAbort:(t,e,s)=>{n(new Error("aborted"))}};s.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(t,e,s){return new Promise(((i,r)=>{t.setServerCertificate(s).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==s?void 0:s.byteLength}) on "${e}"`),i(t)})).catch((t=>{r(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:t,fatal:!0},t.message))}))}))}renewLicense(t,e){return this.requestLicense(t,new Uint8Array(e)).then((e=>this.updateKeySession(t,new Uint8Array(e)).catch((t=>{throw new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:t,fatal:!0},t.message)}))))}unpackPlayReadyKeyMessage(t,e){const s=String.fromCharCode.apply(null,new Uint16Array(e.buffer));if(!s.includes("PlayReadyKeyMessage"))return t.setRequestHeader("Content-Type","text/xml; charset=utf-8"),e;const i=(new DOMParser).parseFromString(s,"application/xml"),r=i.querySelectorAll("HttpHeader");if(r.length>0){let e;for(let s=0,i=r.length;s in key message");return K(atob(l))}setupLicenseXHR(t,e,s,i){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!s.decryptdata)throw new Error("Key removed");return r.call(this.hls,t,e,s,i)})).catch((n=>{if(!s.decryptdata)throw n;return t.open("POST",e,!0),r.call(this.hls,t,e,s,i)})).then((s=>{t.readyState||t.open("POST",e,!0);return{xhr:t,licenseChallenge:s||i}})):(t.open("POST",e,!0),Promise.resolve({xhr:t,licenseChallenge:i}))}requestLicense(t,e){const s=this.config.keyLoadPolicy.default;return new Promise(((i,r)=>{const n=this.getLicenseServerUrl(t.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!t.mediaKeysSession)return r(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let e=a.response;this.log(`License received ${e instanceof ArrayBuffer?e.byteLength:e}`);const s=this.config.licenseResponseCallback;if(s)try{e=s.call(this.hls,a,n,t)}catch(t){this.error(t)}i(e)}else{const o=s.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)r(new $n({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const s=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${s} attempts left`),this.requestLicense(t,e).then(i,r)}}},t.licenseXhr&&t.licenseXhr.readyState!==XMLHttpRequest.DONE&&t.licenseXhr.abort(),t.licenseXhr=a,this.setupLicenseXHR(a,n,t,e).then((({xhr:e,licenseChallenge:s})=>{t.keySystem==V.PLAYREADY&&(s=this.unpackPlayReadyKeyMessage(e,s)),e.send(s)}))}))}onMediaAttached(t,e){if(!this.config.emeEnabled)return;const s=e.media;this.media=s,s.addEventListener("encrypted",this.onMediaEncrypted),s.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const t=this.media,e=this.mediaKeySessions;t&&(t.removeEventListener("encrypted",this.onMediaEncrypted),t.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},zt.clearKeyUriToKeyIdMap();const s=e.length;Bn.CDMCleanupPromise=Promise.all(e.map((t=>this.removeSession(t))).concat(null==t?void 0:t.setMediaKeys(null).catch((t=>{this.log(`Could not clear media keys: ${t}`)})))).then((()=>{s&&(this.log("finished closing key sessions and clearing media keys"),e.length=0)})).catch((t=>{this.log(`Could not close sessions and clear media keys: ${t}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(t,{sessionKeys:e}){if(e&&this.config.emeEnabled&&!this.keyFormatPromise){const t=e.reduce(((t,e)=>(-1===t.indexOf(e.keyFormat)&&t.push(e.keyFormat),t)),[]);this.log(`Selecting key-system from session-keys ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)}}removeSession(t){const{mediaKeysSession:e,licenseXhr:s}=t;if(e){this.log(`Remove licenses and keys and close session ${e.sessionId}`),t._onmessage&&(e.removeEventListener("message",t._onmessage),t._onmessage=void 0),t._onkeystatuseschange&&(e.removeEventListener("keystatuseschange",t._onkeystatuseschange),t._onkeystatuseschange=void 0),s&&s.readyState!==XMLHttpRequest.DONE&&s.abort(),t.mediaKeysSession=t.decryptdata=t.licenseXhr=void 0;const i=this.mediaKeySessions.indexOf(t);return i>-1&&this.mediaKeySessions.splice(i,1),e.remove().catch((t=>{this.log(`Could not remove session: ${t}`)})).then((()=>e.close())).catch((t=>{this.log(`Could not close session: ${t}`)}))}}}Bn.CDMCleanupPromise=void 0;class $n extends Error{constructor(t,e){super(e),this.data=void 0,t.error||(t.error=new Error(e)),this.data=t,t.err=t.error}}var Gn,Kn,Hn;!function(t){t.MANIFEST="m",t.AUDIO="a",t.VIDEO="v",t.MUXED="av",t.INIT="i",t.CAPTION="c",t.TIMED_TEXT="tt",t.KEY="k",t.OTHER="o"}(Gn||(Gn={})),function(t){t.DASH="d",t.HLS="h",t.SMOOTH="s",t.OTHER="o"}(Kn||(Kn={})),function(t){t.OBJECT="CMCD-Object",t.REQUEST="CMCD-Request",t.SESSION="CMCD-Session",t.STATUS="CMCD-Status"}(Hn||(Hn={}));const Vn={[Hn.OBJECT]:["br","d","ot","tb"],[Hn.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[Hn.SESSION]:["cid","pr","sf","sid","st","v"],[Hn.STATUS]:["bs","rtp"]};class Yn{constructor(t,e){this.value=void 0,this.params=void 0,Array.isArray(t)&&(t=t.map((t=>t instanceof Yn?t:new Yn(t)))),this.value=t,this.params=e}}class Wn{constructor(t){this.description=void 0,this.description=t}}function jn(t,e,s,i){return new Error(`failed to ${t} "${r=e,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${s}`,{cause:i});var r}const qn="Bare Item";const Xn=/[\x00-\x1f\x7f]+/;function zn(t,e,s){return jn("serialize",t,e,s)}function Qn(t){if(!1===ArrayBuffer.isView(t))throw zn(t,"Byte Sequence");return`:${e=t,btoa(String.fromCharCode(...e))}:`;var e}function Jn(t){if(function(t){return t<-999999999999999||99999999999999912)throw zn(t,"Decimal");const s=e.toString();return s.includes(".")?s:`${s}.0`}function ea(t){const e=(s=t).description||s.toString().slice(7,-1);var s;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(e))throw zn(e,"Token");return e}function sa(t){switch(typeof t){case"number":if(!p(t))throw zn(t,qn);return Number.isInteger(t)?Jn(t):ta(t);case"string":return function(t){if(Xn.test(t))throw zn(t,"String");return`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(t);case"symbol":return ea(t);case"boolean":return function(t){if("boolean"!=typeof t)throw zn(t,"Boolean");return t?"?1":"?0"}(t);case"object":if(t instanceof Date)return function(t){return`@${Jn(t.getTime()/1e3)}`}(t);if(t instanceof Uint8Array)return Qn(t);if(t instanceof Wn)return ea(t);default:throw zn(t,qn)}}function ia(t){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(t))throw zn(t,"Key");return t}function ra(t){return null==t?"":Object.entries(t).map((([t,e])=>!0===e?`;${ia(t)}`:`;${ia(t)}=${sa(e)}`)).join("")}function na(t){return t instanceof Yn?`${sa(t.value)}${ra(t.params)}`:sa(t)}function aa(t,e={whitespace:!0}){if("object"!=typeof t)throw zn(t,"Dict");const s=t instanceof Map?t.entries():Object.entries(t),i=null!=e&&e.whitespace?" ":"";return Array.from(s).map((([t,e])=>{e instanceof Yn==!1&&(e=new Yn(e));let s=ia(t);var i;return!0===e.value?s+=ra(e.params):(s+="=",Array.isArray(e.value)?s+=`(${(i=e).value.map(na).join(" ")})${ra(i.params)}`:s+=na(e)),s})).join(`,${i}`)}const oa=t=>Math.round(t),la=t=>100*oa(t/100),ha={br:oa,d:oa,bl:la,dl:la,mtp:la,nor:(t,e)=>(null!=e&&e.baseUrl&&(t=function(t,e){const s=new URL(t),i=new URL(e);if(s.origin!==i.origin)return t;const r=s.pathname.split("/").slice(1),n=i.pathname.split("/").slice(1,-1);for(;r[0]===n[0];)r.shift(),n.shift();for(;n.length;)n.shift(),r.unshift("..");return r.join("/")}(t,e.baseUrl)),encodeURIComponent(t)),rtp:la,tb:oa};function da(t,e){const s={};if(null==t||"object"!=typeof t)return s;const i=Object.keys(t).sort(),r=m({},ha,null==e?void 0:e.formatters),n=null==e?void 0:e.filter;return i.forEach((i=>{if(null!=n&&n(i))return;let a=t[i];const o=r[i];o&&(a=o(a,e)),"v"===i&&1===a||"pr"==i&&1===a||(t=>"number"==typeof t?p(t):null!=t&&""!==t&&!1!==t)(a)&&((t=>"ot"===t||"sf"===t||"st"===t)(i)&&"string"==typeof a&&(a=new Wn(a)),s[i]=a)})),s}function ca(t,e={}){return t?function(t,e){return aa(t,e)}(da(t,e),m({whitespace:!1},e)):""}function ua(t,e,s){return m(t,function(t,e={}){if(!t)return{};const s=Object.entries(t),i=Object.entries(Vn).concat(Object.entries((null==e?void 0:e.customHeaderMap)||{})),r=s.reduce(((t,e)=>{var s;const[r,n]=e,a=(null==(s=i.find((t=>t[1].includes(r))))?void 0:s[0])||Hn.REQUEST;return null!=t[a]||(t[a]={}),t[a][r]=n,t}),{});return Object.entries(r).reduce(((t,[s,i])=>(t[s]=ca(i,e),t)),{})}(e,s))}const fa=/CMCD=[^&#]+/;function ga(t,e,s){const i=function(t,e={}){if(!t)return"";const s=ca(t,e);return`CMCD=${encodeURIComponent(s)}`}(e,s);if(!i)return t;if(fa.test(t))return t.replace(fa,i);const r=t.includes("?")?"&":"?";return`${t}${r}${i}`}function ma(t,e,s,i){t&&Object.keys(e).forEach((r=>{const n=t.filter((t=>t.groupId===r)).map((t=>{const n=m({},t);return n.details=void 0,n.attrs=new w(n.attrs),n.url=n.attrs.URI=pa(t.url,t.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",s),n.groupId=n.attrs["GROUP-ID"]=e[r],n.attrs["PATHWAY-ID"]=i,n}));t.push(...n)}))}function pa(t,e,s,i){const{HOST:r,PARAMS:n,[s]:a}=i;let o;e&&(o=null==a?void 0:a[e],o&&(t=o));const l=new self.URL(t);return r&&!o&&(l.host=r),n&&Object.keys(n).sort().forEach((t=>{t&&l.searchParams.set(t,n[t])})),l.href}const va=/^age:\s*[\d.]+\s*$/im;class ya{constructor(t){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=t&&t.xhrSetup||null,this.stats=new x,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const t=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),t&&(t.onreadystatechange=null,t.onprogress=null,4!==t.readyState&&(this.stats.aborted=!0,t.abort()))}abort(){var t;this.abortInternal(),null!=(t=this.callbacks)&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(t,e,s){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=t,this.config=e,this.callbacks=s,this.loadInternal()}loadInternal(){const{config:t,context:e}=this;if(!t||!e)return;const s=this.loader=new self.XMLHttpRequest,i=this.stats;i.loading.first=0,i.loaded=0,i.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(this.loader===s&&!this.stats.aborted)return r(s,e.url)})).catch((t=>{if(this.loader===s&&!this.stats.aborted)return s.open("GET",e.url,!0),r(s,e.url)})).then((()=>{this.loader!==s||this.stats.aborted||this.openAndSendXhr(s,e,t)})).catch((t=>{this.callbacks.onError({code:s.status,text:t.message},e,s,i)})):this.openAndSendXhr(s,e,t)}openAndSendXhr(t,e,s){t.readyState||t.open("GET",e.url,!0);const i=e.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:n}=s.loadPolicy;if(i)for(const e in i)t.setRequestHeader(e,i[e]);e.rangeEnd&&t.setRequestHeader("Range","bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=e.responseType,self.clearTimeout(this.requestTimeout),s.timeout=r&&p(r)?r:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout),t.send()}readystatechange(){const{context:t,loader:e,stats:s}=this;if(!t||!e)return;const i=e.readyState,r=this.config;if(!s.aborted&&i>=2&&(0===s.loading.first&&(s.loading.first=Math.max(self.performance.now(),s.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(s.loading.first-s.loading.start)))),4===i)){self.clearTimeout(this.requestTimeout),e.onreadystatechange=null,e.onprogress=null;const i=e.status,n="text"!==e.responseType;if(i>=200&&i<300&&(n&&e.response||null!==e.responseText)){s.loading.end=Math.max(self.performance.now(),s.loading.first);const r=n?e.response:e.responseText,a="arraybuffer"===e.responseType?r.byteLength:r.length;if(s.loaded=s.total=a,s.bwEstimate=8e3*s.total/(s.loading.end-s.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(s,t,r,e),!this.callbacks)return;const l={url:e.responseURL,data:r,code:i};this.callbacks.onSuccess(l,s,t,e)}else{const n=r.loadPolicy.errorRetry;ys(n,s.retry,!1,{url:t.url,data:void 0,code:i})?this.retry(n):(k.error(`${i} while loading ${t.url}`),this.callbacks.onError({code:i,text:e.statusText},t,e,s))}}}loadtimeout(){if(!this.config)return;const t=this.config.loadPolicy.timeoutRetry;if(ys(t,this.stats.retry,!0))this.retry(t);else{var e;k.warn(`timeout while loading ${null==(e=this.context)?void 0:e.url}`);const t=this.callbacks;t&&(this.abortInternal(),t.onTimeout(this.stats,this.context,this.loader))}}retry(t){const{context:e,stats:s}=this;this.retryDelay=ps(t,s.retry),s.retry++,k.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==e?void 0:e.url}, retrying ${s.retry}/${t.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(t){const e=this.stats;e.loaded=t.loaded,t.lengthComputable&&(e.total=t.total)}getCacheAge(){let t=null;if(this.loader&&va.test(this.loader.getAllResponseHeaders())){const e=this.loader.getResponseHeader("age");t=e?parseFloat(e):null}return t}getResponseHeader(t){return this.loader&&new RegExp(`^${t}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(t):null}}const Ta=/(\d+)-(\d+)\/(\d+)/;class Ea{constructor(t){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=t.fetchSetup||Sa,this.controller=new self.AbortController,this.stats=new x}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var t;this.abortInternal(),null!=(t=this.callbacks)&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(t,e,s){const i=this.stats;if(i.loading.start)throw new Error("Loader can only be used once.");i.loading.start=self.performance.now();const r=function(t,e){const s={method:"GET",mode:"cors",credentials:"same-origin",signal:e,headers:new self.Headers(m({},t.headers))};t.rangeEnd&&s.headers.set("Range","bytes="+t.rangeStart+"-"+String(t.rangeEnd-1));return s}(t,this.controller.signal),n=s.onProgress,a="arraybuffer"===t.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=e.loadPolicy;this.context=t,this.config=e,this.callbacks=s,this.request=this.fetchSetup(t,r),self.clearTimeout(this.requestTimeout),e.timeout=l&&p(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),s.onTimeout(i,t,this.response)}),e.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const o=Math.max(self.performance.now(),i.loading.start);if(self.clearTimeout(this.requestTimeout),e.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),s.onTimeout(i,t,this.response)}),h-(o-i.loading.start)),!r.ok){const{status:t,statusText:e}=r;throw new La(e||"fetch, bad network response",t,r)}return i.loading.first=o,i.total=function(t){const e=t.get("Content-Range");if(e){const t=function(t){const e=Ta.exec(t);if(e)return parseInt(e[2])-parseInt(e[1])+1}(e);if(p(t))return t}const s=t.get("Content-Length");if(s)return parseInt(s)}(r.headers)||i.total,n&&p(e.highWaterMark)?this.loadProgressively(r,i,t,e.highWaterMark,n):a?r.arrayBuffer():"json"===t.responseType?r.json():r.text()})).then((r=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),i.loading.end=Math.max(self.performance.now(),i.loading.first);const l=r[o];l&&(i.loaded=i.total=l);const h={url:a.url,data:r,code:a.status};n&&!p(e.highWaterMark)&&n(i,t,r,a),s.onSuccess(h,i,t,a)})).catch((e=>{if(self.clearTimeout(this.requestTimeout),i.aborted)return;const r=e&&e.code||0,n=e?e.message:null;s.onError({code:r,text:n},t,e?e.details:null,i)}))}getCacheAge(){let t=null;if(this.response){const e=this.response.headers.get("age");t=e?parseFloat(e):null}return t}getResponseHeader(t){return this.response?this.response.headers.get(t):null}loadProgressively(t,e,s,i=0,r){const n=new Ii,a=t.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&r(e,s,n.flush(),t),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return e.loaded+=h,h=i&&r(e,s,n.flush(),t)):r(e,s,l,t),o()})).catch((()=>Promise.reject()));return o()}}function Sa(t,e){return new self.Request(t.url,e)}class La extends Error{constructor(t,e,s){super(t),this.code=void 0,this.details=void 0,this.code=e,this.details=s}}const Aa=/\s/,Ra={newCue(t,e,s,i){const r=[];let n,a,o,l,h;const d=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const i=vn(h.trim()),f=Ln(e,s,i);null!=t&&null!=(c=t.cues)&&c.getCueById(f)||(a=new d(e,s,i),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(a))}return t&&r.length&&(r.sort(((t,e)=>"auto"===t.line||"auto"===e.line?0:t.line>8&&e.line>8?e.line-t.line:t.line-e.line)),r.forEach((e=>Ue(t,e)))),r}},ba=u(u({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:ya,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(t){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:t,partCurrent:e,hls:s}=this,{autoLevelEnabled:i,media:r}=s;if(!t||!r)return;const n=performance.now(),a=e?e.stats:t.stats,o=e?e.duration:t.duration,l=n-a.loading.start,h=s.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||t.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!i||r.paused||!r.playbackRate||!r.readyState)return;const d=s.mainForwardBufferInfo;if(null===d)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,o/(2*u)*1e3))return;const f=d.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,v=this.getBwEstimate(),y=s.levels,E=y[t.level],S=a.total||Math.max(a.loaded,Math.round(o*E.averageBitrate/8));let L=m?l-g:l;L<1&&m&&(L=Math.min(l,8*a.loaded/v));const A=m?1e3*a.loaded/L:0,R=A?(S-a.loaded)/A:8*S/v+c/1e3;if(R<=f)return;const b=A?8*A:v;let D,I=Number.POSITIVE_INFINITY;for(D=t.level-1;D>h;D--){const t=y[D].maxBitrate;if(I=this.getTimeToLoadFrag(c/1e3,b,o*t,!y[D].details),I=R)return;if(I>10*o)return;s.nextLoadLevel=s.nextAutoLevel=D,m?this.bwEstimator.sample(l-Math.min(c,g),a.loaded):this.bwEstimator.sampleTTFB(l);const w=y[D].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>w&&this.resetEstimator(w),this.clearTimer(),k.warn(`[abr] Fragment ${t.sn}${e?" part "+e.index:""} of level ${t.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${R.toFixed(3)} s\n Estimated load time for down switch fragment: ${I.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${p(v)?0|v:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${D} @ ${0|w} bps`),s.trigger(T.FRAG_LOAD_EMERGENCY_ABORTED,{frag:t,part:e,stats:a})},this.hls=t,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(t){t&&(k.log(`setting initial bwe to ${t}`),this.hls.config.abrEwmaDefaultEstimate=t),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const t=this.hls.config;return new xs(t.abrEwmaSlowVoD,t.abrEwmaFastVoD,t.abrEwmaDefaultEstimate)}registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.FRAG_LOADING,this.onFragLoading,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.LEVEL_LOADED,this.onLevelLoaded,this),t.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(T.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t&&(t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.FRAG_LOADING,this.onFragLoading,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.LEVEL_LOADED,this.onLevelLoaded,this),t.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(T.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),t.off(T.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(t,e){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(t,e){const s=e.frag;if(!this.ignoreFragment(s)){var i;if(!s.bitrateTest)this.fragCurrent=s,this.partCurrent=null!=(i=e.part)?i:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(t,e){this.clearTimer()}onError(t,e){if(!e.fatal)switch(e.details){case S.BUFFER_ADD_CODEC_ERROR:case S.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case S.FRAG_LOAD_TIMEOUT:{const t=e.frag,{fragCurrent:s,partCurrent:i}=this;if(t&&s&&t.sn===s.sn&&t.level===s.level){const e=performance.now(),s=i?i.stats:t.stats,r=e-s.loading.start,n=s.loading.first?s.loading.first-s.loading.start:-1;if(s.loaded&&n>-1){const t=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(t,n),s.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(t,e,s,i){return t+s/e+(i?this.lastLevelLoadSec:0)}onLevelLoaded(t,e){const s=this.hls.config,{loading:i}=e.stats,r=i.end-i.start;p(r)&&(this.lastLevelLoadSec=r/1e3),e.details.live?this.bwEstimator.update(s.abrEwmaSlowLive,s.abrEwmaFastLive):this.bwEstimator.update(s.abrEwmaSlowVoD,s.abrEwmaFastVoD)}onFragLoaded(t,{frag:e,part:s}){const i=s?s.stats:e.stats;if(e.type===_e&&this.bwEstimator.sampleTTFB(i.loading.first-i.loading.start),!this.ignoreFragment(e)){if(this.clearTimer(),e.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const t=s?s.duration:e.duration,r=this.hls.levels[e.level],n=(r.loaded?r.loaded.bytes:0)+i.loaded,a=(r.loaded?r.loaded.duration:0)+t;r.loaded={bytes:n,duration:a},r.realBitrate=Math.round(8*n/a)}if(e.bitrateTest){const t={stats:i,frag:e,part:s,id:e.type};this.onFragBuffered(T.FRAG_BUFFERED,t),e.bitrateTest=!1}else this.lastLoadedFragLevel=e.level}}onFragBuffered(t,e){const{frag:s,part:i}=e,r=null!=i&&i.stats.loaded?i.stats:s.stats;if(r.aborted)return;if(this.ignoreFragment(s))return;const n=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,r.loaded),r.bwEstimate=this.getBwEstimate(),s.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(t){return t.type!==_e||"initSegment"===t.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:t,minAutoLevel:e}=this.hls,s=this.getBwEstimate(),i=this.hls.config.maxStarvationDelay,r=this.findBestLevel(s,e,t,0,i,1,1);if(r>-1)return r;const n=this.hls.firstLevel,a=Math.min(Math.max(n,e),t);return k.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const t=this.forcedAutoLevel,e=this.bwEstimator.canEstimate(),s=this.lastLoadedFragLevel>-1;if(!(-1===t||e&&s&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return t;const i=e&&s?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==t){const e=this.hls.levels;if(e.length>Math.max(t,i)&&e[t].loadError<=e[i].loadError)return t}return this._nextAutoLevel=i,this.nextAutoLevelKey=this.getAutoLevelKey(),i}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:t,partCurrent:e,hls:s}=this,{maxAutoLevel:i,config:r,minAutoLevel:n}=s,a=e?e.duration:t?t.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=r.abrBandWidthFactor,d=r.abrBandWidthUpFactor;if(l){const t=this.findBestLevel(o,n,i,l,0,h,d);if(t>=0)return t}let c=a?Math.min(a,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const t=this.bitrateTestDelay;if(t){c=(a?Math.min(a,r.maxLoadingDelay):r.maxLoadingDelay)-t,k.info(`[abr] bitrate test took ${Math.round(1e3*t)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),h=d=1}}const u=this.findBestLevel(o,n,i,l,c,h,d);if(k.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=s.levels[n],g=s.levels[s.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:s.loadLevel}getStarvationDelay(){const t=this.hls,e=t.media;if(!e)return 1/0;const s=e&&0!==e.playbackRate?Math.abs(e.playbackRate):1,i=t.mainForwardBufferInfo;return(i?i.len:0)/s}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(t,e,s,i,r,n,a){var o;const l=i+r,h=this.lastLoadedFragLevel,d=-1===h?this.hls.firstLevel:h,{fragCurrent:c,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:v}=this.hls;if(1===f.length)return 0;const y=f[d],T=!(null==y||null==(o=y.details)||!o.live),E=-1===m||-1===h;let S,L="SDR",A=(null==y?void 0:y.frameRate)||0;const{audioPreference:R,videoPreference:b}=v,D=this.audioTracksByGroup||(this.audioTracksByGroup=function(t){return t.reduce(((t,e)=>{let s=t.groups[e.groupId];s||(s=t.groups[e.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),s.tracks.push(e);const i=e.channels||"2";return s.channels[i]=(s.channels[i]||0)+1,s.hasDefault=s.hasDefault||e.default,s.hasAutoSelect=s.hasAutoSelect||e.autoselect,s.hasDefault&&(t.hasDefaultAudio=!0),s.hasAutoSelect&&(t.hasAutoSelectAudio=!0),t}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(E){if(-1!==this.firstSelection)return this.firstSelection;const i=this.codecTiers||(this.codecTiers=function(t,e,s,i){return t.slice(s,i+1).reduce(((t,s)=>{if(!s.codecSet)return t;const i=s.audioGroups;let r=t[s.codecSet];r||(t[s.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!i,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,s.bitrate);const n=Math.min(s.height,s.width);return r.minHeight=Math.min(r.minHeight,n),r.minFramerate=Math.min(r.minFramerate,s.frameRate),r.maxScore=Math.max(r.maxScore,s.score),r.fragmentError+=s.fragmentError,r.videoRanges[s.videoRange]=(r.videoRanges[s.videoRange]||0)+1,i&&i.forEach((t=>{if(!t)return;const s=e.groups[t];s&&(r.hasDefaultAudio=r.hasDefaultAudio||e.hasDefaultAudio?s.hasDefault:s.hasAutoSelect||!e.hasDefaultAudio&&!e.hasAutoSelectAudio,Object.keys(s.channels).forEach((t=>{r.channels[t]=(r.channels[t]||0)+s.channels[t]})))})),t}),{})}(f,D,e,s)),r=function(t,e,s,i,r){const n=Object.keys(t),a=null==i?void 0:i.channels,o=null==i?void 0:i.audioCodec,l=a&&2===parseInt(a);let h=!0,d=!1,c=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:v,allowedVideoRanges:y}=Ns(e,r);for(let e=n.length;e--;){const s=t[n[e]];h=s.channels[2]>0,c=Math.min(c,s.minHeight),u=Math.min(u,s.minFramerate),f=Math.min(f,s.minBitrate);const i=y.filter((t=>s.videoRanges[t]>0));i.length>0&&(d=!0,m=i)}c=p(c)?c:0,u=p(u)?u:0;const T=Math.max(1080,c),E=Math.max(30,u);return f=p(f)?f:s,s=Math.max(f,s),d||(e=void 0,m=[]),{codecSet:n.reduce(((e,i)=>{const r=t[i];if(i===e)return e;if(r.minBitrate>s)return Us(i,`min bitrate of ${r.minBitrate} > current estimate of ${s}`),e;if(!r.hasDefaultAudio)return Us(i,"no renditions with default or auto-select sound found"),e;if(o&&i.indexOf(o.substring(0,4))%5!=0)return Us(i,`audio codec preference "${o}" not found`),e;if(a&&!l){if(!r.channels[a])return Us(i,`no renditions with ${a} channel sound found (channels options: ${Object.keys(r.channels)})`),e}else if((!o||l)&&h&&0===r.channels[2])return Us(i,"no renditions with stereo sound found"),e;return r.minHeight>T?(Us(i,`min resolution of ${r.minHeight} > maximum of ${T}`),e):r.minFramerate>E?(Us(i,`min framerate of ${r.minFramerate} > maximum of ${E}`),e):m.some((t=>r.videoRanges[t]>0))?r.maxScore=he(e)||r.fragmentError>t[e].fragmentError)?e:(g=r.maxScore,i):(Us(i,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),e)}),void 0),videoRanges:m,preferHDR:v,minFramerate:u,minBitrate:f}}(i,L,t,R,b),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=r;S=n,L=h?a[a.length-1]:a[0],A=o,t=Math.max(t,l),k.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else S=null==y?void 0:y.codecSet,L=null==y?void 0:y.videoRange;const I=u?u.duration:c?c.duration:0,w=this.bwEstimator.getEstimateTTFB()/1e3,C=[];for(let o=s;o>=e;o--){var _;const e=f[o],c=o>d;if(!e)continue;if(v.useMediaCapabilities&&!e.supportedResult&&!e.supportedPromise){const s=navigator.mediaCapabilities;"function"==typeof(null==s?void 0:s.decodingInfo)&&Ms(e,D,L,A,t,R)?(e.supportedPromise=Os(e,D,s),e.supportedPromise.then((t=>{if(!this.hls)return;e.supportedResult=t;const s=this.hls.levels,i=s.indexOf(e);t.error?k.warn(`[abr] MediaCapabilities decodingInfo error: "${t.error}" for level ${i} ${JSON.stringify(t)}`):t.supported||(k.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${i} ${JSON.stringify(t)}`),i>-1&&s.length>1&&(k.log(`[abr] Removing unsupported level ${i}`),this.hls.removeLevel(i)))}))):e.supportedResult=Ps}if(S&&e.codecSet!==S||L&&e.videoRange!==L||c&&A>e.frameRate||!c&&A>0&&A=2*I&&0===r?f[o].averageBitrate:f[o].maxBitrate,F=this.getTimeToLoadFrag(w,x,P*b,void 0===g);if(x>=P&&(o===h||0===e.loadError&&0===e.fragmentError)&&(F<=w||!p(F)||T&&!this.bitrateTestDelay||F${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-P)} ttfb:${w.toFixed(1)} avgDuration:${b.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${F.toFixed(1)} firstSelection:${E} codecSet:${S} videoRange:${L} hls.loadLevel:${m}`)),E&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(t){const{maxAutoLevel:e,minAutoLevel:s}=this.hls,i=Math.min(Math.max(t,s),e);this._nextAutoLevel!==i&&(this.nextAutoLevelKey="",this._nextAutoLevel=i)}},bufferController:class{constructor(t){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=t=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=t=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:t,mediaSource:e}=this;this.log("Media source opened"),t&&(t.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(T.MEDIA_ATTACHED,{media:t,mediaSource:e})),e&&e.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:t,_objectUrl:e}=this;t!==e&&k.error(`Media element src was set while attaching MediaSource (${e} > ${t})`)},this.hls=t;const e="[buffer-controller]";var s;this.appendSource=(s=ie(t.config.preferManagedMediaSource),"undefined"!=typeof self&&s===self.ManagedMediaSource),this.log=k.log.bind(k,e),this.warn=k.warn.bind(k,e),this.error=k.error.bind(k,e),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.BUFFER_RESET,this.onBufferReset,this),t.on(T.BUFFER_APPENDING,this.onBufferAppending,this),t.on(T.BUFFER_CODECS,this.onBufferCodecs,this),t.on(T.BUFFER_EOS,this.onBufferEos,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),t.on(T.FRAG_PARSED,this.onFragParsed,this),t.on(T.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.BUFFER_RESET,this.onBufferReset,this),t.off(T.BUFFER_APPENDING,this.onBufferAppending,this),t.off(T.BUFFER_CODECS,this.onBufferCodecs,this),t.off(T.BUFFER_EOS,this.onBufferEos,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),t.off(T.FRAG_PARSED,this.onFragParsed,this),t.off(T.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Br(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(t,e){let s=2;(e.audio&&!e.video||!e.altAudio)&&(s=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=s,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(t,e){const s=this.media=e.media,i=ie(this.appendSource);if(s&&i){var r;const t=this.mediaSource=new i;this.log(`created media source: ${null==(r=t.constructor)?void 0:r.name}`),t.addEventListener("sourceopen",this._onMediaSourceOpen),t.addEventListener("sourceended",this._onMediaSourceEnded),t.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(t.addEventListener("startstreaming",this._onStartStreaming),t.addEventListener("endstreaming",this._onEndStreaming));const e=this._objectUrl=self.URL.createObjectURL(t);if(this.appendSource)try{s.removeAttribute("src");const i=self.ManagedMediaSource;s.disableRemotePlayback=s.disableRemotePlayback||i&&t instanceof i,Gr(s),function(t,e){const s=self.document.createElement("source");s.type="video/mp4",s.src=e,t.appendChild(s)}(s,e),s.load()}catch(t){s.src=e}else s.src=e;s.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:t,mediaSource:e,_objectUrl:s}=this;if(e){if(this.log("media source detaching"),"open"===e.readyState)try{e.endOfStream()}catch(t){this.warn(`onMediaDetaching: ${t.message} while calling endOfStream`)}this.onBufferReset(),e.removeEventListener("sourceopen",this._onMediaSourceOpen),e.removeEventListener("sourceended",this._onMediaSourceEnded),e.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.removeEventListener("startstreaming",this._onStartStreaming),e.removeEventListener("endstreaming",this._onEndStreaming)),t&&(t.removeEventListener("emptied",this._onMediaEmptied),s&&self.URL.revokeObjectURL(s),this.mediaSrc===s?(t.removeAttribute("src"),this.appendSource&&Gr(t),t.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(T.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((t=>{this.resetBuffer(t)})),this._initSourceBuffer()}resetBuffer(t){const e=this.sourceBuffer[t];try{var s;if(e)this.removeBufferListeners(t),this.sourceBuffer[t]=void 0,null!=(s=this.mediaSource)&&s.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(e)}catch(e){this.warn(`onBufferReset ${t}`,e)}}onBufferCodecs(t,e){const s=this.getSourceBufferTypes().length,i=Object.keys(e);if(i.forEach((t=>{if(s){const s=this.tracks[t];if(s&&"function"==typeof s.buffer.changeType){var i;const{id:r,codec:n,levelCodec:a,container:o,metadata:l}=e[t],h=fe(s.codec,s.levelCodec),d=null==h?void 0:h.replace($r,"$1");let c=fe(n,a);const u=null==(i=c)?void 0:i.replace($r,"$1");if(c&&d!==u){"audio"===t.slice(0,5)&&(c=ue(c,this.appendSource));const e=`${o};codecs=${c}`;this.appendChangeType(t,e),this.log(`switching codec ${h} to ${c}`),this.tracks[t]={buffer:s.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:r}}}}else this.pendingTracks[t]=e[t]})),s)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${i.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(t,e){const{operationQueue:s}=this,i={execute:()=>{const i=this.sourceBuffer[t];i&&(this.log(`changing ${t} sourceBuffer type to ${e}`),i.changeType(e)),s.shiftAndExecuteNext(t)},onStart:()=>{},onComplete:()=>{},onError:e=>{this.warn(`Failed to change ${t} SourceBuffer type`,e)}};s.append(i,t,!!this.pendingTracks[t])}onBufferAppending(t,e){const{hls:s,operationQueue:i,tracks:r}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=e,d=h.buffering[a],c=self.performance.now();d.start=c;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=c),f&&0===f.start&&(f.start=c);const g=r.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(d.executeStart=self.performance.now(),m){const t=this.sourceBuffer[a];if(t){const e=p-t.timestampOffset;Math.abs(e)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${e}) sn: ${o.sn})`),t.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const t=self.performance.now();d.executeEnd=d.end=t,0===u.first&&(u.first=t),f&&0===f.first&&(f.first=t);const{sourceBuffer:e}=this,s={};for(const t in e)s[t]=Js.getBuffered(e[t]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(T.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:s})},onError:t=>{const e={type:E.MEDIA_ERROR,parent:o.type,details:S.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:t,err:t,fatal:!1};if(t.code===DOMException.QUOTA_EXCEEDED_ERR)e.details=S.BUFFER_FULL_ERROR;else{const t=++this.appendErrors[a];e.details=S.BUFFER_APPEND_ERROR,this.warn(`Failed ${t}/${s.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),t>=s.config.appendErrorMaxRetry&&(e.fatal=!0)}s.trigger(T.ERROR,e)}};i.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(t,e){const{operationQueue:s}=this,i=t=>({execute:this.removeExecutor.bind(this,t,e.startOffset,e.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(T.BUFFER_FLUSHED,{type:t})},onError:e=>{this.warn(`Failed to remove from ${t} SourceBuffer`,e)}});e.type?s.append(i(e.type),e.type):this.getSourceBufferTypes().forEach((t=>{s.append(i(t),t)}))}onFragParsed(t,e){const{frag:s,part:i}=e,r=[],n=i?i.elementaryStreams:s.elementaryStreams;n[M]?r.push("audiovideo"):(n[P]&&r.push("audio"),n[F]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${s.type} level: ${s.level} sn: ${s.sn}`),this.blockBuffers((()=>{const t=self.performance.now();s.stats.buffering.end=t,i&&(i.stats.buffering.end=t);const e=i?i.stats:s.stats;this.hls.trigger(T.FRAG_BUFFERED,{frag:s,part:i,stats:e,id:s.type})}),r)}onFragChanged(t,e){this.trimBuffers()}onBufferEos(t,e){this.getSourceBufferTypes().reduce(((t,s)=>{const i=this.sourceBuffer[s];return!i||e.type&&e.type!==s||(i.ending=!0,i.ended||(i.ended=!0,this.log(`${s} sourceBuffer now EOS`))),t&&!(i&&!i.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((t=>{const e=this.sourceBuffer[t];e&&(e.ending=!1)}));const{mediaSource:t}=this;t&&"open"===t.readyState?(this.log("Calling mediaSource.endOfStream()"),t.endOfStream()):t&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${t.readyState}`)})))}onLevelUpdated(t,{details:e}){e.fragments.length&&(this.details=e,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:t,details:e,media:s}=this;if(!s||null===e)return;if(!this.getSourceBufferTypes().length)return;const i=t.config,r=s.currentTime,n=e.levelTargetDuration,a=e.live&&null!==i.liveBackBufferLength?i.liveBackBufferLength:i.backBufferLength;if(p(a)&&a>0){const t=Math.max(a,n),e=Math.floor(r/n)*n-t;this.flushBackBuffer(r,n,e)}if(p(i.frontBufferFlushThreshold)&&i.frontBufferFlushThreshold>0){const t=Math.max(i.maxBufferLength,i.frontBufferFlushThreshold),e=Math.max(t,n),s=Math.floor(r/n)*n+e;this.flushFrontBuffer(r,n,s)}}flushBackBuffer(t,e,s){const{details:i,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((n=>{const a=r[n];if(a){const r=Js.getBuffered(a);if(r.length>0&&s>r.start(0)){if(this.hls.trigger(T.BACK_BUFFER_REACHED,{bufferEnd:s}),null!=i&&i.live)this.hls.trigger(T.LIVE_BACK_BUFFER_REACHED,{bufferEnd:s});else if(a.ended&&r.end(r.length-1)-t<2*e)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:0,endOffset:s,type:n})}}}))}flushFrontBuffer(t,e,s){const{sourceBuffer:i}=this;this.getSourceBufferTypes().forEach((r=>{const n=i[r];if(n){const i=Js.getBuffered(n),a=i.length;if(a<2)return;const o=i.start(a-1),l=i.end(a-1);if(s>o||t>=o&&t<=l)return;if(n.ended&&t-l<2*e)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:t,hls:e,media:s,mediaSource:i}=this,r=t.fragments[0].start+t.totalduration,n=s.duration,a=p(i.duration)?i.duration:0;t.live&&e.config.liveDurationInfinity?(i.duration=1/0,this.updateSeekableRange(t)):(r>a&&r>n||!p(n))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),i.duration=r)}updateSeekableRange(t){const e=this.mediaSource,s=t.fragments;if(s.length&&t.live&&null!=e&&e.setLiveSeekableRange){const i=Math.max(0,s[0].start),r=Math.max(i,i+t.totalduration);this.log(`Media Source duration is set to ${e.duration}. Setting seekable range to ${i}-${r}.`),e.setLiveSeekableRange(i,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:t,operationQueue:e,pendingTracks:s}=this,i=Object.keys(s).length;if(i&&(!t||2===i||"audiovideo"in s)){this.createSourceBuffers(s),this.pendingTracks={};const t=this.getSourceBufferTypes();if(t.length)this.hls.trigger(T.BUFFER_CREATED,{tracks:this.tracks}),t.forEach((t=>{e.executeNext(t)}));else{const t=new Error("could not create source buffer for media codec(s)");this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:t,reason:t.message})}}}createSourceBuffers(t){const{sourceBuffer:e,mediaSource:s}=this;if(!s)throw Error("createSourceBuffers called when mediaSource was null");for(const r in t)if(!e[r]){var i;const n=t[r];if(!n)throw Error(`source buffer exists for track ${r}, however track does not`);let a=-1===(null==(i=n.levelCodec)?void 0:i.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===r.slice(0,5)&&(a=ue(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const t=e[r]=s.addSourceBuffer(o),i=r;this.addBufferListener(i,"updatestart",this._onSBUpdateStart),this.addBufferListener(i,"updateend",this._onSBUpdateEnd),this.addBufferListener(i,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(i,"bufferedchange",((t,e)=>{const s=e.removedRanges;null!=s&&s.length&&this.hls.trigger(T.BUFFER_FLUSHED,{type:r})})),this.tracks[r]={buffer:t,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(t){this.error(`error while trying to add sourceBuffer: ${t.message}`),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:t,sourceBufferName:r,mimeType:o})}}}get mediaSrc(){var t,e;const s=(null==(t=this.media)||null==(e=t.querySelector)?void 0:e.call(t,"source"))||this.media;return null==s?void 0:s.src}_onSBUpdateStart(t){const{operationQueue:e}=this;e.current(t).onStart()}_onSBUpdateEnd(t){var e;if("closed"===(null==(e=this.mediaSource)?void 0:e.readyState))return void this.resetBuffer(t);const{operationQueue:s}=this;s.current(t).onComplete(),s.shiftAndExecuteNext(t)}_onSBUpdateError(t,e){var s;const i=new Error(`${t} SourceBuffer error. MediaSource readyState: ${null==(s=this.mediaSource)?void 0:s.readyState}`);this.error(`${i}`,e),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_APPENDING_ERROR,sourceBufferName:t,error:i,fatal:!1});const r=this.operationQueue.current(t);r&&r.onError(i)}removeExecutor(t,e,s){const{media:i,mediaSource:r,operationQueue:n,sourceBuffer:a}=this,o=a[t];if(!i||!r||!o)return this.warn(`Attempting to remove from the ${t} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(t);const l=p(i.duration)?i.duration:1/0,h=p(r.duration)?r.duration:1/0,d=Math.max(0,e),c=Math.min(s,l,h);c>d&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${d},${c}] from the ${t} SourceBuffer`),o.remove(d,c)):n.shiftAndExecuteNext(t)}appendExecutor(t,e){const s=this.sourceBuffer[e];if(s)s.ended=!1,s.appendBuffer(t);else if(!this.pendingTracks[e])throw new Error(`Attempting to append to the ${e} SourceBuffer, but it does not exist`)}blockBuffers(t,e=this.getSourceBufferTypes()){if(!e.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(t);const{operationQueue:s}=this,i=e.map((t=>s.appendBlocker(t)));Promise.all(i).then((()=>{t(),e.forEach((t=>{const e=this.sourceBuffer[t];null!=e&&e.updating||s.shiftAndExecuteNext(t)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(t,e,s){const i=this.sourceBuffer[t];if(!i)return;const r=s.bind(this,t);this.listeners[t].push({event:e,listener:r}),i.addEventListener(e,r)}removeBufferListeners(t){const e=this.sourceBuffer[t];e&&this.listeners[t].forEach((t=>{e.removeEventListener(t.event,t.listener)}))}},capLevelController:Nn,errorController:class{constructor(t){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=t,this.log=k.log.bind(k,"[info]:"),this.warn=k.warn.bind(k,"[warning]:"),this.error=k.error.bind(k,"[error]:"),this.registerListeners()}registerListeners(){const t=this.hls;t.on(T.ERROR,this.onError,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const t=this.hls;t&&(t.off(T.ERROR,this.onError,this),t.off(T.ERROR,this.onErrorOut,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(t){}stopLoad(){this.playlistError=0}getVariantLevelIndex(t){return(null==t?void 0:t.type)===_e?t.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(t,e){var s,i;if(e.fatal)return;const r=this.hls,n=e.context;switch(e.details){case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:return void(e.errorAction=this.getFragRetryOrSwitchAction(e));case S.FRAG_PARSING_ERROR:if(null!=(s=e.frag)&&s.gap)return void(e.errorAction={action:As,flags:Ds});case S.FRAG_GAP:case S.FRAG_DECRYPT_ERROR:return e.errorAction=this.getFragRetryOrSwitchAction(e),void(e.errorAction.action=Rs);case S.LEVEL_EMPTY_ERROR:case S.LEVEL_PARSING_ERROR:{var a,o;const t=e.parent===_e?e.level:r.loadLevel;e.details===S.LEVEL_EMPTY_ERROR&&null!=(a=e.context)&&null!=(o=a.levelDetails)&&o.live?e.errorAction=this.getPlaylistRetryOrSwitchAction(e,t):(e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t))}return;case S.LEVEL_LOAD_ERROR:case S.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(e.errorAction=this.getPlaylistRetryOrSwitchAction(e,n.level)));case S.AUDIO_TRACK_LOAD_ERROR:case S.AUDIO_TRACK_LOAD_TIMEOUT:case S.SUBTITLE_LOAD_ERROR:case S.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const t=r.levels[r.loadLevel];if(t&&(n.type===we&&t.hasAudioGroup(n.groupId)||n.type===Ce&&t.hasSubtitleGroup(n.groupId)))return e.errorAction=this.getPlaylistRetryOrSwitchAction(e,r.loadLevel),e.errorAction.action=Rs,void(e.errorAction.flags=Is)}return;case S.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const t=r.levels[r.loadLevel],s=null==t?void 0:t.attrs["HDCP-LEVEL"];s?e.errorAction={action:Rs,flags:ws,hdcpLevel:s}:this.keySystemError(e)}return;case S.BUFFER_ADD_CODEC_ERROR:case S.REMUX_ALLOC_ERROR:case S.BUFFER_APPEND_ERROR:return void(e.errorAction=this.getLevelSwitchAction(e,null!=(i=e.level)?i:r.loadLevel));case S.INTERNAL_EXCEPTION:case S.BUFFER_APPENDING_ERROR:case S.BUFFER_FULL_ERROR:case S.LEVEL_SWITCH_ERROR:case S.BUFFER_STALLED_ERROR:case S.BUFFER_SEEK_OVER_HOLE:case S.BUFFER_NUDGE_ON_STALL:return void(e.errorAction={action:As,flags:Ds})}e.type===E.KEY_SYSTEM_ERROR&&this.keySystemError(e)}keySystemError(t){const e=this.getVariantLevelIndex(t.frag);t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e)}getPlaylistRetryOrSwitchAction(t,e){const s=ms(this.hls.config.playlistLoadPolicy,t),i=this.playlistError++;if(ys(s,i,gs(t),t.response))return{action:ks,flags:Ds,retryConfig:s,retryCount:i};const r=this.getLevelSwitchAction(t,e);return s&&(r.retryConfig=s,r.retryCount=i),r}getFragRetryOrSwitchAction(t){const e=this.hls,s=this.getVariantLevelIndex(t.frag),i=e.levels[s],{fragLoadPolicy:r,keyLoadPolicy:n}=e.config,a=ms(t.details.startsWith("key")?n:r,t),o=e.levels.reduce(((t,e)=>t+e.fragmentError),0);if(i){t.details!==S.FRAG_GAP&&i.fragmentError++;if(ys(a,o,gs(t),t.response))return{action:ks,flags:Ds,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(t,s);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(t,e){const s=this.hls;null==e&&(e=s.loadLevel);const i=this.hls.levels[e];if(i){var r,n;const e=t.details;i.loadError++,e===S.BUFFER_APPEND_ERROR&&i.fragmentError++;let l=-1;const{levels:h,loadLevel:d,minAutoLevel:c,maxAutoLevel:u}=s;s.autoLevelEnabled||(s.loadLevel=-1);const f=null==(r=t.frag)?void 0:r.type,g=(f===xe&&e===S.FRAG_PARSING_ERROR||"audio"===t.sourceBufferName&&(e===S.BUFFER_ADD_CODEC_ERROR||e===S.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:t})=>i.audioCodec!==t)),m="video"===t.sourceBufferName&&(e===S.BUFFER_ADD_CODEC_ERROR||e===S.BUFFER_APPEND_ERROR)&&h.some((({codecSet:t,audioCodec:e})=>i.codecSet!==t&&i.audioCodec===e)),{type:p,groupId:v}=null!=(n=t.context)?n:{};for(let s=h.length;s--;){const r=(s+d)%h.length;if(r!==d&&r>=c&&r<=u&&0===h[r].loadError){var a,o;const s=h[r];if(e===S.FRAG_GAP&&f===_e&&t.frag){const e=h[r].details;if(e){const s=Es(t.frag,e.fragments,t.frag.start);if(null!=s&&s.gap)continue}}else{if(p===we&&s.hasAudioGroup(v)||p===Ce&&s.hasSubtitleGroup(v))continue;if(f===xe&&null!=(a=i.audioGroups)&&a.some((t=>s.hasAudioGroup(t)))||f===Pe&&null!=(o=i.subtitleGroups)&&o.some((t=>s.hasSubtitleGroup(t)))||g&&i.audioCodec===s.audioCodec||!g&&i.audioCodec!==s.audioCodec||m&&i.codecSet===s.codecSet)continue}l=r;break}}if(l>-1&&s.loadLevel!==l)return t.levelRetry=!0,this.playlistError=0,{action:Rs,flags:Ds,nextAutoLevel:l}}return{action:Rs,flags:Is}}onErrorOut(t,e){var s;switch(null==(s=e.errorAction)?void 0:s.action){case As:break;case Rs:this.sendAlternateToPenaltyBox(e),e.errorAction.resolved||e.details===S.FRAG_GAP?/MediaSource readyState: ended/.test(e.error.message)&&(this.warn(`MediaSource ended after "${e.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):e.fatal=!0}e.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(t){const e=this.hls,s=t.errorAction;if(!s)return;const{flags:i,hdcpLevel:r,nextAutoLevel:n}=s;switch(i){case Ds:this.switchLevel(t,n);break;case ws:r&&(e.maxHdcpLevel=Qe[Qe.indexOf(r)-1],s.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${e.maxHdcpLevel}" or lower`)}s.resolved||this.switchLevel(t,n)}switchLevel(t,e){void 0!==e&&t.errorAction&&(this.warn(`switching to level ${e} after ${t.details}`),this.hls.nextAutoLevel=e,t.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)}},fpsController:class{constructor(t){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=t,this.registerListeners()}setStreamController(t){this.streamController=t}registerListeners(){this.hls.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(t,e){const s=this.hls.config;if(s.capLevelOnFPSDrop){const t=e.media instanceof self.HTMLVideoElement?e.media:null;this.media=t,t&&"function"==typeof t.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),s.fpsDroppedMonitoringPeriod)}}checkFPS(t,e,s){const i=performance.now();if(e){if(this.lastTime){const t=i-this.lastTime,r=s-this.lastDroppedFrames,n=e-this.lastDecodedFrames,a=1e3*r/t,o=this.hls;if(o.trigger(T.FPS_DROP,{currentDropped:r,currentDecoded:n,totalDroppedFrames:s}),a>0&&r>o.config.fpsDroppedMonitoringThreshold*n){let t=o.currentLevel;k.warn("drop FPS ratio greater than max allowed value for currentLevel: "+t),t>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=t)&&(t-=1,o.trigger(T.FPS_DROP_LEVEL_CAPPING,{level:t,droppedLevel:o.currentLevel}),o.autoLevelCapping=t,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=s,this.lastDecodedFrames=e}}checkFPSInterval(){const t=this.media;if(t)if(this.isVideoPlaybackQualityAvailable){const e=t.getVideoPlaybackQuality();this.checkFPS(t,e.totalVideoFrames,e.droppedVideoFrames)}else this.checkFPS(t,t.webkitDecodedFrameCount,t.webkitDroppedFrameCount)}},stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:it,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},{cueHandler:Ra,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends Di{constructor(t,e,s){super(t,e,s,"[subtitle-stream-controller]",Pe),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.LEVEL_LOADED,this.onLevelLoaded,this),t.on(T.ERROR,this.onError,this),t.on(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(T.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),t.on(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.on(T.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.LEVEL_LOADED,this.onLevelLoaded,this),t.off(T.ERROR,this.onError,this),t.off(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(T.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),t.off(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.off(T.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(t){this.stopLoad(),this.state=pi,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(t,e){this.mainDetails=e.details}onSubtitleFragProcessed(t,e){const{frag:s,success:i}=e;if(this.fragPrevious=s,this.state=pi,!i)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let n;const a=s.start;for(let t=0;t=r[t].start&&a<=r[t].end){n=r[t];break}const o=s.start+s.duration;n?n.end=o:(n={start:a,end:o},r.push(n)),this.fragmentTracker.fragBuffered(s),this.fragBufferedComplete(s,null)}onBufferFlushing(t,e){const{startOffset:s,endOffset:i}=e;if(0===s&&i!==Number.POSITIVE_INFINITY){const t=i-1;if(t<=0)return;e.endOffsetSubtitles=Math.max(0,t),this.tracksBuffered.forEach((e=>{for(let s=0;snew rs(t))):(this.tracksBuffered=[],this.levels=e.map((t=>{const e=new rs(t);return this.tracksBuffered[e.id]=[],e})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,Pe),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(t,e){var s;if(this.currentTrackId=e.id,null==(s=this.levels)||!s.length||-1===this.currentTrackId)return void this.clearInterval();const i=this.levels[this.currentTrackId];null!=i&&i.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,i&&this.setInterval(500)}onSubtitleTrackLoaded(t,e){var s;const{currentTrackId:i,levels:r}=this,{details:n,id:a}=e;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=r[a];if(a>=r.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(s=o.details)&&s.live){const t=this.mainDetails;if(n.deltaUpdateFailed||!t)return;const e=t.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&e&&(l=e.start,ds(n,l));else n.hasProgramDateTime&&t.hasProgramDateTime?(ri(n,t),l=n.fragments[0].start):e&&(l=e.start,ds(n,l))}if(o.details=n,this.levelLastLoaded=o,a===i&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===pi)){Es(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(t){const{frag:e,payload:s}=t,i=e.decryptdata,r=this.hls;if(!this.fragContextChanged(e)&&s&&s.byteLength>0&&null!=i&&i.key&&i.iv&&"AES-128"===i.method){const t=performance.now();this.decrypter.decrypt(new Uint8Array(s),i.key.buffer,i.iv.buffer).catch((t=>{throw r.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const i=performance.now();r.trigger(T.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:t,tdecrypt:i}})})).catch((t=>{this.warn(`${t.name}: ${t.message}`),this.state=pi}))}}doTick(){if(this.media){if(this.state===pi){const{currentTrackId:t,levels:e}=this,s=null==e?void 0:e[t];if(!s||!e.length||!s.details)return;const{config:i}=this,r=this.getLoadPosition(),n=Js.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,i.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,_e),h=s.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const d=h.fragments,c=d.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-t?0:t;f=Es(g,d,Math.max(d[0].start,a),e),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let t=null;const e=Ge(this.media.textTracks);for(let s=0;s-1&&this.toggleTrackModes()}registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.off(T.ERROR,this.onError,this)}onMediaAttached(t,e){this.media=e.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))}pollTrackChange(t){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,t)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);Ge(this.media.textTracks).forEach((t=>{Be(t)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(t,e){this.tracks=e.subtitleTracks}onSubtitleTrackLoaded(t,e){const{id:s,groupId:i,details:r}=e,n=this.tracksInGroup[s];if(!n||n.groupId!==i)return void this.warn(`Subtitle track with id:${s} and group:${i} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=e.details,this.log(`Subtitle track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,e,a)}onLevelLoading(t,e){this.switchLevel(e.level)}onLevelSwitching(t,e){this.switchLevel(e.level)}switchLevel(t){const e=this.hls.levels[t];if(!e)return;const s=e.subtitleGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||(null==i?void 0:i.length)!==(null==s?void 0:s.length)||null!=s&&s.some((t=>-1===(null==i?void 0:i.indexOf(t))))){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const t=this.tracks.filter((t=>!s||-1!==s.indexOf(t.groupId)));if(t.length)this.selectDefaultTrack&&!t.some((t=>t.default))&&(this.selectDefaultTrack=!1),t.forEach(((t,e)=>{t.id=e}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=t;const e=this.hls.config.subtitlePreference;if(!r&&e){this.selectDefaultTrack=!1;const s=Bs(e,t);if(s>-1)r=t[s];else{const t=Bs(e,this.tracks);r=this.tracks[t]}}let i=this.findTrackId(r);-1===i&&r&&(i=this.findTrackId(null));const n={subtitleTracks:t};this.log(`Updating subtitle tracks, ${t.length} track(s) found in "${null==s?void 0:s.join(",")}" group-id`),this.hls.trigger(T.SUBTITLE_TRACKS_UPDATED,n),-1!==i&&-1===this.trackId&&this.setSubtitleTrack(i)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(t){const e=this.tracksInGroup,s=this.selectDefaultTrack;for(let i=0;i-1){const t=this.tracksInGroup[i];return this.setSubtitleTrack(i),t}if(s)return null;{const s=Bs(t,e);if(s>-1)return e[s]}}}return null}loadPlaylist(t){super.loadPlaylist();const e=this.currentTrack;if(this.shouldLoadPlaylist(e)&&e){const s=e.id,i=e.groupId;let r=e.url;if(t)try{r=t.addDirectives(r)}catch(t){this.warn(`Could not construct new URL with HLS Delivery Directives: ${t}`)}this.log(`Loading subtitle playlist for id ${s}`),this.hls.trigger(T.SUBTITLE_TRACK_LOADING,{url:r,id:s,groupId:i,deliveryDirectives:t||null})}}toggleTrackModes(){const{media:t}=this;if(!t)return;const e=Ge(t.textTracks),s=this.currentTrack;let i;if(s&&(i=e.filter((t=>Nr(s,t)))[0],i||this.warn(`Unable to find subtitle TextTrack with name "${s.name}" and language "${s.lang}"`)),[].slice.call(e).forEach((t=>{"disabled"!==t.mode&&t!==i&&(t.mode="disabled")})),i){const t=this.subtitleDisplay?"showing":"hidden";i.mode!==t&&(i.mode=t)}}setSubtitleTrack(t){const e=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=t);if(t<-1||t>=e.length||!p(t))return void this.warn(`Invalid subtitle track id: ${t}`);this.clearTimer(),this.selectDefaultTrack=!1;const s=this.currentTrack,i=e[t]||null;if(this.trackId=t,this.currentTrack=i,this.toggleTrackModes(),!i)return void this.hls.trigger(T.SUBTITLE_TRACK_SWITCH,{id:t});const r=!!i.details&&!i.details.live;if(t===this.trackId&&i===s&&r)return;this.log(`Switching to subtitle-track ${t}`+(i?` "${i.name}" lang:${i.lang} group:${i.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=i;this.hls.trigger(T.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const d=this.switchParams(i.url,null==s?void 0:s.details,i.details);this.loadPlaylist(d)}},timelineController:class{constructor(t){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this.captionsProperties=void 0,this.hls=t,this.config=t.config,this.Cues=t.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(T.FRAG_LOADING,this.onFragLoading,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this),t.on(T.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.on(T.FRAG_DECRYPTED,this.onFragDecrypted,this),t.on(T.INIT_PTS_FOUND,this.onInitPtsFound,this),t.on(T.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:t}=this;t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(T.FRAG_LOADING,this.onFragLoading,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this),t.off(T.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.off(T.FRAG_DECRYPTED,this.onFragDecrypted,this),t.off(T.INIT_PTS_FOUND,this.onInitPtsFound,this),t.off(T.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const t=new ln(this,"textTrack1"),e=new ln(this,"textTrack2"),s=new ln(this,"textTrack3"),i=new ln(this,"textTrack4");this.cea608Parser1=new nn(1,t,e),this.cea608Parser2=new nn(3,s,i)}}addCues(t,e,s,i,r){let n=!1;for(let t=r.length;t--;){const i=r[t],d=(a=i[0],o=i[1],l=e,h=s,Math.min(o,h)-Math.max(a,l));if(d>=0&&(i[0]=Math.min(i[0],e),i[1]=Math.max(i[1],s),n=!0,d/(s-e)>.5))return}var a,o,l,h;if(n||r.push([e,s]),this.config.renderTextTracksNatively){const r=this.captionsTracks[t];this.Cues.newCue(r,e,s,i)}else{const r=this.Cues.newCue(null,e,s,i);this.hls.trigger(T.CUES_PARSED,{type:"captions",cues:r,track:t})}}onInitPtsFound(t,{frag:e,id:s,initPTS:i,timescale:r}){const{unparsedVttFrags:n}=this;"main"===s&&(this.initPTS[e.cc]={baseTime:i,timescale:r}),n.length&&(this.unparsedVttFrags=[],n.forEach((t=>{this.onFragLoaded(T.FRAG_LOADED,t)})))}getExistingTrack(t,e){const{media:s}=this;if(s)for(let i=0;i{Be(t[e]),delete t[e]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:t}=this;if(!t)return;const e=t.textTracks;if(e)for(let t=0;tt.textCodec===Rn));if(this.config.enableWebVTT||i&&this.config.enableIMSC1){if(Mr(this.tracks,s))return void(this.tracks=s);if(this.textTracks=[],this.tracks=s,this.config.renderTextTracksNatively){const t=this.media,e=t?Ge(t.textTracks):null;if(this.tracks.forEach(((t,s)=>{let i;if(e){let s=null;for(let i=0;inull!==t)).map((t=>t.label));t.length&&k.warn(`Media element contains unused subtitle tracks: ${t.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const t=this.tracks.map((t=>({label:t.name,kind:t.type.toLowerCase(),default:t.default,subtitleTrack:t})));this.hls.trigger(T.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:t})}}}onManifestLoaded(t,e){this.config.enableCEA708Captions&&e.captions&&e.captions.forEach((t=>{const e=/(?:CC|SERVICE)([1-4])/.exec(t.instreamId);if(!e)return;const s=`textTrack${e[1]}`,i=this.captionsProperties[s];i&&(i.label=t.name,t.lang&&(i.languageCode=t.lang),i.media=t)}))}closedCaptionsForLevel(t){const e=this.hls.levels[t.level];return null==e?void 0:e.attrs["CLOSED-CAPTIONS"]}onFragLoading(t,e){if(this.enabled&&e.frag.type===_e){var s,i;const{cea608Parser1:t,cea608Parser2:r,lastSn:n}=this,{cc:a,sn:o}=e.frag,l=null!=(s=null==(i=e.part)?void 0:i.index)?s:-1;t&&r&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(t.reset(),r.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(t,e){const{frag:s,payload:i}=e;if(s.type===Pe)if(i.byteLength){const t=s.decryptdata,r="stats"in e;if(null==t||!t.encrypted||r){const t=this.tracks[s.level],r=this.vttCCs;r[s.cc]||(r[s.cc]={start:s.start,prevCC:this.prevCC,new:!0},this.prevCC=s.cc),t&&t.textCodec===Rn?this._parseIMSC1(s,i):this._parseVTTs(e)}}else this.hls.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:new Error("Empty subtitle payload")})}_parseIMSC1(t,e){const s=this.hls;In(e,this.initPTS[t.cc],(e=>{this._appendCues(e,t.level),s.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t})}),(e=>{k.log(`Failed to parse IMSC1: ${e}`),s.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t,error:e})}))}_parseVTTs(t){var e;const{frag:s,payload:i}=t,{initPTS:r,unparsedVttFrags:n}=this,a=r.length-1;if(!r[s.cc]&&-1===a)return void n.push(t);const o=this.hls;An(null!=(e=s.initSegment)&&e.data?Kt(s.initSegment.data,new Uint8Array(i)):i,this.initPTS[s.cc],this.vttCCs,s.cc,s.start,(t=>{this._appendCues(t,s.level),o.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:s})}),(e=>{const r="Missing initPTS for VTT MPEGTS"===e.message;r?n.push(t):this._fallbackToIMSC1(s,i),k.log(`Failed to parse VTT cue: ${e}`),r&&a>s.cc||o.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:e})}))}_fallbackToIMSC1(t,e){const s=this.tracks[t.level];s.textCodec||In(e,this.initPTS[t.cc],(()=>{s.textCodec=Rn,this._parseIMSC1(t,e)}),(()=>{s.textCodec="wvtt"}))}_appendCues(t,e){const s=this.hls;if(this.config.renderTextTracksNatively){const s=this.textTracks[e];if(!s||"disabled"===s.mode)return;t.forEach((t=>Ue(s,t)))}else{const i=this.tracks[e];if(!i)return;const r=i.default?"default":"subtitles"+e;s.trigger(T.CUES_PARSED,{type:"subtitles",cues:t,track:r})}}onFragDecrypted(t,e){const{frag:s}=e;s.type===Pe&&this.onFragLoaded(T.FRAG_LOADED,e)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(t,e){this.initCea608Parsers();const{cea608Parser1:s,cea608Parser2:i}=this;if(!this.enabled||!s||!i)return;const{frag:r,samples:n}=e;if(r.type!==_e||"NONE"!==this.closedCaptionsForLevel(r))for(let t=0;t$e(t[i],e,s)))}if(this.config.renderTextTracksNatively&&0===e&&void 0!==i){const{textTracks:t}=this;Object.keys(t).forEach((s=>$e(t[s],e,i)))}}}extractCea608Data(t){const e=[[],[]],s=31&t[0];let i=2;for(let r=0;r0&&-1===t?(this.log(`Override startPosition with lastCurrentTime @${e.toFixed(3)}`),t=e,this.state=pi):(this.loadedmetadata=!1,this.state=Ei),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}doTick(){switch(this.state){case pi:this.doTickIdle();break;case Ei:{var t;const{levels:e,trackId:s}=this,i=null==e||null==(t=e[s])?void 0:t.details;if(i){if(this.waitForCdnTuneIn(i))break;this.state=bi}break}case Ti:{var e;const t=performance.now(),s=this.retryDate;if(!s||t>=s||null!=(e=this.media)&&e.seeking){const{levels:t,trackId:e}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==t?void 0:t[e])||null),this.state=pi}break}case bi:{const t=this.waitingData;if(t){const{frag:e,part:s,cache:i,complete:r}=t;if(void 0!==this.initPTS[e.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=yi;const t={frag:e,part:s,payload:i.flush(),networkDetails:null};this._handleFragmentLoadProgress(t),r&&super._handleFragmentLoadComplete(t)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${e.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const t=this.getLoadPosition(),s=Js.bufferInfo(this.mediaBuffer,t,this.config.maxBufferHole);Ss(s.end,this.config.maxFragLookUpTolerance,e)<0&&(this.log(`Waiting fragment cc (${e.cc}) @ ${e.start} cancelled because another fragment at ${s.end} is needed`),this.clearWaitingFragment())}}else this.state=pi}}this.onTickEnd()}clearWaitingFragment(){const t=this.waitingData;t&&(this.fragmentTracker.removeFragment(t.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=pi)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:t}=this;null!=t&&t.readyState&&(this.lastCurrentTime=t.currentTime)}doTickIdle(){const{hls:t,levels:e,media:s,trackId:i}=this,r=t.config;if(!s&&(this.startFragRequested||!r.startFragPrefetch)||null==e||!e[i])return;const n=e[i],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=Ei);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,P,xe));const l=this.getFwdBufferInfo(o,xe);if(null===l)return;const{bufferedTrack:h,switchingTrack:d}=this;if(!d&&this._streamEnded(l,a))return t.trigger(T.BUFFER_EOS,{type:"audio"}),void(this.state=Ai);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,_e),u=l.len,f=this.getMaxBufferLength(null==c?void 0:c.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(d&&s){const t=this.getLoadPosition();h&&!Or(d.attrs,h.attrs)&&(p=t),a.PTSKnown&&tm||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),s.currentTime=m+.05)}if(u>=f&&!d&&pc.end+a.targetduration;if(E||(null==c||!c.len)&&l.len){const t=this.getAppendedFrag(v.start,_e);if(null===t)return;if(y||(y=!!t.gap||!!E&&0===c.len),E&&!y||y&&l.nextStart&&l.nextStartnew rs(t)))}onAudioTrackSwitching(t,e){const s=!!e.url;this.trackId=e.id;const{fragCurrent:i}=this;i&&(i.abortRequests(),this.removeUnbufferedFrags(i.start)),this.resetLoadingState(),s?this.setInterval(100):this.resetTransmuxer(),s?(this.switchingTrack=e,this.state=pi,this.flushAudioIfNeeded(e)):(this.switchingTrack=null,this.bufferedTrack=e,this.state=mi),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(t,e){this.mainDetails=e.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(T.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(t,e){var s;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=e);const{levels:i}=this,{details:r,id:n}=e;if(!i)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const a=i[n];let o=0;if(r.live||null!=(s=a.details)&&s.live){this.checkLiveUpdate(r);const t=this.mainDetails;if(r.deltaUpdateFailed||!t)return;var l;if(!a.details&&r.hasProgramDateTime&&t.hasProgramDateTime)ri(r,t),o=r.fragments[0].start;else o=this.alignPlaylists(r,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=r,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,o),this.state!==Ei||this.waitForCdnTuneIn(r)||(this.state=pi),this.tick()}_handleFragmentLoadProgress(t){var e;const{frag:s,part:i,payload:r}=t,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(s.start);const d=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new Fr(this.hls,xe,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[s.cc],f=null==(e=s.initSegment)?void 0:e.data;if(void 0!==u){const t=!1,e=i?i.index:-1,n=-1!==e,a=new Zs(s.level,s.sn,s.stats.chunkCount,r.byteLength,e,n);c.push(r,f,d,"",s,i,h.totalduration,t,a,u)}else{this.log(`Unknown video PTS for cc ${s.cc}, waiting for video PTS before demuxing audio frag ${s.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:t}=this.waitingData=this.waitingData||{frag:s,part:i,cache:new Ii,complete:!1};t.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=bi}}_handleFragmentLoadComplete(t){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(t)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(t,e){const s=e.tracks.audio;s&&(this.mediaBuffer=s.buffer||null),e.tracks.video&&(this.videoBuffer=e.tracks.video.buffer||null)}onFragBuffered(t,e){const{frag:s,part:i}=e;if(s.type===xe)if(this.fragContextChanged(s))this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==s.sn){this.fragPrevious=s;const t=this.switchingTrack;t&&(this.bufferedTrack=t,this.switchingTrack=null,this.hls.trigger(T.AUDIO_TRACK_SWITCHED,u({},t)))}this.fragBufferedComplete(s,i)}else if(!this.loadedmetadata&&s.type===_e){const t=this.videoBuffer||this.media;if(t){Js.getBuffered(t).length&&(this.loadedmetadata=!0)}}}onError(t,e){var s;if(e.fatal)this.state=Ri;else switch(e.details){case S.FRAG_GAP:case S.FRAG_PARSING_ERROR:case S.FRAG_DECRYPT_ERROR:case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(xe,e);break;case S.AUDIO_TRACK_LOAD_ERROR:case S.AUDIO_TRACK_LOAD_TIMEOUT:case S.LEVEL_PARSING_ERROR:e.levelRetry||this.state!==Ei||(null==(s=e.context)?void 0:s.type)!==we||(this.state=pi);break;case S.BUFFER_APPEND_ERROR:case S.BUFFER_FULL_ERROR:if(!e.parent||"audio"!==e.parent)return;if(e.details===S.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(e)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case S.INTERNAL_EXCEPTION:this.recoverWorkerError(e)}}onBufferFlushing(t,{type:e}){e!==F&&(this.flushing=!0)}onBufferFlushed(t,{type:e}){if(e!==F){this.flushing=!1,this.bufferFlushed=!0,this.state===Ai&&(this.state=pi);const t=this.mediaBuffer||this.media;t&&(this.afterBufferFlushed(t,e,xe),this.tick())}}_handleTransmuxComplete(t){var e;const s="audio",{hls:i}=this,{remuxResult:r,chunkMeta:n}=t,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:d}=h,{audio:c,text:u,id3:f,initSegment:g}=r;if(!this.fragContextChanged(o)&&d){if(this.state=Si,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const t=o.initSegment||o;this._bufferInitSegment(h,g.tracks,t,n),i.trigger(T.FRAG_PARSING_INIT_SEGMENT,{frag:t,id:s,tracks:g.tracks})}if(c){const{startPTS:t,endPTS:e,startDTS:s,endDTS:i}=c;l&&(l.elementaryStreams[P]={startPTS:t,endPTS:e,startDTS:s,endDTS:i}),o.setElementaryStreamInfo(P,t,e,s,i),this.bufferFragmentData(c,o,l,n)}if(null!=f&&null!=(e=f.samples)&&e.length){const t=m({id:s,frag:o,details:d},f);i.trigger(T.FRAG_PARSING_METADATA,t)}if(u){const t=m({id:s,frag:o,details:d},u);i.trigger(T.FRAG_PARSING_USERDATA,t)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(t,e,s,i){if(this.state!==Si)return;e.video&&delete e.video;const r=e.audio;if(!r)return;r.id="audio";const n=t.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${n}/${r.codec}]`),n&&1===n.split(",").length&&(r.levelCodec=n),this.hls.trigger(T.BUFFER_CODECS,e);const a=r.initSegment;if(null!=a&&a.byteLength){const t={type:"audio",frag:s,part:null,chunkMeta:i,parent:s.type,data:a};this.hls.trigger(T.BUFFER_APPENDING,t)}this.tickImmediate()}loadFragment(t,e,s){const i=this.fragmentTracker.getState(t);var r;if(this.fragCurrent=t,this.switchingTrack||i===Vs||i===Ws)if("initSegment"===t.sn)this._loadInitSegment(t,e);else if(null!=(r=e.details)&&r.live&&!this.initPTS[t.cc]){this.log(`Waiting for video PTS in continuity counter ${t.cc} of live stream before loading audio fragment ${t.sn} of level ${this.trackId}`),this.state=bi;const s=this.mainDetails;s&&s.fragments[0].start!==e.details.fragments[0].start&&ri(e.details,s)}else this.startFragRequested=!0,super.loadFragment(t,e,s);else this.clearTrackerIfNeeded(t)}flushAudioIfNeeded(t){const{media:e,bufferedTrack:s}=this,i=null==s?void 0:s.attrs,r=t.attrs;e&&i&&(i.CHANNELS!==r.CHANNELS||s.name!==t.name||s.lang!==t.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(t){const{hls:e}=this;this.flushAudioIfNeeded(t),this.bufferedTrack=t,this.switchingTrack=null,e.trigger(T.AUDIO_TRACK_SWITCHED,u({},t))}},audioTrackController:class extends Cs{constructor(t){super(t,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),t.off(T.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(t,e){this.tracks=e.audioTracks||[]}onAudioTrackLoaded(t,e){const{id:s,groupId:i,details:r}=e,n=this.tracksInGroup[s];if(!n||n.groupId!==i)return void this.warn(`Audio track with id:${s} and group:${i} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=e.details,this.log(`Audio track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,e,a)}onLevelLoading(t,e){this.switchLevel(e.level)}onLevelSwitching(t,e){this.switchLevel(e.level)}switchLevel(t){const e=this.hls.levels[t];if(!e)return;const s=e.audioGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||(null==i?void 0:i.length)!==(null==s?void 0:s.length)||null!=s&&s.some((t=>-1===(null==i?void 0:i.indexOf(t))))){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const t=this.tracks.filter((t=>!s||-1!==s.indexOf(t.groupId)));if(t.length)this.selectDefaultTrack&&!t.some((t=>t.default))&&(this.selectDefaultTrack=!1),t.forEach(((t,e)=>{t.id=e}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=t;const e=this.hls.config.audioPreference;if(!r&&e){const s=Bs(e,t,Gs);if(s>-1)r=t[s];else{const t=Bs(e,this.tracks);r=this.tracks[t]}}let i=this.findTrackId(r);-1===i&&r&&(i=this.findTrackId(null));const a={audioTracks:t};this.log(`Updating audio tracks, ${t.length} track(s) found in group(s): ${null==s?void 0:s.join(",")}`),this.hls.trigger(T.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==i&&-1===o)this.setAudioTrack(i);else if(t.length&&-1===o){var n;const e=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${t.length}`);this.warn(e.message),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:e})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(t,e){!e.fatal&&e.context&&(e.context.type!==we||e.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(e.context.groupId)||(this.requestScheduled=-1,this.checkRetry(e)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(t){this.selectDefaultTrack=!1,this.setAudioTrack(t)}setAudioOption(t){const e=this.hls;if(e.config.audioPreference=t,t){const s=this.allAudioTracks;if(this.selectDefaultTrack=!1,s.length){const i=this.currentTrack;if(i&&$s(t,i,Gs))return i;const r=Bs(t,this.tracksInGroup,Gs);if(r>-1){const t=this.tracksInGroup[r];return this.setAudioTrack(r),t}if(i){let i=e.loadLevel;-1===i&&(i=e.firstAutoLevel);const r=function(t,e,s,i,r){const n=e[i],a=e.reduce(((t,e,s)=>{const i=e.uri;return(t[i]||(t[i]=[])).push(s),t}),{})[n.uri];a.length>1&&(i=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),d=Ks(e,i,(e=>{if(e.videoRange!==o||e.frameRate!==l||e.codecSet.substring(0,4)!==h)return!1;const i=e.audioGroups,n=s.filter((t=>!i||-1!==i.indexOf(t.groupId)));return Bs(t,n,r)>-1}));return d>-1?d:Ks(e,i,(e=>{const i=e.audioGroups,n=s.filter((t=>!i||-1!==i.indexOf(t.groupId)));return Bs(t,n,r)>-1}))}(t,e.levels,s,i,Gs);if(-1===r)return null;e.nextLoadLevel=r}if(t.channels||t.audioCodec){const e=Bs(t,s);if(e>-1)return s[e]}}}return null}setAudioTrack(t){const e=this.tracksInGroup;if(t<0||t>=e.length)return void this.warn(`Invalid audio track id: ${t}`);this.clearTimer(),this.selectDefaultTrack=!1;const s=this.currentTrack,i=e[t],r=i.details&&!i.details.live;if(t===this.trackId&&i===s&&r)return;if(this.log(`Switching to audio-track ${t} "${i.name}" lang:${i.lang} group:${i.groupId} channels:${i.channels}`),this.trackId=t,this.currentTrack=i,this.hls.trigger(T.AUDIO_TRACK_SWITCHING,u({},i)),r)return;const n=this.switchParams(i.url,null==s?void 0:s.details,i.details);this.loadPlaylist(n)}findTrackId(t){const e=this.tracksInGroup;for(let s=0;s{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=t=>{try{this.apply(t,{ot:Gn.MANIFEST,su:!this.initialized})}catch(t){k.warn("Could not generate manifest CMCD data.",t)}},this.applyFragmentData=t=>{try{const e=t.frag,s=this.hls.levels[e.level],i=this.getObjectType(e),r={d:1e3*e.duration,ot:i};i!==Gn.VIDEO&&i!==Gn.AUDIO&&i!=Gn.MUXED||(r.br=s.bitrate/1e3,r.tb=this.getTopBandwidth(i)/1e3,r.bl=this.getBufferLength(i)),this.apply(t,r)}catch(t){k.warn("Could not generate segment CMCD data.",t)}},this.hls=t;const e=this.config=t.config,{cmcd:s}=e;null!=s&&(e.pLoader=this.createPlaylistLoader(),e.fLoader=this.createFragmentLoader(),this.sid=s.sessionId||function(){try{return crypto.randomUUID()}catch(t){try{const t=URL.createObjectURL(new Blob),e=t.toString();return URL.revokeObjectURL(t),e.slice(e.lastIndexOf("/")+1)}catch(t){let e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(t=>{const s=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?s:3&s|8).toString(16)}))}}}(),this.cid=s.contentId,this.useHeaders=!0===s.useHeaders,this.includeKeys=s.includeKeys,this.registerListeners())}registerListeners(){const t=this.hls;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHED,this.onMediaDetached,this),t.on(T.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const t=this.hls;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHED,this.onMediaDetached,this),t.off(T.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(t,e){this.media=e.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(t,e){var s,i;this.audioBuffer=null==(s=e.tracks.audio)?void 0:s.buffer,this.videoBuffer=null==(i=e.tracks.video)?void 0:i.buffer}createData(){var t;return{v:1,sf:Kn.HLS,sid:this.sid,cid:this.cid,pr:null==(t=this.media)?void 0:t.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(t,e={}){m(e,this.createData());const s=e.ot===Gn.INIT||e.ot===Gn.VIDEO||e.ot===Gn.MUXED;this.starved&&s&&(e.bs=!0,e.su=!0,this.starved=!1),null==e.su&&(e.su=this.buffering);const{includeKeys:i}=this;i&&(e=Object.keys(e).reduce(((t,s)=>(i.includes(s)&&(t[s]=e[s]),t)),{})),this.useHeaders?(t.headers||(t.headers={}),ua(t.headers,e)):t.url=ga(t.url,e)}getObjectType(t){const{type:e}=t;return"subtitle"===e?Gn.TIMED_TEXT:"initSegment"===t.sn?Gn.INIT:"audio"===e?Gn.AUDIO:"main"===e?this.hls.audioTracks.length?Gn.VIDEO:Gn.MUXED:void 0}getTopBandwidth(t){let e,s=0;const i=this.hls;if(t===Gn.AUDIO)e=i.audioTracks;else{const t=i.maxAutoLevel,s=t>-1?t+1:i.levels.length;e=i.levels.slice(0,s)}for(const t of e)t.bitrate>s&&(s=t.bitrate);return s>0?s:NaN}getBufferLength(t){const e=this.hls.media,s=t===Gn.AUDIO?this.audioBuffer:this.videoBuffer;if(!s||!e)return NaN;return 1e3*Js.bufferInfo(s,e.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:t}=this.config,e=this.applyPlaylistData,s=t||this.config.loader;return class{constructor(t){this.loader=void 0,this.loader=new s(t)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(t,s,i){e(t),this.loader.load(t,s,i)}}}createFragmentLoader(){const{fLoader:t}=this.config,e=this.applyFragmentData,s=t||this.config.loader;return class{constructor(t){this.loader=void 0,this.loader=new s(t)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(t,s,i){e(t),this.loader.load(t,s,i)}}}},contentSteeringController:class{constructor(t){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=t,this.log=k.log.bind(k,"[content-steering]:"),this.registerListeners()}registerListeners(){const t=this.hls;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const t=this.hls;t&&(t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const t=1e3*this.timeToLoad-(performance.now()-this.updated);if(t>0)return void this.scheduleRefresh(this.uri,t)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(t){const e=this.levels;e&&(this.levels=e.filter((e=>e!==t)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(t,e){const{contentSteering:s}=e;null!==s&&(this.pathwayId=s.pathwayId,this.uri=s.uri,this.started&&this.startLoad())}onManifestParsed(t,e){this.audioTracks=e.audioTracks,this.subtitleTracks=e.subtitleTracks}onError(t,e){const{errorAction:s}=e;if((null==s?void 0:s.action)===Rs&&s.flags===Is){const t=this.levels;let i=this.pathwayPriority,r=this.pathwayId;if(e.context){const{groupId:s,pathwayId:i,type:n}=e.context;s&&t?r=this.getPathwayForGroupId(s,n,r):i&&(r=i)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!i&&t&&(i=t.reduce(((t,e)=>(-1===t.indexOf(e.pathwayId)&&t.push(e.pathwayId),t)),[])),i&&i.length>1&&(this.updatePathwayPriority(i),s.resolved=this.pathwayId!==r),s.resolved||k.warn(`Could not resolve ${e.details} ("${e.error.message}") with content-steering for Pathway: ${r} levels: ${t?t.length:t} priorities: ${JSON.stringify(i)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(t){this.levels=t;let e=this.getLevelsForPathway(this.pathwayId);if(0===e.length){const s=t[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${s}"`),e=this.getLevelsForPathway(s),this.pathwayId=s}return e.length!==t.length&&this.log(`Found ${e.length}/${t.length} levels in Pathway "${this.pathwayId}"`),e}getLevelsForPathway(t){return null===this.levels?[]:this.levels.filter((e=>t===e.pathwayId))}updatePathwayPriority(t){let e;this.pathwayPriority=t;const s=this.penalizedPathways,i=performance.now();Object.keys(s).forEach((t=>{i-s[t]>3e5&&delete s[t]}));for(let i=0;i0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,fs(e),this.hls.trigger(T.LEVELS_UPDATED,{levels:e});const t=this.hls.levels[n];a&&t&&this.levels&&(t.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&t.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${t.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(t,e,s){const i=this.getLevelsForPathway(s).concat(this.levels||[]);for(let s=0;s{const{ID:r,"BASE-ID":n,"URI-REPLACEMENT":a}=t;if(e.some((t=>t.pathwayId===r)))return;const o=this.getLevelsForPathway(n).map((t=>{const e=new w(t.attrs);e["PATHWAY-ID"]=r;const n=e.AUDIO&&`${e.AUDIO}_clone_${r}`,o=e.SUBTITLES&&`${e.SUBTITLES}_clone_${r}`;n&&(s[e.AUDIO]=n,e.AUDIO=n),o&&(i[e.SUBTITLES]=o,e.SUBTITLES=o);const l=pa(t.uri,e["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new rs({attrs:e,audioCodec:t.audioCodec,bitrate:t.bitrate,height:t.height,name:t.name,url:l,videoCodec:t.videoCodec,width:t.width});if(t.audioGroups)for(let e=1;e{this.log(`Loaded steering manifest: "${i}"`);const n=t.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,i).href}catch(t){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||s.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:i.toString()};this.hls.trigger(T.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(t,e,s,i)=>{if(this.log(`Error loading steering manifest: ${t.code} ${t.text} (${e.url})`),this.stopLoad(),410===t.code)return this.enabled=!1,void this.log(`Steering manifest ${e.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==t.code)this.scheduleRefresh(this.uri||e.url,r);else{const t=this.loader;if("function"==typeof(null==t?void 0:t.getResponseHeader)){const e=t.getResponseHeader("Retry-After");e&&(r=1e3*parseFloat(e))}this.log(`Steering manifest ${e.url} rate limited`)}},onTimeout:(t,e,s)=>{this.log(`Timeout loading steering manifest (${e.url})`),this.scheduleRefresh(this.uri||e.url)}};this.log(`Requesting steering manifest: ${i}`),this.loader.load(r,o,l)}scheduleRefresh(t,e=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var e;const s=null==(e=this.hls)?void 0:e.media;!s||s.ended?this.scheduleRefresh(t,1e3*this.timeToLoad):this.loadSteeringManifest(t)}),e)}}});function ka(t){return t&&"object"==typeof t?Array.isArray(t)?t.map(ka):Object.keys(t).reduce(((e,s)=>(e[s]=ka(t[s]),e)),{}):t}function Da(t){const e=t.loader;if(e!==Ea&&e!==ya)k.log("[config]: Custom loader detected, cannot enable progressive streaming"),t.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(t){}return!1})()&&(t.loader=Ea,t.progressive=!0,t.enableSoftwareAES=!0,k.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let Ia;class wa extends Cs{constructor(t,e){super(t,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=e,this._registerListeners()}_registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(T.LEVEL_LOADED,this.onLevelLoaded,this),t.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.ERROR,this.onError,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(T.LEVEL_LOADED,this.onLevelLoaded,this),t.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((t=>{t.loadError=0,t.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(t,e){this.resetLevels()}onManifestLoaded(t,e){const s=this.hls.config.preferManagedMediaSource,i=[],r={},n={};let a=!1,o=!1,l=!1;e.levels.forEach((t=>{var e,h;const d=t.attrs;let{audioCodec:c,videoCodec:u}=t;-1!==(null==(e=c)?void 0:e.indexOf("mp4a.40.34"))&&(Ia||(Ia=/chrome|firefox/i.test(navigator.userAgent)),Ia&&(t.audioCodec=c=void 0)),c&&(t.audioCodec=c=ue(c,s)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=t.videoCodec=function(t){const e=t.split(",");for(let t=0;t2){let i=s.shift()+".";i+=parseInt(s.shift()).toString(16),i+=("000"+parseInt(s.shift()).toString(16)).slice(-4),e[t]=i}}return e.join(",")}(u));const{width:f,height:g,unknownCodecs:m}=t;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!c),null!=m&&m.length||c&&!ne(c,"audio",s)||u&&!ne(u,"video",s))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=d,L=`${`${T||"."}-`}${t.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(r[L])if(r[L].uri===t.url||t.attrs["PATHWAY-ID"])r[L].addGroupId("audio",d.AUDIO),r[L].addGroupId("text",d.SUBTITLES);else{const e=n[L]+=1;t.attrs["PATHWAY-ID"]=new Array(e+1).join(".");const s=new rs(t);r[L]=s,i.push(s)}else{const e=new rs(t);r[L]=e,n[L]=1,i.push(e)}})),this.filterAndSortMediaOptions(i,e,a,o,l)}filterAndSortMediaOptions(t,e,s,i,r){let n=[],a=[],o=t;if((s||i)&&r&&(o=o.filter((({videoCodec:t,videoRange:e,width:s,height:i})=>{return(!!t||!(!s||!i))&&(!!(r=e)&&Je.indexOf(r)>-1);var r}))),0===o.length)return void Promise.resolve().then((()=>{if(this.hls){e.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(e.levels[0].attrs)}`);const t=new Error("no level with compatible codecs found in manifest");this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:e.url,error:t,reason:t.message})}}));if(e.audioTracks){const{preferManagedMediaSource:t}=this.hls.config;n=e.audioTracks.filter((e=>!e.audioCodec||ne(e.audioCodec,"audio",t))),Ca(n)}e.subtitles&&(a=e.subtitles,Ca(a));const l=o.slice(0);o.sort(((t,e)=>{if(t.attrs["HDCP-LEVEL"]!==e.attrs["HDCP-LEVEL"])return(t.attrs["HDCP-LEVEL"]||"")>(e.attrs["HDCP-LEVEL"]||"")?1:-1;if(s&&t.height!==e.height)return t.height-e.height;if(t.frameRate!==e.frameRate)return t.frameRate-e.frameRate;if(t.videoRange!==e.videoRange)return Je.indexOf(t.videoRange)-Je.indexOf(e.videoRange);if(t.videoCodec!==e.videoCodec){const s=le(t.videoCodec),i=le(e.videoCodec);if(s!==i)return i-s}if(t.uri===e.uri&&t.codecSet!==e.codecSet){const s=he(t.codecSet),i=he(e.codecSet);if(s!==i)return i-s}return t.averageBitrate!==e.averageBitrate?t.averageBitrate-e.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let t=0;ts&&s===ba.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=t)}break}const c=r&&!i,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:e.sessionData,sessionKeys:e.sessionKeys,firstLevel:this._firstLevel,stats:e.stats,audio:r,video:i,altAudio:!c&&n.some((t=>!!t.url))};this.hls.trigger(T.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(t){const e=this._levels;if(0===e.length)return;if(t<0||t>=e.length){const s=new Error("invalid level idx"),i=t<0;if(this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.LEVEL_SWITCH_ERROR,level:t,fatal:i,error:s,reason:s.message}),i)return;t=Math.min(t,e.length-1)}const s=this.currentLevelIndex,i=this.currentLevel,r=i?i.attrs["PATHWAY-ID"]:void 0,n=e[t],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=t,this.currentLevel=n,s===t&&n.details&&i&&r===a)return;this.log(`Switching to level ${t} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${s}${r?" with Pathway "+r:""}`);const o={level:t,attrs:n.attrs,details:n.details,bitrate:n.bitrate,averageBitrate:n.averageBitrate,maxBitrate:n.maxBitrate,realBitrate:n.realBitrate,width:n.width,height:n.height,codecSet:n.codecSet,audioCodec:n.audioCodec,videoCodec:n.videoCodec,audioGroups:n.audioGroups,subtitleGroups:n.subtitleGroups,loaded:n.loaded,loadError:n.loadError,fragmentError:n.fragmentError,name:n.name,id:n.id,uri:n.uri,url:n.url,urlId:0,audioGroupIds:n.audioGroupIds,textGroupIds:n.textGroupIds};this.hls.trigger(T.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const t=this.switchParams(n.uri,null==i?void 0:i.details,l);this.loadPlaylist(t)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(t){this.manualLevelIndex=t,void 0===this._startLevel&&(this._startLevel=t),-1!==t&&(this.level=t)}get firstLevel(){return this._firstLevel}set firstLevel(t){this._firstLevel=t}get startLevel(){if(void 0===this._startLevel){const t=this.hls.config.startLevel;return void 0!==t?t:this.hls.firstAutoLevel}return this._startLevel}set startLevel(t){this._startLevel=t}onError(t,e){!e.fatal&&e.context&&e.context.type===Ie&&e.context.level===this.level&&this.checkRetry(e)}onFragBuffered(t,{frag:e}){if(void 0!==e&&e.type===_e){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return;const s=this._levels[e.level];null!=s&&s.loadError&&(this.log(`Resetting level error count of ${s.loadError} on frag buffered`),s.loadError=0)}}onLevelLoaded(t,e){var s;const{level:i,details:r}=e,n=this._levels[i];var a;if(!n)return this.warn(`Invalid level index ${i}`),void(null!=(a=e.deliveryDirectives)&&a.skip&&(r.deltaUpdateFailed=!0));i===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(i,e,n.details)):null!=(s=e.deliveryDirectives)&&s.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(t){super.loadPlaylist();const e=this.currentLevelIndex,s=this.currentLevel;if(s&&this.shouldLoadPlaylist(s)){let i=s.uri;if(t)try{i=t.addDirectives(i)}catch(t){this.warn(`Could not construct new URL with HLS Delivery Directives: ${t}`)}const r=s.attrs["PATHWAY-ID"];this.log(`Loading level index ${e}${void 0!==(null==t?void 0:t.msn)?" at sn "+t.msn+" part "+t.part:""} with${r?" Pathway "+r:""} ${i}`),this.clearTimer(),this.hls.trigger(T.LEVEL_LOADING,{url:i,level:e,pathwayId:s.attrs["PATHWAY-ID"],id:0,deliveryDirectives:t||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(t){this.level=t,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=t)}removeLevel(t){var e;const s=this._levels.filter(((e,s)=>s!==t||(this.steering&&this.steering.removeLevel(e),e===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,e.details&&e.details.fragments.forEach((t=>t.level=-1))),!1)));fs(s),this._levels=s,this.currentLevelIndex>-1&&null!=(e=this.currentLevel)&&e.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(T.LEVELS_UPDATED,{levels:s})}onLevelsUpdated(t,{levels:e}){this._levels=e}checkMaxAutoUpdated(){const{autoLevelCapping:t,maxAutoLevel:e,maxHdcpLevel:s}=this.hls;this._maxAutoLevel!==e&&(this._maxAutoLevel=e,this.hls.trigger(T.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:t,levels:this.levels,maxAutoLevel:e,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:s}))}}function Ca(t){const e={};t.forEach((t=>{const s=t.groupId||"";t.id=e[s]=e[s]||0,e[s]++}))}class _a{constructor(t){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=t}abort(t){for(const s in this.keyUriToKeyInfo){const i=this.keyUriToKeyInfo[s].loader;if(i){var e;if(t&&t!==(null==(e=i.context)?void 0:e.frag.type))return;i.abort()}}}detach(){for(const t in this.keyUriToKeyInfo){const e=this.keyUriToKeyInfo[t];(e.mediaKeySessionContext||e.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[t]}}destroy(){this.detach();for(const t in this.keyUriToKeyInfo){const e=this.keyUriToKeyInfo[t].loader;e&&e.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(t,e=S.KEY_LOAD_ERROR,s,i,r){return new hi({type:E.NETWORK_ERROR,details:e,fatal:!1,frag:t,response:r,error:s,networkDetails:i})}loadClear(t,e){if(this.emeController&&this.config.emeEnabled){const{sn:s,cc:i}=t;for(let t=0;t{r.setKeyFormat(t)}));break}}}}load(t){return!t.decryptdata&&t.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(t).then((e=>this.loadInternal(t,e))):this.loadInternal(t)}loadInternal(t,e){var s,i;e&&t.setKeyFormat(e);const r=t.decryptdata;if(!r){const s=new Error(e?`Expected frag.decryptdata to be defined after setting format ${e}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,s))}const n=r.uri;if(!n)return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(s=a)&&s.decryptdata.key)return r.key=a.decryptdata.key,Promise.resolve({frag:t,keyInfo:a});var o;if(null!=(i=a)&&i.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((e=>(r.key=e.keyInfo.decryptdata.key,{frag:t,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(a,t):this.loadKeyEME(a,t);case"AES-128":return this.loadKeyHTTP(a,t);default:return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(t,e){const s={frag:e,keyInfo:t};if(this.emeController&&this.config.emeEnabled){const e=this.emeController.loadKey(s);if(e)return(t.keyLoadPromise=e.then((e=>(t.mediaKeySessionContext=e,s)))).catch((e=>{throw t.keyLoadPromise=null,e}))}return Promise.resolve(s)}loadKeyHTTP(t,e){const s=this.config,i=new(0,s.loader)(s);return e.keyLoader=t.loader=i,t.keyLoadPromise=new Promise(((r,n)=>{const a={keyInfo:t,frag:e,responseType:"arraybuffer",url:t.decryptdata.uri},o=s.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(t,e,s,i)=>{const{frag:a,keyInfo:o,url:l}=s;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,S.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),i));o.decryptdata.key=a.decryptdata.key=new Uint8Array(t.data),a.keyLoader=null,o.loader=null,r({frag:a,keyInfo:o})},onError:(t,s,i,r)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.KEY_LOAD_ERROR,new Error(`HTTP Error ${t.code} loading key ${t.text}`),i,u({url:a.url,data:void 0},t)))},onTimeout:(t,s,i)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),i))},onAbort:(t,s,i)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.INTERNAL_ABORTED,new Error("key loading aborted"),i))}};i.load(a,l,h)}))}resetLoader(t){const{frag:e,keyInfo:s,url:i}=t,r=s.loader;e.keyLoader===r&&(e.keyLoader=null,s.loader=null),delete this.keyUriToKeyInfo[i],r&&r.destroy()}}function xa(){return self.SourceBuffer||self.WebKitSourceBuffer}function Pa(){if(!ie())return!1;const t=xa();return!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove}class Fa{constructor(t,e,s,i){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=t,this.media=e,this.fragmentTracker=s,this.hls=i}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(t,e){const{config:s,media:i,stalled:r}=this;if(null===i)return;const{currentTime:n,seeking:a}=i,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==t){if(this.moved=!0,a||(this.nudgeRetry=0),null!==r){if(this.stallReported){const t=self.performance.now()-r;k.warn(`playback not stuck anymore @${n}, after ${Math.round(t)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(i.paused&&!a||i.ended||0===i.playbackRate||!Js.getBuffered(i).length)return void(this.nudgeRetry=0);const h=Js.bufferInfo(i,n,0),d=h.nextStart||0;if(a){const t=h.len>2,s=!d||e&&e.start<=n||d-n>2&&!this.fragmentTracker.getPartialFragment(n);if(t||s)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(h.len>0)&&!d)return;const t=Math.max(d,h.start||0)-n,e=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,s=(null==e||null==(c=e.details)?void 0:c.live)?2*e.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(n);if(t>0&&(t<=s||r))return void(i.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const f=u-r;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=Js.bufferInfo(i,n,s.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(t,e){const{config:s,fragmentTracker:i,media:r}=this;if(null===r)return;const n=r.currentTime,a=i.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(t.len>s.maxBufferHole||t.nextStart&&t.nextStart-n1e3*s.highBufferWatchdogPeriod&&(k.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(t){const{hls:e,media:s,stallReported:i}=this;if(!i&&s){this.stallReported=!0;const i=new Error(`Playback stalling at @${s.currentTime} due to low buffer (${JSON.stringify(t)})`);k.warn(i.message),e.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_STALLED_ERROR,fatal:!1,error:i,buffer:t.len})}}_trySkipBufferHole(t){const{config:e,hls:s,media:i}=this;if(null===i)return 0;const r=i.currentTime,n=Js.bufferInfo(i,r,0),a=r0&&n.len<1&&i.readyState<3,h=a-r;if(h>0&&(o||l)){if(h>e.maxBufferHole){const{fragmentTracker:e}=this;let s=!1;if(0===r){const t=e.getAppendedFrag(0,_e);t&&a1?(t=0,this.bitrateTest=!0):t=s.firstAutoLevel),s.nextLoadLevel=t,this.level=s.loadLevel,this.loadedmetadata=!1}e>0&&-1===t&&(this.log(`Override startPosition with lastCurrentTime @${e.toFixed(3)}`),t=e),this.state=pi,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}else this._forceStartLoad=!0,this.state=mi}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case ki:{const{levels:t,level:e}=this,s=null==t?void 0:t[e],i=null==s?void 0:s.details;if(i&&(!i.live||this.levelLastLoaded===s)){if(this.waitForCdnTuneIn(i))break;this.state=pi;break}if(this.hls.nextLoadLevel!==this.level){this.state=pi;break}break}case Ti:{var t;const e=self.performance.now(),s=this.retryDate;if(!s||e>=s||null!=(t=this.media)&&t.seeking){const{levels:t,level:e}=this,s=null==t?void 0:t[e];this.resetStartWhenNotLoaded(s||null),this.state=pi}}}this.state===pi&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:t,levelLastLoaded:e,levels:s,media:i}=this;if(null===e||!i&&(this.startFragRequested||!t.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=t.nextLoadLevel;if(null==s||!s[r])return;const n=s[r],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const t={};return this.altAudio&&(t.type="video"),this.hls.trigger(T.BUFFER_EOS,t),void(this.state=Ai)}t.loadLevel!==r&&-1===t.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=t.nextLoadLevel=r;const l=n.details;if(!l||this.state===ki||l.live&&this.levelLastLoaded!==n)return this.level=r,void(this.state=ki);const h=a.len,d=this.getMaxBufferLength(n.maxBitrate);if(h>=d)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==js){var f;const t=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,e=l.fragments[t-1];e&&u.cc===e.cc&&(u=e,this.fragmentTracker.removeFragment(e))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const t=this.audioOnly&&!this.altAudio?P:F,e=(t===F?this.videoBuffer:this.mediaBuffer)||this.media;e&&this.afterBufferFlushed(e,t,_e)}u=this.getNextFragmentLoopLoading(u,l,a,_e,d)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,c))}loadFragment(t,e,s){const i=this.fragmentTracker.getState(t);this.fragCurrent=t,i===Vs||i===Ws?"initSegment"===t.sn?this._loadInitSegment(t,e):this.bitrateTest?(this.log(`Fragment ${t.sn} of level ${t.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(t,e)):(this.startFragRequested=!0,super.loadFragment(t,e,s)):this.clearTrackerIfNeeded(t)}getBufferedFrag(t){return this.fragmentTracker.getBufferedFrag(t,_e)}followingBufferedFrag(t){return t?this.getBufferedFrag(t.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:t,media:e}=this;if(null!=e&&e.readyState){let s;const i=this.getAppendedFrag(e.currentTime);i&&i.start>1&&this.flushMainBuffer(0,i.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const t=this.getMainFwdBufferInfo();if(!t||t.len<2*r.targetduration)return}if(!e.paused&&t){const e=t[this.hls.nextLoadLevel],i=this.fragLastKbps;s=i&&this.fragCurrent?this.fragCurrent.duration*e.maxBitrate/(1e3*i)+1:0}else s=0;const n=this.getBufferedFrag(e.currentTime+s);if(n){const t=this.followingBufferedFrag(n);if(t){this.abortCurrentFrag();const e=t.maxStartPTS?t.maxStartPTS:t.start,s=t.duration,i=Math.max(n.end,e+Math.min(Math.max(s-this.config.maxFragLookUpTolerance,s*(this.couldBacktrack?.5:.125)),s*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(i,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const t=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,t&&(t.abortRequests(),this.fragmentTracker.removeFragment(t)),this.state){case vi:case yi:case Ti:case Si:case Li:this.state=pi}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(t,e){super.flushMainBuffer(t,e,this.altAudio?"video":null)}onMediaAttached(t,e){super.onMediaAttached(t,e);const s=e.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),s.addEventListener("playing",this.onvplaying),s.addEventListener("seeked",this.onvseeked),this.gapController=new Fa(this.config,s,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:t}=this;t&&this.onvplaying&&this.onvseeked&&(t.removeEventListener("playing",this.onvplaying),t.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const t=this.media,e=t?t.currentTime:null;p(e)&&this.log(`Media seeked to ${e.toFixed(3)}`);const s=this.getMainFwdBufferInfo();null!==s&&0!==s.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${s?s.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(T.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=this.fragLastKbps=0,this.levels=this.fragPlaying=this.backtrackFragment=this.levelLastLoaded=null,this.altAudio=this.audioOnly=this.startFragRequested=!1}onManifestParsed(t,e){let s=!1,i=!1;e.levels.forEach((t=>{const e=t.audioCodec;e&&(s=s||-1!==e.indexOf("mp4a.40.2"),i=i||-1!==e.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=s&&i&&!function(){var t;const e=xa();return"function"==typeof(null==e||null==(t=e.prototype)?void 0:t.changeType)}(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=e.levels,this.startFragRequested=!1}onLevelLoading(t,e){const{levels:s}=this;if(!s||this.state!==pi)return;const i=s[e.level];(!i.details||i.details.live&&this.levelLastLoaded!==i||this.waitForCdnTuneIn(i.details))&&(this.state=ki)}onLevelLoaded(t,e){var s;const{levels:i}=this,r=e.level,n=e.details,a=n.totalduration;if(!i)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=i[r],l=this.fragCurrent;!l||this.state!==yi&&this.state!==Ti||l.level!==e.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(s=o.details)&&s.live){var d;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(d=this.levelLastLoaded)?void 0:d.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(T.LEVEL_UPDATED,{details:n,level:r}),this.state===ki){if(this.waitForCdnTuneIn(n))return;this.state=pi}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(t){var e;const{frag:s,part:i,payload:r}=t,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);const a=n[s.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${s.sn} of level ${s.level} after level details were reset`),void this.fragmentTracker.removeFragment(s);const l=a.videoCodec,h=o.PTSKnown||!o.live,d=null==(e=s.initSegment)?void 0:e.data,c=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new Fr(this.hls,_e,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=i?i.index:-1,g=-1!==f,m=new Zs(s.level,s.sn,s.stats.chunkCount,r.byteLength,f,g),p=this.initPTS[s.cc];u.push(r,d,c,l,s,i,o.totalduration,h,m,p)}onAudioTrackSwitching(t,e){const s=this.altAudio;if(!!!e.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;const t=this.fragCurrent;t&&(this.log("Switching to main audio track, cancel main fragment load"),t.abortRequests(),this.fragmentTracker.removeFragment(t)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const t=this.hls;s&&(t.trigger(T.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),t.trigger(T.AUDIO_TRACK_SWITCHED,e)}}onAudioTrackSwitched(t,e){const s=e.id,i=!!this.hls.audioTracks[s].url;if(i){const t=this.videoBuffer;t&&this.mediaBuffer!==t&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=t)}this.altAudio=i,this.tick()}onBufferCreated(t,e){const s=e.tracks;let i,r,n=!1;for(const t in s){const e=s[t];if("main"===e.id){if(r=t,i=e,"video"===t){const e=s[t];e&&(this.videoBuffer=e.buffer)}}else n=!0}n&&i?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=i.buffer):this.mediaBuffer=this.media}onFragBuffered(t,e){const{frag:s,part:i}=e;if(s&&s.type!==_e)return;if(this.fragContextChanged(s))return this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===Li&&(this.state=pi));const r=i?i.stats:s.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==s.sn&&(this.fragPrevious=s),this.fragBufferedComplete(s,i)}onError(t,e){var s;if(e.fatal)this.state=Ri;else switch(e.details){case S.FRAG_GAP:case S.FRAG_PARSING_ERROR:case S.FRAG_DECRYPT_ERROR:case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(_e,e);break;case S.LEVEL_LOAD_ERROR:case S.LEVEL_LOAD_TIMEOUT:case S.LEVEL_PARSING_ERROR:e.levelRetry||this.state!==ki||(null==(s=e.context)?void 0:s.type)!==Ie||(this.state=pi);break;case S.BUFFER_APPEND_ERROR:case S.BUFFER_FULL_ERROR:if(!e.parent||"main"!==e.parent)return;if(e.details===S.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(e)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case S.INTERNAL_EXCEPTION:this.recoverWorkerError(e)}}checkBuffer(){const{media:t,gapController:e}=this;if(t&&e&&t.readyState){if(this.loadedmetadata||!Js.getBuffered(t).length){const t=this.state!==pi?this.fragCurrent:null;e.poll(this.lastCurrentTime,t)}this.lastCurrentTime=t.currentTime}}onFragLoadEmergencyAborted(){this.state=pi,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(t,{type:e}){if(e!==P||this.audioOnly&&!this.altAudio){const t=(e===F?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(t,e,_e),this.tick()}}onLevelsUpdated(t,e){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=e.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:t}=this;if(!t)return;const e=t.currentTime;let s=this.startPosition;if(s>=0&&e0&&(r{const{hls:i}=this;if(!s||this.fragContextChanged(t))return;e.fragmentError=0,this.state=pi,this.startFragRequested=!1,this.bitrateTest=!1;const r=t.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),i.trigger(T.FRAG_LOADED,s),t.bitrateTest=!1}))}_handleTransmuxComplete(t){var e;const s="main",{hls:i}=this,{remuxResult:r,chunkMeta:n}=t,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:d,text:c,id3:u,initSegment:f}=r,{details:g}=h,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=Si,f){if(null!=f&&f.tracks){const t=o.initSegment||o;this._bufferInitSegment(h,f.tracks,t,n),i.trigger(T.FRAG_PARSING_INIT_SEGMENT,{frag:t,id:s,tracks:f.tracks})}const t=f.initPTS,e=f.timescale;p(t)&&(this.initPTS[o.cc]={baseTime:t,timescale:e},i.trigger(T.INIT_PTS_FOUND,{frag:o,id:s,initPTS:t,timescale:e}))}if(d&&g&&"initSegment"!==o.sn){const t=g.fragments[o.sn-1-g.startSN],e=o.sn===g.startSN,s=!t||o.cc>t.cc;if(!1!==r.independent){const{startPTS:t,endPTS:i,startDTS:r,endDTS:a}=d;if(l)l.elementaryStreams[d.type]={startPTS:t,endPTS:i,startDTS:r,endDTS:a};else if(d.firstKeyFrame&&d.independent&&1===n.id&&!s&&(this.couldBacktrack=!0),d.dropped&&d.independent){const r=this.getMainFwdBufferInfo(),n=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=d.firstKeyFramePTS?d.firstKeyFramePTS:t;if(!e&&n2&&(o.gap=!0);o.setElementaryStreamInfo(d.type,t,i,r,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(d,o,l,n,e||s)}else{if(!e&&!s)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:t,endPTS:e,startDTS:s,endDTS:i}=m;l&&(l.elementaryStreams[P]={startPTS:t,endPTS:e,startDTS:s,endDTS:i}),o.setElementaryStreamInfo(P,t,e,s,i),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(e=u.samples)&&e.length){const t={id:s,frag:o,details:g,samples:u.samples};i.trigger(T.FRAG_PARSING_METADATA,t)}if(g&&c){const t={id:s,frag:o,details:g,samples:c.samples};i.trigger(T.FRAG_PARSING_USERDATA,t)}}}_bufferInitSegment(t,e,s,i){if(this.state!==Si)return;this.audioOnly=!!e.audio&&!e.video,this.altAudio&&!this.audioOnly&&delete e.audio;const{audio:r,video:n,audiovideo:a}=e;if(r){let e=t.audioCodec;const s=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){e&&(e=-1!==e.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const t=r.metadata;t&&"channelCount"in t&&1!==(t.channelCount||1)&&-1===s.indexOf("firefox")&&(e="mp4a.40.5")}e&&-1!==e.indexOf("mp4a.40.5")&&-1!==s.indexOf("android")&&"audio/mpeg"!==r.container&&(e="mp4a.40.2",this.log(`Android: force audio codec to ${e}`)),t.audioCodec&&t.audioCodec!==e&&this.log(`Swapping manifest audio codec "${t.audioCodec}" for "${e}"`),r.levelCodec=e,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${e||""}/${t.audioCodec||""}/${r.codec}]`)}n&&(n.levelCodec=t.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${t.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${t.codecs}/${a.codec}]`),this.hls.trigger(T.BUFFER_CODECS,e),Object.keys(e).forEach((t=>{const r=e[t].initSegment;null!=r&&r.byteLength&&this.hls.trigger(T.BUFFER_APPENDING,{type:t,data:r,frag:s,part:null,chunkMeta:i,parent:s.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,_e)}backtrack(t){this.couldBacktrack=!0,this.backtrackFragment=t,this.resetTransmuxer(),this.flushBufferGap(t),this.fragmentTracker.removeFragment(t),this.fragPrevious=null,this.nextLoadPosition=t.start,this.state=pi}checkFragmentChanged(){const t=this.media;let e=null;if(t&&t.readyState>1&&!1===t.seeking){const s=t.currentTime;if(Js.isBuffered(t,s)?e=this.getAppendedFrag(s):Js.isBuffered(t,s+.1)&&(e=this.getAppendedFrag(s+.1)),e){this.backtrackFragment=null;const t=this.fragPlaying,s=e.level;t&&e.sn===t.sn&&t.level===s||(this.fragPlaying=e,this.hls.trigger(T.FRAG_CHANGED,{frag:e}),t&&t.level===s||this.hls.trigger(T.LEVEL_SWITCHED,{level:s}))}}}get nextLevel(){const t=this.nextBufferedFrag;return t?t.level:-1}get currentFrag(){const t=this.media;return t?this.fragPlaying||this.getAppendedFrag(t.currentTime):null}get currentProgramDateTime(){const t=this.media;if(t){const e=t.currentTime,s=this.currentFrag;if(s&&p(e)&&p(s.programDateTime)){const t=s.programDateTime+1e3*(e-s.start);return new Date(t)}}return null}get currentLevel(){const t=this.currentFrag;return t?t.level:-1}get nextBufferedFrag(){const t=this.currentFrag;return t?this.followingBufferedFrag(t):null}get forceStartLoad(){return this._forceStartLoad}}class Oa{static get version(){return"1.5.16"}static isMSESupported(){return Pa()}static isSupported(){return function(){if(!Pa())return!1;const t=ie();return"function"==typeof(null==t?void 0:t.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((e=>t.isTypeSupported(oe(e,"video"))))||["mp4a.40.2","fLaC"].some((e=>t.isTypeSupported(oe(e,"audio")))))}()}static getMediaSource(){return ie()}static get Events(){return T}static get ErrorTypes(){return E}static get ErrorDetails(){return S}static get DefaultConfig(){return Oa.defaultConfig?Oa.defaultConfig:ba}static set DefaultConfig(t){Oa.defaultConfig=t}constructor(t={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new Pr,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,this.triggeringException=void 0,function(t,e){if("object"==typeof console&&!0===t||"object"==typeof t){b(t,"debug","log","info","warn","error");try{R.log(`Debug logs enabled for "${e}" in hls.js version 1.5.16`)}catch(t){R=A}}else R=A}(t.debug||!1,"Hls instance");const e=this.config=function(t,e){if((e.liveSyncDurationCount||e.liveMaxLatencyDurationCount)&&(e.liveSyncDuration||e.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==e.liveMaxLatencyDurationCount&&(void 0===e.liveSyncDurationCount||e.liveMaxLatencyDurationCount<=e.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==e.liveMaxLatencyDuration&&(void 0===e.liveSyncDuration||e.liveMaxLatencyDuration<=e.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const s=ka(t),i=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((t=>{const r=`${"level"===t?"playlist":t}LoadPolicy`,n=void 0===e[r],a=[];i.forEach((i=>{const o=`${t}Loading${i}`,l=e[o];if(void 0!==l&&n){a.push(o);const t=s[r].default;switch(e[r]={default:t},i){case"TimeOut":t.maxLoadTimeMs=l,t.maxTimeToFirstByteMs=l;break;case"MaxRetry":t.errorRetry.maxNumRetry=l,t.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":t.errorRetry.retryDelayMs=l,t.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":t.errorRetry.maxRetryDelayMs=l,t.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&k.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(e[r])}`)})),u(u({},s),e)}(Oa.DefaultConfig,t);this.userConfig=t,e.progressive&&Da(e);const{abrController:s,bufferController:i,capLevelController:r,errorController:n,fpsController:a}=e,o=new n(this),l=this.abrController=new s(this),h=this.bufferController=new i(this),d=this.capLevelController=new r(this),c=new a(this),f=new Oe(this),g=new Xe(this),m=e.contentSteeringController,p=m?new m(this):null,v=this.levelController=new wa(this,p),y=new qs(this),E=new _a(this.config),S=this.streamController=new Ma(this,y,E);d.setStreamController(S),c.setStreamController(S);const L=[f,v,S];p&&L.splice(1,0,p),this.networkControllers=L;const D=[l,h,d,c,g,y];this.audioTrackController=this.createController(e.audioTrackController,L);const I=e.audioStreamController;I&&L.push(new I(this,y,E)),this.subtitleTrackController=this.createController(e.subtitleTrackController,L);const w=e.subtitleStreamController;w&&L.push(new w(this,y,E)),this.createController(e.timelineController,D),E.emeController=this.emeController=this.createController(e.emeController,D),this.cmcdController=this.createController(e.cmcdController,D),this.latencyController=this.createController(ze,D),this.coreComponents=D,L.push(o);const C=o.onErrorOut;"function"==typeof C&&this.on(T.ERROR,C,o)}createController(t,e){if(t){const s=new t(this);return e&&e.push(s),s}return null}on(t,e,s=this){this._emitter.on(t,e,s)}once(t,e,s=this){this._emitter.once(t,e,s)}removeAllListeners(t){this._emitter.removeAllListeners(t)}off(t,e,s=this,i){this._emitter.off(t,e,s,i)}listeners(t){return this._emitter.listeners(t)}emit(t,e,s){return this._emitter.emit(t,e,s)}trigger(t,e){if(this.config.debug)return this.emit(t,t,e);try{return this.emit(t,t,e)}catch(e){if(k.error("An internal error happened while handling event "+t+'. Error message: "'+e.message+'". Here is a stacktrace:',e),!this.triggeringException){this.triggeringException=!0;const s=t===T.ERROR;this.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,fatal:s,event:t,error:e}),this.triggeringException=!1}}return!1}listenerCount(t){return this._emitter.listenerCount(t)}destroy(){k.log("destroy"),this.trigger(T.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((t=>t.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((t=>t.destroy())),this.coreComponents.length=0;const t=this.config;t.xhrSetup=t.fetchSetup=void 0,this.userConfig=null}attachMedia(t){k.log("attachMedia"),this._media=t,this.trigger(T.MEDIA_ATTACHING,{media:t})}detachMedia(){k.log("detachMedia"),this.trigger(T.MEDIA_DETACHING,void 0),this._media=null}loadSource(t){this.stopLoad();const e=this.media,s=this.url,i=this.url=d.buildAbsoluteURL(self.location.href,t,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,k.log(`loadSource:${i}`),e&&s&&(s!==i||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(e)),this.trigger(T.MANIFEST_LOADING,{url:t})}startLoad(t=-1){k.log(`startLoad(${t})`),this.started=!0,this.networkControllers.forEach((e=>{e.startLoad(t)}))}stopLoad(){k.log("stopLoad"),this.started=!1,this.networkControllers.forEach((t=>{t.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((t=>{"fragmentLoader"in t&&t.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((t=>{"fragmentLoader"in t&&t.stopLoad()}))}swapAudioCodec(){k.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){k.log("recoverMediaError");const t=this._media;this.detachMedia(),t&&this.attachMedia(t)}removeLevel(t){this.levelController.removeLevel(t)}get levels(){const t=this.levelController.levels;return t||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(t){k.log(`set currentLevel:${t}`),this.levelController.manualLevel=t,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(t){k.log(`set nextLevel:${t}`),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(t){k.log(`set loadLevel:${t}`),this.levelController.manualLevel=t}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(t){this.levelController.nextLoadLevel=t}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(t){k.log(`set firstLevel:${t}`),this.levelController.firstLevel=t}get startLevel(){const t=this.levelController.startLevel;return-1===t&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:t}set startLevel(t){k.log(`set startLevel:${t}`),-1!==t&&(t=Math.max(t,this.minAutoLevel)),this.levelController.startLevel=t}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(t){const e=!!t;e!==this.config.capLevelToPlayerSize&&(e?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=e)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimate():NaN}set bandwidthEstimate(t){this.abrController.resetEstimator(t)}get ttfbEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimateTTFB():NaN}set autoLevelCapping(t){this._autoLevelCapping!==t&&(k.log(`set autoLevelCapping:${t}`),this._autoLevelCapping=t,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(t){(function(t){return Qe.indexOf(t)>-1})(t)&&this._maxHdcpLevel!==t&&(this._maxHdcpLevel=t,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:t,config:{minAutoBitrate:e}}=this;if(!t)return 0;const s=t.length;for(let i=0;i=e)return i;return 0}get maxAutoLevel(){const{levels:t,autoLevelCapping:e,maxHdcpLevel:s}=this;let i;if(i=-1===e&&null!=t&&t.length?t.length-1:e,s)for(let e=i;e--;){const i=t[e].attrs["HDCP-LEVEL"];if(i&&i<=s)return e}return i}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(t){this.abrController.nextAutoLevel=t}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(t){var e;return null==(e=this.audioTrackController)?void 0:e.setAudioOption(t)}setSubtitleOption(t){var e;return null==(e=this.subtitleTrackController)||e.setSubtitleOption(t),null}get allAudioTracks(){const t=this.audioTrackController;return t?t.allAudioTracks:[]}get audioTracks(){const t=this.audioTrackController;return t?t.audioTracks:[]}get audioTrack(){const t=this.audioTrackController;return t?t.audioTrack:-1}set audioTrack(t){const e=this.audioTrackController;e&&(e.audioTrack=t)}get allSubtitleTracks(){const t=this.subtitleTrackController;return t?t.allSubtitleTracks:[]}get subtitleTracks(){const t=this.subtitleTrackController;return t?t.subtitleTracks:[]}get subtitleTrack(){const t=this.subtitleTrackController;return t?t.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(t){const e=this.subtitleTrackController;e&&(e.subtitleTrack=t)}get subtitleDisplay(){const t=this.subtitleTrackController;return!!t&&t.subtitleDisplay}set subtitleDisplay(t){const e=this.subtitleTrackController;e&&(e.subtitleDisplay=t)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(t){this.config.lowLatencyMode=t}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}Oa.defaultConfig=void 0}}]); \ No newline at end of file diff --git a/51443.async.js b/51443.async.js index 3d10bdca71..ee8773f0e0 100644 --- a/51443.async.js +++ b/51443.async.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[51443],{10948:function(n,e,t){t.d(e,{JW:function(){return U},Jd:function(){return C},Kl:function(){return B},L5:function(){return h},MH:function(){return P},MI:function(){return M},Qo:function(){return k},SO:function(){return v},Tf:function(){return w},XO:function(){return f},Xy:function(){return g},Y0:function(){return j},Ye:function(){return K},Yv:function(){return F},ZH:function(){return z},am:function(){return R},bD:function(){return J},eA:function(){return b},fA:function(){return H},fY:function(){return E},g6:function(){return p},g7:function(){return Y},gT:function(){return S},gn:function(){return W},h$:function(){return G},hG:function(){return y},i8:function(){return D},j3:function(){return Z},lH:function(){return O},li:function(){return m},n4:function(){return _},pU:function(){return I},qK:function(){return x},sA:function(){return A},sP:function(){return L},t$:function(){return N},zl:function(){return T}});var r=t(7557),o=t.n(r),c=t(41498),i=t.n(c),u=t(82242),s=t.n(u),a=t(18838),l=(0,t(23603).oP)(),d={};function f(n,e){return(0,a.U2)("tasks/".concat(n,".json"),s()(s()({},e),d))}function p(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.U2)("myshixuns/".concat(n,"/challenges.json"),s()({},e))}function v(n,e){return(0,a.U2)("myshixuns/".concat(n,"/subject_challenges.json"),e)}function h(n,e,t){return(0,a.U2)("tasks/".concat(n,"/star.json"),{shixun_id:e,star:t})}function m(n,e){return(0,a.U2)("tasks/".concat(n,"/rep_content.json"),s()(s()({},e),d))}function _(n,e){return(0,a.v_)("myshixuns/".concat(n,"/update_file.json"),e)}function x(n,e){return(0,a.U2)("tasks/".concat(n,"/reset_original_code.json"),s()(s()({},e),d))}function w(n,e){return(0,a.v_)("myshixuns/".concat(n,"/reset_repository.json"),e)}function y(n,e){return(0,a.U2)("tasks/".concat(n,"/reset_passed_code.json"),s()(s()({},e),d))}function g(n,e){return(0,a.v_)("tasks/".concat(n,"/game_build.json"),s()(s()({},e),d))}function b(n){return(0,a.ZP)("http://localhost:49352/api/game_build",{method:"post",body:n})}function k(n,e){return(0,a.U2)("tasks/".concat(n,"/game_status.json"),s()(s()({},e),d))}function T(n,e){return(0,a.v_)("tasks/".concat(n,"/choose_build.json"),s()(s()({},e),d))}function E(n){return(0,a.U2)("myshixuns/".concat(n,"/get_remaining_time.json"))}function S(n){return(0,a.U2)("tasks/".concat(n,"/picture_display.json"),d)}function j(n){return(0,a.v_)("tasks/".concat(n,"/plus_or_cancel_praise.json"))}function I(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.v_)("myshixuns/".concat(n,"/repository.json"),e)}function A(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.U2)("myshixuns/".concat(n,"/start.json"),e)}function R(n,e){return(0,a.U2)("myshixuns/".concat(n,"/reset_pod.json"),e)}function C(n,e){return(0,a.ZP)("/api/tasks/".concat(n,"/reboot_esc.json"),{method:"post",body:e})}function N(n){return(0,a.U2)("tasks/".concat(n,"/check_test_sets.json"))}function O(n){return(0,a.U2)("tasks/".concat(n,"/get_answer_info.json"))}function L(n){return(0,a.U2)("tasks/".concat(n,"/get_choose_answer.json"))}function P(n){return(0,a.U2)("tasks/".concat(n,"/unlock_choose_answer.json"))}function Z(n,e){return(0,a.U2)("tasks/".concat(n,"/unlock_answer.json"),{answer_id:e})}function U(n,e,t,r){return(0,a.v_)("tasks/".concat(n,"/set_games_status.json"),s()({result:e,data:t},r||{}))}function B(n,e){return(0,a.U2)("myshixuns/".concat(n,"/active_pod.json"),e)}function D(n,e){return(0,a.U2)("tasks/".concat(n,"/rank_list.json"),e)}function H(n,e){return(0,a.v_)("tasks/".concat(n,"/close_windows_vnc.json"),{tpi_id:e})}function z(n,e){return(0,a.U2)("tasks/".concat(n,"/commit_files.json"),e)}function W(n,e){return(0,a.U2)("tasks/".concat(n,"/pull_files.json"),e)}function G(n,e){return(0,a.v_)("tasks/".concat(n,"/log_output"),e)}function F(n,e){return(0,a.U2)("tasks/".concat(n,"/stop_log_output.json"),e)}function M(n){return X.apply(this,arguments)}function X(){return(X=i()(o()().mark((function n(e){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,a.ZP)("/api/myshixuns/".concat(e.id,"/add_file.json"),{method:"post",body:e}));case 1:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function J(n){return V.apply(this,arguments)}function V(){return(V=i()(o()().mark((function n(e){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,a.ZP)("/api/myshixuns/".concat(e.id,"/delete_git_file.json"),{method:"Delete",body:e}));case 1:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function Y(n){return q.apply(this,arguments)}function q(){return(q=i()(o()().mark((function n(e){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,a.ZP)("/api/myshixuns/".concat(e.id,"/mv_file.json"),{method:"post",body:e}));case 1:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function K(n,e){return(0,a.ZP)("/api/shixuns/".concat(n,"/set_start_permanent.json"),{method:"put",body:e})}null!=l&&l.homework_common_id&&(d.homework_common_id=null==l?void 0:l.homework_common_id),null!=l&&l.exercisesId&&(d.exercise_id=null==l?void 0:l.exercisesId),console.log(l,d,"urlParamsAll")},1505:function(n,e,t){t.d(e,{Z:function(){return Z}});var r=t(7557),o=t.n(r),c=t(41498),i=t.n(c),u=t(91232),s=t.n(u),a=t(79800),l=t.n(a),d=t(82242),f=t.n(d),p=t(59301),v=t(43418),h=t(8591),m=t(93948),_=t(67293),x=t(76374),w=t(83081),y=t(64201),g=t(23603),b=t(92832),k=t(3113),T=t(37712),E=b.Z.TextArea,S=function(n){var e=n.onCancel,t=n.onSave,r=n.content,o=(0,p.useState)(r),c=l()(o,2),i=c[0],u=c[1];return(0,p.useEffect)((function(){u(r)}),[r]),(0,T.jsxs)("div",{className:"clipboard-box",children:[(0,T.jsx)("h3",{children:"实验环境剪切板:"}),(0,T.jsx)(E,{value:i,onChange:function(n){u(n.target.value)},className:"clipboard"}),(0,T.jsxs)("p",{children:[" ",(0,T.jsx)("b",{children:" 1.从外部复制内容到实验环境内: "})," 粘贴内容到上面文本框,点击保存,然后在实验环境中进行粘贴。 "]}),(0,T.jsxs)("p",{children:[" ",(0,T.jsx)("b",{children:" 2.获取实验环境中的内容: "})," 请先在环境中复制内容,复制动作完成后内容会显示在上面文本框,然后在上面文本框中再次复制。 "]}),(0,T.jsxs)("div",{className:"btn-action-container",children:[(0,T.jsx)(k.ZP,{type:"ghost",onClick:e,style:{marginRight:10},children:"取消"}),(0,T.jsx)(k.ZP,{type:"primary",onClick:function(){t(i)},children:"保存"})]})]})},j=t(33316),I=t(10948),A=t(62013),R=t(26750),C=t(18838);function N(n){n||(n=window.location.search);var e=n.substr(1),t={};return e.split("&").forEach((function(n){var e=n.split("=");t[e[0]]=decodeURIComponent(e[1])})),t}var O={loading:!0,isLarge:!1,showClipBoardBox:!1,transferContent:"",mes:"实验环境准备中"},L=function(n){return n[n.SET_LOADING=0]="SET_LOADING",n[n.SET_IS_LARGE=1]="SET_IS_LARGE",n[n.SET_MES=2]="SET_MES",n[n.SET_STATE=3]="SET_STATE",n[n.SHOW_CLIPBOARD_BOX=4]="SHOW_CLIPBOARD_BOX",n[n.SET_TRANSFER_CONTENT=5]="SET_TRANSFER_CONTENT",n[n.UPDATE_ALL=6]="UPDATE_ALL",n}(L||{});function P(n,e){switch(e.type){case L.SET_LOADING:return f()(f()({},n),{},{loading:e.payload});case L.SET_IS_LARGE:return f()({},f()(f()({},n),{},{isLarge:e.payload}));case L.SET_MES:return f()(f()({},n),{},{mes:e.payload});case L.SET_STATE:return f()(f()({},n),e.payload);case L.SET_TRANSFER_CONTENT:return f()(f()({},n),{},{transferContent:e.payload});case L.SHOW_CLIPBOARD_BOX:return f()(f()({},n),{},{showClipBoardBox:e.payload});case L.UPDATE_ALL:return f()({loading:n.loading},e.payload);default:throw new Error}}var Z=function(n){var e=n.vnc_url,t=n.window_vnc_url,r=n.linux_vnc,c=n.virtual_machine,u=n.taskData,a=n.shixun_environment_id,d=n.tab_type,b=n.instance_startup_type,k=n.index_tab,E=n.tpi_type,Z=(0,p.useRef)(),U=(0,p.useRef)(),B=(0,p.useRef)(),D=(0,p.useRef)(),H=(0,p.useRef)(),z=(0,p.useRef)(),W=(0,p.useRef)(),G=(0,p.useRef)(),F=(0,p.useReducer)(P,O),M=l()(F,2),X=M[0],J=M[1],V=(0,p.useState)(0),Y=l()(V,2),q=Y[0],K=Y[1],$=X.mes,Q=X.loading,nn=X.showClipBoardBox,en=X.isLarge,tn=X.transferContent,rn=(0,p.useRef)(),on=(0,p.useRef)(),cn=(0,y.useSearchParams)(),un=l()(cn,1)[0],sn=(0,p.useState)(0),an=l()(sn,2),ln=an[0],dn=an[1],fn=(0,p.useRef)(),pn=(0,y.useParams)();(0,p.useEffect)((function(){return function(){var n,e;null===(n=U.current)||void 0===n||null===(e=n.disconnect)||void 0===e||e.call(n),clearTimeout(G.current),clearInterval(rn.current)}}),[]),(0,p.useEffect)((function(){on.current=X.loading}),[X.loading]);var vn=function(){var n;2===b?setTimeout((function(){kn()}),1500):void 0!==(null==B||null===(n=B.current)||void 0===n?void 0:n.resizeSession)&&((0,j.vp)()?B.current.resizeSession=!0:setTimeout((function(){}),900))};function hn(){J({type:L.SHOW_CLIPBOARD_BOX,payload:!1})}function mn(n){return Z.current&&(D.current=new x.Z((function(e){var t,r=s()(e);try{for(r.s();!(t=r.n()).done;){var o,c=t.value;if(2===b&&kn(),(c.target.offsetHeight>0||c.target.offsetWidth>0)&&n)n.scaleViewport=!0,null==n||null===(o=n._eventHandlers)||void 0===o||o.windowResize()}}catch(n){r.e(n)}finally{r.f()}})),D.current.observe(Z.current)),D.current}(0,p.useEffect)((function(){return document.addEventListener((0,j.gH)(),vn),function(){document.removeEventListener((0,j.gH)(),vn)}}),[]);var _n=function(){var n=i()(o()().mark((function n(){var e,t,r,s,l,p,h;return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r={},"exercises"===un.get("type")?r.exercise_id=un.get("exercisesId"):pn.courseId&&pn.homeworkId&&(r.homework_common_id=pn.homeworkId),n.next=4,(0,I.sA)(null===(e=u.myshixun)||void 0===e?void 0:e.identifier,f()(f()({},pn),{},{taskId:pn.taskId,shixun_environment_id:a,tab_type:d},r));case 4:if(null==(s=n.sent)||null===(t=s.data)||void 0===t||null===(t=t.data_list)||void 0===t||!t.length){n.next=8;break}return R.Z.publish("pod-restrict-data",{identifier:null==s||null===(l=s.data)||void 0===l?void 0:l.identifier,data_list:null==s||null===(p=s.data)||void 0===p?void 0:p.data_list}),n.abrupt("return",Promise.reject());case 8:if(-3!==(null==s?void 0:s.status)){n.next=10;break}return n.abrupt("return",new Promise(function(){var n=i()(o()().mark((function n(e,t){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:v.Z.confirm({content:"检测到您已经开启了其他实验环境,请先关闭环境后,再连接",okText:"立即关闭",cancelText:"稍后关闭",onOk:function(){var n=i()(o()().mark((function n(){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return clearTimeout(fn.current),dn(0),n.next=4,(0,I.fA)(pn.taskId,null==s?void 0:s.message);case 4:return K(q+1),n.abrupt("return");case 6:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}()});case 1:case"end":return n.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}()));case 10:if(-1!==(null==s?void 0:s.status)){n.next=12;break}throw new String(null==s?void 0:s.message);case 12:if(0!==(null==s?void 0:s.status)){n.next=17;break}return c&&((0,g.d8)("PVEAuthCookie",null==s||null===(h=s.data)||void 0===h||null===(h=h.cookie_options)||void 0===h?void 0:h.cookies_value,1),(0,g.d8)("PVELangCookie","zh_CN",1)),R.Z.publish("update-windows-time",null==s?void 0:s.data),R.Z.publish("send-tabs-result-data",f()(f()({},null==s?void 0:s.data),{},{index_tab:k})),n.abrupt("return",s);case 17:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}();function xn(){dn(100),clearTimeout(fn.current),setTimeout((function(){J({type:L.SET_LOADING,payload:!1})}),1300),clearTimeout(rn.current)}var wn=function(){B.current=new A.Z(Z.current,W.current,{credentials:{password:z.current},wsProtocols:["binary"],show_dot:!0}),B.current.removeEventListener("disconnect",gn),B.current.removeEventListener("connect",xn),B.current.removeEventListener("clipboard",yn),window.rfbs2=B.current,D.current=mn(B.current),B.current.viewOnly=pn.view_only||!1,B.current.scaleViewport=pn.scale||!0,B.current.showDotCursor=!0,B.current.resizeSession=!0,B.current.addEventListener("disconnect",gn),B.current.addEventListener("connect",xn),B.current.addEventListener("clipboard",yn)};function yn(n){var e=n.detail.text.replace(/\\u([\dA-Za-z]{4})/g,(function(n,e){return String.fromCharCode(parseInt("0x"+e))}));J({type:L.SET_TRANSFER_CONTENT,payload:e})}function gn(){if(t)J({type:L.SET_LOADING,payload:!0}),K(q+1);else{if(clearTimeout(G.current),on.current)return;G.current=setTimeout((function(){K(q+1)}),6e3)}setTimeout((function(){var n,e;null===(n=B.current)||void 0===n||null===(e=n.connect)||void 0===e||e.call(n)}),3e3)}function bn(){return(bn=i()(o()().mark((function n(t){var r,c,i;return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e){n.next=8;break}return r=t,n.next=4,(0,C.ZP)("/api/tasks/".concat(pn.taskId,"/vnc_paste.json"),{method:"post",body:{content:Base64.encode(r),shixun_environment_id:a}});case 4:0===(null==(c=n.sent)?void 0:c.status)&&(J({type:L.SET_TRANSFER_CONTENT,payload:t}),h.ZP.success("保存成功!你可以在实验环境中粘贴该内容"),hn()),n.next=12;break;case 8:null===(i=B.current)||void 0===i||i.clipboardPasteFrom(t),J({type:L.SET_TRANSFER_CONTENT,payload:t}),h.ZP.success("保存成功!你可以在实验环境中粘贴该内容"),hn();case 12:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function kn(){var n;n=Math.min(document.getElementById("task-right-panel").clientWidth/1920,document.getElementById("task-right-panel").clientHeight/1260),H.current.parentElement.className="wh1080p",H.current.parentElement.style.cssText="transform:scale(".concat(n,");transform-origin:center center"),Z.current.style.cssText="translate(-50%, -50%) scale("+n+")"}(0,p.useEffect)((function(){if(R.Z.subscribe("reset-linux-windows-vnc-".concat(k),(function(){K(q+1)})),(t||e||r||c)&&Z.current){clearTimeout(fn.current),2===b&&kn(),new Promise(i()(o()().mark((function n(){var e,i,s,l,d,f,p,v,h,m,_;return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=N(),n.next=3,_n();case 3:if(i=n.sent,!r&&!c){n.next=11;break}return d=null!=i&&null!==(s=i.data)&&void 0!==s&&null!==(s=s.link_url)&&void 0!==s&&s.includes("?")?"&":"?",H.current.src=(null==i||null===(l=i.data)||void 0===l?void 0:l.link_url)+d+"time="+Date.now(),J({type:L.SET_LOADING,payload:!1}),n.abrupt("return");case 11:t?(z.current="Edu123",W.current=decodeURIComponent(null==i||null===(f=i.data)||void 0===f?void 0:f.link_url)):(v=new URL(decodeURIComponent(null==i||null===(p=i.data)||void 0===p?void 0:p.link_url)),h=v.protocol,m=v.searchParams,_=v.host,z.current=m.get("password"),W.current="".concat("https:"===h?"wss":"ws","://").concat(_,"/").concat(e.path||"websockify"));case 12:if(2!==b){n.next=15;break}return setTimeout((function(){var n,e,t;mn(),H.current.style.cssText=H.current.style.cssText+"width:1920px;height:1080px;position:initial",H.current.src=H.current.src="/rdp.html?".concat(null!=i&&null!==(n=i.data)&&void 0!==n&&n.gpPort?"gpPort="+(null==i||null===(e=i.data)||void 0===e?void 0:e.gpPort)+"&":"","tpiId=").concat(null==u||null===(t=u.myshixun)||void 0===t?void 0:t.id,"&envId=").concat(a,"&tpiType=").concat(E),J({type:L.SET_LOADING,payload:!1})}),5e3),n.abrupt("return");case 15:wn();case 16:case"end":return n.stop()}}),n)}))));var n=R.Z.subscribe("vnc-reset-".concat(k),(function(n){"取消"!==n?(dn(0),J({type:L.SET_STATE,payload:{loading:!0,mes:n||"实验环境重置中"}})):J({type:L.SET_LOADING,payload:!1})})),s=R.Z.subscribe("send-ctrl-alt-delete-".concat(k),(function(){var n;null===(n=B.current)||void 0===n||n.sendCtrlAltDel(),h.ZP.success("发送成功")})),l=R.Z.subscribe("show-clipboard-box-".concat(k),(function(){J({type:L.SHOW_CLIPBOARD_BOX,payload:!0})}));return dn(0),function(){var e,t,r,o;null===(e=B.current)||void 0===e||e.removeEventListener("disconnect",gn),null===(t=B.current)||void 0===t||t.removeEventListener("connect",xn),null===(r=B.current)||void 0===r||r.removeEventListener("clipboard",yn),n(),s(),l(),Z.current&&(null===(o=D.current)||void 0===o||o.unobserve(Z.current))}}}),[e,t,r,q,a,d]),(0,p.useEffect)((function(){0==ln&&(clearTimeout(fn.current),Tn())}),[ln]);var Tn=function n(){ln>99?ln=99:(ln+=1,fn.current=setTimeout((function(){n()}),1500)),ln<100&&dn(ln)},En=(0,p.useMemo)((function(){return Q?"none":r||c||t&&2===b?"block":"none"}),[r,Q,c,t]);return(0,T.jsxs)(p.Fragment,{children:[en&&(0,T.jsx)("a",{className:"btn-vnc-resize",onClick:function(){J({type:L.SET_IS_LARGE,payload:!en})},children:(0,T.jsx)("i",{className:"iconfont icon-tuichuquanping"})}),(0,T.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"absolute",display:"block"===En?"flex":"none",alignItems:"center",justifyContent:"center",zIndex:6},children:(0,T.jsx)("div",{children:(0,T.jsx)("iframe",{style:{position:en?"fixed":"absolute",left:0,top:en?40:0,width:"100%",height:"calc(100% - ".concat(en?"100px":"0px",")")},frameBorder:"0",ref:H,allowFullScreen:!0})})}),(0,T.jsxs)("div",{style:{position:en?"fixed":"absolute",left:0,top:en?40:0,zIndex:5,width:"100%",height:"calc(100% - ".concat(en?"100px":"0px",")")},className:"".concat(t?"vnc-panel-wrapper-windows":"vnc-panel-wrapper"," ").concat(en?"full-screen":""),children:[Q?(0,T.jsx)(_.Z,{message:$,style:{color:"#0152d9"},children:(0,T.jsx)("div",{className:"tc",style:{width:500,margin:"0 auto",color:"#FFF"},children:(0,T.jsx)(m.Z,{percent:ln,format:function(n){return(0,T.jsxs)("span",{className:"c-white",children:[n,"%"]})}})})}):null,(0,T.jsx)("div",{ref:Z,className:"vnc-panel ".concat(Q?"hidden zIndexf1":"animated fadeIn")})]}),(0,T.jsx)(w.Z,{children:(0,T.jsx)(v.Z,{title:"复制粘贴",centered:!0,maskClosable:!1,open:nn,onCancel:hn,footer:null,children:(0,T.jsx)(S,{onCancel:hn,onSave:function(n){return bn.apply(this,arguments)},content:tn})})})]})}},49119:function(n,e,t){t.d(e,{Z:function(){return k}});var r=t(7557),o=t.n(r),c=t(82242),i=t.n(c),u=t(41498),s=t.n(u),a=t(91232),l=t.n(a),d=t(79800),f=t.n(d),p=t(59301),v=t(24334),h=t(34376),m=(t(58067),"xterm-panel___XA0p9"),_=t(26750),x=t(76374),w=t(10948),y=t(64201),g=t(23603),b=t(37712),k=function(n){var e=n.itemData,t=void 0===e?{}:e,r=n.game,c=n.myshixun,u=(0,y.useParams)(),a=(0,p.useState)(null),d=f()(a,2),k=d[0],T=d[1],E=(0,p.useState)({}),S=f()(E,2),j=S[0],I=S[1],A=j.link_url,R=j.password,C=j.port,N=(0,p.useRef)(),O=(0,p.useRef)(),L=(0,p.useRef)(!1),P=(0,p.useRef)(!1),Z=(0,p.useRef)(!0),U=(0,g.oP)(),B=(0,y.useSearchParams)(),D=f()(B,1)[0],H=t.shixun_environment_id,z=(t.position,t.tab_type),W=t.index_tab,G=t.command_string;function F(n,e,t){var r=t._core._renderService.dimensions.actualCellWidth||9.5,o=t._core._renderService.dimensions.actualCellHeight||18,c=Math.floor(e/o);return[Math.floor(n/r),c]}function M(){return M=s()(o()().mark((function n(){var e,t,a,l,d;return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t={},"exercises"===D.get("type")?t.exercise_id=D.get("exercisesId"):u.courseId&&u.homeworkId&&(t.homework_common_id=u.homeworkId),n.next=4,(0,w.sA)(null==c?void 0:c.identifier,i()(i()({shixun_environment_id:H,tab_type:z,game_id:r.id},U),t));case 4:if(null==(a=n.sent)||null===(e=a.data)||void 0===e||null===(e=e.data_list)||void 0===e||!e.length){n.next=8;break}return _.Z.publish("pod-restrict-data",{identifier:null==a||null===(l=a.data)||void 0===l?void 0:l.identifier,data_list:null==a||null===(d=a.data)||void 0===d?void 0:d.data_list}),n.abrupt("return");case 8:if(-3!==(null==a?void 0:a.status)){n.next=10;break}return n.abrupt("return",new Promise(function(){var n=s()(o()().mark((function n(e,t){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:Modal.confirm({content:"检测到您已经开启了其他实验环境,请先关闭环境后,再连接",okText:"立即关闭",cancelText:"稍后关闭",onOk:function(){var n=s()(o()().mark((function n(){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,closeWindowsVnc(u.taskId,null==a?void 0:a.message);case 2:return init(),n.abrupt("return");case 4:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}()});case 1:case"end":return n.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}()));case 10:0===(null==a?void 0:a.status)&&(_.Z.publish("update-windows-time",null==a?void 0:a.data),_.Z.publish("send-tabs-result-data",i()(i()({},null==a?void 0:a.data),{},{index_tab:W})),I(a.data),setTimeout((function(){return _.Z.publish("create-socket-".concat(W))}),300));case 11:case"end":return n.stop()}}),n)}))),M.apply(this,arguments)}return(0,p.useEffect)((function(){!function(){M.apply(this,arguments)}()}),[]),(0,p.useEffect)((function(){if(N.current&&A){var n=new h.Terminal({fontSize:16,rendererType:"dom",disableStdin:!0});n.open(N.current),n.onData((function(n){O.current&&1===O.current.readyState&&O.current.send(JSON.stringify({tp:"client",data:n}))})),n.write("Connecting..."),T(n);var e=function(n,e){var t=new x.Z((function(e){var t,r=l()(e);try{for(r.s();!(t=r.n()).done;){var o=t.value;if(o.target.offsetHeight>0||o.target.offsetWidth>0){var c=F(o.target.offsetWidth,o.target.offsetHeight,n),i=f()(c,2),u=i[0],s=i[1];console.log("cols, rows",u,s),_.Z.publish("ssh-xterm-resize-".concat(W),{columns:u,rows:s,width:o.target.offsetWidth,height:o.target.offsetHeight}),n.resize(u,s);var a=v.Base64.decode("IA=="),d=v.Base64.decode("CBtbSw==");n.write(a),n.write(d)}}}catch(n){r.e(n)}finally{r.f()}}));return t.observe(e),t}(n,N.current);return function(){n.dispose(),N.current&&(null==e||e.unobserve(N.current))}}}),[A,N.current]),(0,p.useEffect)((function(){if(k&&A){var n=function n(){var e=new WebSocket(A);O.current=e,e.onopen=function(){var n=k.element.parentElement;if(n){var t=n.offsetWidth,r=n.offsetHeight;console.log("init",{tp:"init",data:i()(i()({},j),{},{secret:R,width:t,height:r,rows:k.rows,columns:k.cols})}),e.send(JSON.stringify({tp:"init",data:i()(i()({},j),{},{secret:R,width:t,height:r,rows:k.rows,columns:k.cols})}))}k.focus()},e.onerror=function(n){console.log("------in socket error----",n,e,A)},e.onmessage=function(n){P.current=!1,L.current||(k.write("\r"),setTimeout((function(){}),1e3)),L.current=!0,console.log("event:",n);var e=v.Base64.decode(n.data.toString()),t=k._core._renderService.dimensions.actualCellWidth||9.5;console.log("data:",e,t,k),k.write(e),G?Z.current&&(Z.current=!1,setTimeout((function(){O.current.send(JSON.stringify({tp:"client",data:"".concat(G,"\r")})),k.setOption("disableStdin",!1)}),1e3)):(Z.current=!1,k.setOption("disableStdin",!1))};var t=setInterval((function(){var n;O.current&&(null===(n=O.current)||void 0===n||n.send(JSON.stringify({tp:"h"})))}),3e4);e.onclose=function(e){t&&clearInterval(t),console.log(t,"tid",W),P.current||k.write("\r\nconnection closed"),P.current=!0,setTimeout((function(){n()}),1e4)}},e=_.Z.subscribe("create-socket-".concat(W),(function(){n()})),t=_.Z.subscribe("ssh-xterm-resize-".concat(W),(function(n){O.current&&1===O.current.readyState&&O.current.send(JSON.stringify({tp:"resize",data:i()({},n)}))}));return function(){e(),t(),O.current&&(O.current.close(),L.current=!1)}}}),[k,A,C]),(0,b.jsx)("div",{ref:N,className:m,children:A?null:(0,b.jsx)("p",{style:{color:"#fff"},children:"正在连接命令行服务..."})})}},41370:function(){}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[51443],{10948:function(n,e,t){t.d(e,{JW:function(){return U},Jd:function(){return C},Kl:function(){return B},L5:function(){return h},MH:function(){return P},MI:function(){return M},Qo:function(){return k},SO:function(){return v},Tf:function(){return w},XO:function(){return f},Xy:function(){return g},Y0:function(){return j},Ye:function(){return K},Yv:function(){return F},ZH:function(){return z},am:function(){return R},bD:function(){return J},eA:function(){return b},fA:function(){return H},fY:function(){return E},g6:function(){return p},g7:function(){return Y},gT:function(){return S},gn:function(){return W},h$:function(){return G},hG:function(){return y},i8:function(){return D},j3:function(){return Z},lH:function(){return O},li:function(){return m},n4:function(){return _},pU:function(){return I},qK:function(){return x},sA:function(){return A},sP:function(){return L},t$:function(){return N},zl:function(){return T}});var r=t(7557),o=t.n(r),c=t(41498),i=t.n(c),u=t(82242),s=t.n(u),a=t(18838),l=(0,t(23603).oP)(),d={};function f(n,e){return(0,a.U2)("tasks/".concat(n,".json"),s()(s()({},e),d))}function p(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.U2)("myshixuns/".concat(n,"/challenges.json"),s()({},e))}function v(n,e){return(0,a.U2)("myshixuns/".concat(n,"/subject_challenges.json"),e)}function h(n,e,t){return(0,a.U2)("tasks/".concat(n,"/star.json"),{shixun_id:e,star:t})}function m(n,e){return(0,a.U2)("tasks/".concat(n,"/rep_content.json"),s()(s()({},e),d))}function _(n,e){return(0,a.v_)("myshixuns/".concat(n,"/update_file.json"),e)}function x(n,e){return(0,a.U2)("tasks/".concat(n,"/reset_original_code.json"),s()(s()({},e),d))}function w(n,e){return(0,a.v_)("myshixuns/".concat(n,"/reset_repository.json"),e)}function y(n,e){return(0,a.U2)("tasks/".concat(n,"/reset_passed_code.json"),s()(s()({},e),d))}function g(n,e){return(0,a.v_)("tasks/".concat(n,"/game_build.json"),s()(s()({},e),d))}function b(n){return(0,a.ZP)("http://localhost:49352/api/game_build",{method:"post",body:n})}function k(n,e){return(0,a.U2)("tasks/".concat(n,"/game_status.json"),s()(s()({},e),d))}function T(n,e){return(0,a.v_)("tasks/".concat(n,"/choose_build.json"),s()(s()({},e),d))}function E(n){return(0,a.U2)("myshixuns/".concat(n,"/get_remaining_time.json"))}function S(n){return(0,a.U2)("tasks/".concat(n,"/picture_display.json"),d)}function j(n){return(0,a.v_)("tasks/".concat(n,"/plus_or_cancel_praise.json"))}function I(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.v_)("myshixuns/".concat(n,"/repository.json"),e)}function A(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.U2)("myshixuns/".concat(n,"/start.json"),e)}function R(n,e){return(0,a.U2)("myshixuns/".concat(n,"/reset_pod.json"),e)}function C(n,e){return(0,a.ZP)("/api/tasks/".concat(n,"/reboot_esc.json"),{method:"post",body:e})}function N(n){return(0,a.U2)("tasks/".concat(n,"/check_test_sets.json"))}function O(n){return(0,a.U2)("tasks/".concat(n,"/get_answer_info.json"))}function L(n){return(0,a.U2)("tasks/".concat(n,"/get_choose_answer.json"))}function P(n){return(0,a.U2)("tasks/".concat(n,"/unlock_choose_answer.json"))}function Z(n,e){return(0,a.U2)("tasks/".concat(n,"/unlock_answer.json"),{answer_id:e})}function U(n,e,t,r){return(0,a.v_)("tasks/".concat(n,"/set_games_status.json"),s()({result:e,data:t},r||{}))}function B(n,e){return(0,a.U2)("myshixuns/".concat(n,"/active_pod.json"),e)}function D(n,e){return(0,a.U2)("tasks/".concat(n,"/rank_list.json"),e)}function H(n,e){return(0,a.v_)("tasks/".concat(n,"/close_windows_vnc.json"),{tpi_id:e})}function z(n,e){return(0,a.U2)("tasks/".concat(n,"/commit_files.json"),e)}function W(n,e){return(0,a.U2)("tasks/".concat(n,"/pull_files.json"),e)}function G(n,e){return(0,a.v_)("tasks/".concat(n,"/log_output"),e)}function F(n,e){return(0,a.U2)("tasks/".concat(n,"/stop_log_output.json"),e)}function M(n){return X.apply(this,arguments)}function X(){return(X=i()(o()().mark((function n(e){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,a.ZP)("/api/myshixuns/".concat(e.id,"/add_file.json"),{method:"post",body:e}));case 1:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function J(n){return V.apply(this,arguments)}function V(){return(V=i()(o()().mark((function n(e){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,a.ZP)("/api/myshixuns/".concat(e.id,"/delete_git_file.json"),{method:"Delete",body:e}));case 1:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function Y(n){return q.apply(this,arguments)}function q(){return(q=i()(o()().mark((function n(e){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,a.ZP)("/api/myshixuns/".concat(e.id,"/mv_file.json"),{method:"post",body:e}));case 1:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function K(n,e){return(0,a.ZP)("/api/shixuns/".concat(n,"/set_start_permanent.json"),{method:"put",body:e})}null!=l&&l.homework_common_id&&(d.homework_common_id=null==l?void 0:l.homework_common_id),null!=l&&l.exercisesId&&(d.exercise_id=null==l?void 0:l.exercisesId),console.log(l,d,"urlParamsAll")},1505:function(n,e,t){t.d(e,{Z:function(){return Z}});var r=t(7557),o=t.n(r),c=t(41498),i=t.n(c),u=t(91232),s=t.n(u),a=t(79800),l=t.n(a),d=t(82242),f=t.n(d),p=t(59301),v=t(43418),h=t(8591),m=t(93948),_=t(67293),x=t(76374),w=t(83081),y=t(64201),g=t(23603),b=t(92832),k=t(3113),T=t(37712),E=b.Z.TextArea,S=function(n){var e=n.onCancel,t=n.onSave,r=n.content,o=(0,p.useState)(r),c=l()(o,2),i=c[0],u=c[1];return(0,p.useEffect)((function(){u(r)}),[r]),(0,T.jsxs)("div",{className:"clipboard-box",children:[(0,T.jsx)("h3",{children:"实验环境剪切板:"}),(0,T.jsx)(E,{value:i,onChange:function(n){u(n.target.value)},className:"clipboard"}),(0,T.jsxs)("p",{children:[" ",(0,T.jsx)("b",{children:" 1.从外部复制内容到实验环境内: "})," 粘贴内容到上面文本框,点击保存,然后在实验环境中进行粘贴。 "]}),(0,T.jsxs)("p",{children:[" ",(0,T.jsx)("b",{children:" 2.获取实验环境中的内容: "})," 请先在环境中复制内容,复制动作完成后内容会显示在上面文本框,然后在上面文本框中再次复制。 "]}),(0,T.jsxs)("div",{className:"btn-action-container",children:[(0,T.jsx)(k.ZP,{type:"ghost",onClick:e,style:{marginRight:10},children:"取消"}),(0,T.jsx)(k.ZP,{type:"primary",onClick:function(){t(i)},children:"保存"})]})]})},j=t(33316),I=t(10948),A=t(62013),R=t(26750),C=t(18838);function N(n){n||(n=window.location.search);var e=n.substr(1),t={};return e.split("&").forEach((function(n){var e=n.split("=");t[e[0]]=decodeURIComponent(e[1])})),t}var O={loading:!0,isLarge:!1,showClipBoardBox:!1,transferContent:"",mes:"实验环境准备中"},L=function(n){return n[n.SET_LOADING=0]="SET_LOADING",n[n.SET_IS_LARGE=1]="SET_IS_LARGE",n[n.SET_MES=2]="SET_MES",n[n.SET_STATE=3]="SET_STATE",n[n.SHOW_CLIPBOARD_BOX=4]="SHOW_CLIPBOARD_BOX",n[n.SET_TRANSFER_CONTENT=5]="SET_TRANSFER_CONTENT",n[n.UPDATE_ALL=6]="UPDATE_ALL",n}(L||{});function P(n,e){switch(e.type){case L.SET_LOADING:return f()(f()({},n),{},{loading:e.payload});case L.SET_IS_LARGE:return f()({},f()(f()({},n),{},{isLarge:e.payload}));case L.SET_MES:return f()(f()({},n),{},{mes:e.payload});case L.SET_STATE:return f()(f()({},n),e.payload);case L.SET_TRANSFER_CONTENT:return f()(f()({},n),{},{transferContent:e.payload});case L.SHOW_CLIPBOARD_BOX:return f()(f()({},n),{},{showClipBoardBox:e.payload});case L.UPDATE_ALL:return f()({loading:n.loading},e.payload);default:throw new Error}}var Z=function(n){var e=n.vnc_url,t=n.window_vnc_url,r=n.linux_vnc,c=n.virtual_machine,u=n.taskData,a=n.shixun_environment_id,d=n.tab_type,b=n.instance_startup_type,k=n.index_tab,E=n.tpi_type,Z=(0,p.useRef)(),U=(0,p.useRef)(),B=(0,p.useRef)(),D=(0,p.useRef)(),H=(0,p.useRef)(),z=(0,p.useRef)(),W=(0,p.useRef)(),G=(0,p.useRef)(),F=(0,p.useReducer)(P,O),M=l()(F,2),X=M[0],J=M[1],V=(0,p.useState)(0),Y=l()(V,2),q=Y[0],K=Y[1],$=X.mes,Q=X.loading,nn=X.showClipBoardBox,en=X.isLarge,tn=X.transferContent,rn=(0,p.useRef)(),on=(0,p.useRef)(),cn=(0,y.useSearchParams)(),un=l()(cn,1)[0],sn=(0,p.useState)(0),an=l()(sn,2),ln=an[0],dn=an[1],fn=(0,p.useRef)(),pn=(0,y.useParams)();(0,p.useEffect)((function(){return function(){var n,e;null===(n=U.current)||void 0===n||null===(e=n.disconnect)||void 0===e||e.call(n),clearTimeout(G.current),clearInterval(rn.current)}}),[]),(0,p.useEffect)((function(){on.current=X.loading}),[X.loading]);var vn=function(){var n;2===b?setTimeout((function(){kn()}),1500):void 0!==(null==B||null===(n=B.current)||void 0===n?void 0:n.resizeSession)&&((0,j.vp)()?B.current.resizeSession=!0:setTimeout((function(){}),900))};function hn(){J({type:L.SHOW_CLIPBOARD_BOX,payload:!1})}function mn(n){return Z.current&&(D.current=new x.Z((function(e){var t,r=s()(e);try{for(r.s();!(t=r.n()).done;){var o,c=t.value;if(2===b&&kn(),(c.target.offsetHeight>0||c.target.offsetWidth>0)&&n)n.scaleViewport=!0,null==n||null===(o=n._eventHandlers)||void 0===o||o.windowResize()}}catch(n){r.e(n)}finally{r.f()}})),D.current.observe(Z.current)),D.current}(0,p.useEffect)((function(){return document.addEventListener((0,j.gH)(),vn),function(){document.removeEventListener((0,j.gH)(),vn)}}),[]);var _n=function(){var n=i()(o()().mark((function n(){var e,t,r,s,l,p,h;return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r={},"exercises"===un.get("type")?r.exercise_id=un.get("exercisesId"):pn.courseId&&pn.homeworkId&&(r.homework_common_id=pn.homeworkId),n.next=4,(0,I.sA)(null===(e=u.myshixun)||void 0===e?void 0:e.identifier,f()(f()({},pn),{},{taskId:pn.taskId,shixun_environment_id:a,tab_type:d},r));case 4:if(null==(s=n.sent)||null===(t=s.data)||void 0===t||null===(t=t.data_list)||void 0===t||!t.length){n.next=8;break}return R.Z.publish("pod-restrict-data",{identifier:null==s||null===(l=s.data)||void 0===l?void 0:l.identifier,data_list:null==s||null===(p=s.data)||void 0===p?void 0:p.data_list}),n.abrupt("return",Promise.reject());case 8:if(-3!==(null==s?void 0:s.status)){n.next=10;break}return n.abrupt("return",new Promise(function(){var n=i()(o()().mark((function n(e,t){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:v.Z.confirm({content:"检测到您已经开启了其他实验环境,请先关闭环境后,再连接",okText:"立即关闭",cancelText:"稍后关闭",onOk:function(){var n=i()(o()().mark((function n(){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return clearTimeout(fn.current),dn(0),n.next=4,(0,I.fA)(pn.taskId,null==s?void 0:s.message);case 4:return K(q+1),n.abrupt("return");case 6:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}()});case 1:case"end":return n.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}()));case 10:if(-1!==(null==s?void 0:s.status)){n.next=12;break}throw new String(null==s?void 0:s.message);case 12:if(0!==(null==s?void 0:s.status)){n.next=17;break}return c&&((0,g.d8)("PVEAuthCookie",null==s||null===(h=s.data)||void 0===h||null===(h=h.cookie_options)||void 0===h?void 0:h.cookies_value,1),(0,g.d8)("PVELangCookie","zh_CN",1)),R.Z.publish("update-windows-time",null==s?void 0:s.data),R.Z.publish("send-tabs-result-data",f()(f()({},null==s?void 0:s.data),{},{index_tab:k})),n.abrupt("return",s);case 17:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}();function xn(){dn(100),clearTimeout(fn.current),setTimeout((function(){J({type:L.SET_LOADING,payload:!1})}),1300),clearTimeout(rn.current)}var wn=function(){B.current=new A.Z(Z.current,W.current,{credentials:{password:z.current},wsProtocols:["binary"],show_dot:!0}),B.current.removeEventListener("disconnect",gn),B.current.removeEventListener("connect",xn),B.current.removeEventListener("clipboard",yn),window.rfbs2=B.current,D.current=mn(B.current),B.current.viewOnly=pn.view_only||!1,B.current.scaleViewport=pn.scale||!0,B.current.showDotCursor=!0,B.current.resizeSession=!0,B.current.addEventListener("disconnect",gn),B.current.addEventListener("connect",xn),B.current.addEventListener("clipboard",yn)};function yn(n){var e=n.detail.text.replace(/\\u([\dA-Za-z]{4})/g,(function(n,e){return String.fromCharCode(parseInt("0x"+e))}));J({type:L.SET_TRANSFER_CONTENT,payload:e})}function gn(){if(t)J({type:L.SET_LOADING,payload:!0}),K(q+1);else{if(clearTimeout(G.current),on.current)return;G.current=setTimeout((function(){K(q+1)}),6e3)}setTimeout((function(){var n,e;null===(n=B.current)||void 0===n||null===(e=n.connect)||void 0===e||e.call(n)}),3e3)}function bn(){return(bn=i()(o()().mark((function n(t){var r,c,i;return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e){n.next=8;break}return r=t,n.next=4,(0,C.ZP)("/api/tasks/".concat(pn.taskId,"/vnc_paste.json"),{method:"post",body:{content:Base64.encode(r),shixun_environment_id:a}});case 4:0===(null==(c=n.sent)?void 0:c.status)&&(J({type:L.SET_TRANSFER_CONTENT,payload:t}),h.ZP.success("保存成功!你可以在实验环境中粘贴该内容"),hn()),n.next=12;break;case 8:null===(i=B.current)||void 0===i||i.clipboardPasteFrom(t),J({type:L.SET_TRANSFER_CONTENT,payload:t}),h.ZP.success("保存成功!你可以在实验环境中粘贴该内容"),hn();case 12:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function kn(){var n;n=Math.min(document.getElementById("task-right-panel").clientWidth/1920,document.getElementById("task-right-panel").clientHeight/1260),H.current.parentElement.className="wh1080p",H.current.parentElement.style.cssText="transform:scale(".concat(n,");transform-origin:center center"),Z.current.style.cssText="translate(-50%, -50%) scale("+n+")"}(0,p.useEffect)((function(){if(R.Z.subscribe("reset-linux-windows-vnc-".concat(k),(function(){K(q+1)})),(t||e||r||c)&&Z.current){clearTimeout(fn.current),2===b&&kn(),new Promise(i()(o()().mark((function n(){var e,i,s,l,d,f,p,v,h,m,_;return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=N(),n.next=3,_n();case 3:if(i=n.sent,!r&&!c){n.next=11;break}return d=null!=i&&null!==(s=i.data)&&void 0!==s&&null!==(s=s.link_url)&&void 0!==s&&s.includes("?")?"&":"?",H.current.src=(null==i||null===(l=i.data)||void 0===l?void 0:l.link_url)+d+"time="+Date.now(),J({type:L.SET_LOADING,payload:!1}),n.abrupt("return");case 11:t?(z.current="Edu123",W.current=decodeURIComponent(null==i||null===(f=i.data)||void 0===f?void 0:f.link_url)):(v=new URL(decodeURIComponent(null==i||null===(p=i.data)||void 0===p?void 0:p.link_url)),h=v.protocol,m=v.searchParams,_=v.host,z.current=m.get("password"),W.current="".concat("https:"===h?"wss":"ws","://").concat(_,"/").concat(e.path||"websockify"));case 12:if(2!==b){n.next=15;break}return setTimeout((function(){var n,e,t;mn(),H.current.style.cssText=H.current.style.cssText+"width:1920px;height:1080px;position:initial",H.current.src=H.current.src="/rdp.html?".concat(null!=i&&null!==(n=i.data)&&void 0!==n&&n.gpPort?"gpPort="+(null==i||null===(e=i.data)||void 0===e?void 0:e.gpPort)+"&":"","tpiId=").concat(null==u||null===(t=u.myshixun)||void 0===t?void 0:t.id,"&envId=").concat(a,"&tpiType=").concat(E),J({type:L.SET_LOADING,payload:!1})}),5e3),n.abrupt("return");case 15:wn();case 16:case"end":return n.stop()}}),n)}))));var n=R.Z.subscribe("vnc-reset-".concat(k),(function(n){"取消"!==n?(dn(0),J({type:L.SET_STATE,payload:{loading:!0,mes:n||"实验环境重置中"}})):J({type:L.SET_LOADING,payload:!1})})),s=R.Z.subscribe("send-ctrl-alt-delete-".concat(k),(function(){var n;null===(n=B.current)||void 0===n||n.sendCtrlAltDel(),h.ZP.success("发送成功")})),l=R.Z.subscribe("show-clipboard-box-".concat(k),(function(){J({type:L.SHOW_CLIPBOARD_BOX,payload:!0})}));return dn(0),function(){var e,t,r,o;null===(e=B.current)||void 0===e||e.removeEventListener("disconnect",gn),null===(t=B.current)||void 0===t||t.removeEventListener("connect",xn),null===(r=B.current)||void 0===r||r.removeEventListener("clipboard",yn),n(),s(),l(),Z.current&&(null===(o=D.current)||void 0===o||o.unobserve(Z.current))}}}),[e,t,r,q,a,d]),(0,p.useEffect)((function(){0==ln&&(clearTimeout(fn.current),Tn())}),[ln]);var Tn=function n(){ln>99?ln=99:(ln+=1,fn.current=setTimeout((function(){n()}),1500)),ln<100&&dn(ln)},En=(0,p.useMemo)((function(){return Q?"none":r||c||t&&2===b?"block":"none"}),[r,Q,c,t]);return(0,T.jsxs)(p.Fragment,{children:[en&&(0,T.jsx)("a",{className:"btn-vnc-resize",onClick:function(){J({type:L.SET_IS_LARGE,payload:!en})},children:(0,T.jsx)("i",{className:"iconfont icon-tuichuquanping"})}),(0,T.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"absolute",display:"block"===En?"flex":"none",alignItems:"center",justifyContent:"center",zIndex:6},children:(0,T.jsx)("div",{children:(0,T.jsx)("iframe",{style:{position:en?"fixed":"absolute",left:0,top:en?40:0,width:"100%",height:"calc(100% - ".concat(en?"100px":"0px",")")},frameBorder:"0",ref:H,allowFullScreen:!0})})}),(0,T.jsxs)("div",{style:{position:en?"fixed":"absolute",left:0,top:en?40:0,zIndex:5,width:"100%",height:"calc(100% - ".concat(en?"100px":"0px",")")},className:"".concat(t?"vnc-panel-wrapper-windows":"vnc-panel-wrapper"," ").concat(en?"full-screen":""),children:[Q?(0,T.jsx)(_.Z,{message:$,style:{color:"#0152d9"},children:(0,T.jsx)("div",{className:"tc",style:{width:500,margin:"0 auto",color:"#FFF"},children:(0,T.jsx)(m.Z,{percent:ln,format:function(n){return(0,T.jsxs)("span",{className:"c-white",children:[n,"%"]})}})})}):null,(0,T.jsx)("div",{ref:Z,className:"vnc-panel ".concat(Q?"hidden zIndexf1":"animated fadeIn")})]}),(0,T.jsx)(w.Z,{children:(0,T.jsx)(v.Z,{title:"复制粘贴",centered:!0,maskClosable:!1,open:nn,onCancel:hn,footer:null,children:(0,T.jsx)(S,{onCancel:hn,onSave:function(n){return bn.apply(this,arguments)},content:tn})})})]})}},49119:function(n,e,t){t.d(e,{Z:function(){return k}});var r=t(7557),o=t.n(r),c=t(82242),i=t.n(c),u=t(41498),s=t.n(u),a=t(91232),l=t.n(a),d=t(79800),f=t.n(d),p=t(59301),v=t(24334),h=t(34376),m=(t(58067),"xterm-panel___XA0p9"),_=t(26750),x=t(76374),w=t(10948),y=t(64201),g=t(23603),b=t(37712),k=function(n){var e=n.itemData,t=void 0===e?{}:e,r=n.game,c=n.myshixun,u=(0,y.useParams)(),a=(0,p.useState)(null),d=f()(a,2),k=d[0],T=d[1],E=(0,p.useState)({}),S=f()(E,2),j=S[0],I=S[1],A=j.link_url,R=j.password,C=j.port,N=(0,p.useRef)(),O=(0,p.useRef)(),L=(0,p.useRef)(!1),P=(0,p.useRef)(!1),Z=(0,p.useRef)(!0),U=(0,g.oP)(),B=(0,y.useSearchParams)(),D=f()(B,1)[0],H=t.shixun_environment_id,z=(t.position,t.tab_type),W=t.index_tab,G=t.command_string;function F(n,e,t){var r=t._core._renderService.dimensions.actualCellWidth||9.5,o=t._core._renderService.dimensions.actualCellHeight||18,c=Math.floor(e/o);return[Math.floor(n/r),c]}function M(){return M=s()(o()().mark((function n(){var e,t,a,l,d;return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t={},"exercises"===D.get("type")?t.exercise_id=D.get("exercisesId"):u.courseId&&u.homeworkId&&(t.homework_common_id=u.homeworkId),n.next=4,(0,w.sA)(null==c?void 0:c.identifier,i()(i()({shixun_environment_id:H,tab_type:z,game_id:r.id},U),t));case 4:if(null==(a=n.sent)||null===(e=a.data)||void 0===e||null===(e=e.data_list)||void 0===e||!e.length){n.next=8;break}return _.Z.publish("pod-restrict-data",{identifier:null==a||null===(l=a.data)||void 0===l?void 0:l.identifier,data_list:null==a||null===(d=a.data)||void 0===d?void 0:d.data_list}),n.abrupt("return");case 8:if(-3!==(null==a?void 0:a.status)){n.next=10;break}return n.abrupt("return",new Promise(function(){var n=s()(o()().mark((function n(e,t){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:Modal.confirm({content:"检测到您已经开启了其他实验环境,请先关闭环境后,再连接",okText:"立即关闭",cancelText:"稍后关闭",onOk:function(){var n=s()(o()().mark((function n(){return o()().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,closeWindowsVnc(u.taskId,null==a?void 0:a.message);case 2:return init(),n.abrupt("return");case 4:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}()});case 1:case"end":return n.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}()));case 10:0===(null==a?void 0:a.status)&&(_.Z.publish("update-windows-time",null==a?void 0:a.data),_.Z.publish("send-tabs-result-data",i()(i()({},null==a?void 0:a.data),{},{index_tab:W})),I(a.data),setTimeout((function(){return _.Z.publish("create-socket-".concat(W))}),300));case 11:case"end":return n.stop()}}),n)}))),M.apply(this,arguments)}return(0,p.useEffect)((function(){!function(){M.apply(this,arguments)}()}),[]),(0,p.useEffect)((function(){if(N.current&&A){var n=new h.Terminal({fontSize:16,rendererType:"dom",disableStdin:!0});n.open(N.current),n.onData((function(n){O.current&&1===O.current.readyState&&O.current.send(JSON.stringify({tp:"client",data:n}))})),n.write("Connecting..."),T(n);var e=function(n,e){var t=new x.Z((function(e){var t,r=l()(e);try{for(r.s();!(t=r.n()).done;){var o=t.value;if(o.target.offsetHeight>0||o.target.offsetWidth>0){var c=F(o.target.offsetWidth,o.target.offsetHeight,n),i=f()(c,2),u=i[0],s=i[1];console.log("cols, rows",u,s),_.Z.publish("ssh-xterm-resize-".concat(W),{columns:u,rows:s,width:o.target.offsetWidth,height:o.target.offsetHeight}),n.resize(u,s);var a=v.Base64.decode("IA=="),d=v.Base64.decode("CBtbSw==");n.write(a),n.write(d)}}}catch(n){r.e(n)}finally{r.f()}}));return t.observe(e),t}(n,N.current);return function(){n.dispose(),N.current&&(null==e||e.unobserve(N.current))}}}),[A,N.current]),(0,p.useEffect)((function(){if(k&&A){var n=function n(){var e=new WebSocket(A);O.current=e,e.onopen=function(){var n=k.element.parentElement;if(n){var t=n.offsetWidth,r=n.offsetHeight;console.log("init",{tp:"init",data:i()(i()({},j),{},{secret:R,width:t,height:r,rows:k.rows,columns:k.cols})}),e.send(JSON.stringify({tp:"init",data:i()(i()({},j),{},{secret:R,width:t,height:r,rows:k.rows,columns:k.cols})}))}k.focus()},e.onerror=function(n){console.log("------in socket error----",n,e,A)},e.onmessage=function(n){P.current=!1,L.current||(k.write("\r"),setTimeout((function(){}),1e3)),L.current=!0,console.log("event:",n);var e=v.Base64.decode(n.data.toString()),t=k._core._renderService.dimensions.actualCellWidth||9.5;console.log("data:",e,t,k),k.write(e),null!=G&&G.length?Z.current&&(Z.current=!1,setTimeout((function(){O.current.send(JSON.stringify({tp:"client",data:(null==G?void 0:G.join("\r"))+"\r"})),k.setOption("disableStdin",!1)}),1e3)):(Z.current=!1,k.setOption("disableStdin",!1))};var t=setInterval((function(){var n;O.current&&(null===(n=O.current)||void 0===n||n.send(JSON.stringify({tp:"h"})))}),3e4);e.onclose=function(e){t&&clearInterval(t),console.log(t,"tid",W),P.current||k.write("\r\nconnection closed"),P.current=!0,setTimeout((function(){n()}),1e4)}},e=_.Z.subscribe("create-socket-".concat(W),(function(){n()})),t=_.Z.subscribe("ssh-xterm-resize-".concat(W),(function(n){O.current&&1===O.current.readyState&&O.current.send(JSON.stringify({tp:"resize",data:i()({},n)}))}));return function(){e(),t(),O.current&&(O.current.close(),L.current=!1)}}}),[k,A,C]),(0,b.jsx)("div",{ref:N,className:m,children:A?null:(0,b.jsx)("p",{style:{color:"#fff"},children:"正在连接命令行服务..."})})}},41370:function(){}}]); \ No newline at end of file diff --git a/77123.async.js b/77123.async.js index 9d61f420b4..82923b1d41 100644 --- a/77123.async.js +++ b/77123.async.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[77123],{77123:function(a,e,t){var n=t(59301),r=t(95237),l=t(43604),i=t(99313),c=t(3113),o=t(39937),u=t(52115),s=(t(48136),t(37712)),d=(0,n.forwardRef)((function(a,e){var t=a.callback,d=a.showSaveButton,v=a.value,p=void 0===v?"":v,h=(0,n.useRef)(),f=function(a){h.current.setValue(h.current.getValue()+" "+a.value+" ")},m=[{key:"1",label:"快捷模板",children:(0,s.jsx)(r.Z,{className:u.Z.lists,gutter:[10,10],children:[{name:"分数得分",value:"\\frac{x}{y}",children:[{name:"分数 Fractions",data:[{value:"\\frac{a}{b}"},{value:"x\\tfrac{x}{a} "},{value:"\\mathrm{d}t"},{value:"\\partial t"},{value:"\\frac{\\partial y}{\\partial x}"},{value:"\\nabla\\psi"},{value:"\\frac{\\partial^2}{\\partial x_1\\partial x_2}y"},{value:"\\cfrac{1}{a + \\cfrac{7}{b + \\cfrac{2}{9}}} = c"}]},{name:"导数 Derivative",data:[{value:"\\dot{a} "},{value:"\\ddot{a}"},{value:"{f}^{\\prime}"},{value:"{f}^{\\prime\\prime}"},{value:"{f}^{(n)}"}]},{name:"模算术 Modular arithmetic",data:[{value:"a \\bmod b"},{value:"a \\equiv b \\pmod{m} "},{value:"\\gcd(m, n) "},{value:"\\operatorname{lcm}(m, n) "}]}]},{name:"根式角标",value:"\\sqrt{x}",children:[{name:"根式 Radicals",data:[{value:"\\sqrt{x}"},{value:"\\sqrt[y]{x}"}]},{name:"上下标 Sub&Super",data:[{value:"x^{a}"},{value:"x_{a}"},{value:"x_{a}^{b} "},{value:"_{a}^{b} x"},{value:"x_{a}^{b} "}]},{name:"重音符及其他 Accents and Others",data:[{value:"\\hat{a} "},{value:"\\sqrt[y]{x}"},{value:"\\check{} "},{value:"\\grave{a} "},{value:"\\acute{a}"},{value:"\\tilde{a}"},{value:"\\breve{a}"},{value:"\\bar{a}"},{value:"\\vec{a}"},{value:"\\not{a}"},{value:"\\widetilde{abc}"},{value:"\\widehat{abc}"},{value:"\\overleftarrow{abc} "},{value:"\\overrightarrow{abc}"},{value:"\\overline{abc}"},{value:"\\underline{abc}"},{value:"\\overbrace{abc}"},{value:"\\underbrace{abc}"},{value:"\\overset{a}{abc}"},{value:"\\underset{a}{abc} \\stackrel\\frown{ab}"},{value:"\\overline{ab} "},{value:"\\overleftrightarrow{ab}"},{value:"\\overset{a}{\\leftarrow}"},{value:"\\overset{a}{\\rightarrow}"},{value:"\\xleftarrow[abc]{a}"},{value:"\\xrightarrow[abc]{a} "}]}]},{name:"极限对数",value:"\\lim_{x \\to 0}",children:[{name:"极限 Limits",data:[{value:"\\lim a"},{value:"\\lim_{x \\to 0}"},{value:"\\lim_{x \\to \\infty}"},{value:"\\max_b{a}"},{value:"\\min_a{b}"}]},{name:"对数指数 Logarithms and exponentials",data:[{value:"\\log_{a}{b}"},{value:"\\lg_{a}{b}"},{value:"\\ln_{a}{b}"},{value:"\\exp a"}]},{name:"界限 Bounds",data:[{value:"\\min x"},{value:"\\sup t"},{value:"\\inf s"},{value:"\\lim u"},{value:"\\limsup w"},{value:"\\dim p"},{value:"\\ker\\phi "}]}]},{name:"三角函数",value:"\\sin a",children:[{name:"三角函数 Trigonometric functions",data:[{value:"\\sin a"},{value:"\\cos a"},{value:"\\tan a"},{value:"\\cot a "},{value:"\\sec a "},{value:"\\csc a "}]},{name:"反三角函数 Inverse trigonometric functions",data:[{value:"\\sin^{-1}"},{value:"\\cos^{-1}"},{value:"\\tan^{-1}"},{value:"\\cot^{-1}"},{value:"\\sec^{-1}"},{value:"\\csc^{-1}"},{value:"\\arcsin a"},{value:"\\arccos a"},{value:"\\arctan a"},{value:"\\operatorname{arccot} a"},{value:"\\operatorname{arcsec} a"},{value:"\\operatorname{arccsc} a"}]},{name:"双曲函数 Hyperblic functions",data:[{value:"\\sinh a"},{value:"\\cosh a"},{value:"\\tanh a"},{value:"\\coth a"},{value:"\\operatorname{sech} a"},{value:"\\operatorname{csch} a"}]},{name:"反双曲函数 Inverse hyperbolic functions",data:[{value:"\\sinh^{-1}"},{value:"a\\cosh^{-1} a"},{value:"\\tanh^{-1} a"},{value:"\\coth^{-1} a"},{value:"\\operatorname{sech}^{-1} a"},{value:"\\operatorname{csch}^{-1} a"}]}]},{name:"积分运算",value:"\\int_{a}^{b}",children:[{name:"积分 Integral",data:[{value:"\\int"},{value:"\\int_{a}^{b}"},{value:"\\int\\limits_{a}^{b}"}]},{name:"双重积分 Double integral",data:[{value:"\\iint"},{value:"\\iint_{a}^{b} "},{value:"\\iint\\limits_{a}^{b} "}]},{name:"三重积分 Triple integral",data:[{value:"\\iiint"},{value:"\\iiint_{a}^{b}"},{value:"\\iiint\\limits_{a}^{b} "}]},{name:"曲线积分 Closed line or path integral",data:[{value:"\\oint"},{value:"\\oint_{a}^{b} "}]}]},{name:"大型运算",value:"\\sum_{a}^{b}",children:[{name:"求和 Summation",data:[{value:"\\sum"},{value:"\\sum_{a}^{b}"},{value:"{\\textstyle \\sum_{a}^{b}} "}]},{name:"乘积余积 Product and coproduct",data:[{value:"\\prod"},{value:"\\prod_{a}^{b}"},{value:"{\\textstyle \\prod_{a}^{b}}"},{value:"\\coprod"},{value:"\\coprod_{a}^{b}"},{value:"{\\textstyle \\coprod_{a}^{b}} "}]},{name:"并集交集 Union and intersection",data:[{value:"\\bigcup"},{value:"\\bigcup_{a}^{b}"},{value:"{\\textstyle \\bigcup_{a}^{b}}"},{value:"\\bigcap"},{value:"\\bigcap_{a}^{b}"}]},{name:"析取合取 Disjunction and conjunction",data:[{value:"\\bigvee"},{value:"\\bigvee_{a}^{b}"},{value:"\\bigwedge"},{value:"\\bigwedge_{a}^{b}"}]}]},{name:"括号取整",value:"\\left [ \\left ( \\right ) \\right ] ",children:[{name:"括号 Brackets",data:[{value:"\\left ( \\right )"},{value:"\\left [ \\right ]"},{value:"\\left \\langle \\right \\rangle "},{value:"\\left | \\right | "},{value:"\\left \\lfloor \\right \\rfloor "},{value:"\\left \\lceil \\right \\rceil "}]}]}].map((function(a,e){return(0,s.jsxs)(l.Z,{flex:"110px",className:u.Z.item,children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(o.Z,{value:"$$".concat(a.value,"$$")}),a.name]}),(0,s.jsx)("div",{className:u.Z.children,children:a.children.map((function(a,e){return(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{children:a.name}),(0,s.jsx)(r.Z,{gutter:[10,10],children:a.data.map((function(a,e){return(0,s.jsx)(l.Z,{onClick:function(){return f(a)},className:u.Z.diamond,children:(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"})},e)}))})]},e)}))})]})}))})},{key:"2",label:"公式模板",children:(0,s.jsx)(r.Z,{className:u.Z.lists,gutter:[10,10],children:[{name:"代数",value:"\\sqrt{a^2+b^2}",children:[{data:[{value:"\\left(x-1\\right)\\left(x+3\\right) "},{value:"\\sqrt{a^2+b^2}"},{value:"\\left ( \\frac{a}{b}\\right )^{n}= \\frac{a^{n}}{b^{n}}"},{value:"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd} "},{value:"\\frac{x^{2}}{a^{2}}-\\frac{y^{2}}{b^{2}}=1 "},{value:"\\frac{1}{\\sqrt{a}}=\\frac{\\sqrt{a}}{a},a\\ge 0\\frac{1}{\\sqrt{a}}=\\frac{\\sqrt{a}}{a},a\\ge 0 "},{value:"\\sqrt[n]{a^{n}}=\\left ( \\sqrt[n]{a}\\right )^{n} "},{value:"x ={-b \\pm \\sqrt{b^2-4ac}\\over 2a} "},{value:"y-y_{1}=k \\left( x-x_{1}\\right) "},{value:"\\left\\{\\begin{matrix} \r\n x=a + r\\text{cos}\\theta \\ \r\n y=b + r\\text{sin}\\theta \r\n\\end{matrix}\\right. "},{value:"\\begin{array}{l} \r\n \\text{对于方程形如:}x^{3}-1=0 \\ \r\n \\text{设}\\text{:}\\omega =\\frac{-1+\\sqrt{3}i}{2} \\ \r\n x_{1}=1,x_{2}= \\omega =\\frac{-1+\\sqrt{3}i}{2} \\ \r\n x_{3}= \\omega ^{2}=\\frac{-1-\\sqrt{3}i}{2} \r\n\\end{array} "},{value:"\\begin{array}{l} \r\n a\\mathop{{x}}\\nolimits^{{2}}+bx+c=0 \\ \r\n \\Delta =\\mathop{{b}}\\nolimits^{{2}}-4ac \\ \r\n \\left\\{\\begin{matrix} \r\n \\Delta \\gt 0\\text{方程有两个不相等的实根} \\ \r\n \\Delta = 0\\text{方程有两个相等的实根} \\ \r\n \\Delta \\lt 0\\text{方程无实根} \r\n\\end{matrix}\\right. \r\n\\end{array} "},{value:"\\begin{array}{l} \r\n a\\mathop{{x}}\\nolimits^{{2}}+bx+c=0 \\ \r\n \\Delta =\\mathop{{b}}\\nolimits^{{2}}-4ac \\ \r\n \\mathop{{x}}\\nolimits_{{1,2}}=\\frac{{-b \\pm \r\n \\sqrt{{\\mathop{{b}}\\nolimits^{{2}}-4ac}}}}{{2a}} \\ \r\n \\mathop{{x}}\\nolimits_{{1}}+\\mathop{{x}}\\nolimits_{{2}}=-\\frac{{b}}{{a}} \\ \r\n \\mathop{{x}}\\nolimits_{{1}}\\mathop{{x}}\\nolimits_{{2}}=\\frac{{c}}{{a}} \r\n\\end{array} "}]}]},{name:"几何",value:"\\Delta A B C ",children:[{data:[{value:"\\Delta A B C "},{value:"a \\parallel c,b \\parallel c \\Rightarrow a \\parallel b "},{value:"l \\perp \\beta ,l \\subset \\alpha \\Rightarrow \\alpha \\perp \\beta"},{value:"\\left.\\begin{matrix} \r\n a \\perp \\alpha \\ \r\n b \\perp \\alpha \r\n\\end{matrix}\\right\\}\\Rightarrow a \\parallel b"},{value:"P \\in \\alpha ,P \\in \\beta , \\alpha \\cap \\beta =l \\Rightarrow P \\in l "},{value:"\\alpha \\perp \\beta , \\alpha \\cap \\beta =l,a \\subset \\alpha ,a \\perp l \r\n \\Rightarrow a \\perp \\beta "},{value:"\\left.\\begin{matrix} \r\n a \\subset \\beta ,b \\subset \\beta ,a \\cap b=P \\ \r\n a \\parallel \\partial ,b \\parallel \\partial \r\n\\end{matrix}\\right\\}\\Rightarrow \\beta \\parallel \\alpha "},{value:"\\alpha \\parallel \\beta , \\gamma \\cap \\alpha =a, \\gamma \\cap \\beta =b \\Rightarrow a \\parallel b "},{value:"A \\in l,B \\in l,A \\in \\alpha ,B \\in \\alpha \\Rightarrow l \\subset \\alpha "},{value:"\\left.\\begin{matrix} \r\n m \\subset \\alpha ,n \\subset \\alpha ,m \\cap n=P \\ \r\n a \\perp m,a \\perp n \r\n\\end{matrix}\\right\\}\\Rightarrow a \\perp \\alpha "},{value:"\\begin{array}{c} \r\n \\text{直角三角形中,直角边长a,b,斜边边长c} \\ \r\n a^{2}+b^{2}=c^{2} \r\n\\end{array}"}]}]},{name:"不等式",value:"a > b",children:[{data:[{value:"a > b,b > c \\Rightarrow a > c "},{value:"a > b,c > d \\Rightarrow a+c > b+d "},{value:"a > b > 0,c > d > 0 \\Rightarrow ac bd "},{value:"\\begin{array}{c} \r\n a \\gt b,c \\gt 0 \\Rightarrow ac \\gt bc \\ \r\n a \\gt b,c \\lt 0 \\Rightarrow ac \\lt bc \r\n\\end{array}"},{value:"\\left | a-b \\right | \\geqslant \\left | a \\right | -\\left | b \\right | "},{value:"-\\left | a \\right |\\leq a\\leqslant \\left | a \\right | "},{value:"\\left | a \\right |\\leqslant b \\Rightarrow -b \\leqslant a \\leqslant \\left | b \\right | "},{value:"\\left | a+b \\right | \\leqslant \\left | a \\right | + \\left | b \\right | "},{value:"\\begin{array}{c} \r\n a \\gt b \\gt 0,n \\in N^{\\ast},n \\gt 1 \\ \r\n \\Rightarrow a^{n}\\gt b^{n}, \\sqrt[n]{a}\\gt \\sqrt[n]{b} \r\n\\end{array}"},{value:"\\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2}\\leq \r\n\\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right) "},{value:"\\begin{array}{c} \r\n a,b \\in R^{+} \\ \r\n \\Rightarrow \\frac{a+b}{{2}}\\ge \\sqrt{ab} \\ \r\n \\left( \\text{当且仅当}a=b\\text{时取“}=\\text{”号}\\right) \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n a,b \\in R \\ \r\n \\Rightarrow a^{2}+b^{2}\\gt 2ab \\ \r\n \\left( \\text{当且仅当}a=b\\text{时取“}=\\text{”号}\\right) \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n H_{n}=\\frac{n}{\\sum \\limits_{i=1}^{n}\\frac{1}{x_{i}}}= \\frac{n}{\\frac{1}{x_{1}}+ \\frac{1}{x_{2}}+ \\cdots + \\frac{1}{x_{n}}} \\ G_{n}=\\sqrt[n]{\\prod \\limits_{i=1}^{n}x_{i}}= \\sqrt[n]{x_{1}x_{2}\\cdots x_{n}} \\ A_{n}=\\frac{1}{n}\\sum \\limits_{i=1}^{n}x_{i}=\\frac{x_{1}+ x_{2}+ \\cdots + x_{n}}{n} \\ Q_{n}=\\sqrt{\\sum \\limits_{i=1}^{n}x_{i}^{2}}= \\sqrt{\\frac{x_{1}^{2}+ x_{2}^{2}+ \\cdots + x_{n}^{2}}{n}} \\ H_{n}\\leq G_{n}\\leq A_{n}\\leq Q_{n} \r\n\\end{array}"}]}]},{name:"积分",value:"\\frac{\\mathrm{d}\\partial}{\\partial x}",children:[{data:[{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}x^n=nx^{n-1} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}e^{ax}=a\\,e^{ax} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\ln(x)=\\frac{1}{x} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\sin x=\\cos x "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\cos x=-\\sin x "},{value:"\\int k\\mathrm{d}x = kx+C "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\tan x=\\sec^2 x "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\cot x=-\\csc^2 x "},{value:"\\int \\frac{1}{x}\\mathrm{d}x= \\ln \\left| x \\right| +C "},{value:"\\int \\frac{1}{\\sqrt{1-x^{2}}}\\mathrm{d}x= \\arcsin x +C "},{value:"\\int \\frac{1}{1+x^{2}}\\mathrm{d}x= \\arctan x +C "},{value:"\\int u \\frac{\\mathrm{d}v}{\\mathrm{d}x}\\,\\mathrm{d}x=uv-\\int \\frac{\\mathrm{d}u}{\\mathrm{d}x}v\\,\\mathrm{d}x "},{value:"f(x) = \\int_{-\\infty}^\\infty \\hat f(x)\\xi\\,e^{2 \\pi i \\xi x} \\,\\mathrm{d}\\xi "},{value:"\\int x^{\\mu}\\mathrm{d}x=\\frac{x^{\\mu +1}}{\\mu +1}+C, \\left({\\mu \\neq -1}\\right) "}]}]},{name:"三角",value:"e^{i \\theta}",children:[{name:"求和 Summation",data:[{value:"e^{i \\theta} "},{value:"\\left(\\frac{\\pi}{2}-\\theta \\right ) "},{value:"\\text{sin}^{2}\\frac{\\alpha}{2}=\\frac{1- \\text{cos}\\alpha}{2} "},{value:"\\text{cos}^{2}\\frac{\\alpha}{2}=\\frac{1+ \\text{cos}\\alpha}{2} "},{value:"\\text{tan}\\frac{\\alpha}{2}=\\frac{\\text{sin}\\alpha}{1+ \\text{cos}\\alpha} "},{value:"\\sin \\alpha + \\sin \\beta =2 \\sin \\frac{\\alpha + \\beta}{2}\\cos \\frac{\\alpha - \\beta}{2} "},{value:"\\sin \\alpha - \\sin \\beta =2 \\cos \\frac{\\alpha + \\beta}{2}\\sin \\frac{\\alpha - \\beta}{2} "},{value:"\\cos \\alpha + \\cos \\beta =2 \\cos \\frac{\\alpha + \\beta}{2}\\cos \\frac{\\alpha - \\beta}{2} "},{value:"\\cos \\alpha - \\cos \\beta =-2\\sin \\frac{\\alpha + \\beta}{2}\\sin \\frac{\\alpha - \\beta}{2} "},{value:"a^{2}=b^{2}+c^{2}-2bc\\cos A "},{value:"\\frac{\\sin A}{a}=\\frac{\\sin B}{b}=\\frac{\\sin C}{c}=\\frac{1}{2R} "},{value:"\\sin \\left ( \\frac{\\pi}{2}-\\alpha \\right ) = \\cos \\alpha "},{value:"\\sin \\left ( \\frac{\\pi}{2}+\\alpha \\right ) = \\cos \\alpha "}]}]},{name:"统计",value:"C_{r}^{n}",children:[{data:[{value:"C_{r}^{n} "},{value:"\\frac{n!}{r!(n-r)!} "},{value:"\\sum_{i=1}^{n}{X_i} "},{value:"\\sum_{i=1}^{n}{X_i^2} "},{value:"X_1, \\cdots,X_n "},{value:"\\frac{x-\\mu}{\\sigma} "},{value:"\\sum_{i=1}^{n}{(X_i - \\overline{X})^2} "},{value:"\\begin{array}{c} \r\n \\text{若}P \\left( AB \\right) =P \\left( A \\right) P \\left( B \\right) \\\\ \r\n \\text{则}P \\left( A \\left| B\\right. \\right) =P \\left({B}\\right) \r\n\\end{array}"},{value:"P(E) ={n \\choose k}p^k (1-p)^{n-k} "},{value:"P \\left( A \\right) = \\lim \\limits_{n \\to \\infty}f_{n}\\left ( A \\right ) "},{value:"P \\left( \\bigcup \\limits_{i=1}^{+ \\infty}A_{i}\\right) = \\prod \\limits_{i=1}^{+ \\infty}P{\\left( A_{i}\\right)} "},{value:"\\begin{array}{c} \r\n P \\left( \\emptyset \\right) =0 \\\\ \r\n P \\left( S \\right) =1 \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n \\forall A \\in S \\\\ \r\n P \\left( A \\right) \\ge 0 \r\n\\end{array}"},{value:"P \\left( \\bigcup \\limits_{i=1}^{n}A_{i}\\right) = \\prod \\limits_{i=1}^{n}P \\left( A_{i}\\right) "},{value:"\\begin{array}{c} \r\n S= \\binom{N}{n},A_{k}=\\binom{M}{k}\\cdot \\binom{N-M}{n-k} \\\\ \r\n P\\left ( A_{k}\\right ) = \\frac{\\binom{M}{k}\\cdot \\binom{N-M}{n-k}}{\\binom{N}{n}} \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n P_{n}=n! \\\\ \r\n A_{n}^{k}=\\frac{n!}{\\left( n-k \\left) !\\right. \\right.} \r\n\\end{array}"}]}]}].map((function(a,e){return(0,s.jsxs)(l.Z,{flex:"110px",className:u.Z.item,children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"}),a.name]}),(0,s.jsx)("div",{className:u.Z.children,children:a.children.map((function(a,e){return(0,s.jsxs)("div",{children:[a.name&&(0,s.jsx)("h1",{children:a.name}),(0,s.jsx)(r.Z,{gutter:[10,10],children:a.data.map((function(a,e){return(0,s.jsx)(l.Z,{onClick:function(){return f(a)},className:u.Z.diamond,children:(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"})},e)}))})]},e)}))})]})}))})}],g=function(){var a=document.createElement("div");a.innerHTML=h.current.getValue();var e=a.innerText;return t&&t(e),e};return(0,n.useImperativeHandle)(e,(function(){return{getData:g}})),(0,s.jsxs)("div",{className:u.Z.mathWrap,children:[(0,s.jsx)(i.Z,{defaultActiveKey:"1",items:m}),(0,s.jsx)("math-field",{locale:"zh_cn",className:u.Z.mathField,placeholder:"请打开键盘,输入公式",ref:h,style:{width:800,marginTop:30,fontSize:18},children:p||""}),d&&(0,s.jsx)("div",{className:u.Z.button,children:(0,s.jsx)(c.ZP,{size:"large",onClick:g,style:{zIndex:8,marginTop:10},type:"primary",children:"保存到编辑器"})})]})}));e.Z=d},88820:function(a,e,t){var n=t(82242),r=t.n(n),l=(t(59301),t(93314)),i=t(3113),c=t(37712);e.Z=function(a){var e=a.img,t=a.buttonProps,n=void 0===t?{}:t,o=a.styles,u=void 0===o?{}:o,s=a.customText,d=a.ButtonText,v=a.ButtonClick,p=a.Buttonclass,h=a.ButtonTwo,f=a.imgStyles,m=a.loading,g=void 0!==m&&m;return(0,c.jsxs)("section",{className:"tc animated fadeIn",style:r()(r()({},{color:"#999",margin:"100px auto",visibility:g?"hidden":"visible"}),u),children:[(0,c.jsx)("img",{src:e||l,style:r()(r()({},f),{},{pointerEvents:"none",userSelect:"none"})}),(0,c.jsx)("p",{className:"mt20 font14",children:s||"暂时还没有相关数据哦!"}),d&&(0,c.jsx)(i.ZP,r()(r()({className:p,onClick:v},n),{},{children:d})),h&&h]})}},38278:function(a,e,t){t.d(e,{Z:function(){return k}});var n=t(82242),r=t.n(n),l=t(7557),i=t.n(l),c=t(41498),o=t.n(c),u=t(79800),s=t.n(u),d=t(59301),v={wrp:"wrp___dq7YK",bgBlack:"bgBlack___ARIUV",monaco:"monaco___VnZC3",darkBlue:"darkBlue___UprA9",close:"close___LKoWu",embed:"embed___hvpEJ"},p=t(3113),h=t(38827),f=t(74479),m=t(6848),g=t(23603),x=t(52113),b=t(88820),_=t(41681),y=t(98565),w=t(37712),k=function(a){var e,t,n,l,c,u,k=a.editOffice,A=void 0===k?"view":k,j=a.data,Z=(a.theme,a.type),R=a.filename,P=a.monacoEditor,E=a.className,q=a.style,S=a.close,N=a.onClose,C=a.hasMask,I=a.disabledDownload,O=a.onImgDimensions,T=a.showNodata,D=a.recordInfo,L=(0,d.useState)("https://view.officeapps.live.com/op/view.aspx?src=http://testgs.educoder.net//rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--03541f6234b93d7ac3b2d84e7eb0e6594a952945/1.ppt"),B=s()(L,2),z=(B[0],B[1],(0,d.useState)("")),M=s()(z,2),$=(M[0],M[1]),F=(0,d.useState)(),V=s()(F,2),H=V[0],W=V[1],J="build"===window.ENV?"/react/build":"",X=location.host.startsWith("localhost")?_.Z.PROXY_SERVER:_.Z.API_SERVER,U=(0,d.useRef)();null!==(e=j)&&void 0!==e&&e.startsWith("/api")&&"txt"!==Z&&(j=_.Z.API_SERVER+j);R&&P&&(P.filename=R),(0,d.useEffect)((function(){var a,e=null===(a=document.cookie)||void 0===a||null===(a=a.replace(/\s/g,""))||void 0===a?void 0:a.split(";");null==e||e.map((function(a){var e=a.split("=");"_educoder_session"===e[0]&&$(e[1])}))}),[]),(0,d.useEffect)((function(){var a;"office"===Z&&(j.indexOf("bigfilescdn.")>-1||j.indexOf("bigfiles1")>-1?W({url:j,fileType:(a=j,a.substring(a.lastIndexOf("/")+1).split(".").pop()),model:j.indexOf("model=edit")?"edit":"view"}):G())}),[Z,j]);var G=function(){var a=o()(i()().mark((function a(){var e,t,n;return i()().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return console.log("data:",j),e=j,j.startsWith("http")||(e=location.origin+e),t=new URL(e).pathname.split("/").pop(),a.next=6,(0,x.gJ)({attachment_id:t});case 6:(n=a.sent).url=X+n.url,W(n);case 9:case"end":return a.stop()}}),a)})));return function(){return a.apply(this,arguments)}}(),K=function(){j.startsWith("http")||j.startsWith("blob:")?Q():(0,g.Sv)(R||"educoder",j,R)},Q=function(){D&&(0,y.fc)({id:null==D?void 0:D.id,watch_type:1,course_id:null==D?void 0:D.course_id}),(0,g.Nd)(R||"educoder",decodeURIComponent(j))};return(0,w.jsxs)("div",{style:r()({},q||{}),className:"".concat(C&&v.bgBlack," ").concat(Z?v.wrp:"hide"),children:[S&&(0,w.jsxs)("div",{className:v.close,ref:U,children:[!!O&&(0,w.jsx)(m.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{onClick:function(){N(),O()},children:(0,w.jsx)("i",{className:"icon-yulanpizhu"})})}),!I&&(0,w.jsx)(m.Z,{title:"点击下载此文件",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{onClick:Q,children:(0,w.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,w.jsx)(m.Z,{title:"关闭",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{className:"",onClick:N,children:(0,w.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,w.jsx)("div",{className:"".concat(v[E]," ").concat(E," ").concat(v.monaco," ").concat("txt"===Z?"show":"hide"),children:"txt"===Z&&(0,w.jsx)(w.Fragment,{children:(0,w.jsx)(f.ZP,r()({},P))})}),"audio"===Z&&(0,w.jsx)("audio",{src:"".concat((null===(t=j)||void 0===t?void 0:t.indexOf("http://"))>-1||(null===(n=j)||void 0===n?void 0:n.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(j),autoPlay:!0}),"video"===Z&&(0,w.jsx)(w.Fragment,{children:(null===(l=j)||void 0===l?void 0:l.indexOf("http"))>-1?(0,w.jsx)("video",{controls:!0,src:"".concat(j),autoPlay:!0}):(0,w.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(j),autoPlay:!0})}),"office"===Z&&H&&(0,w.jsx)("iframe",{src:"".concat(J,"/office.html?key=").concat(H.key,"&url=").concat(btoa(H.url),"&callbackUrl=").concat(X+H.callbackUrl,"&fileType=").concat(H.fileType,"&title=").concat(H.title,"&model=").concat(A,"&officeServer=").concat(_.Z.ONLYOFFICE,"&disabledDownload=").concat(!!I)}),"html"===Z&&(0,w.jsx)("iframe",{src:j+"&disposition=inline"}),"pdf"===Z&&(0,w.jsx)("iframe",{src:"".concat(J,"/js/pdfview/index.html?filename=").concat(R||"educoder.pdf","&url=").concat(encodeURIComponent(j),"&disabledDownload=").concat(!!I)}),"image"===Z&&(0,w.jsx)("img",{src:"".concat((null===(c=j)||void 0===c?void 0:c.indexOf("http://"))>-1||(null===(u=j)||void 0===u?void 0:u.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(j)}),("other"===Z||"download"===Z)&&(0,w.jsx)(w.Fragment,{children:T?(0,w.jsx)(b.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,w.jsx)(p.ZP,{icon:(0,w.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:K,disabled:I,children:"下载"})}):(0,w.jsxs)(p.ZP,{type:"primary",size:"middle",onClick:K,disabled:I,children:[(0,w.jsx)(h.Z,{}),"点击下载"]})})]})}},39937:function(a,e,t){t.d(e,{z:function(){return w}});var n=t(82242),r=t.n(n),l=t(37205),i=t.n(l),c=t(91232),o=t.n(c),u=t(79800),s=t.n(u),d=t(59301),v=(t(46650),t(55037)),p=(t(64018),t(45071)),h=t(41681),f=t(23603),m=t(15342),g=t(1012),x=t(38278),b=t(37712),_="@▁@",y=/]*>/g;var w=function(a,e){a=a||"";var t=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return e?a.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(t,(function(a,e,t,n,r,l,i){var c=e||n||l,o=t||r||i||"?";return h.Z.API_SERVER+"/api/attachments/"+c+o+"&t="+(0,f.Jn)(c,Date.now())+(a.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):a=a.replace(/(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(a,e,t,n,r,l,i){var c=e||n||l,o=t||r||i||"?";return h.Z.API_SERVER+"/attachments/download/"+c+o+"&t="+(0,f.Jn)(c,Date.now())+(a.indexOf(")")>-1?")":"&")})).replace(t,(function(a,e,t,n,r,l,i){var c=e||n||l,o=t||r||i||"?";return h.Z.API_SERVER+"/api/attachments/"+c+o+"&t="+(0,f.Jn)(c,Date.now())+(a.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(a,e,t,n,r){var l=e||n,i=t||r||"";return'"'+h.Z.API_SERVER+"/api/attachments/"+l+i+l+i+"&t="+(0,f.Jn)(l,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(a,e,t,n,r){var l=e||n,i=t||r||"";return"("+h.Z.API_SERVER+"/files/uploads/"+l+i+l+i+"&t="+(0,f.Jn)(l,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};e.Z=function(a){var e=a.value,t=void 0===e?"":e,n=a.className,l=a.showTextOnly,c=a.showLines,u=a.style,f=void 0===u?{}:u,w=a.stylesPrev,k=void 0===w?{}:w,A=a.highlightKeywords,j=a.showProgramFill,Z=(a.isProgramFill,a.disabledFill),R=void 0!==Z&&Z,P=a.programFillValue,E=a.onFillChange,q=void 0===E?function(a){}:E,S=a.onFillBlur,N=void 0===S?function(){}:S,C=a.onFillFocus,I=void 0===C?function(){}:C,O=String(t),T=(0,d.useState)(""),D=s()(T,2),L=D[0],B=D[1],z=(0,d.useState)("office"),M=s()(z,2),$=M[0],F=M[1],V=(0,d.useState)([]),H=s()(V,2),W=H[0],J=H[1],X=(0,d.useRef)("a"+(0,g.Z)()),U={};var G=function(a){return a.replace(/([\s\S]+?)<\/style>/gim,(function(a,e){var t=e.replace(/(\n|\r)/g,"").split("}"),n=[];return t.map((function(a){""!=a&&n.push(".".concat(X.current," ").concat(a))})),"")}))},K=(0,d.useMemo)((function(){try{O=O.replace(/\(\/attachments\/download\//g,"("+h.Z.API_SERVER+"/attachments/download/").replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\//g,"("+h.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+h.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+h.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(a){}if(j){var a=-1;return O=O.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(e,t,n){var r;return function(a,e,t){var n=document.createElement(a===_?"input":"textarea");n.style.width="100%",n.style.height=a===_?"40px":"151px",n.rows=5,n.spellcheck=!1,n.name="edu-program-fill",n.placeholder="请输入",n.dataset.id=e;var r=Object.keys(U).length;return U[r]=n,'')}(e,++a,null==P||null===(r=P[a])||void 0===r?void 0:r.value.replaceAll("<","<").replaceAll(">",">"))})),'
'.concat(G(O||""),"
")}var e=G(O);e=(0,v.ZP)(e);var t=(0,v.ez)();O.match(/\[TOC\]/)&&(e=e.replace("

[TOC]

",(0,v.Qv)()),(0,v.Iy)()),e=e.replace(/(__special_katext_id_\d+__)/g,(function(a,e){var n=t[e],r=n.type,l=n.expression;return(0,m.renderToString)(function(a){var e=document.createElement("div");return e.innerHTML=a,0===e.childNodes.length?"":e.childNodes[0].nodeValue}(l)||"",{displayMode:"block"===r,throwOnError:!1,output:"html"})})),e=e.replace(/▁/g,"▁▁▁▁▁"),(0,v.AL)();var n=document.createElement("div");return n.innerHTML=e,l?n.innerText:A?(ea(n,A.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),n.innerHTML):(setTimeout((function(){return ra()}),500),n.innerHTML)}),[O,A]);(0,d.useEffect)((function(){ta.current&&ta.current.querySelectorAll(["input","textarea"]).forEach((function(a){a.oninput=Q,a.onblur=Y,a.onfocus=aa}))}),[W]),(0,d.useEffect)((function(){if(null!=P&&P.length)try{var a,e=ta.current.querySelectorAll(".edu-program-fill-score"),t=ta.current.querySelectorAll('[name="edu-program-fill"]'),n=o()(t.entries());try{for(n.s();!(a=n.n()).done;){var r,l,i,c=s()(a.value,2),u=c[0],d=c[1];d.value=(null==P||null===(r=P[u])||void 0===r?void 0:r.value)||"","warning"===(null==P||null===(l=P[u])||void 0===l?void 0:l.type)?d.className="program-fill-warning":"success"===(null==P||null===(i=P[u])||void 0===i?void 0:i.type)?d.className="program-fill-success":d.className=""}}catch(a){n.e(a)}finally{n.f()}var v,p=o()(e.entries());try{for(p.s();!(v=p.n()).done;){var h,f,m=s()(v.value,2),g=m[0];m[1].innerHTML=null!=P&&null!==(h=P[g])&&void 0!==h&&h.score?"".concat(null==P||null===(f=P[g])||void 0===f?void 0:f.score,"分"):""}}catch(a){p.e(a)}finally{p.f()}J(P)}catch(a){console.log(a,"error")}}),[P]);var Q=function(a){W[a.target.dataset.id]=W[a.target.dataset.id]||{},W[a.target.dataset.id].value=a.target.value,J(i()(W)),q(W,a.target.dataset.id)},Y=function(a){W[a.target.dataset.id]=W[a.target.dataset.id]||{},W[a.target.dataset.id].value=a.target.value,J(i()(W)),N(W,a.target.dataset.id)},aa=function(a){W[a.target.dataset.id]=W[a.target.dataset.id]||{},W[a.target.dataset.id].value=a.target.value,J(i()(W)),I(W,a.target.dataset.id)};function ea(a,e){return a.childNodes.forEach((function(a){if(a.childNodes.length>0)ea(a,e);else if("IMG"!==a.nodeName)if(a.innerHTML){var t;a.innerHTML=null===(t=a.innerHTML)||void 0===t?void 0:t.replace(new RegExp(e,"gi"),'$&')}else{var n=document.createElement("span");n.innerHTML=a.textContent.replace(new RegExp(e,"gi"),'$&'),a.replaceWith(n)}}))}var ta=(0,d.useRef)();function na(a){var e=a.target;if("A"===e.tagName.toUpperCase()){var t=e.getAttribute("href");if(t.indexOf("office")>-1)a.preventDefault(),B(t),F("office");else if(t.indexOf("application/pdf")>-1)a.preventDefault(),B(t),F("pdf");else if(t.indexOf("text/html")>-1)a.preventDefault(),B(t),F("html");else if(t.startsWith("#")){a.preventDefault();var n=document.getElementById(t.replace("#",""));n&&n.scrollIntoView(!0)}}}v.jb.WebkitLineClamp=c,c&&(f=r()(r()({},f),v.jb));var ra=function(){var a,e=null===(a=ta.current)||void 0===a?void 0:a.querySelectorAll("video");null==e||e.forEach((function(a){if(a.oncontextmenu=function(){return!1},a.src.indexOf(".m3u8")>-1)if(a.canPlayType("application/vnd.apple.mpegurl"));else if(p.ZP.isSupported()){var e=new p.ZP;e.loadSource(a.src),e.attachMedia(a)}}))};return(0,d.useEffect)((function(){if(ta.current&&K&&K.match(y)&&window.PR.prettyPrint(),ta.current)return ta.current.addEventListener("click",na),function(){var a;null===(a=ta.current)||void 0===a||a.removeEventListener("click",na),(0,v.AL)(),(0,v.Iy)()}}),[K,ta.current,na]),(0,d.useEffect)((function(){var a,e=function(a){a.preventDefault(),a.clipboardData.setData("text",window.getSelection().toString())};return null===(a=ta.current)||void 0===a||a.addEventListener("copy",e),function(){var a;null===(a=ta.current)||void 0===a||a.removeEventListener("copy",e)}}),[ta.current]),(0,b.jsxs)(b.Fragment,{children:[l&&(0,b.jsx)("div",{ref:ta,children:K}),!l&&(0,b.jsx)("div",{ref:ta,style:r()({},f),className:"".concat(n||""," ").concat(R?"disabled-fill":""," markdown-body ").concat(X.current),dangerouslySetInnerHTML:{__html:K}}),(0,b.jsx)(x.Z,{close:!0,data:L,type:null!=L&&L.length?$:"",style:r()({},k),onClose:function(){return B("")}})]})}},55037:function(a,e,t){t.d(e,{AL:function(){return w},Iy:function(){return v},Qv:function(){return f},ez:function(){return y},jb:function(){return p}});var n=t(79800),r=t.n(n),l=t(32834),i=t.n(l),c=t(11690);var o=[],u=["
    "],s=new(i().Renderer),d=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function v(){o.length=0,u=["
      "]}var p={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function h(a,e,t,n){if(e>=a.length||a[e].level<=t)return e;var r=a[e];n.push("
    • "+r.text+"");var l=[];return e=h(a,++e,r.level,l),l.length>0&&(n.push("
        "),l.forEach((function(a){n.push(a)})),n.push("
      ")),n.push("
    • "),e=h(a,e,t,n)}function f(){return h(o,0,0,u),u.push("
    "),u.join("")}var m={heading:function(a){var e=d.exec(a);if(e)return{type:"heading",raw:e[0],depth:e[1].length,text:e[2]}},fences:function(a){var e=this.rules.block.fences.exec(a);if(e){var t=e[0],n=function(a,e){var t=a.match(/^(\s+)(?:```)/);if(null===t)return e;var n=t[1];return e.split("\n").map((function(a){var e=a.match(/^\s+/);return null===e?a:r()(e,1)[0].length>=n.length?a.slice(n.length):a})).join("\n")}(t,e[3]||""),l=e[2]?e[2].trim():e[2];if(["latex","katex","math"].indexOf(l)>=0){var i=b(),c=n;n=i,_[i]={type:"block",expression:c}}return{type:"code",raw:t,lang:l,text:n}}}},g=/(?:\${2})([^\n`]+?)(?:\${2})/gi,x=0,b=function(){return"__special_katext_id_".concat(x++,"__")},_={};function y(){return _}function w(){x=0,_={}}function k(a){return a=a.replace(g,(function(a,e){var t=b();return _[t]={type:"inline",expression:e},t}))}var A=s.listitem;s.listitem=function(a){return A(k(a))};var j=s.paragraph;s.paragraph=function(a){return j(k(a))};var Z=s.tablecell;s.tablecell=function(a,e){return Z(k(a),e)},s.code=function(a,e,t){var n=(e||"").match(/\S*/)[0];return n?["latex","katex","math"].indexOf(n)>=0?"

    ".concat(a,"

    "):'
    ').concat(t?a:(0,c.escape)(a,!0),"
    \n"):'
    '+(t?a:(0,c.escape)(a,!0))+"
    "},s.heading=function(a,e,t){var n=this.options.headerPrefix+t.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return o.push({anchor:n,level:e,text:a}),"'+a+""},i().setOptions({silent:!0,gfm:!0,pedantic:!1}),i().use({tokenizer:m,renderer:s}),e.ZP=i()},52115:function(a,e){e.Z={lists:"lists___xhHyq",item:"item___pWJAA",children:"children___sDG61",diamond:"diamond___FwgzD",button:"button___WPN6r",mathWrap:"mathWrap___FmnMJ",mathFillWrap:"mathFillWrap___PmY3H"}}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[77123],{77123:function(a,e,t){var n=t(59301),r=t(95237),l=t(43604),i=t(99313),c=t(3113),o=t(39937),u=t(52115),s=(t(48136),t(37712)),d=(0,n.forwardRef)((function(a,e){var t=a.callback,d=a.showSaveButton,v=a.value,p=void 0===v?"":v,h=(0,n.useRef)(),f=function(a){h.current.setValue(h.current.getValue()+" "+a.value+" ")},m=[{key:"1",label:"快捷模板",children:(0,s.jsx)(r.Z,{className:u.Z.lists,gutter:[10,10],children:[{name:"分数得分",value:"\\frac{x}{y}",children:[{name:"分数 Fractions",data:[{value:"\\frac{a}{b}"},{value:"x\\tfrac{x}{a} "},{value:"\\mathrm{d}t"},{value:"\\partial t"},{value:"\\frac{\\partial y}{\\partial x}"},{value:"\\nabla\\psi"},{value:"\\frac{\\partial^2}{\\partial x_1\\partial x_2}y"},{value:"\\cfrac{1}{a + \\cfrac{7}{b + \\cfrac{2}{9}}} = c"}]},{name:"导数 Derivative",data:[{value:"\\dot{a} "},{value:"\\ddot{a}"},{value:"{f}^{\\prime}"},{value:"{f}^{\\prime\\prime}"},{value:"{f}^{(n)}"}]},{name:"模算术 Modular arithmetic",data:[{value:"a \\bmod b"},{value:"a \\equiv b \\pmod{m} "},{value:"\\gcd(m, n) "},{value:"\\operatorname{lcm}(m, n) "}]}]},{name:"根式角标",value:"\\sqrt{x}",children:[{name:"根式 Radicals",data:[{value:"\\sqrt{x}"},{value:"\\sqrt[y]{x}"}]},{name:"上下标 Sub&Super",data:[{value:"x^{a}"},{value:"x_{a}"},{value:"x_{a}^{b} "},{value:"_{a}^{b} x"},{value:"x_{a}^{b} "}]},{name:"重音符及其他 Accents and Others",data:[{value:"\\hat{a} "},{value:"\\sqrt[y]{x}"},{value:"\\check{} "},{value:"\\grave{a} "},{value:"\\acute{a}"},{value:"\\tilde{a}"},{value:"\\breve{a}"},{value:"\\bar{a}"},{value:"\\vec{a}"},{value:"\\not{a}"},{value:"\\widetilde{abc}"},{value:"\\widehat{abc}"},{value:"\\overleftarrow{abc} "},{value:"\\overrightarrow{abc}"},{value:"\\overline{abc}"},{value:"\\underline{abc}"},{value:"\\overbrace{abc}"},{value:"\\underbrace{abc}"},{value:"\\overset{a}{abc}"},{value:"\\underset{a}{abc} \\stackrel\\frown{ab}"},{value:"\\overline{ab} "},{value:"\\overleftrightarrow{ab}"},{value:"\\overset{a}{\\leftarrow}"},{value:"\\overset{a}{\\rightarrow}"},{value:"\\xleftarrow[abc]{a}"},{value:"\\xrightarrow[abc]{a} "}]}]},{name:"极限对数",value:"\\lim_{x \\to 0}",children:[{name:"极限 Limits",data:[{value:"\\lim a"},{value:"\\lim_{x \\to 0}"},{value:"\\lim_{x \\to \\infty}"},{value:"\\max_b{a}"},{value:"\\min_a{b}"}]},{name:"对数指数 Logarithms and exponentials",data:[{value:"\\log_{a}{b}"},{value:"\\lg_{a}{b}"},{value:"\\ln_{a}{b}"},{value:"\\exp a"}]},{name:"界限 Bounds",data:[{value:"\\min x"},{value:"\\sup t"},{value:"\\inf s"},{value:"\\lim u"},{value:"\\limsup w"},{value:"\\dim p"},{value:"\\ker\\phi "}]}]},{name:"三角函数",value:"\\sin a",children:[{name:"三角函数 Trigonometric functions",data:[{value:"\\sin a"},{value:"\\cos a"},{value:"\\tan a"},{value:"\\cot a "},{value:"\\sec a "},{value:"\\csc a "}]},{name:"反三角函数 Inverse trigonometric functions",data:[{value:"\\sin^{-1}"},{value:"\\cos^{-1}"},{value:"\\tan^{-1}"},{value:"\\cot^{-1}"},{value:"\\sec^{-1}"},{value:"\\csc^{-1}"},{value:"\\arcsin a"},{value:"\\arccos a"},{value:"\\arctan a"},{value:"\\operatorname{arccot} a"},{value:"\\operatorname{arcsec} a"},{value:"\\operatorname{arccsc} a"}]},{name:"双曲函数 Hyperblic functions",data:[{value:"\\sinh a"},{value:"\\cosh a"},{value:"\\tanh a"},{value:"\\coth a"},{value:"\\operatorname{sech} a"},{value:"\\operatorname{csch} a"}]},{name:"反双曲函数 Inverse hyperbolic functions",data:[{value:"\\sinh^{-1}"},{value:"a\\cosh^{-1} a"},{value:"\\tanh^{-1} a"},{value:"\\coth^{-1} a"},{value:"\\operatorname{sech}^{-1} a"},{value:"\\operatorname{csch}^{-1} a"}]}]},{name:"积分运算",value:"\\int_{a}^{b}",children:[{name:"积分 Integral",data:[{value:"\\int"},{value:"\\int_{a}^{b}"},{value:"\\int\\limits_{a}^{b}"}]},{name:"双重积分 Double integral",data:[{value:"\\iint"},{value:"\\iint_{a}^{b} "},{value:"\\iint\\limits_{a}^{b} "}]},{name:"三重积分 Triple integral",data:[{value:"\\iiint"},{value:"\\iiint_{a}^{b}"},{value:"\\iiint\\limits_{a}^{b} "}]},{name:"曲线积分 Closed line or path integral",data:[{value:"\\oint"},{value:"\\oint_{a}^{b} "}]}]},{name:"大型运算",value:"\\sum_{a}^{b}",children:[{name:"求和 Summation",data:[{value:"\\sum"},{value:"\\sum_{a}^{b}"},{value:"{\\textstyle \\sum_{a}^{b}} "}]},{name:"乘积余积 Product and coproduct",data:[{value:"\\prod"},{value:"\\prod_{a}^{b}"},{value:"{\\textstyle \\prod_{a}^{b}}"},{value:"\\coprod"},{value:"\\coprod_{a}^{b}"},{value:"{\\textstyle \\coprod_{a}^{b}} "}]},{name:"并集交集 Union and intersection",data:[{value:"\\bigcup"},{value:"\\bigcup_{a}^{b}"},{value:"{\\textstyle \\bigcup_{a}^{b}}"},{value:"\\bigcap"},{value:"\\bigcap_{a}^{b}"}]},{name:"析取合取 Disjunction and conjunction",data:[{value:"\\bigvee"},{value:"\\bigvee_{a}^{b}"},{value:"\\bigwedge"},{value:"\\bigwedge_{a}^{b}"}]}]},{name:"括号取整",value:"\\left [ \\left ( \\right ) \\right ] ",children:[{name:"括号 Brackets",data:[{value:"\\left ( \\right )"},{value:"\\left [ \\right ]"},{value:"\\left \\langle \\right \\rangle "},{value:"\\left | \\right | "},{value:"\\left \\lfloor \\right \\rfloor "},{value:"\\left \\lceil \\right \\rceil "}]}]}].map((function(a,e){return(0,s.jsxs)(l.Z,{flex:"110px",className:u.Z.item,children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(o.Z,{value:"$$".concat(a.value,"$$")}),a.name]}),(0,s.jsx)("div",{className:u.Z.children,children:a.children.map((function(a,e){return(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{children:a.name}),(0,s.jsx)(r.Z,{gutter:[10,10],children:a.data.map((function(a,e){return(0,s.jsx)(l.Z,{onClick:function(){return f(a)},className:u.Z.diamond,children:(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"})},e)}))})]},e)}))})]})}))})},{key:"2",label:"公式模板",children:(0,s.jsx)(r.Z,{className:u.Z.lists,gutter:[10,10],children:[{name:"代数",value:"\\sqrt{a^2+b^2}",children:[{data:[{value:"\\left(x-1\\right)\\left(x+3\\right) "},{value:"\\sqrt{a^2+b^2}"},{value:"\\left ( \\frac{a}{b}\\right )^{n}= \\frac{a^{n}}{b^{n}}"},{value:"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd} "},{value:"\\frac{x^{2}}{a^{2}}-\\frac{y^{2}}{b^{2}}=1 "},{value:"\\frac{1}{\\sqrt{a}}=\\frac{\\sqrt{a}}{a},a\\ge 0\\frac{1}{\\sqrt{a}}=\\frac{\\sqrt{a}}{a},a\\ge 0 "},{value:"\\sqrt[n]{a^{n}}=\\left ( \\sqrt[n]{a}\\right )^{n} "},{value:"x ={-b \\pm \\sqrt{b^2-4ac}\\over 2a} "},{value:"y-y_{1}=k \\left( x-x_{1}\\right) "},{value:"\\left\\{\\begin{matrix} \r\n x=a + r\\text{cos}\\theta \\ \r\n y=b + r\\text{sin}\\theta \r\n\\end{matrix}\\right. "},{value:"\\begin{array}{l} \r\n \\text{对于方程形如:}x^{3}-1=0 \\ \r\n \\text{设}\\text{:}\\omega =\\frac{-1+\\sqrt{3}i}{2} \\ \r\n x_{1}=1,x_{2}= \\omega =\\frac{-1+\\sqrt{3}i}{2} \\ \r\n x_{3}= \\omega ^{2}=\\frac{-1-\\sqrt{3}i}{2} \r\n\\end{array} "},{value:"\\begin{array}{l} \r\n a\\mathop{{x}}\\nolimits^{{2}}+bx+c=0 \\ \r\n \\Delta =\\mathop{{b}}\\nolimits^{{2}}-4ac \\ \r\n \\left\\{\\begin{matrix} \r\n \\Delta \\gt 0\\text{方程有两个不相等的实根} \\ \r\n \\Delta = 0\\text{方程有两个相等的实根} \\ \r\n \\Delta \\lt 0\\text{方程无实根} \r\n\\end{matrix}\\right. \r\n\\end{array} "},{value:"\\begin{array}{l} \r\n a\\mathop{{x}}\\nolimits^{{2}}+bx+c=0 \\ \r\n \\Delta =\\mathop{{b}}\\nolimits^{{2}}-4ac \\ \r\n \\mathop{{x}}\\nolimits_{{1,2}}=\\frac{{-b \\pm \r\n \\sqrt{{\\mathop{{b}}\\nolimits^{{2}}-4ac}}}}{{2a}} \\ \r\n \\mathop{{x}}\\nolimits_{{1}}+\\mathop{{x}}\\nolimits_{{2}}=-\\frac{{b}}{{a}} \\ \r\n \\mathop{{x}}\\nolimits_{{1}}\\mathop{{x}}\\nolimits_{{2}}=\\frac{{c}}{{a}} \r\n\\end{array} "}]}]},{name:"几何",value:"\\Delta A B C ",children:[{data:[{value:"\\Delta A B C "},{value:"a \\parallel c,b \\parallel c \\Rightarrow a \\parallel b "},{value:"l \\perp \\beta ,l \\subset \\alpha \\Rightarrow \\alpha \\perp \\beta"},{value:"\\left.\\begin{matrix} \r\n a \\perp \\alpha \\ \r\n b \\perp \\alpha \r\n\\end{matrix}\\right\\}\\Rightarrow a \\parallel b"},{value:"P \\in \\alpha ,P \\in \\beta , \\alpha \\cap \\beta =l \\Rightarrow P \\in l "},{value:"\\alpha \\perp \\beta , \\alpha \\cap \\beta =l,a \\subset \\alpha ,a \\perp l \r\n \\Rightarrow a \\perp \\beta "},{value:"\\left.\\begin{matrix} \r\n a \\subset \\beta ,b \\subset \\beta ,a \\cap b=P \\ \r\n a \\parallel \\partial ,b \\parallel \\partial \r\n\\end{matrix}\\right\\}\\Rightarrow \\beta \\parallel \\alpha "},{value:"\\alpha \\parallel \\beta , \\gamma \\cap \\alpha =a, \\gamma \\cap \\beta =b \\Rightarrow a \\parallel b "},{value:"A \\in l,B \\in l,A \\in \\alpha ,B \\in \\alpha \\Rightarrow l \\subset \\alpha "},{value:"\\left.\\begin{matrix} \r\n m \\subset \\alpha ,n \\subset \\alpha ,m \\cap n=P \\ \r\n a \\perp m,a \\perp n \r\n\\end{matrix}\\right\\}\\Rightarrow a \\perp \\alpha "},{value:"\\begin{array}{c} \r\n \\text{直角三角形中,直角边长a,b,斜边边长c} \\ \r\n a^{2}+b^{2}=c^{2} \r\n\\end{array}"}]}]},{name:"不等式",value:"a > b",children:[{data:[{value:"a > b,b > c \\Rightarrow a > c "},{value:"a > b,c > d \\Rightarrow a+c > b+d "},{value:"a > b > 0,c > d > 0 \\Rightarrow ac bd "},{value:"\\begin{array}{c} \r\n a \\gt b,c \\gt 0 \\Rightarrow ac \\gt bc \\ \r\n a \\gt b,c \\lt 0 \\Rightarrow ac \\lt bc \r\n\\end{array}"},{value:"\\left | a-b \\right | \\geqslant \\left | a \\right | -\\left | b \\right | "},{value:"-\\left | a \\right |\\leq a\\leqslant \\left | a \\right | "},{value:"\\left | a \\right |\\leqslant b \\Rightarrow -b \\leqslant a \\leqslant \\left | b \\right | "},{value:"\\left | a+b \\right | \\leqslant \\left | a \\right | + \\left | b \\right | "},{value:"\\begin{array}{c} \r\n a \\gt b \\gt 0,n \\in N^{\\ast},n \\gt 1 \\ \r\n \\Rightarrow a^{n}\\gt b^{n}, \\sqrt[n]{a}\\gt \\sqrt[n]{b} \r\n\\end{array}"},{value:"\\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2}\\leq \r\n\\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right) "},{value:"\\begin{array}{c} \r\n a,b \\in R^{+} \\ \r\n \\Rightarrow \\frac{a+b}{{2}}\\ge \\sqrt{ab} \\ \r\n \\left( \\text{当且仅当}a=b\\text{时取“}=\\text{”号}\\right) \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n a,b \\in R \\ \r\n \\Rightarrow a^{2}+b^{2}\\gt 2ab \\ \r\n \\left( \\text{当且仅当}a=b\\text{时取“}=\\text{”号}\\right) \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n H_{n}=\\frac{n}{\\sum \\limits_{i=1}^{n}\\frac{1}{x_{i}}}= \\frac{n}{\\frac{1}{x_{1}}+ \\frac{1}{x_{2}}+ \\cdots + \\frac{1}{x_{n}}} \\ G_{n}=\\sqrt[n]{\\prod \\limits_{i=1}^{n}x_{i}}= \\sqrt[n]{x_{1}x_{2}\\cdots x_{n}} \\ A_{n}=\\frac{1}{n}\\sum \\limits_{i=1}^{n}x_{i}=\\frac{x_{1}+ x_{2}+ \\cdots + x_{n}}{n} \\ Q_{n}=\\sqrt{\\sum \\limits_{i=1}^{n}x_{i}^{2}}= \\sqrt{\\frac{x_{1}^{2}+ x_{2}^{2}+ \\cdots + x_{n}^{2}}{n}} \\ H_{n}\\leq G_{n}\\leq A_{n}\\leq Q_{n} \r\n\\end{array}"}]}]},{name:"积分",value:"\\frac{\\mathrm{d}\\partial}{\\partial x}",children:[{data:[{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}x^n=nx^{n-1} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}e^{ax}=a\\,e^{ax} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\ln(x)=\\frac{1}{x} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\sin x=\\cos x "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\cos x=-\\sin x "},{value:"\\int k\\mathrm{d}x = kx+C "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\tan x=\\sec^2 x "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\cot x=-\\csc^2 x "},{value:"\\int \\frac{1}{x}\\mathrm{d}x= \\ln \\left| x \\right| +C "},{value:"\\int \\frac{1}{\\sqrt{1-x^{2}}}\\mathrm{d}x= \\arcsin x +C "},{value:"\\int \\frac{1}{1+x^{2}}\\mathrm{d}x= \\arctan x +C "},{value:"\\int u \\frac{\\mathrm{d}v}{\\mathrm{d}x}\\,\\mathrm{d}x=uv-\\int \\frac{\\mathrm{d}u}{\\mathrm{d}x}v\\,\\mathrm{d}x "},{value:"f(x) = \\int_{-\\infty}^\\infty \\hat f(x)\\xi\\,e^{2 \\pi i \\xi x} \\,\\mathrm{d}\\xi "},{value:"\\int x^{\\mu}\\mathrm{d}x=\\frac{x^{\\mu +1}}{\\mu +1}+C, \\left({\\mu \\neq -1}\\right) "}]}]},{name:"三角",value:"e^{i \\theta}",children:[{name:"求和 Summation",data:[{value:"e^{i \\theta} "},{value:"\\left(\\frac{\\pi}{2}-\\theta \\right ) "},{value:"\\text{sin}^{2}\\frac{\\alpha}{2}=\\frac{1- \\text{cos}\\alpha}{2} "},{value:"\\text{cos}^{2}\\frac{\\alpha}{2}=\\frac{1+ \\text{cos}\\alpha}{2} "},{value:"\\text{tan}\\frac{\\alpha}{2}=\\frac{\\text{sin}\\alpha}{1+ \\text{cos}\\alpha} "},{value:"\\sin \\alpha + \\sin \\beta =2 \\sin \\frac{\\alpha + \\beta}{2}\\cos \\frac{\\alpha - \\beta}{2} "},{value:"\\sin \\alpha - \\sin \\beta =2 \\cos \\frac{\\alpha + \\beta}{2}\\sin \\frac{\\alpha - \\beta}{2} "},{value:"\\cos \\alpha + \\cos \\beta =2 \\cos \\frac{\\alpha + \\beta}{2}\\cos \\frac{\\alpha - \\beta}{2} "},{value:"\\cos \\alpha - \\cos \\beta =-2\\sin \\frac{\\alpha + \\beta}{2}\\sin \\frac{\\alpha - \\beta}{2} "},{value:"a^{2}=b^{2}+c^{2}-2bc\\cos A "},{value:"\\frac{\\sin A}{a}=\\frac{\\sin B}{b}=\\frac{\\sin C}{c}=\\frac{1}{2R} "},{value:"\\sin \\left ( \\frac{\\pi}{2}-\\alpha \\right ) = \\cos \\alpha "},{value:"\\sin \\left ( \\frac{\\pi}{2}+\\alpha \\right ) = \\cos \\alpha "}]}]},{name:"统计",value:"C_{r}^{n}",children:[{data:[{value:"C_{r}^{n} "},{value:"\\frac{n!}{r!(n-r)!} "},{value:"\\sum_{i=1}^{n}{X_i} "},{value:"\\sum_{i=1}^{n}{X_i^2} "},{value:"X_1, \\cdots,X_n "},{value:"\\frac{x-\\mu}{\\sigma} "},{value:"\\sum_{i=1}^{n}{(X_i - \\overline{X})^2} "},{value:"\\begin{array}{c} \r\n \\text{若}P \\left( AB \\right) =P \\left( A \\right) P \\left( B \\right) \\\\ \r\n \\text{则}P \\left( A \\left| B\\right. \\right) =P \\left({B}\\right) \r\n\\end{array}"},{value:"P(E) ={n \\choose k}p^k (1-p)^{n-k} "},{value:"P \\left( A \\right) = \\lim \\limits_{n \\to \\infty}f_{n}\\left ( A \\right ) "},{value:"P \\left( \\bigcup \\limits_{i=1}^{+ \\infty}A_{i}\\right) = \\prod \\limits_{i=1}^{+ \\infty}P{\\left( A_{i}\\right)} "},{value:"\\begin{array}{c} \r\n P \\left( \\emptyset \\right) =0 \\\\ \r\n P \\left( S \\right) =1 \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n \\forall A \\in S \\\\ \r\n P \\left( A \\right) \\ge 0 \r\n\\end{array}"},{value:"P \\left( \\bigcup \\limits_{i=1}^{n}A_{i}\\right) = \\prod \\limits_{i=1}^{n}P \\left( A_{i}\\right) "},{value:"\\begin{array}{c} \r\n S= \\binom{N}{n},A_{k}=\\binom{M}{k}\\cdot \\binom{N-M}{n-k} \\\\ \r\n P\\left ( A_{k}\\right ) = \\frac{\\binom{M}{k}\\cdot \\binom{N-M}{n-k}}{\\binom{N}{n}} \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n P_{n}=n! \\\\ \r\n A_{n}^{k}=\\frac{n!}{\\left( n-k \\left) !\\right. \\right.} \r\n\\end{array}"}]}]}].map((function(a,e){return(0,s.jsxs)(l.Z,{flex:"110px",className:u.Z.item,children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"}),a.name]}),(0,s.jsx)("div",{className:u.Z.children,children:a.children.map((function(a,e){return(0,s.jsxs)("div",{children:[a.name&&(0,s.jsx)("h1",{children:a.name}),(0,s.jsx)(r.Z,{gutter:[10,10],children:a.data.map((function(a,e){return(0,s.jsx)(l.Z,{onClick:function(){return f(a)},className:u.Z.diamond,children:(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"})},e)}))})]},e)}))})]})}))})}],g=function(){var a=document.createElement("div");a.innerHTML=h.current.getValue();var e=a.innerText;return t&&t(e),e};return(0,n.useImperativeHandle)(e,(function(){return{getData:g}})),(0,s.jsxs)("div",{className:u.Z.mathWrap,children:[(0,s.jsx)(i.Z,{defaultActiveKey:"1",items:m}),(0,s.jsx)("math-field",{locale:"zh_cn",className:u.Z.mathField,placeholder:"请打开键盘,输入公式",ref:h,style:{width:800,marginTop:30,fontSize:18},children:p||""}),d&&(0,s.jsx)("div",{className:u.Z.button,children:(0,s.jsx)(c.ZP,{size:"large",onClick:g,style:{zIndex:8,marginTop:10},type:"primary",children:"保存到编辑器"})})]})}));e.Z=d},88820:function(a,e,t){var n=t(82242),r=t.n(n),l=(t(59301),t(93314)),i=t(3113),c=t(37712);e.Z=function(a){var e=a.img,t=a.buttonProps,n=void 0===t?{}:t,o=a.styles,u=void 0===o?{}:o,s=a.customText,d=a.ButtonText,v=a.ButtonClick,p=a.Buttonclass,h=a.ButtonTwo,f=a.imgStyles,m=a.loading,g=void 0!==m&&m;return(0,c.jsxs)("section",{className:"tc animated fadeIn",style:r()(r()({},{color:"#999",margin:"100px auto",visibility:g?"hidden":"visible"}),u),children:[(0,c.jsx)("img",{src:e||l,style:r()(r()({},f),{},{pointerEvents:"none",userSelect:"none"})}),(0,c.jsx)("p",{className:"mt20 font14",children:s||"暂时还没有相关数据哦!"}),d&&(0,c.jsx)(i.ZP,r()(r()({className:p,onClick:v},n),{},{children:d})),h&&h]})}},38278:function(a,e,t){t.d(e,{Z:function(){return k}});var n=t(82242),r=t.n(n),l=t(7557),i=t.n(l),c=t(41498),o=t.n(c),u=t(79800),s=t.n(u),d=t(59301),v={wrp:"wrp___dq7YK",bgBlack:"bgBlack___ARIUV",monaco:"monaco___VnZC3",darkBlue:"darkBlue___UprA9",close:"close___LKoWu",embed:"embed___hvpEJ"},p=t(3113),h=t(38827),f=t(74479),m=t(6848),g=t(23603),x=t(52113),b=t(88820),_=t(41681),y=t(98565),w=t(37712),k=function(a){var e,t,n,l,c,u,k=a.editOffice,A=void 0===k?"view":k,j=a.data,Z=(a.theme,a.type),R=a.filename,P=a.monacoEditor,E=a.className,q=a.style,S=a.close,N=a.onClose,C=a.hasMask,I=a.disabledDownload,O=a.onImgDimensions,T=a.showNodata,D=a.recordInfo,L=(0,d.useState)("https://view.officeapps.live.com/op/view.aspx?src=http://testgs.educoder.net//rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--03541f6234b93d7ac3b2d84e7eb0e6594a952945/1.ppt"),B=s()(L,2),z=(B[0],B[1],(0,d.useState)("")),M=s()(z,2),$=(M[0],M[1]),F=(0,d.useState)(),V=s()(F,2),H=V[0],W=V[1],J="build"===window.ENV?"/react/build":"",X=location.host.startsWith("localhost")?_.Z.PROXY_SERVER:_.Z.API_SERVER,U=(0,d.useRef)();null!==(e=j)&&void 0!==e&&e.startsWith("/api")&&"txt"!==Z&&(j=_.Z.API_SERVER+j);R&&P&&(P.filename=R),(0,d.useEffect)((function(){var a,e=null===(a=document.cookie)||void 0===a||null===(a=a.replace(/\s/g,""))||void 0===a?void 0:a.split(";");null==e||e.map((function(a){var e=a.split("=");"_educoder_session"===e[0]&&$(e[1])}))}),[]),(0,d.useEffect)((function(){var a;"office"===Z&&(j.indexOf("bigfilescdn.")>-1||j.indexOf("bigfiles1")>-1?W({url:j,fileType:(a=j,a.substring(a.lastIndexOf("/")+1).split(".").pop()),model:j.indexOf("model=edit")?"edit":"view"}):G())}),[Z,j]);var G=function(){var a=o()(i()().mark((function a(){var e,t,n;return i()().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return console.log("data:",j),e=j,j.startsWith("http")||(e=location.origin+e),t=new URL(e).pathname.split("/").pop(),a.next=6,(0,x.gJ)({attachment_id:t});case 6:(n=a.sent).url=X+n.url,W(n);case 9:case"end":return a.stop()}}),a)})));return function(){return a.apply(this,arguments)}}(),K=function(){j.startsWith("http")||j.startsWith("blob:")?Q():(0,g.Sv)(R||"educoder",j,R)},Q=function(){D&&(0,y.fc)({id:null==D?void 0:D.id,watch_type:1,course_id:null==D?void 0:D.course_id}),(0,g.Nd)(R||"educoder",decodeURIComponent(j))};return(0,w.jsxs)("div",{style:r()({},q||{}),className:"".concat(C&&v.bgBlack," ").concat(Z?v.wrp:"hide"),children:[S&&(0,w.jsxs)("div",{className:v.close,ref:U,children:[!!O&&(0,w.jsx)(m.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{onClick:function(){N(),O()},children:(0,w.jsx)("i",{className:"icon-yulanpizhu"})})}),!I&&(0,w.jsx)(m.Z,{title:"点击下载此文件",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{onClick:Q,children:(0,w.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,w.jsx)(m.Z,{title:"关闭",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{className:"",onClick:N,children:(0,w.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,w.jsx)("div",{className:"".concat(v[E]," ").concat(E," ").concat(v.monaco," ").concat("txt"===Z?"show":"hide"),children:"txt"===Z&&(0,w.jsx)(w.Fragment,{children:(0,w.jsx)(f.ZP,r()({},P))})}),"audio"===Z&&(0,w.jsx)("audio",{src:"".concat((null===(t=j)||void 0===t?void 0:t.indexOf("http://"))>-1||(null===(n=j)||void 0===n?void 0:n.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(j),autoPlay:!0}),"video"===Z&&(0,w.jsx)(w.Fragment,{children:(null===(l=j)||void 0===l?void 0:l.indexOf("http"))>-1?(0,w.jsx)("video",{controls:!0,src:"".concat(j),autoPlay:!0}):(0,w.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(j),autoPlay:!0})}),"office"===Z&&H&&(0,w.jsx)("iframe",{src:"".concat(J,"/office.html?key=").concat(H.key,"&url=").concat(btoa(H.url),"&callbackUrl=").concat(X+H.callbackUrl,"&fileType=").concat(H.fileType,"&title=").concat(H.title,"&model=").concat(A,"&officeServer=").concat(_.Z.ONLYOFFICE,"&disabledDownload=").concat(!!I)}),"html"===Z&&(0,w.jsx)("iframe",{src:j+"&disposition=inline"}),"pdf"===Z&&(0,w.jsx)("iframe",{src:"".concat(J,"/js/pdfview/index.html?filename=").concat(R||"educoder.pdf","&url=").concat(encodeURIComponent(j),"&disabledDownload=").concat(!!I)}),"image"===Z&&(0,w.jsx)("img",{src:"".concat((null===(c=j)||void 0===c?void 0:c.indexOf("http://"))>-1||(null===(u=j)||void 0===u?void 0:u.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(j)}),("other"===Z||"download"===Z)&&(0,w.jsx)(w.Fragment,{children:T?(0,w.jsx)(b.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,w.jsx)(p.ZP,{icon:(0,w.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:K,disabled:I,children:"下载"})}):(0,w.jsxs)(p.ZP,{type:"primary",size:"middle",onClick:K,disabled:I,children:[(0,w.jsx)(h.Z,{}),"点击下载"]})})]})}},39937:function(a,e,t){t.d(e,{z:function(){return w}});var n=t(82242),r=t.n(n),l=t(37205),i=t.n(l),c=t(91232),o=t.n(c),u=t(79800),s=t.n(u),d=t(59301),v=(t(46650),t(55037)),p=(t(64018),t(24830)),h=t(41681),f=t(23603),m=t(15342),g=t(1012),x=t(38278),b=t(37712),_="@▁@",y=/]*>/g;var w=function(a,e){a=a||"";var t=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return e?a.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(t,(function(a,e,t,n,r,l,i){var c=e||n||l,o=t||r||i||"?";return h.Z.API_SERVER+"/api/attachments/"+c+o+"&t="+(0,f.Jn)(c,Date.now())+(a.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):a=a.replace(/(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(a,e,t,n,r,l,i){var c=e||n||l,o=t||r||i||"?";return h.Z.API_SERVER+"/attachments/download/"+c+o+"&t="+(0,f.Jn)(c,Date.now())+(a.indexOf(")")>-1?")":"&")})).replace(t,(function(a,e,t,n,r,l,i){var c=e||n||l,o=t||r||i||"?";return h.Z.API_SERVER+"/api/attachments/"+c+o+"&t="+(0,f.Jn)(c,Date.now())+(a.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(a,e,t,n,r){var l=e||n,i=t||r||"";return'"'+h.Z.API_SERVER+"/api/attachments/"+l+i+l+i+"&t="+(0,f.Jn)(l,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(a,e,t,n,r){var l=e||n,i=t||r||"";return"("+h.Z.API_SERVER+"/files/uploads/"+l+i+l+i+"&t="+(0,f.Jn)(l,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};e.Z=function(a){var e=a.value,t=void 0===e?"":e,n=a.className,l=a.showTextOnly,c=a.showLines,u=a.style,f=void 0===u?{}:u,w=a.stylesPrev,k=void 0===w?{}:w,A=a.highlightKeywords,j=a.showProgramFill,Z=(a.isProgramFill,a.disabledFill),R=void 0!==Z&&Z,P=a.programFillValue,E=a.onFillChange,q=void 0===E?function(a){}:E,S=a.onFillBlur,N=void 0===S?function(){}:S,C=a.onFillFocus,I=void 0===C?function(){}:C,O=String(t),T=(0,d.useState)(""),D=s()(T,2),L=D[0],B=D[1],z=(0,d.useState)("office"),M=s()(z,2),$=M[0],F=M[1],V=(0,d.useState)([]),H=s()(V,2),W=H[0],J=H[1],X=(0,d.useRef)("a"+(0,g.Z)()),U={};var G=function(a){return a.replace(/([\s\S]+?)<\/style>/gim,(function(a,e){var t=e.replace(/(\n|\r)/g,"").split("}"),n=[];return t.map((function(a){""!=a&&n.push(".".concat(X.current," ").concat(a))})),"")}))},K=(0,d.useMemo)((function(){try{O=O.replace(/\(\/attachments\/download\//g,"("+h.Z.API_SERVER+"/attachments/download/").replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\//g,"("+h.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+h.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+h.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(a){}if(j){var a=-1;return O=O.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(e,t,n){var r;return function(a,e,t){var n=document.createElement(a===_?"input":"textarea");n.style.width="100%",n.style.height=a===_?"40px":"151px",n.rows=5,n.spellcheck=!1,n.name="edu-program-fill",n.placeholder="请输入",n.dataset.id=e;var r=Object.keys(U).length;return U[r]=n,'')}(e,++a,null==P||null===(r=P[a])||void 0===r?void 0:r.value.replaceAll("<","<").replaceAll(">",">"))})),'
    '.concat(G(O||""),"
    ")}var e=G(O);e=(0,v.ZP)(e);var t=(0,v.ez)();O.match(/\[TOC\]/)&&(e=e.replace("

    [TOC]

    ",(0,v.Qv)()),(0,v.Iy)()),e=e.replace(/(__special_katext_id_\d+__)/g,(function(a,e){var n=t[e],r=n.type,l=n.expression;return(0,m.renderToString)(function(a){var e=document.createElement("div");return e.innerHTML=a,0===e.childNodes.length?"":e.childNodes[0].nodeValue}(l)||"",{displayMode:"block"===r,throwOnError:!1,output:"html"})})),e=e.replace(/▁/g,"▁▁▁▁▁"),(0,v.AL)();var n=document.createElement("div");return n.innerHTML=e,l?n.innerText:A?(ea(n,A.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),n.innerHTML):(setTimeout((function(){return ra()}),500),n.innerHTML)}),[O,A]);(0,d.useEffect)((function(){ta.current&&ta.current.querySelectorAll(["input","textarea"]).forEach((function(a){a.oninput=Q,a.onblur=Y,a.onfocus=aa}))}),[W]),(0,d.useEffect)((function(){if(null!=P&&P.length)try{var a,e=ta.current.querySelectorAll(".edu-program-fill-score"),t=ta.current.querySelectorAll('[name="edu-program-fill"]'),n=o()(t.entries());try{for(n.s();!(a=n.n()).done;){var r,l,i,c=s()(a.value,2),u=c[0],d=c[1];d.value=(null==P||null===(r=P[u])||void 0===r?void 0:r.value)||"","warning"===(null==P||null===(l=P[u])||void 0===l?void 0:l.type)?d.className="program-fill-warning":"success"===(null==P||null===(i=P[u])||void 0===i?void 0:i.type)?d.className="program-fill-success":d.className=""}}catch(a){n.e(a)}finally{n.f()}var v,p=o()(e.entries());try{for(p.s();!(v=p.n()).done;){var h,f,m=s()(v.value,2),g=m[0];m[1].innerHTML=null!=P&&null!==(h=P[g])&&void 0!==h&&h.score?"".concat(null==P||null===(f=P[g])||void 0===f?void 0:f.score,"分"):""}}catch(a){p.e(a)}finally{p.f()}J(P)}catch(a){console.log(a,"error")}}),[P]);var Q=function(a){W[a.target.dataset.id]=W[a.target.dataset.id]||{},W[a.target.dataset.id].value=a.target.value,J(i()(W)),q(W,a.target.dataset.id)},Y=function(a){W[a.target.dataset.id]=W[a.target.dataset.id]||{},W[a.target.dataset.id].value=a.target.value,J(i()(W)),N(W,a.target.dataset.id)},aa=function(a){W[a.target.dataset.id]=W[a.target.dataset.id]||{},W[a.target.dataset.id].value=a.target.value,J(i()(W)),I(W,a.target.dataset.id)};function ea(a,e){return a.childNodes.forEach((function(a){if(a.childNodes.length>0)ea(a,e);else if("IMG"!==a.nodeName)if(a.innerHTML){var t;a.innerHTML=null===(t=a.innerHTML)||void 0===t?void 0:t.replace(new RegExp(e,"gi"),'$&')}else{var n=document.createElement("span");n.innerHTML=a.textContent.replace(new RegExp(e,"gi"),'$&'),a.replaceWith(n)}}))}var ta=(0,d.useRef)();function na(a){var e=a.target;if("A"===e.tagName.toUpperCase()){var t=e.getAttribute("href");if(t.indexOf("office")>-1)a.preventDefault(),B(t),F("office");else if(t.indexOf("application/pdf")>-1)a.preventDefault(),B(t),F("pdf");else if(t.indexOf("text/html")>-1)a.preventDefault(),B(t),F("html");else if(t.startsWith("#")){a.preventDefault();var n=document.getElementById(t.replace("#",""));n&&n.scrollIntoView(!0)}}}v.jb.WebkitLineClamp=c,c&&(f=r()(r()({},f),v.jb));var ra=function(){var a,e=null===(a=ta.current)||void 0===a?void 0:a.querySelectorAll("video");null==e||e.forEach((function(a){if(a.oncontextmenu=function(){return!1},a.src.indexOf(".m3u8")>-1)if(a.canPlayType("application/vnd.apple.mpegurl"));else if(p.ZP.isSupported()){var e=new p.ZP;e.loadSource(a.src),e.attachMedia(a)}}))};return(0,d.useEffect)((function(){if(ta.current&&K&&K.match(y)&&window.PR.prettyPrint(),ta.current)return ta.current.addEventListener("click",na),function(){var a;null===(a=ta.current)||void 0===a||a.removeEventListener("click",na),(0,v.AL)(),(0,v.Iy)()}}),[K,ta.current,na]),(0,d.useEffect)((function(){var a,e=function(a){a.preventDefault(),a.clipboardData.setData("text",window.getSelection().toString())};return null===(a=ta.current)||void 0===a||a.addEventListener("copy",e),function(){var a;null===(a=ta.current)||void 0===a||a.removeEventListener("copy",e)}}),[ta.current]),(0,b.jsxs)(b.Fragment,{children:[l&&(0,b.jsx)("div",{ref:ta,children:K}),!l&&(0,b.jsx)("div",{ref:ta,style:r()({},f),className:"".concat(n||""," ").concat(R?"disabled-fill":""," markdown-body ").concat(X.current),dangerouslySetInnerHTML:{__html:K}}),(0,b.jsx)(x.Z,{close:!0,data:L,type:null!=L&&L.length?$:"",style:r()({},k),onClose:function(){return B("")}})]})}},55037:function(a,e,t){t.d(e,{AL:function(){return w},Iy:function(){return v},Qv:function(){return f},ez:function(){return y},jb:function(){return p}});var n=t(79800),r=t.n(n),l=t(32834),i=t.n(l),c=t(11690);var o=[],u=["
      "],s=new(i().Renderer),d=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function v(){o.length=0,u=["
        "]}var p={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function h(a,e,t,n){if(e>=a.length||a[e].level<=t)return e;var r=a[e];n.push("
      • "+r.text+"");var l=[];return e=h(a,++e,r.level,l),l.length>0&&(n.push("
          "),l.forEach((function(a){n.push(a)})),n.push("
        ")),n.push("
      • "),e=h(a,e,t,n)}function f(){return h(o,0,0,u),u.push("
      "),u.join("")}var m={heading:function(a){var e=d.exec(a);if(e)return{type:"heading",raw:e[0],depth:e[1].length,text:e[2]}},fences:function(a){var e=this.rules.block.fences.exec(a);if(e){var t=e[0],n=function(a,e){var t=a.match(/^(\s+)(?:```)/);if(null===t)return e;var n=t[1];return e.split("\n").map((function(a){var e=a.match(/^\s+/);return null===e?a:r()(e,1)[0].length>=n.length?a.slice(n.length):a})).join("\n")}(t,e[3]||""),l=e[2]?e[2].trim():e[2];if(["latex","katex","math"].indexOf(l)>=0){var i=b(),c=n;n=i,_[i]={type:"block",expression:c}}return{type:"code",raw:t,lang:l,text:n}}}},g=/(?:\${2})([^\n`]+?)(?:\${2})/gi,x=0,b=function(){return"__special_katext_id_".concat(x++,"__")},_={};function y(){return _}function w(){x=0,_={}}function k(a){return a=a.replace(g,(function(a,e){var t=b();return _[t]={type:"inline",expression:e},t}))}var A=s.listitem;s.listitem=function(a){return A(k(a))};var j=s.paragraph;s.paragraph=function(a){return j(k(a))};var Z=s.tablecell;s.tablecell=function(a,e){return Z(k(a),e)},s.code=function(a,e,t){var n=(e||"").match(/\S*/)[0];return n?["latex","katex","math"].indexOf(n)>=0?"

      ".concat(a,"

      "):'
      ').concat(t?a:(0,c.escape)(a,!0),"
      \n"):'
      '+(t?a:(0,c.escape)(a,!0))+"
      "},s.heading=function(a,e,t){var n=this.options.headerPrefix+t.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return o.push({anchor:n,level:e,text:a}),"'+a+""},i().setOptions({silent:!0,gfm:!0,pedantic:!1}),i().use({tokenizer:m,renderer:s}),e.ZP=i()},52115:function(a,e){e.Z={lists:"lists___xhHyq",item:"item___pWJAA",children:"children___sDG61",diamond:"diamond___FwgzD",button:"button___WPN6r",mathWrap:"mathWrap___FmnMJ",mathFillWrap:"mathFillWrap___PmY3H"}}}]); \ No newline at end of file diff --git a/layouts__GraduationsDetail__index.async.js b/layouts__GraduationsDetail__index.async.js index 62765b36a5..e0eef3a5d8 100644 --- a/layouts__GraduationsDetail__index.async.js +++ b/layouts__GraduationsDetail__index.async.js @@ -1 +1 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[38143],{28445:function(o,a,t){"use strict";t.d(a,{Z:function(){return T}});t(7557),t(41498);var p=t(82100),U=t.n(p),i=t(29186),K=t.n(i),e=t(13720),A=t.n(e),l=t(80619),S=t.n(l),n=t(47074),F=t.n(n),c=t(85573),R=t.n(c),r=t(59301),s=t(8591),m=t(92832),g="codeBox___WpkVl",N=t(92310),u=t.n(N),d=t(37712),k=function(o){S()(t,o);var a=F()(t);function t(o){var p;return U()(this,t),p=a.call(this,o),R()(A()(p),"canvas",void 0),R()(A()(p),"randomNum",(function(o,a){return Math.floor(Math.random()*(a-o)+o)})),R()(A()(p),"drawPic",(function(){p.randomCode()})),R()(A()(p),"reloadPic",(function(){p.drawPic()})),R()(A()(p),"changeCode",(function(o){console.log(o.target.value,222),p.setState({value:o.target.value,showError:!1})})),R()(A()(p),"onVerify",(function(){var o;return""!==p.state.value.toLowerCase()&&p.state.value.toLowerCase()!==p.state.code.toLowerCase()?(o=!0,s.ZP.error("请输入正确的验证码"),p.reloadPic()):""===p.state.value.toLowerCase()?(o=!0,s.ZP.error("请输入验证码")):p.state.value.toLowerCase()===p.state.code.toLowerCase()&&(o=!1),p.setState({showError:o}),o})),p.canvas=r.createRef(),p.state={value:"",code:"",codeLength:4,fontSizeMin:20,fontSizeMax:22,backgroundColorMin:240,backgroundColorMax:250,colorMin:10,colorMax:20,lineColorMin:40,lineColorMax:180,contentWidth:96,contentHeight:38,showError:!1},p}return K()(t,[{key:"componentDidMount",value:function(){this.drawPic()}},{key:"randomColor",value:function(o,a){var t=this.randomNum(o,a),p=this.randomNum(o,a),U=this.randomNum(o,a);return"rgb(".concat(t,", ").concat(p,", ").concat(U,")")}},{key:"drawText",value:function(o,a,t){o.fillStyle=this.randomColor(this.state.colorMin,this.state.colorMax);var p=this.randomNum(this.state.fontSizeMin,this.state.fontSizeMax);o.font=p+"px SimHei";var U=(this.state.contentWidth-40)/(this.state.code.length-1),i=10;t>0&&(i=10+t*U);var K=this.randomNum(this.state.fontSizeMax,this.state.contentHeight-5);p>40&&(K=40);var e=this.randomNum(-10,10);o.translate(i,K),o.rotate(e*Math.PI/180),o.fillText(a,0,0),o.rotate(-e*Math.PI/180),o.translate(-i,-K)}},{key:"drawLine",value:function(o){for(var a=0;a<1;a++)o.strokeStyle=this.randomColor(this.state.lineColorMin,this.state.lineColorMax),o.beginPath(),o.moveTo(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight)),o.lineTo(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight)),o.stroke()}},{key:"drawDot",value:function(o){for(var a=0;a<100;a++)o.fillStyle=this.randomColor(0,255),o.beginPath(),o.arc(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight),1,0,2*Math.PI),o.fill()}},{key:"randomCode",value:function(){for(var o=this,a="",t=0;t-1||j.indexOf("bigfiles1")>-1?I({url:j,fileType:(o=j,o.substring(o.lastIndexOf("/")+1).split(".").pop()),model:j.indexOf("model=edit")?"edit":"view"}):Z())}),[B,j]);var Z=function(){var o=A()(K()().mark((function o(){var a,t,p;return K()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return console.log("data:",j),a=j,j.startsWith("http")||(a=location.origin+a),t=new URL(a).pathname.split("/").pop(),o.next=6,(0,g.gJ)({attachment_id:t});case 6:(p=o.sent).url=y+p.url,I(p);case 9:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}(),E=function(){j.startsWith("http")||j.startsWith("blob:")?_():(0,m.Sv)(f||"educoder",j,f)},_=function(){H&&(0,d.fc)({id:null==H?void 0:H.id,watch_type:1,course_id:null==H?void 0:H.course_id}),(0,m.Nd)(f||"educoder",decodeURIComponent(j))};return(0,k.jsxs)("div",{style:U()({},Q||{}),className:"".concat(P&&F.bgBlack," ").concat(B?F.wrp:"hide"),children:[L&&(0,k.jsxs)("div",{className:F.close,ref:X,children:[!!V&&(0,k.jsx)(s.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return X.current},children:(0,k.jsx)("span",{onClick:function(){h(),V()},children:(0,k.jsx)("i",{className:"icon-yulanpizhu"})})}),!D&&(0,k.jsx)(s.Z,{title:"点击下载此文件",getPopupContainer:function(){return X.current},children:(0,k.jsx)("span",{onClick:_,children:(0,k.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,k.jsx)(s.Z,{title:"关闭",getPopupContainer:function(){return X.current},children:(0,k.jsx)("span",{className:"",onClick:h,children:(0,k.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,k.jsx)("div",{className:"".concat(F[x]," ").concat(x," ").concat(F.monaco," ").concat("txt"===B?"show":"hide"),children:"txt"===B&&(0,k.jsx)(k.Fragment,{children:(0,k.jsx)(r.ZP,U()({},C))})}),"audio"===B&&(0,k.jsx)("audio",{src:"".concat((null===(t=j)||void 0===t?void 0:t.indexOf("http://"))>-1||(null===(p=j)||void 0===p?void 0:p.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(j),autoPlay:!0}),"video"===B&&(0,k.jsx)(k.Fragment,{children:(null===(i=j)||void 0===i?void 0:i.indexOf("http"))>-1?(0,k.jsx)("video",{controls:!0,src:"".concat(j),autoPlay:!0}):(0,k.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(j),autoPlay:!0})}),"office"===B&&v&&(0,k.jsx)("iframe",{src:"".concat(z,"/office.html?key=").concat(v.key,"&url=").concat(btoa(v.url),"&callbackUrl=").concat(y+v.callbackUrl,"&fileType=").concat(v.fileType,"&title=").concat(v.title,"&model=").concat(q,"&officeServer=").concat(u.Z.ONLYOFFICE,"&disabledDownload=").concat(!!D)}),"html"===B&&(0,k.jsx)("iframe",{src:j+"&disposition=inline"}),"pdf"===B&&(0,k.jsx)("iframe",{src:"".concat(z,"/js/pdfview/index.html?filename=").concat(f||"educoder.pdf","&url=").concat(encodeURIComponent(j),"&disabledDownload=").concat(!!D)}),"image"===B&&(0,k.jsx)("img",{src:"".concat((null===(e=j)||void 0===e?void 0:e.indexOf("http://"))>-1||(null===(l=j)||void 0===l?void 0:l.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(j)}),("other"===B||"download"===B)&&(0,k.jsx)(k.Fragment,{children:w?(0,k.jsx)(N.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,k.jsx)(c.ZP,{icon:(0,k.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:E,disabled:D,children:"下载"})}):(0,k.jsxs)(c.ZP,{type:"primary",size:"middle",onClick:E,disabled:D,children:[(0,k.jsx)(R.Z,{}),"点击下载"]})})]})}},39937:function(o,a,t){"use strict";t.d(a,{z:function(){return k}});var p=t(82242),U=t.n(p),i=t(37205),K=t.n(i),e=t(91232),A=t.n(e),l=t(79800),S=t.n(l),n=t(59301),F=(t(46650),t(55037)),c=(t(64018),t(45071)),R=t(41681),r=t(23603),s=t(15342),m=t(1012),g=t(38278),N=t(37712),u="@▁@",d=/]*>/g;var k=function(o,a){o=o||"";var t=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return a?o.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(t,(function(o,a,t,p,U,i,K){var e=a||p||i,A=t||U||K||"?";return R.Z.API_SERVER+"/api/attachments/"+e+A+"&t="+(0,r.Jn)(e,Date.now())+(o.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):o=o.replace(/(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(o,a,t,p,U,i,K){var e=a||p||i,A=t||U||K||"?";return R.Z.API_SERVER+"/attachments/download/"+e+A+"&t="+(0,r.Jn)(e,Date.now())+(o.indexOf(")")>-1?")":"&")})).replace(t,(function(o,a,t,p,U,i,K){var e=a||p||i,A=t||U||K||"?";return R.Z.API_SERVER+"/api/attachments/"+e+A+"&t="+(0,r.Jn)(e,Date.now())+(o.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(o,a,t,p,U){var i=a||p,K=t||U||"";return'"'+R.Z.API_SERVER+"/api/attachments/"+i+K+i+K+"&t="+(0,r.Jn)(i,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(o,a,t,p,U){var i=a||p,K=t||U||"";return"("+R.Z.API_SERVER+"/files/uploads/"+i+K+i+K+"&t="+(0,r.Jn)(i,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};a.Z=function(o){var a=o.value,t=void 0===a?"":a,p=o.className,i=o.showTextOnly,e=o.showLines,l=o.style,r=void 0===l?{}:l,k=o.stylesPrev,T=void 0===k?{}:k,q=o.highlightKeywords,j=o.showProgramFill,B=(o.isProgramFill,o.disabledFill),f=void 0!==B&&B,C=o.programFillValue,x=o.onFillChange,Q=void 0===x?function(o){}:x,L=o.onFillBlur,h=void 0===L?function(){}:L,P=o.onFillFocus,D=void 0===P?function(){}:P,V=String(t),w=(0,n.useState)(""),H=S()(w,2),J=H[0],O=H[1],W=(0,n.useState)("office"),G=S()(W,2),M=G[0],Y=G[1],b=(0,n.useState)([]),v=S()(b,2),I=v[0],z=v[1],y=(0,n.useRef)("a"+(0,m.Z)()),X={};var Z=function(o){return o.replace(/([\s\S]+?)<\/style>/gim,(function(o,a){var t=a.replace(/(\n|\r)/g,"").split("}"),p=[];return t.map((function(o){""!=o&&p.push(".".concat(y.current," ").concat(o))})),"")}))},E=(0,n.useMemo)((function(){try{V=V.replace(/\(\/attachments\/download\//g,"("+R.Z.API_SERVER+"/attachments/download/").replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\//g,"("+R.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+R.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+R.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(o){}if(j){var o=-1;return V=V.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(a,t,p){var U;return function(o,a,t){var p=document.createElement(o===u?"input":"textarea");p.style.width="100%",p.style.height=o===u?"40px":"151px",p.rows=5,p.spellcheck=!1,p.name="edu-program-fill",p.placeholder="请输入",p.dataset.id=a;var U=Object.keys(X).length;return X[U]=p,'')}(a,++o,null==C||null===(U=C[o])||void 0===U?void 0:U.value.replaceAll("<","<").replaceAll(">",">"))})),'
      '.concat(Z(V||""),"
      ")}var a=Z(V);a=(0,F.ZP)(a);var t=(0,F.ez)();V.match(/\[TOC\]/)&&(a=a.replace("

      [TOC]

      ",(0,F.Qv)()),(0,F.Iy)()),a=a.replace(/(__special_katext_id_\d+__)/g,(function(o,a){var p=t[a],U=p.type,i=p.expression;return(0,s.renderToString)(function(o){var a=document.createElement("div");return a.innerHTML=o,0===a.childNodes.length?"":a.childNodes[0].nodeValue}(i)||"",{displayMode:"block"===U,throwOnError:!1,output:"html"})})),a=a.replace(/▁/g,"▁▁▁▁▁"),(0,F.AL)();var p=document.createElement("div");return p.innerHTML=a,i?p.innerText:q?(ao(p,q.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),p.innerHTML):(setTimeout((function(){return Uo()}),500),p.innerHTML)}),[V,q]);(0,n.useEffect)((function(){to.current&&to.current.querySelectorAll(["input","textarea"]).forEach((function(o){o.oninput=_,o.onblur=$,o.onfocus=oo}))}),[I]),(0,n.useEffect)((function(){if(null!=C&&C.length)try{var o,a=to.current.querySelectorAll(".edu-program-fill-score"),t=to.current.querySelectorAll('[name="edu-program-fill"]'),p=A()(t.entries());try{for(p.s();!(o=p.n()).done;){var U,i,K,e=S()(o.value,2),l=e[0],n=e[1];n.value=(null==C||null===(U=C[l])||void 0===U?void 0:U.value)||"","warning"===(null==C||null===(i=C[l])||void 0===i?void 0:i.type)?n.className="program-fill-warning":"success"===(null==C||null===(K=C[l])||void 0===K?void 0:K.type)?n.className="program-fill-success":n.className=""}}catch(o){p.e(o)}finally{p.f()}var F,c=A()(a.entries());try{for(c.s();!(F=c.n()).done;){var R,r,s=S()(F.value,2),m=s[0];s[1].innerHTML=null!=C&&null!==(R=C[m])&&void 0!==R&&R.score?"".concat(null==C||null===(r=C[m])||void 0===r?void 0:r.score,"分"):""}}catch(o){c.e(o)}finally{c.f()}z(C)}catch(o){console.log(o,"error")}}),[C]);var _=function(o){I[o.target.dataset.id]=I[o.target.dataset.id]||{},I[o.target.dataset.id].value=o.target.value,z(K()(I)),Q(I,o.target.dataset.id)},$=function(o){I[o.target.dataset.id]=I[o.target.dataset.id]||{},I[o.target.dataset.id].value=o.target.value,z(K()(I)),h(I,o.target.dataset.id)},oo=function(o){I[o.target.dataset.id]=I[o.target.dataset.id]||{},I[o.target.dataset.id].value=o.target.value,z(K()(I)),D(I,o.target.dataset.id)};function ao(o,a){return o.childNodes.forEach((function(o){if(o.childNodes.length>0)ao(o,a);else if("IMG"!==o.nodeName)if(o.innerHTML){var t;o.innerHTML=null===(t=o.innerHTML)||void 0===t?void 0:t.replace(new RegExp(a,"gi"),'$&')}else{var p=document.createElement("span");p.innerHTML=o.textContent.replace(new RegExp(a,"gi"),'$&'),o.replaceWith(p)}}))}var to=(0,n.useRef)();function po(o){var a=o.target;if("A"===a.tagName.toUpperCase()){var t=a.getAttribute("href");if(t.indexOf("office")>-1)o.preventDefault(),O(t),Y("office");else if(t.indexOf("application/pdf")>-1)o.preventDefault(),O(t),Y("pdf");else if(t.indexOf("text/html")>-1)o.preventDefault(),O(t),Y("html");else if(t.startsWith("#")){o.preventDefault();var p=document.getElementById(t.replace("#",""));p&&p.scrollIntoView(!0)}}}F.jb.WebkitLineClamp=e,e&&(r=U()(U()({},r),F.jb));var Uo=function(){var o,a=null===(o=to.current)||void 0===o?void 0:o.querySelectorAll("video");null==a||a.forEach((function(o){if(o.oncontextmenu=function(){return!1},o.src.indexOf(".m3u8")>-1)if(o.canPlayType("application/vnd.apple.mpegurl"));else if(c.ZP.isSupported()){var a=new c.ZP;a.loadSource(o.src),a.attachMedia(o)}}))};return(0,n.useEffect)((function(){if(to.current&&E&&E.match(d)&&window.PR.prettyPrint(),to.current)return to.current.addEventListener("click",po),function(){var o;null===(o=to.current)||void 0===o||o.removeEventListener("click",po),(0,F.AL)(),(0,F.Iy)()}}),[E,to.current,po]),(0,n.useEffect)((function(){var o,a=function(o){o.preventDefault(),o.clipboardData.setData("text",window.getSelection().toString())};return null===(o=to.current)||void 0===o||o.addEventListener("copy",a),function(){var o;null===(o=to.current)||void 0===o||o.removeEventListener("copy",a)}}),[to.current]),(0,N.jsxs)(N.Fragment,{children:[i&&(0,N.jsx)("div",{ref:to,children:E}),!i&&(0,N.jsx)("div",{ref:to,style:U()({},r),className:"".concat(p||""," ").concat(f?"disabled-fill":""," markdown-body ").concat(y.current),dangerouslySetInnerHTML:{__html:E}}),(0,N.jsx)(g.Z,{close:!0,data:J,type:null!=J&&J.length?M:"",style:U()({},T),onClose:function(){return O("")}})]})}},9654:function(o,a,t){"use strict";t.r(a),t.d(a,{default:function(){return ao}});var p=t(70236),U=t.n(p),i=t(59301),K=t(64201),e=t(44e3),A=t(95237),l=t(37205),S=t.n(l),n=t(79800),F=t.n(n),c=t(39647),R=t.n(c),r="menuWrap___jwziv",s="nav___FPm96",m="li___Fh4Pt",g="icon___XwtGk",N="name___KN1Th",u="down___CRj5d",d="active___JfaaR",k=t(6848),T=t(37712),q=["user","globalSetting","dispatch","graduations"],j=(0,K.connect)((function(o){var a=o.user,t=o.graduations;return{user:a,globalSetting:o.globalSetting,graduations:t}}))((function(o){o.user,o.globalSetting;var a=o.dispatch,t=o.graduations,p=(R()(o,q),(0,K.useLocation)()),U=(0,i.useState)(),e=F()(U,2),A=e[0],l=e[1],n=(0,i.useState)(["_settings"]),c=F()(n,2),j=c[0],B=c[1],f=(0,K.useParams)(),C=f.id,x=t.menus,Q=void 0===x?[]:x;(0,i.useEffect)((function(){if(Q.length){var o,a=(null===(o=p.pathname.split("/"))||void 0===o?void 0:o[3])||"index";l("students"==a?"teachers":a)}}),[p.pathname,Q]);var L=[{icon_type:"index",name:"毕业概览",icon:"iconfont icon-bishegailan"},{icon_type:"topics",name:"课题管理",icon:"iconfont icon-ketiguanli"},{icon_type:"student_selection",name:"学生选题",icon:"icon-xueshengxuanti1"},{icon_type:"tasks",name:"任务书",icon:"icon-renwushu"},{icon_type:"opening_report",name:"开题报告",icon:"iconfont icon-kaitibaogao"},{icon_type:"midterm_report",name:"中期检查",icon:"iconfont icon-kechengjiaoan"},{icon_type:"thesis",name:"毕业论文",icon:"iconfont icon-biyelunwen"},{icon_type:"final_defense",name:"毕业答辩",icon:"iconfont icon-biyedabian"},{icon_type:"final_thesis",name:"论文定稿",icon:"iconfont icon-lunwendinggao"},{icon_type:"archives",name:"归档",icon:"iconfont icon-guidang1"},{icon_type:"grading_summary",name:"毕业成绩",icon:"iconfont icon-bishechengji"},{icon_type:"_settings",name:"毕业设置",icon:"iconfont icon-biyeshezhi",subclass:["settings","teachers","students"]}],h=function o(t){var p,U,e=t.clazz,n=t.name,F=t.children,c=void 0===F?[]:F,R=t.disable,r=(p=e,null===(U=L.find((function(o){return o.icon_type===p})))||void 0===U?void 0:U.icon);return(0,T.jsxs)(i.Fragment,{children:[R?(0,T.jsx)(k.Z,{title:"该阶段未启用",children:(0,T.jsxs)("div",{className:m,onClick:function(){c.length&&(j.includes(e)?B(j.filter((function(o){return o!==e}))):B([].concat(S()(j),[e])))},children:[(0,T.jsx)("div",{className:g,children:r&&(0,T.jsx)("i",{className:r})}),(0,T.jsx)("span",{className:N,children:n}),!!c.length&&(0,T.jsx)("span",{className:u,children:j.includes(e)?(0,T.jsx)("i",{className:"iconfont icon-xialajiantou1"}):(0,T.jsx)("i",{className:"iconfont icon-xialajiantoubeifen"})})]})}):(0,T.jsxs)("div",{onClick:function(){c.length?j.includes(e)?B(j.filter((function(o){return o!==e}))):B([].concat(S()(j),[e])):(l(e),a({type:"graduations/getGraduationsDetails",payload:{id:null==f?void 0:f.id}}),K.history.push("/graduations/".concat(C,"/").concat(e)))},className:A===e?"".concat(m," ").concat(d):m,children:[(0,T.jsx)("div",{className:g,children:r&&(0,T.jsx)("i",{className:r})}),(0,T.jsx)("span",{className:N,children:n}),!!c.length&&(0,T.jsx)("span",{className:u,children:j.includes(e)?(0,T.jsx)("i",{className:"iconfont icon-xialajiantou1"}):(0,T.jsx)("i",{className:"iconfont icon-xialajiantoubeifen"})})]}),j.includes(e)&&c.map((function(a){return o(a)}))]},e)};return(0,T.jsx)("div",{className:r,children:(0,T.jsx)("div",{className:s,children:Q.map((function(o){return h(o)}))})})})),B=t(82242),f=t.n(B),C=t(7557),x=t.n(C),Q=t(41498),L=t.n(Q),h={flex_box_center:"flex_box_center___Zlh8i",flex_space_between:"flex_space_between___lFY3s",flex_box_vertical_center:"flex_box_vertical_center___dQs2p",flex_box_center_end:"flex_box_center_end___mh3GO",flex_box_column:"flex_box_column___fbLGv",bg:"bg___WhklA",center:"center___yiVRe",name:"name___LmNUZ",line:"line___mHXFG",member:"member___ya2z7",btn:"btn___WFeIH",bg2:"bg2___6yejb",modal:"modal___BTChh",red:"red___WFR6s",row:"row___lGy2T",label:"label___Ixyoi",content:"content___oTCar",input:"input___Q19k0",code:"code___ywBNo",copy:"copy___eV4lI"},P=t.p+"static/bg.224d6d3a.jpg",D=t(78241),V=t(43418),w=t(8591),H=t(92832),J=t(28445),O=t(14533),W=t(18838),G=t(56102),M=t(39162),Y=t(85055),b=t(38198),v=(0,K.connect)((function(o){return{graduations:o.graduations,user:o.user}}))((function(o){var a=o.graduations,t=(o.user,o.dispatch),p=(0,K.useParams)(),U=(0,K.useSearchParams)(),e=F()(U,1)[0],A=(0,i.useState)(!1),l=F()(A,2),S=l[0],n=l[1],c=(0,i.useState)(!1),R=F()(c,2),r=R[0],s=R[1],m=(0,i.useState)(!1),g=F()(m,2),N=g[0],u=g[1],d=(0,i.useState)(!1),q=F()(d,2),j=q[0],B=q[1],C=D.Z.useForm(),Q=F()(C,1)[0],v=(0,i.useRef)(null),I=a.details,z=(I.user_identity,I.code_effect_range),y=I.teachers_count,X=I.students_count,Z=function(){t({type:"graduations/getGraduationsDetails",payload:{id:null==p?void 0:p.id}})},E=function(){var o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,(0,W.ZP)("/api/graduations/detail.json",{method:"get",params:{code:e.get("code")}});case 2:0===o.sent.status&&s(!0);case 4:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}();(0,i.useEffect)((function(){e.get("code")?E():Z()}),[]);var _="".concat(window.location.origin,"/graduations/").concat(p.id,"?code=").concat(null==I?void 0:I.invite_code);return(0,T.jsxs)("div",{className:"".concat(h.bg," ").concat((0,O.tu)()?"":h.bg2),style:{background:"url('".concat((0,O.tu)()?P:"data:image/jpeg;base64,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pHYUdacKZ0p4oInuLSiko5poUdxw608egqOnrTaLmuo+koo9qImQU5OtNpyHBrV7ASikpc0VnABKKKK1AM0lFFAEisTx6U6olO2paACigGigAooooASpV6CoqkU/pSauTIkooorFoIPQKKKKEUFFFFbICZSSMmnUxCMYp9ZSWpjJahRRRVxHAKKKKs1CiiigBR1FTVBUq/drOa6kTHUtFFZmQUUUUAFFFFBtGVwooooKCiiigAooooAKcpwabRSauDRPSU1W9ad7Vi0Y2sFFFFIApKWkoKCiiigpBSUUUDCiiigA/GkpaSkQwoooqWS2FFFGe9RfUkKVWxTaWtU7jTJgwJ4oqLOOlKDzTLVTuSUlN3+1LmkyudC0UmRRkVLQmxaKKKklhSGlpDUskKKKPakIKWiigAoopaACiiigBaKSloAKWkpaACiiigBaSiigApKWkoAKSlpKlgFJRRWbExKKPej2qSWFFFLQQwooooJFopKKACiiigApKWkoAKPaiigApKWk9qACkPpQTSUAKKKSloAWgUlFA7i0UlFKwXDNJRRTEH40UUdKBXEooooAKSlptAxaKSloAKKKKAEooooAKQ9KXOKjJoJkwopKWgxCijpRQAtFFFAC0UlL7UAFFFLQAUUUVnKPUAooorMAooooAKKKKACiiigQUUUUCCiiigkKKKKCQooooAKKKKBBS0lFS43KjIWkoorNwZXOhaKSlpOLGpIKKKKRQtFFFABS0lLQAUUUUALR7UUUCFFFJS0CaCiiigSXYUGiij2qWyxaKSl9qzYBRRS1IBRRRQAUUUUALS02lzSZk4C0UUdKzkQLRRRUALmikpaACj2oooAUUUUUALRRRQAUUZpfagAooooAKWiigAooooEFFFFBLCiiighiUUe9HtQSJSUuaSgApKWkoAWikpaAClFJRSAUUUUe1QwFooo9qhgFFFLSAKKKKAFpRSClHFACil9qSloAWlpKUUAxaWkpaBIKKKKBhRRRQAUUUUAFKKSlFACilpKWgBwoFJmloIkh1FJkdaXIoM7C0UmRRkUCFooyKMigApQcdKSigB+80u80yigB+40bjTaWgLjt1OyKjp1BSk0PyDRTaX2pco/aMXilpKUVPIHtGKKWkpRS9mPnFFKKSlqXETkKKWkpRUhcWiiigEwooopMtMKKKKhoq4UUUVNmAvvS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","') no-repeat center center")},children:[(0,T.jsxs)("div",{className:h.center,children:[(0,T.jsx)(k.Z,{title:null==I?void 0:I.name,children:(0,T.jsx)("div",{className:h.name,children:null==I?void 0:I.name})}),(0,T.jsx)(M.Z,{className:"ml20",status:I.status}),(0,T.jsxs)("div",{style:{marginLeft:"auto"},children:["邀请码",3===z?(0,T.jsx)("b",{className:"ml10",children:"已停用"}):(0,T.jsx)("b",{className:"ml10",style:{color:"#FED218"},children:null==I?void 0:I.invite_code})]}),[0,1,2].includes(z)&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)("div",{className:h.line}),(0,T.jsxs)("div",{className:"current",onClick:function(){return n(!0)},children:[(0,T.jsx)("i",{style:{color:"#d8d8d8"},className:"iconfont icon-fenxiangketang font14 mr5"})," 分享毕设"]})]}),(0,O.tu)()&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)("div",{className:h.line}),(0,T.jsxs)("div",{className:"current",onClick:function(){var o;V.Z.confirm({centered:!0,okText:"确定",icon:null,width:443,cancelText:"取消",title:"删除毕业设计",content:(0,T.jsxs)("div",{children:[(0,T.jsx)("p",{children:"该操作无法撤销。删除后,毕业设计内的所有数据将被同时删除"}),(0,T.jsx)("div",{className:"mb5",children:"请输入验证码后确认删除"}),(0,T.jsx)(J.Z,{ref:function(o){return v.current=o}})]}),onOk:(o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(!v.current.onVerify()){o.next=2;break}return o.abrupt("return",Promise.reject());case 2:return o.next=4,(0,W.ZP)("/api/graduations/".concat(null==p?void 0:p.id,".json"),{method:"delete"});case 4:0===o.sent.status&&(w.ZP.success("删除成功"),K.history.push("/graduations"));case 6:case"end":return o.stop()}}),o)}))),function(){return o.apply(this,arguments)})})},children:[(0,T.jsx)("i",{style:{color:"#d8d8d8"},className:"iconfont icon-shanchu8 font14 mr5"}),"删除毕设"]})]})]}),(0,O.tu)()&&(0,T.jsxs)("div",{className:h.member,children:[(0,T.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==p?void 0:p.id,"/teachers"),children:[(0,T.jsx)("i",{className:"iconfont icon-chengyuanguanli1 mr5"}),"成员管理"]}),(0,T.jsx)("span",{className:h.line}),(0,T.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==p?void 0:p.id,"/students"),children:["学生",(0,T.jsx)("span",{className:"ml10",children:X})]}),(0,T.jsx)("span",{className:h.line}),(0,T.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==p?void 0:p.id,"/teachers"),children:["教师",(0,T.jsx)("span",{className:"ml10",children:y})]}),(0,T.jsxs)("span",{onClick:function(){B("添加老师")},style:{marginLeft:"auto"},className:h.btn,children:[(0,T.jsx)("i",{className:"iconfont icon-tianjialaoshi font14 mr5"}),"添加老师"]}),(0,T.jsx)("span",{className:h.line}),(0,T.jsxs)("span",{onClick:function(){B("添加学生")},className:h.btn,children:[(0,T.jsx)("i",{className:"iconfont icon-tianjiaxuesheng font14 mr5"}),"添加学生"]})]}),(0,T.jsx)(V.Z,{centered:!0,keyboard:!1,destroyOnClose:!0,open:S,title:"分享毕设",width:666,onCancel:function(){n(!1)},footer:null,children:(0,T.jsxs)("div",{className:h.modal,children:[1===z&&(0,T.jsx)("div",{className:h.red,children:"邀请码已对管理员禁用,用户将无法通过邀请码以管理员身份加入毕设"}),2===z&&(0,T.jsx)("div",{className:h.red,children:"邀请码和邀请链接已对学生禁用,用户将无法通过邀请码以学生身份加入毕设"}),(0,T.jsxs)("div",{className:h.row,children:[(0,T.jsx)("div",{className:h.label,children:"分享方式一"}),(0,T.jsxs)("div",{className:h.content,children:[(0,T.jsx)("div",{className:"c-black",children:"分享邀请码"}),(0,T.jsxs)("div",{className:h.input,children:[(0,T.jsx)("aside",{className:h.code,children:null==I?void 0:I.invite_code}),(0,T.jsx)(G.CopyToClipboard,{text:null==I?void 0:I.invite_code,onCopy:function(){return w.ZP.success("复制成功")},children:(0,T.jsxs)("div",{className:h.copy,children:[(0,T.jsx)("i",{className:"iconfont icon-fuzhi8 font14 mr5"}),"复制邀请码"]})})]}),(0,T.jsx)("div",{className:"font12",style:{color:"#9096A3"},children:"通过邀请码加入毕业设计时,可以选择加入毕设的身份(选择管理员(教师),需要管理员审核)"})]})]}),(0,T.jsxs)("div",{className:"".concat(h.row," mt30 mb15"),children:[(0,T.jsx)("div",{className:h.label,children:"分享方式二"}),(0,T.jsxs)("div",{className:h.content,children:[(0,T.jsx)("div",{children:"分享链接"}),(0,T.jsxs)("div",{className:h.input,children:[(0,T.jsx)("aside",{className:h.code,style:{width:440},children:_}),(0,T.jsx)(G.CopyToClipboard,{text:_,onCopy:function(){return w.ZP.success("复制成功")},children:(0,T.jsxs)("div",{className:h.copy,children:[(0,T.jsx)("i",{className:"iconfont icon-fuzhi8 font14 mr5"}),"复制链接"]})})]}),(0,T.jsx)("div",{className:"font12",style:{color:"#9096A3"},children:"通过分享链接访问毕设时,已登录用户可以直接以学生身份加入毕设,未注册/登录用户在注册/登录后可以直接加入毕设。"})]})]}),(0,T.jsx)("div",{style:{height:"15px"}})]})}),(0,T.jsx)(V.Z,{centered:!0,keyboard:!1,destroyOnClose:!0,open:r,title:"加入毕设",width:527,confirmLoading:N,onCancel:function(){K.history.replace("/graduations")},onOk:function(){return Q.submit()},children:(0,T.jsx)(D.Z,{colon:!1,form:Q,className:h.formWrap,onFinish:function(){var o=L()(x()().mark((function o(a){var t;return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return u(!0),o.next=3,(0,W.ZP)("/api/graduations/join.json",{method:"post",body:f()(f()({},a),{},{user_type:2,code:e.get("code")})});case 3:0===(t=o.sent).status&&(null!=t&&t.identifier?(w.ZP.success("加入成功"),K.history.replace("/graduations/".concat(p.id,"/index")),s(!1),Z()):(w.ZP.success(null==t?void 0:t.message),K.history.replace("/graduations"))),u(!1);case 6:case"end":return o.stop()}}),o)})));return function(a){return o.apply(this,arguments)}}(),children:(0,T.jsx)(D.Z.Item,{style:{marginBottom:0},name:"major",label:"专业",rules:[{required:!0,message:"请输入专业名称"},{max:60,message:"输入超限,请缩减字符数"},{whitespace:!0,message:"请输入专业名称"}],children:(0,T.jsx)(H.Z,{showCount:!0,maxLength:60})})})}),(0,T.jsx)(Y.Z,{open:j,onCancel:function(){return B(!1)},title:j,OnOk:function(){var o=L()(x()().mark((function o(a){var U;return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,("添加老师"==j?b.HF:b.NX)({id:p.id,user_ids:a});case 2:if(0!=o.sent.status){o.next=15;break}if(w.ZP.success("添加成功"),B(!1),t({type:"graduations/getGraduationsDetails",payload:{id:null==p?void 0:p.id}}),"添加老师"!=j||!location.pathname.includes("teachers")){o.next=10;break}return t({type:"graduations/setUpdateIndex"}),o.abrupt("return");case 10:if("添加学生"!=j||!location.pathname.includes("students")){o.next=13;break}return t({type:"graduations/setUpdateIndex"}),o.abrupt("return");case 13:U="/graduations/".concat(null==p?void 0:p.id,"/").concat("添加老师"==j?"teachers":"students"),K.history.push(U);case 15:case"end":return o.stop()}}),o)})));return function(a){return o.apply(this,arguments)}}()})]})})),I="icon___qjZkt",z="content___w0ayt",y="dot___vZgx3",X=t(39937);Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Z=t(88820),E=t(23603),_=t(41681),$=(0,K.connect)((function(o){return{graduations:o.graduations}}))((function(o){var a,t,p=o.graduations,U=o.dispatch,e=(0,K.useParams)(),l=(0,K.useLocation)(),S=(0,i.useState)(!1),n=F()(S,2),c=n[0],R=n[1],r=p.menus.find((function(o){return o.stage_url===l.pathname}))||{},s=["opening_report","midterm_report","thesis","final_defense","final_thesis","archives"].includes(null==r?void 0:r.clazz),m=function(){var o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(R(!0),null==r||!r.notice_view){o.next=3;break}return o.abrupt("return");case 3:return o.next=5,(0,W.ZP)("/api/graduations/".concat(null==e?void 0:e.id,"/graduation_stages/").concat(null==r?void 0:r.id,"/notice_view.json"),{method:"post"});case 5:0===o.sent.status&&U({type:"graduations/getGraduationsDetails",payload:{id:null==e?void 0:e.id}});case 7:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}(),g=!(null!=r&&null!==(a=r.attachments)&&void 0!==a&&a.length||null!=r&&r.description);return(0,T.jsxs)(i.Fragment,{children:[s&&(0,T.jsx)(k.Z,{title:"阶段公告/描述",placement:"bottom",children:(0,T.jsx)("div",{className:I,onClick:m,children:(0,T.jsxs)("div",{className:z,children:[(0,T.jsx)("img",{height:20,src:"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTMzOC4wNzQgMTY1Ljg4OEEzMzcuMSAzMzcuMSAwIDEgMSAyMDUuMjYgODEyLjkwMlYxOTMuMDI0YTMzNi4wMjYgMzM2LjAyNiAwIDAgMSAxMzIuODEzLTI3LjEzNnptLTIxNC41MjggNzcuMDA1djUyMC4xOTJBMzM2LjM4NCAzMzYuMzg0IDAgMCAxIC45NzMgNTAyLjk4OWMwLTEwNC43MDQgNDcuNzE4LTE5OC4yNDcgMTIyLjU3My0yNjAuMDk2eiIgZmlsbD0iI0ZGOUQxOCIvPjxwYXRoIGQ9Ik0yNDYuMTE4Ljc2OGE0MS4zNSA0MS4zNSAwIDAgMSAxNC43NDYgMi43MTRsNTMzLjMgMjA2LjU0aDE4Ny40OTRjMjIuNTI4IDAgNDAuODU3IDE4LjMzIDQwLjg1NyA0MC44NTh2NDgzLjY4NmMwIDIyLjU4LTE4LjI3OCA0MC44NTgtNDAuODU3IDQwLjg1OEg3OTQuMTEyTDI2MC44NjQgOTgyLjAxNmE0MC44NTggNDAuODU4IDAgMCAxLTU1LjYwMy0zOC4wOTNWNDEuNjI2YzAtMjIuNTggMTguMjc4LTQwLjkxIDQwLjg1Ny00MC45MXptNTYwLjUzOCAzMjQuMTQ3aC01Ny4yNDJhMTIuMjg4IDEyLjI4OCAwIDAgMC0xMi4yODggMTIuMjg4VjYzOS41OWMwIDYuNzU5IDUuNTMgMTIuMjg4IDEyLjI4OCAxMi4yODhoNTcuMjQyYTEyLjI4OCAxMi4yODggMCAwIDAgMTIuMjM3LTEyLjI4OFYzMzcuMjAzYTEyLjI4OCAxMi4yODggMCAwIDAtMTIuMjg4LTEyLjI4OHoiIGZpbGw9IiM3MzlFRkYiLz48L3N2Zz4="}),!(null!=r&&r.notice_view)&&(0,T.jsx)("div",{className:y})]})})}),(0,T.jsx)(V.Z,{centered:!0,destroyOnClose:!0,onCancel:function(){return R(!1)},onOk:function(){return R(!1)},open:c,title:"阶段公告/描述",width:990,cancelButtonProps:{style:{display:"none"}},okText:"我知道了",children:g?(0,T.jsx)(Z.Z,{}):(0,T.jsxs)("div",{style:{maxHeight:500},children:[(0,T.jsx)(X.Z,{className:"mb25",value:(null==r?void 0:r.description)||""}),null==r||null===(t=r.attachments)||void 0===t?void 0:t.map((function(o){return(0,T.jsx)(A.Z,{className:"mt4",align:"middle",children:(0,T.jsxs)("div",{style:{color:"#3061D0"},className:"current c-light-primary",onClick:function(){var a;(0,E.Nd)("","".concat(_.Z.API_SERVER).concat(null==o||null===(a=o.url)||void 0===a?void 0:a.replace("disposition=inline","")))},children:[(0,T.jsx)("i",{className:"iconfont icon-wenjian7 font14 mr5"}),(0,E.tP)(o.title,62)]})},o.id)}))]})})]})})),oo=e.Z.Content,ao=function(o){return U()(o),(0,T.jsxs)("div",{className:"bg-white",children:[(0,T.jsx)(v,{}),(0,T.jsxs)(A.Z,{className:"edu-container",wrap:!1,children:[(0,T.jsx)(j,{}),(0,T.jsxs)(oo,{style:{flex:1,width:0,position:"relative"},children:[(0,T.jsx)($,{}),(0,T.jsx)(K.Outlet,{})]})]})]})}},39162:function(o,a,t){"use strict";t.d(a,{Z:function(){return A}});var p=t(59301),U="tag___NEywM",i=t(92310),K=t.n(i),e=t(37712),A=function(o){var a=o.className,t=o.status;return(0,e.jsxs)(p.Fragment,{children:[0===t&&(0,e.jsx)("div",{className:K()(U,a),children:"未开始"}),1===t&&(0,e.jsx)("div",{className:K()(U,a),style:{background:"#19CB70"},children:"进行中"}),2===t&&(0,e.jsx)("div",{className:K()(U,a),style:{background:"#EE5D5D"},children:"已结束"})]})}},55037:function(o,a,t){"use strict";t.d(a,{AL:function(){return k},Iy:function(){return F},Qv:function(){return r},ez:function(){return d},jb:function(){return c}});var p=t(79800),U=t.n(p),i=t(32834),K=t.n(i),e=t(11690);var A=[],l=["
        "],S=new(K().Renderer),n=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function F(){A.length=0,l=["
          "]}var c={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function R(o,a,t,p){if(a>=o.length||o[a].level<=t)return a;var U=o[a];p.push("
        • "+U.text+"");var i=[];return a=R(o,++a,U.level,i),i.length>0&&(p.push("
            "),i.forEach((function(o){p.push(o)})),p.push("
          ")),p.push("
        • "),a=R(o,a,t,p)}function r(){return R(A,0,0,l),l.push("
        "),l.join("")}var s={heading:function(o){var a=n.exec(o);if(a)return{type:"heading",raw:a[0],depth:a[1].length,text:a[2]}},fences:function(o){var a=this.rules.block.fences.exec(o);if(a){var t=a[0],p=function(o,a){var t=o.match(/^(\s+)(?:```)/);if(null===t)return a;var p=t[1];return a.split("\n").map((function(o){var a=o.match(/^\s+/);return null===a?o:U()(a,1)[0].length>=p.length?o.slice(p.length):o})).join("\n")}(t,a[3]||""),i=a[2]?a[2].trim():a[2];if(["latex","katex","math"].indexOf(i)>=0){var K=N(),e=p;p=K,u[K]={type:"block",expression:e}}return{type:"code",raw:t,lang:i,text:p}}}},m=/(?:\${2})([^\n`]+?)(?:\${2})/gi,g=0,N=function(){return"__special_katext_id_".concat(g++,"__")},u={};function d(){return u}function k(){g=0,u={}}function T(o){return o=o.replace(m,(function(o,a){var t=N();return u[t]={type:"inline",expression:a},t}))}var q=S.listitem;S.listitem=function(o){return q(T(o))};var j=S.paragraph;S.paragraph=function(o){return j(T(o))};var B=S.tablecell;S.tablecell=function(o,a){return B(T(o),a)},S.code=function(o,a,t){var p=(a||"").match(/\S*/)[0];return p?["latex","katex","math"].indexOf(p)>=0?"

        ".concat(o,"

        "):'
        ').concat(t?o:(0,e.escape)(o,!0),"
        \n"):'
        '+(t?o:(0,e.escape)(o,!0))+"
        "},S.heading=function(o,a,t){var p=this.options.headerPrefix+t.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return A.push({anchor:p,level:a,text:o}),"'+o+""},K().setOptions({silent:!0,gfm:!0,pedantic:!1}),K().use({tokenizer:s,renderer:S}),a.ZP=K()},44e3:function(o,a,t){"use strict";var p=t(84966),U=t(23088);const i=p.ZP;i.Header=p.h4,i.Footer=p.$_,i.Content=p.VY,i.Sider=U.Z,a.Z=i},25769:function(o,a,t){"use strict";var p=t(98040),U={"text/plain":"Text","text/html":"Url",default:"Text"};o.exports=function(o,a){var t,i,K,e,A,l,S=!1;a||(a={}),t=a.debug||!1;try{if(K=p(),e=document.createRange(),A=document.getSelection(),(l=document.createElement("span")).textContent=o,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(p){if(p.stopPropagation(),a.format)if(p.preventDefault(),void 0===p.clipboardData){t&&console.warn("unable to use e.clipboardData"),t&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=U[a.format]||U.default;window.clipboardData.setData(i,o)}else p.clipboardData.clearData(),p.clipboardData.setData(a.format,o);a.onCopy&&(p.preventDefault(),a.onCopy(p.clipboardData))})),document.body.appendChild(l),e.selectNodeContents(l),A.addRange(e),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");S=!0}catch(p){t&&console.error("unable to copy using execCommand: ",p),t&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(a.format||"text",o),a.onCopy&&a.onCopy(window.clipboardData),S=!0}catch(p){t&&console.error("unable to copy using clipboardData: ",p),t&&console.error("falling back to prompt"),i=function(o){var a=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return o.replace(/#{\s*key\s*}/g,a)}("message"in a?a.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,o)}}finally{A&&("function"==typeof A.removeRange?A.removeRange(e):A.removeAllRanges()),l&&document.body.removeChild(l),K()}return S}},83145:function(o,a,t){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.CopyToClipboard=void 0;var p=i(t(59301)),U=i(t(25769));function i(o){return o&&o.__esModule?o:{default:o}}function K(o){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},K(o)}function e(o,a){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(o);a&&(p=p.filter((function(a){return Object.getOwnPropertyDescriptor(o,a).enumerable}))),t.push.apply(t,p)}return t}function A(o,a){if(null==o)return{};var t,p,U=function(o,a){if(null==o)return{};var t,p,U={},i=Object.keys(o);for(p=0;p=0||(U[t]=o[t]);return U}(o,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(o);for(p=0;p=0||Object.prototype.propertyIsEnumerable.call(o,t)&&(U[t]=o[t])}return U}function l(o,a){if(!(o instanceof a))throw new TypeError("Cannot call a class as a function")}function S(o,a){for(var t=0;t0&&(i=10+t*U);var K=this.randomNum(this.state.fontSizeMax,this.state.contentHeight-5);p>40&&(K=40);var e=this.randomNum(-10,10);o.translate(i,K),o.rotate(e*Math.PI/180),o.fillText(a,0,0),o.rotate(-e*Math.PI/180),o.translate(-i,-K)}},{key:"drawLine",value:function(o){for(var a=0;a<1;a++)o.strokeStyle=this.randomColor(this.state.lineColorMin,this.state.lineColorMax),o.beginPath(),o.moveTo(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight)),o.lineTo(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight)),o.stroke()}},{key:"drawDot",value:function(o){for(var a=0;a<100;a++)o.fillStyle=this.randomColor(0,255),o.beginPath(),o.arc(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight),1,0,2*Math.PI),o.fill()}},{key:"randomCode",value:function(){for(var o=this,a="",t=0;t-1||j.indexOf("bigfiles1")>-1?I({url:j,fileType:(o=j,o.substring(o.lastIndexOf("/")+1).split(".").pop()),model:j.indexOf("model=edit")?"edit":"view"}):Z())}),[B,j]);var Z=function(){var o=A()(K()().mark((function o(){var a,t,p;return K()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return console.log("data:",j),a=j,j.startsWith("http")||(a=location.origin+a),t=new URL(a).pathname.split("/").pop(),o.next=6,(0,g.gJ)({attachment_id:t});case 6:(p=o.sent).url=y+p.url,I(p);case 9:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}(),E=function(){j.startsWith("http")||j.startsWith("blob:")?_():(0,m.Sv)(f||"educoder",j,f)},_=function(){H&&(0,d.fc)({id:null==H?void 0:H.id,watch_type:1,course_id:null==H?void 0:H.course_id}),(0,m.Nd)(f||"educoder",decodeURIComponent(j))};return(0,k.jsxs)("div",{style:U()({},Q||{}),className:"".concat(P&&F.bgBlack," ").concat(B?F.wrp:"hide"),children:[L&&(0,k.jsxs)("div",{className:F.close,ref:X,children:[!!V&&(0,k.jsx)(s.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return X.current},children:(0,k.jsx)("span",{onClick:function(){h(),V()},children:(0,k.jsx)("i",{className:"icon-yulanpizhu"})})}),!D&&(0,k.jsx)(s.Z,{title:"点击下载此文件",getPopupContainer:function(){return X.current},children:(0,k.jsx)("span",{onClick:_,children:(0,k.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,k.jsx)(s.Z,{title:"关闭",getPopupContainer:function(){return X.current},children:(0,k.jsx)("span",{className:"",onClick:h,children:(0,k.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,k.jsx)("div",{className:"".concat(F[x]," ").concat(x," ").concat(F.monaco," ").concat("txt"===B?"show":"hide"),children:"txt"===B&&(0,k.jsx)(k.Fragment,{children:(0,k.jsx)(r.ZP,U()({},C))})}),"audio"===B&&(0,k.jsx)("audio",{src:"".concat((null===(t=j)||void 0===t?void 0:t.indexOf("http://"))>-1||(null===(p=j)||void 0===p?void 0:p.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(j),autoPlay:!0}),"video"===B&&(0,k.jsx)(k.Fragment,{children:(null===(i=j)||void 0===i?void 0:i.indexOf("http"))>-1?(0,k.jsx)("video",{controls:!0,src:"".concat(j),autoPlay:!0}):(0,k.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(j),autoPlay:!0})}),"office"===B&&v&&(0,k.jsx)("iframe",{src:"".concat(z,"/office.html?key=").concat(v.key,"&url=").concat(btoa(v.url),"&callbackUrl=").concat(y+v.callbackUrl,"&fileType=").concat(v.fileType,"&title=").concat(v.title,"&model=").concat(q,"&officeServer=").concat(u.Z.ONLYOFFICE,"&disabledDownload=").concat(!!D)}),"html"===B&&(0,k.jsx)("iframe",{src:j+"&disposition=inline"}),"pdf"===B&&(0,k.jsx)("iframe",{src:"".concat(z,"/js/pdfview/index.html?filename=").concat(f||"educoder.pdf","&url=").concat(encodeURIComponent(j),"&disabledDownload=").concat(!!D)}),"image"===B&&(0,k.jsx)("img",{src:"".concat((null===(e=j)||void 0===e?void 0:e.indexOf("http://"))>-1||(null===(l=j)||void 0===l?void 0:l.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(j)}),("other"===B||"download"===B)&&(0,k.jsx)(k.Fragment,{children:w?(0,k.jsx)(N.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,k.jsx)(c.ZP,{icon:(0,k.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:E,disabled:D,children:"下载"})}):(0,k.jsxs)(c.ZP,{type:"primary",size:"middle",onClick:E,disabled:D,children:[(0,k.jsx)(R.Z,{}),"点击下载"]})})]})}},39937:function(o,a,t){"use strict";t.d(a,{z:function(){return k}});var p=t(82242),U=t.n(p),i=t(37205),K=t.n(i),e=t(91232),A=t.n(e),l=t(79800),S=t.n(l),n=t(59301),F=(t(46650),t(55037)),c=(t(64018),t(24830)),R=t(41681),r=t(23603),s=t(15342),m=t(1012),g=t(38278),N=t(37712),u="@▁@",d=/]*>/g;var k=function(o,a){o=o||"";var t=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return a?o.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(t,(function(o,a,t,p,U,i,K){var e=a||p||i,A=t||U||K||"?";return R.Z.API_SERVER+"/api/attachments/"+e+A+"&t="+(0,r.Jn)(e,Date.now())+(o.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):o=o.replace(/(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(o,a,t,p,U,i,K){var e=a||p||i,A=t||U||K||"?";return R.Z.API_SERVER+"/attachments/download/"+e+A+"&t="+(0,r.Jn)(e,Date.now())+(o.indexOf(")")>-1?")":"&")})).replace(t,(function(o,a,t,p,U,i,K){var e=a||p||i,A=t||U||K||"?";return R.Z.API_SERVER+"/api/attachments/"+e+A+"&t="+(0,r.Jn)(e,Date.now())+(o.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(o,a,t,p,U){var i=a||p,K=t||U||"";return'"'+R.Z.API_SERVER+"/api/attachments/"+i+K+i+K+"&t="+(0,r.Jn)(i,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(o,a,t,p,U){var i=a||p,K=t||U||"";return"("+R.Z.API_SERVER+"/files/uploads/"+i+K+i+K+"&t="+(0,r.Jn)(i,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};a.Z=function(o){var a=o.value,t=void 0===a?"":a,p=o.className,i=o.showTextOnly,e=o.showLines,l=o.style,r=void 0===l?{}:l,k=o.stylesPrev,T=void 0===k?{}:k,q=o.highlightKeywords,j=o.showProgramFill,B=(o.isProgramFill,o.disabledFill),f=void 0!==B&&B,C=o.programFillValue,x=o.onFillChange,Q=void 0===x?function(o){}:x,L=o.onFillBlur,h=void 0===L?function(){}:L,P=o.onFillFocus,D=void 0===P?function(){}:P,V=String(t),w=(0,n.useState)(""),H=S()(w,2),J=H[0],O=H[1],W=(0,n.useState)("office"),G=S()(W,2),M=G[0],Y=G[1],b=(0,n.useState)([]),v=S()(b,2),I=v[0],z=v[1],y=(0,n.useRef)("a"+(0,m.Z)()),X={};var Z=function(o){return o.replace(/([\s\S]+?)<\/style>/gim,(function(o,a){var t=a.replace(/(\n|\r)/g,"").split("}"),p=[];return t.map((function(o){""!=o&&p.push(".".concat(y.current," ").concat(o))})),"")}))},E=(0,n.useMemo)((function(){try{V=V.replace(/\(\/attachments\/download\//g,"("+R.Z.API_SERVER+"/attachments/download/").replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\//g,"("+R.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+R.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+R.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(o){}if(j){var o=-1;return V=V.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(a,t,p){var U;return function(o,a,t){var p=document.createElement(o===u?"input":"textarea");p.style.width="100%",p.style.height=o===u?"40px":"151px",p.rows=5,p.spellcheck=!1,p.name="edu-program-fill",p.placeholder="请输入",p.dataset.id=a;var U=Object.keys(X).length;return X[U]=p,'')}(a,++o,null==C||null===(U=C[o])||void 0===U?void 0:U.value.replaceAll("<","<").replaceAll(">",">"))})),'
        '.concat(Z(V||""),"
        ")}var a=Z(V);a=(0,F.ZP)(a);var t=(0,F.ez)();V.match(/\[TOC\]/)&&(a=a.replace("

        [TOC]

        ",(0,F.Qv)()),(0,F.Iy)()),a=a.replace(/(__special_katext_id_\d+__)/g,(function(o,a){var p=t[a],U=p.type,i=p.expression;return(0,s.renderToString)(function(o){var a=document.createElement("div");return a.innerHTML=o,0===a.childNodes.length?"":a.childNodes[0].nodeValue}(i)||"",{displayMode:"block"===U,throwOnError:!1,output:"html"})})),a=a.replace(/▁/g,"▁▁▁▁▁"),(0,F.AL)();var p=document.createElement("div");return p.innerHTML=a,i?p.innerText:q?(ao(p,q.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),p.innerHTML):(setTimeout((function(){return Uo()}),500),p.innerHTML)}),[V,q]);(0,n.useEffect)((function(){to.current&&to.current.querySelectorAll(["input","textarea"]).forEach((function(o){o.oninput=_,o.onblur=$,o.onfocus=oo}))}),[I]),(0,n.useEffect)((function(){if(null!=C&&C.length)try{var o,a=to.current.querySelectorAll(".edu-program-fill-score"),t=to.current.querySelectorAll('[name="edu-program-fill"]'),p=A()(t.entries());try{for(p.s();!(o=p.n()).done;){var U,i,K,e=S()(o.value,2),l=e[0],n=e[1];n.value=(null==C||null===(U=C[l])||void 0===U?void 0:U.value)||"","warning"===(null==C||null===(i=C[l])||void 0===i?void 0:i.type)?n.className="program-fill-warning":"success"===(null==C||null===(K=C[l])||void 0===K?void 0:K.type)?n.className="program-fill-success":n.className=""}}catch(o){p.e(o)}finally{p.f()}var F,c=A()(a.entries());try{for(c.s();!(F=c.n()).done;){var R,r,s=S()(F.value,2),m=s[0];s[1].innerHTML=null!=C&&null!==(R=C[m])&&void 0!==R&&R.score?"".concat(null==C||null===(r=C[m])||void 0===r?void 0:r.score,"分"):""}}catch(o){c.e(o)}finally{c.f()}z(C)}catch(o){console.log(o,"error")}}),[C]);var _=function(o){I[o.target.dataset.id]=I[o.target.dataset.id]||{},I[o.target.dataset.id].value=o.target.value,z(K()(I)),Q(I,o.target.dataset.id)},$=function(o){I[o.target.dataset.id]=I[o.target.dataset.id]||{},I[o.target.dataset.id].value=o.target.value,z(K()(I)),h(I,o.target.dataset.id)},oo=function(o){I[o.target.dataset.id]=I[o.target.dataset.id]||{},I[o.target.dataset.id].value=o.target.value,z(K()(I)),D(I,o.target.dataset.id)};function ao(o,a){return o.childNodes.forEach((function(o){if(o.childNodes.length>0)ao(o,a);else if("IMG"!==o.nodeName)if(o.innerHTML){var t;o.innerHTML=null===(t=o.innerHTML)||void 0===t?void 0:t.replace(new RegExp(a,"gi"),'$&')}else{var p=document.createElement("span");p.innerHTML=o.textContent.replace(new RegExp(a,"gi"),'$&'),o.replaceWith(p)}}))}var to=(0,n.useRef)();function po(o){var a=o.target;if("A"===a.tagName.toUpperCase()){var t=a.getAttribute("href");if(t.indexOf("office")>-1)o.preventDefault(),O(t),Y("office");else if(t.indexOf("application/pdf")>-1)o.preventDefault(),O(t),Y("pdf");else if(t.indexOf("text/html")>-1)o.preventDefault(),O(t),Y("html");else if(t.startsWith("#")){o.preventDefault();var p=document.getElementById(t.replace("#",""));p&&p.scrollIntoView(!0)}}}F.jb.WebkitLineClamp=e,e&&(r=U()(U()({},r),F.jb));var Uo=function(){var o,a=null===(o=to.current)||void 0===o?void 0:o.querySelectorAll("video");null==a||a.forEach((function(o){if(o.oncontextmenu=function(){return!1},o.src.indexOf(".m3u8")>-1)if(o.canPlayType("application/vnd.apple.mpegurl"));else if(c.ZP.isSupported()){var a=new c.ZP;a.loadSource(o.src),a.attachMedia(o)}}))};return(0,n.useEffect)((function(){if(to.current&&E&&E.match(d)&&window.PR.prettyPrint(),to.current)return to.current.addEventListener("click",po),function(){var o;null===(o=to.current)||void 0===o||o.removeEventListener("click",po),(0,F.AL)(),(0,F.Iy)()}}),[E,to.current,po]),(0,n.useEffect)((function(){var o,a=function(o){o.preventDefault(),o.clipboardData.setData("text",window.getSelection().toString())};return null===(o=to.current)||void 0===o||o.addEventListener("copy",a),function(){var o;null===(o=to.current)||void 0===o||o.removeEventListener("copy",a)}}),[to.current]),(0,N.jsxs)(N.Fragment,{children:[i&&(0,N.jsx)("div",{ref:to,children:E}),!i&&(0,N.jsx)("div",{ref:to,style:U()({},r),className:"".concat(p||""," ").concat(f?"disabled-fill":""," markdown-body ").concat(y.current),dangerouslySetInnerHTML:{__html:E}}),(0,N.jsx)(g.Z,{close:!0,data:J,type:null!=J&&J.length?M:"",style:U()({},T),onClose:function(){return O("")}})]})}},9654:function(o,a,t){"use strict";t.r(a),t.d(a,{default:function(){return ao}});var p=t(70236),U=t.n(p),i=t(59301),K=t(64201),e=t(44e3),A=t(95237),l=t(37205),S=t.n(l),n=t(79800),F=t.n(n),c=t(39647),R=t.n(c),r="menuWrap___jwziv",s="nav___FPm96",m="li___Fh4Pt",g="icon___XwtGk",N="name___KN1Th",u="down___CRj5d",d="active___JfaaR",k=t(6848),T=t(37712),q=["user","globalSetting","dispatch","graduations"],j=(0,K.connect)((function(o){var a=o.user,t=o.graduations;return{user:a,globalSetting:o.globalSetting,graduations:t}}))((function(o){o.user,o.globalSetting;var a=o.dispatch,t=o.graduations,p=(R()(o,q),(0,K.useLocation)()),U=(0,i.useState)(),e=F()(U,2),A=e[0],l=e[1],n=(0,i.useState)(["_settings"]),c=F()(n,2),j=c[0],B=c[1],f=(0,K.useParams)(),C=f.id,x=t.menus,Q=void 0===x?[]:x;(0,i.useEffect)((function(){if(Q.length){var o,a=(null===(o=p.pathname.split("/"))||void 0===o?void 0:o[3])||"index";l("students"==a?"teachers":a)}}),[p.pathname,Q]);var L=[{icon_type:"index",name:"毕业概览",icon:"iconfont icon-bishegailan"},{icon_type:"topics",name:"课题管理",icon:"iconfont icon-ketiguanli"},{icon_type:"student_selection",name:"学生选题",icon:"icon-xueshengxuanti1"},{icon_type:"tasks",name:"任务书",icon:"icon-renwushu"},{icon_type:"opening_report",name:"开题报告",icon:"iconfont icon-kaitibaogao"},{icon_type:"midterm_report",name:"中期检查",icon:"iconfont icon-kechengjiaoan"},{icon_type:"thesis",name:"毕业论文",icon:"iconfont icon-biyelunwen"},{icon_type:"final_defense",name:"毕业答辩",icon:"iconfont icon-biyedabian"},{icon_type:"final_thesis",name:"论文定稿",icon:"iconfont icon-lunwendinggao"},{icon_type:"archives",name:"归档",icon:"iconfont icon-guidang1"},{icon_type:"grading_summary",name:"毕业成绩",icon:"iconfont icon-bishechengji"},{icon_type:"_settings",name:"毕业设置",icon:"iconfont icon-biyeshezhi",subclass:["settings","teachers","students"]}],h=function o(t){var p,U,e=t.clazz,n=t.name,F=t.children,c=void 0===F?[]:F,R=t.disable,r=(p=e,null===(U=L.find((function(o){return o.icon_type===p})))||void 0===U?void 0:U.icon);return(0,T.jsxs)(i.Fragment,{children:[R?(0,T.jsx)(k.Z,{title:"该阶段未启用",children:(0,T.jsxs)("div",{className:m,onClick:function(){c.length&&(j.includes(e)?B(j.filter((function(o){return o!==e}))):B([].concat(S()(j),[e])))},children:[(0,T.jsx)("div",{className:g,children:r&&(0,T.jsx)("i",{className:r})}),(0,T.jsx)("span",{className:N,children:n}),!!c.length&&(0,T.jsx)("span",{className:u,children:j.includes(e)?(0,T.jsx)("i",{className:"iconfont icon-xialajiantou1"}):(0,T.jsx)("i",{className:"iconfont icon-xialajiantoubeifen"})})]})}):(0,T.jsxs)("div",{onClick:function(){c.length?j.includes(e)?B(j.filter((function(o){return o!==e}))):B([].concat(S()(j),[e])):(l(e),a({type:"graduations/getGraduationsDetails",payload:{id:null==f?void 0:f.id}}),K.history.push("/graduations/".concat(C,"/").concat(e)))},className:A===e?"".concat(m," ").concat(d):m,children:[(0,T.jsx)("div",{className:g,children:r&&(0,T.jsx)("i",{className:r})}),(0,T.jsx)("span",{className:N,children:n}),!!c.length&&(0,T.jsx)("span",{className:u,children:j.includes(e)?(0,T.jsx)("i",{className:"iconfont icon-xialajiantou1"}):(0,T.jsx)("i",{className:"iconfont icon-xialajiantoubeifen"})})]}),j.includes(e)&&c.map((function(a){return o(a)}))]},e)};return(0,T.jsx)("div",{className:r,children:(0,T.jsx)("div",{className:s,children:Q.map((function(o){return h(o)}))})})})),B=t(82242),f=t.n(B),C=t(7557),x=t.n(C),Q=t(41498),L=t.n(Q),h={flex_box_center:"flex_box_center___Zlh8i",flex_space_between:"flex_space_between___lFY3s",flex_box_vertical_center:"flex_box_vertical_center___dQs2p",flex_box_center_end:"flex_box_center_end___mh3GO",flex_box_column:"flex_box_column___fbLGv",bg:"bg___WhklA",center:"center___yiVRe",name:"name___LmNUZ",line:"line___mHXFG",member:"member___ya2z7",btn:"btn___WFeIH",bg2:"bg2___6yejb",modal:"modal___BTChh",red:"red___WFR6s",row:"row___lGy2T",label:"label___Ixyoi",content:"content___oTCar",input:"input___Q19k0",code:"code___ywBNo",copy:"copy___eV4lI"},P=t.p+"static/bg.224d6d3a.jpg",D=t(78241),V=t(43418),w=t(8591),H=t(92832),J=t(28445),O=t(14533),W=t(18838),G=t(56102),M=t(39162),Y=t(85055),b=t(38198),v=(0,K.connect)((function(o){return{graduations:o.graduations,user:o.user}}))((function(o){var a=o.graduations,t=(o.user,o.dispatch),p=(0,K.useParams)(),U=(0,K.useSearchParams)(),e=F()(U,1)[0],A=(0,i.useState)(!1),l=F()(A,2),S=l[0],n=l[1],c=(0,i.useState)(!1),R=F()(c,2),r=R[0],s=R[1],m=(0,i.useState)(!1),g=F()(m,2),N=g[0],u=g[1],d=(0,i.useState)(!1),q=F()(d,2),j=q[0],B=q[1],C=D.Z.useForm(),Q=F()(C,1)[0],v=(0,i.useRef)(null),I=a.details,z=(I.user_identity,I.code_effect_range),y=I.teachers_count,X=I.students_count,Z=function(){t({type:"graduations/getGraduationsDetails",payload:{id:null==p?void 0:p.id}})},E=function(){var o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,(0,W.ZP)("/api/graduations/detail.json",{method:"get",params:{code:e.get("code")}});case 2:0===o.sent.status&&s(!0);case 4:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}();(0,i.useEffect)((function(){e.get("code")?E():Z()}),[]);var _="".concat(window.location.origin,"/graduations/").concat(p.id,"?code=").concat(null==I?void 0:I.invite_code);return(0,T.jsxs)("div",{className:"".concat(h.bg," ").concat((0,O.tu)()?"":h.bg2),style:{background:"url('".concat((0,O.tu)()?P:"data:image/jpeg;base64,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pHYUdacKZ0p4oInuLSiko5poUdxw608egqOnrTaLmuo+koo9qImQU5OtNpyHBrV7ASikpc0VnABKKKK1AM0lFFAEisTx6U6olO2paACigGigAooooASpV6CoqkU/pSauTIkooorFoIPQKKKKEUFFFFbICZSSMmnUxCMYp9ZSWpjJahRRRVxHAKKKKs1CiiigBR1FTVBUq/drOa6kTHUtFFZmQUUUUAFFFFBtGVwooooKCiiigAooooAKcpwabRSauDRPSU1W9ad7Vi0Y2sFFFFIApKWkoKCiiigpBSUUUDCiiigA/GkpaSkQwoooqWS2FFFGe9RfUkKVWxTaWtU7jTJgwJ4oqLOOlKDzTLVTuSUlN3+1LmkyudC0UmRRkVLQmxaKKKklhSGlpDUskKKKPakIKWiigAoopaACiiigBaKSloAKWkpaACiiigBaSiigApKWkoAKSlpKlgFJRRWbExKKPej2qSWFFFLQQwooooJFopKKACiiigApKWkoAKPaiigApKWk9qACkPpQTSUAKKKSloAWgUlFA7i0UlFKwXDNJRRTEH40UUdKBXEooooAKSlptAxaKSloAKKKKAEooooAKQ9KXOKjJoJkwopKWgxCijpRQAtFFFAC0UlL7UAFFFLQAUUUVnKPUAooorMAooooAKKKKACiiigQUUUUCCiiigkKKKKCQooooAKKKKBBS0lFS43KjIWkoorNwZXOhaKSlpOLGpIKKKKRQtFFFABS0lLQAUUUUALR7UUUCFFFJS0CaCiiigSXYUGiij2qWyxaKSl9qzYBRRS1IBRRRQAUUUUALS02lzSZk4C0UUdKzkQLRRRUALmikpaACj2oooAUUUUUALRRRQAUUZpfagAooooAKWiigAooooEFFFFBLCiiighiUUe9HtQSJSUuaSgApKWkoAWikpaAClFJRSAUUUUe1QwFooo9qhgFFFLSAKKKKAFpRSClHFACil9qSloAWlpKUUAxaWkpaBIKKKKBhRRRQAUUUUAFKKSlFACilpKWgBwoFJmloIkh1FJkdaXIoM7C0UmRRkUCFooyKMigApQcdKSigB+80u80yigB+40bjTaWgLjt1OyKjp1BSk0PyDRTaX2pco/aMXilpKUVPIHtGKKWkpRS9mPnFFKKSlqXETkKKWkpRUhcWiiigEwooopMtMKKKKhoq4UUUVNmAvvS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","') no-repeat center center")},children:[(0,T.jsxs)("div",{className:h.center,children:[(0,T.jsx)(k.Z,{title:null==I?void 0:I.name,children:(0,T.jsx)("div",{className:h.name,children:null==I?void 0:I.name})}),(0,T.jsx)(M.Z,{className:"ml20",status:I.status}),(0,T.jsxs)("div",{style:{marginLeft:"auto"},children:["邀请码",3===z?(0,T.jsx)("b",{className:"ml10",children:"已停用"}):(0,T.jsx)("b",{className:"ml10",style:{color:"#FED218"},children:null==I?void 0:I.invite_code})]}),[0,1,2].includes(z)&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)("div",{className:h.line}),(0,T.jsxs)("div",{className:"current",onClick:function(){return n(!0)},children:[(0,T.jsx)("i",{style:{color:"#d8d8d8"},className:"iconfont icon-fenxiangketang font14 mr5"})," 分享毕设"]})]}),(0,O.tu)()&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)("div",{className:h.line}),(0,T.jsxs)("div",{className:"current",onClick:function(){var o;V.Z.confirm({centered:!0,okText:"确定",icon:null,width:443,cancelText:"取消",title:"删除毕业设计",content:(0,T.jsxs)("div",{children:[(0,T.jsx)("p",{children:"该操作无法撤销。删除后,毕业设计内的所有数据将被同时删除"}),(0,T.jsx)("div",{className:"mb5",children:"请输入验证码后确认删除"}),(0,T.jsx)(J.Z,{ref:function(o){return v.current=o}})]}),onOk:(o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(!v.current.onVerify()){o.next=2;break}return o.abrupt("return",Promise.reject());case 2:return o.next=4,(0,W.ZP)("/api/graduations/".concat(null==p?void 0:p.id,".json"),{method:"delete"});case 4:0===o.sent.status&&(w.ZP.success("删除成功"),K.history.push("/graduations"));case 6:case"end":return o.stop()}}),o)}))),function(){return o.apply(this,arguments)})})},children:[(0,T.jsx)("i",{style:{color:"#d8d8d8"},className:"iconfont icon-shanchu8 font14 mr5"}),"删除毕设"]})]})]}),(0,O.tu)()&&(0,T.jsxs)("div",{className:h.member,children:[(0,T.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==p?void 0:p.id,"/teachers"),children:[(0,T.jsx)("i",{className:"iconfont icon-chengyuanguanli1 mr5"}),"成员管理"]}),(0,T.jsx)("span",{className:h.line}),(0,T.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==p?void 0:p.id,"/students"),children:["学生",(0,T.jsx)("span",{className:"ml10",children:X})]}),(0,T.jsx)("span",{className:h.line}),(0,T.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==p?void 0:p.id,"/teachers"),children:["教师",(0,T.jsx)("span",{className:"ml10",children:y})]}),(0,T.jsxs)("span",{onClick:function(){B("添加老师")},style:{marginLeft:"auto"},className:h.btn,children:[(0,T.jsx)("i",{className:"iconfont icon-tianjialaoshi font14 mr5"}),"添加老师"]}),(0,T.jsx)("span",{className:h.line}),(0,T.jsxs)("span",{onClick:function(){B("添加学生")},className:h.btn,children:[(0,T.jsx)("i",{className:"iconfont icon-tianjiaxuesheng font14 mr5"}),"添加学生"]})]}),(0,T.jsx)(V.Z,{centered:!0,keyboard:!1,destroyOnClose:!0,open:S,title:"分享毕设",width:666,onCancel:function(){n(!1)},footer:null,children:(0,T.jsxs)("div",{className:h.modal,children:[1===z&&(0,T.jsx)("div",{className:h.red,children:"邀请码已对管理员禁用,用户将无法通过邀请码以管理员身份加入毕设"}),2===z&&(0,T.jsx)("div",{className:h.red,children:"邀请码和邀请链接已对学生禁用,用户将无法通过邀请码以学生身份加入毕设"}),(0,T.jsxs)("div",{className:h.row,children:[(0,T.jsx)("div",{className:h.label,children:"分享方式一"}),(0,T.jsxs)("div",{className:h.content,children:[(0,T.jsx)("div",{className:"c-black",children:"分享邀请码"}),(0,T.jsxs)("div",{className:h.input,children:[(0,T.jsx)("aside",{className:h.code,children:null==I?void 0:I.invite_code}),(0,T.jsx)(G.CopyToClipboard,{text:null==I?void 0:I.invite_code,onCopy:function(){return w.ZP.success("复制成功")},children:(0,T.jsxs)("div",{className:h.copy,children:[(0,T.jsx)("i",{className:"iconfont icon-fuzhi8 font14 mr5"}),"复制邀请码"]})})]}),(0,T.jsx)("div",{className:"font12",style:{color:"#9096A3"},children:"通过邀请码加入毕业设计时,可以选择加入毕设的身份(选择管理员(教师),需要管理员审核)"})]})]}),(0,T.jsxs)("div",{className:"".concat(h.row," mt30 mb15"),children:[(0,T.jsx)("div",{className:h.label,children:"分享方式二"}),(0,T.jsxs)("div",{className:h.content,children:[(0,T.jsx)("div",{children:"分享链接"}),(0,T.jsxs)("div",{className:h.input,children:[(0,T.jsx)("aside",{className:h.code,style:{width:440},children:_}),(0,T.jsx)(G.CopyToClipboard,{text:_,onCopy:function(){return w.ZP.success("复制成功")},children:(0,T.jsxs)("div",{className:h.copy,children:[(0,T.jsx)("i",{className:"iconfont icon-fuzhi8 font14 mr5"}),"复制链接"]})})]}),(0,T.jsx)("div",{className:"font12",style:{color:"#9096A3"},children:"通过分享链接访问毕设时,已登录用户可以直接以学生身份加入毕设,未注册/登录用户在注册/登录后可以直接加入毕设。"})]})]}),(0,T.jsx)("div",{style:{height:"15px"}})]})}),(0,T.jsx)(V.Z,{centered:!0,keyboard:!1,destroyOnClose:!0,open:r,title:"加入毕设",width:527,confirmLoading:N,onCancel:function(){K.history.replace("/graduations")},onOk:function(){return Q.submit()},children:(0,T.jsx)(D.Z,{colon:!1,form:Q,className:h.formWrap,onFinish:function(){var o=L()(x()().mark((function o(a){var t;return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return u(!0),o.next=3,(0,W.ZP)("/api/graduations/join.json",{method:"post",body:f()(f()({},a),{},{user_type:2,code:e.get("code")})});case 3:0===(t=o.sent).status&&(null!=t&&t.identifier?(w.ZP.success("加入成功"),K.history.replace("/graduations/".concat(p.id,"/index")),s(!1),Z()):(w.ZP.success(null==t?void 0:t.message),K.history.replace("/graduations"))),u(!1);case 6:case"end":return o.stop()}}),o)})));return function(a){return o.apply(this,arguments)}}(),children:(0,T.jsx)(D.Z.Item,{style:{marginBottom:0},name:"major",label:"专业",rules:[{required:!0,message:"请输入专业名称"},{max:60,message:"输入超限,请缩减字符数"},{whitespace:!0,message:"请输入专业名称"}],children:(0,T.jsx)(H.Z,{showCount:!0,maxLength:60})})})}),(0,T.jsx)(Y.Z,{open:j,onCancel:function(){return B(!1)},title:j,OnOk:function(){var o=L()(x()().mark((function o(a){var U;return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,("添加老师"==j?b.HF:b.NX)({id:p.id,user_ids:a});case 2:if(0!=o.sent.status){o.next=15;break}if(w.ZP.success("添加成功"),B(!1),t({type:"graduations/getGraduationsDetails",payload:{id:null==p?void 0:p.id}}),"添加老师"!=j||!location.pathname.includes("teachers")){o.next=10;break}return t({type:"graduations/setUpdateIndex"}),o.abrupt("return");case 10:if("添加学生"!=j||!location.pathname.includes("students")){o.next=13;break}return t({type:"graduations/setUpdateIndex"}),o.abrupt("return");case 13:U="/graduations/".concat(null==p?void 0:p.id,"/").concat("添加老师"==j?"teachers":"students"),K.history.push(U);case 15:case"end":return o.stop()}}),o)})));return function(a){return o.apply(this,arguments)}}()})]})})),I="icon___qjZkt",z="content___w0ayt",y="dot___vZgx3",X=t(39937);Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Z=t(88820),E=t(23603),_=t(41681),$=(0,K.connect)((function(o){return{graduations:o.graduations}}))((function(o){var a,t,p=o.graduations,U=o.dispatch,e=(0,K.useParams)(),l=(0,K.useLocation)(),S=(0,i.useState)(!1),n=F()(S,2),c=n[0],R=n[1],r=p.menus.find((function(o){return o.stage_url===l.pathname}))||{},s=["opening_report","midterm_report","thesis","final_defense","final_thesis","archives"].includes(null==r?void 0:r.clazz),m=function(){var o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(R(!0),null==r||!r.notice_view){o.next=3;break}return o.abrupt("return");case 3:return o.next=5,(0,W.ZP)("/api/graduations/".concat(null==e?void 0:e.id,"/graduation_stages/").concat(null==r?void 0:r.id,"/notice_view.json"),{method:"post"});case 5:0===o.sent.status&&U({type:"graduations/getGraduationsDetails",payload:{id:null==e?void 0:e.id}});case 7:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}(),g=!(null!=r&&null!==(a=r.attachments)&&void 0!==a&&a.length||null!=r&&r.description);return(0,T.jsxs)(i.Fragment,{children:[s&&(0,T.jsx)(k.Z,{title:"阶段公告/描述",placement:"bottom",children:(0,T.jsx)("div",{className:I,onClick:m,children:(0,T.jsxs)("div",{className:z,children:[(0,T.jsx)("img",{height:20,src:"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTMzOC4wNzQgMTY1Ljg4OEEzMzcuMSAzMzcuMSAwIDEgMSAyMDUuMjYgODEyLjkwMlYxOTMuMDI0YTMzNi4wMjYgMzM2LjAyNiAwIDAgMSAxMzIuODEzLTI3LjEzNnptLTIxNC41MjggNzcuMDA1djUyMC4xOTJBMzM2LjM4NCAzMzYuMzg0IDAgMCAxIC45NzMgNTAyLjk4OWMwLTEwNC43MDQgNDcuNzE4LTE5OC4yNDcgMTIyLjU3My0yNjAuMDk2eiIgZmlsbD0iI0ZGOUQxOCIvPjxwYXRoIGQ9Ik0yNDYuMTE4Ljc2OGE0MS4zNSA0MS4zNSAwIDAgMSAxNC43NDYgMi43MTRsNTMzLjMgMjA2LjU0aDE4Ny40OTRjMjIuNTI4IDAgNDAuODU3IDE4LjMzIDQwLjg1NyA0MC44NTh2NDgzLjY4NmMwIDIyLjU4LTE4LjI3OCA0MC44NTgtNDAuODU3IDQwLjg1OEg3OTQuMTEyTDI2MC44NjQgOTgyLjAxNmE0MC44NTggNDAuODU4IDAgMCAxLTU1LjYwMy0zOC4wOTNWNDEuNjI2YzAtMjIuNTggMTguMjc4LTQwLjkxIDQwLjg1Ny00MC45MXptNTYwLjUzOCAzMjQuMTQ3aC01Ny4yNDJhMTIuMjg4IDEyLjI4OCAwIDAgMC0xMi4yODggMTIuMjg4VjYzOS41OWMwIDYuNzU5IDUuNTMgMTIuMjg4IDEyLjI4OCAxMi4yODhoNTcuMjQyYTEyLjI4OCAxMi4yODggMCAwIDAgMTIuMjM3LTEyLjI4OFYzMzcuMjAzYTEyLjI4OCAxMi4yODggMCAwIDAtMTIuMjg4LTEyLjI4OHoiIGZpbGw9IiM3MzlFRkYiLz48L3N2Zz4="}),!(null!=r&&r.notice_view)&&(0,T.jsx)("div",{className:y})]})})}),(0,T.jsx)(V.Z,{centered:!0,destroyOnClose:!0,onCancel:function(){return R(!1)},onOk:function(){return R(!1)},open:c,title:"阶段公告/描述",width:990,cancelButtonProps:{style:{display:"none"}},okText:"我知道了",children:g?(0,T.jsx)(Z.Z,{}):(0,T.jsxs)("div",{style:{maxHeight:500},children:[(0,T.jsx)(X.Z,{className:"mb25",value:(null==r?void 0:r.description)||""}),null==r||null===(t=r.attachments)||void 0===t?void 0:t.map((function(o){return(0,T.jsx)(A.Z,{className:"mt4",align:"middle",children:(0,T.jsxs)("div",{style:{color:"#3061D0"},className:"current c-light-primary",onClick:function(){var a;(0,E.Nd)("","".concat(_.Z.API_SERVER).concat(null==o||null===(a=o.url)||void 0===a?void 0:a.replace("disposition=inline","")))},children:[(0,T.jsx)("i",{className:"iconfont icon-wenjian7 font14 mr5"}),(0,E.tP)(o.title,62)]})},o.id)}))]})})]})})),oo=e.Z.Content,ao=function(o){return U()(o),(0,T.jsxs)("div",{className:"bg-white",children:[(0,T.jsx)(v,{}),(0,T.jsxs)(A.Z,{className:"edu-container",wrap:!1,children:[(0,T.jsx)(j,{}),(0,T.jsxs)(oo,{style:{flex:1,width:0,position:"relative"},children:[(0,T.jsx)($,{}),(0,T.jsx)(K.Outlet,{})]})]})]})}},39162:function(o,a,t){"use strict";t.d(a,{Z:function(){return A}});var p=t(59301),U="tag___NEywM",i=t(92310),K=t.n(i),e=t(37712),A=function(o){var a=o.className,t=o.status;return(0,e.jsxs)(p.Fragment,{children:[0===t&&(0,e.jsx)("div",{className:K()(U,a),children:"未开始"}),1===t&&(0,e.jsx)("div",{className:K()(U,a),style:{background:"#19CB70"},children:"进行中"}),2===t&&(0,e.jsx)("div",{className:K()(U,a),style:{background:"#EE5D5D"},children:"已结束"})]})}},55037:function(o,a,t){"use strict";t.d(a,{AL:function(){return k},Iy:function(){return F},Qv:function(){return r},ez:function(){return d},jb:function(){return c}});var p=t(79800),U=t.n(p),i=t(32834),K=t.n(i),e=t(11690);var A=[],l=["
          "],S=new(K().Renderer),n=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function F(){A.length=0,l=["
            "]}var c={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function R(o,a,t,p){if(a>=o.length||o[a].level<=t)return a;var U=o[a];p.push("
          • "+U.text+"");var i=[];return a=R(o,++a,U.level,i),i.length>0&&(p.push("
              "),i.forEach((function(o){p.push(o)})),p.push("
            ")),p.push("
          • "),a=R(o,a,t,p)}function r(){return R(A,0,0,l),l.push("
          "),l.join("")}var s={heading:function(o){var a=n.exec(o);if(a)return{type:"heading",raw:a[0],depth:a[1].length,text:a[2]}},fences:function(o){var a=this.rules.block.fences.exec(o);if(a){var t=a[0],p=function(o,a){var t=o.match(/^(\s+)(?:```)/);if(null===t)return a;var p=t[1];return a.split("\n").map((function(o){var a=o.match(/^\s+/);return null===a?o:U()(a,1)[0].length>=p.length?o.slice(p.length):o})).join("\n")}(t,a[3]||""),i=a[2]?a[2].trim():a[2];if(["latex","katex","math"].indexOf(i)>=0){var K=N(),e=p;p=K,u[K]={type:"block",expression:e}}return{type:"code",raw:t,lang:i,text:p}}}},m=/(?:\${2})([^\n`]+?)(?:\${2})/gi,g=0,N=function(){return"__special_katext_id_".concat(g++,"__")},u={};function d(){return u}function k(){g=0,u={}}function T(o){return o=o.replace(m,(function(o,a){var t=N();return u[t]={type:"inline",expression:a},t}))}var q=S.listitem;S.listitem=function(o){return q(T(o))};var j=S.paragraph;S.paragraph=function(o){return j(T(o))};var B=S.tablecell;S.tablecell=function(o,a){return B(T(o),a)},S.code=function(o,a,t){var p=(a||"").match(/\S*/)[0];return p?["latex","katex","math"].indexOf(p)>=0?"

          ".concat(o,"

          "):'
          ').concat(t?o:(0,e.escape)(o,!0),"
          \n"):'
          '+(t?o:(0,e.escape)(o,!0))+"
          "},S.heading=function(o,a,t){var p=this.options.headerPrefix+t.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return A.push({anchor:p,level:a,text:o}),"'+o+""},K().setOptions({silent:!0,gfm:!0,pedantic:!1}),K().use({tokenizer:s,renderer:S}),a.ZP=K()},44e3:function(o,a,t){"use strict";var p=t(84966),U=t(23088);const i=p.ZP;i.Header=p.h4,i.Footer=p.$_,i.Content=p.VY,i.Sider=U.Z,a.Z=i},25769:function(o,a,t){"use strict";var p=t(98040),U={"text/plain":"Text","text/html":"Url",default:"Text"};o.exports=function(o,a){var t,i,K,e,A,l,S=!1;a||(a={}),t=a.debug||!1;try{if(K=p(),e=document.createRange(),A=document.getSelection(),(l=document.createElement("span")).textContent=o,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(p){if(p.stopPropagation(),a.format)if(p.preventDefault(),void 0===p.clipboardData){t&&console.warn("unable to use e.clipboardData"),t&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=U[a.format]||U.default;window.clipboardData.setData(i,o)}else p.clipboardData.clearData(),p.clipboardData.setData(a.format,o);a.onCopy&&(p.preventDefault(),a.onCopy(p.clipboardData))})),document.body.appendChild(l),e.selectNodeContents(l),A.addRange(e),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");S=!0}catch(p){t&&console.error("unable to copy using execCommand: ",p),t&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(a.format||"text",o),a.onCopy&&a.onCopy(window.clipboardData),S=!0}catch(p){t&&console.error("unable to copy using clipboardData: ",p),t&&console.error("falling back to prompt"),i=function(o){var a=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return o.replace(/#{\s*key\s*}/g,a)}("message"in a?a.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,o)}}finally{A&&("function"==typeof A.removeRange?A.removeRange(e):A.removeAllRanges()),l&&document.body.removeChild(l),K()}return S}},83145:function(o,a,t){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.CopyToClipboard=void 0;var p=i(t(59301)),U=i(t(25769));function i(o){return o&&o.__esModule?o:{default:o}}function K(o){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},K(o)}function e(o,a){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(o);a&&(p=p.filter((function(a){return Object.getOwnPropertyDescriptor(o,a).enumerable}))),t.push.apply(t,p)}return t}function A(o,a){if(null==o)return{};var t,p,U=function(o,a){if(null==o)return{};var t,p,U={},i=Object.keys(o);for(p=0;p=0||(U[t]=o[t]);return U}(o,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(o);for(p=0;p=0||Object.prototype.propertyIsEnumerable.call(o,t)&&(U[t]=o[t])}return U}function l(o,a){if(!(o instanceof a))throw new TypeError("Cannot call a class as a function")}function S(o,a){for(var t=0;t-1||j.indexOf("bigfiles1")>-1?G({url:j,fileType:(A=j,A.substring(A.lastIndexOf("/")+1).split(".").pop()),model:j.indexOf("model=edit")?"edit":"view"}):q())}),[m,j]);var q=function(){var A=r()(n()().mark((function A(){var g,C,I;return n()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return console.log("data:",j),g=j,j.startsWith("http")||(g=location.origin+g),C=new URL(g).pathname.split("/").pop(),A.next=6,(0,P.gJ)({attachment_id:C});case 6:(I=A.sent).url=Y+I.url,G(I);case 9:case"end":return A.stop()}}),A)})));return function(){return A.apply(this,arguments)}}(),E=function(){j.startsWith("http")||j.startsWith("blob:")?_():(0,d.Sv)(h||"educoder",j,h)},_=function(){O&&(0,w.fc)({id:null==O?void 0:O.id,watch_type:1,course_id:null==O?void 0:O.course_id}),(0,d.Nd)(h||"educoder",decodeURIComponent(j))};return(0,x.jsxs)("div",{style:e()({},D||{}),className:"".concat(Z&&a.bgBlack," ").concat(m?a.wrp:"hide"),children:[z&&(0,x.jsxs)("div",{className:a.close,ref:Q,children:[!!R&&(0,x.jsx)(u.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return Q.current},children:(0,x.jsx)("span",{onClick:function(){F(),R()},children:(0,x.jsx)("i",{className:"icon-yulanpizhu"})})}),!K&&(0,x.jsx)(u.Z,{title:"点击下载此文件",getPopupContainer:function(){return Q.current},children:(0,x.jsx)("span",{onClick:_,children:(0,x.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,x.jsx)(u.Z,{title:"关闭",getPopupContainer:function(){return Q.current},children:(0,x.jsx)("span",{className:"",onClick:F,children:(0,x.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,x.jsx)("div",{className:"".concat(a[L]," ").concat(L," ").concat(a.monaco," ").concat("txt"===m?"show":"hide"),children:"txt"===m&&(0,x.jsx)(x.Fragment,{children:(0,x.jsx)(v.ZP,e()({},H))})}),"audio"===m&&(0,x.jsx)("audio",{src:"".concat((null===(C=j)||void 0===C?void 0:C.indexOf("http://"))>-1||(null===(I=j)||void 0===I?void 0:I.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(j),autoPlay:!0}),"video"===m&&(0,x.jsx)(x.Fragment,{children:(null===(t=j)||void 0===t?void 0:t.indexOf("http"))>-1?(0,x.jsx)("video",{controls:!0,src:"".concat(j),autoPlay:!0}):(0,x.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(j),autoPlay:!0})}),"office"===m&&U&&(0,x.jsx)("iframe",{src:"".concat(J,"/office.html?key=").concat(U.key,"&url=").concat(btoa(U.url),"&callbackUrl=").concat(Y+U.callbackUrl,"&fileType=").concat(U.fileType,"&title=").concat(U.title,"&model=").concat(b,"&officeServer=").concat(p.Z.ONLYOFFICE,"&disabledDownload=").concat(!!K)}),"html"===m&&(0,x.jsx)("iframe",{src:j+"&disposition=inline"}),"pdf"===m&&(0,x.jsx)("iframe",{src:"".concat(J,"/js/pdfview/index.html?filename=").concat(h||"educoder.pdf","&url=").concat(encodeURIComponent(j),"&disabledDownload=").concat(!!K)}),"image"===m&&(0,x.jsx)("img",{src:"".concat((null===(l=j)||void 0===l?void 0:l.indexOf("http://"))>-1||(null===(f=j)||void 0===f?void 0:f.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(j)}),("other"===m||"download"===m)&&(0,x.jsx)(x.Fragment,{children:B?(0,x.jsx)(X.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,x.jsx)(s.ZP,{icon:(0,x.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:E,disabled:K,children:"下载"})}):(0,x.jsxs)(s.ZP,{type:"primary",size:"middle",onClick:E,disabled:K,children:[(0,x.jsx)(c.Z,{}),"点击下载"]})})]})}},39937:function(A,g,C){C.d(g,{z:function(){return x}});var I=C(82242),e=C.n(I),t=C(37205),n=C.n(t),l=C(91232),r=C.n(l),f=C(79800),i=C.n(f),o=C(59301),a=(C(46650),C(55037)),s=(C(64018),C(45071)),c=C(41681),v=C(23603),u=C(15342),d=C(1012),P=C(38278),X=C(37712),p="@▁@",w=/]*>/g;var x=function(A,g){A=A||"";var C=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return g?A.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(C,(function(A,g,C,I,e,t,n){var l=g||I||t,r=C||e||n||"?";return c.Z.API_SERVER+"/api/attachments/"+l+r+"&t="+(0,v.Jn)(l,Date.now())+(A.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):A=A.replace(/(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(A,g,C,I,e,t,n){var l=g||I||t,r=C||e||n||"?";return c.Z.API_SERVER+"/attachments/download/"+l+r+"&t="+(0,v.Jn)(l,Date.now())+(A.indexOf(")")>-1?")":"&")})).replace(C,(function(A,g,C,I,e,t,n){var l=g||I||t,r=C||e||n||"?";return c.Z.API_SERVER+"/api/attachments/"+l+r+"&t="+(0,v.Jn)(l,Date.now())+(A.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(A,g,C,I,e){var t=g||I,n=C||e||"";return'"'+c.Z.API_SERVER+"/api/attachments/"+t+n+t+n+"&t="+(0,v.Jn)(t,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(A,g,C,I,e){var t=g||I,n=C||e||"";return"("+c.Z.API_SERVER+"/files/uploads/"+t+n+t+n+"&t="+(0,v.Jn)(t,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};g.Z=function(A){var g=A.value,C=void 0===g?"":g,I=A.className,t=A.showTextOnly,l=A.showLines,f=A.style,v=void 0===f?{}:f,x=A.stylesPrev,y=void 0===x?{}:x,b=A.highlightKeywords,j=A.showProgramFill,m=(A.isProgramFill,A.disabledFill),h=void 0!==m&&m,H=A.programFillValue,L=A.onFillChange,D=void 0===L?function(A){}:L,z=A.onFillBlur,F=void 0===z?function(){}:z,Z=A.onFillFocus,K=void 0===Z?function(){}:Z,R=String(C),B=(0,o.useState)(""),O=i()(B,2),k=O[0],T=O[1],M=(0,o.useState)("office"),V=i()(M,2),N=V[0],W=V[1],S=(0,o.useState)([]),U=i()(S,2),G=U[0],J=U[1],Y=(0,o.useRef)("a"+(0,d.Z)()),Q={};var q=function(A){return A.replace(/([\s\S]+?)<\/style>/gim,(function(A,g){var C=g.replace(/(\n|\r)/g,"").split("}"),I=[];return C.map((function(A){""!=A&&I.push(".".concat(Y.current," ").concat(A))})),"")}))},E=(0,o.useMemo)((function(){try{R=R.replace(/\(\/attachments\/download\//g,"("+c.Z.API_SERVER+"/attachments/download/").replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\//g,"("+c.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+c.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+c.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(A){}if(j){var A=-1;return R=R.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(g,C,I){var e;return function(A,g,C){var I=document.createElement(A===p?"input":"textarea");I.style.width="100%",I.style.height=A===p?"40px":"151px",I.rows=5,I.spellcheck=!1,I.name="edu-program-fill",I.placeholder="请输入",I.dataset.id=g;var e=Object.keys(Q).length;return Q[e]=I,'')}(g,++A,null==H||null===(e=H[A])||void 0===e?void 0:e.value.replaceAll("<","<").replaceAll(">",">"))})),'
          '.concat(q(R||""),"
          ")}var g=q(R);g=(0,a.ZP)(g);var C=(0,a.ez)();R.match(/\[TOC\]/)&&(g=g.replace("

          [TOC]

          ",(0,a.Qv)()),(0,a.Iy)()),g=g.replace(/(__special_katext_id_\d+__)/g,(function(A,g){var I=C[g],e=I.type,t=I.expression;return(0,u.renderToString)(function(A){var g=document.createElement("div");return g.innerHTML=A,0===g.childNodes.length?"":g.childNodes[0].nodeValue}(t)||"",{displayMode:"block"===e,throwOnError:!1,output:"html"})})),g=g.replace(/▁/g,"▁▁▁▁▁"),(0,a.AL)();var I=document.createElement("div");return I.innerHTML=g,t?I.innerText:b?(gA(I,b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),I.innerHTML):(setTimeout((function(){return eA()}),500),I.innerHTML)}),[R,b]);(0,o.useEffect)((function(){CA.current&&CA.current.querySelectorAll(["input","textarea"]).forEach((function(A){A.oninput=_,A.onblur=$,A.onfocus=AA}))}),[G]),(0,o.useEffect)((function(){if(null!=H&&H.length)try{var A,g=CA.current.querySelectorAll(".edu-program-fill-score"),C=CA.current.querySelectorAll('[name="edu-program-fill"]'),I=r()(C.entries());try{for(I.s();!(A=I.n()).done;){var e,t,n,l=i()(A.value,2),f=l[0],o=l[1];o.value=(null==H||null===(e=H[f])||void 0===e?void 0:e.value)||"","warning"===(null==H||null===(t=H[f])||void 0===t?void 0:t.type)?o.className="program-fill-warning":"success"===(null==H||null===(n=H[f])||void 0===n?void 0:n.type)?o.className="program-fill-success":o.className=""}}catch(A){I.e(A)}finally{I.f()}var a,s=r()(g.entries());try{for(s.s();!(a=s.n()).done;){var c,v,u=i()(a.value,2),d=u[0];u[1].innerHTML=null!=H&&null!==(c=H[d])&&void 0!==c&&c.score?"".concat(null==H||null===(v=H[d])||void 0===v?void 0:v.score,"分"):""}}catch(A){s.e(A)}finally{s.f()}J(H)}catch(A){console.log(A,"error")}}),[H]);var _=function(A){G[A.target.dataset.id]=G[A.target.dataset.id]||{},G[A.target.dataset.id].value=A.target.value,J(n()(G)),D(G,A.target.dataset.id)},$=function(A){G[A.target.dataset.id]=G[A.target.dataset.id]||{},G[A.target.dataset.id].value=A.target.value,J(n()(G)),F(G,A.target.dataset.id)},AA=function(A){G[A.target.dataset.id]=G[A.target.dataset.id]||{},G[A.target.dataset.id].value=A.target.value,J(n()(G)),K(G,A.target.dataset.id)};function gA(A,g){return A.childNodes.forEach((function(A){if(A.childNodes.length>0)gA(A,g);else if("IMG"!==A.nodeName)if(A.innerHTML){var C;A.innerHTML=null===(C=A.innerHTML)||void 0===C?void 0:C.replace(new RegExp(g,"gi"),'$&')}else{var I=document.createElement("span");I.innerHTML=A.textContent.replace(new RegExp(g,"gi"),'$&'),A.replaceWith(I)}}))}var CA=(0,o.useRef)();function IA(A){var g=A.target;if("A"===g.tagName.toUpperCase()){var C=g.getAttribute("href");if(C.indexOf("office")>-1)A.preventDefault(),T(C),W("office");else if(C.indexOf("application/pdf")>-1)A.preventDefault(),T(C),W("pdf");else if(C.indexOf("text/html")>-1)A.preventDefault(),T(C),W("html");else if(C.startsWith("#")){A.preventDefault();var I=document.getElementById(C.replace("#",""));I&&I.scrollIntoView(!0)}}}a.jb.WebkitLineClamp=l,l&&(v=e()(e()({},v),a.jb));var eA=function(){var A,g=null===(A=CA.current)||void 0===A?void 0:A.querySelectorAll("video");null==g||g.forEach((function(A){if(A.oncontextmenu=function(){return!1},A.src.indexOf(".m3u8")>-1)if(A.canPlayType("application/vnd.apple.mpegurl"));else if(s.ZP.isSupported()){var g=new s.ZP;g.loadSource(A.src),g.attachMedia(A)}}))};return(0,o.useEffect)((function(){if(CA.current&&E&&E.match(w)&&window.PR.prettyPrint(),CA.current)return CA.current.addEventListener("click",IA),function(){var A;null===(A=CA.current)||void 0===A||A.removeEventListener("click",IA),(0,a.AL)(),(0,a.Iy)()}}),[E,CA.current,IA]),(0,o.useEffect)((function(){var A,g=function(A){A.preventDefault(),A.clipboardData.setData("text",window.getSelection().toString())};return null===(A=CA.current)||void 0===A||A.addEventListener("copy",g),function(){var A;null===(A=CA.current)||void 0===A||A.removeEventListener("copy",g)}}),[CA.current]),(0,X.jsxs)(X.Fragment,{children:[t&&(0,X.jsx)("div",{ref:CA,children:E}),!t&&(0,X.jsx)("div",{ref:CA,style:e()({},v),className:"".concat(I||""," ").concat(h?"disabled-fill":""," markdown-body ").concat(Y.current),dangerouslySetInnerHTML:{__html:E}}),(0,X.jsx)(P.Z,{close:!0,data:k,type:null!=k&&k.length?N:"",style:e()({},y),onClose:function(){return T("")}})]})}},94905:function(A,g,C){C.r(g),C.d(g,{default:function(){return aA}});var I=C(82242),e=C.n(I),t=C(79800),n=C.n(t),l=C(39647),r=C.n(l),f=C(59301),i=C(92736),o=C(81863),a=C(20205),s=C(64201),c=C(61186),v=C.n(c),u="footer___k7tsL",d="fastLink___WjVYd",P=C(37712),X=function(A){A.user;var g,C,I,e,t,n,l=A.globalSetting;return(0,P.jsxs)("div",{className:u,style:{height:null!=l&&null!==(g=l.setting)&&void 0!==g&&g.main_site?"":"80px",lineHeight:null!=l&&null!==(C=l.setting)&&void 0!==C&&C.main_site?"":"80px"},children:[(null==l||null===(I=l.setting)||void 0===I?void 0:I.main_site)&&(0,P.jsxs)("aside",{className:d,children:[(0,P.jsx)("a",{target:"_blank",href:"/",children:"网站首页"}),!(null!=l&&null!==(e=l.setting)&&void 0!==e&&e.is_local)&&(0,P.jsx)("a",{target:"_blank",href:"/help/about_us",children:"关于我们"}),(0,P.jsx)("a",{target:"_blank",href:"/help/contact_us",children:"联系我们"}),(0,P.jsx)("a",{target:"_blank",href:"/help/cooperatives",children:"合作伙伴"}),(0,P.jsx)("a",{target:"_blank",href:"/help/agreement",children:"服务协议"}),(0,P.jsx)("a",{target:"_blank",href:"/help/help_center",children:"帮助中心"}),(0,P.jsx)("a",{target:"_blank",href:"/help/feedback",children:"意见反馈"})]}),null!==(t=l.setting)&&void 0!==t&&t.footer?(0,P.jsx)("div",{dangerouslySetInnerHTML:{__html:null===(n=l.setting)||void 0===n?void 0:n.footer}}):(0,P.jsx)("div",{children:(0,P.jsxs)("p",{className:"footer_con-p inline lineh-30 font-14",children:[(0,P.jsx)("span",{className:"font-18 fl",children:"©"})," ",v()().year()," EduCoder",(0,P.jsx)("a",{style:{color:"#888"},target:"_blank",href:"http://beian.miit.gov.cn/",className:"ml15 mr15",children:"湘ICP备17009477号"}),(0,P.jsxs)("a",{style:{color:"#888"},target:"_blank",href:"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=43019002000962",className:"mr15",children:[(0,P.jsx)("img",{className:"vertical4",src:"data:image/png;base64,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0p8zAAA7SGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU1NzcyLCAyMDE0LzAxLzEzLTE5OjQ0OjAwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMTEtMTBUMTQ6MDQ6NTArMDg6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTExLTEwVDE0OjA0OjUwKzA4OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNS0xMS0xMFQxNDowNDo1MCswODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6ODBiY2E5ODUtNGY5Yi02ZTRkLTlmYzktZThmNDkyNjdkZjRlPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWRkYWU4MGMtODc3MC0xMWU1LTg0OWEtYmNmZGE2MDI4ZjJlPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6ZDAxN2I5NGUtOTRiZC0yNjQxLThmZjktYmY3YTBhMzY3N2IxPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmQwMTdiOTRlLTk0YmQtMjY0MS04ZmY5LWJmN2EwYTM2NzdiMTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0xMS0xMFQxNDowNDo1MCswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo4MGJjYTk4NS00ZjliLTZlNGQtOWZjOS1lOGY0OTI2N2RmNGU8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTUtMTEtMTBUMTQ6MDQ6NTArMDg6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE0IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPgogICAgICAgICAgICA8cmRmOkJhZz4KICAgICAgICAgICAgICAgPHJkZjpsaT4zQ0I4RkVFOEMyRUJFNkU1QTREQTk3MzI4MzU0MTI0RTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiZGRmY2Y2Zi04NzcwLTExZTUtODQ5YS1iY2ZkYTYwMjhmMmU8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QmFnPgogICAgICAgICA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPnNSR0IgSUVDNjE5NjYtMi4xPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pu6JurQAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABRFJREFUeNpE1OtvW/Udx/H3ufj4+Ph2nDh2vLgrTSPaFNqGtd0Gy9LRTVymNoNM6ihCaEwdQ5sYAo0HTOwBYg/Yk0pDiG3qmLSiPtjGJERbdZSQaUArykXt1la9hDRNY6dpYsexj30uPj7ntwcVyT/w0ucrfT5fSQgBdguAEBlZhDhaiVikF2j22lfPjP77+Kc/9ZyO9p37th7s2rLlbegveZ4g6jggS4AMAKkkkhAC366DJJADgaJlgA/unTx+4qmT/7oyKpxJfdYzUDIma7M6TsXoDH+3/8jgnrG/iOC2o8JrIiQJECjpvlt0Q7JoimWEkQHN1Sf+8MbE40+O7226M/rtCYX9+k2e0me55+48XXfn1f1PvvfwiVdfOSLFlKitSbh8hq9+DitZFRlZSaHK1aJ35uV3f3+4zr79/fy42CD9pwtULwdUpwLqu//ID4JzPHPoEQ7+00dc/vM/Eoary3oCPR5dBROeRTxaH7x+9MWpkd3nRsyBPL/InmP6cAN5jUlgtcELkXpMTj19kr3GGfLfuovv7T62Z/GjN67aM2c3XHz/nVUw6jmo7ruJI5eT2idz23lwu0XzbAP5eh3JjBJdCnBP3iSyrhu96VD562nG7m8z8cUm3vwwKCSkVgx5aBWsL1aK4cfvHwilGKg2KWuOxjxEAh+WXKT1Bto2E/lGC42QyrRDX5cHkkStKRPtUQ9sHB5btwLOXHrvh+1yeTiT0KATRRQKZId7aSKw7ukm2Fck8dIQxjNbkHsMctuytOw2CEEhZ0Dp7L1Ls6d+sgIaicxgw/Lp73FB7+bEaQN1V4rqnrUEZQvpfy3sYzfxp5fRnh+m69mtvHWoBsQZ2qzSmlrALU0VV8BwaW5Po6ZyZ9Gi+HWN19+M859XSgztKJA2ktgXaoQLHu65GsnyMudfvsKrh6Lkh0w299WplD38pUvDK6CstkyrIZNavMLe+wM6fgL/6Dzdf/scuS9Cu0chzKlkdxUoTFylcvA8rbbC2GiEZHUSq6GiJuUIgAoQM746Lm+4Nhrk+3jiGxYH+np4vTyIP3uB7uokcjqGc6GGNZCjnCnwdzkGKZMnvrlAJ1nEvEPCyKw5tgKCnBMNwdyUxZ2D0/z2V9t48fkRjlqboeEzalfpMmXeOpakiQFkeO7nOjsGJpmbBFybsGNtXQFVs729k8zjz/uUFi7yy+EoY+NxJo7bXJK38MCmLyjEKnSO9NGuOazZaPDrB65x89Q1bF9Hz2qoprYRuPUcvOYnj1ZP/+6wM9/Gq/hQmmH9Q0NE8zoEVYKqSnPBIb2uC9Z2Q6nC9NuXcZJZEv0JYr0G6YF9O7XM9z+QhBAAdFr/fWzp/IHXAtdJVz6cR40LencOEiw5+HYL2dDRu+JIWoTqqSk6gUp6+3p8l2p6w8gjcTM1Lmn33TrZd2ZwFp2yOx9z9HyYzu8aIKi3CKwGGBqKZqLFoL3cpFWqoa/tRi/m8ZZt3LIlYmuaKKkUsS9rI9pXUfjohdzXkr2RTAGvHhIGKmGg4C5aIELa1TrNyUUkJQKShHujQiQmk/92IasZ1s9Ch9Uta0qKaPeOhyw7/ZpdKrU0ZZlUrkNEstEkH8VbRjgOyY1ZUgMpZK2JmtaQMr3XO+pdv1GN23+kaIus1kb4SBHVblTjTzsX8y859cUHPX9251c29WwKLSmhm3KXGkti3eB6rMe01dzI2aWphXFnpnaib2culBQFEbgA/H8ALiI3EysggNoAAAAASUVORK5CYII="}),"湘公网安备43019002000962号"]}),(0,P.jsx)("a",{href:"https://team.trustie.net",style:{color:"#888"},target:"_blank",children:"Trustie"}),"   &   IntelliDE inside. ",(0,P.jsx)("span",{className:"mr15",children:"版权所有 湖南智擎科技有限公司"})]})})]})},p="newFooter___XUH_2",w=C(41681),x=C(43418),y=C(23603),b=C(39937),j=function(A){A.user;var g,C,I,e=A.globalSetting,t=(0,f.useState)(!1),l=n()(t,2),r=l[0],i=l[1];(0,f.useEffect)((function(){return window.addEventListener("click",o),function(){window.removeEventListener("click",o)}}),[]);var o=function(A){var g,C;null==A||!A.target||"头歌教师交流社区"!==(null==A||null===(g=A.target)||void 0===g?void 0:g.innerText)&&"头歌教师交流社区"!==(null==A||null===(C=A.target)||void 0===C||null===(C=C.nextElementSibling)||void 0===C?void 0:C.innerText)||function(A,g){if(A.className===g)return A;for(var C=0,I=A;I=I.parentNode;C++){if(I.className===g)return I;if(I==document.documentElement)return!1}}(A.target,"module-introduce")&&(/macintosh|mac os x/i.test(navigator.userAgent)?i(!0):(0,y.xg)("//shang.qq.com/wpa/qunwpa?idkey=2f2043d88c1bd61d182b98bf1e061c6185e23055bec832c07d8148fe11c5a6cd"))};return(0,P.jsxs)(f.Fragment,{children:[(0,P.jsx)(x.Z,{centered:!0,destroyOnClose:!0,open:r,title:"头歌教师交流社区",width:"500px",footer:null,onCancel:function(){return i(!1)},children:(0,P.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center"},children:[(0,P.jsxs)("p",{children:["扫码或搜索加入头歌教师交流QQ群:",null==e||null===(g=e.setting)||void 0===g?void 0:g.homepage_tea_qq_number," "]}),(0,P.jsx)("img",{src:"".concat(w.Z.IMG_SERVER,"/").concat(null==e||null===(C=e.setting)||void 0===C?void 0:C.homepage_tea_qq_qrcode_url),width:200,height:200})]})}),(0,P.jsx)("div",{className:p,dangerouslySetInnerHTML:{__html:(0,b.z)(null===(I=e.setting)||void 0===I?void 0:I.footer,!0)}})]})},m=(0,s.connect)((function(A){var g=A.user,C=A.loading;return{user:g,globalSetting:A.globalSetting,loading:C.models.index}}))((function(A){var g,C,I=A.user,e=A.globalSetting;A.loading,A.dispatch;return e.showFooter&&e.showHeaderFooter?(0,P.jsx)("section",{id:"footer",children:null==e||null===(g=e.setting)||void 0===g||!g.main_site||null!=e&&null!==(C=e.setting)&&void 0!==C&&C.is_local?(0,P.jsx)(X,{user:I,globalSetting:e}):(0,P.jsx)(j,{user:I,globalSetting:e})}):(0,P.jsx)(P.Fragment,{children:" "})})),h=C(6848),H=C(20923),L=C(96686),D="sideBar___iM1tf",z="wrap___GEY86",F="backTop___skoyU",Z="ul___JwWww",K=C(32637),R=(0,s.connect)((function(A){var g=A.loading,C=A.globalSetting,I=A.user,e=A.shixunHomeworks;return{globalSetting:C,user:I,loading:g.models.index,shixunHomeworks:e}}))((function(A){var g,C,I,e,t,l,r,i,o,a,c,v,u,d,X,p,b,j,m=A.globalSetting,R=(A.loading,A.shixunHomeworks),B=A.user,O=(A.dispatch,(0,f.useState)(!1)),k=n()(O,2),T=k[0],M=k[1],V=(0,f.useState)(!1),N=n()(V,2),W=N[0],S=N[1],U=(0,f.useState)(localStorage.hideCustom?JSON.parse(localStorage.hideCustom):[]),G=n()(U,1)[0],J=(0,f.useState)("1"!=(null===(g=localStorage)||void 0===g?void 0:g.hidesidebar)),Y=n()(J,2),Q=Y[0],q=Y[1],E=(0,f.useState)(!1),_=n()(E,2),$=(_[0],_[1]),AA=(0,f.useState)(!1),gA=n()(AA,2),CA=gA[0],IA=gA[1],eA=(0,f.useRef)(),tA=(0,s.useLocation)();(0,f.useEffect)((function(){return window.addEventListener("scroll",nA),function(){return window.removeEventListener("scroll",nA)}}),[]),(0,f.useEffect)((function(){setTimeout((function(){localStorage.setItem("hidesidebar","1"),q(!1)}),5e3)}),[]),(0,f.useEffect)((function(){99===R.actionTabs.type&&($(!0),setTimeout((function(){$(!1)}),5e3))}),[R.actionTabs]),(0,f.useEffect)((function(){"www.educoder.net"===document.domain&&("/"===tA.pathname||tA.pathname.indexOf("/competitions/detail/")>-1||tA.pathname.indexOf("/competitions")>-1&&3===tA.pathname.split("/").length)?IA(!0):IA(!1)}),[tA.pathname]),(0,f.useEffect)((function(){var A,g,C;null!=B&&null!==(A=B.userInfo)&&void 0!==A&&A.login&&(G.includes(null==B||null===(g=B.userInfo)||void 0===g?void 0:g.login)||null!=m&&null!==(C=m.setting)&&void 0!==C&&C.is_local||setTimeout((function(){var A,g,C=document.createEvent("Events");(C.initEvent("mouseout",!0,!1),eA)&&(null===(g=eA.current)||void 0===g||g.dispatchEvent(C));G.push(null==B||null===(A=B.userInfo)||void 0===A?void 0:A.login),localStorage.hideCustom=JSON.stringify(G)}),5e3))}),[B]);var nA=function(){var A;"/Activities"!==tA.pathname?M((null===(A=document)||void 0===A||null===(A=A.documentElement)||void 0===A?void 0:A.scrollTop)>0):M(!1)};return(0,P.jsxs)("div",{className:D,children:[(0,P.jsxs)("div",{id:"wechat_QR_code_ids",children:[CA&&!(0,y.s2)()&&(0,P.jsx)(h.Z,{placement:"left",overlayInnerStyle:{padding:26},getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,P.jsxs)("div",{className:"flex-wrp flex_box_column flex_box_center",children:[(0,P.jsx)(H.Z,{errorLevel:"H",value:window.location.href,bgColor:"#FFF",size:190,icon:"".concat(w.Z.IMG_SERVER,"/").concat(null==m||null===(C=m.setting)||void 0===C?void 0:C.tab_logo_url)}),(0,P.jsxs)("div",{className:"tc font15 mt20",children:["请使用微信扫一扫分享",tA.pathname.indexOf("/competitions")>-1?"竞赛":"头歌"]})]}),children:(0,P.jsx)("div",{className:z,children:(0,P.jsx)("i",{className:"iconfont icon-icon-weixin c-light-primary font22"})})}),!m.onlyShowBackTop&&(null==m?void 0:m.onlyShowBackTopIcons)&&Q&&(0,P.jsxs)(f.Fragment,{children:[!(null==B||null===(I=B.userInfo)||void 0===I||!I.login)&&(0,P.jsx)(h.Z,{placement:"left",defaultVisible:!(null!=G&&G.includes(null==B||null===(e=B.userInfo)||void 0===e?void 0:e.login)),getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,P.jsxs)("div",{children:[(0,P.jsx)("div",{className:"tc",children:(0,P.jsx)("img",{className:"mt10",src:K,width:"188px",height:"188px"})}),(0,P.jsx)("div",{className:"tc font15 mt10",children:"免费教研助理"}),(0,P.jsx)("div",{className:"tc font15",children:"微信扫一扫添加"}),(0,P.jsx)("div",{className:"pt10 font12",children:(0,P.jsxs)("ul",{className:Z,children:[(0,P.jsx)("li",{children:"解答老师疑惑、帮助老师更快熟悉和使用平台教学"}),(0,P.jsx)("li",{children:"协助老师创建课堂、课程设计、做好教学工作。"}),(0,P.jsx)("li",{children:"根据老师教学方向,分享头歌平台C9院校、985高校、211高校、双一流高校老师经典实践教学案例。"})]})})]}),children:(0,P.jsx)("div",{className:z,ref:eA,children:(0,P.jsx)("a",{href:"javascript:void(0)",children:(0,P.jsx)("i",{className:"iconfont icon-yijianfankui1 c-light-primary font22"})})})}),!(null!=m&&null!==(t=m.setting)&&void 0!==t&&t.is_local)&&(0,P.jsx)(h.Z,{placement:"left",getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,P.jsxs)("div",{children:[(0,P.jsx)("img",{src:"".concat(w.Z.IMG_SERVER,"/images/educoder/EWM.jpg"),width:"158px",height:"158px"}),(0,P.jsx)("div",{className:"tc font15",children:"微信扫一扫"}),(0,P.jsx)("div",{className:"tc font15",children:"关注公众号"})]}),children:(0,P.jsx)("div",{className:z,children:(0,P.jsx)("i",{className:"iconfont icon-erweima1 c-light-primary font22"})})}),!(null!=m&&null!==(l=m.setting)&&void 0!==l&&l.is_local)&&(0,P.jsx)(h.Z,{placement:"left",title:"在线咨询",children:(0,P.jsx)("div",{className:z,children:(0,P.jsx)("a",{onClick:function(){/macintosh|mac os x/i.test(navigator.userAgent);S(!0)},className:"c-white",children:(0,P.jsx)("i",{className:"iconfont icon-QQ1 c-light-primary font22"})})})}),(0,P.jsx)("div",{onClick:function(){q(!1),localStorage.setItem("hidesidebar","1")},style:{textAlign:"center",fontSize:"14px",color:"#0152d9",margin:"10px 0px",cursor:"pointer"},children:"收起"})]}),(null==m||null===(r=m.setting)||void 0===r?void 0:r.main_site)&&!m.onlyShowBackTop&&(null==m?void 0:m.onlyShowBackTopIcons)&&!Q&&(0,P.jsx)("div",{onClick:function(){q(!0),localStorage.setItem("hidesidebar","2")},style:{textAlign:"center",fontSize:"16px",color:"#0152d9",background:"#fff",margin:"10px 0px",cursor:"pointer",position:"absolute",left:"80px",top:"-150px",boxShadow:"0px 0px 8px 0px #f1f1f1",width:"30px",writingMode:"vertical-lr",height:"100px",paddingLeft:"3px"},children:"联系我们"}),(null==m?void 0:m.showQuestionBackTop)&&!(null!=m&&null!==(i=m.setting)&&void 0!==i&&i.is_local)&&(0,P.jsx)(h.Z,{placement:"left",getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,P.jsxs)("div",{children:[(0,P.jsx)("img",{src:"student"===(null==B||null===(o=B.userInfo)||void 0===o?void 0:o.identity)?"".concat(w.Z.IMG_SERVER,"/").concat(null==m||null===(a=m.setting)||void 0===a?void 0:a.homepage_stu_qq_qrcode_url):"".concat(w.Z.IMG_SERVER,"/").concat(null==m||null===(c=m.setting)||void 0===c?void 0:c.homepage_tea_qq_qrcode_url),width:"158px",height:"158px"}),(0,P.jsx)("div",{className:"tc font15 mt10",style:{marginBottom:6},children:"扫码进编程交流群"})]}),children:(0,P.jsx)("div",{className:z,children:(0,P.jsx)("i",{className:"iconfont icon-erweima1 c-light-primary font22"})})}),T&&(0,P.jsx)(h.Z,{placement:"left",title:"返回顶部",children:(0,P.jsx)(L.Z,{className:"".concat(z," ").concat(F),visibilityHeight:0,children:(0,P.jsx)("i",{className:"iconfont icon-huidaodingbu c-light-primary font14"})})})]}),(0,P.jsx)(x.Z,{centered:!0,destroyOnClose:!0,open:W,title:"student"===(null==B||null===(v=B.userInfo)||void 0===v?void 0:v.identity)?"头歌学生交流社区":"头歌教师交流社区",width:"500px",footer:null,onCancel:function(){return S(!1)},children:(0,P.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",marginBottom:20},children:[(0,P.jsx)("p",{children:"student"===(null==B||null===(u=B.userInfo)||void 0===u?void 0:u.identity)?"扫码或搜索加入头歌学生交流QQ群:".concat(null==m||null===(d=m.setting)||void 0===d?void 0:d.homepage_stu_qq_number):"扫码或搜索加入头歌教师交流QQ群:".concat(null==m||null===(X=m.setting)||void 0===X?void 0:X.homepage_tea_qq_number)}),(0,P.jsx)("img",{src:"student"===(null==B||null===(p=B.userInfo)||void 0===p?void 0:p.identity)?"".concat(w.Z.IMG_SERVER,"/").concat(null==m||null===(b=m.setting)||void 0===b?void 0:b.homepage_stu_qq_qrcode_url):"".concat(w.Z.IMG_SERVER,"/").concat(null==m||null===(j=m.setting)||void 0===j?void 0:j.homepage_tea_qq_qrcode_url),width:200,height:200})]})})]})})),B=C(7557),O=C.n(B),k=C(41498),T=C.n(k),M=C(3113),V=(0,s.connect)((function(A){return{user:A.user,classroomList:A.classroomList}}))((function(A){A.user;var g=A.dispatch,C=A.classroomList;return(0,P.jsx)(x.Z,{title:"温馨提示",zIndex:9999,footer:null,open:"导出提醒"===C.actionTabs.key,onCancel:function(){g({type:"classroomList/setActionTabs",payload:{}})},children:(0,P.jsxs)("div",{children:[(0,P.jsx)("span",{children:"您在当前栏目中有已导出的表格未下载,请先下载已有表格,然后再导出新的表格。"}),(0,P.jsx)("br",{}),(0,P.jsx)("div",{style:{textAlign:"end"},children:(0,P.jsx)(M.ZP,{type:"primary",onClick:T()(O()().mark((function A(){return O()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:g({type:"classroomList/setActionTabs",payload:{}});case 1:case"end":return A.stop()}}),A)}))),children:"知道了"})})]})})})),N=C(37205),W=C.n(N),S=C(98228),U=C(95237),G=C(43604),J=C(24905),Y="name___sZaG7",Q=(S.Z.TreeNode,(0,s.connect)((function(A){return{classroomList:A.classroomList,loading:A.loading}}))((function(A){var g,C,I=A.classroomList,t=(A.loading,A.dispatch),l=(0,f.useState)(!1),r=n()(l,2),i=r[0],o=r[1],a=(0,f.useState)([]),s=n()(a,2),c=s[0],v=s[1],u=(0,f.useState)(!0),d=n()(u,2),X=d[0],p=d[1],w=(0,f.useState)(!1),y=n()(w,2),b=y[0],j=y[1];return(0,f.useEffect)((function(){var A;"选择班级"==I.actionTabs.key&&v(W()(null==I||null===(A=I.actionTabs)||void 0===A||null===(A=A.course_groups)||void 0===A?void 0:A.map((function(A){return A.course_group_id}))))}),[I.actionTabs.key]),(0,f.useEffect)((function(){var A,g;p((null==I||null===(A=I.actionTabs)||void 0===A||null===(A=A.course_groups)||void 0===A?void 0:A.length)===(null==c?void 0:c.length)),j((null==c?void 0:c.length)>0&&(null==c?void 0:c.length)<(null==I||null===(g=I.actionTabs)||void 0===g||null===(g=g.course_groups)||void 0===g?void 0:g.length))}),[c]),(0,P.jsx)(x.Z,{centered:!0,title:I.actionTabs.title,open:"选择班级"===I.actionTabs.key,okText:"确认导出",cancelText:"取消",width:700,bodyStyle:{minHeight:100},confirmLoading:i,onOk:T()(O()().mark((function A(){var g,C,n;return O()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:o(!0),C=sessionStorage.all_student_works_params?JSON.parse(sessionStorage.all_student_works_params):[],n=JSON.stringify(e()(e()({},C),{},{course_group:W()(c),teacher_comment:null,work_status:null,search:null,file_status:null,member_work:null})),sessionStorage.all_student_works_params=n,localStorage.setItem("all_student_works_param",n),t({type:"classroomList/setActionTabs",payload:{}}),o(!1),null==I||null===(g=I.actionTabs)||void 0===g||g.fn();case 8:case"end":return A.stop()}}),A)}))),onCancel:function(){t({type:"classroomList/setActionTabs",payload:{}})},children:(0,P.jsx)("div",{children:(0,P.jsxs)(U.Z,{children:[(0,P.jsxs)(G.Z,{className:"font14 mb10",span:24,children:["请选择本次需要导出",null==I||null===(g=I.actionTabs)||void 0===g?void 0:g.title,"的班级:"]}),(0,P.jsx)(G.Z,{span:24,children:(0,P.jsx)(J.Z,{indeterminate:b,checked:X,onChange:function(A){var g;v(A.target.checked?null==I||null===(g=I.actionTabs)||void 0===g||null===(g=g.course_groups)||void 0===g?void 0:g.map((function(A){return A.course_group_id})):[])},children:"全选"})}),(0,P.jsx)(J.Z.Group,{style:{width:"100%"},value:c,onChange:function(A){v(A)},children:(0,P.jsx)(U.Z,{children:null==I||null===(C=I.actionTabs)||void 0===C||null===(C=C.course_groups)||void 0===C?void 0:C.map((function(A,g){return(0,P.jsx)(G.Z,{span:8,style:{marginTop:"10px"},children:(0,P.jsxs)(J.Z,{value:A.course_group_id,style:{fontSize:"14px"},children:[(0,P.jsxs)("span",{className:Y,title:A.group_group_name,children:[" ",A.group_group_name]}),(0,P.jsxs)("span",{children:["(",A.count,")"]})]})})}))})})]})})})}))),q=(0,s.connect)((function(A){return{user:A.user}}))((function(A){var g,C,I=A.user,e=(0,f.useState)(!1),t=n()(e,2),l=t[0],r=t[1],i=(0,f.useState)(""),o=n()(i,2),a=o[0],s=o[1];(0,f.useEffect)((function(){var A,g,C=localStorage.getItem("extension-modal");if(null!=I&&null!==(A=I.userInfo)&&void 0!==A&&A.login&&C){var e=v()(),t="".concat(null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login,"-extend-date"),n=localStorage.getItem(t);if(n)if(e<=v()(n))r(!1);else{r(!0),localStorage.removeItem(t),localStorage.removeItem("extension-modal");var l=v()(localStorage.getItem("extension-date")).format("YYYY年MM月DD日");s(l)}else{r(!0),localStorage.removeItem("extension-modal");var f=v()(localStorage.getItem("extension-date")).format("YYYY年MM月DD日");s(f)}return function(){r(!1)}}}),[null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login]);return(0,P.jsx)(x.Z,{title:"温馨提示",open:l,zIndex:9999,centered:!0,width:594,onCancel:function(){r(!1)},footer:(0,P.jsxs)(U.Z,{align:"middle",justify:"space-between",children:[(0,P.jsx)(J.Z,{onChange:function(A){var g,C="".concat(null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login,"-extend-date"),e=v()().endOf("day").format("YYYY-MM-DD HH:mm:ss");A.target.checked?localStorage.setItem(C,e):localStorage.removeItem(C)},children:"今日不再提醒"}),(0,P.jsx)(M.ZP,{onClick:function(){r(!1)},style:{borderRadius:4},type:"primary",children:" 关闭"})]}),children:(0,P.jsxs)("div",{className:"font14",style:{paddingLeft:16},children:[(0,P.jsx)("div",{children:"老师您好!"}),(0,P.jsxs)("div",{style:{textIndent:28},children:["感谢您对头歌平台的认可与支持!根据平台",(0,P.jsx)("a",{href:"https://www.educoder.net/help/agreement",target:"_blank",children:"服务协议"}),",贵单位免费试用期已结束,将限制对相关功能和资源的使用。"]}),(0,P.jsx)("div",{style:{textIndent:28},children:"请您添加以下微信客服,协助您完成后续使用及申请流程,感谢支持与理解。"}),(0,P.jsx)("img",{style:{margin:"8px auto",display:"block"},width:160,src:"安徽"===(null===(C=I.userInfo)||void 0===C?void 0:C.school_province)?"data:image/jpeg;base64,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":"data:image/png;base64,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",alt:"二维码"}),(0,P.jsx)("div",{style:{textAlign:"right"},children:"头歌运营中心"}),(0,P.jsx)("div",{style:{textAlign:"right"},children:a})]})})})),E=C(9951),_="modalityModal___fvSjk",$="modal___wvA_V",AA="itemWarp___JNLoV",gA="close___PycHq",CA="cancelBtn___kgKTp",IA="selfdomModal___doNCF",eA=C(18838),tA=C(89392),nA=C.n(tA),lA=(0,s.connect)((function(A){return{user:A.user,globalSetting:A.globalSetting}}))((function(A){var g,C,I=A.dispatch,e=A.user,t=A.globalSetting,l=(0,f.useState)({}),r=n()(l,2),i=r[0],o=r[1],a=(0,f.useState)([]),c=n()(a,2),u=c[0],d=c[1],X=(0,f.useState)(0),p=n()(X,2),w=p[0],x=p[1],j=(0,f.useState)(!1),m=n()(j,2),h=m[0],H=m[1],L=(0,f.useRef)(null),D=(0,s.useLocation)(),z=function(A){var g,C,I,t="".concat(null==e||null===(g=e.userInfo)||void 0===g?void 0:g.login,"-deadline-operate"),n=localStorage.getItem(t)?JSON.parse(localStorage.getItem(t)):[];n=null===(C=n)||void 0===C?void 0:C.filter((function(g){return g.id!==(null==A?void 0:A.id)}));var l=function(A,g){var C=null;return 0===A&&(C=v()().add(100,"month").unix()),1===A&&(C=v()().add(g,"hour").unix()),2===A&&(C=v()().add(g,"days").unix()),3===A&&(C=v()().add(7*g,"days").unix()),4===A&&(C=v()().add(g,"month").unix()),5===A&&(C=v()().add(3*g,"month").unix()),C}(null==A?void 0:A.show_type,null==A?void 0:A.show_count),r={id:null==A?void 0:A.id,deadline:l,type:null==A?void 0:A.show_type};null===(I=n)||void 0===I||I.push(r),localStorage.setItem(t,JSON.stringify(n))},F=function(){N(null==i?void 0:i.id,"close");var A=u[w+1];A?(z(A),o(A),x(w+1),N(null==A?void 0:A.id,"popup")):H(!1)},Z=[{name:"首页",key:0,path:"/"},{name:"实践课程",key:1,path:"/paths"},{name:"实践项目",key:2,path:"/shixuns"},{name:"教学课堂",key:3,path:"/classrooms"},{name:"在线竞赛",key:4,path:"/competitions"},{name:"教学案例",key:5,path:"/moop_cases"},{name:"交流问答",key:6,path:"/forums/categories"},{name:"个人中心",key:7,path:"/users"}];(0,f.useEffect)((function(){var A,g;null!=t&&t.operateModelPath&&null!=t&&null!==(A=t.setting)&&void 0!==A&&A.main_site&&null!=e&&null!==(g=e.userInfo)&&void 0!==g&&g.login&&(W(),setTimeout((function(){I({type:"globalSetting/setOperateModelPath",payload:""})}),300))}),[null==t?void 0:t.operateModelPath,null==e||null===(g=e.userInfo)||void 0===g?void 0:g.login,null==t||null===(C=t.setting)||void 0===C?void 0:C.main_site]),(0,f.useEffect)((function(){var A,g,C;if(null!=D&&null!==(A=D.pathname)&&void 0!==A&&A.includes("/users")&&4===(null==D||null===(g=D.pathname)||void 0===g||null===(g=g.split("/"))||void 0===g?void 0:g.length))I({type:"globalSetting/setOperateModelPath",payload:"/users"});else if(null!=D&&null!==(C=D.pathname)&&void 0!==C&&C.includes("/forums/categories"))I({type:"globalSetting/setOperateModelPath",payload:"/forums/categories"});else for(var e=0;eparseInt(g)&&h(!0):h(!0)}),[]),(0,P.jsxs)(i.ZP,{locale:o.Z,autoInsertSpaceInButton:!1,children:["/"===p.pathname&&j&&(null==c||null===(g=c.setting)||void 0===g||null===(g=g.adv_index)||void 0===g?void 0:g.image_url)&&(null==c||null===(C=c.setting)||void 0===C?void 0:C.main_site)&&(0,P.jsxs)("div",{onClick:function(){var A;return window.open(null==c||null===(A=c.setting)||void 0===A||null===(A=A.adv_index)||void 0===A?void 0:A.jump_url)},style:{background:"url(".concat(w.Z.IMG_SERVER+(null==c||null===(I=c.setting)||void 0===I||null===(I=I.adv_index)||void 0===I?void 0:I.image_url),") no-repeat center center"),width:"100%",height:60,margin:"0px auto",display:"flex",cursor:"pointer",backgroundSize:"cover"},children:[(0,P.jsxs)("div",{style:{width:1200,margin:"0px auto",height:60,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,P.jsx)("div",{style:{fontSize:24,fontWeight:"bold",color:"#fff",visibility:"hidden"},children:"【计算机学习交流群】领取C语言/Java/Python/程序竞赛资料,点击加入"}),(0,P.jsxs)("div",{onClick:function(){window.open("https://mp.weixin.qq.com/s/31gNJVLlG1nTymoyL1uUJA")},style:{visibility:"hidden",width:"104px",height:"30px",borderRadius:15,display:"flex",alignItems:"center",justifyContent:"center",color:"#FFFFFF",cursor:"pointer",background:"linear-gradient(270deg, #FF4C00 0%, #FF9C01 100%)"},children:["查看详情 ",(0,P.jsx)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAYAAACgu+4kAAAAAXNSR0IArs4c6QAAALhJREFUOE+dkjEOgVEQhL8pRCNR0UlE5Qg6Z9C5gcIFUDmAEyhVWgqJBIVE4hwanUSlkpEn709EIe/ZcrPzZXZ2RWLZrkq6f48rRW+7DWyBjqTrpyYJEAS2x0AP6Ep6FJBkQIQsgDLQl+TQywUE8R7YSZpmA6KLOnAGJpKWsv228kfdgEbWCtFBCzgCQ0mrLIDtGnACZpLmWRnYrgAHYFMEmAywXQLWwEXSIPuRbDeBUdz7mQ34daEX5wM7Fb5x5tMAAAAASUVORK5CYII=",style:{marginLeft:5}})]})]}),(0,P.jsx)("img",{src:fA,onClick:function(A){A.stopPropagation(),localStorage.setItem("mainclose",v()().add(1,"days").unix()+""),h(!1)},style:{width:16,height:16,marginRight:6,marginTop:6,cursor:"pointer"}})]}),"kepukehuan.educoder.net"!==document.domain&&(0,P.jsx)(a.Z,e()({},X)),(0,P.jsx)("section",{className:rA.Z.layoutMainClass,style:{marginTop:"/training"==p.pathname?"-72px":""},children:(0,P.jsx)(s.Outlet,{})}),(0,P.jsx)(R,{}),!(0,y.Ll)()&&"kepukehuan.educoder.net"!==document.domain&&(0,P.jsx)(m,{}),(0,P.jsx)(V,{}),(0,P.jsx)(Q,{}),(0,P.jsx)(q,{}),"Account-ProfessionalAuth"===d.actionTabs.key&&(null===(t=d.actionTabs)||void 0===t||null===(t=t.code)||void 0===t?void 0:t.length)>0&&(0,P.jsx)(iA.Z,{Scoid:null==u||null===(l=u.userInfo)||void 0===l?void 0:l.user_school_id}),!(0,y.Ll)()&&(0,P.jsx)(lA,{})]})}))},55037:function(A,g,C){C.d(g,{AL:function(){return x},Iy:function(){return a},Qv:function(){return v},ez:function(){return w},jb:function(){return s}});var I=C(79800),e=C.n(I),t=C(32834),n=C.n(t),l=C(11690);var r=[],f=["
            "],i=new(n().Renderer),o=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function a(){r.length=0,f=["
              "]}var s={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function c(A,g,C,I){if(g>=A.length||A[g].level<=C)return g;var e=A[g];I.push("
            • "+e.text+"");var t=[];return g=c(A,++g,e.level,t),t.length>0&&(I.push("
                "),t.forEach((function(A){I.push(A)})),I.push("
              ")),I.push("
            • "),g=c(A,g,C,I)}function v(){return c(r,0,0,f),f.push("
            "),f.join("")}var u={heading:function(A){var g=o.exec(A);if(g)return{type:"heading",raw:g[0],depth:g[1].length,text:g[2]}},fences:function(A){var g=this.rules.block.fences.exec(A);if(g){var C=g[0],I=function(A,g){var C=A.match(/^(\s+)(?:```)/);if(null===C)return g;var I=C[1];return g.split("\n").map((function(A){var g=A.match(/^\s+/);return null===g?A:e()(g,1)[0].length>=I.length?A.slice(I.length):A})).join("\n")}(C,g[3]||""),t=g[2]?g[2].trim():g[2];if(["latex","katex","math"].indexOf(t)>=0){var n=X(),l=I;I=n,p[n]={type:"block",expression:l}}return{type:"code",raw:C,lang:t,text:I}}}},d=/(?:\${2})([^\n`]+?)(?:\${2})/gi,P=0,X=function(){return"__special_katext_id_".concat(P++,"__")},p={};function w(){return p}function x(){P=0,p={}}function y(A){return A=A.replace(d,(function(A,g){var C=X();return p[C]={type:"inline",expression:g},C}))}var b=i.listitem;i.listitem=function(A){return b(y(A))};var j=i.paragraph;i.paragraph=function(A){return j(y(A))};var m=i.tablecell;i.tablecell=function(A,g){return m(y(A),g)},i.code=function(A,g,C){var I=(g||"").match(/\S*/)[0];return I?["latex","katex","math"].indexOf(I)>=0?"

            ".concat(A,"

            "):'
            ').concat(C?A:(0,l.escape)(A,!0),"
            \n"):'
            '+(C?A:(0,l.escape)(A,!0))+"
            "},i.heading=function(A,g,C){var I=this.options.headerPrefix+C.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return r.push({anchor:I,level:g,text:A}),"'+A+""},n().setOptions({silent:!0,gfm:!0,pedantic:!1}),n().use({tokenizer:u,renderer:i}),g.ZP=n()},9936:function(A){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA0lJREFUWEfFl0tIVFEYx7/vDnNNIWRUdB4hRYQunAHz0ULBFoWMoozgg6k2LhQLXCS0CBcqIUMQCuqEWUtDJBBXiYuidkpORD7KCK0BdRZpEPiYuXS/ODPdaR73zr1XJmYWl7ncc77/73yvcw6Cxl9FRYVxd1ewE8EVIioGgDxEyGPTieAAAA4Q0Y8Iy1arcdXn8wlaTKPaoOJiuykUQjcAXSWibLXx7DsiHgPgG56nGb9/9WeqOYoAkRUHO4jARQRZWoQTxyBCEBHmrdasWSWPyAL8XXU/kVhyGuFkEG6T52lYzhtJAEVFjguINEBE+ekQl2wg4j6AYTAQ+PAt1m4cQGTlMJpu8VgInoe7sZ6IArCY7+wInnS5Xcl7iNymzWa8L+VEFMBiKbslitCRTrcr2eI4mN3bW5sOVwx7RFxPT+WyvbPTbamsdJj6+gY/BYNB0grY0HAt3+1uOdfTc2/18PBIjIs7QpDnsYuFIgxgNjvuEIlOOeNTU4/Kmpvrzy8vvw+0tnb5BCGkCtHcXF/g9XqqmL2amqbXfv9OUKYyFgKBj48xEvvQc6Umk52dw83NPassL7cXaoFg4hMTnipEgN7e/nfz8ws/5BbGmpXNxt9Ei8VxWRTFoVSujYVYWvIF2tq6ZT2hVVzS4jhuAM1mx20isUEttmoQesUjLZt7iUVFdg8AlakBsO9KEE1N9fler6daze3JGrjGAJ4AkFULQDLESmB6eu77yMhQpX7xsA920Wy2vyCiM1oBEiHYuyAIv1MlnHJTwpNTATCDbrercHT0QTX7v7HxZd/pvLGkp09EcgCPdYeATXS5nAXj48PhOt/a8v8qKbloYiXa3t7t0weBu7qSUBIfGxuO1vni4tuD2D6hDwLXNJehnLjUZBKblVaIcBlqaUSpxKUEOw1EuBGpteLEmKfKdj0Q0Vasthk1Nl7Pn5x8GM52LaWWCOFyda4QxW2GYachcpHNiL2k2o5nZibLa2urzVrE5cJRV9fyanPz63FsL2CH1bjtmH1UOpDk5p415OWZjNvb/hM9zcpgMEBp6aWc9fXPR4nzkg4kbEDGj2T/QpGhQ6nkpoweyyWIjF5MJIiMXs1iszZjl9PE0vlf1/M/hZhM6N1gtVgAAAAASUVORK5CYII="}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[37062],{88820:function(A,g,C){var I=C(82242),e=C.n(I),t=(C(59301),C(93314)),n=C(3113),l=C(37712);g.Z=function(A){var g=A.img,C=A.buttonProps,I=void 0===C?{}:C,r=A.styles,f=void 0===r?{}:r,i=A.customText,o=A.ButtonText,a=A.ButtonClick,s=A.Buttonclass,c=A.ButtonTwo,v=A.imgStyles,u=A.loading,d=void 0!==u&&u;return(0,l.jsxs)("section",{className:"tc animated fadeIn",style:e()(e()({},{color:"#999",margin:"100px auto",visibility:d?"hidden":"visible"}),f),children:[(0,l.jsx)("img",{src:g||t,style:e()(e()({},v),{},{pointerEvents:"none",userSelect:"none"})}),(0,l.jsx)("p",{className:"mt20 font14",children:i||"暂时还没有相关数据哦!"}),o&&(0,l.jsx)(n.ZP,e()(e()({className:s,onClick:a},I),{},{children:o})),c&&c]})}},38278:function(A,g,C){C.d(g,{Z:function(){return y}});var I=C(82242),e=C.n(I),t=C(7557),n=C.n(t),l=C(41498),r=C.n(l),f=C(79800),i=C.n(f),o=C(59301),a={wrp:"wrp___dq7YK",bgBlack:"bgBlack___ARIUV",monaco:"monaco___VnZC3",darkBlue:"darkBlue___UprA9",close:"close___LKoWu",embed:"embed___hvpEJ"},s=C(3113),c=C(38827),v=C(74479),u=C(6848),d=C(23603),P=C(52113),X=C(88820),p=C(41681),w=C(98565),x=C(37712),y=function(A){var g,C,I,t,l,f,y=A.editOffice,b=void 0===y?"view":y,j=A.data,m=(A.theme,A.type),h=A.filename,H=A.monacoEditor,L=A.className,D=A.style,z=A.close,F=A.onClose,Z=A.hasMask,K=A.disabledDownload,R=A.onImgDimensions,B=A.showNodata,O=A.recordInfo,k=(0,o.useState)("https://view.officeapps.live.com/op/view.aspx?src=http://testgs.educoder.net//rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--03541f6234b93d7ac3b2d84e7eb0e6594a952945/1.ppt"),T=i()(k,2),M=(T[0],T[1],(0,o.useState)("")),V=i()(M,2),N=(V[0],V[1]),W=(0,o.useState)(),S=i()(W,2),U=S[0],G=S[1],J="build"===window.ENV?"/react/build":"",Y=location.host.startsWith("localhost")?p.Z.PROXY_SERVER:p.Z.API_SERVER,Q=(0,o.useRef)();null!==(g=j)&&void 0!==g&&g.startsWith("/api")&&"txt"!==m&&(j=p.Z.API_SERVER+j);h&&H&&(H.filename=h),(0,o.useEffect)((function(){var A,g=null===(A=document.cookie)||void 0===A||null===(A=A.replace(/\s/g,""))||void 0===A?void 0:A.split(";");null==g||g.map((function(A){var g=A.split("=");"_educoder_session"===g[0]&&N(g[1])}))}),[]),(0,o.useEffect)((function(){var A;"office"===m&&(j.indexOf("bigfilescdn.")>-1||j.indexOf("bigfiles1")>-1?G({url:j,fileType:(A=j,A.substring(A.lastIndexOf("/")+1).split(".").pop()),model:j.indexOf("model=edit")?"edit":"view"}):q())}),[m,j]);var q=function(){var A=r()(n()().mark((function A(){var g,C,I;return n()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return console.log("data:",j),g=j,j.startsWith("http")||(g=location.origin+g),C=new URL(g).pathname.split("/").pop(),A.next=6,(0,P.gJ)({attachment_id:C});case 6:(I=A.sent).url=Y+I.url,G(I);case 9:case"end":return A.stop()}}),A)})));return function(){return A.apply(this,arguments)}}(),E=function(){j.startsWith("http")||j.startsWith("blob:")?_():(0,d.Sv)(h||"educoder",j,h)},_=function(){O&&(0,w.fc)({id:null==O?void 0:O.id,watch_type:1,course_id:null==O?void 0:O.course_id}),(0,d.Nd)(h||"educoder",decodeURIComponent(j))};return(0,x.jsxs)("div",{style:e()({},D||{}),className:"".concat(Z&&a.bgBlack," ").concat(m?a.wrp:"hide"),children:[z&&(0,x.jsxs)("div",{className:a.close,ref:Q,children:[!!R&&(0,x.jsx)(u.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return Q.current},children:(0,x.jsx)("span",{onClick:function(){F(),R()},children:(0,x.jsx)("i",{className:"icon-yulanpizhu"})})}),!K&&(0,x.jsx)(u.Z,{title:"点击下载此文件",getPopupContainer:function(){return Q.current},children:(0,x.jsx)("span",{onClick:_,children:(0,x.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,x.jsx)(u.Z,{title:"关闭",getPopupContainer:function(){return Q.current},children:(0,x.jsx)("span",{className:"",onClick:F,children:(0,x.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,x.jsx)("div",{className:"".concat(a[L]," ").concat(L," ").concat(a.monaco," ").concat("txt"===m?"show":"hide"),children:"txt"===m&&(0,x.jsx)(x.Fragment,{children:(0,x.jsx)(v.ZP,e()({},H))})}),"audio"===m&&(0,x.jsx)("audio",{src:"".concat((null===(C=j)||void 0===C?void 0:C.indexOf("http://"))>-1||(null===(I=j)||void 0===I?void 0:I.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(j),autoPlay:!0}),"video"===m&&(0,x.jsx)(x.Fragment,{children:(null===(t=j)||void 0===t?void 0:t.indexOf("http"))>-1?(0,x.jsx)("video",{controls:!0,src:"".concat(j),autoPlay:!0}):(0,x.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(j),autoPlay:!0})}),"office"===m&&U&&(0,x.jsx)("iframe",{src:"".concat(J,"/office.html?key=").concat(U.key,"&url=").concat(btoa(U.url),"&callbackUrl=").concat(Y+U.callbackUrl,"&fileType=").concat(U.fileType,"&title=").concat(U.title,"&model=").concat(b,"&officeServer=").concat(p.Z.ONLYOFFICE,"&disabledDownload=").concat(!!K)}),"html"===m&&(0,x.jsx)("iframe",{src:j+"&disposition=inline"}),"pdf"===m&&(0,x.jsx)("iframe",{src:"".concat(J,"/js/pdfview/index.html?filename=").concat(h||"educoder.pdf","&url=").concat(encodeURIComponent(j),"&disabledDownload=").concat(!!K)}),"image"===m&&(0,x.jsx)("img",{src:"".concat((null===(l=j)||void 0===l?void 0:l.indexOf("http://"))>-1||(null===(f=j)||void 0===f?void 0:f.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(j)}),("other"===m||"download"===m)&&(0,x.jsx)(x.Fragment,{children:B?(0,x.jsx)(X.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,x.jsx)(s.ZP,{icon:(0,x.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:E,disabled:K,children:"下载"})}):(0,x.jsxs)(s.ZP,{type:"primary",size:"middle",onClick:E,disabled:K,children:[(0,x.jsx)(c.Z,{}),"点击下载"]})})]})}},39937:function(A,g,C){C.d(g,{z:function(){return x}});var I=C(82242),e=C.n(I),t=C(37205),n=C.n(t),l=C(91232),r=C.n(l),f=C(79800),i=C.n(f),o=C(59301),a=(C(46650),C(55037)),s=(C(64018),C(24830)),c=C(41681),v=C(23603),u=C(15342),d=C(1012),P=C(38278),X=C(37712),p="@▁@",w=/]*>/g;var x=function(A,g){A=A||"";var C=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return g?A.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(C,(function(A,g,C,I,e,t,n){var l=g||I||t,r=C||e||n||"?";return c.Z.API_SERVER+"/api/attachments/"+l+r+"&t="+(0,v.Jn)(l,Date.now())+(A.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):A=A.replace(/(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(A,g,C,I,e,t,n){var l=g||I||t,r=C||e||n||"?";return c.Z.API_SERVER+"/attachments/download/"+l+r+"&t="+(0,v.Jn)(l,Date.now())+(A.indexOf(")")>-1?")":"&")})).replace(C,(function(A,g,C,I,e,t,n){var l=g||I||t,r=C||e||n||"?";return c.Z.API_SERVER+"/api/attachments/"+l+r+"&t="+(0,v.Jn)(l,Date.now())+(A.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(A,g,C,I,e){var t=g||I,n=C||e||"";return'"'+c.Z.API_SERVER+"/api/attachments/"+t+n+t+n+"&t="+(0,v.Jn)(t,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(A,g,C,I,e){var t=g||I,n=C||e||"";return"("+c.Z.API_SERVER+"/files/uploads/"+t+n+t+n+"&t="+(0,v.Jn)(t,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};g.Z=function(A){var g=A.value,C=void 0===g?"":g,I=A.className,t=A.showTextOnly,l=A.showLines,f=A.style,v=void 0===f?{}:f,x=A.stylesPrev,y=void 0===x?{}:x,b=A.highlightKeywords,j=A.showProgramFill,m=(A.isProgramFill,A.disabledFill),h=void 0!==m&&m,H=A.programFillValue,L=A.onFillChange,D=void 0===L?function(A){}:L,z=A.onFillBlur,F=void 0===z?function(){}:z,Z=A.onFillFocus,K=void 0===Z?function(){}:Z,R=String(C),B=(0,o.useState)(""),O=i()(B,2),k=O[0],T=O[1],M=(0,o.useState)("office"),V=i()(M,2),N=V[0],W=V[1],S=(0,o.useState)([]),U=i()(S,2),G=U[0],J=U[1],Y=(0,o.useRef)("a"+(0,d.Z)()),Q={};var q=function(A){return A.replace(/([\s\S]+?)<\/style>/gim,(function(A,g){var C=g.replace(/(\n|\r)/g,"").split("}"),I=[];return C.map((function(A){""!=A&&I.push(".".concat(Y.current," ").concat(A))})),"")}))},E=(0,o.useMemo)((function(){try{R=R.replace(/\(\/attachments\/download\//g,"("+c.Z.API_SERVER+"/attachments/download/").replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\//g,"("+c.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+c.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+c.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(A){}if(j){var A=-1;return R=R.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(g,C,I){var e;return function(A,g,C){var I=document.createElement(A===p?"input":"textarea");I.style.width="100%",I.style.height=A===p?"40px":"151px",I.rows=5,I.spellcheck=!1,I.name="edu-program-fill",I.placeholder="请输入",I.dataset.id=g;var e=Object.keys(Q).length;return Q[e]=I,'')}(g,++A,null==H||null===(e=H[A])||void 0===e?void 0:e.value.replaceAll("<","<").replaceAll(">",">"))})),'
            '.concat(q(R||""),"
            ")}var g=q(R);g=(0,a.ZP)(g);var C=(0,a.ez)();R.match(/\[TOC\]/)&&(g=g.replace("

            [TOC]

            ",(0,a.Qv)()),(0,a.Iy)()),g=g.replace(/(__special_katext_id_\d+__)/g,(function(A,g){var I=C[g],e=I.type,t=I.expression;return(0,u.renderToString)(function(A){var g=document.createElement("div");return g.innerHTML=A,0===g.childNodes.length?"":g.childNodes[0].nodeValue}(t)||"",{displayMode:"block"===e,throwOnError:!1,output:"html"})})),g=g.replace(/▁/g,"▁▁▁▁▁"),(0,a.AL)();var I=document.createElement("div");return I.innerHTML=g,t?I.innerText:b?(gA(I,b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),I.innerHTML):(setTimeout((function(){return eA()}),500),I.innerHTML)}),[R,b]);(0,o.useEffect)((function(){CA.current&&CA.current.querySelectorAll(["input","textarea"]).forEach((function(A){A.oninput=_,A.onblur=$,A.onfocus=AA}))}),[G]),(0,o.useEffect)((function(){if(null!=H&&H.length)try{var A,g=CA.current.querySelectorAll(".edu-program-fill-score"),C=CA.current.querySelectorAll('[name="edu-program-fill"]'),I=r()(C.entries());try{for(I.s();!(A=I.n()).done;){var e,t,n,l=i()(A.value,2),f=l[0],o=l[1];o.value=(null==H||null===(e=H[f])||void 0===e?void 0:e.value)||"","warning"===(null==H||null===(t=H[f])||void 0===t?void 0:t.type)?o.className="program-fill-warning":"success"===(null==H||null===(n=H[f])||void 0===n?void 0:n.type)?o.className="program-fill-success":o.className=""}}catch(A){I.e(A)}finally{I.f()}var a,s=r()(g.entries());try{for(s.s();!(a=s.n()).done;){var c,v,u=i()(a.value,2),d=u[0];u[1].innerHTML=null!=H&&null!==(c=H[d])&&void 0!==c&&c.score?"".concat(null==H||null===(v=H[d])||void 0===v?void 0:v.score,"分"):""}}catch(A){s.e(A)}finally{s.f()}J(H)}catch(A){console.log(A,"error")}}),[H]);var _=function(A){G[A.target.dataset.id]=G[A.target.dataset.id]||{},G[A.target.dataset.id].value=A.target.value,J(n()(G)),D(G,A.target.dataset.id)},$=function(A){G[A.target.dataset.id]=G[A.target.dataset.id]||{},G[A.target.dataset.id].value=A.target.value,J(n()(G)),F(G,A.target.dataset.id)},AA=function(A){G[A.target.dataset.id]=G[A.target.dataset.id]||{},G[A.target.dataset.id].value=A.target.value,J(n()(G)),K(G,A.target.dataset.id)};function gA(A,g){return A.childNodes.forEach((function(A){if(A.childNodes.length>0)gA(A,g);else if("IMG"!==A.nodeName)if(A.innerHTML){var C;A.innerHTML=null===(C=A.innerHTML)||void 0===C?void 0:C.replace(new RegExp(g,"gi"),'$&')}else{var I=document.createElement("span");I.innerHTML=A.textContent.replace(new RegExp(g,"gi"),'$&'),A.replaceWith(I)}}))}var CA=(0,o.useRef)();function IA(A){var g=A.target;if("A"===g.tagName.toUpperCase()){var C=g.getAttribute("href");if(C.indexOf("office")>-1)A.preventDefault(),T(C),W("office");else if(C.indexOf("application/pdf")>-1)A.preventDefault(),T(C),W("pdf");else if(C.indexOf("text/html")>-1)A.preventDefault(),T(C),W("html");else if(C.startsWith("#")){A.preventDefault();var I=document.getElementById(C.replace("#",""));I&&I.scrollIntoView(!0)}}}a.jb.WebkitLineClamp=l,l&&(v=e()(e()({},v),a.jb));var eA=function(){var A,g=null===(A=CA.current)||void 0===A?void 0:A.querySelectorAll("video");null==g||g.forEach((function(A){if(A.oncontextmenu=function(){return!1},A.src.indexOf(".m3u8")>-1)if(A.canPlayType("application/vnd.apple.mpegurl"));else if(s.ZP.isSupported()){var g=new s.ZP;g.loadSource(A.src),g.attachMedia(A)}}))};return(0,o.useEffect)((function(){if(CA.current&&E&&E.match(w)&&window.PR.prettyPrint(),CA.current)return CA.current.addEventListener("click",IA),function(){var A;null===(A=CA.current)||void 0===A||A.removeEventListener("click",IA),(0,a.AL)(),(0,a.Iy)()}}),[E,CA.current,IA]),(0,o.useEffect)((function(){var A,g=function(A){A.preventDefault(),A.clipboardData.setData("text",window.getSelection().toString())};return null===(A=CA.current)||void 0===A||A.addEventListener("copy",g),function(){var A;null===(A=CA.current)||void 0===A||A.removeEventListener("copy",g)}}),[CA.current]),(0,X.jsxs)(X.Fragment,{children:[t&&(0,X.jsx)("div",{ref:CA,children:E}),!t&&(0,X.jsx)("div",{ref:CA,style:e()({},v),className:"".concat(I||""," ").concat(h?"disabled-fill":""," markdown-body ").concat(Y.current),dangerouslySetInnerHTML:{__html:E}}),(0,X.jsx)(P.Z,{close:!0,data:k,type:null!=k&&k.length?N:"",style:e()({},y),onClose:function(){return T("")}})]})}},94905:function(A,g,C){C.r(g),C.d(g,{default:function(){return aA}});var I=C(82242),e=C.n(I),t=C(79800),n=C.n(t),l=C(39647),r=C.n(l),f=C(59301),i=C(92736),o=C(81863),a=C(20205),s=C(64201),c=C(61186),v=C.n(c),u="footer___k7tsL",d="fastLink___WjVYd",P=C(37712),X=function(A){A.user;var g,C,I,e,t,n,l=A.globalSetting;return(0,P.jsxs)("div",{className:u,style:{height:null!=l&&null!==(g=l.setting)&&void 0!==g&&g.main_site?"":"80px",lineHeight:null!=l&&null!==(C=l.setting)&&void 0!==C&&C.main_site?"":"80px"},children:[(null==l||null===(I=l.setting)||void 0===I?void 0:I.main_site)&&(0,P.jsxs)("aside",{className:d,children:[(0,P.jsx)("a",{target:"_blank",href:"/",children:"网站首页"}),!(null!=l&&null!==(e=l.setting)&&void 0!==e&&e.is_local)&&(0,P.jsx)("a",{target:"_blank",href:"/help/about_us",children:"关于我们"}),(0,P.jsx)("a",{target:"_blank",href:"/help/contact_us",children:"联系我们"}),(0,P.jsx)("a",{target:"_blank",href:"/help/cooperatives",children:"合作伙伴"}),(0,P.jsx)("a",{target:"_blank",href:"/help/agreement",children:"服务协议"}),(0,P.jsx)("a",{target:"_blank",href:"/help/help_center",children:"帮助中心"}),(0,P.jsx)("a",{target:"_blank",href:"/help/feedback",children:"意见反馈"})]}),null!==(t=l.setting)&&void 0!==t&&t.footer?(0,P.jsx)("div",{dangerouslySetInnerHTML:{__html:null===(n=l.setting)||void 0===n?void 0:n.footer}}):(0,P.jsx)("div",{children:(0,P.jsxs)("p",{className:"footer_con-p inline lineh-30 font-14",children:[(0,P.jsx)("span",{className:"font-18 fl",children:"©"})," ",v()().year()," EduCoder",(0,P.jsx)("a",{style:{color:"#888"},target:"_blank",href:"http://beian.miit.gov.cn/",className:"ml15 mr15",children:"湘ICP备17009477号"}),(0,P.jsxs)("a",{style:{color:"#888"},target:"_blank",href:"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=43019002000962",className:"mr15",children:[(0,P.jsx)("img",{className:"vertical4",src:"data:image/png;base64,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0p8zAAA7SGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU1NzcyLCAyMDE0LzAxLzEzLTE5OjQ0OjAwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMTEtMTBUMTQ6MDQ6NTArMDg6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTExLTEwVDE0OjA0OjUwKzA4OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNS0xMS0xMFQxNDowNDo1MCswODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6ODBiY2E5ODUtNGY5Yi02ZTRkLTlmYzktZThmNDkyNjdkZjRlPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWRkYWU4MGMtODc3MC0xMWU1LTg0OWEtYmNmZGE2MDI4ZjJlPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6ZDAxN2I5NGUtOTRiZC0yNjQxLThmZjktYmY3YTBhMzY3N2IxPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmQwMTdiOTRlLTk0YmQtMjY0MS04ZmY5LWJmN2EwYTM2NzdiMTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0xMS0xMFQxNDowNDo1MCswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo4MGJjYTk4NS00ZjliLTZlNGQtOWZjOS1lOGY0OTI2N2RmNGU8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTUtMTEtMTBUMTQ6MDQ6NTArMDg6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE0IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPgogICAgICAgICAgICA8cmRmOkJhZz4KICAgICAgICAgICAgICAgPHJkZjpsaT4zQ0I4RkVFOEMyRUJFNkU1QTREQTk3MzI4MzU0MTI0RTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiZGRmY2Y2Zi04NzcwLTExZTUtODQ5YS1iY2ZkYTYwMjhmMmU8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QmFnPgogICAgICAgICA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPnNSR0IgSUVDNjE5NjYtMi4xPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pu6JurQAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABRFJREFUeNpE1OtvW/Udx/H3ufj4+Ph2nDh2vLgrTSPaFNqGtd0Gy9LRTVymNoNM6ihCaEwdQ5sYAo0HTOwBYg/Yk0pDiG3qmLSiPtjGJERbdZSQaUArykXt1la9hDRNY6dpYsexj30uPj7ntwcVyT/w0ucrfT5fSQgBdguAEBlZhDhaiVikF2j22lfPjP77+Kc/9ZyO9p37th7s2rLlbegveZ4g6jggS4AMAKkkkhAC366DJJADgaJlgA/unTx+4qmT/7oyKpxJfdYzUDIma7M6TsXoDH+3/8jgnrG/iOC2o8JrIiQJECjpvlt0Q7JoimWEkQHN1Sf+8MbE40+O7226M/rtCYX9+k2e0me55+48XXfn1f1PvvfwiVdfOSLFlKitSbh8hq9+DitZFRlZSaHK1aJ35uV3f3+4zr79/fy42CD9pwtULwdUpwLqu//ID4JzPHPoEQ7+00dc/vM/Eoary3oCPR5dBROeRTxaH7x+9MWpkd3nRsyBPL/InmP6cAN5jUlgtcELkXpMTj19kr3GGfLfuovv7T62Z/GjN67aM2c3XHz/nVUw6jmo7ruJI5eT2idz23lwu0XzbAP5eh3JjBJdCnBP3iSyrhu96VD562nG7m8z8cUm3vwwKCSkVgx5aBWsL1aK4cfvHwilGKg2KWuOxjxEAh+WXKT1Bto2E/lGC42QyrRDX5cHkkStKRPtUQ9sHB5btwLOXHrvh+1yeTiT0KATRRQKZId7aSKw7ukm2Fck8dIQxjNbkHsMctuytOw2CEEhZ0Dp7L1Ls6d+sgIaicxgw/Lp73FB7+bEaQN1V4rqnrUEZQvpfy3sYzfxp5fRnh+m69mtvHWoBsQZ2qzSmlrALU0VV8BwaW5Po6ZyZ9Gi+HWN19+M859XSgztKJA2ktgXaoQLHu65GsnyMudfvsKrh6Lkh0w299WplD38pUvDK6CstkyrIZNavMLe+wM6fgL/6Dzdf/scuS9Cu0chzKlkdxUoTFylcvA8rbbC2GiEZHUSq6GiJuUIgAoQM746Lm+4Nhrk+3jiGxYH+np4vTyIP3uB7uokcjqGc6GGNZCjnCnwdzkGKZMnvrlAJ1nEvEPCyKw5tgKCnBMNwdyUxZ2D0/z2V9t48fkRjlqboeEzalfpMmXeOpakiQFkeO7nOjsGJpmbBFybsGNtXQFVs729k8zjz/uUFi7yy+EoY+NxJo7bXJK38MCmLyjEKnSO9NGuOazZaPDrB65x89Q1bF9Hz2qoprYRuPUcvOYnj1ZP/+6wM9/Gq/hQmmH9Q0NE8zoEVYKqSnPBIb2uC9Z2Q6nC9NuXcZJZEv0JYr0G6YF9O7XM9z+QhBAAdFr/fWzp/IHXAtdJVz6cR40LencOEiw5+HYL2dDRu+JIWoTqqSk6gUp6+3p8l2p6w8gjcTM1Lmn33TrZd2ZwFp2yOx9z9HyYzu8aIKi3CKwGGBqKZqLFoL3cpFWqoa/tRi/m8ZZt3LIlYmuaKKkUsS9rI9pXUfjohdzXkr2RTAGvHhIGKmGg4C5aIELa1TrNyUUkJQKShHujQiQmk/92IasZ1s9Ch9Uta0qKaPeOhyw7/ZpdKrU0ZZlUrkNEstEkH8VbRjgOyY1ZUgMpZK2JmtaQMr3XO+pdv1GN23+kaIus1kb4SBHVblTjTzsX8y859cUHPX9251c29WwKLSmhm3KXGkti3eB6rMe01dzI2aWphXFnpnaib2culBQFEbgA/H8ALiI3EysggNoAAAAASUVORK5CYII="}),"湘公网安备43019002000962号"]}),(0,P.jsx)("a",{href:"https://team.trustie.net",style:{color:"#888"},target:"_blank",children:"Trustie"}),"   &   IntelliDE inside. ",(0,P.jsx)("span",{className:"mr15",children:"版权所有 湖南智擎科技有限公司"})]})})]})},p="newFooter___XUH_2",w=C(41681),x=C(43418),y=C(23603),b=C(39937),j=function(A){A.user;var g,C,I,e=A.globalSetting,t=(0,f.useState)(!1),l=n()(t,2),r=l[0],i=l[1];(0,f.useEffect)((function(){return window.addEventListener("click",o),function(){window.removeEventListener("click",o)}}),[]);var o=function(A){var g,C;null==A||!A.target||"头歌教师交流社区"!==(null==A||null===(g=A.target)||void 0===g?void 0:g.innerText)&&"头歌教师交流社区"!==(null==A||null===(C=A.target)||void 0===C||null===(C=C.nextElementSibling)||void 0===C?void 0:C.innerText)||function(A,g){if(A.className===g)return A;for(var C=0,I=A;I=I.parentNode;C++){if(I.className===g)return I;if(I==document.documentElement)return!1}}(A.target,"module-introduce")&&(/macintosh|mac os x/i.test(navigator.userAgent)?i(!0):(0,y.xg)("//shang.qq.com/wpa/qunwpa?idkey=2f2043d88c1bd61d182b98bf1e061c6185e23055bec832c07d8148fe11c5a6cd"))};return(0,P.jsxs)(f.Fragment,{children:[(0,P.jsx)(x.Z,{centered:!0,destroyOnClose:!0,open:r,title:"头歌教师交流社区",width:"500px",footer:null,onCancel:function(){return i(!1)},children:(0,P.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center"},children:[(0,P.jsxs)("p",{children:["扫码或搜索加入头歌教师交流QQ群:",null==e||null===(g=e.setting)||void 0===g?void 0:g.homepage_tea_qq_number," "]}),(0,P.jsx)("img",{src:"".concat(w.Z.IMG_SERVER,"/").concat(null==e||null===(C=e.setting)||void 0===C?void 0:C.homepage_tea_qq_qrcode_url),width:200,height:200})]})}),(0,P.jsx)("div",{className:p,dangerouslySetInnerHTML:{__html:(0,b.z)(null===(I=e.setting)||void 0===I?void 0:I.footer,!0)}})]})},m=(0,s.connect)((function(A){var g=A.user,C=A.loading;return{user:g,globalSetting:A.globalSetting,loading:C.models.index}}))((function(A){var g,C,I=A.user,e=A.globalSetting;A.loading,A.dispatch;return e.showFooter&&e.showHeaderFooter?(0,P.jsx)("section",{id:"footer",children:null==e||null===(g=e.setting)||void 0===g||!g.main_site||null!=e&&null!==(C=e.setting)&&void 0!==C&&C.is_local?(0,P.jsx)(X,{user:I,globalSetting:e}):(0,P.jsx)(j,{user:I,globalSetting:e})}):(0,P.jsx)(P.Fragment,{children:" "})})),h=C(6848),H=C(20923),L=C(96686),D="sideBar___iM1tf",z="wrap___GEY86",F="backTop___skoyU",Z="ul___JwWww",K=C(32637),R=(0,s.connect)((function(A){var g=A.loading,C=A.globalSetting,I=A.user,e=A.shixunHomeworks;return{globalSetting:C,user:I,loading:g.models.index,shixunHomeworks:e}}))((function(A){var g,C,I,e,t,l,r,i,o,a,c,v,u,d,X,p,b,j,m=A.globalSetting,R=(A.loading,A.shixunHomeworks),B=A.user,O=(A.dispatch,(0,f.useState)(!1)),k=n()(O,2),T=k[0],M=k[1],V=(0,f.useState)(!1),N=n()(V,2),W=N[0],S=N[1],U=(0,f.useState)(localStorage.hideCustom?JSON.parse(localStorage.hideCustom):[]),G=n()(U,1)[0],J=(0,f.useState)("1"!=(null===(g=localStorage)||void 0===g?void 0:g.hidesidebar)),Y=n()(J,2),Q=Y[0],q=Y[1],E=(0,f.useState)(!1),_=n()(E,2),$=(_[0],_[1]),AA=(0,f.useState)(!1),gA=n()(AA,2),CA=gA[0],IA=gA[1],eA=(0,f.useRef)(),tA=(0,s.useLocation)();(0,f.useEffect)((function(){return window.addEventListener("scroll",nA),function(){return window.removeEventListener("scroll",nA)}}),[]),(0,f.useEffect)((function(){setTimeout((function(){localStorage.setItem("hidesidebar","1"),q(!1)}),5e3)}),[]),(0,f.useEffect)((function(){99===R.actionTabs.type&&($(!0),setTimeout((function(){$(!1)}),5e3))}),[R.actionTabs]),(0,f.useEffect)((function(){"www.educoder.net"===document.domain&&("/"===tA.pathname||tA.pathname.indexOf("/competitions/detail/")>-1||tA.pathname.indexOf("/competitions")>-1&&3===tA.pathname.split("/").length)?IA(!0):IA(!1)}),[tA.pathname]),(0,f.useEffect)((function(){var A,g,C;null!=B&&null!==(A=B.userInfo)&&void 0!==A&&A.login&&(G.includes(null==B||null===(g=B.userInfo)||void 0===g?void 0:g.login)||null!=m&&null!==(C=m.setting)&&void 0!==C&&C.is_local||setTimeout((function(){var A,g,C=document.createEvent("Events");(C.initEvent("mouseout",!0,!1),eA)&&(null===(g=eA.current)||void 0===g||g.dispatchEvent(C));G.push(null==B||null===(A=B.userInfo)||void 0===A?void 0:A.login),localStorage.hideCustom=JSON.stringify(G)}),5e3))}),[B]);var nA=function(){var A;"/Activities"!==tA.pathname?M((null===(A=document)||void 0===A||null===(A=A.documentElement)||void 0===A?void 0:A.scrollTop)>0):M(!1)};return(0,P.jsxs)("div",{className:D,children:[(0,P.jsxs)("div",{id:"wechat_QR_code_ids",children:[CA&&!(0,y.s2)()&&(0,P.jsx)(h.Z,{placement:"left",overlayInnerStyle:{padding:26},getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,P.jsxs)("div",{className:"flex-wrp flex_box_column flex_box_center",children:[(0,P.jsx)(H.Z,{errorLevel:"H",value:window.location.href,bgColor:"#FFF",size:190,icon:"".concat(w.Z.IMG_SERVER,"/").concat(null==m||null===(C=m.setting)||void 0===C?void 0:C.tab_logo_url)}),(0,P.jsxs)("div",{className:"tc font15 mt20",children:["请使用微信扫一扫分享",tA.pathname.indexOf("/competitions")>-1?"竞赛":"头歌"]})]}),children:(0,P.jsx)("div",{className:z,children:(0,P.jsx)("i",{className:"iconfont icon-icon-weixin c-light-primary font22"})})}),!m.onlyShowBackTop&&(null==m?void 0:m.onlyShowBackTopIcons)&&Q&&(0,P.jsxs)(f.Fragment,{children:[!(null==B||null===(I=B.userInfo)||void 0===I||!I.login)&&(0,P.jsx)(h.Z,{placement:"left",defaultVisible:!(null!=G&&G.includes(null==B||null===(e=B.userInfo)||void 0===e?void 0:e.login)),getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,P.jsxs)("div",{children:[(0,P.jsx)("div",{className:"tc",children:(0,P.jsx)("img",{className:"mt10",src:K,width:"188px",height:"188px"})}),(0,P.jsx)("div",{className:"tc font15 mt10",children:"免费教研助理"}),(0,P.jsx)("div",{className:"tc font15",children:"微信扫一扫添加"}),(0,P.jsx)("div",{className:"pt10 font12",children:(0,P.jsxs)("ul",{className:Z,children:[(0,P.jsx)("li",{children:"解答老师疑惑、帮助老师更快熟悉和使用平台教学"}),(0,P.jsx)("li",{children:"协助老师创建课堂、课程设计、做好教学工作。"}),(0,P.jsx)("li",{children:"根据老师教学方向,分享头歌平台C9院校、985高校、211高校、双一流高校老师经典实践教学案例。"})]})})]}),children:(0,P.jsx)("div",{className:z,ref:eA,children:(0,P.jsx)("a",{href:"javascript:void(0)",children:(0,P.jsx)("i",{className:"iconfont icon-yijianfankui1 c-light-primary font22"})})})}),!(null!=m&&null!==(t=m.setting)&&void 0!==t&&t.is_local)&&(0,P.jsx)(h.Z,{placement:"left",getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,P.jsxs)("div",{children:[(0,P.jsx)("img",{src:"".concat(w.Z.IMG_SERVER,"/images/educoder/EWM.jpg"),width:"158px",height:"158px"}),(0,P.jsx)("div",{className:"tc font15",children:"微信扫一扫"}),(0,P.jsx)("div",{className:"tc font15",children:"关注公众号"})]}),children:(0,P.jsx)("div",{className:z,children:(0,P.jsx)("i",{className:"iconfont icon-erweima1 c-light-primary font22"})})}),!(null!=m&&null!==(l=m.setting)&&void 0!==l&&l.is_local)&&(0,P.jsx)(h.Z,{placement:"left",title:"在线咨询",children:(0,P.jsx)("div",{className:z,children:(0,P.jsx)("a",{onClick:function(){/macintosh|mac os x/i.test(navigator.userAgent);S(!0)},className:"c-white",children:(0,P.jsx)("i",{className:"iconfont icon-QQ1 c-light-primary font22"})})})}),(0,P.jsx)("div",{onClick:function(){q(!1),localStorage.setItem("hidesidebar","1")},style:{textAlign:"center",fontSize:"14px",color:"#0152d9",margin:"10px 0px",cursor:"pointer"},children:"收起"})]}),(null==m||null===(r=m.setting)||void 0===r?void 0:r.main_site)&&!m.onlyShowBackTop&&(null==m?void 0:m.onlyShowBackTopIcons)&&!Q&&(0,P.jsx)("div",{onClick:function(){q(!0),localStorage.setItem("hidesidebar","2")},style:{textAlign:"center",fontSize:"16px",color:"#0152d9",background:"#fff",margin:"10px 0px",cursor:"pointer",position:"absolute",left:"80px",top:"-150px",boxShadow:"0px 0px 8px 0px #f1f1f1",width:"30px",writingMode:"vertical-lr",height:"100px",paddingLeft:"3px"},children:"联系我们"}),(null==m?void 0:m.showQuestionBackTop)&&!(null!=m&&null!==(i=m.setting)&&void 0!==i&&i.is_local)&&(0,P.jsx)(h.Z,{placement:"left",getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,P.jsxs)("div",{children:[(0,P.jsx)("img",{src:"student"===(null==B||null===(o=B.userInfo)||void 0===o?void 0:o.identity)?"".concat(w.Z.IMG_SERVER,"/").concat(null==m||null===(a=m.setting)||void 0===a?void 0:a.homepage_stu_qq_qrcode_url):"".concat(w.Z.IMG_SERVER,"/").concat(null==m||null===(c=m.setting)||void 0===c?void 0:c.homepage_tea_qq_qrcode_url),width:"158px",height:"158px"}),(0,P.jsx)("div",{className:"tc font15 mt10",style:{marginBottom:6},children:"扫码进编程交流群"})]}),children:(0,P.jsx)("div",{className:z,children:(0,P.jsx)("i",{className:"iconfont icon-erweima1 c-light-primary font22"})})}),T&&(0,P.jsx)(h.Z,{placement:"left",title:"返回顶部",children:(0,P.jsx)(L.Z,{className:"".concat(z," ").concat(F),visibilityHeight:0,children:(0,P.jsx)("i",{className:"iconfont icon-huidaodingbu c-light-primary font14"})})})]}),(0,P.jsx)(x.Z,{centered:!0,destroyOnClose:!0,open:W,title:"student"===(null==B||null===(v=B.userInfo)||void 0===v?void 0:v.identity)?"头歌学生交流社区":"头歌教师交流社区",width:"500px",footer:null,onCancel:function(){return S(!1)},children:(0,P.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",marginBottom:20},children:[(0,P.jsx)("p",{children:"student"===(null==B||null===(u=B.userInfo)||void 0===u?void 0:u.identity)?"扫码或搜索加入头歌学生交流QQ群:".concat(null==m||null===(d=m.setting)||void 0===d?void 0:d.homepage_stu_qq_number):"扫码或搜索加入头歌教师交流QQ群:".concat(null==m||null===(X=m.setting)||void 0===X?void 0:X.homepage_tea_qq_number)}),(0,P.jsx)("img",{src:"student"===(null==B||null===(p=B.userInfo)||void 0===p?void 0:p.identity)?"".concat(w.Z.IMG_SERVER,"/").concat(null==m||null===(b=m.setting)||void 0===b?void 0:b.homepage_stu_qq_qrcode_url):"".concat(w.Z.IMG_SERVER,"/").concat(null==m||null===(j=m.setting)||void 0===j?void 0:j.homepage_tea_qq_qrcode_url),width:200,height:200})]})})]})})),B=C(7557),O=C.n(B),k=C(41498),T=C.n(k),M=C(3113),V=(0,s.connect)((function(A){return{user:A.user,classroomList:A.classroomList}}))((function(A){A.user;var g=A.dispatch,C=A.classroomList;return(0,P.jsx)(x.Z,{title:"温馨提示",zIndex:9999,footer:null,open:"导出提醒"===C.actionTabs.key,onCancel:function(){g({type:"classroomList/setActionTabs",payload:{}})},children:(0,P.jsxs)("div",{children:[(0,P.jsx)("span",{children:"您在当前栏目中有已导出的表格未下载,请先下载已有表格,然后再导出新的表格。"}),(0,P.jsx)("br",{}),(0,P.jsx)("div",{style:{textAlign:"end"},children:(0,P.jsx)(M.ZP,{type:"primary",onClick:T()(O()().mark((function A(){return O()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:g({type:"classroomList/setActionTabs",payload:{}});case 1:case"end":return A.stop()}}),A)}))),children:"知道了"})})]})})})),N=C(37205),W=C.n(N),S=C(98228),U=C(95237),G=C(43604),J=C(24905),Y="name___sZaG7",Q=(S.Z.TreeNode,(0,s.connect)((function(A){return{classroomList:A.classroomList,loading:A.loading}}))((function(A){var g,C,I=A.classroomList,t=(A.loading,A.dispatch),l=(0,f.useState)(!1),r=n()(l,2),i=r[0],o=r[1],a=(0,f.useState)([]),s=n()(a,2),c=s[0],v=s[1],u=(0,f.useState)(!0),d=n()(u,2),X=d[0],p=d[1],w=(0,f.useState)(!1),y=n()(w,2),b=y[0],j=y[1];return(0,f.useEffect)((function(){var A;"选择班级"==I.actionTabs.key&&v(W()(null==I||null===(A=I.actionTabs)||void 0===A||null===(A=A.course_groups)||void 0===A?void 0:A.map((function(A){return A.course_group_id}))))}),[I.actionTabs.key]),(0,f.useEffect)((function(){var A,g;p((null==I||null===(A=I.actionTabs)||void 0===A||null===(A=A.course_groups)||void 0===A?void 0:A.length)===(null==c?void 0:c.length)),j((null==c?void 0:c.length)>0&&(null==c?void 0:c.length)<(null==I||null===(g=I.actionTabs)||void 0===g||null===(g=g.course_groups)||void 0===g?void 0:g.length))}),[c]),(0,P.jsx)(x.Z,{centered:!0,title:I.actionTabs.title,open:"选择班级"===I.actionTabs.key,okText:"确认导出",cancelText:"取消",width:700,bodyStyle:{minHeight:100},confirmLoading:i,onOk:T()(O()().mark((function A(){var g,C,n;return O()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:o(!0),C=sessionStorage.all_student_works_params?JSON.parse(sessionStorage.all_student_works_params):[],n=JSON.stringify(e()(e()({},C),{},{course_group:W()(c),teacher_comment:null,work_status:null,search:null,file_status:null,member_work:null})),sessionStorage.all_student_works_params=n,localStorage.setItem("all_student_works_param",n),t({type:"classroomList/setActionTabs",payload:{}}),o(!1),null==I||null===(g=I.actionTabs)||void 0===g||g.fn();case 8:case"end":return A.stop()}}),A)}))),onCancel:function(){t({type:"classroomList/setActionTabs",payload:{}})},children:(0,P.jsx)("div",{children:(0,P.jsxs)(U.Z,{children:[(0,P.jsxs)(G.Z,{className:"font14 mb10",span:24,children:["请选择本次需要导出",null==I||null===(g=I.actionTabs)||void 0===g?void 0:g.title,"的班级:"]}),(0,P.jsx)(G.Z,{span:24,children:(0,P.jsx)(J.Z,{indeterminate:b,checked:X,onChange:function(A){var g;v(A.target.checked?null==I||null===(g=I.actionTabs)||void 0===g||null===(g=g.course_groups)||void 0===g?void 0:g.map((function(A){return A.course_group_id})):[])},children:"全选"})}),(0,P.jsx)(J.Z.Group,{style:{width:"100%"},value:c,onChange:function(A){v(A)},children:(0,P.jsx)(U.Z,{children:null==I||null===(C=I.actionTabs)||void 0===C||null===(C=C.course_groups)||void 0===C?void 0:C.map((function(A,g){return(0,P.jsx)(G.Z,{span:8,style:{marginTop:"10px"},children:(0,P.jsxs)(J.Z,{value:A.course_group_id,style:{fontSize:"14px"},children:[(0,P.jsxs)("span",{className:Y,title:A.group_group_name,children:[" ",A.group_group_name]}),(0,P.jsxs)("span",{children:["(",A.count,")"]})]})})}))})})]})})})}))),q=(0,s.connect)((function(A){return{user:A.user}}))((function(A){var g,C,I=A.user,e=(0,f.useState)(!1),t=n()(e,2),l=t[0],r=t[1],i=(0,f.useState)(""),o=n()(i,2),a=o[0],s=o[1];(0,f.useEffect)((function(){var A,g,C=localStorage.getItem("extension-modal");if(null!=I&&null!==(A=I.userInfo)&&void 0!==A&&A.login&&C){var e=v()(),t="".concat(null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login,"-extend-date"),n=localStorage.getItem(t);if(n)if(e<=v()(n))r(!1);else{r(!0),localStorage.removeItem(t),localStorage.removeItem("extension-modal");var l=v()(localStorage.getItem("extension-date")).format("YYYY年MM月DD日");s(l)}else{r(!0),localStorage.removeItem("extension-modal");var f=v()(localStorage.getItem("extension-date")).format("YYYY年MM月DD日");s(f)}return function(){r(!1)}}}),[null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login]);return(0,P.jsx)(x.Z,{title:"温馨提示",open:l,zIndex:9999,centered:!0,width:594,onCancel:function(){r(!1)},footer:(0,P.jsxs)(U.Z,{align:"middle",justify:"space-between",children:[(0,P.jsx)(J.Z,{onChange:function(A){var g,C="".concat(null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login,"-extend-date"),e=v()().endOf("day").format("YYYY-MM-DD HH:mm:ss");A.target.checked?localStorage.setItem(C,e):localStorage.removeItem(C)},children:"今日不再提醒"}),(0,P.jsx)(M.ZP,{onClick:function(){r(!1)},style:{borderRadius:4},type:"primary",children:" 关闭"})]}),children:(0,P.jsxs)("div",{className:"font14",style:{paddingLeft:16},children:[(0,P.jsx)("div",{children:"老师您好!"}),(0,P.jsxs)("div",{style:{textIndent:28},children:["感谢您对头歌平台的认可与支持!根据平台",(0,P.jsx)("a",{href:"https://www.educoder.net/help/agreement",target:"_blank",children:"服务协议"}),",贵单位免费试用期已结束,将限制对相关功能和资源的使用。"]}),(0,P.jsx)("div",{style:{textIndent:28},children:"请您添加以下微信客服,协助您完成后续使用及申请流程,感谢支持与理解。"}),(0,P.jsx)("img",{style:{margin:"8px auto",display:"block"},width:160,src:"安徽"===(null===(C=I.userInfo)||void 0===C?void 0:C.school_province)?"data:image/jpeg;base64,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":"data:image/png;base64,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",alt:"二维码"}),(0,P.jsx)("div",{style:{textAlign:"right"},children:"头歌运营中心"}),(0,P.jsx)("div",{style:{textAlign:"right"},children:a})]})})})),E=C(9951),_="modalityModal___fvSjk",$="modal___wvA_V",AA="itemWarp___JNLoV",gA="close___PycHq",CA="cancelBtn___kgKTp",IA="selfdomModal___doNCF",eA=C(18838),tA=C(89392),nA=C.n(tA),lA=(0,s.connect)((function(A){return{user:A.user,globalSetting:A.globalSetting}}))((function(A){var g,C,I=A.dispatch,e=A.user,t=A.globalSetting,l=(0,f.useState)({}),r=n()(l,2),i=r[0],o=r[1],a=(0,f.useState)([]),c=n()(a,2),u=c[0],d=c[1],X=(0,f.useState)(0),p=n()(X,2),w=p[0],x=p[1],j=(0,f.useState)(!1),m=n()(j,2),h=m[0],H=m[1],L=(0,f.useRef)(null),D=(0,s.useLocation)(),z=function(A){var g,C,I,t="".concat(null==e||null===(g=e.userInfo)||void 0===g?void 0:g.login,"-deadline-operate"),n=localStorage.getItem(t)?JSON.parse(localStorage.getItem(t)):[];n=null===(C=n)||void 0===C?void 0:C.filter((function(g){return g.id!==(null==A?void 0:A.id)}));var l=function(A,g){var C=null;return 0===A&&(C=v()().add(100,"month").unix()),1===A&&(C=v()().add(g,"hour").unix()),2===A&&(C=v()().add(g,"days").unix()),3===A&&(C=v()().add(7*g,"days").unix()),4===A&&(C=v()().add(g,"month").unix()),5===A&&(C=v()().add(3*g,"month").unix()),C}(null==A?void 0:A.show_type,null==A?void 0:A.show_count),r={id:null==A?void 0:A.id,deadline:l,type:null==A?void 0:A.show_type};null===(I=n)||void 0===I||I.push(r),localStorage.setItem(t,JSON.stringify(n))},F=function(){N(null==i?void 0:i.id,"close");var A=u[w+1];A?(z(A),o(A),x(w+1),N(null==A?void 0:A.id,"popup")):H(!1)},Z=[{name:"首页",key:0,path:"/"},{name:"实践课程",key:1,path:"/paths"},{name:"实践项目",key:2,path:"/shixuns"},{name:"教学课堂",key:3,path:"/classrooms"},{name:"在线竞赛",key:4,path:"/competitions"},{name:"教学案例",key:5,path:"/moop_cases"},{name:"交流问答",key:6,path:"/forums/categories"},{name:"个人中心",key:7,path:"/users"}];(0,f.useEffect)((function(){var A,g;null!=t&&t.operateModelPath&&null!=t&&null!==(A=t.setting)&&void 0!==A&&A.main_site&&null!=e&&null!==(g=e.userInfo)&&void 0!==g&&g.login&&(W(),setTimeout((function(){I({type:"globalSetting/setOperateModelPath",payload:""})}),300))}),[null==t?void 0:t.operateModelPath,null==e||null===(g=e.userInfo)||void 0===g?void 0:g.login,null==t||null===(C=t.setting)||void 0===C?void 0:C.main_site]),(0,f.useEffect)((function(){var A,g,C;if(null!=D&&null!==(A=D.pathname)&&void 0!==A&&A.includes("/users")&&4===(null==D||null===(g=D.pathname)||void 0===g||null===(g=g.split("/"))||void 0===g?void 0:g.length))I({type:"globalSetting/setOperateModelPath",payload:"/users"});else if(null!=D&&null!==(C=D.pathname)&&void 0!==C&&C.includes("/forums/categories"))I({type:"globalSetting/setOperateModelPath",payload:"/forums/categories"});else for(var e=0;eparseInt(g)&&h(!0):h(!0)}),[]),(0,P.jsxs)(i.ZP,{locale:o.Z,autoInsertSpaceInButton:!1,children:["/"===p.pathname&&j&&(null==c||null===(g=c.setting)||void 0===g||null===(g=g.adv_index)||void 0===g?void 0:g.image_url)&&(null==c||null===(C=c.setting)||void 0===C?void 0:C.main_site)&&(0,P.jsxs)("div",{onClick:function(){var A;return window.open(null==c||null===(A=c.setting)||void 0===A||null===(A=A.adv_index)||void 0===A?void 0:A.jump_url)},style:{background:"url(".concat(w.Z.IMG_SERVER+(null==c||null===(I=c.setting)||void 0===I||null===(I=I.adv_index)||void 0===I?void 0:I.image_url),") no-repeat center center"),width:"100%",height:60,margin:"0px auto",display:"flex",cursor:"pointer",backgroundSize:"cover"},children:[(0,P.jsxs)("div",{style:{width:1200,margin:"0px auto",height:60,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,P.jsx)("div",{style:{fontSize:24,fontWeight:"bold",color:"#fff",visibility:"hidden"},children:"【计算机学习交流群】领取C语言/Java/Python/程序竞赛资料,点击加入"}),(0,P.jsxs)("div",{onClick:function(){window.open("https://mp.weixin.qq.com/s/31gNJVLlG1nTymoyL1uUJA")},style:{visibility:"hidden",width:"104px",height:"30px",borderRadius:15,display:"flex",alignItems:"center",justifyContent:"center",color:"#FFFFFF",cursor:"pointer",background:"linear-gradient(270deg, #FF4C00 0%, #FF9C01 100%)"},children:["查看详情 ",(0,P.jsx)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAYAAACgu+4kAAAAAXNSR0IArs4c6QAAALhJREFUOE+dkjEOgVEQhL8pRCNR0UlE5Qg6Z9C5gcIFUDmAEyhVWgqJBIVE4hwanUSlkpEn709EIe/ZcrPzZXZ2RWLZrkq6f48rRW+7DWyBjqTrpyYJEAS2x0AP6Ep6FJBkQIQsgDLQl+TQywUE8R7YSZpmA6KLOnAGJpKWsv228kfdgEbWCtFBCzgCQ0mrLIDtGnACZpLmWRnYrgAHYFMEmAywXQLWwEXSIPuRbDeBUdz7mQ34daEX5wM7Fb5x5tMAAAAASUVORK5CYII=",style:{marginLeft:5}})]})]}),(0,P.jsx)("img",{src:fA,onClick:function(A){A.stopPropagation(),localStorage.setItem("mainclose",v()().add(1,"days").unix()+""),h(!1)},style:{width:16,height:16,marginRight:6,marginTop:6,cursor:"pointer"}})]}),"kepukehuan.educoder.net"!==document.domain&&(0,P.jsx)(a.Z,e()({},X)),(0,P.jsx)("section",{className:rA.Z.layoutMainClass,style:{marginTop:"/training"==p.pathname?"-72px":""},children:(0,P.jsx)(s.Outlet,{})}),(0,P.jsx)(R,{}),!(0,y.Ll)()&&"kepukehuan.educoder.net"!==document.domain&&(0,P.jsx)(m,{}),(0,P.jsx)(V,{}),(0,P.jsx)(Q,{}),(0,P.jsx)(q,{}),"Account-ProfessionalAuth"===d.actionTabs.key&&(null===(t=d.actionTabs)||void 0===t||null===(t=t.code)||void 0===t?void 0:t.length)>0&&(0,P.jsx)(iA.Z,{Scoid:null==u||null===(l=u.userInfo)||void 0===l?void 0:l.user_school_id}),!(0,y.Ll)()&&(0,P.jsx)(lA,{})]})}))},55037:function(A,g,C){C.d(g,{AL:function(){return x},Iy:function(){return a},Qv:function(){return v},ez:function(){return w},jb:function(){return s}});var I=C(79800),e=C.n(I),t=C(32834),n=C.n(t),l=C(11690);var r=[],f=["
              "],i=new(n().Renderer),o=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function a(){r.length=0,f=["
                "]}var s={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function c(A,g,C,I){if(g>=A.length||A[g].level<=C)return g;var e=A[g];I.push("
              • "+e.text+"");var t=[];return g=c(A,++g,e.level,t),t.length>0&&(I.push("
                  "),t.forEach((function(A){I.push(A)})),I.push("
                ")),I.push("
              • "),g=c(A,g,C,I)}function v(){return c(r,0,0,f),f.push("
              "),f.join("")}var u={heading:function(A){var g=o.exec(A);if(g)return{type:"heading",raw:g[0],depth:g[1].length,text:g[2]}},fences:function(A){var g=this.rules.block.fences.exec(A);if(g){var C=g[0],I=function(A,g){var C=A.match(/^(\s+)(?:```)/);if(null===C)return g;var I=C[1];return g.split("\n").map((function(A){var g=A.match(/^\s+/);return null===g?A:e()(g,1)[0].length>=I.length?A.slice(I.length):A})).join("\n")}(C,g[3]||""),t=g[2]?g[2].trim():g[2];if(["latex","katex","math"].indexOf(t)>=0){var n=X(),l=I;I=n,p[n]={type:"block",expression:l}}return{type:"code",raw:C,lang:t,text:I}}}},d=/(?:\${2})([^\n`]+?)(?:\${2})/gi,P=0,X=function(){return"__special_katext_id_".concat(P++,"__")},p={};function w(){return p}function x(){P=0,p={}}function y(A){return A=A.replace(d,(function(A,g){var C=X();return p[C]={type:"inline",expression:g},C}))}var b=i.listitem;i.listitem=function(A){return b(y(A))};var j=i.paragraph;i.paragraph=function(A){return j(y(A))};var m=i.tablecell;i.tablecell=function(A,g){return m(y(A),g)},i.code=function(A,g,C){var I=(g||"").match(/\S*/)[0];return I?["latex","katex","math"].indexOf(I)>=0?"

              ".concat(A,"

              "):'
              ').concat(C?A:(0,l.escape)(A,!0),"
              \n"):'
              '+(C?A:(0,l.escape)(A,!0))+"
              "},i.heading=function(A,g,C){var I=this.options.headerPrefix+C.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return r.push({anchor:I,level:g,text:A}),"'+A+""},n().setOptions({silent:!0,gfm:!0,pedantic:!1}),n().use({tokenizer:u,renderer:i}),g.ZP=n()},9936:function(A){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA0lJREFUWEfFl0tIVFEYx7/vDnNNIWRUdB4hRYQunAHz0ULBFoWMoozgg6k2LhQLXCS0CBcqIUMQCuqEWUtDJBBXiYuidkpORD7KCK0BdRZpEPiYuXS/ODPdaR73zr1XJmYWl7ncc77/73yvcw6Cxl9FRYVxd1ewE8EVIioGgDxEyGPTieAAAA4Q0Y8Iy1arcdXn8wlaTKPaoOJiuykUQjcAXSWibLXx7DsiHgPgG56nGb9/9WeqOYoAkRUHO4jARQRZWoQTxyBCEBHmrdasWSWPyAL8XXU/kVhyGuFkEG6T52lYzhtJAEVFjguINEBE+ekQl2wg4j6AYTAQ+PAt1m4cQGTlMJpu8VgInoe7sZ6IArCY7+wInnS5Xcl7iNymzWa8L+VEFMBiKbslitCRTrcr2eI4mN3bW5sOVwx7RFxPT+WyvbPTbamsdJj6+gY/BYNB0grY0HAt3+1uOdfTc2/18PBIjIs7QpDnsYuFIgxgNjvuEIlOOeNTU4/Kmpvrzy8vvw+0tnb5BCGkCtHcXF/g9XqqmL2amqbXfv9OUKYyFgKBj48xEvvQc6Umk52dw83NPassL7cXaoFg4hMTnipEgN7e/nfz8ws/5BbGmpXNxt9Ei8VxWRTFoVSujYVYWvIF2tq6ZT2hVVzS4jhuAM1mx20isUEttmoQesUjLZt7iUVFdg8AlakBsO9KEE1N9fler6daze3JGrjGAJ4AkFULQDLESmB6eu77yMhQpX7xsA920Wy2vyCiM1oBEiHYuyAIv1MlnHJTwpNTATCDbrercHT0QTX7v7HxZd/pvLGkp09EcgCPdYeATXS5nAXj48PhOt/a8v8qKbloYiXa3t7t0weBu7qSUBIfGxuO1vni4tuD2D6hDwLXNJehnLjUZBKblVaIcBlqaUSpxKUEOw1EuBGpteLEmKfKdj0Q0Vasthk1Nl7Pn5x8GM52LaWWCOFyda4QxW2GYachcpHNiL2k2o5nZibLa2urzVrE5cJRV9fyanPz63FsL2CH1bjtmH1UOpDk5p415OWZjNvb/hM9zcpgMEBp6aWc9fXPR4nzkg4kbEDGj2T/QpGhQ6nkpoweyyWIjF5MJIiMXs1iszZjl9PE0vlf1/M/hZhM6N1gtVgAAAAASUVORK5CYII="}}]); \ No newline at end of file diff --git a/p__Classrooms__Lists__CommonHomework__Comment__index.async.js b/p__Classrooms__Lists__CommonHomework__Comment__index.async.js index 090c0d0889..d0f857f1ac 100644 --- a/p__Classrooms__Lists__CommonHomework__Comment__index.async.js +++ b/p__Classrooms__Lists__CommonHomework__Comment__index.async.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[12303,52720],{28563:function(e,t,n){n.d(t,{Z:function(){return l}});var r=n(19973),a=n(59301),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 000 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"}}]},name:"arrow-left",theme:"outlined"},o=n(22589),s=function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))};var l=a.forwardRef(s)},71371:function(e,t,n){n.d(t,{Z:function(){return l}});var r=n(19973),a=n(59301),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"},o=n(22589),s=function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))};var l=a.forwardRef(s)},680:function(e,t,n){n.d(t,{Z:function(){return l}});var r=n(19973),a=n(59301),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z"}}]},name:"exclamation-circle",theme:"outlined"},o=n(22589),s=function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))};var l=a.forwardRef(s)},130:function(e,t,n){n.d(t,{Z:function(){return l}});var r=n(19973),a=n(59301),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M688 264c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48zm-8 136H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM480 544H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 308H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm356.8-74.4c29-26.3 47.2-64.3 47.2-106.6 0-79.5-64.5-144-144-144s-144 64.5-144 144c0 42.3 18.2 80.3 47.2 106.6-57 32.5-96.2 92.7-99.2 162.1-.2 4.5 3.5 8.3 8 8.3h48.1c4.2 0 7.7-3.3 8-7.6C564 871.2 621.7 816 692 816s128 55.2 131.9 124.4c.2 4.2 3.7 7.6 8 7.6H880c4.6 0 8.2-3.8 8-8.3-2.9-69.5-42.2-129.6-99.2-162.1zM692 591c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z"}}]},name:"solution",theme:"outlined"},o=n(22589),s=function(e,t){return a.createElement(o.Z,(0,r.Z)({},e,{ref:t,icon:i}))};var l=a.forwardRef(s)},88820:function(e,t,n){var r=n(82242),a=n.n(r),i=(n(59301),n(93314)),o=n(3113),s=n(37712);t.Z=function(e){var t=e.img,n=e.buttonProps,r=void 0===n?{}:n,l=e.styles,c=void 0===l?{}:l,d=e.customText,u=e.ButtonText,p=e.ButtonClick,m=e.Buttonclass,h=e.ButtonTwo,f=e.imgStyles,x=e.loading,v=void 0!==x&&x;return(0,s.jsxs)("section",{className:"tc animated fadeIn",style:a()(a()({},{color:"#999",margin:"100px auto",visibility:v?"hidden":"visible"}),c),children:[(0,s.jsx)("img",{src:t||i,style:a()(a()({},f),{},{pointerEvents:"none",userSelect:"none"})}),(0,s.jsx)("p",{className:"mt20 font14",children:d||"暂时还没有相关数据哦!"}),u&&(0,s.jsx)(o.ZP,a()(a()({className:m,onClick:p},r),{},{children:u})),h&&h]})}},38278:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(82242),a=n.n(r),i=n(7557),o=n.n(i),s=n(41498),l=n.n(s),c=n(79800),d=n.n(c),u=n(59301),p={wrp:"wrp___dq7YK",bgBlack:"bgBlack___ARIUV",monaco:"monaco___VnZC3",darkBlue:"darkBlue___UprA9",close:"close___LKoWu",embed:"embed___hvpEJ"},m=n(3113),h=n(38827),f=n(74479),x=n(6848),v=n(23603),g=n(52113),_=n(88820),y=n(41681),b=n(98565),j=n(37712),w=function(e){var t,n,r,i,s,c,w=e.editOffice,k=void 0===w?"view":w,S=e.data,Z=(e.theme,e.type),N=e.filename,O=e.monacoEditor,I=e.className,C=e.style,E=e.close,$=e.onClose,P=e.hasMask,T=e.disabledDownload,H=e.onImgDimensions,A=e.showNodata,z=e.recordInfo,R=(0,u.useState)("https://view.officeapps.live.com/op/view.aspx?src=http://testgs.educoder.net//rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--03541f6234b93d7ac3b2d84e7eb0e6594a952945/1.ppt"),M=d()(R,2),B=(M[0],M[1],(0,u.useState)("")),L=d()(B,2),W=(L[0],L[1]),F=(0,u.useState)(),D=d()(F,2),V=D[0],J=D[1],G="build"===window.ENV?"/react/build":"",X=location.host.startsWith("localhost")?y.Z.PROXY_SERVER:y.Z.API_SERVER,Y=(0,u.useRef)();null!==(t=S)&&void 0!==t&&t.startsWith("/api")&&"txt"!==Z&&(S=y.Z.API_SERVER+S);N&&O&&(O.filename=N),(0,u.useEffect)((function(){var e,t=null===(e=document.cookie)||void 0===e||null===(e=e.replace(/\s/g,""))||void 0===e?void 0:e.split(";");null==t||t.map((function(e){var t=e.split("=");"_educoder_session"===t[0]&&W(t[1])}))}),[]),(0,u.useEffect)((function(){var e;"office"===Z&&(S.indexOf("bigfilescdn.")>-1||S.indexOf("bigfiles1")>-1?J({url:S,fileType:(e=S,e.substring(e.lastIndexOf("/")+1).split(".").pop()),model:S.indexOf("model=edit")?"edit":"view"}):U())}),[Z,S]);var U=function(){var e=l()(o()().mark((function e(){var t,n,r;return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("data:",S),t=S,S.startsWith("http")||(t=location.origin+t),n=new URL(t).pathname.split("/").pop(),e.next=6,(0,g.gJ)({attachment_id:n});case 6:(r=e.sent).url=X+r.url,J(r);case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),q=function(){S.startsWith("http")||S.startsWith("blob:")?Q():(0,v.Sv)(N||"educoder",S,N)},Q=function(){z&&(0,b.fc)({id:null==z?void 0:z.id,watch_type:1,course_id:null==z?void 0:z.course_id}),(0,v.Nd)(N||"educoder",decodeURIComponent(S))};return(0,j.jsxs)("div",{style:a()({},C||{}),className:"".concat(P&&p.bgBlack," ").concat(Z?p.wrp:"hide"),children:[E&&(0,j.jsxs)("div",{className:p.close,ref:Y,children:[!!H&&(0,j.jsx)(x.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return Y.current},children:(0,j.jsx)("span",{onClick:function(){$(),H()},children:(0,j.jsx)("i",{className:"icon-yulanpizhu"})})}),!T&&(0,j.jsx)(x.Z,{title:"点击下载此文件",getPopupContainer:function(){return Y.current},children:(0,j.jsx)("span",{onClick:Q,children:(0,j.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,j.jsx)(x.Z,{title:"关闭",getPopupContainer:function(){return Y.current},children:(0,j.jsx)("span",{className:"",onClick:$,children:(0,j.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,j.jsx)("div",{className:"".concat(p[I]," ").concat(I," ").concat(p.monaco," ").concat("txt"===Z?"show":"hide"),children:"txt"===Z&&(0,j.jsx)(j.Fragment,{children:(0,j.jsx)(f.ZP,a()({},O))})}),"audio"===Z&&(0,j.jsx)("audio",{src:"".concat((null===(n=S)||void 0===n?void 0:n.indexOf("http://"))>-1||(null===(r=S)||void 0===r?void 0:r.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(S),autoPlay:!0}),"video"===Z&&(0,j.jsx)(j.Fragment,{children:(null===(i=S)||void 0===i?void 0:i.indexOf("http"))>-1?(0,j.jsx)("video",{controls:!0,src:"".concat(S),autoPlay:!0}):(0,j.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(S),autoPlay:!0})}),"office"===Z&&V&&(0,j.jsx)("iframe",{src:"".concat(G,"/office.html?key=").concat(V.key,"&url=").concat(btoa(V.url),"&callbackUrl=").concat(X+V.callbackUrl,"&fileType=").concat(V.fileType,"&title=").concat(V.title,"&model=").concat(k,"&officeServer=").concat(y.Z.ONLYOFFICE,"&disabledDownload=").concat(!!T)}),"html"===Z&&(0,j.jsx)("iframe",{src:S+"&disposition=inline"}),"pdf"===Z&&(0,j.jsx)("iframe",{src:"".concat(G,"/js/pdfview/index.html?filename=").concat(N||"educoder.pdf","&url=").concat(encodeURIComponent(S),"&disabledDownload=").concat(!!T)}),"image"===Z&&(0,j.jsx)("img",{src:"".concat((null===(s=S)||void 0===s?void 0:s.indexOf("http://"))>-1||(null===(c=S)||void 0===c?void 0:c.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(S)}),("other"===Z||"download"===Z)&&(0,j.jsx)(j.Fragment,{children:A?(0,j.jsx)(_.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,j.jsx)(m.ZP,{icon:(0,j.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:q,disabled:T,children:"下载"})}):(0,j.jsxs)(m.ZP,{type:"primary",size:"middle",onClick:q,disabled:T,children:[(0,j.jsx)(h.Z,{}),"点击下载"]})})]})}},39937:function(e,t,n){n.d(t,{z:function(){return j}});var r=n(82242),a=n.n(r),i=n(37205),o=n.n(i),s=n(91232),l=n.n(s),c=n(79800),d=n.n(c),u=n(59301),p=(n(46650),n(55037)),m=(n(64018),n(45071)),h=n(41681),f=n(23603),x=n(15342),v=n(1012),g=n(38278),_=n(37712),y="@▁@",b=/]*>/g;var j=function(e,t){e=e||"";var n=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return t?e.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(n,(function(e,t,n,r,a,i,o){var s=t||r||i,l=n||a||o||"?";return h.Z.API_SERVER+"/api/attachments/"+s+l+"&t="+(0,f.Jn)(s,Date.now())+(e.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):e=e.replace(/(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(e,t,n,r,a,i,o){var s=t||r||i,l=n||a||o||"?";return h.Z.API_SERVER+"/attachments/download/"+s+l+"&t="+(0,f.Jn)(s,Date.now())+(e.indexOf(")")>-1?")":"&")})).replace(n,(function(e,t,n,r,a,i,o){var s=t||r||i,l=n||a||o||"?";return h.Z.API_SERVER+"/api/attachments/"+s+l+"&t="+(0,f.Jn)(s,Date.now())+(e.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(e,t,n,r,a){var i=t||r,o=n||a||"";return'"'+h.Z.API_SERVER+"/api/attachments/"+i+o+i+o+"&t="+(0,f.Jn)(i,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(e,t,n,r,a){var i=t||r,o=n||a||"";return"("+h.Z.API_SERVER+"/files/uploads/"+i+o+i+o+"&t="+(0,f.Jn)(i,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};t.Z=function(e){var t=e.value,n=void 0===t?"":t,r=e.className,i=e.showTextOnly,s=e.showLines,c=e.style,f=void 0===c?{}:c,j=e.stylesPrev,w=void 0===j?{}:j,k=e.highlightKeywords,S=e.showProgramFill,Z=(e.isProgramFill,e.disabledFill),N=void 0!==Z&&Z,O=e.programFillValue,I=e.onFillChange,C=void 0===I?function(e){}:I,E=e.onFillBlur,$=void 0===E?function(){}:E,P=e.onFillFocus,T=void 0===P?function(){}:P,H=String(n),A=(0,u.useState)(""),z=d()(A,2),R=z[0],M=z[1],B=(0,u.useState)("office"),L=d()(B,2),W=L[0],F=L[1],D=(0,u.useState)([]),V=d()(D,2),J=V[0],G=V[1],X=(0,u.useRef)("a"+(0,v.Z)()),Y={};var U=function(e){return e.replace(/([\s\S]+?)<\/style>/gim,(function(e,t){var n=t.replace(/(\n|\r)/g,"").split("}"),r=[];return n.map((function(e){""!=e&&r.push(".".concat(X.current," ").concat(e))})),"")}))},q=(0,u.useMemo)((function(){try{H=H.replace(/\(\/attachments\/download\//g,"("+h.Z.API_SERVER+"/attachments/download/").replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\//g,"("+h.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+h.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+h.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(e){}if(S){var e=-1;return H=H.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(t,n,r){var a;return function(e,t,n){var r=document.createElement(e===y?"input":"textarea");r.style.width="100%",r.style.height=e===y?"40px":"151px",r.rows=5,r.spellcheck=!1,r.name="edu-program-fill",r.placeholder="请输入",r.dataset.id=t;var a=Object.keys(Y).length;return Y[a]=r,'')}(t,++e,null==O||null===(a=O[e])||void 0===a?void 0:a.value.replaceAll("<","<").replaceAll(">",">"))})),'
              '.concat(U(H||""),"
              ")}var t=U(H);t=(0,p.ZP)(t);var n=(0,p.ez)();H.match(/\[TOC\]/)&&(t=t.replace("

              [TOC]

              ",(0,p.Qv)()),(0,p.Iy)()),t=t.replace(/(__special_katext_id_\d+__)/g,(function(e,t){var r=n[t],a=r.type,i=r.expression;return(0,x.renderToString)(function(e){var t=document.createElement("div");return t.innerHTML=e,0===t.childNodes.length?"":t.childNodes[0].nodeValue}(i)||"",{displayMode:"block"===a,throwOnError:!1,output:"html"})})),t=t.replace(/▁/g,"▁▁▁▁▁"),(0,p.AL)();var r=document.createElement("div");return r.innerHTML=t,i?r.innerText:k?(te(r,k.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),r.innerHTML):(setTimeout((function(){return ae()}),500),r.innerHTML)}),[H,k]);(0,u.useEffect)((function(){ne.current&&ne.current.querySelectorAll(["input","textarea"]).forEach((function(e){e.oninput=Q,e.onblur=K,e.onfocus=ee}))}),[J]),(0,u.useEffect)((function(){if(null!=O&&O.length)try{var e,t=ne.current.querySelectorAll(".edu-program-fill-score"),n=ne.current.querySelectorAll('[name="edu-program-fill"]'),r=l()(n.entries());try{for(r.s();!(e=r.n()).done;){var a,i,o,s=d()(e.value,2),c=s[0],u=s[1];u.value=(null==O||null===(a=O[c])||void 0===a?void 0:a.value)||"","warning"===(null==O||null===(i=O[c])||void 0===i?void 0:i.type)?u.className="program-fill-warning":"success"===(null==O||null===(o=O[c])||void 0===o?void 0:o.type)?u.className="program-fill-success":u.className=""}}catch(e){r.e(e)}finally{r.f()}var p,m=l()(t.entries());try{for(m.s();!(p=m.n()).done;){var h,f,x=d()(p.value,2),v=x[0];x[1].innerHTML=null!=O&&null!==(h=O[v])&&void 0!==h&&h.score?"".concat(null==O||null===(f=O[v])||void 0===f?void 0:f.score,"分"):""}}catch(e){m.e(e)}finally{m.f()}G(O)}catch(e){console.log(e,"error")}}),[O]);var Q=function(e){J[e.target.dataset.id]=J[e.target.dataset.id]||{},J[e.target.dataset.id].value=e.target.value,G(o()(J)),C(J,e.target.dataset.id)},K=function(e){J[e.target.dataset.id]=J[e.target.dataset.id]||{},J[e.target.dataset.id].value=e.target.value,G(o()(J)),$(J,e.target.dataset.id)},ee=function(e){J[e.target.dataset.id]=J[e.target.dataset.id]||{},J[e.target.dataset.id].value=e.target.value,G(o()(J)),T(J,e.target.dataset.id)};function te(e,t){return e.childNodes.forEach((function(e){if(e.childNodes.length>0)te(e,t);else if("IMG"!==e.nodeName)if(e.innerHTML){var n;e.innerHTML=null===(n=e.innerHTML)||void 0===n?void 0:n.replace(new RegExp(t,"gi"),'$&')}else{var r=document.createElement("span");r.innerHTML=e.textContent.replace(new RegExp(t,"gi"),'$&'),e.replaceWith(r)}}))}var ne=(0,u.useRef)();function re(e){var t=e.target;if("A"===t.tagName.toUpperCase()){var n=t.getAttribute("href");if(n.indexOf("office")>-1)e.preventDefault(),M(n),F("office");else if(n.indexOf("application/pdf")>-1)e.preventDefault(),M(n),F("pdf");else if(n.indexOf("text/html")>-1)e.preventDefault(),M(n),F("html");else if(n.startsWith("#")){e.preventDefault();var r=document.getElementById(n.replace("#",""));r&&r.scrollIntoView(!0)}}}p.jb.WebkitLineClamp=s,s&&(f=a()(a()({},f),p.jb));var ae=function(){var e,t=null===(e=ne.current)||void 0===e?void 0:e.querySelectorAll("video");null==t||t.forEach((function(e){if(e.oncontextmenu=function(){return!1},e.src.indexOf(".m3u8")>-1)if(e.canPlayType("application/vnd.apple.mpegurl"));else if(m.ZP.isSupported()){var t=new m.ZP;t.loadSource(e.src),t.attachMedia(e)}}))};return(0,u.useEffect)((function(){if(ne.current&&q&&q.match(b)&&window.PR.prettyPrint(),ne.current)return ne.current.addEventListener("click",re),function(){var e;null===(e=ne.current)||void 0===e||e.removeEventListener("click",re),(0,p.AL)(),(0,p.Iy)()}}),[q,ne.current,re]),(0,u.useEffect)((function(){var e,t=function(e){e.preventDefault(),e.clipboardData.setData("text",window.getSelection().toString())};return null===(e=ne.current)||void 0===e||e.addEventListener("copy",t),function(){var e;null===(e=ne.current)||void 0===e||e.removeEventListener("copy",t)}}),[ne.current]),(0,_.jsxs)(_.Fragment,{children:[i&&(0,_.jsx)("div",{ref:ne,children:q}),!i&&(0,_.jsx)("div",{ref:ne,style:a()({},f),className:"".concat(r||""," ").concat(N?"disabled-fill":""," markdown-body ").concat(X.current),dangerouslySetInnerHTML:{__html:q}}),(0,_.jsx)(g.Z,{close:!0,data:R,type:null!=R&&R.length?W:"",style:a()({},w),onClose:function(){return M("")}})]})}},19244:function(e,t,n){n.r(t),n.d(t,{default:function(){return le}});var r=n(7557),a=n.n(r),i=n(41498),o=n.n(i),s=n(82242),l=n.n(s),c=n(79800),d=n.n(c),u=n(39647),p=n.n(u),m=n(59301),h=n(61186),f=n.n(h),x=n(86129),v=n.n(x),g=n(18838),_=n(64201),y=n(43418),b=n(8591),j=n(95237),w=n(43604),k=n(3113),S=n(96865),Z=n(66104),N=n(28103),O=n(61998),I=n(10777),C=n(57809),E=n(71418),$=n(28563),P=n(130),T=n(680),H=n(71371),A=n(41681),z=n(14533),R=n(23603),M=n(78241),B=n(94001),L=n(92832),W=n(37712),F=function(e){var t=e.defaultValue,n=e.onBlur,r=e.max,a=e.className,i=void 0===a?"game-score":a,o=(0,m.useState)(t),s=d()(o,2),l=s[0],c=s[1];return(0,m.useEffect)((function(){c(t)}),[t]),(0,W.jsx)(B.Z,{max:r,min:0,className:i,value:l,onChange:function(e){c(e)},onBlur:function(){l&&(n(l>r?r:l),c(null))}})},D="greyText___lvEE6",V="info___El01Z",J="label___GmvST",G="blackContent___FYo0Z",X="orangeContent____uYQ3",Y="inputLabel___ruiZm",U="tableTitle___ir3x7",q="scoreTable___b9Z37",Q=(0,_.connect)((function(e){return{shixunHomeworks:e.shixunHomeworks,classroomList:e.classroomList}}))((function(e){var t,n,r=e.shixunHomeworks,i=e.dispatch,s=e.classroomList,l=e.gethomeworkreport,c=e.homeWorkReport,u=(r.shixunWorkReport,(0,_.useParams)()),p=(0,m.useState)(!1),h=d()(p,2),f=h[0],x=h[1],v=(0,m.useState)(!1),k=d()(v,2),S=k[0],Z=k[1],N=(0,m.useState)(""),I=d()(N,2),C=I[0],E=I[1],$=M.Z.useForm(),P=d()($,1)[0],T=function(){var e=o()(a()().mark((function e(){var t;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Z(!0),t=P.getFieldsValue(),e.next=4,(0,g.ZP)("/api/student_works/".concat(u.homeworkId,"/shixun_work_comment.json"),{method:"post",body:{hidden_comment:t.hidden_comment,comment:t.comment}});case 4:0===e.sent.status&&(b.ZP.success("点评成功"),P.resetFields(),i({type:"shixunHomeworks/setActionTabs",payload:{}}),l()),Z(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),H=function(){var e=o()(a()().mark((function e(){var t;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(C){e.next=3;break}return b.ZP.warning("请填写分数"),e.abrupt("return");case 3:return Z(!0),t=P.getFieldsValue(),e.next=7,(0,g.ZP)("/api/student_works/".concat(u.homeworkId,"/add_score.json"),{method:"post",body:{comment:t.comment,score:C}});case 7:0===e.sent.status&&(b.ZP.success("点评成功"),i({type:"shixunHomeworks/setActionTabs",payload:{}}),l()),Z(!1);case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),A=[{title:"任务名称",dataIndex:"shixun_name",ellipsis:!0},{title:"开启时间",dataIndex:"open_time",width:160,render:function(e){return e||"--"}},{title:"评测次数",dataIndex:"evaluate_count",width:110},{title:"完成时间",dataIndex:"finished_time",width:160},{title:"实训耗时",dataIndex:"cost_time",width:160},{title:"缺评扣分",dataIndex:"absence_penalty",width:90,render:function(e){return e||"--"}},{title:"得分",dataIndex:"score",width:90,render:function(e,t){return(0,W.jsxs)("div",{children:[(0,W.jsx)("span",{style:{color:parseFloat(t.score_full)!==parseFloat(e)?"#E30000":"#53C41B"},children:e}),"/",t.score_full]})}},{title:"调分",width:100,dataIndex:"action",render:function(e,t){return(0,z.GJ)()?(0,W.jsx)(F,{max:t.score_full,onBlur:function(){var e=o()(a()().mark((function e(t){var n,r;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(0,z.Rm)()||null!==(n=s.AssistantObject.practice)&&void 0!==n&&n.can_appraise){e.next=3;break}return b.ZP.warning("您未获取此权限,需向管理员申请权限才能使用此功能"),e.abrupt("return");case 3:return e.next=5,(0,g.ZP)("/api/student_works/".concat(u.homeworkId,"/adjust_score.json"),{method:"post",body:{score:t}});case 5:r=e.sent,l(),0===r.status&&b.ZP.success("调分成功");case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}):null!=c&&c.is_anonymous?(0,W.jsx)(B.Z,{min:0,value:C,onChange:function(e){return E(e)},max:t.score_full}):e}}].filter((function(e){return null==c||!c.is_anonymous||!["late_penalty","score","absence_penalty"].includes(e.dataIndex)}));return(0,W.jsxs)(y.Z,{centered:!0,width:1080,title:"点评作业",afterClose:function(){P.resetFields(),E("")},confirmLoading:S,open:"更改点评"===r.actionTabs.key,okText:"确定",cancelText:"取消",onOk:o()(a()().mark((function e(){var t,n;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(0,z.Rm)()||null!==(t=s.AssistantObject.practice)&&void 0!==t&&t.can_appraise){e.next=3;break}return b.ZP.warning("您未获取此权限,需向管理员申请权限才能使用此功能"),e.abrupt("return");case 3:if(null==c||!c.is_anonymous){e.next=6;break}return H(),e.abrupt("return");case 6:n=P.getFieldsValue(),"{}"===JSON.stringify(n)||""===n.hidden_comment&&""===n.comment?x(!0):T();case 8:case"end":return e.stop()}}),e)}))),onCancel:function(){i({type:"shixunHomeworks/setActionTabs",payload:{}})},children:[(0,W.jsxs)(j.Z,{className:V,children:[(0,W.jsxs)(w.Z,{children:[(0,W.jsx)("span",{className:"".concat(J," ").concat(D),children:"姓名"}),(0,W.jsx)("span",{className:G,children:null==c?void 0:c.username})]}),(0,W.jsxs)(w.Z,{children:[(0,W.jsx)("span",{className:"".concat(J," ").concat(D),children:"学号"}),(0,W.jsx)("span",{className:G,children:(null==c?void 0:c.student_id)||"--"})]}),!(null!=c&&c.is_anonymous)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(w.Z,{children:[(0,W.jsx)("span",{className:"".concat(J," ").concat(D),children:"班级"}),(0,W.jsx)("span",{className:G,children:(null==c?void 0:c.group_name)||"--"})]}),(0,W.jsxs)(w.Z,{children:[(0,W.jsx)("span",{className:"".concat(J," ").concat(D),children:"补交扣分"}),(0,W.jsx)("span",{className:X,children:(null==c||null===(t=c.stage_list[0])||void 0===t?void 0:t.late_penalty)||"--"})]}),(0,W.jsxs)(w.Z,{children:[(0,W.jsx)("span",{className:"".concat(J," ").concat(D),children:"缺评扣分"}),(0,W.jsx)("span",{className:X,children:(null==c||null===(n=c.stage_list[0])||void 0===n?void 0:n.absence_penalty)||"--"})]}),(0,W.jsxs)(w.Z,{children:[(0,W.jsx)("span",{className:"".concat(J," ").concat(D),children:"总成绩"}),(0,W.jsx)("span",{className:X,children:(null==c?void 0:c.stage_list[0].score)||"--"})]})]})]}),(0,W.jsxs)(M.Z,{form:P,onChange:function(){f&&x(!1)},children:[(0,W.jsx)("div",{className:"".concat(Y," ").concat(D),children:null!=c&&c.is_anonymous?"评语":"学生和课堂老师可见"}),(0,W.jsx)(M.Z.Item,{name:"comment",children:(0,W.jsx)(L.Z.TextArea,{placeholder:"请输入评阅内容",rows:3})}),!(null!=c&&c.is_anonymous)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)("div",{className:"".concat(Y," ").concat(D),children:"仅课堂老师可见"}),(0,W.jsx)(M.Z.Item,{name:"hidden_comment",children:(0,W.jsx)(L.Z.TextArea,{placeholder:"请输入评阅内容",rows:3})})," "]})]}),f&&(0,W.jsx)("p",{className:"c-red",children:"评阅内容至少有一个不为空"}),(0,W.jsx)("div",{className:U,children:"关卡成绩"}),(0,W.jsx)(O.Z,{className:q,dataSource:null==c?void 0:c.stage_list,rowKey:"challenge_id",pagination:!1,columns:A})]})})),K={},ee=(0,_.connect)((function(e){return{shixunHomeworks:e.shixunHomeworks}}))((function(e){var t,n=e.shixunHomeworks,r=e.dispatch,i=e.gethomeworkreport,s=e.homeWorkReport;n.shixunWorkReport;console.log(s,"homeWorkReport");var l=(0,_.useParams)(),c=(0,m.useState)(!1),u=d()(c,2),p=u[0],h=u[1],f=M.Z.useForm(),x=d()(f,1)[0],v=(null==n||null===(t=n.actionTabs)||void 0===t||null===(t=t.selectArrs)||void 0===t?void 0:t.data)||{},w=v.user_name,k=v.score,S=v.comment_time,Z=v.content,N=v.score_id,O=v.user_id,I=function(){var e=o()(a()().mark((function e(){var t;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x.validateFields();case 2:return h(!0),t=x.getFieldsValue(),e.next=6,(0,g.ZP)("/api/student_works/".concat(l.homeworkId,"/appeal_anonymous_score.json"),{method:"post",body:{comment:t.comment,score_id:N,userId:O}});case 6:0===e.sent.status&&(b.ZP.success("操作成功"),r({type:"shixunHomeworks/setActionTabs",payload:{}}),i()),h(!1);case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,W.jsxs)(y.Z,{centered:!0,width:600,title:"匿评申诉",afterClose:function(){x.resetFields()},confirmLoading:p,open:"匿评申诉"===n.actionTabs.key,okText:"确定",cancelText:"取消",onOk:I,onCancel:function(){r({type:"shixunHomeworks/setActionTabs",payload:{}})},children:[(0,W.jsxs)("div",{className:"p20",style:{background:"#F7F8F9",padding:15,marginBottom:20},children:[(0,W.jsxs)(j.Z,{justify:"space-between",className:K.info,children:[(0,W.jsxs)("span",{children:[(0,W.jsx)("span",{className:"c-grey-666",children:w}),(0,W.jsx)("span",{className:"c-grey-333 ml5",children:"调分为"}),(0,W.jsxs)("span",{className:"c-orange ml5",children:[k,"分"]})]}),(0,W.jsx)("span",{className:"c-grey-333",children:S})]}),(0,W.jsx)("div",{className:"c-grey-333 mt5",children:Z})]}),(0,W.jsx)(M.Z,{form:x,className:"mt15",layout:"vertical",children:(0,W.jsx)(M.Z.Item,{name:"comment",label:"申诉",rules:[{required:!0,message:"请输入申诉原因"}],children:(0,W.jsx)(L.Z.TextArea,{placeholder:"请输入申诉原因",rows:3})})})]})})),te=n(60176),ne={flex_box_center:"flex_box_center___uz0LL",flex_space_between:"flex_space_between___kuKI5",flex_box_vertical_center:"flex_box_vertical_center___VzPH1",flex_box_center_end:"flex_box_center_end___Tyr1U",flex_box_column:"flex_box_column___qsgVa",title:"title___SFyGM",export:"export___ezPhH",title1_right:"title1_right___tMOJn",userPic:"userPic___mW4Rr",userInfo:"userInfo___vYvSZ",listItem:"listItem___gJf4Z",rightInfo:"rightInfo___PRYRt",shixunTitle:"shixunTitle___STlvE",shixunWrp:"shixunWrp___knhTt",footerBar:"footerBar___R5IlQ",footerBarStatic:"footerBarStatic___M4EQj",exitComment:"exitComment___NoCI4",nextComment:"nextComment___sFj7z",modal:"modal___TwQdH",tag:"tag___RErUu"},re=n(39937),ae=n(47012),ie=n(65022),oe=n.n(ie),se=["shixunHomeworks","classroomList","globalSetting","loading","user","dispatch"],le=(0,_.connect)((function(e){var t=e.shixunHomeworks,n=e.classroomList,r=e.loading,a=e.globalSetting,i=e.user;return{shixunHomeworks:t,classroomList:n,globalSetting:a,loading:r.effects,user:i}}))((function(e){var t,n,r,i,s,c,u=e.shixunHomeworks,h=e.classroomList,x=(e.globalSetting,e.loading,e.user),M=e.dispatch,B=(p()(e,se),(0,m.useState)(l()({},(0,_.useParams)()))),L=d()(B,2),D=L[0],V=L[1],J=(0,_.useParams)(),G=(0,_.useLocation)(),X=(0,m.useState)([]),Y=(d()(X,0),(0,m.useState)({last:!1})),U=d()(Y,2),q=U[0],K=U[1],ie=(0,m.useState)({last:!1}),le=d()(ie,2),ce=le[0],de=le[1],ue=(0,m.useRef)(),pe=(0,m.useRef)(),me=(0,m.useState)(!1),he=d()(me,2),fe=he[0],xe=he[1],ve=(0,m.useState)(!1),ge=d()(ve,2),_e=ge[0],ye=ge[1],be=(0,m.useState)(!1),je=d()(be,2),we=(je[0],je[1]),ke=(0,m.useState)(),Se=d()(ke,2),Ze=Se[0],Ne=Se[1],Oe=(0,m.useState)(),Ie=d()(Oe,2),Ce=Ie[0],Ee=Ie[1],$e=(0,m.useState)(!0),Pe=d()($e,2),Te=Pe[0],He=Pe[1],Ae=(0,m.useState)(),ze=d()(Ae,2),Re=(ze[0],ze[1]),Me=(0,z.GJ)(),Be=(0,m.useState)(new(v())),Le=d()(Be,2),We=Le[0],Fe=Le[1],De=(0,m.useState)(0),Ve=d()(De,2),Je=(Ve[0],Ve[1],(0,m.useState)([])),Ge=d()(Je,2),Xe=Ge[0],Ye=Ge[1],Ue=(0,m.useState)(!1),qe=d()(Ue,2),Qe=qe[0],Ke=qe[1],et=(0,m.useState)(!1),tt=d()(et,2),nt=tt[0],rt=tt[1],at=(0,m.useState)(""),it=d()(at,2),ot=it[0],st=it[1],lt=(0,m.useState)(!1),ct=d()(lt,2),dt=(ct[0],ct[1]),ut=(0,m.useState)(!0),pt=d()(ut,2),mt=(pt[0],pt[1]),ht=(0,m.useState)(0),ft=d()(ht,2),xt=(ft[0],ft[1]),vt=function(){var e=o()(a()().mark((function e(){return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(x.userInfo.is_teacher||x.userInfo.admin)&&(dt(!0),mt(!1));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();(0,m.useEffect)((function(){vt(),console.log("打印的------",Ze),console.log(u),st(null==Ze?void 0:Ze.repeat_minus_score)}),[Ze,x]),(0,m.useEffect)((function(){console.log("触发这",null==Ze?void 0:Ze.work_score),xt(null==Ze?void 0:Ze.work_score)}),[null==Ze?void 0:Ze.work_score,ot]),(0,m.useEffect)((function(){return M({type:"globalSetting/footerToggle",payload:!1}),function(){M({type:"globalSetting/footerToggle",payload:!0})}}),[]),(0,m.useEffect)((function(){if(Ze){var e,t=[];null==Ze||null===(e=Ze.target_test_sets)||void 0===e||e.map((function(e,n){var r;null==e||null===(r=e.targets)||void 0===r||r.map((function(r,a){var i;r.name=null==e?void 0:e.name,r.total_target_score=null==e?void 0:e.total_target_score,r.actual_target_score=null==e?void 0:e.actual_target_score,r.rowSpan=0===a?null==e||null===(i=e.targets)||void 0===i?void 0:i.length:0,r.order=n+1,t.push(r)}))})),Re(t),M({type:"classroomList/getAssistantPermissions",payload:{course_id:D.coursesId}})}}),[Ze]),(0,m.useEffect)((function(){"导出实训报告"===u.actionTabs.key&&Xe.length>0&&null!=Ze&&Ze.course_name&&bt("all")}),[null==Ze?void 0:Ze.course_name]),(0,m.useEffect)((function(){console.log(J),V(l()({},J))}),[G.pathname]);var gt=function(){document.body.scrollIntoView()};function _t(){return(_t=o()(a()().mark((function e(){var t,n,r,i,o,s,c;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=JSON.parse(localStorage.all_student_works_param||"{}"),e.next=3,M({type:"shixunHomeworks/getAllStudentWorks",payload:l()(l()({},D),r)});case 3:i=e.sent,Ye(i.all_student_works),(o=null===(t=i.all_student_works)||void 0===t?void 0:t.map((function(e){return String(e.student_work_id)})).indexOf(D.homeworkId))===(null===(n=i.all_student_works)||void 0===n?void 0:n.length)-1?K({last:!0}):K(null===(s=i.all_student_works)||void 0===s?void 0:s[o+1]),de(0===o?{last:!0}:null===(c=i.all_student_works)||void 0===c?void 0:c[o-1]);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var yt=function(){document.querySelectorAll("canvas").forEach((function(e){(!e.clientWidth||!e.clientHeight)&&e.remove()}))},bt=function(){var e=o()(a()().mark((function e(t){var n,r,i,s,l,c,d,u,p,m,h,f;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(d=function(){return(d=o()(a()().mark((function e(){var t,r,i,o,l;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,g.ZP)("/api/student_works/".concat(Xe[n].student_work_id,"/jupyter_work_report.json"),{method:"get"});case 2:if(0!==(null==(t=e.sent)?void 0:t.status)){e.next=14;break}if(Ne(t.data),null==t||null===(r=t.data)||void 0===r||null===(r=r.shixun_detail[0])||void 0===r||!r.myshixun_identifier){e.next=13;break}return He(!0),e.next=9,(0,g.ZP)("/api/jupyters/preview_tpi.json",{method:"get",params:{identifier:null==t||null===(i=t.data)||void 0===i||null===(i=i.shixun_detail[0])||void 0===i?void 0:i.myshixun_identifier,student_work_id:null==t||null===(o=t.data)||void 0===o?void 0:o.work_id}});case 9:0===(l=e.sent).status&&(Ee(l.html_content),He(!1),Zt(),s()),e.next=14;break;case 13:s();case 14:case"end":return e.stop()}}),e)})))).apply(this,arguments)},c=function(){return d.apply(this,arguments)},l=function(){return l=o()(a()().mark((function e(){return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:gt(),n++,setTimeout(o()(a()().mark((function e(){var t,s,l,d,u,p;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:yt(),s=We.folder("".concat(null==Ze||null===(t=Ze.stage_list[0])||void 0===t?void 0:t.shixun_name)),l=document.querySelector("#export-all").children,d=oe()(),u=a()().mark((function e(t){return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,d.set(i).from(l[t]).toContainer().toCanvas().toPdf().get("pdf").then(function(){var e=o()(a()().mark((function e(n){return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t]*src=['"]([^'"]+)[^>]*>/gi))||void 0===t||t.map((function(e){var t=document.createElement("script");t.src=/