@livedigital/client 3.0.2 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -236,4 +236,4 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
236
236
|
personMask = smoothstep(u_coverage.x, u_coverage.y, personMask);
|
|
237
237
|
outColor = vec4(frameColor * personMask + backgroundColor * (1.0 - personMask), 1.0);
|
|
238
238
|
}
|
|
239
|
-
`,{width:c,height:d}=n,l=c/d,p=Sa(e,e.VERTEX_SHADER,o),u=Sa(e,e.FRAGMENT_SHADER,a),h=Ca(e,p,u,t,r),f=e.getUniformLocation(h,"u_backgroundScale"),m=e.getUniformLocation(h,"u_backgroundOffset"),g=e.getUniformLocation(h,"u_inputFrame"),v=e.getUniformLocation(h,"u_personMask"),y=e.getUniformLocation(h,"u_background"),b=e.getUniformLocation(h,"u_coverage"),w=e.getUniformLocation(h,"u_lightWrapping"),_=e.getUniformLocation(h,"u_blendMode");e.useProgram(h),e.uniform2f(f,1,1),e.uniform2f(m,0,0),e.uniform1i(g,0),e.uniform1i(v,1),e.uniform2f(b,0,1),e.uniform1f(w,0),e.uniform1f(_,0);let S=null;function k(t){S=ka(e,e.RGBA8,t.naturalWidth,t.naturalHeight,e.LINEAR,e.LINEAR),e.texSubImage2D(e.TEXTURE_2D,0,0,0,t.naturalWidth,t.naturalHeight,e.RGBA,e.UNSIGNED_BYTE,t);let r=0,i=0,s=t.naturalWidth,n=t.naturalHeight;s/n<l?(n=s/l,i=(t.naturalHeight-n)/2):(s=n*l,r=(t.naturalWidth-s)/2);const o=s/t.naturalWidth,a=n/t.naturalHeight;r/=t.naturalWidth,i/=t.naturalHeight,e.uniform2f(f,o,a),e.uniform2f(m,r,i)}return(null==s?void 0:s.complete)?k(s):s&&(s.onload=()=>{k(s)}),{render:function(){e.viewport(0,0,c,d),e.useProgram(h),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,i),null!==S&&(e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,S),e.uniform1i(y,2)),e.bindFramebuffer(e.FRAMEBUFFER,null),e.drawArrays(e.TRIANGLE_STRIP,0,4)},updateCoverage:function(t){e.useProgram(h),e.uniform2f(b,t[0],t[1])},updateLightWrapping:function(t){e.useProgram(h),e.uniform1f(w,t)},updateBlendMode:function(t){e.useProgram(h),e.uniform1f(_,"screen"===t?0:1)},cleanUp:function(){e.deleteTexture(S),e.deleteProgram(h),e.deleteShader(u),e.deleteShader(p)}}}(u,m,g,b,t,n);return{render:function(){return i(this,void 0,void 0,(function*(){u.activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,v),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,e.htmlElement),u.bindVertexArray(f),yield w.render(),o._runInference(),_.render(),S.render(),k.render()}))},updatePostProcessingConfig:function(e){if(S.updateSigmaSpace(e.jointBilateralFilter.sigmaSpace),S.updateSigmaColor(e.jointBilateralFilter.sigmaColor),"image"===r.type){const t=k;t.updateCoverage(e.coverage),t.updateLightWrapping(e.lightWrapping),t.updateBlendMode(e.blendMode)}else if("blur"===r.type){k.updateCoverage(e.coverage)}else{const e=k;e.updateCoverage([0,.9999]),e.updateLightWrapping(0)}},cleanUp:function(){k.cleanUp(),S.cleanUp(),_.cleanUp(),w.cleanUp(),u.deleteTexture(b),u.deleteTexture(y),u.deleteTexture(v),u.deleteBuffer(g),u.deleteBuffer(m),u.deleteVertexArray(f),u.deleteShader(h)}}}var La,Ia,Oa,Aa,ja,Fa,Na,Ba,Ua,qa;class Wa{constructor(e){La.set(this,!1),Ia.set(this,void 0),Oa.set(this,void 0),Aa.set(this,void 0),n(this,Aa,new Xe({logLevel:e,namespace:"TensorFlowLoader"}),"f")}get isLoaded(){return s(this,La,"f")}get tfliteModule(){return s(this,Ia,"f")||s(this,Oa,"f")}loadTFLite(){return i(this,void 0,void 0,(function*(){yield Promise.all([this.loadTFLiteRegular(),this.loadTFLiteSIMD()]),this.tfliteModule&&n(this,La,!0,"f")}))}loadTFLiteModel(e){return i(this,void 0,void 0,(function*(){if(this.tfliteModule)try{const t=Wa.getTFLiteModelFileName(e);s(this,Aa,"f").info("loading model",{modelFileName:t});const r=yield fetch(`${window.location.origin}/tflite/models/${t}.tflite`),i=yield r.arrayBuffer(),n=this.tfliteModule._getModelBufferMemoryOffset();this.tfliteModule.HEAPU8.set(new Uint8Array(i),n);const o=this.tfliteModule._loadModel(i.byteLength);s(this,Aa,"f").info("loading model result",{result:o})}catch(e){s(this,Aa,"f").warn("loadTFLiteModel()",{error:e})}else s(this,Aa,"f").warn("loadTFLiteModel()",{description:"TFLite module is not loaded"})}))}loadTFLiteRegular(){return i(this,void 0,void 0,(function*(){try{n(this,Ia,yield createTFLiteModule(),"f")}catch(e){s(this,Aa,"f").error("Failed to create TFLite WebAssembly module.",{error:e})}}))}loadTFLiteSIMD(){return i(this,void 0,void 0,(function*(){try{n(this,Oa,yield createTFLiteSIMDModule(),"f")}catch(e){s(this,Aa,"f").error("Failed to create TFLite SIMD WebAssembly module.",{error:e})}}))}static getTFLiteModelFileName({model:e,inputResolution:t}){switch(e){case"meet":return"256x144"===t?"segm_full_v679":"segm_lite_v681";case"mlkit":return"selfiesegmentation_mlkit-256x256-2021_01_19-v1215.f16";default:throw new Error(`No TFLite file for this segmentation model: ${e}`)}}}function Va({sourcePlayback:e,backgroundConfig:t,segmentationConfig:r,canvas:s,tflite:n}){const o=s.getContext("2d");o.scale(1.031,1.031),o.translate(-11,-11);const[a,c]=Ta[r.inputResolution],d=a*c,l=new ImageData(a,c),p=document.createElement("canvas");p.width=a,p.height=c;const u=p.getContext("2d"),h=n._getInputMemoryOffset()/4,f=n._getOutputMemoryOffset()/4;let m;return{render:function(){return i(this,void 0,void 0,(function*(){"none"!==t.type&&(function(){if(u.drawImage(e.htmlElement,0,0,e.width,e.height,0,0,a,c),"meet"===r.model||"mlkit"===r.model){const e=u.getImageData(0,0,a,c);for(let t=0;t<d;t+=1)n.HEAPF32[h+3*t]=e.data[4*t]/255,n.HEAPF32[h+3*t+1]=e.data[4*t+1]/255,n.HEAPF32[h+3*t+2]=e.data[4*t+2]/255}}(),function(){n._runInference();for(let e=0;e<d;e+=1)if("meet"===r.model){const t=n.HEAPF32[f+2*e],r=n.HEAPF32[f+2*e+1],i=Math.max(t,r),s=Math.exp(t-i),o=Math.exp(r-i);l.data[4*e+3]=255*o/(s+o)}else if("mlkit"===r.model){const t=n.HEAPF32[f+e];l.data[4*e+3]=255*t}u.putImageData(l,0,0)}()),o.globalCompositeOperation="copy",o.filter="none",(null==m?void 0:m.smoothSegmentationMask)&&("blur"===t.type||"image"===t.type)&&(o.filter="blur(8px)"),"none"!==t.type&&(o.drawImage(p,0,0,a,c,0,0,e.width,e.height),o.globalCompositeOperation="source-in",o.filter="none"),o.drawImage(e.htmlElement,0,0),"blur"===t.type&&(o.globalCompositeOperation="destination-over",o.filter="blur(8px)",o.drawImage(e.htmlElement,0,0))}))},updatePostProcessingConfig:function(e){m=e},cleanUp:function(){}}}La=new WeakMap,Ia=new WeakMap,Oa=new WeakMap,Aa=new WeakMap;class za{constructor(e){ja.set(this,void 0),Fa.set(this,void 0),Na.set(this,!1),Ba.set(this,void 0),n(this,ja,new Wa(e.logLevel),"f"),n(this,Ba,new Xe({namespace:"VideoTrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return s(this,Na,"f")}processTrack(e){return i(this,void 0,void 0,(function*(){const{track:t,pipelineConfig:r}=e;s(this,Na,"f")&&this.stopProcessing();try{s(this,ja,"f").isLoaded||(yield s(this,ja,"f").loadTFLite(),yield s(this,ja,"f").loadTFLiteModel(r.segmentationConfig));const{tfliteModule:o}=s(this,ja,"f");if(!o)throw new Error("TensorFlow model is not available");const{targetFps:a}=r.segmentationConfig,c=yield za.buildSourcePlayback(t),d=document.createElement("canvas");d.width=c.width,d.height=c.height;const l=function(){const e=new Map,t=new Worker(`${window.location.origin}/timerWorker.js`);t.onmessage=t=>{const r=e.get(t.data.callbackId);r&&(e.delete(t.data.callbackId),r())};let r=1;return{setTimeout:function(i,s){return r+=1,e.set(r,i),t.postMessage({callbackId:r,timeoutMs:s}),r},clearTimeout:function(r){e.has(r)&&(t.postMessage({callbackId:r}),e.delete(r))},terminate:function(){e.clear(),t.terminate()}}}(),p={config:r,sourcePlayback:c,destinationPlayback:d,tflite:o},u="canvas2dCpu"===e.pipelineConfig.segmentationConfig.pipeline?za.buildCanvas2dPipeline(p):za.buildWebGL2Pipeline(p),h=()=>i(this,void 0,void 0,(function*(){const e=performance.now();return yield u.render(),l.setTimeout(h,performance.now()-e)})),f=yield h();u.updatePostProcessingConfig(r.postprocessingConfig);const m=d.captureStream(a),[g]=m.getVideoTracks();return n(this,Fa,{pipeline:u,destination:d,source:c.htmlElement,track:g,timerWorker:l,timerId:f},"f"),n(this,Na,!0,"f"),g}catch(e){throw s(this,Ba,"f").error("processTrack()",{error:e,track:t}),new Error("Can not process this track")}}))}stopProcessing(){if(this.isProcessing)if(s(this,Fa,"f"))try{s(this,Fa,"f").pipeline.cleanUp(),s(this,Fa,"f").source.remove(),s(this,Fa,"f").destination.remove(),s(this,Fa,"f").timerWorker.clearTimeout(s(this,Fa,"f").timerId),s(this,Fa,"f").timerWorker.terminate(),s(this,Fa,"f").destination.remove(),s(this,Fa,"f").track.stop(),n(this,Fa,void 0,"f"),n(this,Na,!1,"f")}catch(e){s(this,Ba,"f").error("cleanUp()",{error:e})}else s(this,Ba,"f").warn("cleanUp()",{description:"This track is not processing"});else s(this,Ba,"f").debug("stopProcessing()",{description:"Track is not processed"})}static buildWebGL2Pipeline(e){return Ma({backgroundImage:e.config.backgroundConfig.imageSource,sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildCanvas2dPipeline(e){return Va({sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildSourcePlayback(e){return i(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.srcObject=new MediaStream([e]),t.autoplay=!0,yield t.play(),{htmlElement:t,width:t.videoWidth,height:t.videoHeight}}))}}ja=new WeakMap,Fa=new WeakMap,Na=new WeakMap,Ba=new WeakMap;class $a extends wa{constructor(e){super(e),Ua.set(this,void 0),qa.set(this,void 0),this.transformParams={},n(this,Ua,new za({logLevel:e.logLevel}),"f"),this.watchOrientation(),this.watchDocumentVisibility()}get isEffectsProcessing(){return s(this,Ua,"f").isProcessing}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||(this.getLabel()===h.ScreenVideo?"vp8":"h264")}getEncodings(){return this.getEncoderConfig().encodings||zo}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return i(this,void 0,void 0,(function*(){const t=this.getProducer();t?(yield t.setMaxSpatialLayer(e),this.logger.debug("setMaxSpatialLayer()",{label:this.getLabel(),spatialLayer:e})):this.logger.warn("setMaxSpatialLayer()",{message:"Not produced yet"})}))}getMaxSpatialLayer(){const e=this.getProducer();if(e)return e.maxSpatialLayer;this.logger.warn("getMaxSpatialLayer()",{message:"Not produced yet"})}enableBlur(){return i(this,void 0,void 0,(function*(){try{n(this,qa,this.mediaStreamTrack.clone(),"f");const e=yield s(this,Ua,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Da:Ea});yield this.replaceTrack(e),this.logger.info("enableBlur()",{track:this})}catch(e){throw this.logger.warn("enableBlur()",{track:this,error:e}),new Error("Can not enable virtual background")}}))}disableBlur(){return i(this,void 0,void 0,(function*(){try{if(!s(this,Ua,"f").isProcessing)return void this.logger.debug("disableBlur()",{description:"Track is not processed"});if(!s(this,qa,"f"))return void this.logger.warn("disableBlur()",{description:"Original track missing"});yield this.replaceTrack(s(this,qa,"f")),s(this,Ua,"f").stopProcessing(),this.logger.info("disableBlur()",{track:this})}catch(e){throw this.logger.warn("disableBlur()",{track:this,error:e}),new Error("Can not disable virtual background")}}))}publish(e={}){var t;return i(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),transformParams:this.transformParams,codecOptions:this.getCodecOptions(),keyFrameRequestDelay:null!==(t=e.keyFrameRequestDelay)&&void 0!==t?t:0}),this.clientEventEmitter.emit(W,this)}))}watchOrientation(){window.screen.orientation&&(this.logger.debug("watchOrientation()",{description:"Watching started"}),window.screen.orientation.addEventListener("change",(()=>i(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{this.mediaStreamTrack.enabled=!1;const e=yield s(this,Ua,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Da:Ea});yield this.replaceTrack(e)}catch(e){this.logger.warn("watchOrientation()",{description:"Restart blur error after orientation change",error:e})}})))))}watchDocumentVisibility(){this.logger.debug("watchDocumentVisibility()",{description:"Watching started"}),window.addEventListener("visibilitychange",(()=>i(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{yield this.disableBlur(),yield this.enableBlur()}catch(e){this.logger.warn("watchDocumentVisibility()",{description:"Restart blur error after change document visibility",error:e})}}))))}}Ua=new WeakMap,qa=new WeakMap;const Ga=new class{sleepMs(e){return i(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},Ha=(e,t={})=>i(void 0,void 0,void 0,(function*(){var r;const i=t.maxRetries||2,s=t.minBackoffDelayMs||50;let n,o=0;for(;o<i;){o+=1;try{return yield e()}catch(e){if(n=e,t.logger&&t.logger.info("Action retry failed",{currentAttempt:o,actionName:t.actionName,error:e}),t.abortOnError&&t.abortOnError(e))throw n;if(o<i){const e=Math.pow(2,o-1)*s;yield Ga.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw n}));class Ja extends v{constructor(e,t){super(e,null!=t?t:"need_join_first")}}class Ka{constructor(e){this.initialized=!1,this.isJoined=!1,this.isChannelJoining=!1,this.rejoinRequested=!1;const{clientEventEmitter:t,network:r,media:i,dependenciesFactory:s,logLevel:n}=e;this.logLevel=n||ze,this.system=s.createSystem({logLevel:this.logLevel,clientEventEmitter:t,onLogMessage:e.onLogMessage}),this.media=s.createMedia({logLevel:this.logLevel,engine:this,clientEventEmitter:t,mediaTracksFactory:i.mediaTracksFactory,onLogMessage:e.onLogMessage}),this.network=s.createNetwork({logLevel:this.logLevel,loadbalancer:r.loadbalancer,onLogMessage:e.onLogMessage}),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=s.createChannelEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.mediaSoupEventsHandler=s.createMediaSoupEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.channelAudioObserverEventHandler=s.createAudioObserverEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.logger=new Xe({logLevel:this.logLevel,namespace:"Engine",onLogMessage:e.onLogMessage}),this.webRtcIssueDetector=e.disableWid?void 0:s.createIssueDetector({onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:[1234],logger:new Xe({logLevel:this.logLevel,namespace:"WID"})}),this.watchNetworkState(),this.watchSocketState(),this.watchClientEvents()}initialize(){var e,t,r;return i(this,void 0,void 0,(function*(){try{const{rtpCapabilities:i}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.createNoiseSuppressor(),yield this.media.loadDevice(i),null===(e=this.webRtcIssueDetector)||void 0===e||e.watchNewPeerConnections(),yield this.network.createSendTransport(this.media.mediasoupDevice),yield this.network.createRecvTransport(this.media.mediasoupDevice),this.initialized=!0,this.logger.debug("initialize()",{sendTransportId:null===(t=this.network.sendTransport)||void 0===t?void 0:t.id,recvTransportId:null===(r=this.network.receiveTransport)||void 0===r?void 0:r.id})}catch(e){if(this.logger.error("initialize()",{error:e}),e instanceof m&&"device not supported"===e.message||e instanceof Error&&"RTCPeerConnection is not defined"===e.message)throw new y("Device not supported",y.UNSUPPORTED_DEVICE_CODE);throw new Error("Error initialize engine")}}))}release(){var e,t;return i(this,void 0,void 0,(function*(){try{this.initialized=!1,this.isJoined=!1,this.app=void 0,this.channel=void 0,null===(e=this.webRtcIssueDetector)||void 0===e||e.stopWatchingNewPeerConnections(),this.network.socket.disconnect(),this.peersRepository.clear(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),yield this.media.clearTracks(),null===(t=this.audioObserver)||void 0===t||t.close(),this.logger.debug("release()",{socketId:this.mySocketId})}catch(e){throw this.logger.error("release()",{error:e}),new Error("Error release engine")}}))}watchNetworkState(){this.network.eventEmitter.on(Oe,(e=>{this.rejoinRequested||this.isChannelJoining||(this.logger.info("Received transport connection lost event. Will trigger rejoin",e),this.triggerRejoinEventIfAppropriate("transport connection lost"))}))}watchSocketState(){this.network.socket.observer.on("state",(e=>{var t;const{state:r,code:i,error:s}=e;this.clientEventEmitter.emit(r,{code:i,error:s});const n="unauthorized"===(null===(t=null==s?void 0:s.data)||void 0===t?void 0:t.errorCode);r===ne.Error&&this.isJoined&&n?this.triggerRejoinEventIfAppropriate("unauthorized error"):r===ne.Reconnected&&this.triggerRejoinEventIfAppropriate("reconnected socket")}))}get activeSpeaker(){return this.activeSpeakerPeer}get peers(){return Array.from(this.peersRepository.values())}get hostPeers(){return this.peers.filter((e=>"host"===e.role))}get audiencePeers(){return this.peers.filter((e=>"audience"===e.role))}get mySocketId(){return this.network.socket.id}getPeerById(e){return this.peersRepository.get(e)}confirmActivity(){var e;return i(this,void 0,void 0,(function*(){if(!this.channel||this.isChannelJoining)throw new Error("Connect to the channel first");if(!(null===(e=this.network.socket.connection)||void 0===e?void 0:e.active))throw new Error("Socket is inactive");yield this.network.socket.request(R)}))}join(e){return i(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isChannelJoining=!0,yield this.connectToSocketServerWithRetry(e),yield this.performJoin({appData:e.appData})}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isChannelJoining=!1,this.rejoinRequested=!1}}))}loadPeers(e){return i(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(_,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=this.peersRepository.get(e.id);if(t)return t;const r=new Wo(Object.assign(Object.assign({},e),{engine:this,loginDate:new Date}));return this.peersRepository.set(r.id,r),r}removePeer(e){const t=this.peersRepository.get(e);t&&(t.tracks.forEach((e=>e.close())),this.peersRepository.delete(e))}updateAppData(e){return i(this,void 0,void 0,(function*(){const{myPeer:t}=this;if(!t)throw new Error("Need join to channel first");try{Uo(e),yield this.network.updatePeerAppData({peerId:t.id,appData:e})}catch(e){throw this.logger.error("updateAppData()",{error:e}),new Error("Can not update peer appData")}}))}createCameraVideoTrack(e){return i(this,void 0,void 0,(function*(){const t=ia.getCameraVideoTrackParams(e);try{const[r]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});if(r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof $a&&(r.setLabel(h.Camera),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(ia.getVideoTrackTransformParams(r.mediaStreamTrack)),null==e?void 0:e.blur))try{yield r.enableBlur()}catch(e){this.logger.warn("Failed to start virtual background, featured original track",{track:this})}return this.media.setTrack(r),this.logger.debug("createCameraVideoTrack()",{trackParams:t,track:r}),r}catch(e){throw this.logger.error("createCameraVideoTrack()",{error:e,trackParams:t}),new Error(`Can not create camera track: ${e.message}`)}}))}createMicrophoneAudioTrack(e){return i(this,void 0,void 0,(function*(){try{const[t]=yield this.media.createUserMediaTracks({video:!1,audio:null==e?void 0:e.audio});if(t.setLabel(h.Microphone),t.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),(null==e?void 0:e.encoderConfig)&&t.setEncoderConfig(e.encoderConfig),"audio"===t.kind&&(null==e?void 0:e.noiseSuppression))try{yield t.enableNoiseSuppression()}catch(e){this.logger.warn("Failed to start noise suppression, featured original track",{track:this})}return this.media.setTrack(t),this.logger.debug("createMicrophoneAudioTrack()",{options:e,track:t}),t}catch(t){throw this.logger.error("createMicrophoneAudioTrack()",{error:t,options:e}),new Error(`Can not create microphone track: ${t.message}`)}}))}createScreenMediaTracks(e){return i(this,void 0,void 0,(function*(){const t=ia.getScreenVideoTrackParams(e);try{const r=yield this.media.createDisplayMediaTracks({audio:null==e?void 0:e.audio,video:null==e?void 0:e.video});return r.forEach((r=>{if(r.mediaStreamTrack.addEventListener("ended",(()=>{r.unpublish()})),r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof $a){r.setLabel(h.ScreenVideo),r.setEncoderConfig(t.encoderConfig);const e=ia.getVideoTrackTransformParams(r.mediaStreamTrack);return r.setTransformParams(e),this.media.setTrack(r),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,transformParams:e,track:r})}r.setLabel(h.ScreenAudio),(null==e?void 0:e.audioEncoderConfig)&&r.setEncoderConfig(e.audioEncoderConfig),this.media.setTrack(r),this.logger.debug("createScreenMediaTrack()",{trackParams:null==e?void 0:e.audio,encoderConfig:null==e?void 0:e.audioEncoderConfig,track:r})})),r}catch(e){throw this.logger.error("createScreenMediaTrack()",{error:e,trackParams:t}),new Error(`Can not create screen media tracks: ${e.message}`)}}))}deleteTrack(e){return this.media.deleteTrack(e)}get channelId(){return this.channel}get appId(){return this.app}get canUseNoiseSuppression(){return this.media.isNoiseSuppressorLoaded}setActiveSpeakerPeer(e){this.activeSpeaker!==e&&(this.activeSpeakerPeer=e,this.clientEventEmitter.safeEmit(U,{peer:e}))}connectToSocketServerWithRetry(e){return i(this,void 0,void 0,(function*(){return Ha((()=>i(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer",logger:new Xe({namespace:"RetrySocketConnect",logLevel:this.logLevel}),abortOnError:e=>{var t;return"unauthorized"===(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.errorCode)}})}))}connectToSocketServer(e){return i(this,void 0,void 0,(function*(){const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId,role:e.role});this.network.socket.connect(t,e.token);try{yield this.waitForSocketConnection()}catch(r){throw this.logger.error("Failed to connect to socket server",{error:r,role:e.role,channelId:e.channelId,webSocketUrl:t}),this.network.socket.disconnect(),r}}))}getAvailableNode(e){return i(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode(e)).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const r=s=>i(this,void 0,void 0,(function*(){const{error:i,state:n}=s,o=()=>this.network.socket.observer.removeListener("state",r),a=[ne.Disconnected,ne.Reconnecting].includes(n);return i?(o(),void t(i)):this.isChannelJoining&&a?(o(),void t(new Error(`Not expected socket state for new connection: ${n}`))):void(this.isChannelJoining&&[ne.Connected,ne.Reconnected].includes(n)&&(o(),e()))}));this.network.socket.observer.on("state",r)}))}performJoin(e){return i(this,void 0,void 0,(function*(){try{const{appId:t,channelId:r}=yield this.sendJoinChannelRequestWithRetry(e);this.app=t,this.channel=r,yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),this.isJoined=!0,this.logger.debug("Successfully joined channel",{channelId:r}),yield this.createAudioObserver()}catch(e){throw this.logger.error("performJoin()",{error:e}),e}}))}sendJoinChannelRequestWithRetry(e){return i(this,void 0,void 0,(function*(){return Ha((()=>i(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest",logger:new Xe({namespace:"RetryJoin",logLevel:this.logLevel})})}))}sendJoinChannelRequest(e){return i(this,void 0,void 0,(function*(){return this.network.socket.request(w,e)}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}get myPeer(){return this.peers.find((e=>e.isMe))}watchClientEvents(){this.clientEventEmitter.on(W,(e=>i(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)})))),this.clientEventEmitter.on(V,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close(),this.media.deleteTrack(e)})),this.clientEventEmitter.on(z,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.pause()})),this.clientEventEmitter.on($,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.resume()})),this.clientEventEmitter.on(G,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close()})),this.clientEventEmitter.on(H,(e=>i(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)}))))}createSelfPeerTrack(e){var t;return i(this,void 0,void 0,(function*(){const r=this.peersRepository.get(this.mySocketId);if(!r)return;yield null===(t=r.tracks.get(e.getLabel()))||void 0===t?void 0:t.close();const i=new Bo({mediaStreamTrack:e.mediaStreamTrack,label:e.getLabel(),engine:this,muted:!1,paused:e.isPaused,peerEventEmitter:r.observer});r.tracks.set(i.label,i)}))}createAudioObserver(){var e;return i(this,void 0,void 0,(function*(){if(!this.isJoined)throw new Ja("Need to join first");const t={channelId:this.channelId,appId:this.appId,peerId:null===(e=this.myPeer)||void 0===e?void 0:e.id};try{const{producerId:e}=yield this.network.getAudioObserverProducer(),r=yield this.network.createDataConsumer({producerId:e,appId:this.appId,channelId:this.channelId});r.on("message",(e=>{this.channelAudioObserverEventHandler.handle(e)})),this.audioObserver=r,this.logger.debug("Successfully create audio observer",t)}catch(e){this.logger.error("Failed to create audio observer",t)}}))}triggerRejoinEventIfAppropriate(e){this.rejoinRequested&&!this.isChannelJoining||(this.logger.debug("Triggering channel rejoin required event",{reason:e}),this.rejoinRequested=!0,this.clientEventEmitter.emit(A))}}var Qa,Xa,Ya;function Za(){}function ec(){ec.init.call(this)}function tc(e){return void 0===e._maxListeners?ec.defaultMaxListeners:e._maxListeners}function rc(e,t,r){if(t)e.call(r);else for(var i=e.length,s=lc(e,i),n=0;n<i;++n)s[n].call(r)}function ic(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=lc(e,s),o=0;o<s;++o)n[o].call(r,i)}function sc(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,o=lc(e,n),a=0;a<n;++a)o[a].call(r,i,s)}function nc(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var o=e.length,a=lc(e,o),c=0;c<o;++c)a[c].call(r,i,s,n)}function oc(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=lc(e,s),o=0;o<s;++o)n[o].apply(r,i)}function ac(e,t,r,i){var s,n,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((n=e._events)?(n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),o=n[t]):(n=e._events=new Za,e._eventsCount=0),o){if("function"==typeof o?o=n[t]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),!o.warned&&(s=tc(e))&&s>0&&o.length>s){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=n[t]=r,++e._eventsCount;return e}function cc(e,t,r){var i=!1;function s(){e.removeListener(t,s),i||(i=!0,r.apply(e,arguments))}return s.listener=r,s}function dc(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function lc(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Za.prototype=Object.create(null),ec.EventEmitter=ec,ec.usingDomains=!1,ec.prototype.domain=void 0,ec.prototype._events=void 0,ec.prototype._maxListeners=void 0,ec.defaultMaxListeners=10,ec.init=function(){this.domain=null,ec.usingDomains&&(void 0).active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Za,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},ec.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},ec.prototype.getMaxListeners=function(){return tc(this)},ec.prototype.emit=function(e){var t,r,i,s,n,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(r=o[e]))return!1;var l="function"==typeof r;switch(i=arguments.length){case 1:rc(r,l,this);break;case 2:ic(r,l,this,arguments[1]);break;case 3:sc(r,l,this,arguments[1],arguments[2]);break;case 4:nc(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(i-1),n=1;n<i;n++)s[n-1]=arguments[n];oc(r,l,this,s)}return!0},ec.prototype.addListener=function(e,t){return ac(this,e,t,!1)},ec.prototype.on=ec.prototype.addListener,ec.prototype.prependListener=function(e,t){return ac(this,e,t,!0)},ec.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,cc(this,e,t)),this},ec.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,cc(this,e,t)),this},ec.prototype.removeListener=function(e,t){var r,i,s,n,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new Za:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){o=r[n].listener,s=n;break}if(s<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Za,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,s=e.length;i<s;r+=1,i+=1)e[r]=e[i];e.pop()}(r,s);i.removeListener&&this.emit("removeListener",e,o||t)}return this},ec.prototype.off=function(e,t){return this.removeListener(e,t)},ec.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Za,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Za:delete r[e]),this;if(0===arguments.length){for(var i,s=Object.keys(r),n=0;n<s.length;++n)"removeListener"!==(i=s[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Za,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},ec.prototype.listeners=function(e){var t,r=this._events;return r&&(t=r[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[]},ec.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):dc.call(e,t)},ec.prototype.listenerCount=dc,ec.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class pc extends ec{}!function(e){e.Issue="issue",e.NetworkScoresUpdated="network-scores-updated",e.StatsParsingFinished="stats-parsing-finished"}(Qa||(Qa={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server",e.Stream="stream"}(Xa||(Xa={})),function(e){e.OutboundNetworkQuality="outbound-network-quality",e.InboundNetworkQuality="inbound-network-quality",e.OutboundNetworkMediaLatency="outbound-network-media-latency",e.InboundNetworkMediaLatency="inbound-network-media-latency",e.NetworkMediaSyncFailure="network-media-sync-failure",e.OutboundNetworkThroughput="outbound-network-throughput",e.InboundNetworkThroughput="inbound-network-throughput",e.EncoderCPUThrottling="encoder-cpu-throttling",e.DecoderCPUThrottling="decoder-cpu-throttling",e.ServerIssue="server-issue",e.UnknownVideoDecoderIssue="unknown-video-decoder",e.LowInboundMOS="low-inbound-mean-opinion-score",e.LowOutboundMOS="low-outbound-mean-opinion-score"}(Ya||(Ya={}));class uc extends ec{static STATS_REPORT_READY_EVENT="stats-report-ready";static STATS_REPORTS_PARSED="stats-reports-parsed";isStopped=!1;reportTimer;getStatsInterval;compositeStatsParser;constructor(e){super(),this.compositeStatsParser=e.compositeStatsParser,this.getStatsInterval=e.getStatsInterval??1e4}get isRunning(){return!!this.reportTimer&&!this.isStopped}startReporting(){if(this.reportTimer)return;const e=()=>setTimeout((()=>{this.isStopped?this.reportTimer=void 0:this.parseReports().finally((()=>{this.reportTimer=e()}))}),this.getStatsInterval);this.isStopped=!1,this.reportTimer=e()}stopReporting(){this.isStopped=!0,this.reportTimer&&(clearTimeout(this.reportTimer),this.reportTimer=void 0)}async parseReports(){const e=Date.now(),t=await this.compositeStatsParser.parse(),r=Date.now()-e;this.emit(uc.STATS_REPORTS_PARSED,{timeTaken:r}),t.forEach((e=>{this.emit(uc.STATS_REPORT_READY_EVENT,e)}))}}const hc=(()=>{const e=new Map;return t=>{const{taskId:r,delayMs:i,maxJitterMs:s,callback:n}=t,o=Math.ceil(Math.random()*(s||0)),a=e.get(r);a&&clearTimeout(a);const c=setTimeout((()=>{n(),e.delete(r)}),i+o);e.set(r,c)}})();class fc{#e={};calculate(e){const{connection:{id:t}}=e,r=this.calculateOutboundScore(e),i=this.calculateInboundScore(e);return this.#e[t]=e,hc({taskId:t,delayMs:35e3,callback:()=>delete this.#e[t]}),{outbound:r,inbound:i}}calculateOutboundScore(e){const t=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.remote?.audio.inbound||[],...r.remote?.video.inbound||[]],{packetsSent:s}=e.connection,n=r.connection.packetsSent,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateInboundScore(e){const t=[...e.audio?.inbound,...e.video?.inbound];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.video?.inbound,...r.audio?.inbound],{packetsReceived:s}=e.connection,n=r.connection.packetsReceived,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateMOS({avgJitter:e,rtt:t,packetsLoss:r}){const i=t+2*e+10;let s=i<160?93.2-i/40:93.2-i/120-10;return s-=2.5*r,1+.035*s+7e-6*s*(s-60)*(100-s)}}class mc{#e;#t;constructor(e={}){this.#e=new Map,this.#t=e.statsCleanupTtlMs??35e3}detect(e){const t=this.performDetection(e);return this.performPrevStatsCleanup({connectionId:e.connection.id}),t}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;this.#e.has(t)&&hc({taskId:t,delayMs:this.#t,callback:()=>{this.deleteLastProcessedStats(t),"function"==typeof r&&r()}})}setLastProcessedStats(e,t){this.#e.set(e,t)}getLastProcessedStats(e){return this.#e.get(e)}deleteLastProcessedStats(e){this.#e.delete(e)}}class gc extends mc{#r;constructor(e={}){super(e),this.#r=e.availableOutgoingBitrateThreshold??1e5}performDetection(e){const t=[],{availableOutgoingBitrate:r}=e.connection;if(void 0===r)return t;const i=e.audio.outbound.reduce(((e,t)=>e+t.targetBitrate),0),s=e.video.outbound.reduce(((e,t)=>e+t.bitrate),0);if(!i&&!s)return t;const n={availableOutgoingBitrate:r,videoStreamsTotalBitrate:s,audioStreamsTotalTargetBitrate:i};return i>r||s>0&&r<this.#r?(t.push({statsSample:n,type:Xa.Network,reason:Ya.OutboundNetworkThroughput}),t):t}}class vc extends mc{#i;constructor(e={}){super(e),this.#i=e.framesDroppedThreshold??.5}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.inbound.filter((e=>e.framesDropped>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesDropped===t.framesDropped)return;const s=e.framesReceived-t.framesReceived,n=e.framesDecoded-t.framesDecoded,o=e.framesDropped-t.framesDropped,a=o/s;if(0===s||0===n)return;const c={deltaFramesDropped:o,deltaFramesReceived:s,deltaFramesDecoded:n,framesDroppedPct:Math.round(100*a)};a>=this.#i&&r.push({statsSample:c,type:Xa.CPU,reason:Ya.DecoderCPUThrottling,ssrc:e.ssrc})})),r):r}}class yc extends mc{#s;constructor(e={}){super(e),this.#s=e.missedFramesThreshold??.15}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>e.framesEncoded>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesEncoded===t.framesEncoded)return;const s=e.framesEncoded-t.framesEncoded,n=e.framesSent-t.framesSent,o=1-n/s;if(0===s)return;if(s===n)return;const a={deltaFramesSent:n,deltaFramesEncoded:s,missedFramesPct:Math.round(100*o)};o>=this.#s&&r.push({statsSample:a,type:Xa.Network,reason:Ya.OutboundNetworkThroughput,ssrc:e.ssrc})})),r):r}}class bc extends mc{highPacketLossThresholdPct;highJitterThreshold;highJitterBufferDelayThresholdMs;highRttThresholdMs;constructor(e={}){super(),this.highPacketLossThresholdPct=e.highPacketLossThresholdPct??5,this.highJitterThreshold=e.highJitterThreshold??200,this.highJitterBufferDelayThresholdMs=e.highJitterBufferDelayThresholdMs??500,this.highRttThresholdMs=e.highRttThresholdMs??250}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.audio?.inbound,...e.video?.inbound];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.video?.inbound,...i.audio?.inbound],{packetsReceived:n}=e.connection,o=i.connection.packetsReceived,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc)),i=r?.jitterBufferDelay||0,n=r?.jitterBufferEmittedCount||0,o=t.jitterBufferDelay-i,a=t.jitterBufferEmittedCount-n,c=o&&a?1e3*o/a:0;return{sumJitter:e.sumJitter+t.jitter,sumJitterBufferDelayMs:e.sumJitterBufferDelayMs+c,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,sumJitterBufferDelayMs:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d,sumJitterBufferDelayMs:l}=a,p=d/r.length,u=l/r.length,h=n-o,f=a.packetsLost-a.lastPacketsLost,m=h&&f?Math.round(100*f/(h+f)):0,g=m>this.highPacketLossThresholdPct,v=p>=this.highJitterThreshold,y=c>=this.highRttThresholdMs,b=u>this.highJitterBufferDelayThresholdMs,w=y&&!v&&!g,_=g&&v,S=v&&b,k={rtt:c,packetLossPct:m,avgJitter:p,avgJitterBufferDelay:u};return(v||g)&&t.push({statsSample:k,type:Xa.Network,reason:Ya.InboundNetworkQuality,iceCandidate:e.connection.local.id}),w&&t.push({statsSample:k,type:Xa.Server,reason:Ya.ServerIssue,iceCandidate:e.connection.remote.id}),_&&t.push({statsSample:k,type:Xa.Network,reason:Ya.InboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),S&&t.push({statsSample:k,type:Xa.Network,reason:Ya.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id}),t}}class wc extends mc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.audio.inbound,r=[],i=this.getLastProcessedStats(e.connection.id)?.audio.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s=e.track.insertedSamplesForDeceleration+e.track.removedSamplesForAcceleration,n=t.track.insertedSamplesForDeceleration+t.track.removedSamplesForAcceleration;if(s===n)return;const o=e.track.totalSamplesReceived-t.track.totalSamplesReceived,a=s-n,c=Math.round(100*a/o),d={correctedSamplesPct:c};c>5&&r.push({statsSample:d,type:Xa.Network,reason:Ya.NetworkMediaSyncFailure,ssrc:e.ssrc})})),r):r}}class _c extends mc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.remote?.audio.inbound||[],...i.remote?.video.inbound||[]],{packetsSent:n}=e.connection,o=i.connection.packetsSent,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d}=a,l=d/r.length,p=n-o,u=a.packetsLost-a.lastPacketsLost,h=p&&u?Math.round(100*u/(p+u)):0,f=h>5,m=l>=200,g=!f&&m||m||f,v={rtt:c,avgJitter:l,packetLossPct:h};return f&&m&&t.push({statsSample:v,type:Xa.Network,reason:Ya.OutboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),g&&t.push({statsSample:v,type:Xa.Network,reason:Ya.OutboundNetworkQuality,iceCandidate:e.connection.local.id}),t}}class Sc extends mc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>"none"!==e.qualityLimitationReason)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s={qualityLimitationReason:e.qualityLimitationReason};e.framesSent>t.framesSent||("cpu"===e.qualityLimitationReason&&r.push({statsSample:s,type:Xa.CPU,reason:Ya.EncoderCPUThrottling,ssrc:e.ssrc}),"bandwidth"===e.qualityLimitationReason&&r.push({statsSample:s,type:Xa.Network,reason:Ya.OutboundNetworkThroughput,ssrc:e.ssrc}))})),r):r}}class kc extends mc{UNKNOWN_DECODER="unknown";#n={};performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;super.performPrevStatsCleanup({...e,cleanupCallback:()=>{delete this.#n[t],"function"==typeof r&&r()}})}processData(e){const t=[],{id:r}=e.connection,i=this.getLastProcessedStats(r)?.video.inbound;return e.video.inbound.forEach((e=>{const{decoderImplementation:s,ssrc:n}=e,o=i?.find((e=>e.ssrc===n));if(o)if(s===this.UNKNOWN_DECODER){if(!this.hadLastDecoderWithIssue(r,n)){this.setLastDecoderWithIssue(r,n,this.UNKNOWN_DECODER);const i={mimeType:e.mimeType,decoderImplementation:s};t.push({ssrc:n,statsSample:i,type:Xa.Stream,reason:Ya.UnknownVideoDecoderIssue,trackIdentifier:e.track.trackIdentifier})}}else this.setLastDecoderWithIssue(r,n,void 0)})),t}setLastDecoderWithIssue(e,t,r){const i=this.#n[e]??{};void 0===r?delete i[t]:i[t]=r,this.#n[e]=i}hadLastDecoderWithIssue(e,t){const r=this.#n[e];return(r&&r[t])===this.UNKNOWN_DECODER}}const Rc=e=>"closed"===e.iceConnectionState||"closed"===e.connectionState,Cc=(e,t,r)=>8*((e,t,r)=>{if(!t)return 0;const i=e[r],s=t[r];if(null==i||null==s)return 0;const n=Math.floor(e.timestamp)-Math.floor(t.timestamp);return 0===n?0:(Number(i)-Number(s))/n*1e3})(e,t,r);class Pc{connections=[];statsParser;constructor(e){this.statsParser=e.statsParser}listConnections(){return[...this.connections]}addPeerConnection(e){this.connections.push({id:e.id??String(Date.now()+Math.random().toString(32)),pc:e.pc})}removePeerConnection(e){const t=this.connections.findIndex((({pc:t})=>t===e.pc));t>=0&&this.removeConnectionsByIndexes([t])}async parse(){const e=[],t=this.connections.map((async(t,r)=>{if(!Rc(t.pc))return this.statsParser.parse(t);e.unshift(r)}));return e.length&&this.removeConnectionsByIndexes(e),(await Promise.all(t)).filter((e=>void 0!==e))}removeConnectionsByIndexes(e){e.forEach((e=>{this.connections.splice(e,1)}))}}class Tc{prevStats=new Map;allowedReportTypes=new Set(["candidate-pair","inbound-rtp","outbound-rtp","remote-outbound-rtp","remote-inbound-rtp","track","transport"]);logger;constructor(e){this.logger=e.logger}get previouslyParsedStatsConnectionsIds(){return[...this.prevStats.keys()]}async parse(e){if(!Rc(e.pc))return this.getConnectionStats(e);this.logger.debug("Skip stats parsing. Connection is closed.",{connection:e})}async getConnectionStats(e){const{pc:t,id:r}=e;try{const i=Date.now(),s=await Promise.all(t.getReceivers().map((e=>e.getStats()))),n=await Promise.all(t.getSenders().map((e=>e.getStats())));return{id:r,stats:this.mapReportsStats([...s,...n],e),timeTaken:Date.now()-i}}catch(e){return void this.logger.error("Failed to get stats for PC",{id:r,pc:t,error:e})}}mapReportsStats(e,t){const r={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]},connection:{},remote:{video:{inbound:[],outbound:[]},audio:{inbound:[],outbound:[]}}};e.forEach((e=>{e.forEach((t=>{this.allowedReportTypes.has(t.type)&&this.updateMappedStatsWithReportItemData(t,r,e)}))}));const{id:i}=t,s=this.prevStats.get(i);return s&&this.propagateStatsWithRateValues(r,s.stats),this.prevStats.set(i,{stats:r,ts:Date.now()}),hc({taskId:i,delayMs:35e3,callback:()=>this.prevStats.delete(i)}),r}updateMappedStatsWithReportItemData(e,t,r){const i=e.type;if("candidate-pair"===i&&"succeeded"===e.state&&e.nominated)return void(t.connection=this.prepareConnectionStats(e,r));const s=this.getMediaType(e);if(s)if("outbound-rtp"!==i)if("inbound-rtp"!==i)"remote-outbound-rtp"!==i?"remote-inbound-rtp"===i&&(this.mapConnectionStatsIfNecessary(t,e,r),t.remote[s].inbound.push({...e})):t.remote[s].outbound.push({...e});else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{};this.mapConnectionStatsIfNecessary(t,e,r);const n={...e,track:{...i}};t[s].inbound.push(n)}else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{},n={...e,track:{...i}};t[s].outbound.push(n)}}getMediaType(e){const t=e.mediaType||e.kind;if(!["audio","video"].includes(t)){const{id:t}=e;if(!t)return;return String(t).includes("Video")?"video":String(t).includes("Audio")?"audio":void 0}return t}propagateStatsWithRateValues(e,t){e.audio.inbound.forEach((e=>{const r=t.audio.inbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesReceived"),e.packetRate=Cc(e,r,"packetsReceived")})),e.audio.outbound.forEach((e=>{const r=t.audio.outbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesSent"),e.packetRate=Cc(e,r,"packetsSent")})),e.video.inbound.forEach((e=>{const r=t.video.inbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesReceived"),e.packetRate=Cc(e,r,"packetsReceived")})),e.video.outbound.forEach((e=>{const r=t.video.outbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesSent"),e.packetRate=Cc(e,r,"packetsSent")}))}mapConnectionStatsIfNecessary(e,t,r){if(e.connection.id||!t.transportId)return;const i=r.get(t.transportId);if(i&&i.selectedCandidatePairId){const t=r.get(i.selectedCandidatePairId);e.connection=this.prepareConnectionStats(t,r)}}prepareConnectionStats(e,t){if(!e||!t)return{};const r={...e};if(r.remoteCandidateId){const e=t.get(r.remoteCandidateId);r.remote={...e}}if(r.localCandidateId){const e=t.get(r.localCandidateId);r.local={...e}}return r}}class Ec{eventEmitter;#o=!1;detectors=[];networkScoresCalculator;statsReporter;compositeStatsParser;logger;constructor(e){this.logger=e.logger??{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},this.eventEmitter=e.issueEmitter??new pc,e.onIssues&&this.eventEmitter.on(Qa.Issue,e.onIssues),e.onNetworkScoresUpdated&&this.eventEmitter.on(Qa.NetworkScoresUpdated,e.onNetworkScoresUpdated),this.detectors=e.detectors??[new Sc,new vc,new yc,new bc,new _c,new wc,new gc,new kc],this.networkScoresCalculator=e.networkScoresCalculator??new fc,this.compositeStatsParser=e.compositeStatsParser??new Pc({statsParser:new Tc({logger:this.logger})}),this.statsReporter=e.statsReporter??new uc({compositeStatsParser:this.compositeStatsParser,getStatsInterval:e.getStatsInterval??5e3}),window.wid=this,this.wrapRTCPeerConnection(),this.statsReporter.on(uc.STATS_REPORT_READY_EVENT,(t=>{this.detectIssues({data:t.stats,ignoreSSRCList:e.ignoreSSRCList}),this.calculateNetworkScores(t.stats)})),this.statsReporter.on(uc.STATS_REPORTS_PARSED,(e=>{const t={timeTaken:e.timeTaken,ts:Date.now()};this.eventEmitter.emit(Qa.StatsParsingFinished,t)}))}watchNewPeerConnections(){this.#o?this.logger.warn("WebRTCIssueDetector is already started. Skip processing"):(this.logger.info("Start watching peer connections"),this.#o=!0,this.statsReporter.startReporting())}stopWatchingNewPeerConnections(){this.#o?(this.logger.info("Stop watching peer connections"),this.#o=!1,this.statsReporter.stopReporting()):this.logger.warn("WebRTCIssueDetector is already stopped. Skip processing")}handleNewPeerConnection(e){this.#o?(this.logger.debug("Handling new peer connection",e),this.compositeStatsParser.addPeerConnection({pc:e})):this.logger.debug("Skip handling new peer connection. Detector is not running",e)}emitIssues(e){this.eventEmitter.emit(Qa.Issue,e)}detectIssues({data:e,ignoreSSRCList:t}){let r=this.detectors.reduce(((t,r)=>[...t,...r.detect(e)]),[]);t?.length&&(r=r.filter((e=>!e.ssrc||!t.includes(e.ssrc)))),r.length>0&&this.emitIssues(r)}calculateNetworkScores(e){const t=this.networkScoresCalculator.calculate(e);this.eventEmitter.emit(Qa.NetworkScoresUpdated,t)}wrapRTCPeerConnection(){if(!window.RTCPeerConnection)return void this.logger.warn("No RTCPeerConnection found in browser window. Skipping");const e=window.RTCPeerConnection,t=e=>this.handleNewPeerConnection(e);function r(r){const i=new e(r);return t(i),i}r.prototype=e.prototype,window.RTCPeerConnection=r}}Error;const Dc=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],xc=({from:e,seen:t,to_:r,forceEnumerable:i})=>{const s=r||(Array.isArray(e)?[]:{});t.push(e);for(const[r,n]of Object.entries(e))"function"!=typeof n&&(n&&"object"==typeof n?t.includes(e[r])?s[r]="[Circular]":s[r]=xc({from:e[r],seen:t.slice(),forceEnumerable:i}):s[r]=n);for(const{property:t,enumerable:r}of Dc)"string"==typeof e[t]&&Object.defineProperty(s,t,{value:e[t],enumerable:!!i||r,configurable:!0,writable:!0});return s};var Mc=e=>"object"==typeof e&&null!==e?xc({from:e,seen:[],forceEnumerable:!0}):"function"==typeof e?`[Function: ${e.name||"anonymous"}]`:e;class Lc{constructor(e){var t;const{socketClient:r,loadBalancerApiClient:i,onLogMessage:s}=e;this.socket=r,this.loadBalancerClient=i,this.eventEmitter=null!==(t=e.eventEmitter)&&void 0!==t?t:new o,this.logger=new Xe({namespace:"Network",logLevel:e.logLevel,onLogMessage:s})}closeRemoteProducer(e){return i(this,void 0,void 0,(function*(){yield this.socket.request(ae,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return i(this,void 0,void 0,(function*(){this.sendTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.sendTransport)),this.sendTransport=void 0):this.logger.warn("closeSendTransport()",{message:"No available send transport"})}))}closeReceiveTransport(){var e;return i(this,void 0,void 0,(function*(){this.receiveTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.receiveTransport)),this.receiveTransport=void 0):this.logger.warn("closeReceiveTransport()",{message:"No available receive transport"})}))}closeTransport(e){return i(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(Pe,{transportId:e.id});return this.logger.debug("closeTransport()",{transport:e}),Boolean(t)}catch(e){return this.logger.error("closeTransport()",{error:e}),!1}finally{e.close()}}))}createSendTransport(e){return i(this,void 0,void 0,(function*(){if(this.sendTransport)return void this.logger.warn("createSendTransport()",{message:"Send transport already exists"});const t=yield this.socket.request(Ce,{sctpCapabilities:e.sctpCapabilities,localDirection:"send"}),r=e.createSendTransport(t);this.logger.debug("createSendTransport()",{transport:this.sendTransport}),r.on(Le,(({dtlsParameters:e},s,n)=>i(this,void 0,void 0,(function*(){try{yield this.socket.request(Te,{transportId:r.id,dtlsParameters:e}),s(),this.logger.debug("sendTransport.connect()",{transportId:r.id,dtlsRole:e.role}),setTimeout((()=>this.logTransportDetails(r)),200)}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),n(r)}})))),r.on(Ie,((e,t,s)=>i(this,void 0,void 0,(function*(){try{const{id:i}=yield this.socket.request(Ee,{transportId:r.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:i}),this.logger.debug("sendTransport.produce()",{producerId:i,transportId:r.id,kind:e.kind})}catch(t){this.logger.error("sendTransport.produce()",{error:t,transportId:r.id,kind:e.kind}),s(t)}})))),r.on(xe,(e=>{this.logger.info("sendTransport.state",{state:e}),"failed"===e&&(this.restartIce(r),this.logger.warn("sendTransport.restartIce()",{state:e,sendTransportId:r.id})),setTimeout((()=>{var e,t;"disconnected"===(null===(e=this.sendTransport)||void 0===e?void 0:e.connectionState)&&(null===(t=this.socket.connection)||void 0===t?void 0:t.connected)&&(this.logger.warn("sendTransport is closed before websocket is closed",{sendTransportId:r.id}),this.eventEmitter.safeEmit(Oe,{direction:"send",transportId:r.id,socketId:this.socket.id}))}),3e3)})),this.sendTransport=r}))}createRecvTransport(e){return i(this,void 0,void 0,(function*(){if(this.receiveTransport)return void this.logger.warn("createReceiveTransport()",{message:"Receive transport already exists"});const t=yield this.socket.request(Ce,{localDirection:"receive"}),r=e.createRecvTransport(t);this.logger.debug("createReceiveTransport()",{transport:this.receiveTransport}),r.on(Le,(({dtlsParameters:e},t,s)=>i(this,void 0,void 0,(function*(){try{yield this.socket.request(Te,{transportId:r.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()",{transportId:r.id,dtlsRole:e.role}),setTimeout((()=>this.logTransportDetails(r)),200)}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),s(e)}})))),r.on(xe,(e=>{this.logger.info("receiveTransport.state",{state:e}),"failed"===e&&(this.restartIce(r),this.logger.debug("receiveTransport.restartIce()",{recvTransportId:r.id})),setTimeout((()=>{var e,t;"disconnected"===(null===(e=this.receiveTransport)||void 0===e?void 0:e.connectionState)&&(null===(t=this.socket.connection)||void 0===t?void 0:t.connected)&&(this.logger.warn("receiveTransport is closed before websocket is closed",{recvTransportId:r.id}),this.eventEmitter.safeEmit(Oe,{direction:"recv",transportId:r.id,socketId:this.socket.id}))}),3e3)})),this.receiveTransport=r}))}getIceParameters(e){return i(this,void 0,void 0,(function*(){const t=yield this.socket.request(Me,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);return this.logger.debug("getIceParameters()",{iceParameters:t}),t}))}restartIce(e){return i(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t}),this.logger.debug("restartIce() completed",{iceParameters:t})}catch(e){this.logger.error("restartIce()",{error:e})}}))}createConsumer({producerId:e,rtpCapabilities:t,appId:r,channelId:s,producerPeerId:n}){return i(this,void 0,void 0,(function*(){const i=this.receiveTransport;if(!i)throw this.logger.error("createConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createConsumer()",{producerId:e});const o=yield this.socket.request(ge,{producerId:e,transportId:i.id,rtpCapabilities:t,appData:{peerId:this.socket.id,appId:r,channelId:s},producerPeerId:n}),a=yield i.consume(o),{producerPaused:c}=o;return this.logger.debug("Consumer created",{consumer:a,isProducerPaused:c}),{consumer:a,isProducerPaused:c}}))}createDataConsumer({producerId:e,appId:t,channelId:r}){return i(this,void 0,void 0,(function*(){const i=this.receiveTransport;if(!i)throw this.logger.error("createDataConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createDataConsumer()",{producerId:e});const s=yield this.socket.request(ve,{dataProducerId:e,transportId:i.id,appData:{peerId:this.socket.id,producerId:e,appId:t,channelId:r}}),n=yield i.consumeData(s);return this.logger.debug("Data consumer created",{consumer:n}),n}))}closeRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(ye,{peerId:this.socket.id,consumerId:e})}))}resumeRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(we,{consumerId:e})}))}pauseRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(be,{consumerId:e})}))}updatePeerAppData({peerId:e,appData:t}){return i(this,void 0,void 0,(function*(){return this.socket.request(k,{peerId:e,appData:t})}))}getAudioObserverProducer(){return i(this,void 0,void 0,(function*(){return this.socket.request(E)}))}getTransportsStateInfo(){return i(this,void 0,void 0,(function*(){const[e,t]=yield Promise.all([this.getParsedTransportStats(this.receiveTransport),this.getParsedTransportStats(this.sendTransport)]);return{receive:e,send:t}}))}getParsedTransportStats(e){return i(this,void 0,void 0,(function*(){if(e)try{const t=Array.from((yield e.getStats()).values()),r=t.find((e=>"local-candidate"===e.type)),i=t.find((e=>"remote-candidate"===e.type)),s=t.find((e=>"transport"===e.type));return{dtlsState:null==s?void 0:s.dtlsState,iceState:null==s?void 0:s.iceState,dtlsRole:null==s?void 0:s.dtlsRole,iceRole:null==s?void 0:s.iceRole,selectedCandidatePairChanges:null==s?void 0:s.selectedCandidatePairChanges,tlsVersion:null==s?void 0:s.tlsVersion,localCandidateState:{ip:null==r?void 0:r.ip,address:null==r?void 0:r.address,port:null==r?void 0:r.port,protocol:null==r?void 0:r.protocol,candidateType:null==r?void 0:r.candidateType},remoteCandidateState:{ip:null==i?void 0:i.ip,address:null==i?void 0:i.address,port:null==i?void 0:i.port,protocol:null==i?void 0:i.protocol,candidateType:null==i?void 0:i.candidateType}}}catch(e){return void this.logger.warn("getParsedTransportStats()",{error:e})}else this.logger.debug("getParsedTransportStats()",{message:"Transport is missing"})}))}logTransportDetails(e){var t;return i(this,void 0,void 0,(function*(){try{const r=yield e.getStats(),i=[...r].find((([,e])=>"transport"===e.type)),s=(null==i?void 0:i.length)?i[1]:void 0,n=s.selectedCandidatePairId,o=r.get(String(n||"-")),a=r.get(String((null==o?void 0:o.localCandidateId)||"-")),c=r.get(String((null==o?void 0:o.remoteCandidateId)||"-"));this.logger.info("Detaild transport stats",{totalRtt:null!==(t=null==o?void 0:o.totalRoundTripTime)&&void 0!==t?t:"-",iceRole:null==s?void 0:s.iceRole,iceState:null==s?void 0:s.iceState,dtlsRole:null==s?void 0:s.dtlsRole,dtlsState:null==s?void 0:s.dtlsState,local:{address:null==a?void 0:a.address,candidateType:null==a?void 0:a.candidateType,foundation:null==a?void 0:a.foundation,networkType:null==a?void 0:a.networkType,isRemote:null==a?void 0:a.isRemote,port:null==a?void 0:a.port,protocol:null==a?void 0:a.protocol,relatedAddress:null==a?void 0:a.relatedAddress,relatedPort:null==a?void 0:a.relatedPort,transportId:null==a?void 0:a.transportId},remote:{address:null==c?void 0:c.address,candidateType:null==c?void 0:c.candidateType,foundation:null==c?void 0:c.foundation,isRemote:null==c?void 0:c.isRemote,port:null==c?void 0:c.port,protocol:null==c?void 0:c.protocol,transportId:null==c?void 0:c.transportId}})}catch(t){this.logger.error("Failed to log transport details",{error:Mc(t),transportId:e.id})}}))}}const Ic=e=>![f.NotFoundError,f.NotAllowedError,f.DeviceIsBusy].includes(e);class Oc{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[];const{clientEventEmitter:t,logLevel:r,onLogMessage:i}=e;this.clientEventEmitter=t,this.logger=new Xe({namespace:"System",logLevel:r,onLogMessage:i}),this.deviceChangeHandler=this.deviceChangeHandler.bind(this),this.listenDevices()}setIsEnableVideoDevicesLock(e){this.isEnableVideoDevicesLock=e}setIsEnableAudioDevicesLock(e){this.isEnableAudioDevicesLock=e}setAvailableVideoDevices(e){this.availableVideoDevices=e}setAvailableAudioDevices(e){this.availableAudioDevices=e}requestMediaDevicesAccess(e={video:!0,audio:!0}){return i(this,void 0,void 0,(function*(){try{return(yield navigator.mediaDevices.getUserMedia(e)).getTracks()}catch(t){if(this.logger.error("getUserMedia()",{error:t,constraints:e}),"NotAllowedError"===t.name)throw new Error(f.NotAllowedError);if("NotReadableError"===t.name)throw new Error(f.DeviceIsBusy);if("NotFoundError"===t.name)throw new Error(f.NotFoundError);throw new Error(f.RequestDevicesUnknownError)}}))}refreshAvailableMediaDevicesList(){return i(this,void 0,void 0,(function*(){const e=yield navigator.mediaDevices.enumerateDevices(),t=[],r=[];e.forEach((e=>{""!==e.deviceId&&("videoinput"===e.kind&&t.push(e),"audioinput"===e.kind&&r.push(e))})),this.setAvailableVideoDevices(t),this.setAvailableAudioDevices(r);const i=({label:e,kind:t})=>({label:e,kind:t});return this.logger.debug("Devices list updated",{videoDevices:t.map(i),audioDevices:r.map(i)}),e}))}detectDevices(){return i(this,void 0,void 0,(function*(){let e=[];if(this.isDevicesDetected)return;try{e=yield this.requestMediaDevicesAccess()}catch(e){if(Ic(e.message))throw e;e.message!==f.DeviceIsBusy&&(yield this.assertHasAccessToMediaDevices({audio:!0}),yield this.assertHasAccessToMediaDevices({video:!0}))}this.isDevicesDetected=!0;const t=yield this.refreshAvailableMediaDevicesList();e.forEach((e=>e.stop()));const r=t.some((e=>"audioinput"===e.kind)),i=t.some((e=>"videoinput"===e.kind));if(!r&&!i)throw new Error(f.NoDevices)}))}deviceChangeHandler(){return i(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(j,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}listenDevices(){navigator.mediaDevices.addEventListener("devicechange",this.deviceChangeHandler)}assertHasAccessToMediaDevices(e={video:!0,audio:!0}){return i(this,void 0,void 0,(function*(){try{(yield this.requestMediaDevicesAccess(e)).forEach((e=>e.stop()))}catch(e){if(Ic(e.message))throw e}}))}}class Ac{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Xe({logLevel:t.logLevel,namespace:"ChannelEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(b,(e=>{this.engine.clientEventEmitter.safeEmit(D,e),this.logger.debug("New channel event",{event:e})})),e.on(w,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(x,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(S,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(M,e),this.logger.debug("Peer left the channel",{peerId:e})})),e.on(P,(e=>{this.engine.clientEventEmitter.safeEmit(L,e),this.logger.info("Notify the channel that activity confirmation is required",e)})),e.on(T,(e=>{this.engine.clientEventEmitter.safeEmit(O,e),this.logger.info("Notify the channel that it has disconnected due to the activity confirmation expiring",e)})),e.on(C,(e=>{this.engine.clientEventEmitter.safeEmit(I,e),this.logger.info("Notify the channel that the activity has been acquired.",e)})),e.on(k,(({peerId:e,appData:t})=>{const r=this.engine.peers.find((t=>t.id===e));r&&r.observer.emit(k,t)}))}}class jc{constructor(e){this.queue=new No;const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Xe({logLevel:t.logLevel,namespace:"MediasoupEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(ae,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(ae,e)})),e.on(oe,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(oe,e)})),e.on(ye,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(ye,e)})),e.on(we,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(we,e)})),e.on(be,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(be,e)})),e.on(Se,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const s=this.engine.peers.find((t=>t.id===e));s&&!s.isMe&&s.observer.safeEmit(Se,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(_e,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(_e,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(_e,e)})),e.on(he,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(he,e)})),e.on(me,(({producerId:e,spatialLayer:t})=>i(this,void 0,void 0,(function*(){yield this.queue.push((()=>i(this,void 0,void 0,(function*(){yield this.handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t})}))),me)})))),e.on(fe,(({peerId:e,producerId:t,spatialLayer:r})=>i(this,void 0,void 0,(function*(){const i=this.engine.peers.find((t=>t.id===e));i&&!i.isMe&&i.observer.safeEmit(fe,{peerId:e,producerId:t,spatialLayer:r})})))),e.on(De,(({reason:e,transportId:t,direction:r,timeout:s})=>i(this,void 0,void 0,(function*(){const i=[this.engine.network.receiveTransport,this.engine.network.sendTransport].find((e=>(null==e?void 0:e.id)===t));i&&"connected"!==i.connectionState&&(this.logger.warn(De,{reason:e,transportId:t,direction:r,timeout:s}),this.engine.clientEventEmitter.emit(F,{direction:r,reason:e}))})))),e.on(le,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!0,r.observer.safeEmit(Q,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(pe,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!1,r.observer.safeEmit(X,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(ue,(({label:e})=>i(this,void 0,void 0,(function*(){const t=this.engine.media.getTrack(e);t&&(t.stopMediaStreamTrack(),this.engine.clientEventEmitter.safeEmit(G,t),this.engine.clientEventEmitter.emit(B,{label:e}),yield this.engine.media.deleteTrack(t))}))))}handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t}){return i(this,void 0,void 0,(function*(){const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e}));if(!r)return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Producer not found"});if(!(r instanceof $a))return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Wrong producer kind"});const i=r.getMaxSpatialLayer();i!==t?(yield r.setMaxSpatialLayer(t),yield this.engine.network.socket.request(fe,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})}))}}var Fc=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Nc=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],Bc=function(e){var t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));for(var s,n,o=Fc.exec(e||""),a={},c=14;c--;)a[Nc[c]]=o[c]||"";return-1!=r&&-1!=i&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){var r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.substr(0,1)&&0!==t.length||i.splice(0,1);"/"==t.substr(t.length-1,1)&&i.splice(i.length-1,1);return i}(0,a.path),a.queryKey=(s=a.query,n={},s.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n),a};var Uc={exports:{}};try{Uc.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){Uc.exports=!1}var qc=Uc.exports,Wc="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Vc(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||qc))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Wc[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function zc(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const $c=setTimeout,Gc=clearTimeout;function Hc(e,t){t.useNativeTimers?(e.setTimeoutFn=$c.bind(Wc),e.clearTimeoutFn=Gc.bind(Wc)):(e.setTimeoutFn=setTimeout.bind(Wc),e.clearTimeoutFn=clearTimeout.bind(Wc))}var Jc=Kc;function Kc(e){if(e)return function(e){for(var t in Kc.prototype)e[t]=Kc.prototype[t];return e}(e)}Kc.prototype.on=Kc.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Kc.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Kc.prototype.off=Kc.prototype.removeListener=Kc.prototype.removeAllListeners=Kc.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},Kc.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},Kc.prototype.emitReserved=Kc.prototype.emit,Kc.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Kc.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Qc=Object.create(null);Qc.open="0",Qc.close="1",Qc.ping="2",Qc.pong="3",Qc.message="4",Qc.upgrade="5",Qc.noop="6";const Xc=Object.create(null);Object.keys(Qc).forEach((e=>{Xc[Qc[e]]=e}));const Yc={type:"error",data:"parser error"},Zc="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),ed="function"==typeof ArrayBuffer,td=({type:e,data:t},r,i)=>{return Zc&&t instanceof Blob?r?i(t):rd(t,i):ed&&(t instanceof ArrayBuffer||(s=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer))?r?i(t):rd(new Blob([t]),i):i(Qc[e]+(t||""));var s},rd=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var id="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",sd="undefined"==typeof Uint8Array?[]:new Uint8Array(256),nd=0;nd<id.length;nd++)sd[id.charCodeAt(nd)]=nd;const od="function"==typeof ArrayBuffer,ad=(e,t)=>{if("string"!=typeof e)return{type:"message",data:dd(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:cd(e.substring(1),t)};return Xc[r]?e.length>1?{type:Xc[r],data:e.substring(1)}:{type:Xc[r]}:Yc},cd=(e,t)=>{if(od){const r=function(e){var t,r,i,s,n,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var d=new ArrayBuffer(o),l=new Uint8Array(d);for(t=0;t<a;t+=4)r=sd[e.charCodeAt(t)],i=sd[e.charCodeAt(t+1)],s=sd[e.charCodeAt(t+2)],n=sd[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|s>>2,l[c++]=(3&s)<<6|63&n;return d}(e);return dd(r,t)}return{base64:!0,data:e}},dd=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,ld=String.fromCharCode(30);class pd extends Jc{constructor(e){super(),this.writable=!1,Hc(this,e),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const r=new Error(e);return r.type="TransportError",r.description=t,super.emit("error",r),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emit("open")}onData(e){const t=ad(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var ud,hd="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),fd={},md=0,gd=0;function vd(e){var t="";do{t=hd[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function yd(){var e=vd(+new Date);return e!==ud?(md=0,ud=e):e+"."+vd(md++)}for(;gd<64;gd++)fd[hd[gd]]=gd;yd.encode=vd,yd.decode=function(e){var t=0;for(gd=0;gd<e.length;gd++)t=64*t+fd[e.charAt(gd)];return t};var bd=yd,wd={encode:function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t},decode:function(e){for(var t={},r=e.split("&"),i=0,s=r.length;i<s;i++){var n=r[i].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}};class _d extends pd{constructor(){super(...arguments),this.polling=!1}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emit("poll")}onData(e){((e,t)=>{const r=e.split(ld),i=[];for(let e=0;e<r.length;e++){const s=ad(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose(),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{td(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(ld))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let r="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=bd()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);const i=wd.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function Sd(){}const kd=null!=new Vc({xdomain:!1}).responseType;class Rd extends Jc{constructor(e,t){super(),Hc(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=zc(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new Vc(e);try{t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=Rd.requestsCount++,Rd.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(e){this.emit("data",e),this.onSuccess()}onError(e){this.emit("error",e),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=Sd,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Rd.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(Rd.requestsCount=0,Rd.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Cd);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Wc?"pagehide":"unload",Cd,!1)}function Cd(){for(let e in Rd.requests)Rd.requests.hasOwnProperty(e)&&Rd.requests[e].abort()}const Pd="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Td=Wc.WebSocket||Wc.MozWebSocket,Ed="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class Dd extends pd{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=Ed?{}:zc(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=Ed?new Td(e,t,r):t?new Td(e,t):new Td(e)}catch(e){return this.emit("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;td(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&Pd((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let r="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=bd()),this.supportsBinary||(e.b64=1);const i=wd.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!Td||"__initialize"in Td&&this.name===Dd.prototype.name)}}const xd={websocket:Dd,polling:class extends _d{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=kd&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new Rd(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e=>{this.onError("xhr post error",e)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e=>{this.onError("xhr poll error",e)})),this.pollXhr=e}}};class Md extends Jc{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=Bc(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=Bc(t.host).host),Hc(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=wd.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=function(e){const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}(this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new xd[e](r)}open(){let e;if(this.opts.rememberUpgrade&&Md.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(e){let t=this.createTransport(e),r=!1;Md.priorWebsocketSuccess=!1;const i=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;Md.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function s(){r||(r=!0,d(),t.close(),t=null)}const n=e=>{const r=new Error("probe error: "+e);r.transport=t.name,s(),this.emitReserved("upgradeError",r)};function o(){n("transport closed")}function a(){n("socket closed")}function c(e){t&&e.name!==t.name&&s()}const d=()=>{t.removeListener("open",i),t.removeListener("error",n),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",i),t.once("error",n),t.once("close",o),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",Md.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.resetPingTimeout(),this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(e){Md.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}Md.protocol=4,Md.protocol;const Ld="function"==typeof ArrayBuffer,Id=Object.prototype.toString,Od="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Id.call(Blob),Ad="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Id.call(File);function jd(e){return Ld&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||Od&&e instanceof Blob||Ad&&e instanceof File}function Fd(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Fd(e[t]))return!0;return!1}if(jd(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Fd(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Fd(e[t]))return!0;return!1}function Nd(e){const t=[],r=e.data,i=e;return i.data=Bd(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Bd(e,t){if(!e)return e;if(jd(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=Bd(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=Bd(e[i],t));return r}return e}function Ud(e,t){return e.data=qd(e.data,t),e.attachments=void 0,e}function qd(e,t){if(!e)return e;if(e&&e._placeholder)return t[e.num];if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=qd(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=qd(e[r],t));return e}var Wd;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Wd||(Wd={}));class Vd extends Jc{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===Wd.BINARY_EVENT||t.type===Wd.BINARY_ACK?(this.reconstructor=new zd(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!jd(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Wd[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Wd.BINARY_EVENT||r.type===Wd.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(t));if(!Vd.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case Wd.CONNECT:return"object"==typeof t;case Wd.DISCONNECT:return void 0===t;case Wd.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case Wd.EVENT:case Wd.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case Wd.ACK:case Wd.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class zd{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Ud(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var $d=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Wd},Encoder:class{encode(e){return e.type!==Wd.EVENT&&e.type!==Wd.ACK||!Fd(e)?[this.encodeAsString(e)]:(e.type=e.type===Wd.EVENT?Wd.BINARY_EVENT:Wd.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==Wd.BINARY_EVENT&&e.type!==Wd.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data)),t}encodeAsBinary(e){const t=Nd(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:Vd});function Gd(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Hd=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Jd extends Jc{constructor(e,t,r){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Gd(e,"open",this.onopen.bind(this)),Gd(e,"packet",this.onpacket.bind(this)),Gd(e,"error",this.onerror.bind(this)),Gd(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Hd.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:Wd.EVENT,data:t,options:{}};r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]&&(this.acks[this.ids]=t.pop(),r.id=this.ids++);const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?this.packet(r):this.sendBuffer.push(r)),this.flags={},this}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:Wd.CONNECT,data:e})})):this.packet({type:Wd.CONNECT,data:this.auth})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Wd.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Wd.EVENT:case Wd.BINARY_EVENT:this.onevent(e);break;case Wd.ACK:case Wd.BINARY_ACK:this.onack(e);break;case Wd.DISCONNECT:this.ondisconnect();break;case Wd.CONNECT_ERROR:const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e)}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Wd.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e){this.id=e,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>this.packet(e))),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Wd.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}}var Kd=Qd;function Qd(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Qd.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Qd.prototype.reset=function(){this.attempts=0},Qd.prototype.setMin=function(e){this.ms=e},Qd.prototype.setMax=function(e){this.max=e},Qd.prototype.setJitter=function(e){this.jitter=e};class Xd extends Jc{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Hc(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Kd({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||$d;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Md(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Gd(t,"open",(function(){r.onopen(),e&&e()})),s=Gd(t,"error",(t=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",t),e?e(t):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&i();const r=this.setTimeoutFn((()=>{i(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Gd(e,"ping",this.onping.bind(this)),Gd(e,"data",this.ondata.bind(this)),Gd(e,"error",this.onerror.bind(this)),Gd(e,"close",this.onclose.bind(this)),Gd(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){this.decoder.add(e)}ondecoded(e){this.emitReserved("packet",e)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r||(r=new Jd(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Yd={};function Zd(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=Bc(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,o=Yd[s]&&n in Yd[s].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Xd(i,t):(Yd[s]||(Yd[s]=new Xd(i,t)),a=Yd[s]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}class el{constructor(e){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new o,this.knownDisconnectReasonsCodes={"io server disconnect":"server.disconnect","io client disconnect":"client.disconnect","ping timeout":"ping.timeout","transport close":"transport.close","transport error":"transport.error"},this.logger=new Xe({namespace:"Socket",logLevel:e.logLevel,onLogMessage:e.onLogMessage})}get observer(){return this._observer}get id(){var e;return null===(e=this.connection)||void 0===e?void 0:e.id}connect(e,t){const r=Zd(e,{transports:["polling","websocket"],upgrade:!0,rememberUpgrade:!1,auth:{token:t}});this.connection=r,this.serverUrl=e,r.on("connect",(()=>{const e=this.reconnectingAttempt?ne.Reconnected:ne.Connected;this.isConnected=!0,this.setReconnectingAttempt(0),this.logger.debug("connection.on(`connect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:e})})),r.on("connect_error",(e=>{this.connectionError=e,this.logger.error("connection.on(`connect_error`)",{error:e}),this.observer.safeEmit("state",{state:ne.Error,error:e})})),r.on("disconnect",(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn("connection.on(`disconnect`)",{reason:e}),this.observer.safeEmit("state",{state:ne.Disconnected,code:this.getDisconnectReasonCode(e)})})),r.io.on("reconnect_attempt",(e=>{this.setReconnectingAttempt(e),this.logger.warn("connection.on(`reconnect_attempt`)",{attempt:e}),this.observer.safeEmit("state",{state:ne.Reconnecting})})),r.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:ne.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.setReconnectingAttempt(0))}request(e,t={}){return new Promise(((r,i)=>{if(!this.connection)return this.logger.error("request()",{type:e,data:t}),void i(new Error("Socket request: Socket connection is not initialized"));this.connection.emit(e,t,(s=>{s.error?(this.logger.error("request()",{event:e,payload:t,response:s}),i(s.error)):r(s)}))}))}getDisconnectReasonCode(e){const t=String(e).toLowerCase();return this.knownDisconnectReasonsCodes[t]||t}setReconnectingAttempt(e){this.reconnectingAttempt=e}}var tl={exports:{}},rl=function(e,t){return function(){for(var r=new Array(arguments.length),i=0;i<r.length;i++)r[i]=arguments[i];return e.apply(t,r)}},il=rl,sl=Object.prototype.toString;function nl(e){return"[object Array]"===sl.call(e)}function ol(e){return void 0===e}function al(e){return null!==e&&"object"==typeof e}function cl(e){if("[object Object]"!==sl.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function dl(e){return"[object Function]"===sl.call(e)}function ll(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),nl(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}var pl={isArray:nl,isArrayBuffer:function(e){return"[object ArrayBuffer]"===sl.call(e)},isBuffer:function(e){return null!==e&&!ol(e)&&null!==e.constructor&&!ol(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:al,isPlainObject:cl,isUndefined:ol,isDate:function(e){return"[object Date]"===sl.call(e)},isFile:function(e){return"[object File]"===sl.call(e)},isBlob:function(e){return"[object Blob]"===sl.call(e)},isFunction:dl,isStream:function(e){return al(e)&&dl(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:ll,merge:function e(){var t={};function r(r,i){cl(t[i])&&cl(r)?t[i]=e(t[i],r):cl(r)?t[i]=e({},r):nl(r)?t[i]=r.slice():t[i]=r}for(var i=0,s=arguments.length;i<s;i++)ll(arguments[i],r);return t},extend:function(e,t,r){return ll(t,(function(t,i){e[i]=r&&"function"==typeof t?il(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},ul=pl;function hl(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var fl=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(ul.isURLSearchParams(t))i=t.toString();else{var s=[];ul.forEach(t,(function(e,t){null!=e&&(ul.isArray(e)?t+="[]":e=[e],ul.forEach(e,(function(e){ul.isDate(e)?e=e.toISOString():ul.isObject(e)&&(e=JSON.stringify(e)),s.push(hl(t)+"="+hl(e))})))})),i=s.join("&")}if(i){var n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},ml=pl;function gl(){this.handlers=[]}gl.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},gl.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},gl.prototype.forEach=function(e){ml.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var vl=gl,yl=pl,bl=function(e,t,r,i,s){return e.config=t,r&&(e.code=r),e.request=i,e.response=s,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e},wl=bl,_l=function(e,t,r,i,s){var n=new Error(e);return wl(n,t,r,i,s)},Sl=_l,kl=pl,Rl=kl.isStandardBrowserEnv()?{write:function(e,t,r,i,s,n){var o=[];o.push(e+"="+encodeURIComponent(t)),kl.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),kl.isString(i)&&o.push("path="+i),kl.isString(s)&&o.push("domain="+s),!0===n&&o.push("secure"),document.cookie=o.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},Cl=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},Pl=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},Tl=pl,El=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Dl=pl,xl=Dl.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function i(e){var i=e;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=i(window.location.href),function(t){var r=Dl.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},Ml=pl,Ll=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(Sl("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},Il=Rl,Ol=fl,Al=function(e,t){return e&&!Cl(t)?Pl(e,t):t},jl=function(e){var t,r,i,s={};return e?(Tl.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=Tl.trim(e.substr(0,i)).toLowerCase(),r=Tl.trim(e.substr(i+1)),t){if(s[t]&&El.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s},Fl=xl,Nl=_l,Bl=function(e){return new Promise((function(t,r){var i=e.data,s=e.headers,n=e.responseType;Ml.isFormData(i)&&delete s["Content-Type"];var o=new XMLHttpRequest;if(e.auth){var a=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";s.Authorization="Basic "+btoa(a+":"+c)}var d=Al(e.baseURL,e.url);function l(){if(o){var i="getAllResponseHeaders"in o?jl(o.getAllResponseHeaders()):null,s={data:n&&"text"!==n&&"json"!==n?o.response:o.responseText,status:o.status,statusText:o.statusText,headers:i,config:e,request:o};Ll(t,r,s),o=null}}if(o.open(e.method.toUpperCase(),Ol(d,e.params,e.paramsSerializer),!0),o.timeout=e.timeout,"onloadend"in o?o.onloadend=l:o.onreadystatechange=function(){o&&4===o.readyState&&(0!==o.status||o.responseURL&&0===o.responseURL.indexOf("file:"))&&setTimeout(l)},o.onabort=function(){o&&(r(Nl("Request aborted",e,"ECONNABORTED",o)),o=null)},o.onerror=function(){r(Nl("Network Error",e,null,o)),o=null},o.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Nl(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",o)),o=null},Ml.isStandardBrowserEnv()){var p=(e.withCredentials||Fl(d))&&e.xsrfCookieName?Il.read(e.xsrfCookieName):void 0;p&&(s[e.xsrfHeaderName]=p)}"setRequestHeader"in o&&Ml.forEach(s,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete s[t]:o.setRequestHeader(t,e)})),Ml.isUndefined(e.withCredentials)||(o.withCredentials=!!e.withCredentials),n&&"json"!==n&&(o.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&o.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&o.upload&&o.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){o&&(o.abort(),r(e),o=null)})),i||(i=null),o.send(i)}))},Ul=pl,ql=function(e,t){yl.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Wl=bl,Vl={"Content-Type":"application/x-www-form-urlencoded"};function zl(e,t){!Ul.isUndefined(e)&&Ul.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var $l,Gl={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&($l=Bl),$l),transformRequest:[function(e,t){return ql(t,"Accept"),ql(t,"Content-Type"),Ul.isFormData(e)||Ul.isArrayBuffer(e)||Ul.isBuffer(e)||Ul.isStream(e)||Ul.isFile(e)||Ul.isBlob(e)?e:Ul.isArrayBufferView(e)?e.buffer:Ul.isURLSearchParams(e)?(zl(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Ul.isObject(e)||t&&"application/json"===t["Content-Type"]?(zl(t,"application/json"),function(e,t,r){if(Ul.isString(e))try{return(t||JSON.parse)(e),Ul.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,s=!r&&"json"===this.responseType;if(s||i&&Ul.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw Wl(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};Gl.headers={common:{Accept:"application/json, text/plain, */*"}},Ul.forEach(["delete","get","head"],(function(e){Gl.headers[e]={}})),Ul.forEach(["post","put","patch"],(function(e){Gl.headers[e]=Ul.merge(Vl)}));var Hl=Gl,Jl=pl,Kl=Hl,Ql=function(e){return!(!e||!e.__CANCEL__)},Xl=pl,Yl=function(e,t,r){var i=this||Kl;return Jl.forEach(r,(function(r){e=r.call(i,e,t)})),e},Zl=Ql,ep=Hl;function tp(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var rp=pl,ip=function(e,t){t=t||{};var r={},i=["url","method","data"],s=["headers","auth","proxy","params"],n=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],o=["validateStatus"];function a(e,t){return rp.isPlainObject(e)&&rp.isPlainObject(t)?rp.merge(e,t):rp.isPlainObject(t)?rp.merge({},t):rp.isArray(t)?t.slice():t}function c(i){rp.isUndefined(t[i])?rp.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(e[i],t[i])}rp.forEach(i,(function(e){rp.isUndefined(t[e])||(r[e]=a(void 0,t[e]))})),rp.forEach(s,c),rp.forEach(n,(function(i){rp.isUndefined(t[i])?rp.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(void 0,t[i])})),rp.forEach(o,(function(i){i in t?r[i]=a(e[i],t[i]):i in e&&(r[i]=a(void 0,e[i]))}));var d=i.concat(s).concat(n).concat(o),l=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return rp.forEach(l,c),r},sp={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},np={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){np[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var op={},ap=sp.version.split(".");function cp(e,t){for(var r=t?t.split("."):ap,i=e.split("."),s=0;s<3;s++){if(r[s]>i[s])return!0;if(r[s]<i[s])return!1}return!1}np.transitional=function(e,t,r){var i=t&&cp(t);function s(e,t){return"[Axios v"+sp.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,n,o){if(!1===e)throw new Error(s(n," has been removed in "+t));return i&&!op[n]&&(op[n]=!0,console.warn(s(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,o)}};var dp={isOlderVersion:cp,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),s=i.length;s-- >0;){var n=i[s],o=t[n];if(o){var a=e[n],c=void 0===a||o(a,n,e);if(!0!==c)throw new TypeError("option "+n+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+n)}},validators:np},lp=pl,pp=fl,up=vl,hp=function(e){return tp(e),e.headers=e.headers||{},e.data=Yl.call(e,e.data,e.headers,e.transformRequest),e.headers=Xl.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Xl.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||ep.adapter)(e).then((function(t){return tp(e),t.data=Yl.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return Zl(t)||(tp(e),t&&t.response&&(t.response.data=Yl.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},fp=ip,mp=dp,gp=mp.validators;function vp(e){this.defaults=e,this.interceptors={request:new up,response:new up}}vp.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=fp(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&mp.assertOptions(t,{silentJSONParsing:gp.transitional(gp.boolean,"1.0.0"),forcedJSONParsing:gp.transitional(gp.boolean,"1.0.0"),clarifyTimeoutError:gp.transitional(gp.boolean,"1.0.0")},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var s,n=[];if(this.interceptors.response.forEach((function(e){n.push(e.fulfilled,e.rejected)})),!i){var o=[hp,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(n),s=Promise.resolve(e);o.length;)s=s.then(o.shift(),o.shift());return s}for(var a=e;r.length;){var c=r.shift(),d=r.shift();try{a=c(a)}catch(e){d(e);break}}try{s=hp(a)}catch(e){return Promise.reject(e)}for(;n.length;)s=s.then(n.shift(),n.shift());return s},vp.prototype.getUri=function(e){return e=fp(this.defaults,e),pp(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},lp.forEach(["delete","get","head","options"],(function(e){vp.prototype[e]=function(t,r){return this.request(fp(r||{},{method:e,url:t,data:(r||{}).data}))}})),lp.forEach(["post","put","patch"],(function(e){vp.prototype[e]=function(t,r,i){return this.request(fp(i||{},{method:e,url:t,data:r}))}}));var yp=vp;function bp(e){this.message=e}bp.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},bp.prototype.__CANCEL__=!0;var wp=bp,_p=wp;function Sp(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new _p(e),t(r.reason))}))}Sp.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Sp.source=function(){var e,t=new Sp((function(t){e=t}));return{token:t,cancel:e}};var kp=Sp,Rp=pl,Cp=rl,Pp=yp,Tp=ip;function Ep(e){var t=new Pp(e),r=Cp(Pp.prototype.request,t);return Rp.extend(r,Pp.prototype,t),Rp.extend(r,t),r}var Dp=Ep(Hl);Dp.Axios=Pp,Dp.create=function(e){return Ep(Tp(Dp.defaults,e))},Dp.Cancel=wp,Dp.CancelToken=kp,Dp.isCancel=Ql,Dp.all=function(e){return Promise.all(e)},Dp.spread=function(e){return function(t){return e.apply(null,t)}},Dp.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},tl.exports=Dp,tl.exports.default=Dp;var xp=tl.exports,Mp="undefined"!=typeof Symbol&&Symbol,Lp=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var s=Object.getOwnPropertyDescriptor(e,t);if(42!==s.value||!0!==s.enumerable)return!1}return!0},Ip="Function.prototype.bind called on incompatible ",Op=Array.prototype.slice,Ap=Object.prototype.toString,jp=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Ap.call(t))throw new TypeError(Ip+t);for(var r,i=Op.call(arguments,1),s=function(){if(this instanceof r){var s=t.apply(this,i.concat(Op.call(arguments)));return Object(s)===s?s:this}return t.apply(e,i.concat(Op.call(arguments)))},n=Math.max(0,t.length-i.length),o=[],a=0;a<n;a++)o.push("$"+a);if(r=Function("binder","return function ("+o.join(",")+"){ return binder.apply(this,arguments); }")(s),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Fp=Function.prototype.bind||jp,Np=Fp.call(Function.call,Object.prototype.hasOwnProperty),Bp=SyntaxError,Up=Function,qp=TypeError,Wp=function(e){try{return Up('"use strict"; return ('+e+").constructor;")()}catch(e){}},Vp=Object.getOwnPropertyDescriptor;if(Vp)try{Vp({},"")}catch(Xa){Vp=null}var zp=function(){throw new qp},$p=Vp?function(){try{return zp}catch(e){try{return Vp(arguments,"callee").get}catch(e){return zp}}}():zp,Gp="function"==typeof Mp&&"function"==typeof Symbol&&"symbol"==typeof Mp("foo")&&"symbol"==typeof Symbol("bar")&&Lp(),Hp=Object.getPrototypeOf||function(e){return e.__proto__},Jp={},Kp="undefined"==typeof Uint8Array?undefined:Hp(Uint8Array),Qp={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":Gp?Hp([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":Jp,"%AsyncGenerator%":Jp,"%AsyncGeneratorFunction%":Jp,"%AsyncIteratorPrototype%":Jp,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":Up,"%GeneratorFunction%":Jp,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Gp?Hp(Hp([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&Gp?Hp((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&Gp?Hp((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Gp?Hp(""[Symbol.iterator]()):undefined,"%Symbol%":Gp?Symbol:undefined,"%SyntaxError%":Bp,"%ThrowTypeError%":$p,"%TypedArray%":Kp,"%TypeError%":qp,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet},Xp=function e(t){var r;if("%AsyncFunction%"===t)r=Wp("async function () {}");else if("%GeneratorFunction%"===t)r=Wp("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Wp("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var s=e("%AsyncGenerator%");s&&(r=Hp(s.prototype))}return Qp[t]=r,r},Yp={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Zp=Fp,eu=Np,tu=Zp.call(Function.call,Array.prototype.concat),ru=Zp.call(Function.apply,Array.prototype.splice),iu=Zp.call(Function.call,String.prototype.replace),su=Zp.call(Function.call,String.prototype.slice),nu=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,ou=/\\(\\)?/g,au=function(e){var t=su(e,0,1),r=su(e,-1);if("%"===t&&"%"!==r)throw new Bp("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new Bp("invalid intrinsic syntax, expected opening `%`");var i=[];return iu(e,nu,(function(e,t,r,s){i[i.length]=r?iu(s,ou,"$1"):t||e})),i},cu=function(e,t){var r,i=e;if(eu(Yp,i)&&(i="%"+(r=Yp[i])[0]+"%"),eu(Qp,i)){var s=Qp[i];if(s===Jp&&(s=Xp(i)),void 0===s&&!t)throw new qp("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:s}}throw new Bp("intrinsic "+e+" does not exist!")},du=function(e,t){if("string"!=typeof e||0===e.length)throw new qp("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new qp('"allowMissing" argument must be a boolean');var r=au(e),i=r.length>0?r[0]:"",s=cu("%"+i+"%",t),n=s.name,o=s.value,a=!1,c=s.alias;c&&(i=c[0],ru(r,tu([0,1],c)));for(var d=1,l=!0;d<r.length;d+=1){var p=r[d],u=su(p,0,1),h=su(p,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new Bp("property names with quotes must have matching quotes");if("constructor"!==p&&l||(a=!0),eu(Qp,n="%"+(i+="."+p)+"%"))o=Qp[n];else if(null!=o){if(!(p in o)){if(!t)throw new qp("base intrinsic for "+e+" exists, but the property is not available.");return}if(Vp&&d+1>=r.length){var f=Vp(o,p);o=(l=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:o[p]}else l=eu(o,p),o=o[p];l&&!a&&(Qp[n]=o)}}return o},lu={exports:{}};!function(e){var t=Fp,r=du,i=r("%Function.prototype.apply%"),s=r("%Function.prototype.call%"),n=r("%Reflect.apply%",!0)||t.call(s,i),o=r("%Object.getOwnPropertyDescriptor%",!0),a=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(a)try{a({},"a",{value:1})}catch(e){a=null}e.exports=function(e){var r=n(t,s,arguments);if(o&&a){var i=o(r,"length");i.configurable&&a(r,"length",{value:1+c(0,e.length-(arguments.length-1))})}return r};var d=function(){return n(t,i,arguments)};a?a(e.exports,"apply",{value:d}):e.exports.apply=d}(lu);var pu=du,uu=lu.exports,hu=uu(pu("String.prototype.indexOf")),fu=d(Object.freeze({__proto__:null,default:{}})),mu="function"==typeof Map&&Map.prototype,gu=Object.getOwnPropertyDescriptor&&mu?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,vu=mu&&gu&&"function"==typeof gu.get?gu.get:null,yu=mu&&Map.prototype.forEach,bu="function"==typeof Set&&Set.prototype,wu=Object.getOwnPropertyDescriptor&&bu?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,_u=bu&&wu&&"function"==typeof wu.get?wu.get:null,Su=bu&&Set.prototype.forEach,ku="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,Ru="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,Cu="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,Pu=Boolean.prototype.valueOf,Tu=Object.prototype.toString,Eu=Function.prototype.toString,Du=String.prototype.match,xu="function"==typeof BigInt?BigInt.prototype.valueOf:null,Mu=Object.getOwnPropertySymbols,Lu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Iu="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Ou=Object.prototype.propertyIsEnumerable,Au=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),ju=fu.custom,Fu=ju&&Wu(ju)?ju:null,Nu="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function Bu(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function Uu(e){return String(e).replace(/"/g,""")}function qu(e){return!("[object Array]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}function Wu(e){if(Iu)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!Lu)return!1;try{return Lu.call(e),!0}catch(e){}return!1}var Vu=Object.prototype.hasOwnProperty||function(e){return e in this};function zu(e,t){return Vu.call(e,t)}function $u(e){return Tu.call(e)}function Gu(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,i=e.length;r<i;r++)if(e[r]===t)return r;return-1}function Hu(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return Hu(e.slice(0,t.maxStringLength),t)+i}return Bu(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,Ju),"single",t)}function Ju(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function Ku(e){return"Object("+e+")"}function Qu(e){return e+" { ? }"}function Xu(e,t,r,i){return e+" ("+t+") {"+(i?Yu(r,i):r.join(", "))+"}"}function Yu(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function Zu(e,t){var r=qu(e),i=[];if(r){i.length=e.length;for(var s=0;s<e.length;s++)i[s]=zu(e,s)?t(e[s],e):""}var n,o="function"==typeof Mu?Mu(e):[];if(Iu){n={};for(var a=0;a<o.length;a++)n["$"+o[a]]=o[a]}for(var c in e)zu(e,c)&&(r&&String(Number(c))===c&&c<e.length||Iu&&n["$"+c]instanceof Symbol||(/[^\w$]/.test(c)?i.push(t(c,e)+": "+t(e[c],e)):i.push(c+": "+t(e[c],e))));if("function"==typeof Mu)for(var d=0;d<o.length;d++)Ou.call(e,o[d])&&i.push("["+t(o[d])+"]: "+t(e[o[d]],e));return i}var eh,th,rh,ih,sh,nh,oh,ah=du,ch=function(e,t){var r=pu(e,!!t);return"function"==typeof r&&hu(e,".prototype.")>-1?uu(r):r},dh=function e(t,r,i,s){var n=r||{};if(zu(n,"quoteStyle")&&"single"!==n.quoteStyle&&"double"!==n.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(zu(n,"maxStringLength")&&("number"==typeof n.maxStringLength?n.maxStringLength<0&&n.maxStringLength!==1/0:null!==n.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=!zu(n,"customInspect")||n.customInspect;if("boolean"!=typeof o&&"symbol"!==o)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(zu(n,"indent")&&null!==n.indent&&"\t"!==n.indent&&!(parseInt(n.indent,10)===n.indent&&n.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return Hu(t,n);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var a=void 0===n.depth?5:n.depth;if(void 0===i&&(i=0),i>=a&&a>0&&"object"==typeof t)return qu(t)?"[Array]":"[Object]";var c=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}(n,i);if(void 0===s)s=[];else if(Gu(s,t)>=0)return"[Circular]";function d(t,r,o){if(r&&(s=s.slice()).push(r),o){var a={depth:n.depth};return zu(n,"quoteStyle")&&(a.quoteStyle=n.quoteStyle),e(t,a,i+1,s)}return e(t,n,i+1,s)}if("function"==typeof t){var l=function(e){if(e.name)return e.name;var t=Du.call(Eu.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),p=Zu(t,d);return"[Function"+(l?": "+l:" (anonymous)")+"]"+(p.length>0?" { "+p.join(", ")+" }":"")}if(Wu(t)){var u=Iu?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):Lu.call(t);return"object"!=typeof t||Iu?u:Ku(u)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var h="<"+String(t.nodeName).toLowerCase(),f=t.attributes||[],m=0;m<f.length;m++)h+=" "+f[m].name+"="+Bu(Uu(f[m].value),"double",n);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(qu(t)){if(0===t.length)return"[]";var g=Zu(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(Gu(e[t],"\n")>=0)return!1;return!0}(g)?"["+Yu(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t)){var v=Zu(t,d);return 0===v.length?"["+String(t)+"]":"{ ["+String(t)+"] "+v.join(", ")+" }"}if("object"==typeof t&&o){if(Fu&&"function"==typeof t[Fu])return t[Fu]();if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!vu||!e||"object"!=typeof e)return!1;try{vu.call(e);try{_u.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var y=[];return yu.call(t,(function(e,r){y.push(d(r,t,!0)+" => "+d(e,t))})),Xu("Map",vu.call(t),y,c)}if(function(e){if(!_u||!e||"object"!=typeof e)return!1;try{_u.call(e);try{vu.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return Su.call(t,(function(e){b.push(d(e,t))})),Xu("Set",_u.call(t),b,c)}if(function(e){if(!ku||!e||"object"!=typeof e)return!1;try{ku.call(e,ku);try{Ru.call(e,Ru)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return Qu("WeakMap");if(function(e){if(!Ru||!e||"object"!=typeof e)return!1;try{Ru.call(e,Ru);try{ku.call(e,ku)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return Qu("WeakSet");if(function(e){if(!Cu||!e||"object"!=typeof e)return!1;try{return Cu.call(e),!0}catch(e){}return!1}(t))return Qu("WeakRef");if(function(e){return!("[object Number]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t))return Ku(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!xu)return!1;try{return xu.call(e),!0}catch(e){}return!1}(t))return Ku(d(xu.call(t)));if(function(e){return!("[object Boolean]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t))return Ku(Pu.call(t));if(function(e){return!("[object String]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t))return Ku(d(String(t)));if(!function(e){return!("[object Date]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t)&&!function(e){return!("[object RegExp]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t)){var w=Zu(t,d),_=Au?Au(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",k=!_&&Nu&&Object(t)===t&&Nu in t?$u(t).slice(8,-1):S?"Object":"",R=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||S?"["+[].concat(k||[],S||[]).join(": ")+"] ":"");return 0===w.length?R+"{}":c?R+"{"+Yu(w,c)+"}":R+"{ "+w.join(", ")+" }"}return String(t)},lh=ah("%TypeError%"),ph=ah("%WeakMap%",!0),uh=ah("%Map%",!0),hh=ch("WeakMap.prototype.get",!0),fh=ch("WeakMap.prototype.set",!0),mh=ch("WeakMap.prototype.has",!0),gh=ch("Map.prototype.get",!0),vh=ch("Map.prototype.set",!0),yh=ch("Map.prototype.has",!0),bh=function(e,t){for(var r,i=e;null!==(r=i.next);i=r)if(r.key===t)return i.next=r.next,r.next=e.next,e.next=r,r},wh=String.prototype.replace,_h=/%20/g,Sh="RFC3986",kh={default:Sh,formatters:{RFC1738:function(e){return wh.call(e,_h,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:Sh},Rh=kh,Ch=Object.prototype.hasOwnProperty,Ph=Array.isArray,Th=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),Eh=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},Dh={arrayToObject:Eh,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],i=0;i<t.length;++i)for(var s=t[i],n=s.obj[s.prop],o=Object.keys(n),a=0;a<o.length;++a){var c=o[a],d=n[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:n,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(Ph(r)){for(var i=[],s=0;s<r.length;++s)void 0!==r[s]&&i.push(r[s]);t.obj[t.prop]=i}}}(t),e},decode:function(e,t,r){var i=e.replace(/\+/g," ");if("iso-8859-1"===r)return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch(e){return i}},encode:function(e,t,r,i,s){if(0===e.length)return e;var n=e;if("symbol"==typeof e?n=Symbol.prototype.toString.call(e):"string"!=typeof e&&(n=String(e)),"iso-8859-1"===r)return escape(n).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var o="",a=0;a<n.length;++a){var c=n.charCodeAt(a);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||s===Rh.RFC1738&&(40===c||41===c)?o+=n.charAt(a):c<128?o+=Th[c]:c<2048?o+=Th[192|c>>6]+Th[128|63&c]:c<55296||c>=57344?o+=Th[224|c>>12]+Th[128|c>>6&63]+Th[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&n.charCodeAt(a)),o+=Th[240|c>>18]+Th[128|c>>12&63]+Th[128|c>>6&63]+Th[128|63&c])}return o},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(Ph(e)){for(var r=[],i=0;i<e.length;i+=1)r.push(t(e[i]));return r}return t(e)},merge:function e(t,r,i){if(!r)return t;if("object"!=typeof r){if(Ph(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!Ch.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var s=t;return Ph(t)&&!Ph(r)&&(s=Eh(t,i)),Ph(t)&&Ph(r)?(r.forEach((function(r,s){if(Ch.call(t,s)){var n=t[s];n&&"object"==typeof n&&r&&"object"==typeof r?t[s]=e(n,r,i):t.push(r)}else t[s]=r})),t):Object.keys(r).reduce((function(t,s){var n=r[s];return Ch.call(t,s)?t[s]=e(t[s],n,i):t[s]=n,t}),s)}},xh=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new lh("Side channel does not contain "+dh(e))},get:function(i){if(ph&&i&&("object"==typeof i||"function"==typeof i)){if(e)return hh(e,i)}else if(uh){if(t)return gh(t,i)}else if(r)return function(e,t){var r=bh(e,t);return r&&r.value}(r,i)},has:function(i){if(ph&&i&&("object"==typeof i||"function"==typeof i)){if(e)return mh(e,i)}else if(uh){if(t)return yh(t,i)}else if(r)return function(e,t){return!!bh(e,t)}(r,i);return!1},set:function(i,s){ph&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new ph),fh(e,i,s)):uh?(t||(t=new uh),vh(t,i,s)):(r||(r={key:{},next:null}),function(e,t,r){var i=bh(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,s))}};return i},Mh=Dh,Lh=kh,Ih=Object.prototype.hasOwnProperty,Oh={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Ah=Array.isArray,jh=String.prototype.split,Fh=Array.prototype.push,Nh=function(e,t){Fh.apply(e,Ah(t)?t:[t])},Bh=Date.prototype.toISOString,Uh=Lh.default,qh={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:Mh.encode,encodeValuesOnly:!1,format:Uh,formatter:Lh.formatters[Uh],indices:!1,serializeDate:function(e){return Bh.call(e)},skipNulls:!1,strictNullHandling:!1},Wh={},Vh=function e(t,r,i,s,n,o,a,c,d,l,p,u,h,f,m,g){for(var v=t,y=g,b=0,w=!1;void 0!==(y=y.get(Wh))&&!w;){var _=y.get(t);if(b+=1,void 0!==_){if(_===b)throw new RangeError("Cyclic object value");w=!0}void 0===y.get(Wh)&&(b=0)}if("function"==typeof c?v=c(r,v):v instanceof Date?v=p(v):"comma"===i&&Ah(v)&&(v=Mh.maybeMap(v,(function(e){return e instanceof Date?p(e):e}))),null===v){if(n)return a&&!f?a(r,qh.encoder,m,"key",u):r;v=""}if(function(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e||"symbol"==typeof e||"bigint"==typeof e}(v)||Mh.isBuffer(v)){if(a){var S=f?r:a(r,qh.encoder,m,"key",u);if("comma"===i&&f){for(var k=jh.call(String(v),","),R="",C=0;C<k.length;++C)R+=(0===C?"":",")+h(a(k[C],qh.encoder,m,"value",u));return[h(S)+(s&&Ah(v)&&1===k.length?"[]":"")+"="+R]}return[h(S)+"="+h(a(v,qh.encoder,m,"value",u))]}return[h(r)+"="+h(String(v))]}var P,T=[];if(void 0===v)return T;if("comma"===i&&Ah(v))P=[{value:v.length>0?v.join(",")||null:void 0}];else if(Ah(c))P=c;else{var E=Object.keys(v);P=d?E.sort(d):E}for(var D=s&&Ah(v)&&1===v.length?r+"[]":r,x=0;x<P.length;++x){var M=P[x],L="object"==typeof M&&void 0!==M.value?M.value:v[M];if(!o||null!==L){var I=Ah(v)?"function"==typeof i?i(D,M):D:D+(l?"."+M:"["+M+"]");g.set(t,b);var O=xh();O.set(Wh,g),Nh(T,e(L,I,i,s,n,o,a,c,d,l,p,u,h,f,m,O))}}return T},zh=Dh,$h=Object.prototype.hasOwnProperty,Gh=Array.isArray,Hh={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:zh.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},Jh=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Kh=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Qh=function(e,t,r,i){if(e){var s=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,n=/(\[[^[\]]*])/g,o=r.depth>0&&/(\[[^[\]]*])/.exec(s),a=o?s.slice(0,o.index):s,c=[];if(a){if(!r.plainObjects&&$h.call(Object.prototype,a)&&!r.allowPrototypes)return;c.push(a)}for(var d=0;r.depth>0&&null!==(o=n.exec(s))&&d<r.depth;){if(d+=1,!r.plainObjects&&$h.call(Object.prototype,o[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(o[1])}return o&&c.push("["+s.slice(o.index)+"]"),function(e,t,r,i){for(var s=i?t:Kh(t,r),n=e.length-1;n>=0;--n){var o,a=e[n];if("[]"===a&&r.parseArrays)o=[].concat(s);else{o=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,d=parseInt(c,10);r.parseArrays||""!==c?!isNaN(d)&&a!==c&&String(d)===c&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(o=[])[d]=s:"__proto__"!==c&&(o[c]=s):o={0:s}}s=o}return s}(c,t,r,i)}},Xh=function(e,t){var r,i=e,s=function(e){if(!e)return qh;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||qh.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=Lh.default;if(void 0!==e.format){if(!Ih.call(Lh.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=Lh.formatters[r],s=qh.filter;return("function"==typeof e.filter||Ah(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:qh.addQueryPrefix,allowDots:void 0===e.allowDots?qh.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:qh.charsetSentinel,delimiter:void 0===e.delimiter?qh.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:qh.encode,encoder:"function"==typeof e.encoder?e.encoder:qh.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:qh.encodeValuesOnly,filter:s,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:qh.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:qh.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:qh.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):Ah(s.filter)&&(r=s.filter);var n,o=[];if("object"!=typeof i||null===i)return"";n=t&&t.arrayFormat in Oh?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var a=Oh[n];if(t&&"commaRoundTrip"in t&&"boolean"!=typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var c="comma"===a&&t&&t.commaRoundTrip;r||(r=Object.keys(i)),s.sort&&r.sort(s.sort);for(var d=xh(),l=0;l<r.length;++l){var p=r[l];s.skipNulls&&null===i[p]||Nh(o,Vh(i[p],p,a,c,s.strictNullHandling,s.skipNulls,s.encode?s.encoder:null,s.filter,s.sort,s.allowDots,s.serializeDate,s.format,s.formatter,s.encodeValuesOnly,s.charset,d))}var u=o.join(s.delimiter),h=!0===s.addQueryPrefix?"?":"";return s.charsetSentinel&&("iso-8859-1"===s.charset?h+="utf8=%26%2310003%3B&":h+="utf8=%E2%9C%93&"),u.length>0?h+u:""},Yh=function(e,t){var r=function(e){if(!e)return Hh;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?Hh.charset:e.charset;return{allowDots:void 0===e.allowDots?Hh.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:Hh.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:Hh.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:Hh.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Hh.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:Hh.comma,decoder:"function"==typeof e.decoder?e.decoder:Hh.decoder,delimiter:"string"==typeof e.delimiter||zh.isRegExp(e.delimiter)?e.delimiter:Hh.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:Hh.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:Hh.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:Hh.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:Hh.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Hh.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,n=t.parameterLimit===1/0?void 0:t.parameterLimit,o=s.split(t.delimiter,n),a=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r<o.length;++r)0===o[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===o[r]?c="utf-8":"utf8=%26%2310003%3B"===o[r]&&(c="iso-8859-1"),a=r,r=o.length);for(r=0;r<o.length;++r)if(r!==a){var d,l,p=o[r],u=p.indexOf("]="),h=-1===u?p.indexOf("="):u+1;-1===h?(d=t.decoder(p,Hh.decoder,c,"key"),l=t.strictNullHandling?null:""):(d=t.decoder(p.slice(0,h),Hh.decoder,c,"key"),l=zh.maybeMap(Kh(p.slice(h+1),t),(function(e){return t.decoder(e,Hh.decoder,c,"value")}))),l&&t.interpretNumericEntities&&"iso-8859-1"===c&&(l=Jh(l)),p.indexOf("[]=")>-1&&(l=Gh(l)?[l]:l),$h.call(i,d)?i[d]=zh.combine(i[d],l):i[d]=l}return i}(e,r):e,s=r.plainObjects?Object.create(null):{},n=Object.keys(i),o=0;o<n.length;++o){var a=n[o],c=Qh(a,i[a],r,"string"==typeof e);s=zh.merge(s,c,r)}return!0===r.allowSparse?s:zh.compact(s)},Zh={formats:kh,parse:Yh,stringify:Xh};class ef{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=xp.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>Zh.stringify(e)}),this.customNode=i}getNode(e){return i(this,void 0,void 0,(function*(){if(this.customNode)return this.customNode;const{data:t}=yield this.api.get("/nodes/best",{params:e});return t}))}}class tf extends v{constructor(e,t){super(e,null!=t?t:"invalid_payload")}}!function(e){e.DominantSpeaker="dominant-speaker",e.PeersVolumes="peers-volumes",e.Silence="silence"}(eh||(eh={}));class rf{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Xe({logLevel:t.logLevel,namespace:"ChannelAudioObserverEventHandler",onLogMessage:r})}handle(e){try{const t=JSON.parse(e);switch(rf.validateEventPayload(t),t.event){case eh.DominantSpeaker:this.handleDominantSpeaker(t);break;case eh.PeersVolumes:this.handlePeerVolumes(t);break;case eh.Silence:this.handleSilence()}}catch(t){this.logger.warn("Failed to handle audio observer event",{error:Mc(t),eventData:e})}}handleDominantSpeaker(e){const{peerId:t}=e.data,r=this.engine.getPeerById(t);this.engine.setActiveSpeakerPeer(r)}handlePeerVolumes(e){e.volumes.forEach((e=>{var t;const{peerId:r,trackLabel:i,value:s}=e,n=null===(t=this.engine.getPeerById(r))||void 0===t?void 0:t.tracks.get(i);n&&n.setVolume(s)}))}handleSilence(){this.engine.peers.flatMap((e=>Array.from(e.tracks.values()))).forEach((e=>e.setVolume(0))),this.engine.setActiveSpeakerPeer(void 0)}static validateEventPayload(e){switch(e.event){case eh.Silence:break;case eh.DominantSpeaker:{e.data||rf.throwInvalidPayload();const{peerId:t,producerId:r,trackLabel:i}=e.data;"string"==typeof t&&"string"==typeof r&&i===h.Microphone||rf.throwInvalidPayload();break}case eh.PeersVolumes:Array.isArray(e.volumes)||rf.throwInvalidPayload(),e.volumes.forEach((e=>{const{peerId:t,producerId:r,value:i,trackLabel:s}=e;"string"==typeof t&&"string"==typeof r&&"number"==typeof i&&s===h.Microphone||rf.throwInvalidPayload()}));break;default:rf.throwInvalidPayload()}}static throwInvalidPayload(){throw new tf("Invalid channel audio observer event handler payload")}}class sf{createSystem(e){return new Oc(e)}createMedia(e){return new ia(e)}createNetwork(e){const{loadbalancer:t,logLevel:r,onLogMessage:i}=e,s=new el({logLevel:r,onLogMessage:i}),n=new ef(t);return new Lc({logLevel:r,socketClient:s,loadBalancerApiClient:n,onLogMessage:i})}createChannelEventHandler(e){return new Ac(e)}createMediaSoupEventHandler(e){return new jc(e)}createAudioObserverEventHandler(e){return new rf(e)}createIssueDetector(e){var t,r;const i=null!==(t=e.logger)&&void 0!==t?t:console,s=new Pc({statsParser:new Tc({logger:null!==(r=e.logger)&&void 0!==r?r:console})});return new Ec({issueEmitter:new pc,networkScoresCalculator:new fc,detectors:[new Sc,new vc,new yc,new bc,new _c,new wc,new gc,new kc],statsReporter:new uc({compositeStatsParser:s,getStatsInterval:5e3}),onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:e.ignoreSSRCList,compositeStatsParser:s,logger:i})}}class nf extends AudioWorkletNode{constructor(e){super(e.context,"rnnoise",{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1],processorOptions:{module:e.noiseSuppressor.module}}),this.port.onmessage=({data:e})=>{const t=Object.assign(new Event("status"),e);this.dispatchEvent(t)}}update(e){this.port.postMessage(e)}static register(e){return i(this,void 0,void 0,(function*(){yield e.audioWorklet.addModule(`${window.location.origin}/noiseSuppressionWorklet.js`)}))}}class of{constructor(e){th.set(this,void 0),rh.set(this,void 0),ih.set(this,void 0),sh.set(this,void 0),nh.set(this,void 0),oh.set(this,!0),n(this,th,e.noiseSuppressor.instance.exports,"f"),n(this,rh,e.context,"f"),n(this,ih,new Float32Array(s(this,th,"f").memory.buffer),"f"),n(this,sh,s(this,th,"f").newState(),"f"),n(this,nh,s(this,rh,"f").createScriptProcessor(),"f"),this.setOnAudioProcess()}get noiseSuppressionScriptProcessorNode(){return s(this,nh,"f")}update(e){e||(n(this,oh,!1,"f"),s(this,th,"f").deleteState(s(this,sh,"f")));const t=Object.assign(new Event("status"),{vadProb:s(this,th,"f").getVadProb(s(this,sh,"f"))});s(this,nh,"f").dispatchEvent(t)}setOnAudioProcess(){s(this,nh,"f").addEventListener("audioprocess",(({inputBuffer:e,outputBuffer:t})=>{if(!s(this,oh,"f"))return;s(this,ih,"f").set(e.getChannelData(0),s(this,th,"f").getInput(s(this,sh,"f"))/4);const r=t.getChannelData(0),i=s(this,th,"f").pipe(s(this,sh,"f"),r.length)/4;i&&r.set(s(this,ih,"f").subarray(i,i+r.length))}))}}th=new WeakMap,rh=new WeakMap,ih=new WeakMap,sh=new WeakMap,nh=new WeakMap,oh=new WeakMap;var af,cf,df,lf,pf,uf,hf,ff,mf,gf;class vf{constructor({context:e,noiseSuppressor:t}){af.set(this,void 0),cf.set(this,void 0),df.set(this,void 0),n(this,af,e,"f"),n(this,cf,t,"f")}createNoiseSuppressionNode(){return i(this,void 0,void 0,(function*(){return/apple/i.test(navigator.vendor)?this.createScriptProcessorNode():this.createAudioWorkletNode()}))}stop(){var e;null===(e=s(this,df,"f"))||void 0===e||e.update(!1)}createAudioWorkletNode(){return i(this,void 0,void 0,(function*(){return yield nf.register(s(this,af,"f")),n(this,df,new nf({context:s(this,af,"f"),noiseSuppressor:s(this,cf,"f")}),"f"),s(this,df,"f")}))}createScriptProcessorNode(){return n(this,df,new of({context:s(this,af,"f"),noiseSuppressor:s(this,cf,"f")}),"f"),s(this,df,"f").noiseSuppressionScriptProcessorNode}}af=new WeakMap,cf=new WeakMap,df=new WeakMap;class yf{constructor(e){lf.set(this,void 0),pf.set(this,void 0),uf.set(this,void 0),hf.set(this,void 0),n(this,lf,e.noiseSuppressor,"f"),n(this,uf,new Xe({namespace:"TrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return!!s(this,hf,"f")}processTrack(e){return i(this,void 0,void 0,(function*(){const t=(e=>{const t=window.AudioContext||window.webkitAudioContext||!1;return t?new t(e):null})();if(!t)throw new Error("AudioContext is not available");const r=new MediaStreamAudioDestinationNode(t,{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers"});yield nf.register(t);const i=t.createMediaStreamSource(new MediaStream([e])),o=new vf({context:t,noiseSuppressor:s(this,lf,"f")}),a=yield o.createNoiseSuppressionNode();a.connect(r),i.connect(a);const[c]=r.stream.getTracks();return n(this,pf,{audioContext:t,streamDestination:r,noiseSuppressionNode:a,noiseSuppressionProvider:o},"f"),n(this,hf,c,"f"),s(this,uf,"f").info("processTrack()",{track:e}),c}))}stopProcessing(){var e;return i(this,void 0,void 0,(function*(){if(this.isProcessing)if(s(this,pf,"f"))try{s(this,pf,"f").noiseSuppressionProvider.stop(),s(this,pf,"f").noiseSuppressionNode.disconnect(),s(this,pf,"f").streamDestination.disconnect(),yield s(this,pf,"f").audioContext.close(),null===(e=s(this,hf,"f"))||void 0===e||e.stop(),n(this,hf,void 0,"f"),s(this,uf,"f").info("stopProcessing()",{success:!0})}catch(e){s(this,uf,"f").error("stopProcessing()",{success:!1,error:e})}else s(this,uf,"f").warn("stopProcessing()",{success:!1,description:"Processing context is not available"});else s(this,uf,"f").debug("stopProcessing()",{description:"Track is not processed"})}))}}lf=new WeakMap,pf=new WeakMap,uf=new WeakMap,hf=new WeakMap;class bf extends wa{constructor(e){super(e),ff.set(this,void 0),mf.set(this,void 0),gf.set(this,void 0),e.noiseSuppressor&&n(this,ff,new yf({noiseSuppressor:e.noiseSuppressor,logLevel:e.logLevel}),"f"),n(this,gf,new Xe({namespace:"AudioTrack",logLevel:e.logLevel}),"f")}get isEffectsProcessing(){var e;return!!(null===(e=s(this,ff,"f"))||void 0===e?void 0:e.isProcessing)}getEncoderConfig(){return this.encoderConfig}getEncodings(){var e;return null!==(e=this.getEncoderConfig().encodings)&&void 0!==e?e:Go}getCodecOptions(){var e,t;return{opusFec:null===(e=this.getEncoderConfig().enableFec)||void 0===e||e,opusDtx:null===(t=this.getEncoderConfig().enableDtx)||void 0===t||t}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||"opus"}enableNoiseSuppression(){var e;return i(this,void 0,void 0,(function*(){if(s(this,ff,"f"))try{const t=yield null===(e=s(this,ff,"f"))||void 0===e?void 0:e.processTrack(this.mediaStreamTrack);n(this,mf,this.mediaStreamTrack,"f"),yield this.replaceTrack(t)}catch(e){throw this.logger.warn("enableNoiseSuppression()",{description:"Can not enable noise suppression",track:this,error:e}),new Error("Can not enable noise suppression")}else this.logger.warn("enableNoiseSuppression()",{description:"Track suppressor is not defined"})}))}disableNoiseSuppression(){var e,t;return i(this,void 0,void 0,(function*(){try{if(!(null===(e=s(this,ff,"f"))||void 0===e?void 0:e.isProcessing))return void s(this,gf,"f").debug("stopProcessing()",{description:"Track is not processed"});if(!s(this,mf,"f"))return void this.logger.warn("disableNoiseSuppression()",{description:"Original track missing"});yield this.replaceTrack(s(this,mf,"f")),yield null===(t=s(this,ff,"f"))||void 0===t?void 0:t.stopProcessing()}catch(e){throw this.logger.warn("disableNoiseSuppression()",{description:"Can not disable noise suppression",track:this,error:e}),new Error("Can not disable noise suppression")}}))}publish(){return i(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),codecOptions:this.getCodecOptions()}),this.clientEventEmitter.emit(W,this)}))}}ff=new WeakMap,mf=new WeakMap,gf=new WeakMap;class wf{createAudioTrack(e){return new bf(e)}createVideoTrack(e){return new $a(e)}}module.exports=class{constructor(e){var t,r;const{observer:i,network:s,onLogMessage:n,onIssues:a,onNetworkScoresUpdated:c,logLevel:d,disableWid:l}=e;this._observer=null!=i?i:new o;const p=new sf,u=new wf;this.engine=new Ka({dependenciesFactory:p,clientEventEmitter:this.observer,media:{mediaTracksFactory:u},network:{loadbalancer:{baseURL:null===(t=null==s?void 0:s.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==s?void 0:s.loadbalancer)||void 0===r?void 0:r.customNode}},logLevel:d,onLogMessage:n,onIssues:a,onNetworkScoresUpdated:c,disableWid:l})}get observer(){return this._observer}get id(){return this.engine.mySocketId}get peers(){return this.engine.peers}get availableVideoDevices(){return this.engine.system.availableVideoDevices}get availableAudioDevices(){return this.engine.system.availableAudioDevices}get canUseNoiseSuppression(){return this.engine.canUseNoiseSuppression}detectDevices(){return i(this,void 0,void 0,(function*(){return yield this.engine.system.detectDevices(),{video:this.engine.system.availableVideoDevices,audio:this.engine.system.availableAudioDevices}}))}join(e){return this.engine.join(e)}leave(){return this.engine.release()}confirmActivity(){return this.engine.confirmActivity()}createCameraVideoTrack(e){return this.engine.createCameraVideoTrack(e)}createMicrophoneAudioTrack(e){return this.engine.createMicrophoneAudioTrack(e)}createScreenMediaTracks(e){return this.engine.createScreenMediaTracks(e)}deleteTrack(e){return this.engine.deleteTrack(e)}loadPeers(e){return this.engine.loadPeers(e)}updateAppData(e){return this.engine.updateAppData(e)}getTransportsInfo(){return i(this,void 0,void 0,(function*(){return this.engine.network.getTransportsStateInfo()}))}};
|
|
239
|
+
`,{width:c,height:d}=n,l=c/d,p=Sa(e,e.VERTEX_SHADER,o),u=Sa(e,e.FRAGMENT_SHADER,a),h=Ca(e,p,u,t,r),f=e.getUniformLocation(h,"u_backgroundScale"),m=e.getUniformLocation(h,"u_backgroundOffset"),g=e.getUniformLocation(h,"u_inputFrame"),v=e.getUniformLocation(h,"u_personMask"),y=e.getUniformLocation(h,"u_background"),b=e.getUniformLocation(h,"u_coverage"),w=e.getUniformLocation(h,"u_lightWrapping"),_=e.getUniformLocation(h,"u_blendMode");e.useProgram(h),e.uniform2f(f,1,1),e.uniform2f(m,0,0),e.uniform1i(g,0),e.uniform1i(v,1),e.uniform2f(b,0,1),e.uniform1f(w,0),e.uniform1f(_,0);let S=null;function k(t){S=ka(e,e.RGBA8,t.naturalWidth,t.naturalHeight,e.LINEAR,e.LINEAR),e.texSubImage2D(e.TEXTURE_2D,0,0,0,t.naturalWidth,t.naturalHeight,e.RGBA,e.UNSIGNED_BYTE,t);let r=0,i=0,s=t.naturalWidth,n=t.naturalHeight;s/n<l?(n=s/l,i=(t.naturalHeight-n)/2):(s=n*l,r=(t.naturalWidth-s)/2);const o=s/t.naturalWidth,a=n/t.naturalHeight;r/=t.naturalWidth,i/=t.naturalHeight,e.uniform2f(f,o,a),e.uniform2f(m,r,i)}return(null==s?void 0:s.complete)?k(s):s&&(s.onload=()=>{k(s)}),{render:function(){e.viewport(0,0,c,d),e.useProgram(h),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,i),null!==S&&(e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,S),e.uniform1i(y,2)),e.bindFramebuffer(e.FRAMEBUFFER,null),e.drawArrays(e.TRIANGLE_STRIP,0,4)},updateCoverage:function(t){e.useProgram(h),e.uniform2f(b,t[0],t[1])},updateLightWrapping:function(t){e.useProgram(h),e.uniform1f(w,t)},updateBlendMode:function(t){e.useProgram(h),e.uniform1f(_,"screen"===t?0:1)},cleanUp:function(){e.deleteTexture(S),e.deleteProgram(h),e.deleteShader(u),e.deleteShader(p)}}}(u,m,g,b,t,n);return{render:function(){return i(this,void 0,void 0,(function*(){u.activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,v),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,e.htmlElement),u.bindVertexArray(f),yield w.render(),o._runInference(),_.render(),S.render(),k.render()}))},updatePostProcessingConfig:function(e){if(S.updateSigmaSpace(e.jointBilateralFilter.sigmaSpace),S.updateSigmaColor(e.jointBilateralFilter.sigmaColor),"image"===r.type){const t=k;t.updateCoverage(e.coverage),t.updateLightWrapping(e.lightWrapping),t.updateBlendMode(e.blendMode)}else if("blur"===r.type){k.updateCoverage(e.coverage)}else{const e=k;e.updateCoverage([0,.9999]),e.updateLightWrapping(0)}},cleanUp:function(){k.cleanUp(),S.cleanUp(),_.cleanUp(),w.cleanUp(),u.deleteTexture(b),u.deleteTexture(y),u.deleteTexture(v),u.deleteBuffer(g),u.deleteBuffer(m),u.deleteVertexArray(f),u.deleteShader(h)}}}var La,Ia,Oa,Aa,ja,Fa,Na,Ba,Ua,qa;class Wa{constructor(e){La.set(this,!1),Ia.set(this,void 0),Oa.set(this,void 0),Aa.set(this,void 0),n(this,Aa,new Xe({logLevel:e,namespace:"TensorFlowLoader"}),"f")}get isLoaded(){return s(this,La,"f")}get tfliteModule(){return s(this,Ia,"f")||s(this,Oa,"f")}loadTFLite(){return i(this,void 0,void 0,(function*(){yield Promise.all([this.loadTFLiteRegular(),this.loadTFLiteSIMD()]),this.tfliteModule&&n(this,La,!0,"f")}))}loadTFLiteModel(e){return i(this,void 0,void 0,(function*(){if(this.tfliteModule)try{const t=Wa.getTFLiteModelFileName(e);s(this,Aa,"f").info("loading model",{modelFileName:t});const r=yield fetch(`${window.location.origin}/tflite/models/${t}.tflite`),i=yield r.arrayBuffer(),n=this.tfliteModule._getModelBufferMemoryOffset();this.tfliteModule.HEAPU8.set(new Uint8Array(i),n);const o=this.tfliteModule._loadModel(i.byteLength);s(this,Aa,"f").info("loading model result",{result:o})}catch(e){s(this,Aa,"f").warn("loadTFLiteModel()",{error:e})}else s(this,Aa,"f").warn("loadTFLiteModel()",{description:"TFLite module is not loaded"})}))}loadTFLiteRegular(){return i(this,void 0,void 0,(function*(){try{n(this,Ia,yield createTFLiteModule(),"f")}catch(e){s(this,Aa,"f").error("Failed to create TFLite WebAssembly module.",{error:e})}}))}loadTFLiteSIMD(){return i(this,void 0,void 0,(function*(){try{n(this,Oa,yield createTFLiteSIMDModule(),"f")}catch(e){s(this,Aa,"f").error("Failed to create TFLite SIMD WebAssembly module.",{error:e})}}))}static getTFLiteModelFileName({model:e,inputResolution:t}){switch(e){case"meet":return"256x144"===t?"segm_full_v679":"segm_lite_v681";case"mlkit":return"selfiesegmentation_mlkit-256x256-2021_01_19-v1215.f16";default:throw new Error(`No TFLite file for this segmentation model: ${e}`)}}}function Va({sourcePlayback:e,backgroundConfig:t,segmentationConfig:r,canvas:s,tflite:n}){const o=s.getContext("2d");o.scale(1.031,1.031),o.translate(-11,-11);const[a,c]=Ta[r.inputResolution],d=a*c,l=new ImageData(a,c),p=document.createElement("canvas");p.width=a,p.height=c;const u=p.getContext("2d"),h=n._getInputMemoryOffset()/4,f=n._getOutputMemoryOffset()/4;let m;return{render:function(){return i(this,void 0,void 0,(function*(){"none"!==t.type&&(function(){if(u.drawImage(e.htmlElement,0,0,e.width,e.height,0,0,a,c),"meet"===r.model||"mlkit"===r.model){const e=u.getImageData(0,0,a,c);for(let t=0;t<d;t+=1)n.HEAPF32[h+3*t]=e.data[4*t]/255,n.HEAPF32[h+3*t+1]=e.data[4*t+1]/255,n.HEAPF32[h+3*t+2]=e.data[4*t+2]/255}}(),function(){n._runInference();for(let e=0;e<d;e+=1)if("meet"===r.model){const t=n.HEAPF32[f+2*e],r=n.HEAPF32[f+2*e+1],i=Math.max(t,r),s=Math.exp(t-i),o=Math.exp(r-i);l.data[4*e+3]=255*o/(s+o)}else if("mlkit"===r.model){const t=n.HEAPF32[f+e];l.data[4*e+3]=255*t}u.putImageData(l,0,0)}()),o.globalCompositeOperation="copy",o.filter="none",(null==m?void 0:m.smoothSegmentationMask)&&("blur"===t.type||"image"===t.type)&&(o.filter="blur(8px)"),"none"!==t.type&&(o.drawImage(p,0,0,a,c,0,0,e.width,e.height),o.globalCompositeOperation="source-in",o.filter="none"),o.drawImage(e.htmlElement,0,0),"blur"===t.type&&(o.globalCompositeOperation="destination-over",o.filter="blur(8px)",o.drawImage(e.htmlElement,0,0))}))},updatePostProcessingConfig:function(e){m=e},cleanUp:function(){}}}La=new WeakMap,Ia=new WeakMap,Oa=new WeakMap,Aa=new WeakMap;class za{constructor(e){ja.set(this,void 0),Fa.set(this,void 0),Na.set(this,!1),Ba.set(this,void 0),n(this,ja,new Wa(e.logLevel),"f"),n(this,Ba,new Xe({namespace:"VideoTrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return s(this,Na,"f")}processTrack(e){return i(this,void 0,void 0,(function*(){const{track:t,pipelineConfig:r}=e;s(this,Na,"f")&&this.stopProcessing();try{s(this,ja,"f").isLoaded||(yield s(this,ja,"f").loadTFLite(),yield s(this,ja,"f").loadTFLiteModel(r.segmentationConfig));const{tfliteModule:o}=s(this,ja,"f");if(!o)throw new Error("TensorFlow model is not available");const{targetFps:a}=r.segmentationConfig,c=yield za.buildSourcePlayback(t),d=document.createElement("canvas");d.width=c.width,d.height=c.height;const l=function(){const e=new Map,t=new Worker(`${window.location.origin}/timerWorker.js`);t.onmessage=t=>{const r=e.get(t.data.callbackId);r&&(e.delete(t.data.callbackId),r())};let r=1;return{setTimeout:function(i,s){return r+=1,e.set(r,i),t.postMessage({callbackId:r,timeoutMs:s}),r},clearTimeout:function(r){e.has(r)&&(t.postMessage({callbackId:r}),e.delete(r))},terminate:function(){e.clear(),t.terminate()}}}(),p={config:r,sourcePlayback:c,destinationPlayback:d,tflite:o},u="canvas2dCpu"===e.pipelineConfig.segmentationConfig.pipeline?za.buildCanvas2dPipeline(p):za.buildWebGL2Pipeline(p),h=()=>i(this,void 0,void 0,(function*(){const e=performance.now();return yield u.render(),l.setTimeout(h,performance.now()-e)})),f=yield h();u.updatePostProcessingConfig(r.postprocessingConfig);const m=d.captureStream(a),[g]=m.getVideoTracks();return n(this,Fa,{pipeline:u,destination:d,source:c.htmlElement,track:g,timerWorker:l,timerId:f},"f"),n(this,Na,!0,"f"),g}catch(e){throw s(this,Ba,"f").error("processTrack()",{error:e,track:t}),new Error("Can not process this track")}}))}stopProcessing(){if(this.isProcessing)if(s(this,Fa,"f"))try{s(this,Fa,"f").pipeline.cleanUp(),s(this,Fa,"f").source.remove(),s(this,Fa,"f").destination.remove(),s(this,Fa,"f").timerWorker.clearTimeout(s(this,Fa,"f").timerId),s(this,Fa,"f").timerWorker.terminate(),s(this,Fa,"f").destination.remove(),s(this,Fa,"f").track.stop(),n(this,Fa,void 0,"f"),n(this,Na,!1,"f")}catch(e){s(this,Ba,"f").error("cleanUp()",{error:e})}else s(this,Ba,"f").warn("cleanUp()",{description:"This track is not processing"});else s(this,Ba,"f").debug("stopProcessing()",{description:"Track is not processed"})}static buildWebGL2Pipeline(e){return Ma({backgroundImage:e.config.backgroundConfig.imageSource,sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildCanvas2dPipeline(e){return Va({sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildSourcePlayback(e){return i(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.srcObject=new MediaStream([e]),t.autoplay=!0,yield t.play(),{htmlElement:t,width:t.videoWidth,height:t.videoHeight}}))}}ja=new WeakMap,Fa=new WeakMap,Na=new WeakMap,Ba=new WeakMap;class $a extends wa{constructor(e){super(e),Ua.set(this,void 0),qa.set(this,void 0),this.transformParams={},n(this,Ua,new za({logLevel:e.logLevel}),"f"),this.watchOrientation(),this.watchDocumentVisibility()}get isEffectsProcessing(){return s(this,Ua,"f").isProcessing}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||(this.getLabel()===h.ScreenVideo?"vp8":"h264")}getEncodings(){return this.getEncoderConfig().encodings||zo}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return i(this,void 0,void 0,(function*(){const t=this.getProducer();t?(yield t.setMaxSpatialLayer(e),this.logger.debug("setMaxSpatialLayer()",{label:this.getLabel(),spatialLayer:e})):this.logger.warn("setMaxSpatialLayer()",{message:"Not produced yet"})}))}getMaxSpatialLayer(){const e=this.getProducer();if(e)return e.maxSpatialLayer;this.logger.warn("getMaxSpatialLayer()",{message:"Not produced yet"})}enableBlur(){return i(this,void 0,void 0,(function*(){try{n(this,qa,this.mediaStreamTrack.clone(),"f");const e=yield s(this,Ua,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Da:Ea});yield this.replaceTrack(e),this.logger.info("enableBlur()",{track:this})}catch(e){throw this.logger.warn("enableBlur()",{track:this,error:e}),new Error("Can not enable virtual background")}}))}disableBlur(){return i(this,void 0,void 0,(function*(){try{if(!s(this,Ua,"f").isProcessing)return void this.logger.debug("disableBlur()",{description:"Track is not processed"});if(!s(this,qa,"f"))return void this.logger.warn("disableBlur()",{description:"Original track missing"});this.isPublished&&(yield this.replaceTrack(s(this,qa,"f"))),s(this,Ua,"f").stopProcessing(),this.logger.info("disableBlur()",{track:this})}catch(e){throw this.logger.warn("disableBlur()",{track:this,error:e}),new Error("Can not disable virtual background")}}))}publish(e={}){var t;return i(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),transformParams:this.transformParams,codecOptions:this.getCodecOptions(),keyFrameRequestDelay:null!==(t=e.keyFrameRequestDelay)&&void 0!==t?t:0}),this.clientEventEmitter.emit(W,this)}))}watchOrientation(){window.screen.orientation&&(this.logger.debug("watchOrientation()",{description:"Watching started"}),window.screen.orientation.addEventListener("change",(()=>i(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{this.mediaStreamTrack.enabled=!1;const e=yield s(this,Ua,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Da:Ea});yield this.replaceTrack(e)}catch(e){this.logger.warn("watchOrientation()",{description:"Restart blur error after orientation change",error:e})}})))))}watchDocumentVisibility(){this.logger.debug("watchDocumentVisibility()",{description:"Watching started"}),window.addEventListener("visibilitychange",(()=>i(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{yield this.disableBlur(),yield this.enableBlur()}catch(e){this.logger.warn("watchDocumentVisibility()",{description:"Restart blur error after change document visibility",error:e})}}))))}}Ua=new WeakMap,qa=new WeakMap;const Ga=new class{sleepMs(e){return i(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},Ha=(e,t={})=>i(void 0,void 0,void 0,(function*(){var r;const i=t.maxRetries||2,s=t.minBackoffDelayMs||50;let n,o=0;for(;o<i;){o+=1;try{return yield e()}catch(e){if(n=e,t.logger&&t.logger.info("Action retry failed",{currentAttempt:o,actionName:t.actionName,error:e}),t.abortOnError&&t.abortOnError(e))throw n;if(o<i){const e=Math.pow(2,o-1)*s;yield Ga.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw n}));class Ja extends v{constructor(e,t){super(e,null!=t?t:"need_join_first")}}class Ka{constructor(e){this.initialized=!1,this.isJoined=!1,this.isChannelJoining=!1,this.rejoinRequested=!1;const{clientEventEmitter:t,network:r,media:i,dependenciesFactory:s,logLevel:n}=e;this.logLevel=n||ze,this.system=s.createSystem({logLevel:this.logLevel,clientEventEmitter:t,onLogMessage:e.onLogMessage}),this.media=s.createMedia({logLevel:this.logLevel,engine:this,clientEventEmitter:t,mediaTracksFactory:i.mediaTracksFactory,onLogMessage:e.onLogMessage}),this.network=s.createNetwork({logLevel:this.logLevel,loadbalancer:r.loadbalancer,onLogMessage:e.onLogMessage}),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=s.createChannelEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.mediaSoupEventsHandler=s.createMediaSoupEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.channelAudioObserverEventHandler=s.createAudioObserverEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.logger=new Xe({logLevel:this.logLevel,namespace:"Engine",onLogMessage:e.onLogMessage}),this.webRtcIssueDetector=e.disableWid?void 0:s.createIssueDetector({onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:[1234],logger:new Xe({logLevel:this.logLevel,namespace:"WID"})}),this.watchNetworkState(),this.watchSocketState(),this.watchClientEvents()}initialize(){var e,t,r;return i(this,void 0,void 0,(function*(){try{const{rtpCapabilities:i}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.createNoiseSuppressor(),yield this.media.loadDevice(i),null===(e=this.webRtcIssueDetector)||void 0===e||e.watchNewPeerConnections(),yield this.network.createSendTransport(this.media.mediasoupDevice),yield this.network.createRecvTransport(this.media.mediasoupDevice),this.initialized=!0,this.logger.debug("initialize()",{sendTransportId:null===(t=this.network.sendTransport)||void 0===t?void 0:t.id,recvTransportId:null===(r=this.network.receiveTransport)||void 0===r?void 0:r.id})}catch(e){if(this.logger.error("initialize()",{error:e}),e instanceof m&&"device not supported"===e.message||e instanceof Error&&"RTCPeerConnection is not defined"===e.message)throw new y("Device not supported",y.UNSUPPORTED_DEVICE_CODE);throw new Error("Error initialize engine")}}))}release(){var e,t;return i(this,void 0,void 0,(function*(){try{this.initialized=!1,this.isJoined=!1,this.app=void 0,this.channel=void 0,null===(e=this.webRtcIssueDetector)||void 0===e||e.stopWatchingNewPeerConnections(),this.network.socket.disconnect(),this.peersRepository.clear(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),yield this.media.clearTracks(),null===(t=this.audioObserver)||void 0===t||t.close(),this.logger.debug("release()",{socketId:this.mySocketId})}catch(e){throw this.logger.error("release()",{error:e}),new Error("Error release engine")}}))}watchNetworkState(){this.network.eventEmitter.on(Oe,(e=>{this.rejoinRequested||this.isChannelJoining||(this.logger.info("Received transport connection lost event. Will trigger rejoin",e),this.triggerRejoinEventIfAppropriate("transport connection lost"))}))}watchSocketState(){this.network.socket.observer.on("state",(e=>{var t;const{state:r,code:i,error:s}=e;this.clientEventEmitter.emit(r,{code:i,error:s});const n="unauthorized"===(null===(t=null==s?void 0:s.data)||void 0===t?void 0:t.errorCode);r===ne.Error&&this.isJoined&&n?this.triggerRejoinEventIfAppropriate("unauthorized error"):r===ne.Reconnected&&this.triggerRejoinEventIfAppropriate("reconnected socket")}))}get activeSpeaker(){return this.activeSpeakerPeer}get peers(){return Array.from(this.peersRepository.values())}get hostPeers(){return this.peers.filter((e=>"host"===e.role))}get audiencePeers(){return this.peers.filter((e=>"audience"===e.role))}get mySocketId(){return this.network.socket.id}getPeerById(e){return this.peersRepository.get(e)}confirmActivity(){var e;return i(this,void 0,void 0,(function*(){if(!this.channel||this.isChannelJoining)throw new Error("Connect to the channel first");if(!(null===(e=this.network.socket.connection)||void 0===e?void 0:e.active))throw new Error("Socket is inactive");yield this.network.socket.request(R)}))}join(e){return i(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isChannelJoining=!0,yield this.connectToSocketServerWithRetry(e),yield this.performJoin({appData:e.appData})}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isChannelJoining=!1,this.rejoinRequested=!1}}))}loadPeers(e){return i(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(_,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=this.peersRepository.get(e.id);if(t)return t;const r=new Wo(Object.assign(Object.assign({},e),{engine:this,loginDate:new Date}));return this.peersRepository.set(r.id,r),r}removePeer(e){const t=this.peersRepository.get(e);t&&(t.tracks.forEach((e=>e.close())),this.peersRepository.delete(e))}updateAppData(e){return i(this,void 0,void 0,(function*(){const{myPeer:t}=this;if(!t)throw new Error("Need join to channel first");try{Uo(e),yield this.network.updatePeerAppData({peerId:t.id,appData:e})}catch(e){throw this.logger.error("updateAppData()",{error:e}),new Error("Can not update peer appData")}}))}createCameraVideoTrack(e){return i(this,void 0,void 0,(function*(){const t=ia.getCameraVideoTrackParams(e);try{const[r]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});if(r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof $a&&(r.setLabel(h.Camera),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(ia.getVideoTrackTransformParams(r.mediaStreamTrack)),null==e?void 0:e.blur))try{yield r.enableBlur()}catch(e){this.logger.warn("Failed to start virtual background, featured original track",{track:this})}return this.media.setTrack(r),this.logger.debug("createCameraVideoTrack()",{trackParams:t,track:r}),r}catch(e){throw this.logger.error("createCameraVideoTrack()",{error:e,trackParams:t}),new Error(`Can not create camera track: ${e.message}`)}}))}createMicrophoneAudioTrack(e){return i(this,void 0,void 0,(function*(){try{const[t]=yield this.media.createUserMediaTracks({video:!1,audio:null==e?void 0:e.audio});if(t.setLabel(h.Microphone),t.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),(null==e?void 0:e.encoderConfig)&&t.setEncoderConfig(e.encoderConfig),"audio"===t.kind&&(null==e?void 0:e.noiseSuppression))try{yield t.enableNoiseSuppression()}catch(e){this.logger.warn("Failed to start noise suppression, featured original track",{track:this})}return this.media.setTrack(t),this.logger.debug("createMicrophoneAudioTrack()",{options:e,track:t}),t}catch(t){throw this.logger.error("createMicrophoneAudioTrack()",{error:t,options:e}),new Error(`Can not create microphone track: ${t.message}`)}}))}createScreenMediaTracks(e){return i(this,void 0,void 0,(function*(){const t=ia.getScreenVideoTrackParams(e);try{const r=yield this.media.createDisplayMediaTracks({audio:null==e?void 0:e.audio,video:null==e?void 0:e.video});return r.forEach((r=>{if(r.mediaStreamTrack.addEventListener("ended",(()=>{r.unpublish()})),r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof $a){r.setLabel(h.ScreenVideo),r.setEncoderConfig(t.encoderConfig);const e=ia.getVideoTrackTransformParams(r.mediaStreamTrack);return r.setTransformParams(e),this.media.setTrack(r),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,transformParams:e,track:r})}r.setLabel(h.ScreenAudio),(null==e?void 0:e.audioEncoderConfig)&&r.setEncoderConfig(e.audioEncoderConfig),this.media.setTrack(r),this.logger.debug("createScreenMediaTrack()",{trackParams:null==e?void 0:e.audio,encoderConfig:null==e?void 0:e.audioEncoderConfig,track:r})})),r}catch(e){throw this.logger.error("createScreenMediaTrack()",{error:e,trackParams:t}),new Error(`Can not create screen media tracks: ${e.message}`)}}))}deleteTrack(e){return this.media.deleteTrack(e)}get channelId(){return this.channel}get appId(){return this.app}get canUseNoiseSuppression(){return this.media.isNoiseSuppressorLoaded}setActiveSpeakerPeer(e){this.activeSpeaker!==e&&(this.activeSpeakerPeer=e,this.clientEventEmitter.safeEmit(U,{peer:e}))}connectToSocketServerWithRetry(e){return i(this,void 0,void 0,(function*(){return Ha((()=>i(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer",logger:new Xe({namespace:"RetrySocketConnect",logLevel:this.logLevel}),abortOnError:e=>{var t;return"unauthorized"===(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.errorCode)}})}))}connectToSocketServer(e){return i(this,void 0,void 0,(function*(){const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId,role:e.role});this.network.socket.connect(t,e.token);try{yield this.waitForSocketConnection()}catch(r){throw this.logger.error("Failed to connect to socket server",{error:r,role:e.role,channelId:e.channelId,webSocketUrl:t}),this.network.socket.disconnect(),r}}))}getAvailableNode(e){return i(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode(e)).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const r=s=>i(this,void 0,void 0,(function*(){const{error:i,state:n}=s,o=()=>this.network.socket.observer.removeListener("state",r),a=[ne.Disconnected,ne.Reconnecting].includes(n);return i?(o(),void t(i)):this.isChannelJoining&&a?(o(),void t(new Error(`Not expected socket state for new connection: ${n}`))):void(this.isChannelJoining&&[ne.Connected,ne.Reconnected].includes(n)&&(o(),e()))}));this.network.socket.observer.on("state",r)}))}performJoin(e){return i(this,void 0,void 0,(function*(){try{const{appId:t,channelId:r}=yield this.sendJoinChannelRequestWithRetry(e);this.app=t,this.channel=r,yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),this.isJoined=!0,this.logger.debug("Successfully joined channel",{channelId:r}),yield this.createAudioObserver()}catch(e){throw this.logger.error("performJoin()",{error:e}),e}}))}sendJoinChannelRequestWithRetry(e){return i(this,void 0,void 0,(function*(){return Ha((()=>i(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest",logger:new Xe({namespace:"RetryJoin",logLevel:this.logLevel})})}))}sendJoinChannelRequest(e){return i(this,void 0,void 0,(function*(){return this.network.socket.request(w,e)}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}get myPeer(){return this.peers.find((e=>e.isMe))}watchClientEvents(){this.clientEventEmitter.on(W,(e=>i(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)})))),this.clientEventEmitter.on(V,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close(),this.media.deleteTrack(e)})),this.clientEventEmitter.on(z,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.pause()})),this.clientEventEmitter.on($,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.resume()})),this.clientEventEmitter.on(G,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close()})),this.clientEventEmitter.on(H,(e=>i(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)}))))}createSelfPeerTrack(e){var t;return i(this,void 0,void 0,(function*(){const r=this.peersRepository.get(this.mySocketId);if(!r)return;yield null===(t=r.tracks.get(e.getLabel()))||void 0===t?void 0:t.close();const i=new Bo({mediaStreamTrack:e.mediaStreamTrack,label:e.getLabel(),engine:this,muted:!1,paused:e.isPaused,peerEventEmitter:r.observer});r.tracks.set(i.label,i)}))}createAudioObserver(){var e;return i(this,void 0,void 0,(function*(){if(!this.isJoined)throw new Ja("Need to join first");const t={channelId:this.channelId,appId:this.appId,peerId:null===(e=this.myPeer)||void 0===e?void 0:e.id};try{const{producerId:e}=yield this.network.getAudioObserverProducer(),r=yield this.network.createDataConsumer({producerId:e,appId:this.appId,channelId:this.channelId});r.on("message",(e=>{this.channelAudioObserverEventHandler.handle(e)})),this.audioObserver=r,this.logger.debug("Successfully create audio observer",t)}catch(e){this.logger.error("Failed to create audio observer",t)}}))}triggerRejoinEventIfAppropriate(e){this.rejoinRequested&&!this.isChannelJoining||(this.logger.debug("Triggering channel rejoin required event",{reason:e}),this.rejoinRequested=!0,this.clientEventEmitter.emit(A))}}var Qa,Xa,Ya;function Za(){}function ec(){ec.init.call(this)}function tc(e){return void 0===e._maxListeners?ec.defaultMaxListeners:e._maxListeners}function rc(e,t,r){if(t)e.call(r);else for(var i=e.length,s=lc(e,i),n=0;n<i;++n)s[n].call(r)}function ic(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=lc(e,s),o=0;o<s;++o)n[o].call(r,i)}function sc(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,o=lc(e,n),a=0;a<n;++a)o[a].call(r,i,s)}function nc(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var o=e.length,a=lc(e,o),c=0;c<o;++c)a[c].call(r,i,s,n)}function oc(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=lc(e,s),o=0;o<s;++o)n[o].apply(r,i)}function ac(e,t,r,i){var s,n,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((n=e._events)?(n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),o=n[t]):(n=e._events=new Za,e._eventsCount=0),o){if("function"==typeof o?o=n[t]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),!o.warned&&(s=tc(e))&&s>0&&o.length>s){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=n[t]=r,++e._eventsCount;return e}function cc(e,t,r){var i=!1;function s(){e.removeListener(t,s),i||(i=!0,r.apply(e,arguments))}return s.listener=r,s}function dc(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function lc(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Za.prototype=Object.create(null),ec.EventEmitter=ec,ec.usingDomains=!1,ec.prototype.domain=void 0,ec.prototype._events=void 0,ec.prototype._maxListeners=void 0,ec.defaultMaxListeners=10,ec.init=function(){this.domain=null,ec.usingDomains&&(void 0).active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Za,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},ec.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},ec.prototype.getMaxListeners=function(){return tc(this)},ec.prototype.emit=function(e){var t,r,i,s,n,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(r=o[e]))return!1;var l="function"==typeof r;switch(i=arguments.length){case 1:rc(r,l,this);break;case 2:ic(r,l,this,arguments[1]);break;case 3:sc(r,l,this,arguments[1],arguments[2]);break;case 4:nc(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(i-1),n=1;n<i;n++)s[n-1]=arguments[n];oc(r,l,this,s)}return!0},ec.prototype.addListener=function(e,t){return ac(this,e,t,!1)},ec.prototype.on=ec.prototype.addListener,ec.prototype.prependListener=function(e,t){return ac(this,e,t,!0)},ec.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,cc(this,e,t)),this},ec.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,cc(this,e,t)),this},ec.prototype.removeListener=function(e,t){var r,i,s,n,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new Za:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){o=r[n].listener,s=n;break}if(s<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Za,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,s=e.length;i<s;r+=1,i+=1)e[r]=e[i];e.pop()}(r,s);i.removeListener&&this.emit("removeListener",e,o||t)}return this},ec.prototype.off=function(e,t){return this.removeListener(e,t)},ec.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Za,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Za:delete r[e]),this;if(0===arguments.length){for(var i,s=Object.keys(r),n=0;n<s.length;++n)"removeListener"!==(i=s[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Za,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},ec.prototype.listeners=function(e){var t,r=this._events;return r&&(t=r[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[]},ec.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):dc.call(e,t)},ec.prototype.listenerCount=dc,ec.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class pc extends ec{}!function(e){e.Issue="issue",e.NetworkScoresUpdated="network-scores-updated",e.StatsParsingFinished="stats-parsing-finished"}(Qa||(Qa={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server",e.Stream="stream"}(Xa||(Xa={})),function(e){e.OutboundNetworkQuality="outbound-network-quality",e.InboundNetworkQuality="inbound-network-quality",e.OutboundNetworkMediaLatency="outbound-network-media-latency",e.InboundNetworkMediaLatency="inbound-network-media-latency",e.NetworkMediaSyncFailure="network-media-sync-failure",e.OutboundNetworkThroughput="outbound-network-throughput",e.InboundNetworkThroughput="inbound-network-throughput",e.EncoderCPUThrottling="encoder-cpu-throttling",e.DecoderCPUThrottling="decoder-cpu-throttling",e.ServerIssue="server-issue",e.UnknownVideoDecoderIssue="unknown-video-decoder",e.LowInboundMOS="low-inbound-mean-opinion-score",e.LowOutboundMOS="low-outbound-mean-opinion-score"}(Ya||(Ya={}));class uc extends ec{static STATS_REPORT_READY_EVENT="stats-report-ready";static STATS_REPORTS_PARSED="stats-reports-parsed";isStopped=!1;reportTimer;getStatsInterval;compositeStatsParser;constructor(e){super(),this.compositeStatsParser=e.compositeStatsParser,this.getStatsInterval=e.getStatsInterval??1e4}get isRunning(){return!!this.reportTimer&&!this.isStopped}startReporting(){if(this.reportTimer)return;const e=()=>setTimeout((()=>{this.isStopped?this.reportTimer=void 0:this.parseReports().finally((()=>{this.reportTimer=e()}))}),this.getStatsInterval);this.isStopped=!1,this.reportTimer=e()}stopReporting(){this.isStopped=!0,this.reportTimer&&(clearTimeout(this.reportTimer),this.reportTimer=void 0)}async parseReports(){const e=Date.now(),t=await this.compositeStatsParser.parse(),r=Date.now()-e;this.emit(uc.STATS_REPORTS_PARSED,{timeTaken:r}),t.forEach((e=>{this.emit(uc.STATS_REPORT_READY_EVENT,e)}))}}const hc=(()=>{const e=new Map;return t=>{const{taskId:r,delayMs:i,maxJitterMs:s,callback:n}=t,o=Math.ceil(Math.random()*(s||0)),a=e.get(r);a&&clearTimeout(a);const c=setTimeout((()=>{n(),e.delete(r)}),i+o);e.set(r,c)}})();class fc{#e={};calculate(e){const{connection:{id:t}}=e,r=this.calculateOutboundScore(e),i=this.calculateInboundScore(e);return this.#e[t]=e,hc({taskId:t,delayMs:35e3,callback:()=>delete this.#e[t]}),{outbound:r,inbound:i}}calculateOutboundScore(e){const t=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.remote?.audio.inbound||[],...r.remote?.video.inbound||[]],{packetsSent:s}=e.connection,n=r.connection.packetsSent,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateInboundScore(e){const t=[...e.audio?.inbound,...e.video?.inbound];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.video?.inbound,...r.audio?.inbound],{packetsReceived:s}=e.connection,n=r.connection.packetsReceived,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateMOS({avgJitter:e,rtt:t,packetsLoss:r}){const i=t+2*e+10;let s=i<160?93.2-i/40:93.2-i/120-10;return s-=2.5*r,1+.035*s+7e-6*s*(s-60)*(100-s)}}class mc{#e;#t;constructor(e={}){this.#e=new Map,this.#t=e.statsCleanupTtlMs??35e3}detect(e){const t=this.performDetection(e);return this.performPrevStatsCleanup({connectionId:e.connection.id}),t}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;this.#e.has(t)&&hc({taskId:t,delayMs:this.#t,callback:()=>{this.deleteLastProcessedStats(t),"function"==typeof r&&r()}})}setLastProcessedStats(e,t){this.#e.set(e,t)}getLastProcessedStats(e){return this.#e.get(e)}deleteLastProcessedStats(e){this.#e.delete(e)}}class gc extends mc{#r;constructor(e={}){super(e),this.#r=e.availableOutgoingBitrateThreshold??1e5}performDetection(e){const t=[],{availableOutgoingBitrate:r}=e.connection;if(void 0===r)return t;const i=e.audio.outbound.reduce(((e,t)=>e+t.targetBitrate),0),s=e.video.outbound.reduce(((e,t)=>e+t.bitrate),0);if(!i&&!s)return t;const n={availableOutgoingBitrate:r,videoStreamsTotalBitrate:s,audioStreamsTotalTargetBitrate:i};return i>r||s>0&&r<this.#r?(t.push({statsSample:n,type:Xa.Network,reason:Ya.OutboundNetworkThroughput}),t):t}}class vc extends mc{#i;constructor(e={}){super(e),this.#i=e.framesDroppedThreshold??.5}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.inbound.filter((e=>e.framesDropped>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesDropped===t.framesDropped)return;const s=e.framesReceived-t.framesReceived,n=e.framesDecoded-t.framesDecoded,o=e.framesDropped-t.framesDropped,a=o/s;if(0===s||0===n)return;const c={deltaFramesDropped:o,deltaFramesReceived:s,deltaFramesDecoded:n,framesDroppedPct:Math.round(100*a)};a>=this.#i&&r.push({statsSample:c,type:Xa.CPU,reason:Ya.DecoderCPUThrottling,ssrc:e.ssrc})})),r):r}}class yc extends mc{#s;constructor(e={}){super(e),this.#s=e.missedFramesThreshold??.15}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>e.framesEncoded>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesEncoded===t.framesEncoded)return;const s=e.framesEncoded-t.framesEncoded,n=e.framesSent-t.framesSent,o=1-n/s;if(0===s)return;if(s===n)return;const a={deltaFramesSent:n,deltaFramesEncoded:s,missedFramesPct:Math.round(100*o)};o>=this.#s&&r.push({statsSample:a,type:Xa.Network,reason:Ya.OutboundNetworkThroughput,ssrc:e.ssrc})})),r):r}}class bc extends mc{highPacketLossThresholdPct;highJitterThreshold;highJitterBufferDelayThresholdMs;highRttThresholdMs;constructor(e={}){super(),this.highPacketLossThresholdPct=e.highPacketLossThresholdPct??5,this.highJitterThreshold=e.highJitterThreshold??200,this.highJitterBufferDelayThresholdMs=e.highJitterBufferDelayThresholdMs??500,this.highRttThresholdMs=e.highRttThresholdMs??250}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.audio?.inbound,...e.video?.inbound];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.video?.inbound,...i.audio?.inbound],{packetsReceived:n}=e.connection,o=i.connection.packetsReceived,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc)),i=r?.jitterBufferDelay||0,n=r?.jitterBufferEmittedCount||0,o=t.jitterBufferDelay-i,a=t.jitterBufferEmittedCount-n,c=o&&a?1e3*o/a:0;return{sumJitter:e.sumJitter+t.jitter,sumJitterBufferDelayMs:e.sumJitterBufferDelayMs+c,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,sumJitterBufferDelayMs:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d,sumJitterBufferDelayMs:l}=a,p=d/r.length,u=l/r.length,h=n-o,f=a.packetsLost-a.lastPacketsLost,m=h&&f?Math.round(100*f/(h+f)):0,g=m>this.highPacketLossThresholdPct,v=p>=this.highJitterThreshold,y=c>=this.highRttThresholdMs,b=u>this.highJitterBufferDelayThresholdMs,w=y&&!v&&!g,_=g&&v,S=v&&b,k={rtt:c,packetLossPct:m,avgJitter:p,avgJitterBufferDelay:u};return(v||g)&&t.push({statsSample:k,type:Xa.Network,reason:Ya.InboundNetworkQuality,iceCandidate:e.connection.local.id}),w&&t.push({statsSample:k,type:Xa.Server,reason:Ya.ServerIssue,iceCandidate:e.connection.remote.id}),_&&t.push({statsSample:k,type:Xa.Network,reason:Ya.InboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),S&&t.push({statsSample:k,type:Xa.Network,reason:Ya.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id}),t}}class wc extends mc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.audio.inbound,r=[],i=this.getLastProcessedStats(e.connection.id)?.audio.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s=e.track.insertedSamplesForDeceleration+e.track.removedSamplesForAcceleration,n=t.track.insertedSamplesForDeceleration+t.track.removedSamplesForAcceleration;if(s===n)return;const o=e.track.totalSamplesReceived-t.track.totalSamplesReceived,a=s-n,c=Math.round(100*a/o),d={correctedSamplesPct:c};c>5&&r.push({statsSample:d,type:Xa.Network,reason:Ya.NetworkMediaSyncFailure,ssrc:e.ssrc})})),r):r}}class _c extends mc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.remote?.audio.inbound||[],...i.remote?.video.inbound||[]],{packetsSent:n}=e.connection,o=i.connection.packetsSent,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d}=a,l=d/r.length,p=n-o,u=a.packetsLost-a.lastPacketsLost,h=p&&u?Math.round(100*u/(p+u)):0,f=h>5,m=l>=200,g=!f&&m||m||f,v={rtt:c,avgJitter:l,packetLossPct:h};return f&&m&&t.push({statsSample:v,type:Xa.Network,reason:Ya.OutboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),g&&t.push({statsSample:v,type:Xa.Network,reason:Ya.OutboundNetworkQuality,iceCandidate:e.connection.local.id}),t}}class Sc extends mc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>"none"!==e.qualityLimitationReason)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s={qualityLimitationReason:e.qualityLimitationReason};e.framesSent>t.framesSent||("cpu"===e.qualityLimitationReason&&r.push({statsSample:s,type:Xa.CPU,reason:Ya.EncoderCPUThrottling,ssrc:e.ssrc}),"bandwidth"===e.qualityLimitationReason&&r.push({statsSample:s,type:Xa.Network,reason:Ya.OutboundNetworkThroughput,ssrc:e.ssrc}))})),r):r}}class kc extends mc{UNKNOWN_DECODER="unknown";#n={};performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;super.performPrevStatsCleanup({...e,cleanupCallback:()=>{delete this.#n[t],"function"==typeof r&&r()}})}processData(e){const t=[],{id:r}=e.connection,i=this.getLastProcessedStats(r)?.video.inbound;return e.video.inbound.forEach((e=>{const{decoderImplementation:s,ssrc:n}=e,o=i?.find((e=>e.ssrc===n));if(o)if(s===this.UNKNOWN_DECODER){if(!this.hadLastDecoderWithIssue(r,n)){this.setLastDecoderWithIssue(r,n,this.UNKNOWN_DECODER);const i={mimeType:e.mimeType,decoderImplementation:s};t.push({ssrc:n,statsSample:i,type:Xa.Stream,reason:Ya.UnknownVideoDecoderIssue,trackIdentifier:e.track.trackIdentifier})}}else this.setLastDecoderWithIssue(r,n,void 0)})),t}setLastDecoderWithIssue(e,t,r){const i=this.#n[e]??{};void 0===r?delete i[t]:i[t]=r,this.#n[e]=i}hadLastDecoderWithIssue(e,t){const r=this.#n[e];return(r&&r[t])===this.UNKNOWN_DECODER}}const Rc=e=>"closed"===e.iceConnectionState||"closed"===e.connectionState,Cc=(e,t,r)=>8*((e,t,r)=>{if(!t)return 0;const i=e[r],s=t[r];if(null==i||null==s)return 0;const n=Math.floor(e.timestamp)-Math.floor(t.timestamp);return 0===n?0:(Number(i)-Number(s))/n*1e3})(e,t,r);class Pc{connections=[];statsParser;constructor(e){this.statsParser=e.statsParser}listConnections(){return[...this.connections]}addPeerConnection(e){this.connections.push({id:e.id??String(Date.now()+Math.random().toString(32)),pc:e.pc})}removePeerConnection(e){const t=this.connections.findIndex((({pc:t})=>t===e.pc));t>=0&&this.removeConnectionsByIndexes([t])}async parse(){const e=[],t=this.connections.map((async(t,r)=>{if(!Rc(t.pc))return this.statsParser.parse(t);e.unshift(r)}));return e.length&&this.removeConnectionsByIndexes(e),(await Promise.all(t)).filter((e=>void 0!==e))}removeConnectionsByIndexes(e){e.forEach((e=>{this.connections.splice(e,1)}))}}class Tc{prevStats=new Map;allowedReportTypes=new Set(["candidate-pair","inbound-rtp","outbound-rtp","remote-outbound-rtp","remote-inbound-rtp","track","transport"]);logger;constructor(e){this.logger=e.logger}get previouslyParsedStatsConnectionsIds(){return[...this.prevStats.keys()]}async parse(e){if(!Rc(e.pc))return this.getConnectionStats(e);this.logger.debug("Skip stats parsing. Connection is closed.",{connection:e})}async getConnectionStats(e){const{pc:t,id:r}=e;try{const i=Date.now(),s=await Promise.all(t.getReceivers().map((e=>e.getStats()))),n=await Promise.all(t.getSenders().map((e=>e.getStats())));return{id:r,stats:this.mapReportsStats([...s,...n],e),timeTaken:Date.now()-i}}catch(e){return void this.logger.error("Failed to get stats for PC",{id:r,pc:t,error:e})}}mapReportsStats(e,t){const r={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]},connection:{},remote:{video:{inbound:[],outbound:[]},audio:{inbound:[],outbound:[]}}};e.forEach((e=>{e.forEach((t=>{this.allowedReportTypes.has(t.type)&&this.updateMappedStatsWithReportItemData(t,r,e)}))}));const{id:i}=t,s=this.prevStats.get(i);return s&&this.propagateStatsWithRateValues(r,s.stats),this.prevStats.set(i,{stats:r,ts:Date.now()}),hc({taskId:i,delayMs:35e3,callback:()=>this.prevStats.delete(i)}),r}updateMappedStatsWithReportItemData(e,t,r){const i=e.type;if("candidate-pair"===i&&"succeeded"===e.state&&e.nominated)return void(t.connection=this.prepareConnectionStats(e,r));const s=this.getMediaType(e);if(s)if("outbound-rtp"!==i)if("inbound-rtp"!==i)"remote-outbound-rtp"!==i?"remote-inbound-rtp"===i&&(this.mapConnectionStatsIfNecessary(t,e,r),t.remote[s].inbound.push({...e})):t.remote[s].outbound.push({...e});else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{};this.mapConnectionStatsIfNecessary(t,e,r);const n={...e,track:{...i}};t[s].inbound.push(n)}else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{},n={...e,track:{...i}};t[s].outbound.push(n)}}getMediaType(e){const t=e.mediaType||e.kind;if(!["audio","video"].includes(t)){const{id:t}=e;if(!t)return;return String(t).includes("Video")?"video":String(t).includes("Audio")?"audio":void 0}return t}propagateStatsWithRateValues(e,t){e.audio.inbound.forEach((e=>{const r=t.audio.inbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesReceived"),e.packetRate=Cc(e,r,"packetsReceived")})),e.audio.outbound.forEach((e=>{const r=t.audio.outbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesSent"),e.packetRate=Cc(e,r,"packetsSent")})),e.video.inbound.forEach((e=>{const r=t.video.inbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesReceived"),e.packetRate=Cc(e,r,"packetsReceived")})),e.video.outbound.forEach((e=>{const r=t.video.outbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesSent"),e.packetRate=Cc(e,r,"packetsSent")}))}mapConnectionStatsIfNecessary(e,t,r){if(e.connection.id||!t.transportId)return;const i=r.get(t.transportId);if(i&&i.selectedCandidatePairId){const t=r.get(i.selectedCandidatePairId);e.connection=this.prepareConnectionStats(t,r)}}prepareConnectionStats(e,t){if(!e||!t)return{};const r={...e};if(r.remoteCandidateId){const e=t.get(r.remoteCandidateId);r.remote={...e}}if(r.localCandidateId){const e=t.get(r.localCandidateId);r.local={...e}}return r}}class Ec{eventEmitter;#o=!1;detectors=[];networkScoresCalculator;statsReporter;compositeStatsParser;logger;constructor(e){this.logger=e.logger??{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},this.eventEmitter=e.issueEmitter??new pc,e.onIssues&&this.eventEmitter.on(Qa.Issue,e.onIssues),e.onNetworkScoresUpdated&&this.eventEmitter.on(Qa.NetworkScoresUpdated,e.onNetworkScoresUpdated),this.detectors=e.detectors??[new Sc,new vc,new yc,new bc,new _c,new wc,new gc,new kc],this.networkScoresCalculator=e.networkScoresCalculator??new fc,this.compositeStatsParser=e.compositeStatsParser??new Pc({statsParser:new Tc({logger:this.logger})}),this.statsReporter=e.statsReporter??new uc({compositeStatsParser:this.compositeStatsParser,getStatsInterval:e.getStatsInterval??5e3}),window.wid=this,this.wrapRTCPeerConnection(),this.statsReporter.on(uc.STATS_REPORT_READY_EVENT,(t=>{this.detectIssues({data:t.stats,ignoreSSRCList:e.ignoreSSRCList}),this.calculateNetworkScores(t.stats)})),this.statsReporter.on(uc.STATS_REPORTS_PARSED,(e=>{const t={timeTaken:e.timeTaken,ts:Date.now()};this.eventEmitter.emit(Qa.StatsParsingFinished,t)}))}watchNewPeerConnections(){this.#o?this.logger.warn("WebRTCIssueDetector is already started. Skip processing"):(this.logger.info("Start watching peer connections"),this.#o=!0,this.statsReporter.startReporting())}stopWatchingNewPeerConnections(){this.#o?(this.logger.info("Stop watching peer connections"),this.#o=!1,this.statsReporter.stopReporting()):this.logger.warn("WebRTCIssueDetector is already stopped. Skip processing")}handleNewPeerConnection(e){this.#o?(this.logger.debug("Handling new peer connection",e),this.compositeStatsParser.addPeerConnection({pc:e})):this.logger.debug("Skip handling new peer connection. Detector is not running",e)}emitIssues(e){this.eventEmitter.emit(Qa.Issue,e)}detectIssues({data:e,ignoreSSRCList:t}){let r=this.detectors.reduce(((t,r)=>[...t,...r.detect(e)]),[]);t?.length&&(r=r.filter((e=>!e.ssrc||!t.includes(e.ssrc)))),r.length>0&&this.emitIssues(r)}calculateNetworkScores(e){const t=this.networkScoresCalculator.calculate(e);this.eventEmitter.emit(Qa.NetworkScoresUpdated,t)}wrapRTCPeerConnection(){if(!window.RTCPeerConnection)return void this.logger.warn("No RTCPeerConnection found in browser window. Skipping");const e=window.RTCPeerConnection,t=e=>this.handleNewPeerConnection(e);function r(r){const i=new e(r);return t(i),i}r.prototype=e.prototype,window.RTCPeerConnection=r}}Error;const Dc=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],xc=({from:e,seen:t,to_:r,forceEnumerable:i})=>{const s=r||(Array.isArray(e)?[]:{});t.push(e);for(const[r,n]of Object.entries(e))"function"!=typeof n&&(n&&"object"==typeof n?t.includes(e[r])?s[r]="[Circular]":s[r]=xc({from:e[r],seen:t.slice(),forceEnumerable:i}):s[r]=n);for(const{property:t,enumerable:r}of Dc)"string"==typeof e[t]&&Object.defineProperty(s,t,{value:e[t],enumerable:!!i||r,configurable:!0,writable:!0});return s};var Mc=e=>"object"==typeof e&&null!==e?xc({from:e,seen:[],forceEnumerable:!0}):"function"==typeof e?`[Function: ${e.name||"anonymous"}]`:e;class Lc{constructor(e){var t;const{socketClient:r,loadBalancerApiClient:i,onLogMessage:s}=e;this.socket=r,this.loadBalancerClient=i,this.eventEmitter=null!==(t=e.eventEmitter)&&void 0!==t?t:new o,this.logger=new Xe({namespace:"Network",logLevel:e.logLevel,onLogMessage:s})}closeRemoteProducer(e){return i(this,void 0,void 0,(function*(){yield this.socket.request(ae,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return i(this,void 0,void 0,(function*(){this.sendTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.sendTransport)),this.sendTransport=void 0):this.logger.warn("closeSendTransport()",{message:"No available send transport"})}))}closeReceiveTransport(){var e;return i(this,void 0,void 0,(function*(){this.receiveTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.receiveTransport)),this.receiveTransport=void 0):this.logger.warn("closeReceiveTransport()",{message:"No available receive transport"})}))}closeTransport(e){return i(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(Pe,{transportId:e.id});return this.logger.debug("closeTransport()",{transport:e}),Boolean(t)}catch(e){return this.logger.error("closeTransport()",{error:e}),!1}finally{e.close()}}))}createSendTransport(e){return i(this,void 0,void 0,(function*(){if(this.sendTransport)return void this.logger.warn("createSendTransport()",{message:"Send transport already exists"});const t=yield this.socket.request(Ce,{sctpCapabilities:e.sctpCapabilities,localDirection:"send"}),r=e.createSendTransport(t);this.logger.debug("createSendTransport()",{transport:this.sendTransport}),r.on(Le,(({dtlsParameters:e},s,n)=>i(this,void 0,void 0,(function*(){try{yield this.socket.request(Te,{transportId:r.id,dtlsParameters:e}),s(),this.logger.debug("sendTransport.connect()",{transportId:r.id,dtlsRole:e.role}),setTimeout((()=>this.logTransportDetails(r)),200)}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),n(r)}})))),r.on(Ie,((e,t,s)=>i(this,void 0,void 0,(function*(){try{const{id:i}=yield this.socket.request(Ee,{transportId:r.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:i}),this.logger.debug("sendTransport.produce()",{producerId:i,transportId:r.id,kind:e.kind})}catch(t){this.logger.error("sendTransport.produce()",{error:t,transportId:r.id,kind:e.kind}),s(t)}})))),r.on(xe,(e=>{this.logger.info("sendTransport.state",{state:e}),"failed"===e&&(this.restartIce(r),this.logger.warn("sendTransport.restartIce()",{state:e,sendTransportId:r.id})),setTimeout((()=>{var e,t;"disconnected"===(null===(e=this.sendTransport)||void 0===e?void 0:e.connectionState)&&(null===(t=this.socket.connection)||void 0===t?void 0:t.connected)&&(this.logger.warn("sendTransport is closed before websocket is closed",{sendTransportId:r.id}),this.eventEmitter.safeEmit(Oe,{direction:"send",transportId:r.id,socketId:this.socket.id}))}),3e3)})),this.sendTransport=r}))}createRecvTransport(e){return i(this,void 0,void 0,(function*(){if(this.receiveTransport)return void this.logger.warn("createReceiveTransport()",{message:"Receive transport already exists"});const t=yield this.socket.request(Ce,{localDirection:"receive"}),r=e.createRecvTransport(t);this.logger.debug("createReceiveTransport()",{transport:this.receiveTransport}),r.on(Le,(({dtlsParameters:e},t,s)=>i(this,void 0,void 0,(function*(){try{yield this.socket.request(Te,{transportId:r.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()",{transportId:r.id,dtlsRole:e.role}),setTimeout((()=>this.logTransportDetails(r)),200)}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),s(e)}})))),r.on(xe,(e=>{this.logger.info("receiveTransport.state",{state:e}),"failed"===e&&(this.restartIce(r),this.logger.debug("receiveTransport.restartIce()",{recvTransportId:r.id})),setTimeout((()=>{var e,t;"disconnected"===(null===(e=this.receiveTransport)||void 0===e?void 0:e.connectionState)&&(null===(t=this.socket.connection)||void 0===t?void 0:t.connected)&&(this.logger.warn("receiveTransport is closed before websocket is closed",{recvTransportId:r.id}),this.eventEmitter.safeEmit(Oe,{direction:"recv",transportId:r.id,socketId:this.socket.id}))}),3e3)})),this.receiveTransport=r}))}getIceParameters(e){return i(this,void 0,void 0,(function*(){const t=yield this.socket.request(Me,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);return this.logger.debug("getIceParameters()",{iceParameters:t}),t}))}restartIce(e){return i(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t}),this.logger.debug("restartIce() completed",{iceParameters:t})}catch(e){this.logger.error("restartIce()",{error:e})}}))}createConsumer({producerId:e,rtpCapabilities:t,appId:r,channelId:s,producerPeerId:n}){return i(this,void 0,void 0,(function*(){const i=this.receiveTransport;if(!i)throw this.logger.error("createConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createConsumer()",{producerId:e});const o=yield this.socket.request(ge,{producerId:e,transportId:i.id,rtpCapabilities:t,appData:{peerId:this.socket.id,appId:r,channelId:s},producerPeerId:n}),a=yield i.consume(o),{producerPaused:c}=o;return this.logger.debug("Consumer created",{consumer:a,isProducerPaused:c}),{consumer:a,isProducerPaused:c}}))}createDataConsumer({producerId:e,appId:t,channelId:r}){return i(this,void 0,void 0,(function*(){const i=this.receiveTransport;if(!i)throw this.logger.error("createDataConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createDataConsumer()",{producerId:e});const s=yield this.socket.request(ve,{dataProducerId:e,transportId:i.id,appData:{peerId:this.socket.id,producerId:e,appId:t,channelId:r}}),n=yield i.consumeData(s);return this.logger.debug("Data consumer created",{consumer:n}),n}))}closeRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(ye,{peerId:this.socket.id,consumerId:e})}))}resumeRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(we,{consumerId:e})}))}pauseRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(be,{consumerId:e})}))}updatePeerAppData({peerId:e,appData:t}){return i(this,void 0,void 0,(function*(){return this.socket.request(k,{peerId:e,appData:t})}))}getAudioObserverProducer(){return i(this,void 0,void 0,(function*(){return this.socket.request(E)}))}getTransportsStateInfo(){return i(this,void 0,void 0,(function*(){const[e,t]=yield Promise.all([this.getParsedTransportStats(this.receiveTransport),this.getParsedTransportStats(this.sendTransport)]);return{receive:e,send:t}}))}getParsedTransportStats(e){return i(this,void 0,void 0,(function*(){if(e)try{const t=Array.from((yield e.getStats()).values()),r=t.find((e=>"local-candidate"===e.type)),i=t.find((e=>"remote-candidate"===e.type)),s=t.find((e=>"transport"===e.type));return{dtlsState:null==s?void 0:s.dtlsState,iceState:null==s?void 0:s.iceState,dtlsRole:null==s?void 0:s.dtlsRole,iceRole:null==s?void 0:s.iceRole,selectedCandidatePairChanges:null==s?void 0:s.selectedCandidatePairChanges,tlsVersion:null==s?void 0:s.tlsVersion,localCandidateState:{ip:null==r?void 0:r.ip,address:null==r?void 0:r.address,port:null==r?void 0:r.port,protocol:null==r?void 0:r.protocol,candidateType:null==r?void 0:r.candidateType},remoteCandidateState:{ip:null==i?void 0:i.ip,address:null==i?void 0:i.address,port:null==i?void 0:i.port,protocol:null==i?void 0:i.protocol,candidateType:null==i?void 0:i.candidateType}}}catch(e){return void this.logger.warn("getParsedTransportStats()",{error:e})}else this.logger.debug("getParsedTransportStats()",{message:"Transport is missing"})}))}logTransportDetails(e){var t;return i(this,void 0,void 0,(function*(){try{const r=yield e.getStats(),i=[...r].find((([,e])=>"transport"===e.type)),s=(null==i?void 0:i.length)?i[1]:void 0,n=s.selectedCandidatePairId,o=r.get(String(n||"-")),a=r.get(String((null==o?void 0:o.localCandidateId)||"-")),c=r.get(String((null==o?void 0:o.remoteCandidateId)||"-"));this.logger.info("Detaild transport stats",{totalRtt:null!==(t=null==o?void 0:o.totalRoundTripTime)&&void 0!==t?t:"-",iceRole:null==s?void 0:s.iceRole,iceState:null==s?void 0:s.iceState,dtlsRole:null==s?void 0:s.dtlsRole,dtlsState:null==s?void 0:s.dtlsState,local:{address:null==a?void 0:a.address,candidateType:null==a?void 0:a.candidateType,foundation:null==a?void 0:a.foundation,networkType:null==a?void 0:a.networkType,isRemote:null==a?void 0:a.isRemote,port:null==a?void 0:a.port,protocol:null==a?void 0:a.protocol,relatedAddress:null==a?void 0:a.relatedAddress,relatedPort:null==a?void 0:a.relatedPort,transportId:null==a?void 0:a.transportId},remote:{address:null==c?void 0:c.address,candidateType:null==c?void 0:c.candidateType,foundation:null==c?void 0:c.foundation,isRemote:null==c?void 0:c.isRemote,port:null==c?void 0:c.port,protocol:null==c?void 0:c.protocol,transportId:null==c?void 0:c.transportId}})}catch(t){this.logger.error("Failed to log transport details",{error:Mc(t),transportId:e.id})}}))}}const Ic=e=>![f.NotFoundError,f.NotAllowedError,f.DeviceIsBusy].includes(e);class Oc{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[];const{clientEventEmitter:t,logLevel:r,onLogMessage:i}=e;this.clientEventEmitter=t,this.logger=new Xe({namespace:"System",logLevel:r,onLogMessage:i}),this.deviceChangeHandler=this.deviceChangeHandler.bind(this),this.listenDevices()}setIsEnableVideoDevicesLock(e){this.isEnableVideoDevicesLock=e}setIsEnableAudioDevicesLock(e){this.isEnableAudioDevicesLock=e}setAvailableVideoDevices(e){this.availableVideoDevices=e}setAvailableAudioDevices(e){this.availableAudioDevices=e}requestMediaDevicesAccess(e={video:!0,audio:!0}){return i(this,void 0,void 0,(function*(){try{return(yield navigator.mediaDevices.getUserMedia(e)).getTracks()}catch(t){if(this.logger.error("getUserMedia()",{error:t,constraints:e}),"NotAllowedError"===t.name)throw new Error(f.NotAllowedError);if("NotReadableError"===t.name)throw new Error(f.DeviceIsBusy);if("NotFoundError"===t.name)throw new Error(f.NotFoundError);throw new Error(f.RequestDevicesUnknownError)}}))}refreshAvailableMediaDevicesList(){return i(this,void 0,void 0,(function*(){const e=yield navigator.mediaDevices.enumerateDevices(),t=[],r=[];e.forEach((e=>{""!==e.deviceId&&("videoinput"===e.kind&&t.push(e),"audioinput"===e.kind&&r.push(e))})),this.setAvailableVideoDevices(t),this.setAvailableAudioDevices(r);const i=({label:e,kind:t})=>({label:e,kind:t});return this.logger.debug("Devices list updated",{videoDevices:t.map(i),audioDevices:r.map(i)}),e}))}detectDevices(){return i(this,void 0,void 0,(function*(){let e=[];if(this.isDevicesDetected)return;try{e=yield this.requestMediaDevicesAccess()}catch(e){if(Ic(e.message))throw e;e.message!==f.DeviceIsBusy&&(yield this.assertHasAccessToMediaDevices({audio:!0}),yield this.assertHasAccessToMediaDevices({video:!0}))}this.isDevicesDetected=!0;const t=yield this.refreshAvailableMediaDevicesList();e.forEach((e=>e.stop()));const r=t.some((e=>"audioinput"===e.kind)),i=t.some((e=>"videoinput"===e.kind));if(!r&&!i)throw new Error(f.NoDevices)}))}deviceChangeHandler(){return i(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(j,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}listenDevices(){navigator.mediaDevices.addEventListener("devicechange",this.deviceChangeHandler)}assertHasAccessToMediaDevices(e={video:!0,audio:!0}){return i(this,void 0,void 0,(function*(){try{(yield this.requestMediaDevicesAccess(e)).forEach((e=>e.stop()))}catch(e){if(Ic(e.message))throw e}}))}}class Ac{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Xe({logLevel:t.logLevel,namespace:"ChannelEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(b,(e=>{this.engine.clientEventEmitter.safeEmit(D,e),this.logger.debug("New channel event",{event:e})})),e.on(w,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(x,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(S,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(M,e),this.logger.debug("Peer left the channel",{peerId:e})})),e.on(P,(e=>{this.engine.clientEventEmitter.safeEmit(L,e),this.logger.info("Notify the channel that activity confirmation is required",e)})),e.on(T,(e=>{this.engine.clientEventEmitter.safeEmit(O,e),this.logger.info("Notify the channel that it has disconnected due to the activity confirmation expiring",e)})),e.on(C,(e=>{this.engine.clientEventEmitter.safeEmit(I,e),this.logger.info("Notify the channel that the activity has been acquired.",e)})),e.on(k,(({peerId:e,appData:t})=>{const r=this.engine.peers.find((t=>t.id===e));r&&r.observer.emit(k,t)}))}}class jc{constructor(e){this.queue=new No;const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Xe({logLevel:t.logLevel,namespace:"MediasoupEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(ae,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(ae,e)})),e.on(oe,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(oe,e)})),e.on(ye,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(ye,e)})),e.on(we,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(we,e)})),e.on(be,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(be,e)})),e.on(Se,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const s=this.engine.peers.find((t=>t.id===e));s&&!s.isMe&&s.observer.safeEmit(Se,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(_e,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(_e,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(_e,e)})),e.on(he,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(he,e)})),e.on(me,(({producerId:e,spatialLayer:t})=>i(this,void 0,void 0,(function*(){yield this.queue.push((()=>i(this,void 0,void 0,(function*(){yield this.handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t})}))),me)})))),e.on(fe,(({peerId:e,producerId:t,spatialLayer:r})=>i(this,void 0,void 0,(function*(){const i=this.engine.peers.find((t=>t.id===e));i&&!i.isMe&&i.observer.safeEmit(fe,{peerId:e,producerId:t,spatialLayer:r})})))),e.on(De,(({reason:e,transportId:t,direction:r,timeout:s})=>i(this,void 0,void 0,(function*(){const i=[this.engine.network.receiveTransport,this.engine.network.sendTransport].find((e=>(null==e?void 0:e.id)===t));i&&"connected"!==i.connectionState&&(this.logger.warn(De,{reason:e,transportId:t,direction:r,timeout:s}),this.engine.clientEventEmitter.emit(F,{direction:r,reason:e}))})))),e.on(le,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!0,r.observer.safeEmit(Q,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(pe,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!1,r.observer.safeEmit(X,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(ue,(({label:e})=>i(this,void 0,void 0,(function*(){const t=this.engine.media.getTrack(e);t&&(t.stopMediaStreamTrack(),this.engine.clientEventEmitter.safeEmit(G,t),this.engine.clientEventEmitter.emit(B,{label:e}),yield this.engine.media.deleteTrack(t))}))))}handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t}){return i(this,void 0,void 0,(function*(){const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e}));if(!r)return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Producer not found"});if(!(r instanceof $a))return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Wrong producer kind"});const i=r.getMaxSpatialLayer();i!==t?(yield r.setMaxSpatialLayer(t),yield this.engine.network.socket.request(fe,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})}))}}var Fc=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Nc=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],Bc=function(e){var t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));for(var s,n,o=Fc.exec(e||""),a={},c=14;c--;)a[Nc[c]]=o[c]||"";return-1!=r&&-1!=i&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){var r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.substr(0,1)&&0!==t.length||i.splice(0,1);"/"==t.substr(t.length-1,1)&&i.splice(i.length-1,1);return i}(0,a.path),a.queryKey=(s=a.query,n={},s.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n),a};var Uc={exports:{}};try{Uc.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){Uc.exports=!1}var qc=Uc.exports,Wc="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Vc(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||qc))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Wc[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function zc(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const $c=setTimeout,Gc=clearTimeout;function Hc(e,t){t.useNativeTimers?(e.setTimeoutFn=$c.bind(Wc),e.clearTimeoutFn=Gc.bind(Wc)):(e.setTimeoutFn=setTimeout.bind(Wc),e.clearTimeoutFn=clearTimeout.bind(Wc))}var Jc=Kc;function Kc(e){if(e)return function(e){for(var t in Kc.prototype)e[t]=Kc.prototype[t];return e}(e)}Kc.prototype.on=Kc.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Kc.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Kc.prototype.off=Kc.prototype.removeListener=Kc.prototype.removeAllListeners=Kc.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},Kc.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},Kc.prototype.emitReserved=Kc.prototype.emit,Kc.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Kc.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Qc=Object.create(null);Qc.open="0",Qc.close="1",Qc.ping="2",Qc.pong="3",Qc.message="4",Qc.upgrade="5",Qc.noop="6";const Xc=Object.create(null);Object.keys(Qc).forEach((e=>{Xc[Qc[e]]=e}));const Yc={type:"error",data:"parser error"},Zc="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),ed="function"==typeof ArrayBuffer,td=({type:e,data:t},r,i)=>{return Zc&&t instanceof Blob?r?i(t):rd(t,i):ed&&(t instanceof ArrayBuffer||(s=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer))?r?i(t):rd(new Blob([t]),i):i(Qc[e]+(t||""));var s},rd=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var id="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",sd="undefined"==typeof Uint8Array?[]:new Uint8Array(256),nd=0;nd<id.length;nd++)sd[id.charCodeAt(nd)]=nd;const od="function"==typeof ArrayBuffer,ad=(e,t)=>{if("string"!=typeof e)return{type:"message",data:dd(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:cd(e.substring(1),t)};return Xc[r]?e.length>1?{type:Xc[r],data:e.substring(1)}:{type:Xc[r]}:Yc},cd=(e,t)=>{if(od){const r=function(e){var t,r,i,s,n,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var d=new ArrayBuffer(o),l=new Uint8Array(d);for(t=0;t<a;t+=4)r=sd[e.charCodeAt(t)],i=sd[e.charCodeAt(t+1)],s=sd[e.charCodeAt(t+2)],n=sd[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|s>>2,l[c++]=(3&s)<<6|63&n;return d}(e);return dd(r,t)}return{base64:!0,data:e}},dd=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,ld=String.fromCharCode(30);class pd extends Jc{constructor(e){super(),this.writable=!1,Hc(this,e),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const r=new Error(e);return r.type="TransportError",r.description=t,super.emit("error",r),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emit("open")}onData(e){const t=ad(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var ud,hd="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),fd={},md=0,gd=0;function vd(e){var t="";do{t=hd[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function yd(){var e=vd(+new Date);return e!==ud?(md=0,ud=e):e+"."+vd(md++)}for(;gd<64;gd++)fd[hd[gd]]=gd;yd.encode=vd,yd.decode=function(e){var t=0;for(gd=0;gd<e.length;gd++)t=64*t+fd[e.charAt(gd)];return t};var bd=yd,wd={encode:function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t},decode:function(e){for(var t={},r=e.split("&"),i=0,s=r.length;i<s;i++){var n=r[i].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}};class _d extends pd{constructor(){super(...arguments),this.polling=!1}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emit("poll")}onData(e){((e,t)=>{const r=e.split(ld),i=[];for(let e=0;e<r.length;e++){const s=ad(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose(),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{td(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(ld))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let r="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=bd()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);const i=wd.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function Sd(){}const kd=null!=new Vc({xdomain:!1}).responseType;class Rd extends Jc{constructor(e,t){super(),Hc(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=zc(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new Vc(e);try{t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=Rd.requestsCount++,Rd.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(e){this.emit("data",e),this.onSuccess()}onError(e){this.emit("error",e),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=Sd,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Rd.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(Rd.requestsCount=0,Rd.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Cd);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Wc?"pagehide":"unload",Cd,!1)}function Cd(){for(let e in Rd.requests)Rd.requests.hasOwnProperty(e)&&Rd.requests[e].abort()}const Pd="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Td=Wc.WebSocket||Wc.MozWebSocket,Ed="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class Dd extends pd{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=Ed?{}:zc(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=Ed?new Td(e,t,r):t?new Td(e,t):new Td(e)}catch(e){return this.emit("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;td(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&Pd((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let r="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=bd()),this.supportsBinary||(e.b64=1);const i=wd.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!Td||"__initialize"in Td&&this.name===Dd.prototype.name)}}const xd={websocket:Dd,polling:class extends _d{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=kd&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new Rd(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e=>{this.onError("xhr post error",e)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e=>{this.onError("xhr poll error",e)})),this.pollXhr=e}}};class Md extends Jc{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=Bc(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=Bc(t.host).host),Hc(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=wd.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=function(e){const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}(this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new xd[e](r)}open(){let e;if(this.opts.rememberUpgrade&&Md.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(e){let t=this.createTransport(e),r=!1;Md.priorWebsocketSuccess=!1;const i=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;Md.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function s(){r||(r=!0,d(),t.close(),t=null)}const n=e=>{const r=new Error("probe error: "+e);r.transport=t.name,s(),this.emitReserved("upgradeError",r)};function o(){n("transport closed")}function a(){n("socket closed")}function c(e){t&&e.name!==t.name&&s()}const d=()=>{t.removeListener("open",i),t.removeListener("error",n),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",i),t.once("error",n),t.once("close",o),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",Md.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.resetPingTimeout(),this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(e){Md.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}Md.protocol=4,Md.protocol;const Ld="function"==typeof ArrayBuffer,Id=Object.prototype.toString,Od="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Id.call(Blob),Ad="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Id.call(File);function jd(e){return Ld&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||Od&&e instanceof Blob||Ad&&e instanceof File}function Fd(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Fd(e[t]))return!0;return!1}if(jd(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Fd(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Fd(e[t]))return!0;return!1}function Nd(e){const t=[],r=e.data,i=e;return i.data=Bd(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Bd(e,t){if(!e)return e;if(jd(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=Bd(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=Bd(e[i],t));return r}return e}function Ud(e,t){return e.data=qd(e.data,t),e.attachments=void 0,e}function qd(e,t){if(!e)return e;if(e&&e._placeholder)return t[e.num];if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=qd(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=qd(e[r],t));return e}var Wd;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Wd||(Wd={}));class Vd extends Jc{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===Wd.BINARY_EVENT||t.type===Wd.BINARY_ACK?(this.reconstructor=new zd(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!jd(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Wd[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Wd.BINARY_EVENT||r.type===Wd.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(t));if(!Vd.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case Wd.CONNECT:return"object"==typeof t;case Wd.DISCONNECT:return void 0===t;case Wd.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case Wd.EVENT:case Wd.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case Wd.ACK:case Wd.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class zd{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Ud(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var $d=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Wd},Encoder:class{encode(e){return e.type!==Wd.EVENT&&e.type!==Wd.ACK||!Fd(e)?[this.encodeAsString(e)]:(e.type=e.type===Wd.EVENT?Wd.BINARY_EVENT:Wd.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==Wd.BINARY_EVENT&&e.type!==Wd.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data)),t}encodeAsBinary(e){const t=Nd(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:Vd});function Gd(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Hd=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Jd extends Jc{constructor(e,t,r){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Gd(e,"open",this.onopen.bind(this)),Gd(e,"packet",this.onpacket.bind(this)),Gd(e,"error",this.onerror.bind(this)),Gd(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Hd.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:Wd.EVENT,data:t,options:{}};r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]&&(this.acks[this.ids]=t.pop(),r.id=this.ids++);const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?this.packet(r):this.sendBuffer.push(r)),this.flags={},this}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:Wd.CONNECT,data:e})})):this.packet({type:Wd.CONNECT,data:this.auth})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Wd.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Wd.EVENT:case Wd.BINARY_EVENT:this.onevent(e);break;case Wd.ACK:case Wd.BINARY_ACK:this.onack(e);break;case Wd.DISCONNECT:this.ondisconnect();break;case Wd.CONNECT_ERROR:const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e)}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Wd.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e){this.id=e,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>this.packet(e))),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Wd.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}}var Kd=Qd;function Qd(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Qd.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Qd.prototype.reset=function(){this.attempts=0},Qd.prototype.setMin=function(e){this.ms=e},Qd.prototype.setMax=function(e){this.max=e},Qd.prototype.setJitter=function(e){this.jitter=e};class Xd extends Jc{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Hc(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Kd({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||$d;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Md(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Gd(t,"open",(function(){r.onopen(),e&&e()})),s=Gd(t,"error",(t=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",t),e?e(t):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&i();const r=this.setTimeoutFn((()=>{i(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Gd(e,"ping",this.onping.bind(this)),Gd(e,"data",this.ondata.bind(this)),Gd(e,"error",this.onerror.bind(this)),Gd(e,"close",this.onclose.bind(this)),Gd(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){this.decoder.add(e)}ondecoded(e){this.emitReserved("packet",e)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r||(r=new Jd(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Yd={};function Zd(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=Bc(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,o=Yd[s]&&n in Yd[s].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Xd(i,t):(Yd[s]||(Yd[s]=new Xd(i,t)),a=Yd[s]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}class el{constructor(e){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new o,this.knownDisconnectReasonsCodes={"io server disconnect":"server.disconnect","io client disconnect":"client.disconnect","ping timeout":"ping.timeout","transport close":"transport.close","transport error":"transport.error"},this.logger=new Xe({namespace:"Socket",logLevel:e.logLevel,onLogMessage:e.onLogMessage})}get observer(){return this._observer}get id(){var e;return null===(e=this.connection)||void 0===e?void 0:e.id}connect(e,t){const r=Zd(e,{transports:["polling","websocket"],upgrade:!0,rememberUpgrade:!1,auth:{token:t}});this.connection=r,this.serverUrl=e,r.on("connect",(()=>{const e=this.reconnectingAttempt?ne.Reconnected:ne.Connected;this.isConnected=!0,this.setReconnectingAttempt(0),this.logger.debug("connection.on(`connect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:e})})),r.on("connect_error",(e=>{this.connectionError=e,this.logger.error("connection.on(`connect_error`)",{error:e}),this.observer.safeEmit("state",{state:ne.Error,error:e})})),r.on("disconnect",(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn("connection.on(`disconnect`)",{reason:e}),this.observer.safeEmit("state",{state:ne.Disconnected,code:this.getDisconnectReasonCode(e)})})),r.io.on("reconnect_attempt",(e=>{this.setReconnectingAttempt(e),this.logger.warn("connection.on(`reconnect_attempt`)",{attempt:e}),this.observer.safeEmit("state",{state:ne.Reconnecting})})),r.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:ne.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.setReconnectingAttempt(0))}request(e,t={}){return new Promise(((r,i)=>{if(!this.connection)return this.logger.error("request()",{type:e,data:t}),void i(new Error("Socket request: Socket connection is not initialized"));this.connection.emit(e,t,(s=>{s.error?(this.logger.error("request()",{event:e,payload:t,response:s}),i(s.error)):r(s)}))}))}getDisconnectReasonCode(e){const t=String(e).toLowerCase();return this.knownDisconnectReasonsCodes[t]||t}setReconnectingAttempt(e){this.reconnectingAttempt=e}}var tl={exports:{}},rl=function(e,t){return function(){for(var r=new Array(arguments.length),i=0;i<r.length;i++)r[i]=arguments[i];return e.apply(t,r)}},il=rl,sl=Object.prototype.toString;function nl(e){return"[object Array]"===sl.call(e)}function ol(e){return void 0===e}function al(e){return null!==e&&"object"==typeof e}function cl(e){if("[object Object]"!==sl.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function dl(e){return"[object Function]"===sl.call(e)}function ll(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),nl(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}var pl={isArray:nl,isArrayBuffer:function(e){return"[object ArrayBuffer]"===sl.call(e)},isBuffer:function(e){return null!==e&&!ol(e)&&null!==e.constructor&&!ol(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:al,isPlainObject:cl,isUndefined:ol,isDate:function(e){return"[object Date]"===sl.call(e)},isFile:function(e){return"[object File]"===sl.call(e)},isBlob:function(e){return"[object Blob]"===sl.call(e)},isFunction:dl,isStream:function(e){return al(e)&&dl(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:ll,merge:function e(){var t={};function r(r,i){cl(t[i])&&cl(r)?t[i]=e(t[i],r):cl(r)?t[i]=e({},r):nl(r)?t[i]=r.slice():t[i]=r}for(var i=0,s=arguments.length;i<s;i++)ll(arguments[i],r);return t},extend:function(e,t,r){return ll(t,(function(t,i){e[i]=r&&"function"==typeof t?il(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},ul=pl;function hl(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var fl=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(ul.isURLSearchParams(t))i=t.toString();else{var s=[];ul.forEach(t,(function(e,t){null!=e&&(ul.isArray(e)?t+="[]":e=[e],ul.forEach(e,(function(e){ul.isDate(e)?e=e.toISOString():ul.isObject(e)&&(e=JSON.stringify(e)),s.push(hl(t)+"="+hl(e))})))})),i=s.join("&")}if(i){var n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},ml=pl;function gl(){this.handlers=[]}gl.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},gl.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},gl.prototype.forEach=function(e){ml.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var vl=gl,yl=pl,bl=function(e,t,r,i,s){return e.config=t,r&&(e.code=r),e.request=i,e.response=s,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e},wl=bl,_l=function(e,t,r,i,s){var n=new Error(e);return wl(n,t,r,i,s)},Sl=_l,kl=pl,Rl=kl.isStandardBrowserEnv()?{write:function(e,t,r,i,s,n){var o=[];o.push(e+"="+encodeURIComponent(t)),kl.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),kl.isString(i)&&o.push("path="+i),kl.isString(s)&&o.push("domain="+s),!0===n&&o.push("secure"),document.cookie=o.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},Cl=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},Pl=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},Tl=pl,El=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Dl=pl,xl=Dl.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function i(e){var i=e;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=i(window.location.href),function(t){var r=Dl.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},Ml=pl,Ll=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(Sl("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},Il=Rl,Ol=fl,Al=function(e,t){return e&&!Cl(t)?Pl(e,t):t},jl=function(e){var t,r,i,s={};return e?(Tl.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=Tl.trim(e.substr(0,i)).toLowerCase(),r=Tl.trim(e.substr(i+1)),t){if(s[t]&&El.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s},Fl=xl,Nl=_l,Bl=function(e){return new Promise((function(t,r){var i=e.data,s=e.headers,n=e.responseType;Ml.isFormData(i)&&delete s["Content-Type"];var o=new XMLHttpRequest;if(e.auth){var a=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";s.Authorization="Basic "+btoa(a+":"+c)}var d=Al(e.baseURL,e.url);function l(){if(o){var i="getAllResponseHeaders"in o?jl(o.getAllResponseHeaders()):null,s={data:n&&"text"!==n&&"json"!==n?o.response:o.responseText,status:o.status,statusText:o.statusText,headers:i,config:e,request:o};Ll(t,r,s),o=null}}if(o.open(e.method.toUpperCase(),Ol(d,e.params,e.paramsSerializer),!0),o.timeout=e.timeout,"onloadend"in o?o.onloadend=l:o.onreadystatechange=function(){o&&4===o.readyState&&(0!==o.status||o.responseURL&&0===o.responseURL.indexOf("file:"))&&setTimeout(l)},o.onabort=function(){o&&(r(Nl("Request aborted",e,"ECONNABORTED",o)),o=null)},o.onerror=function(){r(Nl("Network Error",e,null,o)),o=null},o.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Nl(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",o)),o=null},Ml.isStandardBrowserEnv()){var p=(e.withCredentials||Fl(d))&&e.xsrfCookieName?Il.read(e.xsrfCookieName):void 0;p&&(s[e.xsrfHeaderName]=p)}"setRequestHeader"in o&&Ml.forEach(s,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete s[t]:o.setRequestHeader(t,e)})),Ml.isUndefined(e.withCredentials)||(o.withCredentials=!!e.withCredentials),n&&"json"!==n&&(o.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&o.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&o.upload&&o.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){o&&(o.abort(),r(e),o=null)})),i||(i=null),o.send(i)}))},Ul=pl,ql=function(e,t){yl.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Wl=bl,Vl={"Content-Type":"application/x-www-form-urlencoded"};function zl(e,t){!Ul.isUndefined(e)&&Ul.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var $l,Gl={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&($l=Bl),$l),transformRequest:[function(e,t){return ql(t,"Accept"),ql(t,"Content-Type"),Ul.isFormData(e)||Ul.isArrayBuffer(e)||Ul.isBuffer(e)||Ul.isStream(e)||Ul.isFile(e)||Ul.isBlob(e)?e:Ul.isArrayBufferView(e)?e.buffer:Ul.isURLSearchParams(e)?(zl(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Ul.isObject(e)||t&&"application/json"===t["Content-Type"]?(zl(t,"application/json"),function(e,t,r){if(Ul.isString(e))try{return(t||JSON.parse)(e),Ul.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,s=!r&&"json"===this.responseType;if(s||i&&Ul.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw Wl(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};Gl.headers={common:{Accept:"application/json, text/plain, */*"}},Ul.forEach(["delete","get","head"],(function(e){Gl.headers[e]={}})),Ul.forEach(["post","put","patch"],(function(e){Gl.headers[e]=Ul.merge(Vl)}));var Hl=Gl,Jl=pl,Kl=Hl,Ql=function(e){return!(!e||!e.__CANCEL__)},Xl=pl,Yl=function(e,t,r){var i=this||Kl;return Jl.forEach(r,(function(r){e=r.call(i,e,t)})),e},Zl=Ql,ep=Hl;function tp(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var rp=pl,ip=function(e,t){t=t||{};var r={},i=["url","method","data"],s=["headers","auth","proxy","params"],n=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],o=["validateStatus"];function a(e,t){return rp.isPlainObject(e)&&rp.isPlainObject(t)?rp.merge(e,t):rp.isPlainObject(t)?rp.merge({},t):rp.isArray(t)?t.slice():t}function c(i){rp.isUndefined(t[i])?rp.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(e[i],t[i])}rp.forEach(i,(function(e){rp.isUndefined(t[e])||(r[e]=a(void 0,t[e]))})),rp.forEach(s,c),rp.forEach(n,(function(i){rp.isUndefined(t[i])?rp.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(void 0,t[i])})),rp.forEach(o,(function(i){i in t?r[i]=a(e[i],t[i]):i in e&&(r[i]=a(void 0,e[i]))}));var d=i.concat(s).concat(n).concat(o),l=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return rp.forEach(l,c),r},sp={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},np={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){np[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var op={},ap=sp.version.split(".");function cp(e,t){for(var r=t?t.split("."):ap,i=e.split("."),s=0;s<3;s++){if(r[s]>i[s])return!0;if(r[s]<i[s])return!1}return!1}np.transitional=function(e,t,r){var i=t&&cp(t);function s(e,t){return"[Axios v"+sp.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,n,o){if(!1===e)throw new Error(s(n," has been removed in "+t));return i&&!op[n]&&(op[n]=!0,console.warn(s(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,o)}};var dp={isOlderVersion:cp,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),s=i.length;s-- >0;){var n=i[s],o=t[n];if(o){var a=e[n],c=void 0===a||o(a,n,e);if(!0!==c)throw new TypeError("option "+n+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+n)}},validators:np},lp=pl,pp=fl,up=vl,hp=function(e){return tp(e),e.headers=e.headers||{},e.data=Yl.call(e,e.data,e.headers,e.transformRequest),e.headers=Xl.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Xl.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||ep.adapter)(e).then((function(t){return tp(e),t.data=Yl.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return Zl(t)||(tp(e),t&&t.response&&(t.response.data=Yl.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},fp=ip,mp=dp,gp=mp.validators;function vp(e){this.defaults=e,this.interceptors={request:new up,response:new up}}vp.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=fp(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&mp.assertOptions(t,{silentJSONParsing:gp.transitional(gp.boolean,"1.0.0"),forcedJSONParsing:gp.transitional(gp.boolean,"1.0.0"),clarifyTimeoutError:gp.transitional(gp.boolean,"1.0.0")},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var s,n=[];if(this.interceptors.response.forEach((function(e){n.push(e.fulfilled,e.rejected)})),!i){var o=[hp,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(n),s=Promise.resolve(e);o.length;)s=s.then(o.shift(),o.shift());return s}for(var a=e;r.length;){var c=r.shift(),d=r.shift();try{a=c(a)}catch(e){d(e);break}}try{s=hp(a)}catch(e){return Promise.reject(e)}for(;n.length;)s=s.then(n.shift(),n.shift());return s},vp.prototype.getUri=function(e){return e=fp(this.defaults,e),pp(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},lp.forEach(["delete","get","head","options"],(function(e){vp.prototype[e]=function(t,r){return this.request(fp(r||{},{method:e,url:t,data:(r||{}).data}))}})),lp.forEach(["post","put","patch"],(function(e){vp.prototype[e]=function(t,r,i){return this.request(fp(i||{},{method:e,url:t,data:r}))}}));var yp=vp;function bp(e){this.message=e}bp.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},bp.prototype.__CANCEL__=!0;var wp=bp,_p=wp;function Sp(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new _p(e),t(r.reason))}))}Sp.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Sp.source=function(){var e,t=new Sp((function(t){e=t}));return{token:t,cancel:e}};var kp=Sp,Rp=pl,Cp=rl,Pp=yp,Tp=ip;function Ep(e){var t=new Pp(e),r=Cp(Pp.prototype.request,t);return Rp.extend(r,Pp.prototype,t),Rp.extend(r,t),r}var Dp=Ep(Hl);Dp.Axios=Pp,Dp.create=function(e){return Ep(Tp(Dp.defaults,e))},Dp.Cancel=wp,Dp.CancelToken=kp,Dp.isCancel=Ql,Dp.all=function(e){return Promise.all(e)},Dp.spread=function(e){return function(t){return e.apply(null,t)}},Dp.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},tl.exports=Dp,tl.exports.default=Dp;var xp=tl.exports,Mp="undefined"!=typeof Symbol&&Symbol,Lp=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var s=Object.getOwnPropertyDescriptor(e,t);if(42!==s.value||!0!==s.enumerable)return!1}return!0},Ip="Function.prototype.bind called on incompatible ",Op=Array.prototype.slice,Ap=Object.prototype.toString,jp=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Ap.call(t))throw new TypeError(Ip+t);for(var r,i=Op.call(arguments,1),s=function(){if(this instanceof r){var s=t.apply(this,i.concat(Op.call(arguments)));return Object(s)===s?s:this}return t.apply(e,i.concat(Op.call(arguments)))},n=Math.max(0,t.length-i.length),o=[],a=0;a<n;a++)o.push("$"+a);if(r=Function("binder","return function ("+o.join(",")+"){ return binder.apply(this,arguments); }")(s),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Fp=Function.prototype.bind||jp,Np=Fp.call(Function.call,Object.prototype.hasOwnProperty),Bp=SyntaxError,Up=Function,qp=TypeError,Wp=function(e){try{return Up('"use strict"; return ('+e+").constructor;")()}catch(e){}},Vp=Object.getOwnPropertyDescriptor;if(Vp)try{Vp({},"")}catch(Xa){Vp=null}var zp=function(){throw new qp},$p=Vp?function(){try{return zp}catch(e){try{return Vp(arguments,"callee").get}catch(e){return zp}}}():zp,Gp="function"==typeof Mp&&"function"==typeof Symbol&&"symbol"==typeof Mp("foo")&&"symbol"==typeof Symbol("bar")&&Lp(),Hp=Object.getPrototypeOf||function(e){return e.__proto__},Jp={},Kp="undefined"==typeof Uint8Array?undefined:Hp(Uint8Array),Qp={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":Gp?Hp([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":Jp,"%AsyncGenerator%":Jp,"%AsyncGeneratorFunction%":Jp,"%AsyncIteratorPrototype%":Jp,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":Up,"%GeneratorFunction%":Jp,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Gp?Hp(Hp([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&Gp?Hp((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&Gp?Hp((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Gp?Hp(""[Symbol.iterator]()):undefined,"%Symbol%":Gp?Symbol:undefined,"%SyntaxError%":Bp,"%ThrowTypeError%":$p,"%TypedArray%":Kp,"%TypeError%":qp,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet},Xp=function e(t){var r;if("%AsyncFunction%"===t)r=Wp("async function () {}");else if("%GeneratorFunction%"===t)r=Wp("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Wp("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var s=e("%AsyncGenerator%");s&&(r=Hp(s.prototype))}return Qp[t]=r,r},Yp={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Zp=Fp,eu=Np,tu=Zp.call(Function.call,Array.prototype.concat),ru=Zp.call(Function.apply,Array.prototype.splice),iu=Zp.call(Function.call,String.prototype.replace),su=Zp.call(Function.call,String.prototype.slice),nu=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,ou=/\\(\\)?/g,au=function(e){var t=su(e,0,1),r=su(e,-1);if("%"===t&&"%"!==r)throw new Bp("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new Bp("invalid intrinsic syntax, expected opening `%`");var i=[];return iu(e,nu,(function(e,t,r,s){i[i.length]=r?iu(s,ou,"$1"):t||e})),i},cu=function(e,t){var r,i=e;if(eu(Yp,i)&&(i="%"+(r=Yp[i])[0]+"%"),eu(Qp,i)){var s=Qp[i];if(s===Jp&&(s=Xp(i)),void 0===s&&!t)throw new qp("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:s}}throw new Bp("intrinsic "+e+" does not exist!")},du=function(e,t){if("string"!=typeof e||0===e.length)throw new qp("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new qp('"allowMissing" argument must be a boolean');var r=au(e),i=r.length>0?r[0]:"",s=cu("%"+i+"%",t),n=s.name,o=s.value,a=!1,c=s.alias;c&&(i=c[0],ru(r,tu([0,1],c)));for(var d=1,l=!0;d<r.length;d+=1){var p=r[d],u=su(p,0,1),h=su(p,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new Bp("property names with quotes must have matching quotes");if("constructor"!==p&&l||(a=!0),eu(Qp,n="%"+(i+="."+p)+"%"))o=Qp[n];else if(null!=o){if(!(p in o)){if(!t)throw new qp("base intrinsic for "+e+" exists, but the property is not available.");return}if(Vp&&d+1>=r.length){var f=Vp(o,p);o=(l=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:o[p]}else l=eu(o,p),o=o[p];l&&!a&&(Qp[n]=o)}}return o},lu={exports:{}};!function(e){var t=Fp,r=du,i=r("%Function.prototype.apply%"),s=r("%Function.prototype.call%"),n=r("%Reflect.apply%",!0)||t.call(s,i),o=r("%Object.getOwnPropertyDescriptor%",!0),a=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(a)try{a({},"a",{value:1})}catch(e){a=null}e.exports=function(e){var r=n(t,s,arguments);if(o&&a){var i=o(r,"length");i.configurable&&a(r,"length",{value:1+c(0,e.length-(arguments.length-1))})}return r};var d=function(){return n(t,i,arguments)};a?a(e.exports,"apply",{value:d}):e.exports.apply=d}(lu);var pu=du,uu=lu.exports,hu=uu(pu("String.prototype.indexOf")),fu=d(Object.freeze({__proto__:null,default:{}})),mu="function"==typeof Map&&Map.prototype,gu=Object.getOwnPropertyDescriptor&&mu?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,vu=mu&&gu&&"function"==typeof gu.get?gu.get:null,yu=mu&&Map.prototype.forEach,bu="function"==typeof Set&&Set.prototype,wu=Object.getOwnPropertyDescriptor&&bu?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,_u=bu&&wu&&"function"==typeof wu.get?wu.get:null,Su=bu&&Set.prototype.forEach,ku="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,Ru="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,Cu="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,Pu=Boolean.prototype.valueOf,Tu=Object.prototype.toString,Eu=Function.prototype.toString,Du=String.prototype.match,xu="function"==typeof BigInt?BigInt.prototype.valueOf:null,Mu=Object.getOwnPropertySymbols,Lu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Iu="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Ou=Object.prototype.propertyIsEnumerable,Au=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),ju=fu.custom,Fu=ju&&Wu(ju)?ju:null,Nu="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function Bu(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function Uu(e){return String(e).replace(/"/g,""")}function qu(e){return!("[object Array]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}function Wu(e){if(Iu)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!Lu)return!1;try{return Lu.call(e),!0}catch(e){}return!1}var Vu=Object.prototype.hasOwnProperty||function(e){return e in this};function zu(e,t){return Vu.call(e,t)}function $u(e){return Tu.call(e)}function Gu(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,i=e.length;r<i;r++)if(e[r]===t)return r;return-1}function Hu(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return Hu(e.slice(0,t.maxStringLength),t)+i}return Bu(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,Ju),"single",t)}function Ju(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function Ku(e){return"Object("+e+")"}function Qu(e){return e+" { ? }"}function Xu(e,t,r,i){return e+" ("+t+") {"+(i?Yu(r,i):r.join(", "))+"}"}function Yu(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function Zu(e,t){var r=qu(e),i=[];if(r){i.length=e.length;for(var s=0;s<e.length;s++)i[s]=zu(e,s)?t(e[s],e):""}var n,o="function"==typeof Mu?Mu(e):[];if(Iu){n={};for(var a=0;a<o.length;a++)n["$"+o[a]]=o[a]}for(var c in e)zu(e,c)&&(r&&String(Number(c))===c&&c<e.length||Iu&&n["$"+c]instanceof Symbol||(/[^\w$]/.test(c)?i.push(t(c,e)+": "+t(e[c],e)):i.push(c+": "+t(e[c],e))));if("function"==typeof Mu)for(var d=0;d<o.length;d++)Ou.call(e,o[d])&&i.push("["+t(o[d])+"]: "+t(e[o[d]],e));return i}var eh,th,rh,ih,sh,nh,oh,ah=du,ch=function(e,t){var r=pu(e,!!t);return"function"==typeof r&&hu(e,".prototype.")>-1?uu(r):r},dh=function e(t,r,i,s){var n=r||{};if(zu(n,"quoteStyle")&&"single"!==n.quoteStyle&&"double"!==n.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(zu(n,"maxStringLength")&&("number"==typeof n.maxStringLength?n.maxStringLength<0&&n.maxStringLength!==1/0:null!==n.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=!zu(n,"customInspect")||n.customInspect;if("boolean"!=typeof o&&"symbol"!==o)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(zu(n,"indent")&&null!==n.indent&&"\t"!==n.indent&&!(parseInt(n.indent,10)===n.indent&&n.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return Hu(t,n);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var a=void 0===n.depth?5:n.depth;if(void 0===i&&(i=0),i>=a&&a>0&&"object"==typeof t)return qu(t)?"[Array]":"[Object]";var c=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}(n,i);if(void 0===s)s=[];else if(Gu(s,t)>=0)return"[Circular]";function d(t,r,o){if(r&&(s=s.slice()).push(r),o){var a={depth:n.depth};return zu(n,"quoteStyle")&&(a.quoteStyle=n.quoteStyle),e(t,a,i+1,s)}return e(t,n,i+1,s)}if("function"==typeof t){var l=function(e){if(e.name)return e.name;var t=Du.call(Eu.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),p=Zu(t,d);return"[Function"+(l?": "+l:" (anonymous)")+"]"+(p.length>0?" { "+p.join(", ")+" }":"")}if(Wu(t)){var u=Iu?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):Lu.call(t);return"object"!=typeof t||Iu?u:Ku(u)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var h="<"+String(t.nodeName).toLowerCase(),f=t.attributes||[],m=0;m<f.length;m++)h+=" "+f[m].name+"="+Bu(Uu(f[m].value),"double",n);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(qu(t)){if(0===t.length)return"[]";var g=Zu(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(Gu(e[t],"\n")>=0)return!1;return!0}(g)?"["+Yu(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t)){var v=Zu(t,d);return 0===v.length?"["+String(t)+"]":"{ ["+String(t)+"] "+v.join(", ")+" }"}if("object"==typeof t&&o){if(Fu&&"function"==typeof t[Fu])return t[Fu]();if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!vu||!e||"object"!=typeof e)return!1;try{vu.call(e);try{_u.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var y=[];return yu.call(t,(function(e,r){y.push(d(r,t,!0)+" => "+d(e,t))})),Xu("Map",vu.call(t),y,c)}if(function(e){if(!_u||!e||"object"!=typeof e)return!1;try{_u.call(e);try{vu.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return Su.call(t,(function(e){b.push(d(e,t))})),Xu("Set",_u.call(t),b,c)}if(function(e){if(!ku||!e||"object"!=typeof e)return!1;try{ku.call(e,ku);try{Ru.call(e,Ru)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return Qu("WeakMap");if(function(e){if(!Ru||!e||"object"!=typeof e)return!1;try{Ru.call(e,Ru);try{ku.call(e,ku)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return Qu("WeakSet");if(function(e){if(!Cu||!e||"object"!=typeof e)return!1;try{return Cu.call(e),!0}catch(e){}return!1}(t))return Qu("WeakRef");if(function(e){return!("[object Number]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t))return Ku(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!xu)return!1;try{return xu.call(e),!0}catch(e){}return!1}(t))return Ku(d(xu.call(t)));if(function(e){return!("[object Boolean]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t))return Ku(Pu.call(t));if(function(e){return!("[object String]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t))return Ku(d(String(t)));if(!function(e){return!("[object Date]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t)&&!function(e){return!("[object RegExp]"!==$u(e)||Nu&&"object"==typeof e&&Nu in e)}(t)){var w=Zu(t,d),_=Au?Au(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",k=!_&&Nu&&Object(t)===t&&Nu in t?$u(t).slice(8,-1):S?"Object":"",R=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||S?"["+[].concat(k||[],S||[]).join(": ")+"] ":"");return 0===w.length?R+"{}":c?R+"{"+Yu(w,c)+"}":R+"{ "+w.join(", ")+" }"}return String(t)},lh=ah("%TypeError%"),ph=ah("%WeakMap%",!0),uh=ah("%Map%",!0),hh=ch("WeakMap.prototype.get",!0),fh=ch("WeakMap.prototype.set",!0),mh=ch("WeakMap.prototype.has",!0),gh=ch("Map.prototype.get",!0),vh=ch("Map.prototype.set",!0),yh=ch("Map.prototype.has",!0),bh=function(e,t){for(var r,i=e;null!==(r=i.next);i=r)if(r.key===t)return i.next=r.next,r.next=e.next,e.next=r,r},wh=String.prototype.replace,_h=/%20/g,Sh="RFC3986",kh={default:Sh,formatters:{RFC1738:function(e){return wh.call(e,_h,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:Sh},Rh=kh,Ch=Object.prototype.hasOwnProperty,Ph=Array.isArray,Th=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),Eh=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},Dh={arrayToObject:Eh,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],i=0;i<t.length;++i)for(var s=t[i],n=s.obj[s.prop],o=Object.keys(n),a=0;a<o.length;++a){var c=o[a],d=n[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:n,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(Ph(r)){for(var i=[],s=0;s<r.length;++s)void 0!==r[s]&&i.push(r[s]);t.obj[t.prop]=i}}}(t),e},decode:function(e,t,r){var i=e.replace(/\+/g," ");if("iso-8859-1"===r)return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch(e){return i}},encode:function(e,t,r,i,s){if(0===e.length)return e;var n=e;if("symbol"==typeof e?n=Symbol.prototype.toString.call(e):"string"!=typeof e&&(n=String(e)),"iso-8859-1"===r)return escape(n).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var o="",a=0;a<n.length;++a){var c=n.charCodeAt(a);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||s===Rh.RFC1738&&(40===c||41===c)?o+=n.charAt(a):c<128?o+=Th[c]:c<2048?o+=Th[192|c>>6]+Th[128|63&c]:c<55296||c>=57344?o+=Th[224|c>>12]+Th[128|c>>6&63]+Th[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&n.charCodeAt(a)),o+=Th[240|c>>18]+Th[128|c>>12&63]+Th[128|c>>6&63]+Th[128|63&c])}return o},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(Ph(e)){for(var r=[],i=0;i<e.length;i+=1)r.push(t(e[i]));return r}return t(e)},merge:function e(t,r,i){if(!r)return t;if("object"!=typeof r){if(Ph(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!Ch.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var s=t;return Ph(t)&&!Ph(r)&&(s=Eh(t,i)),Ph(t)&&Ph(r)?(r.forEach((function(r,s){if(Ch.call(t,s)){var n=t[s];n&&"object"==typeof n&&r&&"object"==typeof r?t[s]=e(n,r,i):t.push(r)}else t[s]=r})),t):Object.keys(r).reduce((function(t,s){var n=r[s];return Ch.call(t,s)?t[s]=e(t[s],n,i):t[s]=n,t}),s)}},xh=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new lh("Side channel does not contain "+dh(e))},get:function(i){if(ph&&i&&("object"==typeof i||"function"==typeof i)){if(e)return hh(e,i)}else if(uh){if(t)return gh(t,i)}else if(r)return function(e,t){var r=bh(e,t);return r&&r.value}(r,i)},has:function(i){if(ph&&i&&("object"==typeof i||"function"==typeof i)){if(e)return mh(e,i)}else if(uh){if(t)return yh(t,i)}else if(r)return function(e,t){return!!bh(e,t)}(r,i);return!1},set:function(i,s){ph&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new ph),fh(e,i,s)):uh?(t||(t=new uh),vh(t,i,s)):(r||(r={key:{},next:null}),function(e,t,r){var i=bh(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,s))}};return i},Mh=Dh,Lh=kh,Ih=Object.prototype.hasOwnProperty,Oh={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Ah=Array.isArray,jh=String.prototype.split,Fh=Array.prototype.push,Nh=function(e,t){Fh.apply(e,Ah(t)?t:[t])},Bh=Date.prototype.toISOString,Uh=Lh.default,qh={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:Mh.encode,encodeValuesOnly:!1,format:Uh,formatter:Lh.formatters[Uh],indices:!1,serializeDate:function(e){return Bh.call(e)},skipNulls:!1,strictNullHandling:!1},Wh={},Vh=function e(t,r,i,s,n,o,a,c,d,l,p,u,h,f,m,g){for(var v=t,y=g,b=0,w=!1;void 0!==(y=y.get(Wh))&&!w;){var _=y.get(t);if(b+=1,void 0!==_){if(_===b)throw new RangeError("Cyclic object value");w=!0}void 0===y.get(Wh)&&(b=0)}if("function"==typeof c?v=c(r,v):v instanceof Date?v=p(v):"comma"===i&&Ah(v)&&(v=Mh.maybeMap(v,(function(e){return e instanceof Date?p(e):e}))),null===v){if(n)return a&&!f?a(r,qh.encoder,m,"key",u):r;v=""}if(function(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e||"symbol"==typeof e||"bigint"==typeof e}(v)||Mh.isBuffer(v)){if(a){var S=f?r:a(r,qh.encoder,m,"key",u);if("comma"===i&&f){for(var k=jh.call(String(v),","),R="",C=0;C<k.length;++C)R+=(0===C?"":",")+h(a(k[C],qh.encoder,m,"value",u));return[h(S)+(s&&Ah(v)&&1===k.length?"[]":"")+"="+R]}return[h(S)+"="+h(a(v,qh.encoder,m,"value",u))]}return[h(r)+"="+h(String(v))]}var P,T=[];if(void 0===v)return T;if("comma"===i&&Ah(v))P=[{value:v.length>0?v.join(",")||null:void 0}];else if(Ah(c))P=c;else{var E=Object.keys(v);P=d?E.sort(d):E}for(var D=s&&Ah(v)&&1===v.length?r+"[]":r,x=0;x<P.length;++x){var M=P[x],L="object"==typeof M&&void 0!==M.value?M.value:v[M];if(!o||null!==L){var I=Ah(v)?"function"==typeof i?i(D,M):D:D+(l?"."+M:"["+M+"]");g.set(t,b);var O=xh();O.set(Wh,g),Nh(T,e(L,I,i,s,n,o,a,c,d,l,p,u,h,f,m,O))}}return T},zh=Dh,$h=Object.prototype.hasOwnProperty,Gh=Array.isArray,Hh={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:zh.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},Jh=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Kh=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Qh=function(e,t,r,i){if(e){var s=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,n=/(\[[^[\]]*])/g,o=r.depth>0&&/(\[[^[\]]*])/.exec(s),a=o?s.slice(0,o.index):s,c=[];if(a){if(!r.plainObjects&&$h.call(Object.prototype,a)&&!r.allowPrototypes)return;c.push(a)}for(var d=0;r.depth>0&&null!==(o=n.exec(s))&&d<r.depth;){if(d+=1,!r.plainObjects&&$h.call(Object.prototype,o[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(o[1])}return o&&c.push("["+s.slice(o.index)+"]"),function(e,t,r,i){for(var s=i?t:Kh(t,r),n=e.length-1;n>=0;--n){var o,a=e[n];if("[]"===a&&r.parseArrays)o=[].concat(s);else{o=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,d=parseInt(c,10);r.parseArrays||""!==c?!isNaN(d)&&a!==c&&String(d)===c&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(o=[])[d]=s:"__proto__"!==c&&(o[c]=s):o={0:s}}s=o}return s}(c,t,r,i)}},Xh=function(e,t){var r,i=e,s=function(e){if(!e)return qh;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||qh.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=Lh.default;if(void 0!==e.format){if(!Ih.call(Lh.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=Lh.formatters[r],s=qh.filter;return("function"==typeof e.filter||Ah(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:qh.addQueryPrefix,allowDots:void 0===e.allowDots?qh.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:qh.charsetSentinel,delimiter:void 0===e.delimiter?qh.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:qh.encode,encoder:"function"==typeof e.encoder?e.encoder:qh.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:qh.encodeValuesOnly,filter:s,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:qh.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:qh.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:qh.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):Ah(s.filter)&&(r=s.filter);var n,o=[];if("object"!=typeof i||null===i)return"";n=t&&t.arrayFormat in Oh?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var a=Oh[n];if(t&&"commaRoundTrip"in t&&"boolean"!=typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var c="comma"===a&&t&&t.commaRoundTrip;r||(r=Object.keys(i)),s.sort&&r.sort(s.sort);for(var d=xh(),l=0;l<r.length;++l){var p=r[l];s.skipNulls&&null===i[p]||Nh(o,Vh(i[p],p,a,c,s.strictNullHandling,s.skipNulls,s.encode?s.encoder:null,s.filter,s.sort,s.allowDots,s.serializeDate,s.format,s.formatter,s.encodeValuesOnly,s.charset,d))}var u=o.join(s.delimiter),h=!0===s.addQueryPrefix?"?":"";return s.charsetSentinel&&("iso-8859-1"===s.charset?h+="utf8=%26%2310003%3B&":h+="utf8=%E2%9C%93&"),u.length>0?h+u:""},Yh=function(e,t){var r=function(e){if(!e)return Hh;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?Hh.charset:e.charset;return{allowDots:void 0===e.allowDots?Hh.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:Hh.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:Hh.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:Hh.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Hh.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:Hh.comma,decoder:"function"==typeof e.decoder?e.decoder:Hh.decoder,delimiter:"string"==typeof e.delimiter||zh.isRegExp(e.delimiter)?e.delimiter:Hh.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:Hh.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:Hh.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:Hh.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:Hh.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Hh.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,n=t.parameterLimit===1/0?void 0:t.parameterLimit,o=s.split(t.delimiter,n),a=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r<o.length;++r)0===o[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===o[r]?c="utf-8":"utf8=%26%2310003%3B"===o[r]&&(c="iso-8859-1"),a=r,r=o.length);for(r=0;r<o.length;++r)if(r!==a){var d,l,p=o[r],u=p.indexOf("]="),h=-1===u?p.indexOf("="):u+1;-1===h?(d=t.decoder(p,Hh.decoder,c,"key"),l=t.strictNullHandling?null:""):(d=t.decoder(p.slice(0,h),Hh.decoder,c,"key"),l=zh.maybeMap(Kh(p.slice(h+1),t),(function(e){return t.decoder(e,Hh.decoder,c,"value")}))),l&&t.interpretNumericEntities&&"iso-8859-1"===c&&(l=Jh(l)),p.indexOf("[]=")>-1&&(l=Gh(l)?[l]:l),$h.call(i,d)?i[d]=zh.combine(i[d],l):i[d]=l}return i}(e,r):e,s=r.plainObjects?Object.create(null):{},n=Object.keys(i),o=0;o<n.length;++o){var a=n[o],c=Qh(a,i[a],r,"string"==typeof e);s=zh.merge(s,c,r)}return!0===r.allowSparse?s:zh.compact(s)},Zh={formats:kh,parse:Yh,stringify:Xh};class ef{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=xp.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>Zh.stringify(e)}),this.customNode=i}getNode(e){return i(this,void 0,void 0,(function*(){if(this.customNode)return this.customNode;const{data:t}=yield this.api.get("/nodes/best",{params:e});return t}))}}class tf extends v{constructor(e,t){super(e,null!=t?t:"invalid_payload")}}!function(e){e.DominantSpeaker="dominant-speaker",e.PeersVolumes="peers-volumes",e.Silence="silence"}(eh||(eh={}));class rf{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Xe({logLevel:t.logLevel,namespace:"ChannelAudioObserverEventHandler",onLogMessage:r})}handle(e){try{const t=JSON.parse(e);switch(rf.validateEventPayload(t),t.event){case eh.DominantSpeaker:this.handleDominantSpeaker(t);break;case eh.PeersVolumes:this.handlePeerVolumes(t);break;case eh.Silence:this.handleSilence()}}catch(t){this.logger.warn("Failed to handle audio observer event",{error:Mc(t),eventData:e})}}handleDominantSpeaker(e){const{peerId:t}=e.data,r=this.engine.getPeerById(t);this.engine.setActiveSpeakerPeer(r)}handlePeerVolumes(e){e.volumes.forEach((e=>{var t;const{peerId:r,trackLabel:i,value:s}=e,n=null===(t=this.engine.getPeerById(r))||void 0===t?void 0:t.tracks.get(i);n&&n.setVolume(s)}))}handleSilence(){this.engine.peers.flatMap((e=>Array.from(e.tracks.values()))).forEach((e=>e.setVolume(0))),this.engine.setActiveSpeakerPeer(void 0)}static validateEventPayload(e){switch(e.event){case eh.Silence:break;case eh.DominantSpeaker:{e.data||rf.throwInvalidPayload();const{peerId:t,producerId:r,trackLabel:i}=e.data;"string"==typeof t&&"string"==typeof r&&i===h.Microphone||rf.throwInvalidPayload();break}case eh.PeersVolumes:Array.isArray(e.volumes)||rf.throwInvalidPayload(),e.volumes.forEach((e=>{const{peerId:t,producerId:r,value:i,trackLabel:s}=e;"string"==typeof t&&"string"==typeof r&&"number"==typeof i&&s===h.Microphone||rf.throwInvalidPayload()}));break;default:rf.throwInvalidPayload()}}static throwInvalidPayload(){throw new tf("Invalid channel audio observer event handler payload")}}class sf{createSystem(e){return new Oc(e)}createMedia(e){return new ia(e)}createNetwork(e){const{loadbalancer:t,logLevel:r,onLogMessage:i}=e,s=new el({logLevel:r,onLogMessage:i}),n=new ef(t);return new Lc({logLevel:r,socketClient:s,loadBalancerApiClient:n,onLogMessage:i})}createChannelEventHandler(e){return new Ac(e)}createMediaSoupEventHandler(e){return new jc(e)}createAudioObserverEventHandler(e){return new rf(e)}createIssueDetector(e){var t,r;const i=null!==(t=e.logger)&&void 0!==t?t:console,s=new Pc({statsParser:new Tc({logger:null!==(r=e.logger)&&void 0!==r?r:console})});return new Ec({issueEmitter:new pc,networkScoresCalculator:new fc,detectors:[new Sc,new vc,new yc,new bc,new _c,new wc,new gc,new kc],statsReporter:new uc({compositeStatsParser:s,getStatsInterval:5e3}),onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:e.ignoreSSRCList,compositeStatsParser:s,logger:i})}}class nf extends AudioWorkletNode{constructor(e){super(e.context,"rnnoise",{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1],processorOptions:{module:e.noiseSuppressor.module}}),this.port.onmessage=({data:e})=>{const t=Object.assign(new Event("status"),e);this.dispatchEvent(t)}}update(e){this.port.postMessage(e)}static register(e){return i(this,void 0,void 0,(function*(){yield e.audioWorklet.addModule(`${window.location.origin}/noiseSuppressionWorklet.js`)}))}}class of{constructor(e){th.set(this,void 0),rh.set(this,void 0),ih.set(this,void 0),sh.set(this,void 0),nh.set(this,void 0),oh.set(this,!0),n(this,th,e.noiseSuppressor.instance.exports,"f"),n(this,rh,e.context,"f"),n(this,ih,new Float32Array(s(this,th,"f").memory.buffer),"f"),n(this,sh,s(this,th,"f").newState(),"f"),n(this,nh,s(this,rh,"f").createScriptProcessor(),"f"),this.setOnAudioProcess()}get noiseSuppressionScriptProcessorNode(){return s(this,nh,"f")}update(e){e||(n(this,oh,!1,"f"),s(this,th,"f").deleteState(s(this,sh,"f")));const t=Object.assign(new Event("status"),{vadProb:s(this,th,"f").getVadProb(s(this,sh,"f"))});s(this,nh,"f").dispatchEvent(t)}setOnAudioProcess(){s(this,nh,"f").addEventListener("audioprocess",(({inputBuffer:e,outputBuffer:t})=>{if(!s(this,oh,"f"))return;s(this,ih,"f").set(e.getChannelData(0),s(this,th,"f").getInput(s(this,sh,"f"))/4);const r=t.getChannelData(0),i=s(this,th,"f").pipe(s(this,sh,"f"),r.length)/4;i&&r.set(s(this,ih,"f").subarray(i,i+r.length))}))}}th=new WeakMap,rh=new WeakMap,ih=new WeakMap,sh=new WeakMap,nh=new WeakMap,oh=new WeakMap;var af,cf,df,lf,pf,uf,hf,ff,mf,gf;class vf{constructor({context:e,noiseSuppressor:t}){af.set(this,void 0),cf.set(this,void 0),df.set(this,void 0),n(this,af,e,"f"),n(this,cf,t,"f")}createNoiseSuppressionNode(){return i(this,void 0,void 0,(function*(){return/apple/i.test(navigator.vendor)?this.createScriptProcessorNode():this.createAudioWorkletNode()}))}stop(){var e;null===(e=s(this,df,"f"))||void 0===e||e.update(!1)}createAudioWorkletNode(){return i(this,void 0,void 0,(function*(){return yield nf.register(s(this,af,"f")),n(this,df,new nf({context:s(this,af,"f"),noiseSuppressor:s(this,cf,"f")}),"f"),s(this,df,"f")}))}createScriptProcessorNode(){return n(this,df,new of({context:s(this,af,"f"),noiseSuppressor:s(this,cf,"f")}),"f"),s(this,df,"f").noiseSuppressionScriptProcessorNode}}af=new WeakMap,cf=new WeakMap,df=new WeakMap;class yf{constructor(e){lf.set(this,void 0),pf.set(this,void 0),uf.set(this,void 0),hf.set(this,void 0),n(this,lf,e.noiseSuppressor,"f"),n(this,uf,new Xe({namespace:"TrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return!!s(this,hf,"f")}processTrack(e){return i(this,void 0,void 0,(function*(){const t=(e=>{const t=window.AudioContext||window.webkitAudioContext||!1;return t?new t(e):null})();if(!t)throw new Error("AudioContext is not available");const r=new MediaStreamAudioDestinationNode(t,{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers"});yield nf.register(t);const i=t.createMediaStreamSource(new MediaStream([e])),o=new vf({context:t,noiseSuppressor:s(this,lf,"f")}),a=yield o.createNoiseSuppressionNode();a.connect(r),i.connect(a);const[c]=r.stream.getTracks();return n(this,pf,{audioContext:t,streamDestination:r,noiseSuppressionNode:a,noiseSuppressionProvider:o},"f"),n(this,hf,c,"f"),s(this,uf,"f").info("processTrack()",{track:e}),c}))}stopProcessing(){var e;return i(this,void 0,void 0,(function*(){if(this.isProcessing)if(s(this,pf,"f"))try{s(this,pf,"f").noiseSuppressionProvider.stop(),s(this,pf,"f").noiseSuppressionNode.disconnect(),s(this,pf,"f").streamDestination.disconnect(),yield s(this,pf,"f").audioContext.close(),null===(e=s(this,hf,"f"))||void 0===e||e.stop(),n(this,hf,void 0,"f"),s(this,uf,"f").info("stopProcessing()",{success:!0})}catch(e){s(this,uf,"f").error("stopProcessing()",{success:!1,error:e})}else s(this,uf,"f").warn("stopProcessing()",{success:!1,description:"Processing context is not available"});else s(this,uf,"f").debug("stopProcessing()",{description:"Track is not processed"})}))}}lf=new WeakMap,pf=new WeakMap,uf=new WeakMap,hf=new WeakMap;class bf extends wa{constructor(e){super(e),ff.set(this,void 0),mf.set(this,void 0),gf.set(this,void 0),e.noiseSuppressor&&n(this,ff,new yf({noiseSuppressor:e.noiseSuppressor,logLevel:e.logLevel}),"f"),n(this,gf,new Xe({namespace:"AudioTrack",logLevel:e.logLevel}),"f")}get isEffectsProcessing(){var e;return!!(null===(e=s(this,ff,"f"))||void 0===e?void 0:e.isProcessing)}getEncoderConfig(){return this.encoderConfig}getEncodings(){var e;return null!==(e=this.getEncoderConfig().encodings)&&void 0!==e?e:Go}getCodecOptions(){var e,t;return{opusFec:null===(e=this.getEncoderConfig().enableFec)||void 0===e||e,opusDtx:null===(t=this.getEncoderConfig().enableDtx)||void 0===t||t}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||"opus"}enableNoiseSuppression(){var e;return i(this,void 0,void 0,(function*(){if(s(this,ff,"f"))try{const t=yield null===(e=s(this,ff,"f"))||void 0===e?void 0:e.processTrack(this.mediaStreamTrack);n(this,mf,this.mediaStreamTrack,"f"),yield this.replaceTrack(t)}catch(e){throw this.logger.warn("enableNoiseSuppression()",{description:"Can not enable noise suppression",track:this,error:e}),new Error("Can not enable noise suppression")}else this.logger.warn("enableNoiseSuppression()",{description:"Track suppressor is not defined"})}))}disableNoiseSuppression(){var e,t;return i(this,void 0,void 0,(function*(){try{if(!(null===(e=s(this,ff,"f"))||void 0===e?void 0:e.isProcessing))return void s(this,gf,"f").debug("stopProcessing()",{description:"Track is not processed"});if(!s(this,mf,"f"))return void this.logger.warn("disableNoiseSuppression()",{description:"Original track missing"});this.isPublished&&(yield this.replaceTrack(s(this,mf,"f"))),yield null===(t=s(this,ff,"f"))||void 0===t?void 0:t.stopProcessing()}catch(e){throw this.logger.warn("disableNoiseSuppression()",{description:"Can not disable noise suppression",track:this,error:e}),new Error("Can not disable noise suppression")}}))}publish(){return i(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),codecOptions:this.getCodecOptions()}),this.clientEventEmitter.emit(W,this)}))}}ff=new WeakMap,mf=new WeakMap,gf=new WeakMap;class wf{createAudioTrack(e){return new bf(e)}createVideoTrack(e){return new $a(e)}}module.exports=class{constructor(e){var t,r;const{observer:i,network:s,onLogMessage:n,onIssues:a,onNetworkScoresUpdated:c,logLevel:d,disableWid:l}=e;this._observer=null!=i?i:new o;const p=new sf,u=new wf;this.engine=new Ka({dependenciesFactory:p,clientEventEmitter:this.observer,media:{mediaTracksFactory:u},network:{loadbalancer:{baseURL:null===(t=null==s?void 0:s.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==s?void 0:s.loadbalancer)||void 0===r?void 0:r.customNode}},logLevel:d,onLogMessage:n,onIssues:a,onNetworkScoresUpdated:c,disableWid:l})}get observer(){return this._observer}get id(){return this.engine.mySocketId}get peers(){return this.engine.peers}get availableVideoDevices(){return this.engine.system.availableVideoDevices}get availableAudioDevices(){return this.engine.system.availableAudioDevices}get canUseNoiseSuppression(){return this.engine.canUseNoiseSuppression}detectDevices(){return i(this,void 0,void 0,(function*(){return yield this.engine.system.detectDevices(),{video:this.engine.system.availableVideoDevices,audio:this.engine.system.availableAudioDevices}}))}join(e){return this.engine.join(e)}leave(){return this.engine.release()}confirmActivity(){return this.engine.confirmActivity()}createCameraVideoTrack(e){return this.engine.createCameraVideoTrack(e)}createMicrophoneAudioTrack(e){return this.engine.createMicrophoneAudioTrack(e)}createScreenMediaTracks(e){return this.engine.createScreenMediaTracks(e)}deleteTrack(e){return this.engine.deleteTrack(e)}loadPeers(e){return this.engine.loadPeers(e)}updateAppData(e){return this.engine.updateAppData(e)}getTransportsInfo(){return i(this,void 0,void 0,(function*(){return this.engine.network.getTransportsStateInfo()}))}};
|