@snapcall/stream-ui 1.22.0 → 1.23.0
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/stream-ui.esm.js +138 -284
- package/dist/stream-ui.js +137 -283
- package/dist/stream-ui.umd.js +4 -4
- package/dist/streamerClient/index.js +4 -0
- package/dist/streamerClient/timer.ed477f04.js +1 -0
- package/dist/types.d.ts +8 -0
- package/package.json +11 -1
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
let e;var t,r,i,s,a,n=require("process"),o=require("events"),c=require("buffer"),d=globalThis;function l(e,t,r,i){Object.defineProperty(e,t,{get:r,set:i,enumerable:!0,configurable:!0})}var p={},h={},u=d.parcelRequireaab1;null==u&&((u=function(e){if(e in p)return p[e].exports;if(e in h){var t=h[e];delete h[e];var r={id:e,exports:{}};return p[e]=r,t.call(r.exports,r,r.exports),r.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){h[e]=t},d.parcelRequireaab1=u);var m=u.register;m("1JjHr",function(e,t){let r;t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;let r="color: "+this.color;t.splice(1,0,r,"color: inherit");let i=0,s=0;t[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(i++,"%c"===e&&(s=i))}),t.splice(s,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&void 0!==n&&"env"in n&&(e=void 0),e},t.useColors=function(){return"undefined"!=typeof window&&!!window.process&&("renderer"===window.process.type||!!window.process.__nwjs)||!("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(r=!1,()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=u("9ovFa")(t);let{formatters:i}=e.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}),m("9ovFa",function(e,t){e.exports=function(e){function t(e){let i,s,a;let n=null;function o(...e){if(!o.enabled)return;let r=Number(new Date),s=r-(i||r);o.diff=s,o.prev=i,o.curr=r,i=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(r,i)=>{if("%%"===r)return"%";a++;let s=t.formatters[i];if("function"==typeof s){let t=e[a];r=s.call(o,t),e.splice(a,1),a--}return r}),t.formatArgs.call(o,e),(o.log||t.log).apply(o,e)}return o.namespace=e,o.useColors=t.useColors(),o.color=t.selectColor(e),o.extend=r,o.destroy=t.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==n?n:(s!==t.namespaces&&(s=t.namespaces,a=t.enabled(e)),a),set:e=>{n=e}}),"function"==typeof t.init&&t.init(o),o}function r(e,r){let i=t(this.namespace+(void 0===r?":":r)+e);return i.log=this.log,i}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){let e=[...t.names.map(i),...t.skips.map(i).map(e=>"-"+e)].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];let i=("string"==typeof e?e:"").split(/[\s,]+/),s=i.length;for(r=0;r<s;r++)i[r]&&("-"===(e=i[r].replace(/\*/g,".*?"))[0]?t.skips.push(RegExp("^"+e.slice(1)+"$")):t.names.push(RegExp("^"+e+"$")))},t.enabled=function(e){let r,i;if("*"===e[e.length-1])return!0;for(r=0,i=t.skips.length;r<i;r++)if(t.skips[r].test(e))return!1;for(r=0,i=t.names.length;r<i;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=u("aetWT"),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach(r=>{t[r]=e[r]}),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t)|0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t}}),m("aetWT",function(e,t){function r(e,t,r,i){return Math.round(e/r)+" "+i+(t>=1.5*r?"s":"")}e.exports=function(e,t){t=t||{};var i,s,a=typeof e;if("string"===a&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*r;case"weeks":case"week":case"w":return 6048e5*r;case"days":case"day":case"d":return 864e5*r;case"hours":case"hour":case"hrs":case"hr":case"h":return 36e5*r;case"minutes":case"minute":case"mins":case"min":case"m":return 6e4*r;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}(e);if("number"===a&&isFinite(e))return t.long?(i=Math.abs(e))>=864e5?r(e,i,864e5,"day"):i>=36e5?r(e,i,36e5,"hour"):i>=6e4?r(e,i,6e4,"minute"):i>=1e3?r(e,i,1e3,"second"):e+" ms":(s=Math.abs(e))>=864e5?Math.round(e/864e5)+"d":s>=36e5?Math.round(e/36e5)+"h":s>=6e4?Math.round(e/6e4)+"m":s>=1e3?Math.round(e/1e3)+"s":e+"ms";throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}}),m("dFHla",function(e,t){var r=function(){if("object"==typeof self&&self)return self;if("object"==typeof window&&window)return window;throw Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"==typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return r()}try{if(!__global__)return r();return __global__}finally{delete Object.prototype.__global__}}()}),m("bAhvK",function(e,t){e.exports=JSON.parse('{"name":"websocket","description":"Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.","keywords":["websocket","websockets","socket","networking","comet","push","RFC-6455","realtime","server","client"],"author":"Brian McKelvey <theturtle32@gmail.com> (https://github.com/theturtle32)","contributors":["Iñaki Baz Castillo <ibc@aliax.net> (http://dev.sipdoc.net)"],"version":"1.0.34","repository":{"type":"git","url":"https://github.com/theturtle32/WebSocket-Node.git"},"homepage":"https://github.com/theturtle32/WebSocket-Node","engines":{"node":">=4.0.0"},"dependencies":{"bufferutil":"^4.0.1","debug":"^2.2.0","es5-ext":"^0.10.50","typedarray-to-buffer":"^3.1.5","utf-8-validate":"^5.0.2","yaeti":"^0.0.6"},"devDependencies":{"buffer-equal":"^1.0.0","gulp":"^4.0.2","gulp-jshint":"^2.0.4","jshint-stylish":"^2.2.1","jshint":"^2.0.0","tape":"^4.9.1"},"config":{"verbose":false},"scripts":{"test":"tape test/unit/*.js","gulp":"gulp"},"main":"index","directories":{"lib":"./lib"},"browser":"lib/browser.js","license":"Apache-2.0"}')}),m("aHEzW",function(e,t){var r=u("jvMQf");t.operation=function(e){return new r(t.timeouts(e),{forever:e&&e.forever,unref:e&&e.unref,maxRetryTime:e&&e.maxRetryTime})},t.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var r in e)t[r]=e[r];if(t.minTimeout>t.maxTimeout)throw Error("minTimeout is greater than maxTimeout");for(var i=[],s=0;s<t.retries;s++)i.push(this.createTimeout(s,t));return e&&e.forever&&!i.length&&i.push(this.createTimeout(s,t)),i.sort(function(e,t){return e-t}),i},t.createTimeout=function(e,t){return Math.min(Math.round((t.randomize?Math.random()+1:1)*t.minTimeout*Math.pow(t.factor,e)),t.maxTimeout)},t.wrap=function(e,r,i){if(r instanceof Array&&(i=r,r=null),!i)for(var s in i=[],e)"function"==typeof e[s]&&i.push(s);for(var a=0;a<i.length;a++){var n=i[a],o=e[n];e[n]=(function(i){var s=t.operation(r),a=Array.prototype.slice.call(arguments,1),n=a.pop();a.push(function(e){s.retry(e)||(e&&(arguments[0]=s.mainError()),n.apply(this,arguments))}),s.attempt(function(){i.apply(e,a)})}).bind(e,o),e[n].options=r}}}),m("jvMQf",function(e,t){function r(e,t){"boolean"==typeof t&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}e.exports=r,r.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},r.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},r.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var r=this._timeouts.shift();if(void 0===r){if(!this._cachedTimeouts)return!1;this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift()}var i=this,s=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},r);return this._options.unref&&s.unref(),!0},r.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},r.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated"),this.attempt(e)},r.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated"),this.attempt(e)},r.prototype.start=r.prototype.try,r.prototype.errors=function(){return this._errors},r.prototype.attempts=function(){return this._attempts},r.prototype.mainError=function(){if(0===this._errors.length)return null;for(var e={},t=null,r=0,i=0;i<this._errors.length;i++){var s=this._errors[i],a=s.message,n=(e[a]||0)+1;e[a]=n,n>=r&&(t=s,r=n)}return t}}),m("iSZvy",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Producer=void 0;var r=u("7Wufc"),i=u("jvUzX"),s=u("6yq6Z");let a=new r.Logger("Producer");class n extends i.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:s,rtpParameters:n,stopTracks:o,disableTrackOnPause:c,zeroRtpOnPause:d,appData:l}){super(),this._closed=!1,this._observer=new i.EnhancedEventEmitter,a.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=s,this._kind=s.kind,this._rtpParameters=n,this._paused=!!c&&!s.enabled,this._maxSpatialLayer=void 0,this._stopTracks=o,this._disableTrackOnPause=c,this._zeroRtpOnPause=d,this._appData=l||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get closed(){return this._closed}get kind(){return this._kind}get rtpSender(){return this._rtpSender}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get maxSpatialLayer(){return this._maxSpatialLayer}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(a.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(a.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new s.InvalidStateError("closed");return new Promise((e,t)=>{this.safeEmit("@getstats",e,t)})}pause(){if(a.debug("pause()"),this._closed){a.error("pause() | Producer closed");return}this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&new Promise((e,t)=>{this.safeEmit("@pause",e,t)}).catch(()=>{}),this._observer.safeEmit("pause")}resume(){if(a.debug("resume()"),this._closed){a.error("resume() | Producer closed");return}this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&new Promise((e,t)=>{this.safeEmit("@resume",e,t)}).catch(()=>{}),this._observer.safeEmit("resume")}async replaceTrack({track:e}){if(a.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new s.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new s.InvalidStateError("track ended");if(e===this._track){a.debug("replaceTrack() | same track, ignored");return}await new Promise((t,r)=>{this.safeEmit("@replacetrack",e,t,r)}),this.destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this.handleTrack()}async setMaxSpatialLayer(e){if(this._closed)throw new s.InvalidStateError("closed");if("video"!==this._kind)throw new s.UnsupportedError("not a video Producer");if("number"!=typeof e)throw TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await new Promise((t,r)=>{this.safeEmit("@setmaxspatiallayer",e,t,r)}).catch(()=>{}),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new s.InvalidStateError("closed");if("object"!=typeof e)throw TypeError("invalid params");await new Promise((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)})}onTrackEnded(){a.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track&&this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){if(this._track)try{this._track.removeEventListener("ended",this.onTrackEnded),this._stopTracks&&this._track.stop()}catch(e){}}}e.exports.Producer=n}),m("7Wufc",function(e,t){var r=e.exports&&e.exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Logger=void 0;let i=r(u("1JjHr")),s="mediasoup-client";e.exports.Logger=class{constructor(e){e?(this._debug=(0,i.default)(`${s}:${e}`),this._warn=(0,i.default)(`${s}:WARN:${e}`),this._error=(0,i.default)(`${s}:ERROR:${e}`)):(this._debug=(0,i.default)(s),this._warn=(0,i.default)(`${s}:WARN`),this._error=(0,i.default)(`${s}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}}}),m("jvUzX",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.EnhancedEventEmitter=void 0;let r=new(u("7Wufc")).Logger("EnhancedEventEmitter");class i extends o.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}emit(e,...t){return super.emit(e,...t)}safeEmit(e,...t){let i=super.listenerCount(e);try{return super.emit(e,...t)}catch(t){return r.error("safeEmit() | event listener threw an error [eventName:%s]:%o",e,t),!!i}}on(e,t){return super.on(e,t),this}off(e,t){return super.off(e,t),this}addListener(e,t){return super.on(e,t),this}prependListener(e,t){return super.prependListener(e,t),this}once(e,t){return super.once(e,t),this}prependOnceListener(e,t){return super.prependOnceListener(e,t),this}removeListener(e,t){return super.off(e,t),this}removeAllListeners(e){return super.removeAllListeners(e),this}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}rawListeners(e){return super.rawListeners(e)}}e.exports.EnhancedEventEmitter=i}),m("6yq6Z",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.InvalidStateError=e.exports.UnsupportedError=void 0;class r extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,r):this.stack=Error(e).stack}}e.exports.UnsupportedError=r;class i extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,i):this.stack=Error(e).stack}}e.exports.InvalidStateError=i}),m("fI7XH",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Device=e.exports.detectDevice=void 0;var a=u("gFoUl"),n=u("7Wufc"),o=u("jvUzX"),c=u("6yq6Z");let d=s(u("2fqxq")),l=s(u("kIl0y"));var p=u("baDpS"),h=u("9Mg8R"),m=u("6Pcmp"),f=u("031Hy"),g=u("axf12"),v=u("cVXKr"),_=u("ajDWi"),b=u("otdku"),w=u("diBVd"),y=u("8HCMN"),S=u("ey9Hv"),R=u("apeMR");let P=new n.Logger("Device");function x(){if("object"==typeof navigator&&"ReactNative"===navigator.product){if(P.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection){P.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?");return}return"undefined"!=typeof RTCRtpTransceiver?(P.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(P.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative")}if("object"==typeof navigator&&"string"==typeof navigator.userAgent){let e=navigator.userAgent,t=new a.UAParser(e);P.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());let r=t.getBrowser(),i=r.name?.toLowerCase(),s=parseInt(r.major??"0"),n=t.getEngine(),o=n.name?.toLowerCase(),c=t.getOS(),d=c.name?.toLowerCase(),l=parseFloat(c.version??"0"),p=t.getDevice(),h=p.model?.toLowerCase(),u="ios"===d||"ipad"===h,m=i&&["chrome","chromium","mobile chrome","chrome webview","chrome headless"].includes(i),f=i&&["firefox","mobile firefox","mobile focus"].includes(i),g=i&&["safari","mobile safari"].includes(i),v=i&&["edge"].includes(i);if((m||v)&&!u&&s>=111)return"Chrome111";if(m&&!u&&s>=74||v&&!u&&s>=88)return"Chrome74";if(m&&!u&&s>=70)return"Chrome70";if(m&&!u&&s>=67)return"Chrome67";else if(m&&!u&&s>=55)return"Chrome55";else if(f&&!u&&s>=60)return"Firefox60";else if(f&&u&&l>=14.3)return"Safari12";else if(g&&s>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";else if(g&&s>=11)return"Safari11";else if(v&&!u&&s>=11&&s<=18)return"Edge11";else if("webkit"===o&&u&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";else if("blink"===o){let t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(!t)return"Chrome111";{let e=Number(t[1]);return e>=111?"Chrome111":e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}}else{P.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,s);return}}P.warn("detectDevice() | unknown device")}e.exports.detectDevice=x,e.exports.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new o.EnhancedEventEmitter,P.debug("constructor()"),r){if(P.warn("constructor() | Handler option is DEPRECATED, use handlerName or handlerFactory instead"),"string"==typeof r)e=r;else throw TypeError("non string Handler option no longer supported, use handlerFactory instead")}if(e&&t)throw TypeError("just one of handlerName or handlerInterface can be given");if(t)this._handlerFactory=t;else{if(e)P.debug("constructor() | handler given: %s",e);else if(e=x())P.debug("constructor() | detected handler: %s",e);else throw new c.UnsupportedError("device not supported");switch(e){case"Chrome111":this._handlerFactory=h.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=m.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=f.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=g.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=v.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=_.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=b.Safari12.createFactory();break;case"Safari11":this._handlerFactory=w.Safari11.createFactory();break;case"Edge11":this._handlerFactory=y.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=S.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=R.ReactNative.createFactory();break;default:throw TypeError(`unknown handlerName "${e}"`)}}let i=this._handlerFactory();this._handlerName=i.name,i.close(),this._extendedRtpCapabilities=void 0,this._recvRtpCapabilities=void 0,this._canProduceByKind={audio:!1,video:!1},this._sctpCapabilities=void 0}get handlerName(){return this._handlerName}get loaded(){return this._loaded}get rtpCapabilities(){if(!this._loaded)throw new c.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new c.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;P.debug("load() [routerRtpCapabilities:%o]",e),e=d.clone(e);try{if(this._loaded)throw new c.InvalidStateError("already loaded");l.validateRtpCapabilities(e),t=this._handlerFactory();let r=await t.getNativeRtpCapabilities();P.debug("load() | got native RTP capabilities:%o",r),l.validateRtpCapabilities(r),this._extendedRtpCapabilities=l.getExtendedRtpCapabilities(r,e),P.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=l.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=l.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=l.getRecvRtpCapabilities(this._extendedRtpCapabilities),l.validateRtpCapabilities(this._recvRtpCapabilities),P.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),P.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),l.validateSctpCapabilities(this._sctpCapabilities),P.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(this._loaded){if("audio"!==e&&"video"!==e)throw TypeError(`invalid kind "${e}"`)}else throw new c.InvalidStateError("not loaded");return this._canProduceByKind[e]}createSendTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:c,appData:d}){return P.debug("createSendTransport()"),this.createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:c,appData:d}){return P.debug("createRecvTransport()"),this.createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:c,appData:d})}createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:a,iceServers:n,iceTransportPolicy:o,additionalSettings:d,proprietaryConstraints:l,appData:h}){if(this._loaded){if("string"!=typeof t)throw TypeError("missing id");if("object"!=typeof r)throw TypeError("missing iceParameters");if(Array.isArray(i)){if("object"!=typeof s)throw TypeError("missing dtlsParameters");if(a&&"object"!=typeof a)throw TypeError("wrong sctpParameters");if(h&&"object"!=typeof h)throw TypeError("if given, appData must be an object")}else throw TypeError("missing iceCandidates")}else throw new c.InvalidStateError("not loaded");let u=new p.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:a,iceServers:n,iceTransportPolicy:o,additionalSettings:d,proprietaryConstraints:l,appData:h,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",u),u}}}),m("gFoUl",function(e,t){!function(r,i){var s="function",a="undefined",n="object",o="string",c="major",d="model",l="name",p="type",h="vendor",u="version",m="architecture",f="console",g="mobile",v="tablet",_="smarttv",b="wearable",w="embedded",y="Amazon",S="Apple",R="ASUS",P="BlackBerry",x="Browser",C="Chrome",T="Firefox",k="Google",D="Huawei",E="Microsoft",M="Motorola",O="Opera",I="Samsung",L="Sharp",j="Sony",A="Xiaomi",N="Zebra",F="Facebook",B="Chromium OS",q="Mac OS",U=function(e,t){var r={};for(var i in e)t[i]&&t[i].length%2==0?r[i]=t[i].concat(e[i]):r[i]=e[i];return r},$=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},V=function(e,t){return typeof e===o&&-1!==z(t).indexOf(z(e))},z=function(e){return e.toLowerCase()},W=function(e,t){if(typeof e===o)return e=e.replace(/^\s\s*/,""),typeof t===a?e:e.substring(0,500)},G=function(e,t){for(var r,a,o,c,d,l,p=0;p<t.length&&!d;){var h=t[p],u=t[p+1];for(r=a=0;r<h.length&&!d&&h[r];)if(d=h[r++].exec(e))for(o=0;o<u.length;o++)l=d[++a],typeof(c=u[o])===n&&c.length>0?2===c.length?typeof c[1]==s?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==s||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):i:this[c[0]]=l?c[1].call(this,l,c[2]):i:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):i):this[c]=l||i;p+=2}},H=function(e,t){for(var r in t)if(typeof t[r]===n&&t[r].length>0){for(var s=0;s<t[r].length;s++)if(V(t[r][s],e))return"?"===r?i:r}else if(V(t[r],e))return"?"===r?i:r;return e},K={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2","8.1":"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},Q={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[u,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[u,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,u],[/opios[\/ ]+([\w\.]+)/i],[u,[l,O+" Mini"]],[/\bopr\/([\w\.]+)/i],[u,[l,O]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[u,[l,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[l,u],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[u,[l,"UC"+x]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[u,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[u,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[u,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[u,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[u,[l,"Smart Lenovo "+x]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+x],u],[/\bfocus\/([\w\.]+)/i],[u,[l,T+" Focus"]],[/\bopt\/([\w\.]+)/i],[u,[l,O+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[u,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[u,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[u,[l,O+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[u,[l,"MIUI "+x]],[/fxios\/([-\w\.]+)/i],[u,[l,T]],[/\bqihu|(qi?ho?o?|360)browser/i],[[l,"360 "+x]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1 "+x],u],[/samsungbrowser\/([\w\.]+)/i],[u,[l,I+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[l,/_/g," "],u],[/metasr[\/ ]?([\d\.]+)/i],[u,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],u],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[l,u],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,F],u],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[l,u],[/\bgsa\/([\w\.]+) .*safari\//i],[u,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[u,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[u,[l,C+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,C+" WebView"],u],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[u,[l,"Android "+x]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,u],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[u,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[u,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[u,H,{"1.0":"/8","1.2":"/1","1.3":"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[l,u],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],u],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[u,[l,T+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[l,u],[/(cobalt)\/([\w\.]+)/i],[l,[u,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[m,"amd64"]],[/(ia32(?=;))/i],[[m,z]],[/((?:i[346]|x)86)[;\)]/i],[[m,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[m,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[m,"armhf"]],[/windows (ce|mobile); ppc;/i],[[m,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[m,/ower/,"",z]],[/(sun4\w)[;\)]/i],[[m,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[m,z]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[d,[h,I],[p,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[d,[h,I],[p,g]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[d,[h,S],[p,g]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[d,[h,S],[p,v]],[/(macintosh);/i],[d,[h,S]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[d,[h,L],[p,g]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[d,[h,D],[p,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[d,[h,D],[p,g]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[d,/_/g," "],[h,A],[p,g]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[d,/_/g," "],[h,A],[p,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[d,[h,"OPPO"],[p,g]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[d,[h,"Vivo"],[p,g]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[d,[h,"Realme"],[p,g]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[d,[h,M],[p,g]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[d,[h,M],[p,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[d,[h,"LG"],[p,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[d,[h,"LG"],[p,g]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[d,[h,"Lenovo"],[p,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[d,/_/g," "],[h,"Nokia"],[p,g]],[/(pixel c)\b/i],[d,[h,k],[p,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[d,[h,k],[p,g]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[d,[h,j],[p,g]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[d,"Xperia Tablet"],[h,j],[p,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[d,[h,"OnePlus"],[p,g]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[d,[h,y],[p,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[d,/(.+)/g,"Fire Phone $1"],[h,y],[p,g]],[/(playbook);[-\w\),; ]+(rim)/i],[d,h,[p,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[d,[h,P],[p,g]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[d,[h,R],[p,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[d,[h,R],[p,g]],[/(nexus 9)/i],[d,[h,"HTC"],[p,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[h,[d,/_/g," "],[p,g]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[d,[h,"Acer"],[p,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[d,[h,"Meizu"],[p,g]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[d,[h,"Ulefone"],[p,g]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[h,d,[p,g]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[h,d,[p,v]],[/(surface duo)/i],[d,[h,E],[p,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[d,[h,"Fairphone"],[p,g]],[/(u304aa)/i],[d,[h,"AT&T"],[p,g]],[/\bsie-(\w*)/i],[d,[h,"Siemens"],[p,g]],[/\b(rct\w+) b/i],[d,[h,"RCA"],[p,v]],[/\b(venue[\d ]{2,7}) b/i],[d,[h,"Dell"],[p,v]],[/\b(q(?:mv|ta)\w+) b/i],[d,[h,"Verizon"],[p,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[d,[h,"Barnes & Noble"],[p,v]],[/\b(tm\d{3}\w+) b/i],[d,[h,"NuVision"],[p,v]],[/\b(k88) b/i],[d,[h,"ZTE"],[p,v]],[/\b(nx\d{3}j) b/i],[d,[h,"ZTE"],[p,g]],[/\b(gen\d{3}) b.+49h/i],[d,[h,"Swiss"],[p,g]],[/\b(zur\d{3}) b/i],[d,[h,"Swiss"],[p,v]],[/\b((zeki)?tb.*\b) b/i],[d,[h,"Zeki"],[p,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[h,"Dragon Touch"],d,[p,v]],[/\b(ns-?\w{0,9}) b/i],[d,[h,"Insignia"],[p,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[d,[h,"NextBook"],[p,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[h,"Voice"],d,[p,g]],[/\b(lvtel\-)?(v1[12]) b/i],[[h,"LvTel"],d,[p,g]],[/\b(ph-1) /i],[d,[h,"Essential"],[p,g]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[d,[h,"Envizen"],[p,v]],[/\b(trio[-\w\. ]+) b/i],[d,[h,"MachSpeed"],[p,v]],[/\btu_(1491) b/i],[d,[h,"Rotor"],[p,v]],[/(shield[\w ]+) b/i],[d,[h,"Nvidia"],[p,v]],[/(sprint) (\w+)/i],[h,d,[p,g]],[/(kin\.[onetw]{3})/i],[[d,/\./g," "],[h,E],[p,g]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[d,[h,N],[p,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[d,[h,N],[p,g]],[/smart-tv.+(samsung)/i],[h,[p,_]],[/hbbtv.+maple;(\d+)/i],[[d,/^/,"SmartTV"],[h,I],[p,_]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[h,"LG"],[p,_]],[/(apple) ?tv/i],[h,[d,S+" TV"],[p,_]],[/crkey/i],[[d,C+"cast"],[h,k],[p,_]],[/droid.+aft(\w+)( bui|\))/i],[d,[h,y],[p,_]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[d,[h,L],[p,_]],[/(bravia[\w ]+)( bui|\))/i],[d,[h,j],[p,_]],[/(mitv-\w{5}) bui/i],[d,[h,A],[p,_]],[/Hbbtv.*(technisat) (.*);/i],[h,d,[p,_]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[h,W],[d,W],[p,_]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,_]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[h,d,[p,f]],[/droid.+; (shield) bui/i],[d,[h,"Nvidia"],[p,f]],[/(playstation [345portablevi]+)/i],[d,[h,j],[p,f]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[d,[h,E],[p,f]],[/((pebble))app/i],[h,d,[p,b]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[d,[h,S],[p,b]],[/droid.+; (glass) \d/i],[d,[h,k],[p,b]],[/droid.+; (wt63?0{2,3})\)/i],[d,[h,N],[p,b]],[/(quest( 2| pro)?)/i],[d,[h,F],[p,b]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[h,[p,w]],[/(aeobc)\b/i],[d,[h,y],[p,w]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[d,[p,g]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[d,[p,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,g]],[/(android[-\w\. ]{0,9});.+buil/i],[d,[h,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[u,[l,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[u,[l,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[l,u],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[u,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,u],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[l,[u,H,K]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[u,H,K],[l,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[u,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,q],[u,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[u,l],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[l,u],[/\(bb(10);/i],[u,[l,P]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[u,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[u,[l,T+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[u,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[u,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[u,[l,C+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,B],u],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[l,u],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],u],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,u]]},J=function(e,t){if(typeof e===n&&(t=e,e=i),!(this instanceof J))return new J(e,t).getResult();var f=typeof r!==a&&r.navigator?r.navigator:i,_=e||(f&&f.userAgent?f.userAgent:""),b=f&&f.userAgentData?f.userAgentData:i,w=t?U(Q,t):Q,y=f&&f.userAgent==_;return this.getBrowser=function(){var e,t={};return t[l]=i,t[u]=i,G.call(t,_,w.browser),t[c]=typeof(e=t[u])===o?e.replace(/[^\d\.]/g,"").split(".")[0]:i,y&&f&&f.brave&&typeof f.brave.isBrave==s&&(t[l]="Brave"),t},this.getCPU=function(){var e={};return e[m]=i,G.call(e,_,w.cpu),e},this.getDevice=function(){var e={};return e[h]=i,e[d]=i,e[p]=i,G.call(e,_,w.device),y&&!e[p]&&b&&b.mobile&&(e[p]=g),y&&"Macintosh"==e[d]&&f&&typeof f.standalone!==a&&f.maxTouchPoints&&f.maxTouchPoints>2&&(e[d]="iPad",e[p]=v),e},this.getEngine=function(){var e={};return e[l]=i,e[u]=i,G.call(e,_,w.engine),e},this.getOS=function(){var e={};return e[l]=i,e[u]=i,G.call(e,_,w.os),y&&!e[l]&&b&&"Unknown"!=b.platform&&(e[l]=b.platform.replace(/chrome os/i,B).replace(/macos/i,q)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return _},this.setUA=function(e){return _=typeof e===o&&e.length>500?W(e,500):e,this},this.setUA(_),this};J.VERSION="1.0.37",J.BROWSER=$([l,u,c]),J.CPU=$([m]),J.DEVICE=$([d,h,p,f,g,_,v,b,w]),J.ENGINE=J.OS=$([l,u]),typeof t!==a?(e.exports&&(t=e.exports=J),t.UAParser=J):typeof define===s&&define.amd?define(function(){return J}):typeof r!==a&&(r.UAParser=J);var Z=typeof r!==a&&(r.jQuery||r.Zepto);if(Z&&!Z.ua){var X=new J;Z.ua=X.getResult(),Z.ua.get=function(){return X.getUA()},Z.ua.set=function(e){X.setUA(e);var t=X.getResult();for(var r in t)Z.ua[r]=t[r]}}}("object"==typeof window?window:this)}),m("2fqxq",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.generateRandomNumber=e.exports.clone=void 0,e.exports.clone=function(e){if(void 0!==e)return Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},e.exports.generateRandomNumber=function(){return Math.round(1e7*Math.random())}}),m("kIl0y",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.canReceive=e.exports.canSend=e.exports.generateProbatorRtpParameters=e.exports.reduceCodecs=e.exports.getSendingRemoteRtpParameters=e.exports.getSendingRtpParameters=e.exports.getRecvRtpCapabilities=e.exports.getExtendedRtpCapabilities=e.exports.validateSctpStreamParameters=e.exports.validateSctpParameters=e.exports.validateNumSctpStreams=e.exports.validateSctpCapabilities=e.exports.validateRtcpParameters=e.exports.validateRtpEncodingParameters=e.exports.validateRtpHeaderExtensionParameters=e.exports.validateRtpCodecParameters=e.exports.validateRtpParameters=e.exports.validateRtpHeaderExtension=e.exports.validateRtcpFeedback=e.exports.validateRtpCodecCapability=e.exports.validateRtpCapabilities=void 0;let a=s(u("7PXZ5")),n=s(u("2fqxq"));function o(e){let t=RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw TypeError("missing codec.mimeType");let r=t.exec(e.mimeType);if(!r)throw TypeError("invalid codec.mimeType");if(e.kind=r[1].toLowerCase(),e.preferredPayloadType&&"number"!=typeof e.preferredPayloadType)throw TypeError("invalid codec.preferredPayloadType");if("number"!=typeof e.clockRate)throw TypeError("missing codec.clockRate");for(let t of("audio"===e.kind?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={}),Object.keys(e.parameters))){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw TypeError("invalid codec apt parameter")}for(let t of(e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]),e.rtcpFeedback))c(t)}function c(e){if("object"!=typeof e)throw TypeError("fb is not an object");if(!e.type||"string"!=typeof e.type)throw TypeError("missing fb.type");e.parameter&&"string"==typeof e.parameter||(e.parameter="")}function d(e){if("object"!=typeof e)throw TypeError("ext is not an object");if("audio"!==e.kind&&"video"!==e.kind)throw TypeError("invalid ext.kind");if(!e.uri||"string"!=typeof e.uri)throw TypeError("missing ext.uri");if("number"!=typeof e.preferredId)throw TypeError("missing ext.preferredId");if(e.preferredEncrypt&&"boolean"!=typeof e.preferredEncrypt)throw TypeError("invalid ext.preferredEncrypt");if(e.preferredEncrypt||(e.preferredEncrypt=!1),e.direction&&"string"!=typeof e.direction)throw TypeError("invalid ext.direction");e.direction||(e.direction="sendrecv")}function l(e){if("object"!=typeof e)throw TypeError("params is not an object");if(e.mid&&"string"!=typeof e.mid)throw TypeError("params.mid is not a string");if(!Array.isArray(e.codecs))throw TypeError("missing params.codecs");for(let t of e.codecs)p(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw TypeError("params.headerExtensions is not an array");for(let t of(e.headerExtensions||(e.headerExtensions=[]),e.headerExtensions))h(t);if(e.encodings&&!Array.isArray(e.encodings))throw TypeError("params.encodings is not an array");for(let t of(e.encodings||(e.encodings=[]),e.encodings))m(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),f(e.rtcp)}function p(e){let t=RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw TypeError("missing codec.mimeType");let r=t.exec(e.mimeType);if(!r)throw TypeError("invalid codec.mimeType");if("number"!=typeof e.payloadType)throw TypeError("missing codec.payloadType");if("number"!=typeof e.clockRate)throw TypeError("missing codec.clockRate");for(let t of("audio"===r[1].toLowerCase()?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={}),Object.keys(e.parameters))){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw TypeError("invalid codec apt parameter")}for(let t of(e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]),e.rtcpFeedback))c(t)}function h(e){if("object"!=typeof e)throw TypeError("ext is not an object");if(!e.uri||"string"!=typeof e.uri)throw TypeError("missing ext.uri");if("number"!=typeof e.id)throw TypeError("missing ext.id");if(e.encrypt&&"boolean"!=typeof e.encrypt)throw TypeError("invalid ext.encrypt");for(let t of(e.encrypt||(e.encrypt=!1),e.parameters&&"object"==typeof e.parameters||(e.parameters={}),Object.keys(e.parameters))){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw TypeError("invalid header extension parameter")}}function m(e){if("object"!=typeof e)throw TypeError("encoding is not an object");if(e.ssrc&&"number"!=typeof e.ssrc)throw TypeError("invalid encoding.ssrc");if(e.rid&&"string"!=typeof e.rid)throw TypeError("invalid encoding.rid");if(e.rtx&&"object"!=typeof e.rtx)throw TypeError("invalid encoding.rtx");if(e.rtx&&"number"!=typeof e.rtx.ssrc)throw TypeError("missing encoding.rtx.ssrc");if(e.dtx&&"boolean"==typeof e.dtx||(e.dtx=!1),e.scalabilityMode&&"string"!=typeof e.scalabilityMode)throw TypeError("invalid encoding.scalabilityMode")}function f(e){if("object"!=typeof e)throw TypeError("rtcp is not an object");if(e.cname&&"string"!=typeof e.cname)throw TypeError("invalid rtcp.cname");e.reducedSize&&"boolean"==typeof e.reducedSize||(e.reducedSize=!0)}function g(e){if("object"!=typeof e)throw TypeError("numStreams is not an object");if("number"!=typeof e.OS)throw TypeError("missing numStreams.OS");if("number"!=typeof e.MIS)throw TypeError("missing numStreams.MIS")}function v(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function _(e,t,{strict:r=!1,modify:i=!1}={}){let s=e.mimeType.toLowerCase();if(s!==t.mimeType.toLowerCase()||e.clockRate!==t.clockRate||e.channels!==t.channels)return!1;switch(s){case"video/h264":if(r){let r;if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0)||!a.isSameProfile(e.parameters,t.parameters))return!1;try{r=a.generateProfileLevelIdStringForAnswer(e.parameters,t.parameters)}catch(e){return!1}i&&(r?(e.parameters["profile-level-id"]=r,t.parameters["profile-level-id"]=r):(delete e.parameters["profile-level-id"],delete t.parameters["profile-level-id"]))}break;case"video/vp9":if(r&&(e.parameters["profile-id"]||0)!==(t.parameters["profile-id"]||0))return!1}return!0}e.exports.validateRtpCapabilities=function(e){if("object"!=typeof e)throw TypeError("caps is not an object");if(e.codecs&&!Array.isArray(e.codecs))throw TypeError("caps.codecs is not an array");for(let t of(e.codecs||(e.codecs=[]),e.codecs))o(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw TypeError("caps.headerExtensions is not an array");for(let t of(e.headerExtensions||(e.headerExtensions=[]),e.headerExtensions))d(t)},e.exports.validateRtpCodecCapability=o,e.exports.validateRtcpFeedback=c,e.exports.validateRtpHeaderExtension=d,e.exports.validateRtpParameters=l,e.exports.validateRtpCodecParameters=p,e.exports.validateRtpHeaderExtensionParameters=h,e.exports.validateRtpEncodingParameters=m,e.exports.validateRtcpParameters=f,e.exports.validateSctpCapabilities=function(e){if("object"!=typeof e)throw TypeError("caps is not an object");if(!e.numStreams||"object"!=typeof e.numStreams)throw TypeError("missing caps.numStreams");g(e.numStreams)},e.exports.validateNumSctpStreams=g,e.exports.validateSctpParameters=function(e){if("object"!=typeof e)throw TypeError("params is not an object");if("number"!=typeof e.port)throw TypeError("missing params.port");if("number"!=typeof e.OS)throw TypeError("missing params.OS");if("number"!=typeof e.MIS)throw TypeError("missing params.MIS");if("number"!=typeof e.maxMessageSize)throw TypeError("missing params.maxMessageSize")},e.exports.validateSctpStreamParameters=function(e){if("object"!=typeof e)throw TypeError("params is not an object");if("number"!=typeof e.streamId)throw TypeError("missing params.streamId");let t=!1;if("boolean"==typeof e.ordered?t=!0:e.ordered=!0,e.maxPacketLifeTime&&"number"!=typeof e.maxPacketLifeTime)throw TypeError("invalid params.maxPacketLifeTime");if(e.maxRetransmits&&"number"!=typeof e.maxRetransmits)throw TypeError("invalid params.maxRetransmits");if(e.maxPacketLifeTime&&e.maxRetransmits)throw TypeError("cannot provide both maxPacketLifeTime and maxRetransmits");if(t&&e.ordered&&(e.maxPacketLifeTime||e.maxRetransmits))throw TypeError("cannot be ordered with maxPacketLifeTime or maxRetransmits");if(!t&&(e.maxPacketLifeTime||e.maxRetransmits)&&(e.ordered=!1),e.label&&"string"!=typeof e.label)throw TypeError("invalid params.label");if(e.protocol&&"string"!=typeof e.protocol)throw TypeError("invalid params.protocol")},e.exports.getExtendedRtpCapabilities=function(e,t){let r={codecs:[],headerExtensions:[]};for(let i of t.codecs||[]){if(v(i))continue;let t=(e.codecs||[]).find(e=>_(e,i,{strict:!0,modify:!0}));if(!t)continue;let s={mimeType:t.mimeType,kind:t.kind,clockRate:t.clockRate,channels:t.channels,localPayloadType:t.preferredPayloadType,localRtxPayloadType:void 0,remotePayloadType:i.preferredPayloadType,remoteRtxPayloadType:void 0,localParameters:t.parameters,remoteParameters:i.parameters,rtcpFeedback:function(e,t){let r=[];for(let i of e.rtcpFeedback||[]){let e=(t.rtcpFeedback||[]).find(e=>e.type===i.type&&(e.parameter===i.parameter||!e.parameter&&!i.parameter));e&&r.push(e)}return r}(t,i)};r.codecs.push(s)}for(let i of r.codecs){let r=e.codecs.find(e=>v(e)&&e.parameters.apt===i.localPayloadType),s=t.codecs.find(e=>v(e)&&e.parameters.apt===i.remotePayloadType);r&&s&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=s.preferredPayloadType)}for(let i of t.headerExtensions){let t=e.headerExtensions.find(e=>(!e.kind||!i.kind||e.kind===i.kind)&&e.uri===i.uri);if(!t)continue;let s={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":s.direction="sendrecv";break;case"recvonly":s.direction="sendonly";break;case"sendonly":s.direction="recvonly";break;case"inactive":s.direction="inactive"}r.headerExtensions.push(s)}return r},e.exports.getRecvRtpCapabilities=function(e){let t={codecs:[],headerExtensions:[]};for(let r of e.codecs){let e={mimeType:r.mimeType,kind:r.kind,preferredPayloadType:r.remotePayloadType,clockRate:r.clockRate,channels:r.channels,parameters:r.localParameters,rtcpFeedback:r.rtcpFeedback};if(t.codecs.push(e),!r.remoteRtxPayloadType)continue;let i={mimeType:`${r.kind}/rtx`,kind:r.kind,preferredPayloadType:r.remoteRtxPayloadType,clockRate:r.clockRate,parameters:{apt:r.remotePayloadType},rtcpFeedback:[]};t.codecs.push(i)}for(let r of e.headerExtensions){if("sendrecv"!==r.direction&&"recvonly"!==r.direction)continue;let e={kind:r.kind,uri:r.uri,preferredId:r.recvId,preferredEncrypt:r.encrypt,direction:r.direction};t.headerExtensions.push(e)}return t},e.exports.getSendingRtpParameters=function(e,t){let r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(let i of t.codecs){if(i.kind!==e)continue;let t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.localParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){let e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(let i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;let t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}return r},e.exports.getSendingRemoteRtpParameters=function(e,t){let r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(let i of t.codecs){if(i.kind!==e)continue;let t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.remoteParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){let e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(let i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;let t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}if(r.headerExtensions.some(e=>"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"===e.uri))for(let e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter(e=>"goog-remb"!==e.type);else if(r.headerExtensions.some(e=>"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"===e.uri))for(let e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter(e=>"transport-cc"!==e.type);else for(let e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter(e=>"transport-cc"!==e.type&&"goog-remb"!==e.type);return r},e.exports.reduceCodecs=function(e,t){let r=[];if(t){for(let i=0;i<e.length;++i)if(_(e[i],t)){r.push(e[i]),v(e[i+1])&&r.push(e[i+1]);break}if(0===r.length)throw TypeError("no matching codec found")}else r.push(e[0]),v(e[1])&&r.push(e[1]);return r},e.exports.generateProbatorRtpParameters=function(e){l(e=n.clone(e));let t={mid:"probator",codecs:[],headerExtensions:[],encodings:[{ssrc:1234}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=127,t.headerExtensions=e.headerExtensions,t},e.exports.canSend=function(e,t){return t.codecs.some(t=>t.kind===e)},e.exports.canReceive=function(e,t){if(l(e),0===e.codecs.length)return!1;let r=e.codecs[0];return t.codecs.some(e=>e.remotePayloadType===r.payloadType)}}),m("7PXZ5",function(e,t){var r,i,s,a;Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.generateProfileLevelIdStringForAnswer=e.exports.isSameProfile=e.exports.parseSdpProfileLevelId=e.exports.levelToString=e.exports.profileToString=e.exports.profileLevelIdToString=e.exports.parseProfileLevelId=e.exports.ProfileLevelId=e.exports.Level=e.exports.Profile=void 0;let n=new(u("g9uXJ")).Logger;(s=r||(e.exports.Profile=r={}))[s.ConstrainedBaseline=1]="ConstrainedBaseline",s[s.Baseline=2]="Baseline",s[s.Main=3]="Main",s[s.ConstrainedHigh=4]="ConstrainedHigh",s[s.High=5]="High",s[s.PredictiveHigh444=6]="PredictiveHigh444",(a=i||(e.exports.Level=i={}))[a.L1_b=0]="L1_b",a[a.L1=10]="L1",a[a.L1_1=11]="L1_1",a[a.L1_2=12]="L1_2",a[a.L1_3=13]="L1_3",a[a.L2=20]="L2",a[a.L2_1=21]="L2_1",a[a.L2_2=22]="L2_2",a[a.L3=30]="L3",a[a.L3_1=31]="L3_1",a[a.L3_2=32]="L3_2",a[a.L4=40]="L4",a[a.L4_1=41]="L4_1",a[a.L4_2=42]="L4_2",a[a.L5=50]="L5",a[a.L5_1=51]="L5_1",a[a.L5_2=52]="L5_2";class o{constructor(e,t){this.profile=e,this.level=t}}e.exports.ProfileLevelId=o;let c=new o(r.ConstrainedBaseline,i.L3_1);class d{constructor(e){this.mask=~g("x",e),this.masked_value=g("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class l{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}let p=[new l(66,new d("x1xx0000"),r.ConstrainedBaseline),new l(77,new d("1xxx0000"),r.ConstrainedBaseline),new l(88,new d("11xx0000"),r.ConstrainedBaseline),new l(66,new d("x0xx0000"),r.Baseline),new l(88,new d("10xx0000"),r.Baseline),new l(77,new d("0x0x0000"),r.Main),new l(100,new d("00000000"),r.High),new l(100,new d("00001100"),r.ConstrainedHigh),new l(244,new d("00000000"),r.PredictiveHigh444)];function h(e){let t;if("string"!=typeof e||6!==e.length)return;let r=parseInt(e,16);if(0===r)return;let s=255&r,a=r>>8&255,c=r>>16&255;switch(s){case i.L1_1:t=(16&a)!=0?i.L1_b:i.L1_1;break;case i.L1:case i.L1_2:case i.L1_3:case i.L2:case i.L2_1:case i.L2_2:case i.L3:case i.L3_1:case i.L3_2:case i.L4:case i.L4_1:case i.L4_2:case i.L5:case i.L5_1:case i.L5_2:t=s;break;default:n.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${s}]`);return}for(let e of p)if(c===e.profile_idc&&e.profile_iop.isMatch(a))return new o(e.profile,t);n.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${c}, profile_iop:${a}]`)}function m(e){let t;if(e.level==i.L1_b)switch(e.profile){case r.ConstrainedBaseline:return"42f00b";case r.Baseline:return"42100b";case r.Main:return"4d100b";default:n.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`);return}switch(e.profile){case r.ConstrainedBaseline:t="42e0";break;case r.Baseline:t="4200";break;case r.Main:t="4d00";break;case r.ConstrainedHigh:t="640c";break;case r.High:t="6400";break;case r.PredictiveHigh444:t="f400";break;default:n.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`);return}let s=e.level.toString(16);return 1===s.length&&(s=`0${s}`),`${t}${s}`}function f(e={}){let t=e["profile-level-id"];return t?h(t):c}function g(e,t){return Number(t[0]===e)<<7|Number(t[1]===e)<<6|Number(t[2]===e)<<5|Number(t[3]===e)<<4|Number(t[4]===e)<<3|Number(t[5]===e)<<2|Number(t[6]===e)<<1|Number(t[7]===e)<<0}function v(e={}){let t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}e.exports.parseProfileLevelId=h,e.exports.profileLevelIdToString=m,e.exports.profileToString=function(e){switch(e){case r.ConstrainedBaseline:return"ConstrainedBaseline";case r.Baseline:return"Baseline";case r.Main:return"Main";case r.ConstrainedHigh:return"ConstrainedHigh";case r.High:return"High";case r.PredictiveHigh444:return"PredictiveHigh444";default:n.warn(`profileToString() | unrecognized profile ${e}`);return}},e.exports.levelToString=function(e){switch(e){case i.L1_b:return"1b";case i.L1:return"1";case i.L1_1:return"1.1";case i.L1_2:return"1.2";case i.L1_3:return"1.3";case i.L2:return"2";case i.L2_1:return"2.1";case i.L2_2:return"2.2";case i.L3:return"3";case i.L3_1:return"3.1";case i.L3_2:return"3.2";case i.L4:return"4";case i.L4_1:return"4.1";case i.L4_2:return"4.2";case i.L5:return"5";case i.L5_1:return"5.1";case i.L5_2:return"5.2";default:n.warn(`levelToString() | unrecognized level ${e}`);return}},e.exports.parseSdpProfileLevelId=f,e.exports.isSameProfile=function(e={},t={}){let r=f(e),i=f(t);return!!(r&&i&&r.profile===i.profile)},e.exports.generateProfileLevelIdStringForAnswer=function(e={},t={}){var r,s;if(!e["profile-level-id"]&&!t["profile-level-id"]){n.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");return}let a=f(e),c=f(t);if(!a)throw TypeError("invalid local_profile_level_id");if(!c)throw TypeError("invalid remote_profile_level_id");if(a.profile!==c.profile)throw TypeError("H264 Profile mismatch");let d=v(e)&&v(t),l=a.level,p=(r=l,s=c.level,(r===i.L1_b?s!==i.L1&&s!==i.L1_b:s===i.L1_b?r!==i.L1:r<s)?r:s),h=d?l:p;return n.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${a.profile}, level:${h}]`),m(new o(a.profile,h))}}),m("g9uXJ",function(e,t){var r=e.exports&&e.exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Logger=void 0;let i=r(u("1JjHr")),s="h264-profile-level-id";e.exports.Logger=class{constructor(e){e?(this._debug=(0,i.default)(`${s}:${e}`),this._warn=(0,i.default)(`${s}:WARN:${e}`),this._error=(0,i.default)(`${s}:ERROR:${e}`)):(this._debug=(0,i.default)(s),this._warn=(0,i.default)(`${s}:WARN`),this._error=(0,i.default)(`${s}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}}}),m("baDpS",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t},a=e.exports&&e.exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Transport=void 0;var n=u("gQ1gG");let o=a(u("9VcOR"));var c=u("7Wufc"),d=u("jvUzX"),l=u("6yq6Z");let p=s(u("2fqxq")),h=s(u("kIl0y"));var m=u("iSZvy"),f=u("3HSbG"),g=u("gLRXX"),v=u("420JU");let _=new c.Logger("Transport");class b{constructor(e){this.consumerOptions=e,this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}class w extends d.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:a,iceServers:o,iceTransportPolicy:c,additionalSettings:l,proprietaryConstraints:h,appData:u,handlerFactory:m,extendedRtpCapabilities:f,canProduceByKind:g}){super(),this._closed=!1,this._iceGatheringState="new",this._connectionState="new",this._producers=new Map,this._consumers=new Map,this._dataProducers=new Map,this._dataConsumers=new Map,this._probatorConsumerCreated=!1,this._awaitQueue=new n.AwaitQueue,this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._pendingPauseConsumers=new Map,this._consumerPauseInProgress=!1,this._pendingResumeConsumers=new Map,this._consumerResumeInProgress=!1,this._pendingCloseConsumers=new Map,this._consumerCloseInProgress=!1,this._observer=new d.EnhancedEventEmitter,_.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=f,this._canProduceByKind=g,this._maxSctpMessageSize=a?a.maxMessageSize:null,l=p.clone(l)||{},delete l.iceServers,delete l.iceTransportPolicy,delete l.bundlePolicy,delete l.rtcpMuxPolicy,delete l.sdpSemantics,this._handler=m(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:a,iceServers:o,iceTransportPolicy:c,additionalSettings:l,proprietaryConstraints:h,extendedRtpCapabilities:f}),this._appData=u||{},this.handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get iceGatheringState(){return this._iceGatheringState}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){if(!this._closed){for(let e of(_.debug("close()"),this._closed=!0,this._awaitQueue.stop(),this._handler.close(),this._connectionState="closed",this._producers.values()))e.transportClosed();for(let e of(this._producers.clear(),this._consumers.values()))e.transportClosed();for(let e of(this._consumers.clear(),this._dataProducers.values()))e.transportClosed();for(let e of(this._dataProducers.clear(),this._dataConsumers.values()))e.transportClosed();this._dataConsumers.clear(),this._observer.safeEmit("close")}}async getStats(){if(this._closed)throw new l.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(_.debug("restartIce()"),this._closed)throw new l.InvalidStateError("closed");if(!e)throw TypeError("missing iceParameters");return this._awaitQueue.push(async()=>await this._handler.restartIce(e),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(_.debug("updateIceServers()"),this._closed)throw new l.InvalidStateError("closed");if(!Array.isArray(e))throw TypeError("missing iceServers");return this._awaitQueue.push(async()=>this._handler.updateIceServers(e),"transport.updateIceServers()")}async produce({track:e,encodings:t,codecOptions:r,codec:i,stopTracks:s=!0,disableTrackOnPause:a=!0,zeroRtpOnPause:n=!1,appData:o={}}={}){if(_.debug("produce() [track:%o]",e),this._closed)throw new l.InvalidStateError("closed");if(e){if("send"!==this._direction)throw new l.UnsupportedError("not a sending Transport");if(this._canProduceByKind[e.kind]){if("ended"===e.readyState)throw new l.InvalidStateError("track ended");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("produce"))throw TypeError('no "produce" listener set into this transport');else if(o&&"object"!=typeof o)throw TypeError("if given, appData must be an object")}else throw new l.UnsupportedError(`cannot produce ${e.kind}`)}else throw TypeError("missing track");return this._awaitQueue.push(async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=t.map(e=>{let t={active:!0};return!1===e.active&&(t.active=!1),"boolean"==typeof e.dtx&&(t.dtx=e.dtx),"string"==typeof e.scalabilityMode&&(t.scalabilityMode=e.scalabilityMode),"number"==typeof e.scaleResolutionDownBy&&(t.scaleResolutionDownBy=e.scaleResolutionDownBy),"number"==typeof e.maxBitrate&&(t.maxBitrate=e.maxBitrate),"number"==typeof e.maxFramerate&&(t.maxFramerate=e.maxFramerate),"boolean"==typeof e.adaptivePtime&&(t.adaptivePtime=e.adaptivePtime),"string"==typeof e.priority&&(t.priority=e.priority),"string"==typeof e.networkPriority&&(t.networkPriority=e.networkPriority),t}));let{localId:d,rtpParameters:l,rtpSender:p}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{h.validateRtpParameters(l);let{id:t}=await new Promise((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:o},t,r)}),r=new m.Producer({id:t,localId:d,rtpSender:p,track:e,rtpParameters:l,stopTracks:s,disableTrackOnPause:a,zeroRtpOnPause:n,appData:o});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).catch(()=>{}),e}},"transport.produce()").catch(t=>{if(s)try{e.stop()}catch(e){}throw t})}async consume({id:e,producerId:t,kind:r,rtpParameters:i,streamId:s,appData:a={}}){if(_.debug("consume()"),i=p.clone(i),this._closed)throw new l.InvalidStateError("closed");if("recv"!==this._direction)throw new l.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw TypeError("missing id");if("string"!=typeof t)throw TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw TypeError('no "connect" listener set into this transport');if(a&&"object"!=typeof a)throw TypeError("if given, appData must be an object");if(!h.canReceive(i,this._extendedRtpCapabilities))throw new l.UnsupportedError("cannot consume this Producer");let n=new b({id:e,producerId:t,kind:r,rtpParameters:i,streamId:s,appData:a});return this._pendingConsumerTasks.push(n),(0,o.default)(()=>{this._closed||!1!==this._consumerCreationInProgress||this.createPendingConsumers()}),n.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:s="",appData:a={}}={}){if(_.debug("produceData()"),this._closed)throw new l.InvalidStateError("closed");if("send"!==this._direction)throw new l.UnsupportedError("not a sending Transport");if(this._maxSctpMessageSize){if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("producedata"))throw TypeError('no "producedata" listener set into this transport');if(a&&"object"!=typeof a)throw TypeError("if given, appData must be an object")}else throw new l.UnsupportedError("SCTP not enabled by remote Transport");return(t||r)&&(e=!1),this._awaitQueue.push(async()=>{let{dataChannel:n,sctpStreamParameters:o}=await this._handler.sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s});h.validateSctpStreamParameters(o);let{id:c}=await new Promise((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:o,label:i,protocol:s,appData:a},e,t)}),d=new g.DataProducer({id:c,dataChannel:n,sctpStreamParameters:o,appData:a});return this._dataProducers.set(d.id,d),this.handleDataProducer(d),this._observer.safeEmit("newdataproducer",d),d},"transport.produceData()")}async consumeData({id:e,dataProducerId:t,sctpStreamParameters:r,label:i="",protocol:s="",appData:a={}}){if(_.debug("consumeData()"),r=p.clone(r),this._closed)throw new l.InvalidStateError("closed");if("recv"!==this._direction)throw new l.UnsupportedError("not a receiving Transport");if(this._maxSctpMessageSize){if("string"!=typeof e)throw TypeError("missing id");if("string"!=typeof t)throw TypeError("missing dataProducerId");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw TypeError('no "connect" listener set into this transport');else if(a&&"object"!=typeof a)throw TypeError("if given, appData must be an object")}else throw new l.UnsupportedError("SCTP not enabled by remote Transport");return h.validateSctpStreamParameters(r),this._awaitQueue.push(async()=>{let{dataChannel:n}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:s}),o=new v.DataConsumer({id:e,dataProducerId:t,dataChannel:n,sctpStreamParameters:r,appData:a});return this._dataConsumers.set(o.id,o),this.handleDataConsumer(o),this._observer.safeEmit("newdataconsumer",o),o},"transport.consumeData()")}async createPendingConsumers(){this._consumerCreationInProgress=!0,this._awaitQueue.push(async()=>{let e;if(0===this._pendingConsumerTasks.length){_.debug("createPendingConsumers() | there is no Consumer to be created");return}let t=[...this._pendingConsumerTasks];this._pendingConsumerTasks=[];let r=[];for(let e of t){let{id:t,kind:i,rtpParameters:s,streamId:a}=e.consumerOptions;r.push({trackId:t,kind:i,rtpParameters:s,streamId:a})}try{let i=await this._handler.receive(r);for(let r=0;r<i.length;++r){let s=t[r],a=i[r],{id:n,producerId:o,kind:c,rtpParameters:d,appData:l}=s.consumerOptions,{localId:p,rtpReceiver:h,track:u}=a,m=new f.Consumer({id:n,localId:p,producerId:o,rtpReceiver:h,track:u,rtpParameters:d,appData:l});this._consumers.set(m.id,m),this.handleConsumer(m),this._probatorConsumerCreated||e||"video"!==c||(e=m),this._observer.safeEmit("newconsumer",m),s.resolve(m)}}catch(e){for(let r of t)r.reject(e)}if(e)try{let t=h.generateProbatorRtpParameters(e.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:t}]),_.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){_.error("createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}},"transport.createPendingConsumers()").then(()=>{this._consumerCreationInProgress=!1,this._pendingConsumerTasks.length>0&&this.createPendingConsumers()}).catch(()=>{})}pausePendingConsumers(){this._consumerPauseInProgress=!0,this._awaitQueue.push(async()=>{if(0===this._pendingPauseConsumers.size){_.debug("pausePendingConsumers() | there is no Consumer to be paused");return}let e=Array.from(this._pendingPauseConsumers.values());this._pendingPauseConsumers.clear();try{let t=e.map(e=>e.localId);await this._handler.pauseReceiving(t)}catch(e){_.error("pausePendingConsumers() | failed to pause Consumers:",e)}},"transport.pausePendingConsumers").then(()=>{this._consumerPauseInProgress=!1,this._pendingPauseConsumers.size>0&&this.pausePendingConsumers()}).catch(()=>{})}resumePendingConsumers(){this._consumerResumeInProgress=!0,this._awaitQueue.push(async()=>{if(0===this._pendingResumeConsumers.size){_.debug("resumePendingConsumers() | there is no Consumer to be resumed");return}let e=Array.from(this._pendingResumeConsumers.values());this._pendingResumeConsumers.clear();try{let t=e.map(e=>e.localId);await this._handler.resumeReceiving(t)}catch(e){_.error("resumePendingConsumers() | failed to resume Consumers:",e)}},"transport.resumePendingConsumers").then(()=>{this._consumerResumeInProgress=!1,this._pendingResumeConsumers.size>0&&this.resumePendingConsumers()}).catch(()=>{})}closePendingConsumers(){this._consumerCloseInProgress=!0,this._awaitQueue.push(async()=>{if(0===this._pendingCloseConsumers.size){_.debug("closePendingConsumers() | there is no Consumer to be closed");return}let e=Array.from(this._pendingCloseConsumers.values());this._pendingCloseConsumers.clear();try{await this._handler.stopReceiving(e.map(e=>e.localId))}catch(e){_.error("closePendingConsumers() | failed to close Consumers:",e)}},"transport.closePendingConsumers").then(()=>{this._consumerCloseInProgress=!1,this._pendingCloseConsumers.size>0&&this.closePendingConsumers()}).catch(()=>{})}handleHandler(){let e=this._handler;e.on("@connect",({dtlsParameters:e},t,r)=>{if(this._closed){r(new l.InvalidStateError("closed"));return}this.safeEmit("connect",{dtlsParameters:e},t,r)}),e.on("@icegatheringstatechange",e=>{e===this._iceGatheringState||(_.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))}),e.on("@connectionstatechange",e=>{e===this._connectionState||(_.debug("connection state changed to %s",e),this._connectionState=e,this._closed||this.safeEmit("connectionstatechange",e))})}handleProducer(e){e.on("@close",()=>{this._producers.delete(e.id),this._closed||this._awaitQueue.push(async()=>await this._handler.stopSending(e.localId),"producer @close event").catch(e=>_.warn("producer.close() failed:%o",e))}),e.on("@pause",(t,r)=>{this._awaitQueue.push(async()=>await this._handler.pauseSending(e.localId),"producer @pause event").then(t).catch(r)}),e.on("@resume",(t,r)=>{this._awaitQueue.push(async()=>await this._handler.resumeSending(e.localId),"producer @resume event").then(t).catch(r)}),e.on("@replacetrack",(t,r,i)=>{this._awaitQueue.push(async()=>await this._handler.replaceTrack(e.localId,t),"producer @replacetrack event").then(r).catch(i)}),e.on("@setmaxspatiallayer",(t,r,i)=>{this._awaitQueue.push(async()=>await this._handler.setMaxSpatialLayer(e.localId,t),"producer @setmaxspatiallayer event").then(r).catch(i)}),e.on("@setrtpencodingparameters",(t,r,i)=>{this._awaitQueue.push(async()=>await this._handler.setRtpEncodingParameters(e.localId,t),"producer @setrtpencodingparameters event").then(r).catch(i)}),e.on("@getstats",(t,r)=>{if(this._closed)return r(new l.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)})}handleConsumer(e){e.on("@close",()=>{this._consumers.delete(e.id),this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.delete(e.id),this._closed||(this._pendingCloseConsumers.set(e.id,e),!1===this._consumerCloseInProgress&&this.closePendingConsumers())}),e.on("@pause",()=>{this._pendingResumeConsumers.has(e.id)&&this._pendingResumeConsumers.delete(e.id),this._pendingPauseConsumers.set(e.id,e),(0,o.default)(()=>{this._closed||!1!==this._consumerPauseInProgress||this.pausePendingConsumers()})}),e.on("@resume",()=>{this._pendingPauseConsumers.has(e.id)&&this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.set(e.id,e),(0,o.default)(()=>{this._closed||!1!==this._consumerResumeInProgress||this.resumePendingConsumers()})}),e.on("@getstats",(t,r)=>{if(this._closed)return r(new l.InvalidStateError("closed"));this._handler.getReceiverStats(e.localId).then(t).catch(r)})}handleDataProducer(e){e.on("@close",()=>{this._dataProducers.delete(e.id)})}handleDataConsumer(e){e.on("@close",()=>{this._dataConsumers.delete(e.id)})}}e.exports.Transport=w}),m("gQ1gG",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.AwaitQueue=e.exports.AwaitQueueRemovedTaskError=e.exports.AwaitQueueStoppedError=void 0;let r=new(u("aiILj")).Logger;class i extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,i)}}e.exports.AwaitQueueStoppedError=i;class s extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,s)}}e.exports.AwaitQueueRemovedTaskError=s,e.exports.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTaskId=0,this.stopping=!1}get size(){return this.pendingTasks.size}async push(e,t){if(t=t??e.name,r.debug(`push() [name:${t}]`),"function"!=typeof e)throw TypeError("given task is not a function");if(t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise((i,s)=>{let a={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(a.completed)return;a.completed=!0,this.pendingTasks.delete(a.id),r.debug(`resolving task [name:${a.name}]`),i(e);let[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!a.completed&&(a.completed=!0,this.pendingTasks.delete(a.id),r.debug(`rejecting task [name:${a.name}]: %s`,String(e)),s(e),!this.stopping)){let[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(a.id,a),1===this.pendingTasks.size&&this.execute(a)})}stop(){for(let e of(r.debug("stop()"),this.stopping=!0,this.pendingTasks.values()))r.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new i);this.stopping=!1}remove(e){r.debug(`remove() [taskIdx:${e}]`);let t=Array.from(this.pendingTasks.values())[e];if(!t){r.debug(`stop() | no task with given idx [taskIdx:${e}]`);return}t.reject(new s)}dump(){let e=Date.now(),t=0;return Array.from(this.pendingTasks.values()).map(r=>({idx:t++,task:r.task,name:r.name,enqueuedTime:r.executedAt?r.executedAt-r.enqueuedAt:e-r.enqueuedAt,executionTime:r.executedAt?e-r.executedAt:0}))}async execute(e){if(r.debug(`execute() [name:${e.name}]`),e.executedAt)throw Error("task already being executed");e.executedAt=Date.now();try{let t=await e.task();e.resolve(t)}catch(t){e.reject(t)}}}}),m("aiILj",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Logger=void 0;var r=u("1JjHr");let i="awaitqueue";e.exports.Logger=class{constructor(e){e?(this._debug=(0,r.default)(`${i}:${e}`),this._warn=(0,r.default)(`${i}:WARN:${e}`),this._error=(0,r.default)(`${i}:ERROR:${e}`)):(this._debug=(0,r.default)(i),this._warn=(0,r.default)(`${i}:WARN`),this._error=(0,r.default)(`${i}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}}}),m("9VcOR",function(e,t){/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */let r;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:d):e=>(r||(r=Promise.resolve())).then(e).catch(e=>setTimeout(()=>{throw e},0))}),m("3HSbG",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Consumer=void 0;var r=u("7Wufc"),i=u("jvUzX"),s=u("6yq6Z");let a=new r.Logger("Consumer");class n extends i.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:s,track:n,rtpParameters:o,appData:c}){super(),this._closed=!1,this._observer=new i.EnhancedEventEmitter,a.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=s,this._track=n,this._rtpParameters=o,this._paused=!n.enabled,this._appData=c||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get producerId(){return this._producerId}get closed(){return this._closed}get kind(){return this._track.kind}get rtpReceiver(){return this._rtpReceiver}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(a.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(a.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new s.InvalidStateError("closed");return new Promise((e,t)=>{this.safeEmit("@getstats",e,t)})}pause(){if(a.debug("pause()"),this._closed){a.error("pause() | Consumer closed");return}if(this._paused){a.debug("pause() | Consumer is already paused");return}this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause")}resume(){if(a.debug("resume()"),this._closed){a.error("resume() | Consumer closed");return}if(!this._paused){a.debug("resume() | Consumer is already resumed");return}this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")}onTrackEnded(){a.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){try{this._track.removeEventListener("ended",this.onTrackEnded),this._track.stop()}catch(e){}}}e.exports.Consumer=n}),m("gLRXX",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.DataProducer=void 0;var r=u("7Wufc"),i=u("jvUzX"),s=u("6yq6Z");let a=new r.Logger("DataProducer");class n extends i.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:s}){super(),this._closed=!1,this._observer=new i.EnhancedEventEmitter,a.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=s||{},this.handleDataChannel()}get id(){return this._id}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get bufferedAmount(){return this._dataChannel.bufferedAmount}get bufferedAmountLowThreshold(){return this._dataChannel.bufferedAmountLowThreshold}set bufferedAmountLowThreshold(e){this._dataChannel.bufferedAmountLowThreshold=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(a.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(a.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(a.debug("send()"),this._closed)throw new s.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",()=>{this._closed||(a.debug('DataChannel "open" event'),this.safeEmit("open"))}),this._dataChannel.addEventListener("error",e=>{if(this._closed)return;let{error:t}=e;t||(t=Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?a.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):a.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)}),this._dataChannel.addEventListener("close",()=>{this._closed||(a.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))}),this._dataChannel.addEventListener("message",()=>{this._closed||a.warn('DataChannel "message" event in a DataProducer, message discarded')}),this._dataChannel.addEventListener("bufferedamountlow",()=>{this._closed||this.safeEmit("bufferedamountlow")})}}e.exports.DataProducer=n}),m("420JU",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.DataConsumer=void 0;var r=u("7Wufc"),i=u("jvUzX");let s=new r.Logger("DataConsumer");class a extends i.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:a,appData:n}){super(),this._closed=!1,this._observer=new i.EnhancedEventEmitter,s.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=a,this._appData=n||{},this.handleDataChannel()}get id(){return this._id}get dataProducerId(){return this._dataProducerId}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get binaryType(){return this._dataChannel.binaryType}set binaryType(e){this._dataChannel.binaryType=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(s.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(s.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",()=>{this._closed||(s.debug('DataChannel "open" event'),this.safeEmit("open"))}),this._dataChannel.addEventListener("error",e=>{if(this._closed)return;let{error:t}=e;t||(t=Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?s.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):s.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)}),this._dataChannel.addEventListener("close",()=>{this._closed||(s.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))}),this._dataChannel.addEventListener("message",e=>{this._closed||this.safeEmit("message",e.data)})}}e.exports.DataConsumer=a}),m("9Mg8R",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Chrome111=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc");let o=s(u("2fqxq")),c=s(u("kIl0y")),d=s(u("5opQr")),l=s(u("b4hOr")),p=s(u("bt0QK"));var h=u("6yq6Z"),m=u("6bVBA"),f=u("47IPL"),g=u("kBU2H");let v=new n.Logger("Chrome111"),_={OS:1024,MIS:1024};class b extends m.HandlerInterface{static createFactory(){return()=>new b}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome111"}close(){if(v.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){v.debug("getNativeRtpCapabilities()");let e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");let t=await e.createOffer();try{e.close()}catch(e){}let r=a.parse(t.sdp),i=d.extractRtpCapabilities({sdpObject:r});return p.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return v.debug("getNativeSctpCapabilities()"),{numStreams:_}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:d,extendedRtpCapabilities:l}){this.assertNotClosed(),v.debug("run()"),this._direction=e,this._remoteSdp=new f.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:c.getSendingRtpParameters("audio",l),video:c.getSendingRtpParameters("video",l)},this._sendingRemoteRtpParametersByKind={audio:c.getSendingRemoteRtpParameters("audio",l),video:c.getSendingRemoteRtpParameters("video",l)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:a||[],iceTransportPolicy:n||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},d),this._pc.addEventListener("icegatheringstatechange",()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)}),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",()=>{this.emit("@connectionstatechange",this._pc.connectionState)}):(v.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),v.debug("updateIceServers()");let t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),v.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady){if("send"===this._direction){let e=await this._pc.createOffer({iceRestart:!0});v.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);let t={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{let e={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();v.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){if(this.assertNotClosed(),this.assertSendDirection(),v.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach((e,t)=>{e.rid=`r${t}`});let e=1,r=1;for(let e of t){let t=e.scalabilityMode?(0,g.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(let i of t)i.rid=`r${e++}`,i.scalabilityMode=`L1T${r}`}let s=o.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=c.reduceCodecs(s.codecs,i);let n=o.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=c.reduceCodecs(n.codecs,i);let p=this._remoteSdp.getNextMediaSectionIdx(),h=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),u=await this._pc.createOffer(),m=a.parse(u.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:m}),v.debug("send() | calling pc.setLocalDescription() [offer:%o]",u),await this._pc.setLocalDescription(u);let f=h.mid;s.mid=f;let _=(m=a.parse(this._pc.localDescription.sdp)).media[p.idx];if(s.rtcp.cname=d.getCname({offerMediaObject:_}),t){if(1===t.length){let e=l.getRtpEncodings({offerMediaObject:_});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t}else s.encodings=l.getRtpEncodings({offerMediaObject:_});this._remoteSdp.send({offerMediaObject:_,reuseMid:p.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});let b={type:"answer",sdp:this._remoteSdp.getSdp()};return v.debug("send() | calling pc.setRemoteDescription() [answer:%o]",b),await this._pc.setRemoteDescription(b),this._mapMidTransceiver.set(f,h),{localId:f,rtpParameters:s,rtpSender:h.sender}}async stopSending(e){if(this.assertSendDirection(),v.debug("stopSending() [localId:%s]",e),this._closed)return;let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");if(t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}let r=await this._pc.createOffer();v.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),v.debug("pauseSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);let r=await this._pc.createOffer();v.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),v.debug("resumeSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw Error("associated RTCRtpTransceiver not found");t.direction="sendonly";let r=await this._pc.createOffer();v.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?v.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):v.debug("replaceTrack() [localId:%s, no track]",e);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),v.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{r<=t?e.active=!0:e.active=!1}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();v.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),v.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{i.encodings[r]={...e,...t}}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();v.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();let n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};v.debug("sendDataChannel() [options:%o]",n);let o=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%_.MIS,!this._hasDataChannelMediaSection){let e=await this._pc.createOffer(),t=a.parse(e.sdp),r=t.media.find(e=>"application"===e.type);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),v.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();let t=[],r=new Map;for(let t of e){let{trackId:e,kind:i,rtpParameters:s,streamId:a}=t;v.debug("receive() [trackId:%s, kind:%s]",e,i);let n=s.mid||String(this._mapMidTransceiver.size);r.set(e,n),this._remoteSdp.receive({mid:n,kind:i,offerRtpParameters:s,streamId:a||s.rtcp.cname,trackId:e})}let i={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer(),n=a.parse(s.sdp);for(let t of e){let{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find(e=>String(e.mid)===s);d.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}for(let i of(s={type:"answer",sdp:a.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),v.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s),e)){let{trackId:e}=i,s=r.get(e),a=this._pc.getTransceivers().find(e=>e.mid===s);if(a)this._mapMidTransceiver.set(s,a),t.push({localId:s,track:a.receiver.track,rtpReceiver:a.receiver});else throw Error("new RTCRtpTransceiver not found")}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(let t of e){v.debug("stopReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();for(let t of(v.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r),e))this._mapMidTransceiver.delete(t)}async pauseReceiving(e){for(let t of(this.assertNotClosed(),this.assertRecvDirection(),e)){v.debug("pauseReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();v.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){for(let t of(this.assertNotClosed(),this.assertRecvDirection(),e)){v.debug("resumeReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();v.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();let{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o,protocol:r};v.debug("receiveDataChannel() [options:%o]",c);let d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();let e={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();if(!this._transportReady){let e=a.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}v.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=a.parse(this._pc.localDescription.sdp));let r=d.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)}),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new h.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw Error('method can just be called for handlers with "recv" direction')}}e.exports.Chrome111=b}),m("1HJ2f",function(e,t){l(e.exports,"write",()=>r,e=>r=e),l(e.exports,"parse",()=>i,e=>i=e),l(e.exports,"parseParams",()=>s,e=>s=e),l(e.exports,"parseFmtpConfig",()=>a,e=>a=e),l(e.exports,"parsePayloads",()=>n,e=>n=e),l(e.exports,"parseRemoteCandidates",()=>o,e=>o=e),l(e.exports,"parseImageAttributes",()=>c,e=>c=e),l(e.exports,"parseSimulcastStreamList",()=>d,e=>d=e);var r,i,s,a,n,o,c,d,p=u("5e5es");r=u("3CYVM"),i=p.parse,s=p.parseParams,a=p.parseFmtpConfig,n=p.parsePayloads,o=p.parseRemoteCandidates,c=p.parseImageAttributes,d=p.parseSimulcastStreamList}),m("5e5es",function(e,t){l(e.exports,"parse",()=>r,e=>r=e),l(e.exports,"parseParams",()=>i,e=>i=e),l(e.exports,"parseFmtpConfig",()=>s,e=>s=e),l(e.exports,"parsePayloads",()=>a,e=>a=e),l(e.exports,"parseRemoteCandidates",()=>n,e=>n=e),l(e.exports,"parseImageAttributes",()=>o,e=>o=e),l(e.exports,"parseSimulcastStreamList",()=>c,e=>c=e);var r,i,s,a,n,o,c,d=function(e){return String(Number(e))===e?Number(e):e},p=function(e,t,r,i){if(i&&!r)t[i]=d(e[1]);else for(var s=0;s<r.length;s+=1)null!=e[s+1]&&(t[r[s]]=d(e[s+1]))},h=function(e,t,r){var i=e.name&&e.names;e.push&&!t[e.push]?t[e.push]=[]:i&&!t[e.name]&&(t[e.name]={});var s=e.push?{}:i?t[e.name]:t;p(r.match(e.reg),s,e.names,e.name),e.push&&t[e.push].push(s)},m=u("aPbew"),f=RegExp.prototype.test.bind(/^([a-z])=(.*)/);r=function(e){var t={},r=[],i=t;return e.split(/(\r\n|\r|\n)/).filter(f).forEach(function(e){var t=e[0],s=e.slice(2);"m"===t&&(r.push({rtp:[],fmtp:[]}),i=r[r.length-1]);for(var a=0;a<(m[t]||[]).length;a+=1){var n=m[t][a];if(n.reg.test(s))return h(n,i,s)}}),t.media=r,t};var g=function(e,t){var r=t.split(/=(.+)/,2);return 2===r.length?e[r[0]]=d(r[1]):1===r.length&&t.length>1&&(e[r[0]]=void 0),e};s=i=function(e){return e.split(/;\s?/).reduce(g,{})},a=function(e){return e.toString().split(" ").map(Number)},n=function(e){for(var t=[],r=e.split(" ").map(d),i=0;i<r.length;i+=3)t.push({component:r[i],ip:r[i+1],port:r[i+2]});return t},o=function(e){return e.split(" ").map(function(e){return e.substring(1,e.length-1).split(",").reduce(g,{})})},c=function(e){return e.split(";").map(function(e){return e.split(",").map(function(e){var t,r=!1;return"~"!==e[0]?t=d(e):(t=d(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}}),m("aPbew",function(e,t){var r=e.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=(null!=e.raddr?" raddr %s rport %d":"%v%v")+(null!=e.tcptype?" tcptype %s":"%v"),null!=e.generation&&(t+=" generation %d"),t+=(null!=e["network-id"]?" network-id %d":"%v")+(null!=e["network-cost"]?" network-cost %d":"%v")}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){return"mediaclk:"+((null!=e.id?"id=%s %s":"%v%s")+(null!=e.mediaClockValue?"=%s":"")+(null!=e.rateNumerator?" rate=%s":""))+(null!=e.rateDenominator?"/%s":"")}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(r).forEach(function(e){r[e].forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})}),m("3CYVM",function(e,t){var r=u("aPbew"),i=/%[sdv%]/g,s=function(e){var t=1,r=arguments,s=r.length;return e.replace(i,function(e){if(t>=s)return e;var i=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(i);case"%d":return Number(i);case"%v":return""}})},a=function(e,t,r){var i=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var a=0;a<t.names.length;a+=1){var n=t.names[a];t.name?i.push(r[t.name][n]):i.push(r[t.names[a]])}else i.push(r[t.name]);return s.apply(null,i)},n=["v","o","s","i","u","e","p","c","b","t","r","z","a"],o=["i","c","b","a"];e.exports=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach(function(e){null==e.payloads&&(e.payloads="")});var i=t.outerOrder||n,s=t.innerOrder||o,c=[];return i.forEach(function(t){r[t].forEach(function(r){r.name in e&&null!=e[r.name]?c.push(a(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach(function(e){c.push(a(t,r,e))})})}),e.media.forEach(function(e){c.push(a("m",r.m[0],e)),s.forEach(function(t){r[t].forEach(function(r){r.name in e&&null!=e[r.name]?c.push(a(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach(function(e){c.push(a(t,r,e))})})})}),c.join("\r\n")+"\r\n"}}),m("5opQr",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.applyCodecParameters=e.exports.getCname=e.exports.extractDtlsParameters=e.exports.extractRtpCapabilities=void 0;let a=s(u("1HJ2f"));e.exports.extractRtpCapabilities=function({sdpObject:e}){let t=new Map,r=[],i=!1,s=!1;for(let n of e.media){let e=n.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(s)continue;s=!0;break;default:continue}for(let r of n.rtp){let i={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(i.preferredPayloadType,i)}for(let e of n.fmtp||[]){let r=a.parseParams(e.config),i=t.get(e.payload);i&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),i.parameters=r)}for(let r of n.rtcpFb||[]){let i={type:r.type,parameter:r.subtype};if(i.parameter||delete i.parameter,"*"!==r.payload){let e=t.get(r.payload);if(!e)continue;e.rtcpFeedback.push(i)}else for(let r of t.values())r.kind!==e||/.+\/rtx$/i.test(r.mimeType)||r.rtcpFeedback.push(i)}for(let t of n.ext||[]){if(t["encrypt-uri"])continue;let i={kind:e,uri:t.uri,preferredId:t.value};r.push(i)}}return{codecs:Array.from(t.values()),headerExtensions:r}},e.exports.extractDtlsParameters=function({sdpObject:e}){let t,r=e.setup,i=e.fingerprint;if(!r||!i){let t=(e.media||[]).find(e=>0!==e.port);t&&(r??(r=t.setup),i??(i=t.fingerprint))}if(r){if(!i)throw Error("no a=fingerprint found at SDP session or media level")}else throw Error("no a=setup found at SDP session or media level");switch(r){case"active":t="client";break;case"passive":t="server";break;case"actpass":t="auto"}return{role:t,fingerprints:[{algorithm:i.type,value:i.hash}]}},e.exports.getCname=function({offerMediaObject:e}){let t=(e.ssrcs||[]).find(e=>"cname"===e.attribute);return t?t.value:""},e.exports.applyCodecParameters=function({offerRtpParameters:e,answerMediaObject:t}){for(let r of e.codecs){let e=r.mimeType.toLowerCase();if("audio/opus"!==e||!(t.rtp||[]).find(e=>e.payload===r.payloadType))continue;t.fmtp=t.fmtp||[];let i=t.fmtp.find(e=>e.payload===r.payloadType);i||(i={payload:r.payloadType,config:""},t.fmtp.push(i));let s=a.parseParams(i.config);if("audio/opus"===e){let e=r.parameters["sprop-stereo"];void 0!==e&&(s.stereo=e?1:0)}for(let e of(i.config="",Object.keys(s)))i.config&&(i.config+=";"),i.config+=`${e}=${s[e]}`}}}),m("b4hOr",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.addLegacySimulcast=e.exports.getRtpEncodings=void 0,e.exports.getRtpEncodings=function({offerMediaObject:e}){let t=new Set;for(let r of e.ssrcs||[]){let e=r.id;t.add(e)}if(0===t.size)throw Error("no a=ssrc lines found");let r=new Map;for(let i of e.ssrcGroups||[]){if("FID"!==i.semantics)continue;let[e,s]=i.ssrcs.split(/\s+/);e=Number(e),s=Number(s),t.has(e)&&(t.delete(e),t.delete(s),r.set(e,s))}for(let e of t)r.set(e,null);let i=[];for(let[e,t]of r){let r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},e.exports.addLegacySimulcast=function({offerMediaObject:e,numStreams:t}){let r;if(t<=1)throw TypeError("numStreams must be greater than 1");let i=(e.ssrcs||[]).find(e=>"msid"===e.attribute);if(!i)throw Error("a=ssrc line with msid information not found");let[s,a]=i.value.split(" "),n=i.id;(e.ssrcGroups||[]).some(e=>{if("FID"!==e.semantics)return!1;let t=e.ssrcs.split(/\s+/);return Number(t[0])===n&&(r=Number(t[1]),!0)});let o=e.ssrcs.find(e=>"cname"===e.attribute);if(!o)throw Error("a=ssrc line with cname information not found");let c=o.value,d=[],l=[];for(let e=0;e<t;++e)d.push(n+e),r&&l.push(r+e);e.ssrcGroups=[],e.ssrcs=[],e.ssrcGroups.push({semantics:"SIM",ssrcs:d.join(" ")});for(let t=0;t<d.length;++t){let r=d[t];e.ssrcs.push({id:r,attribute:"cname",value:c}),e.ssrcs.push({id:r,attribute:"msid",value:`${s} ${a}`})}for(let t=0;t<l.length;++t){let r=d[t],i=l[t];e.ssrcs.push({id:i,attribute:"cname",value:c}),e.ssrcs.push({id:i,attribute:"msid",value:`${s} ${a}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${i}`})}}}),m("bt0QK",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.addNackSuppportForOpus=void 0,e.exports.addNackSuppportForOpus=function(e){for(let t of e.codecs||[])"audio/opus"!==t.mimeType.toLowerCase()&&"audio/multiopus"!==t.mimeType.toLowerCase()||t.rtcpFeedback?.some(e=>"nack"===e.type&&!e.parameter)||(t.rtcpFeedback||(t.rtcpFeedback=[]),t.rtcpFeedback.push({type:"nack"}))}}),m("6bVBA",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.HandlerInterface=void 0;var r=u("jvUzX");class i extends r.EnhancedEventEmitter{constructor(){super()}}e.exports.HandlerInterface=i}),m("47IPL",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.RemoteSdp=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc"),o=u("lUDTj");let c=new n.Logger("RemoteSdp");e.exports.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:a=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=s,this._planB=a,this._sdpObject={version:0,origin:{address:"0.0.0.0",ipVer:4,netType:"IN",sessionId:1e4,sessionVersion:0,username:"mediasoup-client"},name:"-",timing:{start:0,stop:0},media:[]},e&&e.iceLite&&(this._sdpObject.icelite="ice-lite"),r){this._sdpObject.msidSemantic={semantic:"WMS",token:"*"};let e=this._dtlsParameters.fingerprints.length;this._sdpObject.fingerprint={type:r.fingerprints[e-1].algorithm,hash:r.fingerprints[e-1].value},this._sdpObject.groups=[{type:"BUNDLE",mids:""}]}s&&(this._sdpObject.origin.address=s.ip,this._sdpObject.origin.ipVer=s.ipVersion)}updateIceParameters(e){for(let t of(c.debug("updateIceParameters() [iceParameters:%o]",e),this._iceParameters=e,this._sdpObject.icelite=e.iceLite?"ice-lite":void 0,this._mediaSections))t.setIceParameters(e)}updateDtlsRole(e){for(let t of(c.debug("updateDtlsRole() [role:%s]",e),this._dtlsParameters.role=e,this._mediaSections))t.setDtlsRole(e)}getNextMediaSectionIdx(){for(let e=0;e<this._mediaSections.length;++e){let t=this._mediaSections[e];if(t.closed)return{idx:e,reuseMid:t.mid}}return{idx:this._mediaSections.length}}send({offerMediaObject:e,reuseMid:t,offerRtpParameters:r,answerRtpParameters:i,codecOptions:s,extmapAllowMixed:a=!1}){let n=new o.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:s,extmapAllowMixed:a});t?this._replaceMediaSection(n,t):this._midToIndex.has(n.mid)?this._replaceMediaSection(n):this._addMediaSection(n)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:s}){let a;let n=this._midToIndex.get(e);if(void 0!==n&&(a=this._mediaSections[n]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:s}),this._replaceMediaSection(a);else{a=new o.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:s});let n=this._mediaSections.find(e=>e.closed);n?this._replaceMediaSection(a,n.mid):this._addMediaSection(a)}}pauseMediaSection(e){this._findMediaSection(e).pause()}resumeSendingMediaSection(e){this._findMediaSection(e).resume()}resumeReceivingMediaSection(e){this._findMediaSection(e).resume()}disableMediaSection(e){this._findMediaSection(e).disable()}closeMediaSection(e){let t=this._findMediaSection(e);return e===this._firstMid?(c.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),this.disableMediaSection(e),!1):(t.close(),this._regenerateBundleMids(),!0)}muxMediaSectionSimulcast(e,t){let r=this._findMediaSection(e);r.muxSimulcastStreams(t),this._replaceMediaSection(r)}planBStopReceiving({mid:e,offerRtpParameters:t}){let r=this._findMediaSection(e);r.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(r)}sendSctpAssociation({offerMediaObject:e}){let t=new o.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,offerMediaObject:e});this._addMediaSection(t)}receiveSctpAssociation({oldDataChannelSpec:e=!1}={}){let t=new o.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,mid:"datachannel",kind:"application",oldDataChannelSpec:e});this._addMediaSection(t)}getSdp(){return this._sdpObject.origin.sessionVersion++,a.write(this._sdpObject)}_addMediaSection(e){this._firstMid||(this._firstMid=e.mid),this._mediaSections.push(e),this._midToIndex.set(e.mid,this._mediaSections.length-1),this._sdpObject.media.push(e.getObject()),this._regenerateBundleMids()}_replaceMediaSection(e,t){if("string"==typeof t){let r=this._midToIndex.get(t);if(void 0===r)throw Error(`no media section found for reuseMid '${t}'`);let i=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(i.mid),this._midToIndex.set(e.mid,r),this._sdpObject.media[r]=e.getObject(),this._regenerateBundleMids()}else{let t=this._midToIndex.get(e.mid);if(void 0===t)throw Error(`no media section found with mid '${e.mid}'`);this._mediaSections[t]=e,this._sdpObject.media[t]=e.getObject()}}_findMediaSection(e){let t=this._midToIndex.get(e);if(void 0===t)throw Error(`no media section found with mid '${e}'`);return this._mediaSections[t]}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter(e=>!e.closed).map(e=>e.mid).join(" "))}}}),m("lUDTj",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.OfferMediaSection=e.exports.AnswerMediaSection=e.exports.MediaSection=void 0;let a=s(u("1HJ2f")),n=s(u("2fqxq"));class o{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:i=!1}){if(this._mediaObject={},this._planB=i,e&&this.setIceParameters(e),t){for(let e of(this._mediaObject.candidates=[],t)){let t={};t.component=1,t.foundation=e.foundation,t.ip=e.ip,t.port=e.port,t.priority=e.priority,t.transport=e.protocol,t.type=e.type,e.tcpType&&(t.tcptype=e.tcpType),this._mediaObject.candidates.push(t)}this._mediaObject.endOfCandidates="end-of-candidates",this._mediaObject.iceOptions="renomination"}r&&this.setDtlsRole(r.role)}get mid(){return String(this._mediaObject.mid)}get closed(){return 0===this._mediaObject.port}getObject(){return this._mediaObject}setIceParameters(e){this._mediaObject.iceUfrag=e.usernameFragment,this._mediaObject.icePwd=e.password}pause(){this._mediaObject.direction="inactive"}disable(){this.pause(),delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids,delete this._mediaObject.extmapAllowMixed}close(){this.disable(),this._mediaObject.port=0}}function c(e){let t=RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw TypeError("invalid codec.mimeType");return t[2]}e.exports.MediaSection=o,e.exports.AnswerMediaSection=class extends o{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:a=!1,offerMediaObject:o,offerRtpParameters:d,answerRtpParameters:l,codecOptions:p,extmapAllowMixed:h=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:a}),this._mediaObject.mid=String(o.mid),this._mediaObject.type=o.type,this._mediaObject.protocol=o.protocol,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.port=s.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.port=7),o.type){case"audio":case"video":for(let e of(this._mediaObject.direction="recvonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],l.codecs)){let t={payload:e.payloadType,codec:c(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);let r=n.clone(e.parameters)??{},i=n.clone(e.rtcpFeedback)??[];if(p){let{opusStereo:t,opusFec:s,opusDtx:a,opusMaxPlaybackRate:n,opusMaxAverageBitrate:o,opusPtime:c,opusNack:l,videoGoogleStartBitrate:h,videoGoogleMaxBitrate:u,videoGoogleMinBitrate:m}=p,f=d.codecs.find(t=>t.payloadType===e.payloadType);switch(e.mimeType.toLowerCase()){case"audio/opus":case"audio/multiopus":void 0!==t&&(f.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==s&&(f.parameters.useinbandfec=s?1:0,r.useinbandfec=s?1:0),void 0!==a&&(f.parameters.usedtx=a?1:0,r.usedtx=a?1:0),void 0!==n&&(r.maxplaybackrate=n),void 0!==o&&(r.maxaveragebitrate=o),void 0!==c&&(f.parameters.ptime=c,r.ptime=c),l||(f.rtcpFeedback=f.rtcpFeedback.filter(e=>"nack"!==e.type||e.parameter),i=i.filter(e=>"nack"!==e.type||e.parameter));break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==h&&(r["x-google-start-bitrate"]=h),void 0!==u&&(r["x-google-max-bitrate"]=u),void 0!==m&&(r["x-google-min-bitrate"]=m)}}let s={payload:e.payloadType,config:""};for(let e of Object.keys(r))s.config&&(s.config+=";"),s.config+=`${e}=${r[e]}`;for(let t of(s.config&&this._mediaObject.fmtp.push(s),i))this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}for(let e of(this._mediaObject.payloads=l.codecs.map(e=>e.payloadType).join(" "),this._mediaObject.ext=[],l.headerExtensions))(o.ext||[]).some(t=>t.uri===e.uri)&&this._mediaObject.ext.push({uri:e.uri,value:e.id});if(h&&"extmap-allow-mixed"===o.extmapAllowMixed&&(this._mediaObject.extmapAllowMixed="extmap-allow-mixed"),o.simulcast)for(let e of(this._mediaObject.simulcast={dir1:"recv",list1:o.simulcast.list1},this._mediaObject.rids=[],o.rids||[]))"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"});else if(o.simulcast_03)for(let e of(this._mediaObject.simulcast_03={value:o.simulcast_03.value.replace(/send/g,"recv")},this._mediaObject.rids=[],o.rids||[]))"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize",this._planB&&"video"===this._mediaObject.type&&(this._mediaObject.xGoogleFlag="conference");break;case"application":"number"==typeof o.sctpPort?(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize):o.sctpmap&&(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize})}}setDtlsRole(e){switch(e){case"client":this._mediaObject.setup="active";break;case"server":this._mediaObject.setup="passive";break;case"auto":this._mediaObject.setup="actpass"}}resume(){this._mediaObject.direction="recvonly"}muxSimulcastStreams(e){if(!this._mediaObject.simulcast||!this._mediaObject.simulcast.list1)return;let t={};for(let r of e)r.rid&&(t[r.rid]=r);let r=this._mediaObject.simulcast.list1,i=a.parseSimulcastStreamList(r);for(let e of i)for(let r of e)r.paused=!t[r.scid]?.active;this._mediaObject.simulcast.list1=i.map(e=>e.map(e=>`${e.paused?"~":""}${e.scid}`).join(",")).join(";")}},e.exports.OfferMediaSection=class extends o{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:a=!1,mid:n,kind:o,offerRtpParameters:d,streamId:l,trackId:p,oldDataChannelSpec:h=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:a}),this._mediaObject.mid=String(n),this._mediaObject.type=o,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=s.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},i?this._mediaObject.protocol="UDP/DTLS/SCTP":this._mediaObject.protocol="UDP/TLS/RTP/SAVPF",this._mediaObject.port=7),o){case"audio":case"video":{for(let e of(this._mediaObject.direction="sendonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],this._planB||(this._mediaObject.msid=`${l||"-"} ${p}`),d.codecs)){let t={payload:e.payloadType,codec:c(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);let r={payload:e.payloadType,config:""};for(let t of Object.keys(e.parameters))r.config&&(r.config+=";"),r.config+=`${t}=${e.parameters[t]}`;for(let t of(r.config&&this._mediaObject.fmtp.push(r),e.rtcpFeedback))this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}for(let e of(this._mediaObject.payloads=d.codecs.map(e=>e.payloadType).join(" "),this._mediaObject.ext=[],d.headerExtensions))this._mediaObject.ext.push({uri:e.uri,value:e.id});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize";let e=d.encodings[0],t=e.ssrc,r=e.rtx&&e.rtx.ssrc?e.rtx.ssrc:void 0;this._mediaObject.ssrcs=[],this._mediaObject.ssrcGroups=[],d.rtcp.cname&&this._mediaObject.ssrcs.push({id:t,attribute:"cname",value:d.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:t,attribute:"msid",value:`${l||"-"} ${p}`}),r&&(d.rtcp.cname&&this._mediaObject.ssrcs.push({id:r,attribute:"cname",value:d.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:r,attribute:"msid",value:`${l||"-"} ${p}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":h?(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}resume(){this._mediaObject.direction="sendonly"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){let i=e.encodings[0],s=i.ssrc,a=i.rtx&&i.rtx.ssrc?i.rtx.ssrc:void 0,n=this._mediaObject.payloads.split(" ");for(let t of e.codecs){if(n.includes(String(t.payloadType)))continue;let e={payload:t.payloadType,codec:c(t),rate:t.clockRate};t.channels>1&&(e.encoding=t.channels),this._mediaObject.rtp.push(e);let r={payload:t.payloadType,config:""};for(let e of Object.keys(t.parameters))r.config&&(r.config+=";"),r.config+=`${e}=${t.parameters[e]}`;for(let e of(r.config&&this._mediaObject.fmtp.push(r),t.rtcpFeedback))this._mediaObject.rtcpFb.push({payload:t.payloadType,type:e.type,subtype:e.parameter})}this._mediaObject.payloads+=` ${e.codecs.filter(e=>!this._mediaObject.payloads.includes(e.payloadType)).map(e=>e.payloadType).join(" ")}`,this._mediaObject.payloads=this._mediaObject.payloads.trim(),e.rtcp.cname&&this._mediaObject.ssrcs.push({id:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),a&&(e.rtcp.cname&&this._mediaObject.ssrcs.push({id:a,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:a,attribute:"msid",value:`${t||"-"} ${r}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${s} ${a}`}))}planBStopReceiving({offerRtpParameters:e}){let t=e.encodings[0],r=t.ssrc,i=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter(e=>e.id!==r&&e.id!==i),i&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter(e=>e.ssrcs!==`${r} ${i}`))}}}),m("kBU2H",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.parse=void 0;let r=RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");e.exports.parse=function(e){let t=r.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}}}),m("6Pcmp",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Chrome74=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc");let o=s(u("2fqxq")),c=s(u("kIl0y")),d=s(u("5opQr")),l=s(u("b4hOr")),p=s(u("bt0QK"));var h=u("6yq6Z"),m=u("6bVBA"),f=u("47IPL"),g=u("kBU2H");let v=new n.Logger("Chrome74"),_={OS:1024,MIS:1024};class b extends m.HandlerInterface{static createFactory(){return()=>new b}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome74"}close(){if(v.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){v.debug("getNativeRtpCapabilities()");let e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");let t=await e.createOffer();try{e.close()}catch(e){}let r=a.parse(t.sdp),i=d.extractRtpCapabilities({sdpObject:r});return p.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return v.debug("getNativeSctpCapabilities()"),{numStreams:_}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:d,extendedRtpCapabilities:l}){v.debug("run()"),this._direction=e,this._remoteSdp=new f.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:c.getSendingRtpParameters("audio",l),video:c.getSendingRtpParameters("video",l)},this._sendingRemoteRtpParametersByKind={audio:c.getSendingRemoteRtpParameters("audio",l),video:c.getSendingRemoteRtpParameters("video",l)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:a||[],iceTransportPolicy:n||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},d),this._pc.addEventListener("icegatheringstatechange",()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)}),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",()=>{this.emit("@connectionstatechange",this._pc.connectionState)}):(v.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),v.debug("updateIceServers()");let t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),v.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady){if("send"===this._direction){let e=await this._pc.createOffer({iceRestart:!0});v.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);let t={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{let e={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();v.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){let s;this.assertNotClosed(),this.assertSendDirection(),v.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach((e,t)=>{e.rid=`r${t}`});let n=o.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=c.reduceCodecs(n.codecs,i);let p=o.clone(this._sendingRemoteRtpParametersByKind[e.kind]);p.codecs=c.reduceCodecs(p.codecs,i);let h=this._remoteSdp.getNextMediaSectionIdx(),u=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),m=await this._pc.createOffer(),f=a.parse(m.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:f});let _=!1,b=(0,g.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&b.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(v.debug("send() | enabling legacy simulcast for VP9 SVC"),_=!0,s=(f=a.parse(m.sdp)).media[h.idx],l.addLegacySimulcast({offerMediaObject:s,numStreams:b.spatialLayers}),m={type:"offer",sdp:a.write(f)}),v.debug("send() | calling pc.setLocalDescription() [offer:%o]",m),await this._pc.setLocalDescription(m);let w=u.mid;if(n.mid=w,s=(f=a.parse(this._pc.localDescription.sdp)).media[h.idx],n.rtcp.cname=d.getCname({offerMediaObject:s}),t){if(1===t.length){let e=l.getRtpEncodings({offerMediaObject:s});Object.assign(e[0],t[0]),_&&(e=[e[0]]),n.encodings=e}else n.encodings=t}else n.encodings=l.getRtpEncodings({offerMediaObject:s});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(let e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${b.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,reuseMid:h.reuseMid,offerRtpParameters:n,answerRtpParameters:p,codecOptions:r,extmapAllowMixed:!0});let y={type:"answer",sdp:this._remoteSdp.getSdp()};return v.debug("send() | calling pc.setRemoteDescription() [answer:%o]",y),await this._pc.setRemoteDescription(y),this._mapMidTransceiver.set(w,u),{localId:w,rtpParameters:n,rtpSender:u.sender}}async stopSending(e){if(this.assertSendDirection(),v.debug("stopSending() [localId:%s]",e),this._closed)return;let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");if(t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}let r=await this._pc.createOffer();v.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),v.debug("pauseSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);let r=await this._pc.createOffer();v.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),v.debug("resumeSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw Error("associated RTCRtpTransceiver not found");t.direction="sendonly";let r=await this._pc.createOffer();v.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?v.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):v.debug("replaceTrack() [localId:%s, no track]",e);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),v.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{r<=t?e.active=!0:e.active=!1}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();v.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),v.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{i.encodings[r]={...e,...t}}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();v.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();let n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};v.debug("sendDataChannel() [options:%o]",n);let o=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%_.MIS,!this._hasDataChannelMediaSection){let e=await this._pc.createOffer(),t=a.parse(e.sdp),r=t.media.find(e=>"application"===e.type);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),v.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();let t=[],r=new Map;for(let t of e){let{trackId:e,kind:i,rtpParameters:s,streamId:a}=t;v.debug("receive() [trackId:%s, kind:%s]",e,i);let n=s.mid||String(this._mapMidTransceiver.size);r.set(e,n),this._remoteSdp.receive({mid:n,kind:i,offerRtpParameters:s,streamId:a||s.rtcp.cname,trackId:e})}let i={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer(),n=a.parse(s.sdp);for(let t of e){let{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find(e=>String(e.mid)===s);d.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}for(let i of(s={type:"answer",sdp:a.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),v.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s),e)){let{trackId:e}=i,s=r.get(e),a=this._pc.getTransceivers().find(e=>e.mid===s);if(a)this._mapMidTransceiver.set(s,a),t.push({localId:s,track:a.receiver.track,rtpReceiver:a.receiver});else throw Error("new RTCRtpTransceiver not found")}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(let t of e){v.debug("stopReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();for(let t of(v.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r),e))this._mapMidTransceiver.delete(t)}async pauseReceiving(e){for(let t of(this.assertNotClosed(),this.assertRecvDirection(),e)){v.debug("pauseReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();v.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){for(let t of(this.assertNotClosed(),this.assertRecvDirection(),e)){v.debug("resumeReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();v.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();let{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o,protocol:r};v.debug("receiveDataChannel() [options:%o]",c);let d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();let e={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();if(!this._transportReady){let e=a.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}v.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=a.parse(this._pc.localDescription.sdp));let r=d.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)}),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new h.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw Error('method can just be called for handlers with "recv" direction')}}e.exports.Chrome74=b}),m("031Hy",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Chrome70=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc");let o=s(u("2fqxq")),c=s(u("kIl0y")),d=s(u("5opQr")),l=s(u("b4hOr"));var p=u("6bVBA"),h=u("47IPL"),m=u("kBU2H");let f=new n.Logger("Chrome70"),g={OS:1024,MIS:1024};class v extends p.HandlerInterface{static createFactory(){return()=>new v}constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome70"}close(){if(f.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){f.debug("getNativeRtpCapabilities()");let e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");let t=await e.createOffer();try{e.close()}catch(e){}let r=a.parse(t.sdp);return d.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return f.debug("getNativeSctpCapabilities()"),{numStreams:g}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:d,extendedRtpCapabilities:l}){f.debug("run()"),this._direction=e,this._remoteSdp=new h.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:c.getSendingRtpParameters("audio",l),video:c.getSendingRtpParameters("video",l)},this._sendingRemoteRtpParametersByKind={audio:c.getSendingRemoteRtpParameters("audio",l),video:c.getSendingRemoteRtpParameters("video",l)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:a||[],iceTransportPolicy:n||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},d),this._pc.addEventListener("icegatheringstatechange",()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)}),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",()=>{this.emit("@connectionstatechange",this._pc.connectionState)}):this._pc.addEventListener("iceconnectionstatechange",()=>{switch(f.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})}async updateIceServers(e){f.debug("updateIceServers()");let t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(f.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady){if("send"===this._direction){let e=await this._pc.createOffer({iceRestart:!0});f.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);let t={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{let e={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();f.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){let s;this.assertSendDirection(),f.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);let n=o.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=c.reduceCodecs(n.codecs,i);let p=o.clone(this._sendingRemoteRtpParametersByKind[e.kind]);p.codecs=c.reduceCodecs(p.codecs,i);let h=this._remoteSdp.getNextMediaSectionIdx(),u=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]}),g=await this._pc.createOffer(),v=a.parse(g.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:v}),t&&t.length>1&&(f.debug("send() | enabling legacy simulcast"),s=(v=a.parse(g.sdp)).media[h.idx],l.addLegacySimulcast({offerMediaObject:s,numStreams:t.length}),g={type:"offer",sdp:a.write(v)});let _=!1,b=(0,m.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&b.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(f.debug("send() | enabling legacy simulcast for VP9 SVC"),_=!0,s=(v=a.parse(g.sdp)).media[h.idx],l.addLegacySimulcast({offerMediaObject:s,numStreams:b.spatialLayers}),g={type:"offer",sdp:a.write(v)}),f.debug("send() | calling pc.setLocalDescription() [offer:%o]",g),await this._pc.setLocalDescription(g),t){f.debug("send() | applying given encodings");let e=u.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){let i=e.encodings[r],s=t[r];if(!s)break;e.encodings[r]=Object.assign(i,s)}await u.sender.setParameters(e)}let w=u.mid;if(n.mid=w,s=(v=a.parse(this._pc.localDescription.sdp)).media[h.idx],n.rtcp.cname=d.getCname({offerMediaObject:s}),n.encodings=l.getRtpEncodings({offerMediaObject:s}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(_&&(n.encodings=[n.encodings[0]]),n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(let e of n.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,reuseMid:h.reuseMid,offerRtpParameters:n,answerRtpParameters:p,codecOptions:r});let y={type:"answer",sdp:this._remoteSdp.getSdp()};return f.debug("send() | calling pc.setRemoteDescription() [answer:%o]",y),await this._pc.setRemoteDescription(y),this._mapMidTransceiver.set(w,u),{localId:w,rtpParameters:n,rtpSender:u.sender}}async stopSending(e){this.assertSendDirection(),f.debug("stopSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");if(t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}let r=await this._pc.createOffer();f.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?f.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):f.debug("replaceTrack() [localId:%s, no track]",e);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),f.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{r<=t?e.active=!0:e.active=!1}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();f.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),f.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{i.encodings[r]={...e,...t}}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();f.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async getSenderStats(e){this.assertSendDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();let n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};f.debug("sendDataChannel() [options:%o]",n);let o=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%g.MIS,!this._hasDataChannelMediaSection){let e=await this._pc.createOffer(),t=a.parse(e.sdp),r=t.media.find(e=>"application"===e.type);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),f.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});let i={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();let t=[],r=new Map;for(let t of e){let{trackId:e,kind:i,rtpParameters:s,streamId:a}=t;f.debug("receive() [trackId:%s, kind:%s]",e,i);let n=s.mid||String(this._mapMidTransceiver.size);r.set(e,n),this._remoteSdp.receive({mid:n,kind:i,offerRtpParameters:s,streamId:a||s.rtcp.cname,trackId:e})}let i={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer(),n=a.parse(s.sdp);for(let t of e){let{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find(e=>String(e.mid)===s);d.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}for(let i of(s={type:"answer",sdp:a.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),f.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s),e)){let{trackId:e}=i,s=r.get(e),a=this._pc.getTransceivers().find(e=>e.mid===s);if(!a)throw Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,a),t.push({localId:s,track:a.receiver.track,rtpReceiver:a.receiver})}return t}async stopReceiving(e){for(let t of(this.assertRecvDirection(),e)){f.debug("stopReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();for(let t of(f.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r),e))this._mapMidTransceiver.delete(t)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();let{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:o,protocol:r};f.debug("receiveDataChannel() [options:%o]",c);let d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();let e={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();if(!this._transportReady){let e=a.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}f.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=a.parse(this._pc.localDescription.sdp));let r=d.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)}),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw Error('method can just be called for handlers with "recv" direction')}}e.exports.Chrome70=v}),m("axf12",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Chrome67=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc");let o=s(u("2fqxq")),c=s(u("kIl0y")),d=s(u("5opQr")),l=s(u("157SQ"));var p=u("6bVBA"),h=u("47IPL");let m=new n.Logger("Chrome67"),f={OS:1024,MIS:1024};class g extends p.HandlerInterface{static createFactory(){return()=>new g}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome67"}close(){if(m.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){m.debug("getNativeRtpCapabilities()");let e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{let t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}let r=a.parse(t.sdp);return d.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return m.debug("getNativeSctpCapabilities()"),{numStreams:f}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:d,extendedRtpCapabilities:l}){m.debug("run()"),this._direction=e,this._remoteSdp=new h.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:c.getSendingRtpParameters("audio",l),video:c.getSendingRtpParameters("video",l)},this._sendingRemoteRtpParametersByKind={audio:c.getSendingRemoteRtpParameters("audio",l),video:c.getSendingRemoteRtpParameters("video",l)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:a||[],iceTransportPolicy:n||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},d),this._pc.addEventListener("icegatheringstatechange",()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)}),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",()=>{this.emit("@connectionstatechange",this._pc.connectionState)}):this._pc.addEventListener("iceconnectionstatechange",()=>{switch(m.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})}async updateIceServers(e){m.debug("updateIceServers()");let t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(m.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady){if("send"===this._direction){let e=await this._pc.createOffer({iceRestart:!0});m.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);let t={type:"answer",sdp:this._remoteSdp.getSdp()};m.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{let e={type:"offer",sdp:this._remoteSdp.getSdp()};m.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();m.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){let s;this.assertSendDirection(),m.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&m.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n=await this._pc.createOffer(),p=a.parse(n.sdp),h=o.clone(this._sendingRtpParametersByKind[e.kind]);h.codecs=c.reduceCodecs(h.codecs);let u=o.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(u.codecs=c.reduceCodecs(u.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:p}),"video"===e.kind&&t&&t.length>1&&(m.debug("send() | enabling simulcast"),s=(p=a.parse(n.sdp)).media.find(e=>"video"===e.type),l.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:a.write(p)}),m.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),s=(p=a.parse(this._pc.localDescription.sdp)).media.find(t=>t.type===e.kind),h.rtcp.cname=d.getCname({offerMediaObject:s}),h.encodings=l.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<h.encodings.length;++e)t[e]&&Object.assign(h.encodings[e],t[e]);if(h.encodings.length>1&&"video/vp8"===h.codecs[0].mimeType.toLowerCase())for(let e of h.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:h,answerRtpParameters:u,codecOptions:r});let f={type:"answer",sdp:this._remoteSdp.getSdp()};m.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f);let g=String(this._nextSendLocalId);this._nextSendLocalId++;let v=this._pc.getSenders().find(t=>t.track===e);return this._mapSendLocalIdRtpSender.set(g,v),{localId:g,rtpParameters:h,rtpSender:v}}async stopSending(e){this.assertSendDirection(),m.debug("stopSending() [localId:%s]",e);let t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw Error("associated RTCRtpSender not found");this._pc.removeTrack(t),t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);let r=await this._pc.createOffer();m.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length){m.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());return}throw e}if("stable"===this._pc.signalingState)return;let i={type:"answer",sdp:this._remoteSdp.getSdp()};m.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?m.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):m.debug("replaceTrack() [localId:%s, no track]",e);let r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw Error("associated RTCRtpSender not found");let i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),m.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);let r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw Error("associated RTCRtpSender not found");let i=r.getParameters();i.encodings.forEach((e,r)=>{r<=t?e.active=!0:e.active=!1}),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),m.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);let r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw Error("associated RTCRtpSender not found");let i=r.getParameters();i.encodings.forEach((e,r)=>{i.encodings[r]={...e,...t}}),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();let t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();let n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};m.debug("sendDataChannel() [options:%o]",n);let o=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%f.MIS,!this._hasDataChannelMediaSection){let e=await this._pc.createOffer(),t=a.parse(e.sdp),r=t.media.find(e=>"application"===e.type);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),m.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});let i={type:"answer",sdp:this._remoteSdp.getSdp()};m.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();let t=[];for(let t of e){let{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;m.debug("receive() [trackId:%s, kind:%s]",e,r),this._remoteSdp.receive({mid:r,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}let r={type:"offer",sdp:this._remoteSdp.getSdp()};m.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer(),s=a.parse(i.sdp);for(let t of e){let{kind:e,rtpParameters:r}=t,i=s.media.find(t=>String(t.mid)===e);d.applyCodecParameters({offerRtpParameters:r,answerMediaObject:i})}for(let r of(i={type:"answer",sdp:a.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),m.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),e)){let{kind:e,trackId:i,rtpParameters:s}=r,a=this._pc.getReceivers().find(e=>e.track&&e.track.id===i);if(!a)throw Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(i,{mid:e,rtpParameters:s,rtpReceiver:a}),t.push({localId:i,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){for(let t of(this.assertRecvDirection(),e)){m.debug("stopReceiving() [localId:%s]",t);let{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}let t={type:"offer",sdp:this._remoteSdp.getSdp()};m.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();m.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();let{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();let{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:o,protocol:r};m.debug("receiveDataChannel() [options:%o]",c);let d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});let e={type:"offer",sdp:this._remoteSdp.getSdp()};m.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();if(!this._transportReady){let e=a.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}m.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=a.parse(this._pc.localDescription.sdp));let r=d.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)}),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw Error('method can just be called for handlers with "recv" direction')}}e.exports.Chrome67=g}),m("157SQ",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.addLegacySimulcast=e.exports.getRtpEncodings=void 0,e.exports.getRtpEncodings=function({offerMediaObject:e,track:t}){let r;let i=new Set;for(let s of e.ssrcs||[])if("msid"===s.attribute&&s.value.split(" ")[1]===t.id){let e=s.id;i.add(e),r||(r=e)}if(0===i.size)throw Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);let s=new Map;for(let t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,r]=t.ssrcs.split(/\s+/);e=Number(e),r=Number(r),i.has(e)&&(i.delete(e),i.delete(r),s.set(e,r))}for(let e of i)s.set(e,null);let a=[];for(let[e,t]of s){let r={ssrc:e};t&&(r.rtx={ssrc:t}),a.push(r)}return a},e.exports.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){let i,s,a;if(r<=1)throw TypeError("numStreams must be greater than 1");if(!(e.ssrcs||[]).find(e=>"msid"===e.attribute&&e.value.split(" ")[1]===t.id&&(i=e.id,a=e.value.split(" ")[0],!0)))throw Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);(e.ssrcGroups||[]).some(e=>{if("FID"!==e.semantics)return!1;let t=e.ssrcs.split(/\s+/);return Number(t[0])===i&&(s=Number(t[1]),!0)});let n=e.ssrcs.find(e=>"cname"===e.attribute&&e.id===i);if(!n)throw Error(`a=ssrc line with cname information not found [track.id:${t.id}]`);let o=n.value,c=[],d=[];for(let e=0;e<r;++e)c.push(i+e),s&&d.push(s+e);e.ssrcGroups=e.ssrcGroups||[],e.ssrcs=e.ssrcs||[],e.ssrcGroups.push({semantics:"SIM",ssrcs:c.join(" ")});for(let r=0;r<c.length;++r){let i=c[r];e.ssrcs.push({id:i,attribute:"cname",value:o}),e.ssrcs.push({id:i,attribute:"msid",value:`${a} ${t.id}`})}for(let r=0;r<d.length;++r){let i=c[r],s=d[r];e.ssrcs.push({id:s,attribute:"cname",value:o}),e.ssrcs.push({id:s,attribute:"msid",value:`${a} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${s}`})}}}),m("cVXKr",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Chrome55=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc"),o=u("6yq6Z");let c=s(u("2fqxq")),d=s(u("kIl0y")),l=s(u("5opQr")),p=s(u("157SQ"));var h=u("6bVBA"),m=u("47IPL");let f=new n.Logger("Chrome55"),g={OS:1024,MIS:1024};class v extends h.HandlerInterface{static createFactory(){return()=>new v}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome55"}close(){if(f.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){f.debug("getNativeRtpCapabilities()");let e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{let t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}let r=a.parse(t.sdp);return l.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return f.debug("getNativeSctpCapabilities()"),{numStreams:g}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:l}){f.debug("run()"),this._direction=e,this._remoteSdp=new m.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:d.getSendingRtpParameters("audio",l),video:d.getSendingRtpParameters("video",l)},this._sendingRemoteRtpParametersByKind={audio:d.getSendingRemoteRtpParameters("audio",l),video:d.getSendingRemoteRtpParameters("video",l)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:a||[],iceTransportPolicy:n||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)}),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",()=>{this.emit("@connectionstatechange",this._pc.connectionState)}):this._pc.addEventListener("iceconnectionstatechange",()=>{switch(f.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})}async updateIceServers(e){f.debug("updateIceServers()");let t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(f.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady){if("send"===this._direction){let e=await this._pc.createOffer({iceRestart:!0});f.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);let t={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{let e={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();f.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){let s;this.assertSendDirection(),f.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&f.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n=await this._pc.createOffer(),o=a.parse(n.sdp),h=c.clone(this._sendingRtpParametersByKind[e.kind]);h.codecs=d.reduceCodecs(h.codecs);let u=c.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(u.codecs=d.reduceCodecs(u.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(f.debug("send() | enabling simulcast"),s=(o=a.parse(n.sdp)).media.find(e=>"video"===e.type),p.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:a.write(o)}),f.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),s=(o=a.parse(this._pc.localDescription.sdp)).media.find(t=>t.type===e.kind),h.rtcp.cname=l.getCname({offerMediaObject:s}),h.encodings=p.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<h.encodings.length;++e)t[e]&&Object.assign(h.encodings[e],t[e]);if(h.encodings.length>1&&"video/vp8"===h.codecs[0].mimeType.toLowerCase())for(let e of h.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:h,answerRtpParameters:u,codecOptions:r});let m={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m);let g=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(g,e),{localId:g,rtpParameters:h}}async stopSending(e){this.assertSendDirection(),f.debug("stopSending() [localId:%s]",e);let t=this._mapSendLocalIdTrack.get(e);if(!t)throw Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);let r=await this._pc.createOffer();f.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length){f.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());return}throw e}if("stable"===this._pc.signalingState)return;let i={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new o.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new o.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new o.UnsupportedError("not supported")}async getSenderStats(e){throw new o.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();let n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};f.debug("sendDataChannel() [options:%o]",n);let o=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%g.MIS,!this._hasDataChannelMediaSection){let e=await this._pc.createOffer(),t=a.parse(e.sdp),r=t.media.find(e=>"application"===e.type);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),f.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});let i={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();let t=[];for(let t of e){let{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;f.debug("receive() [trackId:%s, kind:%s]",e,r),this._remoteSdp.receive({mid:r,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}let r={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer(),s=a.parse(i.sdp);for(let t of e){let{kind:e,rtpParameters:r}=t,i=s.media.find(t=>String(t.mid)===e);l.applyCodecParameters({offerRtpParameters:r,answerMediaObject:i})}for(let r of(i={type:"answer",sdp:a.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),f.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),e)){let{kind:e,trackId:i,rtpParameters:s}=r,a=r.streamId||s.rtcp.cname,n=this._pc.getRemoteStreams().find(e=>e.id===a).getTrackById(i);if(!n)throw Error("remote track not found");this._mapRecvLocalIdInfo.set(i,{mid:e,rtpParameters:s}),t.push({localId:i,track:n})}return t}async stopReceiving(e){for(let t of(this.assertRecvDirection(),e)){f.debug("stopReceiving() [localId:%s]",t);let{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}let t={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();f.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new o.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();let{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:o,protocol:r};f.debug("receiveDataChannel() [options:%o]",c);let d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});let e={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();if(!this._transportReady){let e=a.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}f.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=a.parse(this._pc.localDescription.sdp));let r=l.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)}),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw Error('method can just be called for handlers with "recv" direction')}}e.exports.Chrome55=v}),m("ajDWi",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Firefox60=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc"),o=u("6yq6Z");let c=s(u("2fqxq")),d=s(u("kIl0y")),l=s(u("5opQr")),p=s(u("b4hOr"));var h=u("6bVBA"),m=u("47IPL"),f=u("kBU2H");let g=new n.Logger("Firefox60"),v={OS:16,MIS:2048};class _ extends h.HandlerInterface{static createFactory(){return()=>new _}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox60"}close(){if(g.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){g.debug("getNativeRtpCapabilities()");let e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");let r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"});let i=e.addTransceiver(r,{direction:"sendrecv"}),s=i.sender.getParameters();s.encodings=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}],await i.sender.setParameters(s);let n=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}let o=a.parse(n.sdp);return l.extractRtpCapabilities({sdpObject:o})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return g.debug("getNativeSctpCapabilities()"),{numStreams:v}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:l}){this.assertNotClosed(),g.debug("run()"),this._direction=e,this._remoteSdp=new m.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:d.getSendingRtpParameters("audio",l),video:d.getSendingRtpParameters("video",l)},this._sendingRemoteRtpParametersByKind={audio:d.getSendingRemoteRtpParameters("audio",l),video:d.getSendingRemoteRtpParameters("video",l)},this._pc=new RTCPeerConnection({iceServers:a||[],iceTransportPolicy:n||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)}),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",()=>{this.emit("@connectionstatechange",this._pc.connectionState)}):this._pc.addEventListener("iceconnectionstatechange",()=>{switch(g.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})}async updateIceServers(e){throw this.assertNotClosed(),new o.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),g.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady){if("send"===this._direction){let e=await this._pc.createOffer({iceRestart:!0});g.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);let t={type:"answer",sdp:this._remoteSdp.getSdp()};g.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{let e={type:"offer",sdp:this._remoteSdp.getSdp()};g.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();g.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),g.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=c.clone(t)).length>1&&(t.forEach((e,t)=>{e.rid=`r${t}`}),t.reverse());let s=c.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=d.reduceCodecs(s.codecs,i);let n=c.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=d.reduceCodecs(n.codecs,i);let o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});if(t){let e=o.sender.getParameters();e.encodings=t,await o.sender.setParameters(e)}let h=await this._pc.createOffer(),u=a.parse(h.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:u});let m=(0,f.parse)((t||[{}])[0].scalabilityMode);g.debug("send() | calling pc.setLocalDescription() [offer:%o]",h),await this._pc.setLocalDescription(h);let v=o.mid;s.mid=v;let _=(u=a.parse(this._pc.localDescription.sdp)).media[u.media.length-1];if(s.rtcp.cname=l.getCname({offerMediaObject:_}),t){if(1===t.length){let e=p.getRtpEncodings({offerMediaObject:_});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t.reverse()}else s.encodings=p.getRtpEncodings({offerMediaObject:_});if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(let e of s.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${m.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:_,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});let b={type:"answer",sdp:this._remoteSdp.getSdp()};return g.debug("send() | calling pc.setRemoteDescription() [answer:%o]",b),await this._pc.setRemoteDescription(b),this._mapMidTransceiver.set(v,o),{localId:v,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),g.debug("stopSending() [localId:%s]",e),this._closed)return;let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);let r=await this._pc.createOffer();g.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};g.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),g.debug("pauseSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);let r=await this._pc.createOffer();g.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};g.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),g.debug("resumeSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);let r=await this._pc.createOffer();g.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};g.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?g.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):g.debug("replaceTrack() [localId:%s, no track]",e);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),g.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated transceiver not found");let i=r.sender.getParameters();t=i.encodings.length-1-t,i.encodings.forEach((e,r)=>{r>=t?e.active=!0:e.active=!1}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();g.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};g.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),g.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{i.encodings[r]={...e,...t}}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();g.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};g.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();let n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};g.debug("sendDataChannel() [options:%o]",n);let o=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%v.MIS,!this._hasDataChannelMediaSection){let e=await this._pc.createOffer(),t=a.parse(e.sdp),r=t.media.find(e=>"application"===e.type);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),g.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});let i={type:"answer",sdp:this._remoteSdp.getSdp()};g.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();let t=[],r=new Map;for(let t of e){let{trackId:e,kind:i,rtpParameters:s,streamId:a}=t;g.debug("receive() [trackId:%s, kind:%s]",e,i);let n=s.mid||String(this._mapMidTransceiver.size);r.set(e,n),this._remoteSdp.receive({mid:n,kind:i,offerRtpParameters:s,streamId:a||s.rtcp.cname,trackId:e})}let i={type:"offer",sdp:this._remoteSdp.getSdp()};g.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer(),n=a.parse(s.sdp);for(let t of e){let{trackId:e,rtpParameters:i}=t,o=r.get(e),c=n.media.find(e=>String(e.mid)===o);l.applyCodecParameters({offerRtpParameters:i,answerMediaObject:c}),s={type:"answer",sdp:a.write(n)}}for(let i of(this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:n}),g.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s),e)){let{trackId:e}=i,s=r.get(e),a=this._pc.getTransceivers().find(e=>e.mid===s);if(!a)throw Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,a),t.push({localId:s,track:a.receiver.track,rtpReceiver:a.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(let t of e){g.debug("stopReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};g.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();for(let t of(g.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r),e))this._mapMidTransceiver.delete(t)}async pauseReceiving(e){for(let t of(this.assertNotClosed(),this.assertRecvDirection(),e)){g.debug("pauseReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};g.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();g.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){for(let t of(this.assertNotClosed(),this.assertRecvDirection(),e)){g.debug("resumeReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};g.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();g.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();let{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o,protocol:r};g.debug("receiveDataChannel() [options:%o]",c);let d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();let e={type:"offer",sdp:this._remoteSdp.getSdp()};g.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();if(!this._transportReady){let e=a.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}g.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=a.parse(this._pc.localDescription.sdp));let r=l.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)}),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new o.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw Error('method can just be called for handlers with "recv" direction')}}e.exports.Firefox60=_}),m("otdku",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Safari12=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc");let o=s(u("2fqxq")),c=s(u("kIl0y")),d=s(u("5opQr")),l=s(u("b4hOr")),p=s(u("bt0QK"));var h=u("6yq6Z"),m=u("6bVBA"),f=u("47IPL"),g=u("kBU2H");let v=new n.Logger("Safari12"),_={OS:1024,MIS:1024};class b extends m.HandlerInterface{static createFactory(){return()=>new b}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari12"}close(){if(v.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){v.debug("getNativeRtpCapabilities()");let e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});try{e.addTransceiver("audio"),e.addTransceiver("video");let t=await e.createOffer();try{e.close()}catch(e){}let r=a.parse(t.sdp),i=d.extractRtpCapabilities({sdpObject:r});return p.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return v.debug("getNativeSctpCapabilities()"),{numStreams:_}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:d,extendedRtpCapabilities:l}){this.assertNotClosed(),v.debug("run()"),this._direction=e,this._remoteSdp=new f.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:c.getSendingRtpParameters("audio",l),video:c.getSendingRtpParameters("video",l)},this._sendingRemoteRtpParametersByKind={audio:c.getSendingRemoteRtpParameters("audio",l),video:c.getSendingRemoteRtpParameters("video",l)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:a||[],iceTransportPolicy:n||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},d),this._pc.addEventListener("icegatheringstatechange",()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)}),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",()=>{this.emit("@connectionstatechange",this._pc.connectionState)}):this._pc.addEventListener("iceconnectionstatechange",()=>{switch(v.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})}async updateIceServers(e){this.assertNotClosed(),v.debug("updateIceServers()");let t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),v.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady){if("send"===this._direction){let e=await this._pc.createOffer({iceRestart:!0});v.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);let t={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{let e={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();v.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){let s;this.assertNotClosed(),this.assertSendDirection(),v.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);let n=o.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=c.reduceCodecs(n.codecs,i);let p=o.clone(this._sendingRemoteRtpParametersByKind[e.kind]);p.codecs=c.reduceCodecs(p.codecs,i);let h=this._remoteSdp.getNextMediaSectionIdx(),u=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]}),m=await this._pc.createOffer(),f=a.parse(m.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:f});let _=(0,g.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(v.debug("send() | enabling legacy simulcast"),s=(f=a.parse(m.sdp)).media[h.idx],l.addLegacySimulcast({offerMediaObject:s,numStreams:t.length}),m={type:"offer",sdp:a.write(f)}),v.debug("send() | calling pc.setLocalDescription() [offer:%o]",m),await this._pc.setLocalDescription(m);let b=u.mid;if(n.mid=b,s=(f=a.parse(this._pc.localDescription.sdp)).media[h.idx],n.rtcp.cname=d.getCname({offerMediaObject:s}),n.encodings=l.getRtpEncodings({offerMediaObject:s}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(let e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${_.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,reuseMid:h.reuseMid,offerRtpParameters:n,answerRtpParameters:p,codecOptions:r});let w={type:"answer",sdp:this._remoteSdp.getSdp()};return v.debug("send() | calling pc.setRemoteDescription() [answer:%o]",w),await this._pc.setRemoteDescription(w),this._mapMidTransceiver.set(b,u),{localId:b,rtpParameters:n,rtpSender:u.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;v.debug("stopSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");if(t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}let r=await this._pc.createOffer();v.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),v.debug("pauseSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);let r=await this._pc.createOffer();v.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),v.debug("resumeSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);let r=await this._pc.createOffer();v.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?v.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):v.debug("replaceTrack() [localId:%s, no track]",e);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),v.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{r<=t?e.active=!0:e.active=!1}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();v.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),v.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{i.encodings[r]={...e,...t}}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();v.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();let n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};v.debug("sendDataChannel() [options:%o]",n);let o=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%_.MIS,!this._hasDataChannelMediaSection){let e=await this._pc.createOffer(),t=a.parse(e.sdp),r=t.media.find(e=>"application"===e.type);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),v.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();let t=[],r=new Map;for(let t of e){let{trackId:e,kind:i,rtpParameters:s,streamId:a}=t;v.debug("receive() [trackId:%s, kind:%s]",e,i);let n=s.mid||String(this._mapMidTransceiver.size);r.set(e,n),this._remoteSdp.receive({mid:n,kind:i,offerRtpParameters:s,streamId:a||s.rtcp.cname,trackId:e})}let i={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer(),n=a.parse(s.sdp);for(let t of e){let{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find(e=>String(e.mid)===s);d.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}for(let i of(s={type:"answer",sdp:a.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),v.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s),e)){let{trackId:e}=i,s=r.get(e),a=this._pc.getTransceivers().find(e=>e.mid===s);if(!a)throw Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,a),t.push({localId:s,track:a.receiver.track,rtpReceiver:a.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(let t of e){v.debug("stopReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();for(let t of(v.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r),e))this._mapMidTransceiver.delete(t)}async pauseReceiving(e){for(let t of(this.assertNotClosed(),this.assertRecvDirection(),e)){v.debug("pauseReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();v.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){for(let t of(this.assertNotClosed(),this.assertRecvDirection(),e)){v.debug("resumeReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();v.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();let{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o,protocol:r};v.debug("receiveDataChannel() [options:%o]",c);let d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();let e={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();if(!this._transportReady){let e=a.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}v.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=a.parse(this._pc.localDescription.sdp));let r=d.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)}),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new h.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw Error('method can just be called for handlers with "recv" direction')}}e.exports.Safari12=b}),m("diBVd",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Safari11=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc");let o=s(u("2fqxq")),c=s(u("kIl0y")),d=s(u("5opQr")),l=s(u("157SQ"));var p=u("6bVBA"),h=u("47IPL");let m=new n.Logger("Safari11"),f={OS:1024,MIS:1024};class g extends p.HandlerInterface{static createFactory(){return()=>new g}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari11"}close(){if(m.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){m.debug("getNativeRtpCapabilities()");let e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{let t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}let r=a.parse(t.sdp);return d.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return m.debug("getNativeSctpCapabilities()"),{numStreams:f}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:d,extendedRtpCapabilities:l}){m.debug("run()"),this._direction=e,this._remoteSdp=new h.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:c.getSendingRtpParameters("audio",l),video:c.getSendingRtpParameters("video",l)},this._sendingRemoteRtpParametersByKind={audio:c.getSendingRemoteRtpParameters("audio",l),video:c.getSendingRemoteRtpParameters("video",l)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:a||[],iceTransportPolicy:n||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},d),this._pc.addEventListener("icegatheringstatechange",()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)}),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",()=>{this.emit("@connectionstatechange",this._pc.connectionState)}):this._pc.addEventListener("iceconnectionstatechange",()=>{switch(m.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})}async updateIceServers(e){m.debug("updateIceServers()");let t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(m.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady){if("send"===this._direction){let e=await this._pc.createOffer({iceRestart:!0});m.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);let t={type:"answer",sdp:this._remoteSdp.getSdp()};m.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{let e={type:"offer",sdp:this._remoteSdp.getSdp()};m.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();m.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){let s;this.assertSendDirection(),m.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&m.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n=await this._pc.createOffer(),p=a.parse(n.sdp),h=o.clone(this._sendingRtpParametersByKind[e.kind]);h.codecs=c.reduceCodecs(h.codecs);let u=o.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(u.codecs=c.reduceCodecs(u.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:p}),"video"===e.kind&&t&&t.length>1&&(m.debug("send() | enabling simulcast"),s=(p=a.parse(n.sdp)).media.find(e=>"video"===e.type),l.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:a.write(p)}),m.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),s=(p=a.parse(this._pc.localDescription.sdp)).media.find(t=>t.type===e.kind),h.rtcp.cname=d.getCname({offerMediaObject:s}),h.encodings=l.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<h.encodings.length;++e)t[e]&&Object.assign(h.encodings[e],t[e]);if(h.encodings.length>1&&"video/vp8"===h.codecs[0].mimeType.toLowerCase())for(let e of h.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:h,answerRtpParameters:u,codecOptions:r});let f={type:"answer",sdp:this._remoteSdp.getSdp()};m.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f);let g=String(this._nextSendLocalId);this._nextSendLocalId++;let v=this._pc.getSenders().find(t=>t.track===e);return this._mapSendLocalIdRtpSender.set(g,v),{localId:g,rtpParameters:h,rtpSender:v}}async stopSending(e){this.assertSendDirection();let t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw Error("associated RTCRtpSender not found");t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);let r=await this._pc.createOffer();m.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length){m.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());return}throw e}if("stable"===this._pc.signalingState)return;let i={type:"answer",sdp:this._remoteSdp.getSdp()};m.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?m.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):m.debug("replaceTrack() [localId:%s, no track]",e);let r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw Error("associated RTCRtpSender not found");let i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),m.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);let r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw Error("associated RTCRtpSender not found");let i=r.getParameters();i.encodings.forEach((e,r)=>{r<=t?e.active=!0:e.active=!1}),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),m.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);let r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw Error("associated RTCRtpSender not found");let i=r.getParameters();i.encodings.forEach((e,r)=>{i.encodings[r]={...e,...t}}),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();let t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();let n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};m.debug("sendDataChannel() [options:%o]",n);let o=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%f.MIS,!this._hasDataChannelMediaSection){let e=await this._pc.createOffer(),t=a.parse(e.sdp),r=t.media.find(e=>"application"===e.type);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),m.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});let i={type:"answer",sdp:this._remoteSdp.getSdp()};m.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();let t=[];for(let t of e){let{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;m.debug("receive() [trackId:%s, kind:%s]",e,r),this._remoteSdp.receive({mid:r,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}let r={type:"offer",sdp:this._remoteSdp.getSdp()};m.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer(),s=a.parse(i.sdp);for(let t of e){let{kind:e,rtpParameters:r}=t,i=s.media.find(t=>String(t.mid)===e);d.applyCodecParameters({offerRtpParameters:r,answerMediaObject:i})}for(let r of(i={type:"answer",sdp:a.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),m.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),e)){let{kind:e,trackId:i,rtpParameters:s}=r,a=this._pc.getReceivers().find(e=>e.track&&e.track.id===i);if(!a)throw Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(i,{mid:e,rtpParameters:s,rtpReceiver:a}),t.push({localId:i,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){for(let t of(this.assertRecvDirection(),e)){m.debug("stopReceiving() [localId:%s]",t);let{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}let t={type:"offer",sdp:this._remoteSdp.getSdp()};m.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();m.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();let{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();let{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o,protocol:r};m.debug("receiveDataChannel() [options:%o]",c);let d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});let e={type:"offer",sdp:this._remoteSdp.getSdp()};m.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();if(!this._transportReady){let e=a.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}m.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=a.parse(this._pc.localDescription.sdp));let r=d.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)}),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw Error('method can just be called for handlers with "recv" direction')}}e.exports.Safari11=g}),m("8HCMN",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Edge11=void 0;var a=u("7Wufc"),n=u("6yq6Z");let o=s(u("2fqxq")),c=s(u("kIl0y")),d=s(u("a1wxn"));var l=u("6bVBA");let p=new a.Logger("Edge11");class h extends l.HandlerInterface{static createFactory(){return()=>new h}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){p.debug("close()");try{this._iceGatherer.close()}catch(e){}try{this._iceTransport.stop()}catch(e){}try{this._dtlsTransport.stop()}catch(e){}for(let e of this._rtpSenders.values())try{e.stop()}catch(e){}for(let e of this._rtpReceivers.values())try{e.stop()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){return p.debug("getNativeRtpCapabilities()"),d.getCapabilities()}async getNativeSctpCapabilities(){return p.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:d,proprietaryConstraints:l,extendedRtpCapabilities:h}){p.debug("run()"),this._sendingRtpParametersByKind={audio:c.getSendingRtpParameters("audio",h),video:c.getSendingRtpParameters("video",h)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${o.generateRandomNumber()}`,this.setIceGatherer({iceServers:a,iceTransportPolicy:n}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new n.UnsupportedError("not supported")}async restartIce(e){if(p.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){for(let t of(p.debug("restartIce() | calling iceTransport.start()"),this._iceTransport.start(this._iceGatherer,e,"controlling"),this._remoteIceCandidates))this._iceTransport.addRemoteCandidate(t);this._iceTransport.addRemoteCandidate({})}}async getTransportStats(){return this._iceTransport.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){p.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),p.debug("send() | calling new RTCRtpSender()");let s=new RTCRtpSender(e,this._dtlsTransport),a=o.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=c.reduceCodecs(a.codecs,i);let n=a.codecs.some(e=>/.+\/rtx$/i.test(e.mimeType));for(let e of(t||(t=[{}]),t))e.ssrc=o.generateRandomNumber(),n&&(e.rtx={ssrc:o.generateRandomNumber()});a.encodings=t,a.rtcp={cname:this._cname,reducedSize:!0,mux:!0};let l=d.mangleRtpParameters(a);p.debug("send() | calling rtpSender.send() [params:%o]",l),await s.send(l);let h=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(h,s),{localId:h,rtpParameters:a,rtpSender:s}}async stopSending(e){p.debug("stopSending() [localId:%s]",e);let t=this._rtpSenders.get(e);if(!t)throw Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{p.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw p.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?p.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):p.debug("replaceTrack() [localId:%s, no track]",e);let r=this._rtpSenders.get(e);if(!r)throw Error("RTCRtpSender not found");r.setTrack(t)}async setMaxSpatialLayer(e,t){p.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);let r=this._rtpSenders.get(e);if(!r)throw Error("RTCRtpSender not found");let i=r.getParameters();i.encodings.forEach((e,r)=>{r<=t?e.active=!0:e.active=!1}),await r.setParameters(i)}async setRtpEncodingParameters(e,t){p.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);let r=this._rtpSenders.get(e);if(!r)throw Error("RTCRtpSender not found");let i=r.getParameters();i.encodings.forEach((e,r)=>{i.encodings[r]={...e,...t}}),await r.setParameters(i)}async getSenderStats(e){let t=this._rtpSenders.get(e);if(!t)throw Error("RTCRtpSender not found");return t.getStats()}async sendDataChannel(e){throw new n.UnsupportedError("not implemented")}async receive(e){let t=[];for(let t of e){let{trackId:e,kind:r}=t;p.debug("receive() [trackId:%s, kind:%s]",e,r)}for(let r of(this._transportReady||await this.setupTransport({localDtlsRole:"server"}),e)){let{trackId:e,kind:i,rtpParameters:s}=r;p.debug("receive() | calling new RTCRtpReceiver()");let a=new RTCRtpReceiver(this._dtlsTransport,i);a.addEventListener("error",e=>{p.error('rtpReceiver "error" event [event:%o]',e)});let n=d.mangleRtpParameters(s);p.debug("receive() | calling rtpReceiver.receive() [params:%o]",n),await a.receive(n),this._rtpReceivers.set(e,a),t.push({localId:e,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){for(let t of e){p.debug("stopReceiving() [localId:%s]",t);let e=this._rtpReceivers.get(t);if(!e)throw Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{p.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){p.warn("stopReceiving() | rtpReceiver.stop() failed:%o",e)}}}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){let t=this._rtpReceivers.get(e);if(!t)throw Error("RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel(e){throw new n.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){let r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",e=>{p.error('iceGatherer "error" event [event:%o]',e)});try{r.gather()}catch(e){p.debug("setIceGatherer() | iceGatherer.gather() failed: %s",e.toString())}this._iceGatherer=r}setIceTransport(){let e=new RTCIceTransport(this._iceGatherer);e.addEventListener("statechange",()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}),e.addEventListener("icestatechange",()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}),e.addEventListener("candidatepairchange",e=>{p.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)}),this._iceTransport=e}setDtlsTransport(){let e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",()=>{p.debug('dtlsTransport "statechange" event [state:%s]',e.state)}),e.addEventListener("dtlsstatechange",()=>{p.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")}),e.addEventListener("error",e=>{p.error('dtlsTransport "error" event [event:%o]',e)}),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){p.debug("setupTransport()");let t=this._dtlsTransport.getLocalParameters();for(let r of(t.role=e,await new Promise((e,r)=>{this.safeEmit("@connect",{dtlsParameters:t},e,r)}),this._iceTransport.start(this._iceGatherer,this._remoteIceParameters,"controlling"),this._remoteIceCandidates))this._iceTransport.addRemoteCandidate(r);this._iceTransport.addRemoteCandidate({}),this._remoteDtlsParameters.fingerprints=this._remoteDtlsParameters.fingerprints.filter(e=>"sha-256"===e.algorithm||"sha-384"===e.algorithm||"sha-512"===e.algorithm),this._dtlsTransport.start(this._remoteDtlsParameters),this._transportReady=!0}}e.exports.Edge11=h}),m("a1wxn",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.mangleRtpParameters=e.exports.getCapabilities=void 0;let a=s(u("2fqxq"));e.exports.getCapabilities=function(){let e=RTCRtpReceiver.getCapabilities(),t=a.clone(e);for(let e of t.codecs??[]){if(e.channels=e.numChannels,delete e.numChannels,e.mimeType=e.mimeType||`${e.kind}/${e.name}`,e.parameters){let t=e.parameters;t.apt&&(t.apt=Number(t.apt)),t["packetization-mode"]&&(t["packetization-mode"]=Number(t["packetization-mode"]))}for(let t of e.rtcpFeedback||[])t.parameter||(t.parameter="")}return t},e.exports.mangleRtpParameters=function(e){let t=a.clone(e);for(let e of(t.mid&&(t.muxId=t.mid,delete t.mid),t.codecs))e.channels&&(e.numChannels=e.channels,delete e.channels),e.mimeType&&!e.name&&(e.name=e.mimeType.split("/")[1]),delete e.mimeType;return t}}),m("ey9Hv",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.ReactNativeUnifiedPlan=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc");let o=s(u("2fqxq")),c=s(u("kIl0y")),d=s(u("5opQr")),l=s(u("b4hOr")),p=s(u("bt0QK"));var h=u("6yq6Z"),m=u("6bVBA"),f=u("47IPL"),g=u("kBU2H");let v=new n.Logger("ReactNativeUnifiedPlan"),_={OS:1024,MIS:1024};class b extends m.HandlerInterface{static createFactory(){return()=>new b}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNativeUnifiedPlan"}close(){if(v.debug("close()"),!this._closed){if(this._closed=!0,this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){v.debug("getNativeRtpCapabilities()");let e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");let t=await e.createOffer();try{e.close()}catch(e){}let r=a.parse(t.sdp),i=d.extractRtpCapabilities({sdpObject:r});return p.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return v.debug("getNativeSctpCapabilities()"),{numStreams:_}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:d,extendedRtpCapabilities:l}){this.assertNotClosed(),v.debug("run()"),this._direction=e,this._remoteSdp=new f.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:c.getSendingRtpParameters("audio",l),video:c.getSendingRtpParameters("video",l)},this._sendingRemoteRtpParametersByKind={audio:c.getSendingRemoteRtpParameters("audio",l),video:c.getSendingRemoteRtpParameters("video",l)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:a||[],iceTransportPolicy:n||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},d),this._pc.addEventListener("icegatheringstatechange",()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)}),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",()=>{this.emit("@connectionstatechange",this._pc.connectionState)}):this._pc.addEventListener("iceconnectionstatechange",()=>{switch(v.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})}async updateIceServers(e){this.assertNotClosed(),v.debug("updateIceServers()");let t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),v.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady){if("send"===this._direction){let e=await this._pc.createOffer({iceRestart:!0});v.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);let t={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{let e={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();v.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){let s;this.assertNotClosed(),this.assertSendDirection(),v.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach((e,t)=>{e.rid=`r${t}`});let n=o.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=c.reduceCodecs(n.codecs,i);let p=o.clone(this._sendingRemoteRtpParametersByKind[e.kind]);p.codecs=c.reduceCodecs(p.codecs,i);let h=this._remoteSdp.getNextMediaSectionIdx(),u=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),m=await this._pc.createOffer(),f=a.parse(m.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:f});let _=!1,b=(0,g.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&b.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(v.debug("send() | enabling legacy simulcast for VP9 SVC"),_=!0,s=(f=a.parse(m.sdp)).media[h.idx],l.addLegacySimulcast({offerMediaObject:s,numStreams:b.spatialLayers}),m={type:"offer",sdp:a.write(f)}),v.debug("send() | calling pc.setLocalDescription() [offer:%o]",m),await this._pc.setLocalDescription(m);let w=u.mid??void 0;if(w||v.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),n.mid=w,s=(f=a.parse(this._pc.localDescription.sdp)).media[h.idx],n.rtcp.cname=d.getCname({offerMediaObject:s}),t){if(1===t.length){let e=l.getRtpEncodings({offerMediaObject:s});Object.assign(e[0],t[0]),_&&(e=[e[0]]),n.encodings=e}else n.encodings=t}else n.encodings=l.getRtpEncodings({offerMediaObject:s});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(let e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${b.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,reuseMid:h.reuseMid,offerRtpParameters:n,answerRtpParameters:p,codecOptions:r,extmapAllowMixed:!0});let y={type:"answer",sdp:this._remoteSdp.getSdp()};return v.debug("send() | calling pc.setRemoteDescription() [answer:%o]",y),await this._pc.setRemoteDescription(y),w||(w=u.mid,n.mid=w),this._mapMidTransceiver.set(w,u),{localId:w,rtpParameters:n,rtpSender:u.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;v.debug("stopSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");if(t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}let r=await this._pc.createOffer();v.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),v.debug("pauseSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);let r=await this._pc.createOffer();v.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),v.debug("resumeSending() [localId:%s]",e);let t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw Error("associated RTCRtpTransceiver not found");t.direction="sendonly";let r=await this._pc.createOffer();v.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?v.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):v.debug("replaceTrack() [localId:%s, no track]",e);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),v.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{r<=t?e.active=!0:e.active=!1}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();v.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),v.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);let r=this._mapMidTransceiver.get(e);if(!r)throw Error("associated RTCRtpTransceiver not found");let i=r.sender.getParameters();i.encodings.forEach((e,r)=>{i.encodings[r]={...e,...t}}),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);let s=await this._pc.createOffer();v.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);let a={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",a),await this._pc.setRemoteDescription(a)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();let n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};v.debug("sendDataChannel() [options:%o]",n);let o=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%_.MIS,!this._hasDataChannelMediaSection){let e=await this._pc.createOffer(),t=a.parse(e.sdp),r=t.media.find(e=>"application"===e.type);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),v.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});let i={type:"answer",sdp:this._remoteSdp.getSdp()};v.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();let t=[],r=new Map;for(let t of e){let{trackId:e,kind:i,rtpParameters:s,streamId:a}=t;v.debug("receive() [trackId:%s, kind:%s]",e,i);let n=s.mid||String(this._mapMidTransceiver.size);r.set(e,n),this._remoteSdp.receive({mid:n,kind:i,offerRtpParameters:s,streamId:a||s.rtcp.cname,trackId:e})}let i={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer(),n=a.parse(s.sdp);for(let t of e){let{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find(e=>String(e.mid)===s);d.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}for(let i of(s={type:"answer",sdp:a.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),v.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s),e)){let{trackId:e}=i,s=r.get(e),a=this._pc.getTransceivers().find(e=>e.mid===s);if(a)this._mapMidTransceiver.set(s,a),t.push({localId:s,track:a.receiver.track,rtpReceiver:a.receiver});else throw Error("new RTCRtpTransceiver not found")}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(let t of e){v.debug("stopReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();for(let t of(v.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r),e))this._mapMidTransceiver.delete(t)}async pauseReceiving(e){for(let t of(this.assertNotClosed(),this.assertRecvDirection(),e)){v.debug("pauseReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();v.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){for(let t of(this.assertNotClosed(),this.assertRecvDirection(),e)){v.debug("resumeReceiving() [localId:%s]",t);let e=this._mapMidTransceiver.get(t);if(!e)throw Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}let t={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();v.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();let t=this._mapMidTransceiver.get(e);if(!t)throw Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();let{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o,protocol:r};v.debug("receiveDataChannel() [options:%o]",c);let d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();let e={type:"offer",sdp:this._remoteSdp.getSdp()};v.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();if(!this._transportReady){let e=a.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}v.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=a.parse(this._pc.localDescription.sdp));let r=d.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)}),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new h.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw Error('method can just be called for handlers with "recv" direction')}}e.exports.ReactNativeUnifiedPlan=b}),m("apeMR",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=e.exports&&e.exports.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.ReactNative=void 0;let a=s(u("1HJ2f"));var n=u("7Wufc"),o=u("6yq6Z");let c=s(u("2fqxq")),d=s(u("kIl0y")),l=s(u("5opQr")),p=s(u("157SQ"));var h=u("6bVBA"),m=u("47IPL");let f=new n.Logger("ReactNative"),g={OS:1024,MIS:1024};class v extends h.HandlerInterface{static createFactory(){return()=>new v}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNative"}close(){if(f.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){f.debug("getNativeRtpCapabilities()");let e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{let t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}let r=a.parse(t.sdp);return l.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return f.debug("getNativeSctpCapabilities()"),{numStreams:g}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:n,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:l}){f.debug("run()"),this._direction=e,this._remoteSdp=new m.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:d.getSendingRtpParameters("audio",l),video:d.getSendingRtpParameters("video",l)},this._sendingRemoteRtpParametersByKind={audio:d.getSendingRemoteRtpParameters("audio",l),video:d.getSendingRemoteRtpParameters("video",l)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:a||[],iceTransportPolicy:n||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)}),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",()=>{this.emit("@connectionstatechange",this._pc.connectionState)}):this._pc.addEventListener("iceconnectionstatechange",()=>{switch(f.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})}async updateIceServers(e){f.debug("updateIceServers()");let t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(f.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady){if("send"===this._direction){let e=await this._pc.createOffer({iceRestart:!0});f.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);let t={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{let e={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();f.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){let s;this.assertSendDirection(),f.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&f.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n=await this._pc.createOffer(),o=a.parse(n.sdp),h=c.clone(this._sendingRtpParametersByKind[e.kind]);h.codecs=d.reduceCodecs(h.codecs);let u=c.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(u.codecs=d.reduceCodecs(u.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(f.debug("send() | enabling simulcast"),s=(o=a.parse(n.sdp)).media.find(e=>"video"===e.type),p.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:a.write(o)}),f.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),s=(o=a.parse(this._pc.localDescription.sdp)).media.find(t=>t.type===e.kind),h.rtcp.cname=l.getCname({offerMediaObject:s}),h.encodings=p.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<h.encodings.length;++e)t[e]&&Object.assign(h.encodings[e],t[e]);if(h.encodings.length>1&&("video/vp8"===h.codecs[0].mimeType.toLowerCase()||"video/h264"===h.codecs[0].mimeType.toLowerCase()))for(let e of h.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:h,answerRtpParameters:u,codecOptions:r});let m={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m);let g=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(g,e),{localId:g,rtpParameters:h}}async stopSending(e){this.assertSendDirection(),f.debug("stopSending() [localId:%s]",e);let t=this._mapSendLocalIdTrack.get(e);if(!t)throw Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);let r=await this._pc.createOffer();f.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length){f.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());return}throw e}if("stable"===this._pc.signalingState)return;let i={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new o.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new o.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new o.UnsupportedError("not implemented")}async getSenderStats(e){throw new o.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();let n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};f.debug("sendDataChannel() [options:%o]",n);let o=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%g.MIS,!this._hasDataChannelMediaSection){let e=await this._pc.createOffer(),t=a.parse(e.sdp),r=t.media.find(e=>"application"===e.type);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),f.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});let i={type:"answer",sdp:this._remoteSdp.getSdp()};f.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();let t=[],r=new Map;for(let t of e){let{trackId:e,kind:i,rtpParameters:s}=t;f.debug("receive() [trackId:%s, kind:%s]",e,i);let a=t.streamId||s.rtcp.cname;f.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${c.generateRandomNumber()}`,r.set(e,a),this._remoteSdp.receive({mid:i,kind:i,offerRtpParameters:s,streamId:a,trackId:e})}let i={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer(),n=a.parse(s.sdp);for(let t of e){let{kind:e,rtpParameters:r}=t,i=n.media.find(t=>String(t.mid)===e);l.applyCodecParameters({offerRtpParameters:r,answerMediaObject:i})}for(let i of(s={type:"answer",sdp:a.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),f.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s),e)){let{kind:e,trackId:s,rtpParameters:a}=i,n=r.get(s),o=this._pc.getRemoteStreams().find(e=>e.id===n).getTrackById(s);if(!o)throw Error("remote track not found");this._mapRecvLocalIdInfo.set(s,{mid:e,rtpParameters:a}),t.push({localId:s,track:o})}return t}async stopReceiving(e){for(let t of(this.assertRecvDirection(),e)){f.debug("stopReceiving() [localId:%s]",t);let{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}let t={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);let r=await this._pc.createAnswer();f.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new o.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();let{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:o,protocol:r};f.debug("receiveDataChannel() [options:%o]",c);let d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});let e={type:"offer",sdp:this._remoteSdp.getSdp()};f.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);let t=await this._pc.createAnswer();if(!this._transportReady){let e=a.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}f.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=a.parse(this._pc.localDescription.sdp));let r=l.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)}),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw Error('method can just be called for handlers with "recv" direction')}}e.exports.ReactNative=v}),m("8cmuS",function(e,t){var r=e.exports&&e.exports.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),i=e.exports&&e.exports.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||r(t,e,i)};Object.defineProperty(e.exports,"__esModule",{value:!0}),i(u("fI7XH"),e.exports),i(u("baDpS"),e.exports),i(u("iSZvy"),e.exports),i(u("3HSbG"),e.exports),i(u("gLRXX"),e.exports),i(u("420JU"),e.exports),i(u("cVFce"),e.exports),i(u("liok7"),e.exports),i(u("6bVBA"),e.exports),i(u("6yq6Z"),e.exports)}),m("cVFce",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0})}),m("liok7",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0})}),l(module.exports,"streamerClient",()=>e0);var f={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};const g=new Uint8Array(16),v=[];for(let e=0;e<256;++e)v.push((e+256).toString(16).slice(1));var _=function(t,r,i){if(f.randomUUID&&!r&&!t)return f.randomUUID();let s=(t=t||{}).random||(t.rng||function(){if(!e&&!(e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(g)})();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,r){i=i||0;for(let e=0;e<16;++e)r[i+e]=s[e];return r}return function(e,t=0){return v[e[t+0]]+v[e[t+1]]+v[e[t+2]]+v[e[t+3]]+"-"+v[e[t+4]]+v[e[t+5]]+"-"+v[e[t+6]]+v[e[t+7]]+"-"+v[e[t+8]]+v[e[t+9]]+"-"+v[e[t+10]]+v[e[t+11]]+v[e[t+12]]+v[e[t+13]]+v[e[t+14]]+v[e[t+15]]}(s)};JSON.parse('{"name":"protoo-client","version":"4.0.6","description":"protoo JavaScript client module","author":"Iñaki Baz Castillo <ibc@aliax.net>","homepage":"https://protoo.versatica.com","license":"MIT","repository":{"type":"git","url":"https://github.com/ibc/protoo.git"},"main":"lib/index.js","keywords":["nodejs","browser","websocket"],"engines":{"node":">=8.0.0"},"scripts":{"lint":"eslint -c .eslintrc.js lib"},"dependencies":{"debug":"^4.3.1","events":"^3.2.0","retry":"^0.12.0"},"devDependencies":{"eslint":"^5.16.0"},"optionalDependencies":{"websocket":"^1.0.33"}}').version;var b={},w={},y=u("1JjHr");const S="protoo-client";w=class{constructor(e){e?(this._debug=y(`${S}:${e}`),this._warn=y(`${S}:WARN:${e}`),this._error=y(`${S}:ERROR:${e}`)):(this._debug=y(S),this._warn=y(`${S}:WARN`),this._error=y(`${S}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};var R={},P=o.EventEmitter;R=class extends P{constructor(e){super(),this.setMaxListeners(1/0),this._logger=e||new w("EnhancedEventEmitter")}safeEmit(e,...t){try{this.emit(e,...t)}catch(t){this._logger.error("safeEmit() | event listener threw an error [event:%s]:%o",e,t)}}async safeEmitAsPromise(e,...t){return new Promise((r,i)=>{this.safeEmit(e,...t,r,i)})}};var x={};const C=new w("Message");x=class{static parse(e){let t;let r={};try{t=JSON.parse(e)}catch(e){C.error("parse() | invalid JSON: %s",e);return}if("object"!=typeof t||Array.isArray(t)){C.error("parse() | not an object");return}if(t.request){if(r.request=!0,"string"!=typeof t.method){C.error("parse() | missing/invalid method field");return}if("number"!=typeof t.id){C.error("parse() | missing/invalid id field");return}r.id=t.id,r.method=t.method,r.data=t.data||{}}else if(t.response){if(r.response=!0,"number"!=typeof t.id){C.error("parse() | missing/invalid id field");return}r.id=t.id,t.ok?(r.ok=!0,r.data=t.data||{}):(r.ok=!1,r.errorCode=t.errorCode,r.errorReason=t.errorReason)}else if(t.notification){if(r.notification=!0,"string"!=typeof t.method){C.error("parse() | missing/invalid method field");return}r.method=t.method,r.data=t.data||{}}else{C.error("parse() | missing request/response field");return}return r}static createRequest(e,t){return{request:!0,id:Math.round(1e7*Math.random()),method:e,data:t||{}}}static createSuccessResponse(e,t){return{response:!0,id:e.id,ok:!0,data:t||{}}}static createErrorResponse(e,t,r){return{response:!0,id:e.id,ok:!1,errorCode:t,errorReason:r}}static createNotification(e,t){return{notification:!0,method:e,data:t||{}}}};const T=new w("Peer");b=class extends R{constructor(e){super(T),T.debug("constructor()"),this._closed=!1,this._transport=e,this._connected=!1,this._data={},this._sents=new Map,this._handleTransport()}get closed(){return this._closed}get connected(){return this._connected}get data(){return this._data}set data(e){throw Error("cannot override data object")}close(){if(!this._closed){for(let e of(T.debug("close()"),this._closed=!0,this._connected=!1,this._transport.close(),this._sents.values()))e.close();this.safeEmit("close")}}async request(e,t){let r=x.createRequest(e,t);return this._logger.debug("request() [method:%s, id:%s]",e,r.id),await this._transport.send(r),new Promise((e,t)=>{let i=1500*(15+.1*this._sents.size),s={id:r.id,method:r.method,resolve:t=>{this._sents.delete(r.id)&&(clearTimeout(s.timer),e(t))},reject:e=>{this._sents.delete(r.id)&&(clearTimeout(s.timer),t(e))},timer:setTimeout(()=>{this._sents.delete(r.id)&&t(Error("request timeout"))},i),close:()=>{clearTimeout(s.timer),t(Error("peer closed"))}};this._sents.set(r.id,s)})}async notify(e,t){let r=x.createNotification(e,t);this._logger.debug("notify() [method:%s]",e),await this._transport.send(r)}_handleTransport(){if(this._transport.closed){this._closed=!0,setTimeout(()=>{this._closed||(this._connected=!1,this.safeEmit("close"))});return}this._transport.on("open",()=>{this._closed||(T.debug('emit "open"'),this._connected=!0,this.safeEmit("open"))}),this._transport.on("disconnected",()=>{this._closed||(T.debug('emit "disconnected"'),this._connected=!1,this.safeEmit("disconnected"))}),this._transport.on("failed",e=>{this._closed||(T.debug('emit "failed" [currentAttempt:%s]',e),this._connected=!1,this.safeEmit("failed",e))}),this._transport.on("close",()=>{this._closed||(this._closed=!0,T.debug('emit "close"'),this._connected=!1,this.safeEmit("close"))}),this._transport.on("message",e=>{e.request?this._handleRequest(e):e.response?this._handleResponse(e):e.notification&&this._handleNotification(e)})}_handleRequest(e){try{this.emit("request",e,t=>{let r=x.createSuccessResponse(e,t);this._transport.send(r).catch(()=>{})},(t,r)=>{t instanceof Error?(r=t.message,t=500):"number"==typeof t&&r instanceof Error&&(r=r.message);let i=x.createErrorResponse(e,t,r);this._transport.send(i).catch(()=>{})})}catch(r){let t=x.createErrorResponse(e,500,String(r));this._transport.send(t).catch(()=>{})}}_handleResponse(e){let t=this._sents.get(e.id);if(!t){T.error("received response does not match any sent request [id:%s]",e.id);return}if(e.ok)t.resolve(e.data);else{let r=Error(e.errorReason);r.code=e.errorCode,t.reject(r)}}_handleNotification(e){this.safeEmit("notification",e)}};var k={};if("object"==typeof globalThis)s=globalThis;else try{s=u("dFHla")}catch(e){}finally{if(s||"undefined"==typeof window||(s=window),!s)throw Error("Could not determine global this")}var D=s.WebSocket||s.MozWebSocket,E={};function M(e,t){return t?new D(e,t):new D(e)}u("bAhvK").version,D&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach(function(e){Object.defineProperty(M,e,{get:function(){return D[e]}})});var O=D?M:null,I={};I=u("aHEzW");const L={retries:10,factor:2,minTimeout:1e3,maxTimeout:8e3},j=new w("WebSocketTransport");function A(e){return e&&e.Math==Math?e:void 0}k=class extends R{constructor(e,t){super(j),j.debug("constructor() [url:%s, options:%o]",e,t),this._closed=!1,this._url=e,this._options=t||{},this._ws=null,this._runWebSocket()}get closed(){return this._closed}close(){if(!this._closed){j.debug("close()"),this._closed=!0,this.safeEmit("close");try{this._ws.onopen=null,this._ws.onclose=null,this._ws.onerror=null,this._ws.onmessage=null,this._ws.close()}catch(e){j.error("close() | error closing the WebSocket: %o",e)}}}async send(e){if(this._closed)throw Error("transport closed");try{this._ws.send(JSON.stringify(e))}catch(e){throw j.warn("send() failed:%o",e),e}}_runWebSocket(){let e=I.operation(this._options.retry||L),t=!1;e.attempt(r=>{if(this._closed){e.stop();return}j.debug("_runWebSocket() [currentAttempt:%s]",r),this._ws=new O(this._url,"protoo",this._options.origin,this._options.headers,this._options.requestOptions,this._options.clientConfig),this._ws.onopen=()=>{this._closed||(t=!0,this.safeEmit("open"))},this._ws.onclose=i=>{if(!this._closed){if(j.warn('WebSocket "close" event [wasClean:%s, code:%s, reason:"%s"]',i.wasClean,i.code,i.reason),4e3!==i.code){if(t){if(e.stop(),this.safeEmit("disconnected"),this._closed)return;this._runWebSocket();return}if(this.safeEmit("failed",r),this._closed||e.retry(!0))return}this._closed=!0,this.safeEmit("close")}},this._ws.onerror=()=>{this._closed||j.error('WebSocket "error" event')},this._ws.onmessage=e=>{if(this._closed)return;let t=x.parse(e.data);if(t){if(0===this.listenerCount("message")){j.error('no listeners for WebSocket "message" event, ignoring received message');return}this.safeEmit("message",t)}}})}},r=b,i=k;const N="object"==typeof globalThis&&A(globalThis)||"object"==typeof window&&A(window)||"object"==typeof self&&A(self)||"object"==typeof d&&A(d)||function(){return this}()||{};function F(e,t,r){let i=r||N,s=i.__SENTRY__=i.__SENTRY__||{};return s[e]||(s[e]=t())}const B=Object.prototype.toString;function q(e){return"[object Object]"===B.call(e)}function U(e){return!!(e&&e.then&&"function"==typeof e.then)}const $="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__,V=["debug","info","warn","error","log","assert","trace"],z={};function W(e){if(!("console"in N))return e();let t=N.console,r={},i=Object.keys(z);i.forEach(e=>{let i=z[e];r[e]=t[e],t[e]=i});try{return e()}finally{i.forEach(e=>{t[e]=r[e]})}}const G=function(){let e=!1,t={enable:()=>{e=!0},disable:()=>{e=!1},isEnabled:()=>e};return $?V.forEach(r=>{t[r]=(...t)=>{e&&W(()=>{N.console[r](`Sentry Logger [${r}]:`,...t)})}}):V.forEach(e=>{t[e]=()=>void 0}),t}();function H(){return Date.now()/1e3}const K=function(){let{performance:e}=N;if(!e||!e.now)return H;let t=Date.now()-e.now(),r=void 0==e.timeOrigin?t:e.timeOrigin;return()=>(r+e.now())/1e3}();function Q(e){return function e(t,r){if(function(e){if(!q(e))return!1;try{let t=Object.getPrototypeOf(e).constructor.name;return!t||"Object"===t}catch(e){return!0}}(t)){let i=r.get(t);if(void 0!==i)return i;let s={};for(let i of(r.set(t,s),Object.keys(t)))void 0!==t[i]&&(s[i]=e(t[i],r));return s}if(Array.isArray(t)){let i=r.get(t);if(void 0!==i)return i;let s=[];return r.set(t,s),t.forEach(t=>{s.push(e(t,r))}),s}return t}(e,new Map)}function J(){let e=N.crypto||N.msCrypto,t=()=>16*Math.random();try{if(e&&e.randomUUID)return e.randomUUID().replace(/-/g,"");e&&e.getRandomValues&&(t=()=>{let t=new Uint8Array(1);return e.getRandomValues(t),t[0]})}catch(e){}return"10000000100040008000100000000000".replace(/[018]/g,e=>(e^(15&t())>>e/4).toString(16))}(()=>{let{performance:e}=N;if(!e||!e.now)return;let t=e.now(),r=Date.now(),i=e.timeOrigin?Math.abs(e.timeOrigin+t-r):36e5,s=e.timing&&e.timing.navigationStart,a="number"==typeof s?Math.abs(s+t-r):36e5;if(i<36e5||a<36e5)return i<=a?e.timeOrigin:void 0})();const Z="production",X="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__;(t=a||(a={}))[t.PENDING=0]="PENDING",t[t.RESOLVED=1]="RESOLVED",t[t.REJECTED=2]="REJECTED";class Y{constructor(e){Y.prototype.__init.call(this),Y.prototype.__init2.call(this),Y.prototype.__init3.call(this),Y.prototype.__init4.call(this),this._state=a.PENDING,this._handlers=[];try{e(this._resolve,this._reject)}catch(e){this._reject(e)}}then(e,t){return new Y((r,i)=>{this._handlers.push([!1,t=>{if(e)try{r(e(t))}catch(e){i(e)}else r(t)},e=>{if(t)try{r(t(e))}catch(e){i(e)}else i(e)}]),this._executeHandlers()})}catch(e){return this.then(e=>e,e)}finally(e){return new Y((t,r)=>{let i,s;return this.then(t=>{s=!1,i=t,e&&e()},t=>{s=!0,i=t,e&&e()}).then(()=>{if(s){r(i);return}t(i)})})}__init(){this._resolve=e=>{this._setResult(a.RESOLVED,e)}}__init2(){this._reject=e=>{this._setResult(a.REJECTED,e)}}__init3(){this._setResult=(e,t)=>{if(this._state===a.PENDING){if(U(t)){t.then(this._resolve,this._reject);return}this._state=e,this._value=t,this._executeHandlers()}}}__init4(){this._executeHandlers=()=>{if(this._state===a.PENDING)return;let e=this._handlers.slice();this._handlers=[],e.forEach(e=>{e[0]||(this._state===a.RESOLVED&&e[1](this._value),this._state===a.REJECTED&&e[2](this._value),e[0]=!0)})}}}function ee(e,t={}){if(!t.user||(!e.ipAddress&&t.user.ip_address&&(e.ipAddress=t.user.ip_address),e.did||t.did||(e.did=t.user.id||t.user.email||t.user.username)),e.timestamp=t.timestamp||K(),t.abnormal_mechanism&&(e.abnormal_mechanism=t.abnormal_mechanism),t.ignoreDuration&&(e.ignoreDuration=t.ignoreDuration),t.sid&&(e.sid=32===t.sid.length?t.sid:J()),void 0!==t.init&&(e.init=t.init),!e.did&&t.did&&(e.did=`${t.did}`),"number"==typeof t.started&&(e.started=t.started),e.ignoreDuration)e.duration=void 0;else if("number"==typeof t.duration)e.duration=t.duration;else{let t=e.timestamp-e.started;e.duration=t>=0?t:0}t.release&&(e.release=t.release),t.environment&&(e.environment=t.environment),!e.ipAddress&&t.ipAddress&&(e.ipAddress=t.ipAddress),!e.userAgent&&t.userAgent&&(e.userAgent=t.userAgent),"number"==typeof t.errors&&(e.errors=t.errors),t.status&&(e.status=t.status)}function et(e){return e.transaction}function er(e){return"function"==typeof e.getSpanJSON?e.getSpanJSON():"function"==typeof e.toJSON?e.toJSON():{}}RegExp("^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$");class ei{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext=es()}static clone(e){return e?e.clone():new ei}clone(){let e=new ei;return e._breadcrumbs=[...this._breadcrumbs],e._tags={...this._tags},e._extra={...this._extra},e._contexts={...this._contexts},e._user=this._user,e._level=this._level,e._span=this._span,e._session=this._session,e._transactionName=this._transactionName,e._fingerprint=this._fingerprint,e._eventProcessors=[...this._eventProcessors],e._requestSession=this._requestSession,e._attachments=[...this._attachments],e._sdkProcessingMetadata={...this._sdkProcessingMetadata},e._propagationContext={...this._propagationContext},e._client=this._client,e}setClient(e){this._client=e}getClient(){return this._client}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{email:void 0,id:void 0,ip_address:void 0,segment:void 0,username:void 0},this._session&&ee(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}getRequestSession(){return this._requestSession}setRequestSession(e){return this._requestSession=e,this}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this._tags={...this._tags,[e]:t},this._notifyScopeListeners(),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return null===t?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSpan(e){return this._span=e,this._notifyScopeListeners(),this}getSpan(){return this._span}getTransaction(){let e=this._span;return e&&e.transaction}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;if("function"==typeof e){let t=e(this);return t instanceof ei?t:this}return e instanceof ei?(this._tags={...this._tags,...e._tags},this._extra={...this._extra,...e._extra},this._contexts={...this._contexts,...e._contexts},e._user&&Object.keys(e._user).length&&(this._user=e._user),e._level&&(this._level=e._level),e._fingerprint&&(this._fingerprint=e._fingerprint),e._requestSession&&(this._requestSession=e._requestSession),e._propagationContext&&(this._propagationContext=e._propagationContext)):q(e)&&(this._tags={...this._tags,...e.tags},this._extra={...this._extra,...e.extra},this._contexts={...this._contexts,...e.contexts},e.user&&(this._user=e.user),e.level&&(this._level=e.level),e.fingerprint&&(this._fingerprint=e.fingerprint),e.requestSession&&(this._requestSession=e.requestSession),e.propagationContext&&(this._propagationContext=e.propagationContext)),this}clear(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._requestSession=void 0,this._span=void 0,this._session=void 0,this._notifyScopeListeners(),this._attachments=[],this._propagationContext=es(),this}addBreadcrumb(e,t){let r="number"==typeof t?t:100;if(r<=0)return this;let i={timestamp:H(),...e},s=this._breadcrumbs;return s.push(i),this._breadcrumbs=s.length>r?s.slice(-r):s,this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}getAttachments(){return this.getScopeData().attachments}clearAttachments(){return this._attachments=[],this}getScopeData(){let{_breadcrumbs:e,_attachments:t,_contexts:r,_tags:i,_extra:s,_user:a,_level:n,_fingerprint:o,_eventProcessors:c,_propagationContext:d,_sdkProcessingMetadata:l,_transactionName:p,_span:h}=this;return{breadcrumbs:e,attachments:t,contexts:r,tags:i,extra:s,user:a,level:n,fingerprint:o||[],eventProcessors:c,propagationContext:d,sdkProcessingMetadata:l,transactionName:p,span:h}}applyToEvent(e,t={},r=[]){return!function(e,t){var r;let{fingerprint:i,span:s,breadcrumbs:a,sdkProcessingMetadata:n,propagationContext:o}=t;(function(e,t){let{extra:r,tags:i,user:s,contexts:a,level:n,transactionName:o}=t,c=Q(r);c&&Object.keys(c).length&&(e.extra={...c,...e.extra});let d=Q(i);d&&Object.keys(d).length&&(e.tags={...d,...e.tags});let l=Q(s);l&&Object.keys(l).length&&(e.user={...l,...e.user});let p=Q(a);p&&Object.keys(p).length&&(e.contexts={...p,...e.contexts}),n&&(e.level=n),o&&(e.transaction=o)})(e,t),s&&function(e,t){e.contexts={trace:function(e){let{spanId:t,traceId:r}=e.spanContext(),{data:i,op:s,parent_span_id:a,status:n,tags:o,origin:c}=er(e);return Q({data:i,op:s,parent_span_id:a,span_id:t,status:n,tags:o,trace_id:r,origin:c})}(t),...e.contexts};let r=et(t);if(r){e.sdkProcessingMetadata={dynamicSamplingContext:function(e){let t=ed().getClient();if(!t)return{};let r=function(e,t,r){let i=t.getOptions(),{publicKey:s}=t.getDsn()||{},{segment:a}=r&&r.getUser()||{},n=Q({environment:i.environment||Z,release:i.release,user_segment:a,public_key:s,trace_id:e});return t.emit&&t.emit("createDsc",n),n}(er(e).trace_id||"",t,ed().getScope()),i=et(e);if(!i)return r;let s=i&&i._frozenDynamicSamplingContext;if(s)return s;let{sampleRate:a,source:n}=i.metadata;null!=a&&(r.sample_rate=`${a}`);let o=er(i);return n&&"url"!==n&&(r.transaction=o.description),r.sampled=String(function(e){let{traceFlags:t}=e.spanContext();return!!(1&t)}(i)),t.emit&&t.emit("createDsc",r),r}(t),...e.sdkProcessingMetadata};let i=er(r).description;i&&(e.tags={transaction:i,...e.tags})}}(e,s),e.fingerprint=e.fingerprint?Array.isArray(r=e.fingerprint)?r:[r]:[],i&&(e.fingerprint=e.fingerprint.concat(i)),e.fingerprint&&!e.fingerprint.length&&delete e.fingerprint,function(e,t){let r=[...e.breadcrumbs||[],...t];e.breadcrumbs=r.length?r:void 0}(e,a),e.sdkProcessingMetadata={...e.sdkProcessingMetadata,...n,propagationContext:o}}(e,this.getScopeData()),function e(t,r,i,s=0){return new Y((a,n)=>{let o=t[s];if(null===r||"function"!=typeof o)a(r);else{let c=o({...r},i);X&&o.id&&null===c&&G.log(`Event processor "${o.id}" dropped event`),U(c)?c.then(r=>e(t,r,i,s+1).then(a)).then(null,n):e(t,c,i,s+1).then(a).then(null,n)}})}([...r,...F("globalEventProcessors",()=>[]),...this._eventProcessors],e,t)}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata={...this._sdkProcessingMetadata,...e},this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}captureException(e,t){let r=t&&t.event_id?t.event_id:J();if(!this._client)return G.warn("No client configured on scope - will not capture exception!"),r;let i=Error("Sentry syntheticException");return this._client.captureException(e,{originalException:e,syntheticException:i,...t,event_id:r},this),r}captureMessage(e,t,r){let i=r&&r.event_id?r.event_id:J();if(!this._client)return G.warn("No client configured on scope - will not capture message!"),i;let s=Error(e);return this._client.captureMessage(e,t,{originalException:e,syntheticException:s,...r,event_id:i},this),i}captureEvent(e,t){let r=t&&t.event_id?t.event_id:J();return this._client?this._client.captureEvent(e,{...t,event_id:r},this):G.warn("No client configured on scope - will not capture event!"),r}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(e=>{e(this)}),this._notifyingListeners=!1)}}function es(){return{traceId:J(),spanId:J().substring(16)}}const ea=parseFloat("7.94.1");class en{constructor(e,t,r,i=ea){let s,a;this._version=i,t?s=t:(s=new ei).setClient(e),r?a=r:(a=new ei).setClient(e),this._stack=[{scope:s}],e&&this.bindClient(e),this._isolationScope=a}isOlderThan(e){return this._version<e}bindClient(e){let t=this.getStackTop();t.client=e,t.scope.setClient(e),e&&e.setupIntegrations&&e.setupIntegrations()}pushScope(){let e=this.getScope().clone();return this.getStack().push({client:this.getClient(),scope:e}),e}popScope(){return!(this.getStack().length<=1)&&!!this.getStack().pop()}withScope(e){let t;let r=this.pushScope();try{t=e(r)}catch(e){throw this.popScope(),e}return U(t)?t.then(e=>(this.popScope(),e),e=>{throw this.popScope(),e}):(this.popScope(),t)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStack(){return this._stack}getStackTop(){return this._stack[this._stack.length-1]}captureException(e,t){let r=this._lastEventId=t&&t.event_id?t.event_id:J(),i=Error("Sentry syntheticException");return this.getScope().captureException(e,{originalException:e,syntheticException:i,...t,event_id:r}),r}captureMessage(e,t,r){let i=this._lastEventId=r&&r.event_id?r.event_id:J(),s=Error(e);return this.getScope().captureMessage(e,t,{originalException:e,syntheticException:s,...r,event_id:i}),i}captureEvent(e,t){let r=t&&t.event_id?t.event_id:J();return e.type||(this._lastEventId=r),this.getScope().captureEvent(e,{...t,event_id:r}),r}lastEventId(){return this._lastEventId}addBreadcrumb(e,t){let{scope:r,client:i}=this.getStackTop();if(!i)return;let{beforeBreadcrumb:s=null,maxBreadcrumbs:a=100}=i.getOptions&&i.getOptions()||{};if(a<=0)return;let n={timestamp:H(),...e},o=s?W(()=>s(n,t)):n;null!==o&&(i.emit&&i.emit("beforeAddBreadcrumb",o,t),r.addBreadcrumb(o,a))}setUser(e){this.getScope().setUser(e),this.getIsolationScope().setUser(e)}setTags(e){this.getScope().setTags(e),this.getIsolationScope().setTags(e)}setExtras(e){this.getScope().setExtras(e),this.getIsolationScope().setExtras(e)}setTag(e,t){this.getScope().setTag(e,t),this.getIsolationScope().setTag(e,t)}setExtra(e,t){this.getScope().setExtra(e,t),this.getIsolationScope().setExtra(e,t)}setContext(e,t){this.getScope().setContext(e,t),this.getIsolationScope().setContext(e,t)}configureScope(e){let{scope:t,client:r}=this.getStackTop();r&&e(t)}run(e){let t=ec(this);try{e(this)}finally{ec(t)}}getIntegration(e){let t=this.getClient();if(!t)return null;try{return t.getIntegration(e)}catch(t){return X&&G.warn(`Cannot retrieve integration ${e.id} from the current Hub`),null}}startTransaction(e,t){let r=this._callExtensionMethod("startTransaction",e,t);return X&&!r&&(this.getClient()?G.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':
|
|
2
|
+
Sentry.addTracingExtensions();
|
|
3
|
+
Sentry.init({...});
|
|
4
|
+
`):G.warn("Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'")),r}traceHeaders(){return this._callExtensionMethod("traceHeaders")}captureSession(e=!1){if(e)return this.endSession();this._sendSessionUpdate()}endSession(){let e=this.getStackTop().scope,t=e.getSession();if(t){var r;let e;e={},r?e={status:r}:"ok"===t.status&&(e={status:"exited"}),ee(t,e)}this._sendSessionUpdate(),e.setSession()}startSession(e){let{scope:t,client:r}=this.getStackTop(),{release:i,environment:s=Z}=r&&r.getOptions()||{},{userAgent:a}=N.navigator||{},n=function(e){let t=K(),r={sid:J(),init:!0,timestamp:t,started:t,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>Q({sid:`${r.sid}`,init:r.init,started:new Date(1e3*r.started).toISOString(),timestamp:new Date(1e3*r.timestamp).toISOString(),status:r.status,errors:r.errors,did:"number"==typeof r.did||"string"==typeof r.did?`${r.did}`:void 0,duration:r.duration,abnormal_mechanism:r.abnormal_mechanism,attrs:{release:r.release,environment:r.environment,ip_address:r.ipAddress,user_agent:r.userAgent}})};return e&&ee(r,e),r}({release:i,environment:s,user:t.getUser(),...a&&{userAgent:a},...e}),o=t.getSession&&t.getSession();return o&&"ok"===o.status&&ee(o,{status:"exited"}),this.endSession(),t.setSession(n),n}shouldSendDefaultPii(){let e=this.getClient(),t=e&&e.getOptions();return!!(t&&t.sendDefaultPii)}_sendSessionUpdate(){let{scope:e,client:t}=this.getStackTop(),r=e.getSession();r&&t&&t.captureSession&&t.captureSession(r)}_callExtensionMethod(e,...t){let r=eo().__SENTRY__;if(r&&r.extensions&&"function"==typeof r.extensions[e])return r.extensions[e].apply(this,t);X&&G.warn(`Extension method ${e} couldn't be found, doing nothing.`)}}function eo(){return N.__SENTRY__=N.__SENTRY__||{extensions:{},hub:void 0},N}function ec(e){let t=eo(),r=el(t);return ep(t,e),r}function ed(){let e=eo();if(e.__SENTRY__&&e.__SENTRY__.acs){let t=e.__SENTRY__.acs.getCurrentHub();if(t)return t}return function(e=eo()){return(!(e&&e.__SENTRY__&&e.__SENTRY__.hub)||el(e).isOlderThan(ea))&&ep(e,new en),el(e)}(e)}function el(e){return F("hub",()=>new en,e)}function ep(e,t){return!!e&&((e.__SENTRY__=e.__SENTRY__||{}).hub=t,!0)}function eh(e,t){ed().addBreadcrumb(e,t)}new WeakMap;const eu={1:"error",2:"warn",3:"info",4:"verbose",5:"debug"};let em=Number(2);const ef=new Intl.DateTimeFormat("en-GB",{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZone:"GMT"});class eg{constructor(e,t){this.filename=e,this.customLogLevel=t}print(e,t,r,...i){let s=`[ ${ef.format(new Date)} ][ ${eu[e]} ][ ${this.filename} - ${r} ]`;e<=(this.customLogLevel||em)?t(s,...i):eh({type:"debug",level:eu[e],category:"console",data:{head:s,arguments:i}})}debug(e,...t){this.print(5,console.debug,e,...t)}error(e,...t){this.print(1,console.error,e,...t)}info(e,...t){this.print(3,console.info,e,...t)}log(e,...t){this.print(4,console.log,e,...t)}warn(e,...t){this.print(2,console.warn,e,...t)}deprecated(...e){console.warn("[ DEPRECATED ]",...e)}static setLogLevel(e){em=e}setLogLevel(e){this.customLogLevel=e}}const ev=new eg("AudioLevels.ts"),e_=window.AudioContext||window.webkitAudioContext;class eb{constructor(e,t){this.speakStartEventTime=0,this.speakStopEventTime=0,this.speaking=!1,this.audioMedianInterval=-1,this.audioLevelInterval=-1,this.audioLevels=[],this.id=e.id,this.listener=t,this.stream=e,this.audioContext=new e_,this.analyser=this.audioContext.createAnalyser(),this.audioStreamSource=this.audioContext.createMediaStreamSource(this.stream),this.analyser.fftSize=32,this.analyser.minDecibels=-90,this.analyser.maxDecibels=-10,this.audioStreamSource.connect(this.analyser)}getAudioLevelMedian(){let{length:e}=this.audioLevels;return this.audioLevels.reduce((e,t)=>e+t,0)/e}getCurrentAudioLevel(){let{length:e}=this.audioLevels;return e?this.audioLevels[e-1]:0}audioMuteDetection(){0===this.getAudioLevelMedian()&&this.audioLevels.length>0&&this.listener?.onMuteDetection?.(this.id)}detectSpeakingChange(e){e<20&&!this.speakStopEventTime&&(this.speakStartEventTime=0,this.speakStopEventTime=Date.now()),e>=20&&!this.speakStartEventTime&&(this.speakStartEventTime=Date.now(),this.speakStopEventTime=0);let t=this.speakStartEventTime||this.speakStopEventTime,r=!!this.speakStartEventTime;(Date.now()-t>500&&r||Date.now()-t>300&&!r)&&this.speaking!==r&&(this.speaking=r,r?this.listener?.onStartSpeak():this.listener?.onStopSpeak())}computeRMS(e){let t=0;for(let r=0;r<e.length;r++)t+=e[r]*e[r];return Math.sqrt(t/=e.length)}getInstantAudioLevel(){let e=new Uint8Array(this.analyser.frequencyBinCount);this.analyser.getByteFrequencyData(e);let t=this.computeRMS(e);return t>0?100*t/255:0}loopCalcul(){let e=this.getInstantAudioLevel();this.audioLevels=this.audioLevels.splice(-59),this.detectSpeakingChange(e),this.audioLevels.push(e),this.listener?.onAudioLevel?.(e,this.id)}analyse(){this.audioLevelInterval=window.setInterval(()=>this.loopCalcul(),1e3/60),this.audioMedianInterval=window.setInterval(()=>this.audioMuteDetection(),2e3)}clearListeners(){clearInterval(this.audioLevelInterval),clearInterval(this.audioMedianInterval),this.audioLevels=[]}release(){this.listener=void 0,this.clearListeners(),this.stream.getTracks().forEach(e=>{this.stream.removeTrack(e)});try{this.audioStreamSource.disconnect(this.analyser)}catch(e){ev.error("release","audioStreamSource failed to disconnect",e)}this.audioContext.close().catch(e=>{ev.error("release","audioContext failed to close",e)})}static isAPIAvailable(){return!!e_}}const ew=new eg("AudioRenderer.ts");var ey=class{constructor({consumerId:e}){this.consumerId=e,this.audio=new Audio,this.audio.id=e,this.audio.autoplay=!0,document.body.appendChild(this.audio)}destroy(){this.audio.pause(),this.audio.srcObject=null,document.body.removeChild(this.audio)}setSource(e){this.audio.srcObject=e}async setSink(e){await this.audio.setSinkId?.(e)}getSink(){return this.audio.sinkId}async play(){await this.audio.play().catch(e=>{ew.warn("play","failed to play"),setTimeout(()=>{this.play()},1e3)})}};const eS=async e=>{let{videoWidth:t,videoHeight:r}=e,i=t>r?"landscape":"portrait",s="portrait"===i?t:r,a="landscape"===i?r:t,n=document.createElement("canvas"),o=n.getContext("2d"),c=window.devicePixelRatio||1;return n.width=s*c,n.height=a*c,o?.scale(c,c),o?.drawImage(e,"landscape"===i?(t-s)/2:0,"portrait"===i?(r-a)/2:0,s,a,0,0,n.width/c,n.height/c),n.toDataURL("image/jpeg")},eR=async e=>{let t=document.createElement("video"),r=new MediaStream;r.addTrack(e),t.srcObject=r,t.setAttribute("muted","true");let i=e.getSettings();t.width=i.width||0,t.height=i.height||0,await t.play();let s=document.createElement("canvas"),a=s.getContext("2d");return s.height=t.height,s.width=t.width,a?.drawImage(t,0,0),s.toDataURL("image/jpeg")};var eP=u("iSZvy"),ex={};ex=function(e){var t={};function r(i){if(t[i])return t[i].exports;var s=t[i]={i:i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t||4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)r.d(i,s,(function(t){return e[t]}).bind(null,s));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){t.__esModule=!0,t.default=void 0;var i=r(18),s=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0});if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0});if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,i){void 0===i&&(i=!1);var s=e.getVersionPrecision(t),a=e.getVersionPrecision(r),n=Math.max(s,a),o=0,c=e.map([t,r],function(t){var r=n-e.getVersionPrecision(t),i=t+Array(r+1).join(".0");return e.map(i.split("."),function(e){return Array(20-e.length).join("0")+e}).reverse()});for(i&&(o=n-Math.min(s,a)),n-=1;n>=o;){if(c[0][n]>c[1][n])return 1;if(c[0][n]===c[1][n]){if(n===o)return 0;n-=1}else if(c[0][n]<c[1][n])return -1}},e.map=function(e,t){var r,i=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)i.push(t(e[r]));return i},e.find=function(e,t){var r,i;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,i=e.length;r<i;r+=1){var s=e[r];if(t(s,r))return s}},e.assign=function(e){for(var t,r,i=arguments.length,s=Array(i>1?i-1:0),a=1;a<i;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));for(t=0,r=s.length;t<r;t+=1)(function(){var r=s[t];"object"==typeof r&&null!==r&&Object.keys(r).forEach(function(t){e[t]=r[t]})})();return e},e.getBrowserAlias=function(e){return i.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return i.BROWSER_MAP[e]||""},e}();t.default=s,e.exports=t.default},18:function(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"},t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"},t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"},t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"},t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"}},90:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(91))&&i.__esModule?i:{default:i},a=r(18),n=function(){function e(){}return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw Error("UserAgent should be a string");return new s.default(e,t)},e.parse=function(e){return new s.default(e).getResult()},function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(e,[{key:"BROWSER_MAP",get:function(){return a.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return a.ENGINE_MAP}},{key:"OS_MAP",get:function(){return a.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return a.PLATFORMS_MAP}}]),e}();t.default=n,e.exports=t.default},91:function(e,t,r){t.__esModule=!0,t.default=void 0;var i=c(r(92)),s=c(r(93)),a=c(r(94)),n=c(r(95)),o=c(r(17));function c(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(i.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw Error("Browser's test function is not valid")});return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(s.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw Error("Browser's test function is not valid")});return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(a.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw Error("Browser's test function is not valid")});return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(n.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw Error("Browser's test function is not valid")});return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},i=0,s={},a=0;if(Object.keys(e).forEach(function(t){var n=e[t];"string"==typeof n?(s[t]=n,a+=1):"object"==typeof n&&(r[t]=n,i+=1)}),i>0){var n=Object.keys(r),c=o.default.find(n,function(e){return t.isOS(e)});if(c){var d=this.satisfies(r[c]);if(void 0!==d)return d}var l=o.default.find(n,function(e){return t.isPlatform(e)});if(l){var p=this.satisfies(r[l]);if(void 0!==p)return p}}if(a>0){var h=Object.keys(s),u=o.default.find(h,function(e){return t.isBrowser(e,!0)});if(void 0!==u)return this.compareVersion(s[u])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),s=o.default.getBrowserTypeByAlias(i);return t&&s&&(i=s.toLowerCase()),i===r},t.compareVersion=function(e){var t=[0],r=e,i=!1,s=this.getBrowserVersion();if("string"==typeof s)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(i=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(i=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(s,r,i))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some(function(e){return t.is(e)})},e}();t.default=d,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},a=/version\/(\d+(\.?_?\d+)+)/i,n=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=s.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=s.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=s.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=s.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=s.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=s.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=s.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=s.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=s.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=s.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=s.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=s.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=s.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=s.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=s.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=s.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=s.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=s.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=s.default.getFirstMatch(a,e)||s.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=s.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=s.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=s.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=s.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=s.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=s.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=s.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=s.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=s.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=s.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:s.default.getFirstMatch(t,e),version:s.default.getSecondMatch(t,e)}}}];t.default=n,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},a=r(18),n=[{test:[/Roku\/DVP/],describe:function(e){var t=s.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:a.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=s.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=s.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=s.default.getWindowsVersionName(t);return{name:a.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:a.OS_MAP.iOS},r=s.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=s.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=s.default.getMacOSVersionName(t),i={name:a.OS_MAP.MacOS,version:t};return r&&(i.versionName=r),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=s.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=s.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=s.default.getAndroidVersionName(t),i={name:a.OS_MAP.Android,version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=s.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:a.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=s.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||s.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||s.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:a.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=s.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=s.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:a.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:a.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=s.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.PlayStation4,version:t}}}];t.default=n,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},a=r(18),n=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=s.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=s.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];t.default=n,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,s=(i=r(17))&&i.__esModule?i:{default:i},a=r(18),n=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:a.ENGINE_MAP.Blink};var t=s.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:a.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:a.ENGINE_MAP.Trident},r=s.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:a.ENGINE_MAP.Presto},r=s.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:a.ENGINE_MAP.Gecko},r=s.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:a.ENGINE_MAP.WebKit},r=s.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=n,e.exports=t.default}});var eC={},eT=eC&&eC.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ek=eC&&eC.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),eD=eC&&eC.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&eT(t,e,r);return ek(t,e),t},eE=eC&&eC.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eC,"__esModule",{value:!0}),eC.debug=eC.parseScalabilityMode=eC.detectDevice=eC.Device=eC.version=eC.types=void 0;const eM=eE(u("1JjHr"));eC.debug=eM.default;var eO=u("fI7XH");Object.defineProperty(eC,"Device",{enumerable:!0,get:function(){return eO.Device}}),Object.defineProperty(eC,"detectDevice",{enumerable:!0,get:function(){return eO.detectDevice}});const eI=eD(u("8cmuS"));eC.types=eI,eC.version="3.7.2";var eL=u("kBU2H");Object.defineProperty(eC,"parseScalabilityMode",{enumerable:!0,get:function(){return eL.parse}});const ej=new eg("StreamerMediasoup");class eA{constructor(e,t){this.mediasoupDevice=e,this.config=t}static async create(e,t){let r=await e.request("getRouterRtpCapabilities");r.headerExtensions=r.headerExtensions?.filter(e=>"urn:3gpp:video-orientation"!==e.uri);let i=function(){try{return new eC.Device}catch(e){return ej.error("failed to detects device from mediasoup, fallback on auto detection",e),function(){try{let e=navigator.userAgent,t=ex.getParser(e);ed().setTag("DeviceDetectionForced",!0),eh({type:"debug",category:"browser",data:t.getResult()});let r=t.getOS();if("Safari"===t.getBrowserName()&&"iOS"===r.name&&Number(r.version)>=14.3)return new eC.Device({handlerName:"Safari12"});throw Error("failed to autoDetect browser, falling back to chrome 74")}catch(e){ej.error("deviceAutoDetection",e)}return new eC.Device({handlerName:"Chrome74"})}()}}();return i.load({routerRtpCapabilities:r}),new eA(i,t)}getRtpCapabilities(){return this.mediasoupDevice.rtpCapabilities}async createTransportConfig(e){let t=await e.request("createWebRtcTransport");return{id:t.id,iceParameters:t.iceParameters,iceCandidates:t.iceCandidates,dtlsParameters:{...t.dtlsParameters,role:"auto"},sctpParameters:t.sctpParameters,iceServers:this.config.iceServers,proprietaryConstraints:{optional:[{googDscp:!0}]},additionalSettings:{encodedInsertableStreams:!1}}}async createSendTransport(e){let t=this.mediasoupDevice.createSendTransport(await this.createTransportConfig(e));return t.on("connect",({dtlsParameters:r},i,s)=>{ej.log("dtlsParameters",t.id,r),e.request("connectWebRtcTransport",{transportId:t.id,dtlsParameters:r}).then(i).catch(s)}),t.on("produce",async({kind:r,rtpParameters:i,appData:s},a,n)=>{try{let{id:n}=await e.request("produce",{transportId:t.id,kind:r,rtpParameters:i,appData:s});a({id:n}),ej.log("producerTransport: ",t)}catch(e){n(e)}}),t}async createRecvTransport(e){let t=this.mediasoupDevice.createRecvTransport(await this.createTransportConfig(e));return t.on("connect",({dtlsParameters:r},i,s)=>{ej.log("dtls",t.id,r),e.request("connectWebRtcTransport",{transportId:t.id,dtlsParameters:r}).then(i).catch(s)}),t}async createTransport(e,t){return"send"===t?await this.createSendTransport(e):await this.createRecvTransport(e)}async produceAudio(e,t,r){return await e.produce({track:t,codecOptions:{opusStereo:!0,opusDtx:!0},appData:r})}async produceVideo(e,t,r){return await e.produce({track:t,encodings:void 0,codecOptions:{videoGoogleStartBitrate:1e3},appData:r})}}var eN={};(function(){function e(e){var t=0;return function(){return t<e.length?{done:!1,value:e[t++]}:{done:!0}}}var t,r="function"==typeof Object.defineProperties?Object.defineProperty:function(e,t,r){return e==Array.prototype||e==Object.prototype||(e[t]=r.value),e},i=function(e){e=["object"==typeof globalThis&&globalThis,e,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof d&&d];for(var t=0;t<e.length;++t){var r=e[t];if(r&&r.Math==Math)return r}throw Error("Cannot find global object")}(this);function s(e,t){if(t)e:{var s=i;e=e.split(".");for(var a=0;a<e.length-1;a++){var n=e[a];if(!(n in s))break e;s=s[n]}(t=t(a=s[e=e[e.length-1]]))!=a&&null!=t&&r(s,e,{configurable:!0,writable:!0,value:t})}}function a(t){var r="undefined"!=typeof Symbol&&Symbol.iterator&&t[Symbol.iterator];return r?r.call(t):{next:e(t)}}function n(e){if(!(e instanceof Array)){e=a(e);for(var t,r=[];!(t=e.next()).done;)r.push(t.value);e=r}return e}s("Symbol",function(e){function t(e,t){this.h=e,r(this,"description",{configurable:!0,writable:!0,value:t})}if(e)return e;t.prototype.toString=function(){return this.h};var i="jscomp_symbol_"+(1e9*Math.random()>>>0)+"_",s=0;return function e(r){if(this instanceof e)throw TypeError("Symbol is not a constructor");return new t(i+(r||"")+"_"+s++,r)}}),s("Symbol.iterator",function(t){if(t)return t;t=Symbol("Symbol.iterator");for(var s="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),a=0;a<s.length;a++){var n=i[s[a]];"function"==typeof n&&"function"!=typeof n.prototype[t]&&r(n.prototype,t,{configurable:!0,writable:!0,value:function(){var t;return(t={next:t=e(this)})[Symbol.iterator]=function(){return this},t}})}return t});var o="function"==typeof Object.assign?Object.assign:function(e,t){for(var r=1;r<arguments.length;r++){var i=arguments[r];if(i)for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(e[s]=i[s])}return e};s("Object.assign",function(e){return e||o});var c,l,p="function"==typeof Object.create?Object.create:function(e){function t(){}return t.prototype=e,new t};if("function"==typeof Object.setPrototypeOf)l=Object.setPrototypeOf;else{e:{var h={};try{h.__proto__={a:!0},Y=h.a;break e}catch(e){}Y=!1}l=Y?function(e,t){if(e.__proto__=t,e.__proto__!==t)throw TypeError(e+" is not extensible");return e}:null}var u=l;function m(e,t){if(e.prototype=p(t.prototype),e.prototype.constructor=e,u)u(e,t);else for(var r in t)if("prototype"!=r){if(Object.defineProperties){var i=Object.getOwnPropertyDescriptor(t,r);i&&Object.defineProperty(e,r,i)}else e[r]=t[r]}e.za=t.prototype}function f(){this.m=!1,this.j=null,this.i=void 0,this.h=1,this.v=this.s=0,this.l=null}function g(e){if(e.m)throw TypeError("Generator is already running");e.m=!0}function v(e,t){e.l={ma:t,na:!0},e.h=e.s||e.v}function _(e,t,r){return e.h=r,{value:t}}function b(e){this.h=new f,this.i=e}function w(e,t,r,i){try{var s=t.call(e.h.j,r);if(!(s instanceof Object))throw TypeError("Iterator result "+s+" is not an object");if(!s.done)return e.h.m=!1,s;var a=s.value}catch(t){return e.h.j=null,v(e.h,t),y(e)}return e.h.j=null,i.call(e.h,a),y(e)}function y(e){for(;e.h.h;)try{var t=e.i(e.h);if(t)return e.h.m=!1,{value:t.value,done:!1}}catch(t){e.h.i=void 0,v(e.h,t)}if(e.h.m=!1,e.h.l){if(t=e.h.l,e.h.l=null,t.na)throw t.ma;return{value:t.return,done:!0}}return{value:void 0,done:!0}}function S(e){this.next=function(t){return g(e.h),e.h.j?t=w(e,e.h.j.next,t,e.h.u):(e.h.u(t),t=y(e)),t},this.throw=function(t){return g(e.h),e.h.j?t=w(e,e.h.j.throw,t,e.h.u):(v(e.h,t),t=y(e)),t},this.return=function(t){var r;return g(e.h),(r=e.h.j)?w(e,"return"in r?r.return:function(e){return{value:e,done:!0}},t,e.h.return):(e.h.return(t),y(e))},this[Symbol.iterator]=function(){return this}}function R(e){return function(e){function t(t){return e.next(t)}function r(t){return e.throw(t)}return new Promise(function(i,s){!function e(a){a.done?i(a.value):Promise.resolve(a.value).then(t,r).then(e,s)}(e.next())})}(new S(new b(e)))}function P(e){return e||Array.prototype.fill}f.prototype.u=function(e){this.i=e},f.prototype.return=function(e){this.l={return:e},this.h=this.v},s("Promise",function(e){function t(e){this.i=0,this.j=void 0,this.h=[],this.u=!1;var t=this.l();try{e(t.resolve,t.reject)}catch(e){t.reject(e)}}function r(){this.h=null}function s(e){return e instanceof t?e:new t(function(t){t(e)})}if(e)return e;r.prototype.i=function(e){if(null==this.h){this.h=[];var t=this;this.j(function(){t.m()})}this.h.push(e)};var n=i.setTimeout;r.prototype.j=function(e){n(e,0)},r.prototype.m=function(){for(;this.h&&this.h.length;){var e=this.h;this.h=[];for(var t=0;t<e.length;++t){var r=e[t];e[t]=null;try{r()}catch(e){this.l(e)}}}this.h=null},r.prototype.l=function(e){this.j(function(){throw e})},t.prototype.l=function(){function e(e){return function(i){r||(r=!0,e.call(t,i))}}var t=this,r=!1;return{resolve:e(this.I),reject:e(this.m)}},t.prototype.I=function(e){if(e===this)this.m(TypeError("A Promise cannot resolve to itself"));else if(e instanceof t)this.L(e);else{switch(typeof e){case"object":var r=null!=e;break;case"function":r=!0;break;default:r=!1}r?this.F(e):this.s(e)}},t.prototype.F=function(e){var t=void 0;try{t=e.then}catch(e){this.m(e);return}"function"==typeof t?this.M(t,e):this.s(e)},t.prototype.m=function(e){this.v(2,e)},t.prototype.s=function(e){this.v(1,e)},t.prototype.v=function(e,t){if(0!=this.i)throw Error("Cannot settle("+e+", "+t+"): Promise already settled in state"+this.i);this.i=e,this.j=t,2===this.i&&this.K(),this.H()},t.prototype.K=function(){var e=this;n(function(){if(e.D()){var t=i.console;void 0!==t&&t.error(e.j)}},1)},t.prototype.D=function(){if(this.u)return!1;var e=i.CustomEvent,t=i.Event,r=i.dispatchEvent;return void 0===r||("function"==typeof e?e=new e("unhandledrejection",{cancelable:!0}):"function"==typeof t?e=new t("unhandledrejection",{cancelable:!0}):(e=i.document.createEvent("CustomEvent")).initCustomEvent("unhandledrejection",!1,!0,e),e.promise=this,e.reason=this.j,r(e))},t.prototype.H=function(){if(null!=this.h){for(var e=0;e<this.h.length;++e)o.i(this.h[e]);this.h=null}};var o=new r;return t.prototype.L=function(e){var t=this.l();e.T(t.resolve,t.reject)},t.prototype.M=function(e,t){var r=this.l();try{e.call(t,r.resolve,r.reject)}catch(e){r.reject(e)}},t.prototype.then=function(e,r){function i(e,t){return"function"==typeof e?function(t){try{s(e(t))}catch(e){a(e)}}:t}var s,a,n=new t(function(e,t){s=e,a=t});return this.T(i(e,s),i(r,a)),n},t.prototype.catch=function(e){return this.then(void 0,e)},t.prototype.T=function(e,t){function r(){switch(i.i){case 1:e(i.j);break;case 2:t(i.j);break;default:throw Error("Unexpected state: "+i.i)}}var i=this;null==this.h?o.i(r):this.h.push(r),this.u=!0},t.resolve=s,t.reject=function(e){return new t(function(t,r){r(e)})},t.race=function(e){return new t(function(t,r){for(var i=a(e),n=i.next();!n.done;n=i.next())s(n.value).T(t,r)})},t.all=function(e){var r=a(e),i=r.next();return i.done?s([]):new t(function(e,t){var a=[],n=0;do a.push(void 0),n++,s(i.value).T(function(t){return function(r){a[t]=r,0==--n&&e(a)}}(a.length-1),t),i=r.next();while(!i.done)})},t}),s("Array.prototype.keys",function(e){return e||function(){var e,t,r,i;return e=this,e instanceof String&&(e+=""),t=0,r=!1,(i={next:function(){if(!r&&t<e.length){var i=t++;return{value:(e[i],i),done:!1}}return r=!0,{done:!0,value:void 0}}})[Symbol.iterator]=function(){return i},i}}),s("Array.prototype.fill",function(e){return e||function(e,t,r){var i=this.length||0;for(0>t&&(t=Math.max(0,i+t)),(null==r||r>i)&&(r=i),0>(r=Number(r))&&(r=Math.max(0,i+r)),t=Number(t||0);t<r;t++)this[t]=e;return this}}),s("Int8Array.prototype.fill",P),s("Uint8Array.prototype.fill",P),s("Uint8ClampedArray.prototype.fill",P),s("Int16Array.prototype.fill",P),s("Uint16Array.prototype.fill",P),s("Int32Array.prototype.fill",P),s("Uint32Array.prototype.fill",P),s("Float32Array.prototype.fill",P),s("Float64Array.prototype.fill",P),s("Object.is",function(e){return e||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}}),s("Array.prototype.includes",function(e){return e||function(e,t){var r=this;r instanceof String&&(r=String(r));var i=r.length;for(0>(t=t||0)&&(t=Math.max(t+i,0));t<i;t++){var s=r[t];if(s===e||Object.is(s,e))return!0}return!1}}),s("String.prototype.includes",function(e){return e||function(e,t){if(null==this)throw TypeError("The 'this' value for String.prototype.includes must not be null or undefined");if(e instanceof RegExp)throw TypeError("First argument to String.prototype.includes must not be a regular expression");return -1!==this.indexOf(e,t||0)}});var x=this||self;function C(e,t){e=e.split(".");var r,i=x;for((e[0]in i)||void 0===i.execScript||i.execScript("var "+e[0]);e.length&&(r=e.shift());)e.length||void 0===t?i=i[r]&&i[r]!==Object.prototype[r]?i[r]:i[r]={}:i[r]=t}function T(e){var t;return(t=x.navigator)&&(t=t.userAgent)||(t=""),-1!=t.indexOf(e)}var k=Array.prototype.map?function(e,t){return Array.prototype.map.call(e,t,void 0)}:function(e,t){for(var r=e.length,i=Array(r),s="string"==typeof e?e.split(""):e,a=0;a<r;a++)a in s&&(i[a]=t.call(void 0,s[a],a,e));return i},D={},E=null;function M(){if(!E){E={};for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),t=["+/=","+/","-_=","-_.","-_"],r=0;5>r;r++){var i=e.concat(t[r].split(""));D[r]=i;for(var s=0;s<i.length;s++){var a=i[s];void 0===E[a]&&(E[a]=s)}}}}var O="undefined"!=typeof Uint8Array,I=!(T("Trident")||T("MSIE"))&&"function"==typeof x.btoa;function L(e){if(!I){var t;void 0===t&&(t=0),M(),t=D[t];for(var r=Array(Math.floor(e.length/3)),i=t[64]||"",s=0,a=0;s<e.length-2;s+=3){var n=e[s],o=e[s+1],c=e[s+2],d=t[n>>2];n=t[(3&n)<<4|o>>4],o=t[(15&o)<<2|c>>6],c=t[63&c],r[a++]=d+n+o+c}switch(d=0,c=i,e.length-s){case 2:c=t[(15&(d=e[s+1]))<<2]||i;case 1:e=e[s],r[a]=t[e>>2]+t[(3&e)<<4|d>>4]+c+i}return r.join("")}for(t="";10240<e.length;)t+=String.fromCharCode.apply(null,e.subarray(0,10240)),e=e.subarray(10240);return btoa(t+=String.fromCharCode.apply(null,e))}var j=RegExp("[-_.]","g");function A(e){switch(e){case"-":return"+";case"_":return"/";case".":return"=";default:return""}}function N(e){if(!I){var t,r,i,s,a;return(i=3*(r=(t=e).length)/4)%3?i=Math.floor(i):-1!="=.".indexOf(t[r-1])&&(i=-1!="=.".indexOf(t[r-2])?i-2:i-1),s=new Uint8Array(i),a=0,function(e,t){function r(t){for(;i<e.length;){var r=e.charAt(i++),s=E[r];if(null!=s)return s;if(!/^[\s\xa0]*$/.test(r))throw Error("Unknown base64 encoding at char: "+r)}return t}M();for(var i=0;;){var s=r(-1),a=r(0),n=r(64),o=r(64);if(64===o&&-1===s)break;t(s<<2|a>>4),64!=n&&(t(a<<4&240|n>>2),64!=o&&t(n<<6&192|o))}}(t,function(e){s[a++]=e}),a!==i?s.subarray(0,a):s}j.test(e)&&(e=e.replace(j,A)),e=atob(e);for(var n=new Uint8Array(e.length),o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return n}function F(){return ee||(ee=new Uint8Array(0))}var B={},q="function"==typeof Uint8Array.prototype.slice,U=0,$=0;function V(e){var t=0>e,r=(e=Math.abs(e))>>>0;e=Math.floor((e-r)/4294967296),t&&(t=(r=a(W(r,e))).next().value,e=r.next().value,r=t),U=r>>>0,$=e>>>0}var z="function"==typeof BigInt;function W(e,t){return t=~t,e?e=~e+1:t+=1,[e,t]}function G(e,t){this.i=e>>>0,this.h=t>>>0}function H(e){if(!e)return et||(et=new G(0,0));if(!/^-?\d+$/.test(e))return null;if(16>e.length)V(Number(e));else if(z)U=Number((e=BigInt(e))&BigInt(4294967295))>>>0,$=Number(e>>BigInt(32)&BigInt(4294967295));else{var t=+("-"===e[0]);$=U=0;for(var r=e.length,i=t,s=(r-t)%6+t;s<=r;i=s,s+=6)i=Number(e.slice(i,s)),$*=1e6,4294967296<=(U=1e6*U+i)&&($+=U/4294967296|0,U%=4294967296);t&&(e=(t=a(W(U,$))).next().value,t=t.next().value,U=e,$=t)}return new G(U,$)}function K(e,t){return Error("Invalid wire type: "+e+" (at position "+t+")")}function Q(){return Error("Failed to read varint, encoding is invalid.")}function J(e,t){return Error("Tried to read past the end of the data "+t+" > "+e)}function Z(){throw Error("Invalid UTF8")}function X(e,t){return t=String.fromCharCode.apply(null,t),null==e?t:e+t}var Y,ee,et,er,ei,es=void 0,ea="undefined"!=typeof TextDecoder,en="undefined"!=typeof TextEncoder;function eo(e){if(e!==B)throw Error("illegal external caller")}function ec(e,t){if(eo(t),this.V=e,null!=e&&0===e.length)throw Error("ByteString should be constructed with non-empty values")}function ed(){return eL||(eL=new ec(null,B))}function el(e){eo(B);var t=e.V;return null==(t=null==t||O&&null!=t&&t instanceof Uint8Array?t:"string"==typeof t?N(t):null)?t:e.V=t}function ep(e,t){this.i=null,this.m=!1,this.h=this.j=this.l=0,eh(this,e,t)}function eh(e,t,r){r=void 0===r?{}:r,e.S=void 0!==r.S&&r.S,t&&(t=function(e){if("string"==typeof e)return{buffer:N(e),C:!1};if(Array.isArray(e))return{buffer:new Uint8Array(e),C:!1};if(e.constructor===Uint8Array)return{buffer:e,C:!1};if(e.constructor===ArrayBuffer)return{buffer:new Uint8Array(e),C:!1};if(e.constructor===ec)return{buffer:el(e)||F(),C:!0};if(e instanceof Uint8Array)return{buffer:new Uint8Array(e.buffer,e.byteOffset,e.byteLength),C:!1};throw Error("Type not convertible to a Uint8Array, expected a Uint8Array, an ArrayBuffer, a base64 encoded string, a ByteString or an Array of numbers")}(t),e.i=t.buffer,e.m=t.C,e.l=0,e.j=e.i.length,e.h=e.l)}function eu(e,t){if(e.h=t,t>e.j)throw J(e.j,t)}function em(e){var t=e.i,r=e.h,i=t[r++],s=127&i;if(128&i&&(s|=(127&(i=t[r++]))<<7,128&i&&(s|=(127&(i=t[r++]))<<14,128&i&&(s|=(127&(i=t[r++]))<<21,128&i&&(s|=(i=t[r++])<<28,128&i&&128&t[r++]&&128&t[r++]&&128&t[r++]&&128&t[r++]&&128&t[r++])))))throw Q();return eu(e,r),s}function ef(e,t){if(0>t)throw Error("Tried to read a negative byte length: "+t);var r=e.h,i=r+t;if(i>e.j)throw J(t,e.j-r);return e.h=i,r}ep.prototype.reset=function(){this.h=this.l};var eg=[];function ev(){this.h=[]}function e_(e,t,r){for(;0<r||127<t;)e.h.push(127&t|128),t=(t>>>7|r<<25)>>>0,r>>>=7;e.h.push(t)}function eb(e,t){for(;127<t;)e.h.push(127&t|128),t>>>=7;e.h.push(t)}function ew(e,t){if(eg.length){var r=eg.pop();eh(r,e,t),e=r}else e=new ep(e,t);this.h=e,this.j=this.h.h,this.i=this.l=-1,this.setOptions(t)}function ey(e){var t=e.h;if(t.h==t.j)return!1;e.j=e.h.h;var r=em(e.h)>>>0;if(t=r>>>3,!(0<=(r&=7)&&5>=r))throw K(r,e.j);if(1>t)throw Error("Invalid field number: "+t+" (at position "+e.j+")");return e.l=t,e.i=r,!0}ev.prototype.length=function(){return this.h.length},ev.prototype.end=function(){var e=this.h;return this.h=[],e},ew.prototype.setOptions=function(e){e=void 0===e?{}:e,this.ca=void 0!==e.ca&&e.ca},ew.prototype.reset=function(){this.h.reset(),this.j=this.h.h,this.i=this.l=-1};var eS=[];function eR(){this.j=[],this.i=0,this.h=new ev}function eP(e,t){0!==t.length&&(e.j.push(t),e.i+=t.length)}var ex="function"==typeof Symbol&&"symbol"==typeof Symbol()?Symbol():void 0;function eC(e,t){return ex?e[ex]|=t:void 0!==e.A?e.A|=t:(Object.defineProperties(e,{A:{value:t,configurable:!0,writable:!0,enumerable:!1}}),t)}function eT(e,t){ex?e[ex]&&(e[ex]&=~t):void 0!==e.A&&(e.A&=~t)}function ek(e){var t;return null==(t=ex?e[ex]:e.A)?0:t}function eD(e,t){ex?e[ex]=t:void 0!==e.A?e.A=t:Object.defineProperties(e,{A:{value:t,configurable:!0,writable:!0,enumerable:!1}})}function eE(e,t){eD(t,(0|e)&-51)}function eM(e,t){eD(t,(18|e)&-41)}var eO={};function eI(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)&&e.constructor===Object}var eL,ej,eA=[];function eN(e){if(2&ek(e.o))throw Error("Cannot mutate an immutable Message")}function eF(e){var t=e.length;(t=t?e[t-1]:void 0)&&eI(t)?t.g=1:(t={},e.push((t.g=1,t)))}function eB(e){var t=e.i+e.G;return e.B||(e.B=e.o[t]={})}function eq(e,t){return -1===t?null:t>=e.i?e.B?e.B[t]:void 0:e.o[t+e.G]}function eU(e,t,r,i){eN(e),e$(e,t,r,i)}function e$(e,t,r,i){e.j&&(e.j=void 0),t>=e.i||i?eB(e)[t]=r:(e.o[t+e.G]=r,(e=e.B)&&t in e&&delete e[t])}function eV(e,t,r,i){var s=eq(e,t);Array.isArray(s)||(s=ej);var a=ek(s);if(1&a||eC(s,1),i)2&a||eC(s,2),1&r||Object.freeze(s);else{i=!(2&r);var n,o=2&a;1&r||!o?i&&16&a&&!o&&eT(s,16):(eC(n=Array.prototype.slice.call(s),1),e$(e,t,s=n))}return s}function ez(e,t){var r=eq(e,t),i=null==r?r:"number"==typeof r||"NaN"===r||"Infinity"===r||"-Infinity"===r?Number(r):void 0;return null!=i&&i!==r&&e$(e,t,i),i}function eW(e,t,r,i,s){e.h||(e.h={});var a=e.h[r],n=eV(e,r,3,s);if(!a){var o=n;a=[];var c=!!(16&ek(e.o));n=!!(2&ek(o));var d=o;!s&&n&&(o=Array.prototype.slice.call(o));for(var l=n,p=0;p<o.length;p++){var h=o[p],u=t,m=!1;if(void 0!==(h=Array.isArray(h)?new u(h):m?new u:void 0)){var f=m=ek(u=h.o);n&&(f|=2),c&&(f|=16),f!=m&&eD(u,f),u=f,l=l||!!(2&u),a.push(h)}}return e.h[r]=a,t=33|(c=ek(o)),c!=(t=l?-9&t:8|t)&&(Object.isFrozen(l=o)&&(l=Array.prototype.slice.call(l)),eD(l,t),o=l),d!==o&&e$(e,r,o),(s||i&&n)&&eC(a,2),i&&Object.freeze(a),a}return s||(s=Object.isFrozen(a),i&&!s?Object.freeze(a):!i&&s&&(a=Array.prototype.slice.call(a),e.h[r]=a)),a}function eG(e,t,r){var i=!!(2&ek(e.o));if(t=eW(e,t,r,i,i),e=eV(e,r,3,i),!(i||8&ek(e))){for(i=0;i<t.length;i++){if(2&ek((r=t[i]).o)){var s=e2(r,!1);s.j=r}else s=r;r!==s&&(t[i]=s,e[i]=s.o)}eC(e,8)}return t}function eH(e,t,r){if(null!=r&&"number"!=typeof r)throw Error("Value of float/double field must be a number|null|undefined, found "+typeof r+": "+r);eU(e,t,r)}function eK(e,t,r,i,s){eN(e);var a=eW(e,r,t,!1,!1);return r=null!=i?i:new r,e=eV(e,t,2,!1),void 0!=s?(a.splice(s,0,r),e.splice(s,0,r.o)):(a.push(r),e.push(r.o)),r.C()&&eT(e,8),r}function eQ(e,t){return null==e?t:e}function eJ(e,t,r){return r=void 0===r?0:r,eQ(ez(e,t),r)}function eZ(e,t,r,i){var s=ek(e);i=i?!!(16&s):void 0,e=Array.prototype.slice.call(e);for(var a=0;a<e.length;a++)e[a]=function e(t,r,i,s){if(null!=t){if(Array.isArray(t))t=eZ(t,r,i,void 0!==s);else if(eI(t)){var a,n={};for(a in t)n[a]=e(t[a],r,i,s);t=n}else t=r(t,s);return t}}(e[a],t,r,i);return r(s,e),e}function eX(e){return e.ja===eO?e.toJSON():function(e){switch(typeof e){case"number":return isFinite(e)?e:String(e);case"object":if(e){if(Array.isArray(e)){if(0!=(128&ek(e)))return eF(e=Array.prototype.slice.call(e)),e}else{if(O&&null!=e&&e instanceof Uint8Array)return L(e);if(e instanceof ec){var t=e.V;return null==t?"":"string"==typeof t?t:e.V=L(t)}}}}return e}(e)}function eY(e,t){128&e&&eF(t)}function e0(e,t,r,i,s,a,n){if(e=e.h&&e.h[r]){var o;if(2&(i=ek(e))?i=e:(eM(i,a=k(e,e1)),Object.freeze(a),i=a),eN(t),n=null==i?ej:(eC(o=[],1),o),null!=i){for(e=0,a=!!i.length;e<i.length;e++){var c=i[e];a=a&&!(2&ek(c.o)),n[e]=c.o}a=(a?8:0)|1,((e=ek(n))&a)!==a&&(Object.isFrozen(n)&&(n=Array.prototype.slice.call(n)),eD(n,e|a)),t.h||(t.h={}),t.h[r]=i}else t.h&&(t.h[r]=void 0);e$(t,r,n,s)}else eU(t,r,function e(t,r,i){if(i=void 0===i?eM:i,null!=t){if(O&&t instanceof Uint8Array)return t.length?new ec(new Uint8Array(t),B):ed();if(Array.isArray(t)){var s=ek(t);return 2&s||(r&&!(32&s)&&(16&s||0===s)?eD(t,2|s):4&(r=ek(t=eZ(t,e,4&s?eM:i,!0)))&&2&r&&Object.freeze(t)),t}return t.ja===eO?e1(t):t}}(i,a,n),s)}function e1(e){return 2&ek(e.o)||eC((e=e2(e,!0)).o,2),e}function e2(e,r){var i=e.o,s=[];eC(s,16);var a=e.constructor.h;if(a&&s.push(a),a=e.B){s.length=i.length,s.fill(void 0,s.length,i.length);var n={};s[s.length-1]=n}0!=(128&ek(i))&&eF(s),r=r||e.C()?eM:eE,n=e.constructor,t=s,s=new n(s),t=void 0,e.R&&(s.R=e.R.slice()),n=!!(16&ek(i));for(var o=a?i.length-1:i.length,c=0;c<o;c++)e0(e,s,c-e.G,i[c],!1,n,r);if(a)for(var d in a)e0(e,s,+d,a[d],!0,n,r);return s}function e3(e,r,i){null==e&&(e=t),t=void 0;var s,a=this.constructor.i||0,n=0<a,o=this.constructor.h,c=!1;if(null==e){var d=48,l=!0;n&&(a=0,d|=128),eD(e=o?[o]:[],d)}else{if(!Array.isArray(e)||o&&o!==e[0])throw Error();var p=d=eC(e,0);if((l=0!=(16&p))&&((c=0!=(32&p))||(p|=32)),n){if(128&p)a=0;else if(0<e.length){var h=e[e.length-1];if(eI(h)&&"g"in h){a=0,p|=128,delete h.g;var u,m=!0;for(u in h){m=!1;break}m&&e.pop()}}}else if(128&p)throw Error();d!==p&&eD(e,p)}this.G=(o?0:-1)-a,this.h=void 0,this.o=e;e:{if(a=(o=this.o.length)-1,o&&eI(o=this.o[a])){this.B=o,this.i=a-this.G;break e}void 0!==r&&-1<r?(this.i=Math.max(r,a+1-this.G),this.B=void 0):this.i=Number.MAX_VALUE}if(!n&&this.B&&"g"in this.B)throw Error('Unexpected "g" flag in sparse object of message that is not a group type.');if(i)for(r=l&&!c&&!0,n=this.i,l=0;l<i.length;l++)(c=i[l])<n?(c+=this.G,(a=e[c])?e4(a,r):e[c]=ej):(s||(s=eB(this)),(a=s[c])?e4(a,r):s[c]=ej)}function e4(e,t){if(Array.isArray(e)){var r=ek(e),i=1;!t||2&r||(i|=16),(r&i)!==i&&eD(e,r|i)}}function e6(e,t,r){if(r){var i,s={};for(i in r){var a=r[i],n=a.ra;n||(s.J=a.xa||a.oa.W,a.ia?(s.aa=tr(a.ia),n=function(e){return function(t,r,i){return e.J(t,r,i,e.aa)}}(s)):a.ka?(s.Z=ti(a.da.P,a.ka),n=function(e){return function(t,r,i){return e.J(t,r,i,e.Z)}}(s)):n=s.J,a.ra=n),n(t,e,a.da),s={J:s.J,aa:s.aa,Z:s.Z}}}!function(e,t){if(t=t.R){eP(e,e.h.end());for(var r=0;r<t.length;r++)eP(e,el(t[r])||F())}}(t,e)}eD(eA,23),ej=Object.freeze(eA),e3.prototype.toJSON=function(){return eZ(this.o,eX,eY)},e3.prototype.C=function(){return!!(2&ek(this.o))},e3.prototype.ja=eO,e3.prototype.toString=function(){return this.o.toString()};var e5=Symbol();function e8(e,t,r){return e[e5]||(e[e5]=function(e,i){return t(e,i,r)})}function e7(e){var t=e[e5];if(!t){var r=tf(e);t=function(e,t){return tg(e,t,r)},e[e5]=t}return t}function e9(e,t){var r=e[t];return"function"==typeof r&&0===r.length&&(r=r(),e[t]=r),Array.isArray(r)&&(tl in r||ts in r||0<r.length&&"function"==typeof r[0])?r:void 0}function te(e,t,r,i,s,a){t.P=e[0];var n=1;if(e.length>n&&"number"!=typeof e[n]){var o=e[n++];r(t,o)}for(;n<e.length;){r=e[n++];for(var c=n+1;c<e.length&&"number"!=typeof e[c];)c++;switch(o=e[n++],c-=n){case 0:i(t,r,o);break;case 1:(c=e9(e,n))?(n++,s(t,r,o,c)):i(t,r,o,e[n++]);break;case 2:s(t,r,o,c=e9(e,c=n++),e[n++]);break;case 3:a(t,r,o,e[n++],e[n++],e[n++]);break;case 4:a(t,r,o,e[n++],e[n++],e[n++],e[n++]);break;default:throw Error("unexpected number of binary field arguments: "+c)}}return t}var tt=Symbol();function tr(e){var t=e[tt];if(!t){var r=td(e);t=function(e,t){return tv(e,t,r)},e[tt]=t}return t}function ti(e,t){var r=e[tt];return r||(r=function(e,r){return e6(e,r,t)},e[tt]=r),r}var ts=Symbol();function ta(e,t){e.push(t)}function tn(e,t,r){e.push(t,r.W)}function to(e,t,r,i){var s=tr(i),a=td(i).P,n=r.W;e.push(t,function(e,t,r){return n(e,t,r,a,s)})}function tc(e,t,r,i,s,a){var n=ti(i,a),o=r.W;e.push(t,function(e,t,r){return o(e,t,r,i,n)})}function td(e){var t=e[ts];return t||(t=te(e,e[ts]=[],ta,tn,to,tc),tl in e&&ts in e&&(e.length=0)),t}var tl=Symbol();function tp(e,t){e[0]=t}function th(e,t,r,i){var s=r.U;e[t]=i?function(e,t,r){return s(e,t,r,i)}:s}function tu(e,t,r,i,s){var a=r.U,n=e7(i),o=tf(i).P;e[t]=function(e,t,r){return a(e,t,r,o,n,s)}}function tm(e,t,r,i,s,a,n){var o=r.U,c=e8(i,s,a);e[t]=function(e,t,r){return o(e,t,r,i,c,n)}}function tf(e){var t=e[tl];return t||(t=te(e,e[tl]={},tp,th,tu,tm),tl in e&&ts in e&&(e.length=0)),t}function tg(e,t,r){for(;ey(t)&&4!=t.i;){var i=t.l,s=r[i];if(!s){var a=r[0];a&&(a=a[i])&&(s=r[i]=function(e){var t,r=(t=e.ia)?e7(t):(t=e.wa)?e8(e.da.P,t,e.ka):void 0,i=e.da,s=e.oa.U;return r?function(e,t){return s(e,t,i,r)}:function(e,t){return s(e,t,i)}}(a))}if(!s||!s(t,e,i)){s=t,i=e,a=s.j,function e(t){switch(t.i){case 0:if(0!=t.i)e(t);else e:{t=t.h;for(var r=t.h,i=r+10,s=t.i;r<i;)if(0==(128&s[r++])){eu(t,r);break e}throw Q()}break;case 1:eu(t=t.h,t.h+8);break;case 2:2!=t.i?e(t):(r=em(t.h)>>>0,eu(t=t.h,t.h+r));break;case 5:eu(t=t.h,t.h+4);break;case 3:for(r=t.l;;){if(!ey(t))throw Error("Unmatched start-group tag: stream EOF");if(4==t.i){if(t.l!=r)throw Error("Unmatched end-group tag");break}e(t)}break;default:throw K(t.i,t.j)}}(s);var n=s;if(!n.ca){if(s=n.h.h-a,n.h.h=a,n=n.h,0==s)s=ed();else{if(a=ef(n,s),n.S&&n.m)s=n.i.subarray(a,a+s);else{n=n.i;var o=a;s=o===(s=a+s)?F():q?n.slice(o,s):new Uint8Array(n.subarray(o,s))}s=0==s.length?ed():new ec(s,B)}(a=i.R)?a.push(s):i.R=[s]}}}return e}function tv(e,t,r){for(var i=r.length,s=1==i%2,a=s?1:0;a<i;a+=2)(0,r[a+1])(t,e,r[a]);e6(e,t,s?r[0]:void 0)}function t_(e,t){return{U:e,W:t}}var tb=t_(function(e,t,r){if(5!==e.i)return!1;var i=(e=e.h).i,s=e.h,a=i[s],n=i[s+1],o=i[s+2];return i=i[s+3],eu(e,e.h+4),e=2*((n=(a<<0|n<<8|o<<16|i<<24)>>>0)>>31)+1,a=n>>>23&255,n&=8388607,eU(t,r,255==a?n?NaN:1/0*e:0==a?1401298464324817e-60*e*n:e*Math.pow(2,a-150)*(n+8388608)),!0},function(e,t,r){if(null!=(t=ez(t,r))){eb(e.h,8*r+5),e=e.h;var i=+t;0===i?0<1/i?U=$=0:($=0,U=2147483648):isNaN(i)?($=0,U=2147483647):34028234663852886e22<(i=(r=0>i?-2147483648:0)?-i:i)?($=0,U=(2139095040|r)>>>0):11754943508222875e-54>i?($=0,U=(r|(i=Math.round(i/1401298464324817e-60)))>>>0):(t=Math.floor(Math.log(i)/Math.LN2),i*=Math.pow(2,-t),16777216<=(i=Math.round(8388608*i))&&++t,$=0,U=(r|t+127<<23|8388607&i)>>>0),r=U,e.h.push(r>>>0&255),e.h.push(r>>>8&255),e.h.push(r>>>16&255),e.h.push(r>>>24&255)}}),tw=t_(function(e,t,r){if(0!==e.i)return!1;var i=e.h,s=0,a=e=0,n=i.i,o=i.h;do{var c=n[o++];s|=(127&c)<<a,a+=7}while(32>a&&128&c)for(32<a&&(e|=(127&c)>>4),a=3;32>a&&128&c;a+=7)e|=(127&(c=n[o++]))<<a;if(eu(i,o),128>c)i=s>>>0,(e=2147483648&(c=e>>>0))&&(c=~c>>>0,0==(i=~i+1>>>0)&&(c=c+1>>>0)),i=4294967296*c+(i>>>0);else throw Q();return eU(t,r,e?-i:i),!0},function(e,t,r){null!=(t=eq(t,r))&&("string"==typeof t&&H(t),null!=t&&(eb(e.h,8*r),"number"==typeof t?(e=e.h,V(t),e_(e,U,$)):(r=H(t),e_(e.h,r.i,r.h))))}),ty=t_(function(e,t,r){return 0===e.i&&(eU(t,r,em(e.h)),!0)},function(e,t,r){if(null!=(t=eq(t,r))&&null!=t){if(eb(e.h,8*r),e=e.h,0<=(r=t))eb(e,r);else{for(t=0;9>t;t++)e.h.push(127&r|128),r>>=7;e.h.push(1)}}}),tS=t_(function(e,t,r){if(2!==e.i)return!1;var i=em(e.h)>>>0,s=ef(e=e.h,i);if(e=e.i,ea){var a,n=e;(a=er)||(a=er=new TextDecoder("utf-8",{fatal:!0})),e=s+i,n=0===s&&e===n.length?n:n.subarray(s,e);try{var o=a.decode(n)}catch(e){if(void 0===es){try{a.decode(new Uint8Array([128]))}catch(e){}try{a.decode(new Uint8Array([97])),es=!0}catch(e){es=!1}}throw es||(er=void 0),e}}else{i=(o=s)+i,s=[];for(var c,d,l=null;o<i;)128>(c=e[o++])?s.push(c):224>c?o>=i?Z():(d=e[o++],194>c||128!=(192&d)?(o--,Z()):s.push((31&c)<<6|63&d)):240>c?o>=i-1?Z():128!=(192&(d=e[o++]))||224===c&&160>d||237===c&&160<=d||128!=(192&(n=e[o++]))?(o--,Z()):s.push((15&c)<<12|(63&d)<<6|63&n):244>=c?o>=i-2?Z():128!=(192&(d=e[o++]))||0!=(c<<28)+(d-144)>>30||128!=(192&(n=e[o++]))||128!=(192&(a=e[o++]))?(o--,Z()):(c=((7&c)<<18|(63&d)<<12|(63&n)<<6|63&a)-65536,s.push((c>>10&1023)+55296,(1023&c)+56320)):Z(),8192<=s.length&&(l=X(l,s),s.length=0);o=X(l,s)}return eU(t,r,o),!0},function(e,t,r){if(null!=(t=eq(t,r))){if(en)t=(ei||(ei=new TextEncoder)).encode(t);else{for(var i=0,s=new Uint8Array(3*t.length),a=0;a<t.length;a++){var n=t.charCodeAt(a);if(128>n)s[i++]=n;else{if(2048>n)s[i++]=n>>6|192;else{if(55296<=n&&57343>=n){if(56319>=n&&a<t.length){var o=t.charCodeAt(++a);if(56320<=o&&57343>=o){n=1024*(n-55296)+o-56320+65536,s[i++]=n>>18|240,s[i++]=n>>12&63|128,s[i++]=n>>6&63|128,s[i++]=63&n|128;continue}a--}n=65533}s[i++]=n>>12|224,s[i++]=n>>6&63|128}s[i++]=63&n|128}}t=i===s.length?s:s.subarray(0,i)}eb(e.h,8*r+2),eb(e.h,t.length),eP(e,e.h.end()),eP(e,t)}}),tR=t_(function(e,t,r,i,s){if(2!==e.i)return!1;t=eK(t,r,i),r=e.h.j,i=em(e.h)>>>0;var a=e.h.h+i,n=a-r;if(0>=n&&(e.h.j=a,s(t,e,void 0,void 0,void 0),n=a-e.h.h),n)throw Error("Message parsing ended unexpectedly. Expected to read "+i+" bytes, instead read "+(i-n)+" bytes, either the data ended unexpectedly or the message misreported its own length");return e.h.h=a,e.h.j=r,!0},function(e,t,r,i,s){if(null!=(t=eG(t,i,r)))for(i=0;i<t.length;i++){var a=e;eb(a.h,8*r+2);var n=a.h.end();eP(a,n),n.push(a.i),a=n,s(t[i],e),n=e;var o=a.pop();for(o=n.i+n.h.length()-o;127<o;)a.push(127&o|128),o>>>=7,n.i++;a.push(o),n.i++}});function tP(e){return function(t,r){e:{if(eS.length){var i=eS.pop();i.setOptions(r),eh(i.h,t,r),t=i}else t=new ew(t,r);try{var s=tf(e),a=tg(new s.P,t,s);break e}finally{(s=t.h).i=null,s.m=!1,s.l=0,s.j=0,s.h=0,s.S=!1,t.l=-1,t.i=-1,100>eS.length&&eS.push(t)}a=void 0}return a}}function tx(e){return function(){var t=new eR;tv(this,t,td(e)),eP(t,t.h.end());for(var r=new Uint8Array(t.i),i=t.j,s=i.length,a=0,n=0;n<s;n++){var o=i[n];r.set(o,a),a+=o.length}return t.j=[r],r}}function tC(e){e3.call(this,e)}m(tC,e3);var tT=[tC,1,ty,2,tb,3,tS,4,tS];function tk(e){e3.call(this,e,-1,tD)}tC.prototype.l=tx(tT),m(tk,e3),tk.prototype.addClassification=function(e,t){return eK(this,1,tC,e,t),this};var tD=[1],tE=tP([tk,1,tR,tT]);function tM(e){e3.call(this,e)}m(tM,e3);var tO=[tM,1,tb,2,tb,3,tb,4,tb,5,tb];function tI(e){e3.call(this,e,-1,tL)}tM.prototype.l=tx(tO),m(tI,e3);var tL=[1],tj=tP([tI,1,tR,tO]);function tA(e){e3.call(this,e)}m(tA,e3);var tN=[tA,1,tb,2,tb,3,tb,4,tb,5,tb,6,tw],tF=tP(tN);function tB(e,t,r){if(r=e.createShader(0===r?e.VERTEX_SHADER:e.FRAGMENT_SHADER),e.shaderSource(r,t),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw Error("Could not compile WebGL shader.\n\n"+e.getShaderInfoLog(r));return r}function tq(e){return{x:eJ(e,1),y:eJ(e,2),z:eJ(e,3),visibility:null!=ez(e,4)?eJ(e,4):void 0}}function tU(e,t){this.i=e,this.h=t,this.m=0}function t$(e,t,r){return(function(e,t){var r=e.h;if(void 0===e.s){var i=tB(r,"\n attribute vec2 aVertex;\n attribute vec2 aTex;\n varying vec2 vTex;\n void main(void) {\n gl_Position = vec4(aVertex, 0.0, 1.0);\n vTex = aTex;\n }",0),s=tB(r,"\n precision mediump float;\n varying vec2 vTex;\n uniform sampler2D sampler0;\n void main(){\n gl_FragColor = texture2D(sampler0, vTex);\n }",1),a=r.createProgram();if(r.attachShader(a,i),r.attachShader(a,s),r.linkProgram(a),!r.getProgramParameter(a,r.LINK_STATUS))throw Error("Could not compile WebGL program.\n\n"+r.getProgramInfoLog(a));i=e.s=a,r.useProgram(i),s=r.getUniformLocation(i,"sampler0"),e.l={O:r.getAttribLocation(i,"aVertex"),N:r.getAttribLocation(i,"aTex"),ya:s},e.v=r.createBuffer(),r.bindBuffer(r.ARRAY_BUFFER,e.v),r.enableVertexAttribArray(e.l.O),r.vertexAttribPointer(e.l.O,2,r.FLOAT,!1,0,0),r.bufferData(r.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),r.STATIC_DRAW),r.bindBuffer(r.ARRAY_BUFFER,null),e.u=r.createBuffer(),r.bindBuffer(r.ARRAY_BUFFER,e.u),r.enableVertexAttribArray(e.l.N),r.vertexAttribPointer(e.l.N,2,r.FLOAT,!1,0,0),r.bufferData(r.ARRAY_BUFFER,new Float32Array([0,1,0,0,1,0,1,1]),r.STATIC_DRAW),r.bindBuffer(r.ARRAY_BUFFER,null),r.uniform1i(s,0)}i=e.l,r.useProgram(e.s),r.canvas.width=t.width,r.canvas.height=t.height,r.viewport(0,0,t.width,t.height),r.activeTexture(r.TEXTURE0),e.i.bindTexture2d(t.glName),r.enableVertexAttribArray(i.O),r.bindBuffer(r.ARRAY_BUFFER,e.v),r.vertexAttribPointer(i.O,2,r.FLOAT,!1,0,0),r.enableVertexAttribArray(i.N),r.bindBuffer(r.ARRAY_BUFFER,e.u),r.vertexAttribPointer(i.N,2,r.FLOAT,!1,0,0),r.bindFramebuffer(r.DRAW_FRAMEBUFFER?r.DRAW_FRAMEBUFFER:r.FRAMEBUFFER,null),r.clearColor(0,0,0,0),r.clear(r.COLOR_BUFFER_BIT),r.colorMask(!0,!0,!0,!0),r.drawArrays(r.TRIANGLE_FAN,0,4),r.disableVertexAttribArray(i.O),r.disableVertexAttribArray(i.N),r.bindBuffer(r.ARRAY_BUFFER,null),e.i.bindTexture2d(0)}(e,t),"function"==typeof e.h.canvas.transferToImageBitmap)?Promise.resolve(e.h.canvas.transferToImageBitmap()):r?Promise.resolve(e.h.canvas):"function"==typeof createImageBitmap?createImageBitmap(e.h.canvas):(void 0===e.j&&(e.j=document.createElement("canvas")),new Promise(function(t){e.j.height=e.h.canvas.height,e.j.width=e.h.canvas.width,e.j.getContext("2d",{}).drawImage(e.h.canvas,0,0,e.h.canvas.width,e.h.canvas.height),t(e.j)}))}function tV(e){this.h=e}tA.prototype.l=tx(tN);var tz=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11]);function tW(e,t){return t+e}function tG(e){if(this.h=e,this.listeners={},this.l={},this.L={},this.s={},this.v={},this.M=this.u=this.ga=!0,this.I=Promise.resolve(),this.fa="",this.D={},this.locateFile=e&&e.locateFile||tW,"object"==typeof window)var t=window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/";else if("undefined"!=typeof location)t=location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/";else throw Error("solutions can only be loaded on a web page or in a web worker");if(this.ha=t,e.options){t=a(Object.keys(e.options));for(var r=t.next();!r.done;r=t.next()){r=r.value;var i=e.options[r].default;void 0!==i&&(this.l[r]="function"==typeof i?i():i)}}}function tH(e,t){var r,i;return R(function(s){return t in e.L?s.return(e.L[t]):(r=e.locateFile(t,""),i=fetch(r).then(function(e){return e.arrayBuffer()}),e.L[t]=i,s.return(i))})}function tK(e){return(void 0===e&&(e=0),1===e)?"selfie_segmentation_landscape.tflite":"selfie_segmentation.tflite"}function tQ(e){var t=this;e=e||{},this.h=new tG({locateFile:e.locateFile,files:function(e){return[{simd:!0,url:"selfie_segmentation_solution_simd_wasm_bin.js"},{simd:!1,url:"selfie_segmentation_solution_wasm_bin.js"},{data:!0,url:tK(e.modelSelection)}]},graph:{url:"selfie_segmentation.binarypb"},listeners:[{wants:["segmentation_mask","image_transformed"],outs:{image:{type:"texture",stream:"image_transformed"},segmentationMask:{type:"texture",stream:"segmentation_mask"}}}],inputs:{image:{type:"video",stream:"input_frames_gpu"}},options:{useCpuInference:{type:0,graphOptionXref:{calculatorType:"InferenceCalculator",fieldName:"use_cpu_inference"},default:"object"==typeof window&&void 0!==window.navigator&&("iPad Simulator;iPhone Simulator;iPod Simulator;iPad;iPhone;iPod".split(";").includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document)},selfieMode:{type:0,graphOptionXref:{calculatorType:"GlScalerCalculator",calculatorIndex:1,fieldName:"flip_horizontal"}},modelSelection:{type:1,graphOptionXref:{calculatorType:"ConstantSidePacketCalculator",calculatorName:"ConstantSidePacketCalculatorModelSelection",fieldName:"int_value"},onChange:function(e){var r,i,s;return R(function(a){return 1==a.h?(i="third_party/mediapipe/modules/selfie_segmentation/"+(r=tK(e)),_(a,tH(t.h,r),2)):(s=a.i,t.h.overrideFile(i,s),a.return(!0))})}}}})}(c=tG.prototype).close=function(){return this.j&&this.j.delete(),Promise.resolve()},c.reset=function(){var e=this;return R(function(t){e.j&&(e.j.reset(),e.s={},e.v={}),t.h=0})},c.setOptions=function(e,t){var r=this;if(t=t||this.h.options){for(var i=[],s=[],n={},o=a(Object.keys(e)),c=o.next();!c.done;n={X:n.X,Y:n.Y},c=o.next())if(!((c=c.value)in this.l&&this.l[c]===e[c])){this.l[c]=e[c];var d=t[c];void 0!==d&&(d.onChange&&(n.X=d.onChange,n.Y=e[c],i.push(function(e){return function(){return R(function(t){if(1==t.h)return _(t,e.X(e.Y),2);!0===t.i&&(r.u=!0),t.h=0})}}(n))),d.graphOptionXref&&(c=Object.assign({},{calculatorName:"",calculatorIndex:0},d.graphOptionXref,{valueNumber:1===d.type?e[c]:0,valueBoolean:0===d.type&&e[c],valueString:2===d.type?e[c]:""}),s.push(c)))}(0!==i.length||0!==s.length)&&(this.u=!0,this.H=(void 0===this.H?[]:this.H).concat(s),this.F=(void 0===this.F?[]:this.F).concat(i))}},c.initialize=function(){var e=this;return R(function(t){var r,i,s,o,c,d,l,p,h,u,m,f,g,v,b,w,y,S,P,x,C,T,k,D;return 1==t.h?_(t,R(function(t){switch(t.h){case 1:if(!e.ga)return t.return();return r=void 0===e.h.files?[]:"function"==typeof e.h.files?e.h.files(e.l):e.h.files,_(t,R(function(e){switch(e.h){case 1:return e.s=2,_(e,WebAssembly.instantiate(tz),4);case 4:e.h=3,e.s=0;break;case 2:return e.s=0,e.l=null,e.return(!1);case 3:return e.return(!0)}}),2);case 2:if(i=t.i,"object"==typeof window){var a,f;return a={locateFile:e.locateFile},window.createMediapipeSolutionsWasm=a,f={locateFile:e.locateFile},window.createMediapipeSolutionsPackedAssets=f,d=r.filter(function(e){return void 0!==e.data}),l=r.filter(function(e){return void 0===e.data}),p=Promise.all(d.map(function(t){var r=tH(e,t.url);if(void 0!==t.path){var i=t.path;r=r.then(function(t){return e.overrideFile(i,t),Promise.resolve(t)})}return r})),h=Promise.all(l.map(function(t){var r,s;return void 0===t.simd||t.simd&&i||!t.simd&&!i?(r=e.locateFile(t.url,e.ha),(s=document.createElement("script")).setAttribute("src",r),s.setAttribute("crossorigin","anonymous"),new Promise(function(e){s.addEventListener("load",function(){e()},!1),s.addEventListener("error",function(){e()},!1),document.body.appendChild(s)})):Promise.resolve()})).then(function(){var t,r,i;return R(function(s){if(1==s.h)return t=window.createMediapipeSolutionsWasm,r=window.createMediapipeSolutionsPackedAssets,i=e,_(s,t(r),2);i.i=s.i,s.h=0})}),u=R(function(t){return e.h.graph&&e.h.graph.url?t=_(t,tH(e,e.h.graph.url),0):(t.h=0,t=void 0),t}),_(t,Promise.all([h,p,u]),7)}if("function"!=typeof importScripts)throw Error("solutions can only be loaded on a web page or in a web worker");return s=r.filter(function(e){return void 0===e.simd||e.simd&&i||!e.simd&&!i}).map(function(t){return e.locateFile(t.url,e.ha)}),importScripts.apply(null,n(s)),o=e,_(t,createMediapipeSolutionsWasm(Module),6);case 6:o.i=t.i,e.m=new OffscreenCanvas(1,1),e.i.canvas=e.m,c=e.i.GL.createContext(e.m,{antialias:!1,alpha:!1,va:"undefined"!=typeof WebGL2RenderingContext?2:1}),e.i.GL.makeContextCurrent(c),t.h=4;break;case 7:if(e.m=document.createElement("canvas"),!(m=e.m.getContext("webgl2",{}))&&!(m=e.m.getContext("webgl",{})))return alert("Failed to create WebGL canvas context when passing video frame."),t.return();e.K=m,e.i.canvas=e.m,e.i.createContext(e.m,!0,!0,{});case 4:e.j=new e.i.SolutionWasm,e.ga=!1,t.h=0}}),2):3!=t.h?_(t,R(function(t){if(1==t.h){if(e.h.graph&&e.h.graph.url&&e.fa===e.h.graph.url)return t.return();if(e.u=!0,!e.h.graph||!e.h.graph.url){t.h=2;return}return e.fa=e.h.graph.url,_(t,tH(e,e.h.graph.url),3)}for(2!=t.h&&(f=t.i,e.j.loadGraph(f)),v=(g=a(Object.keys(e.D))).next();!v.done;v=g.next())b=v.value,e.j.overrideFile(b,e.D[b]);if(e.D={},e.h.listeners)for(y=(w=a(e.h.listeners)).next();!y.done;y=w.next())(function(e,t){for(var r=t.name||"$",i=[].concat(n(t.wants)),s=new e.i.StringList,o=a(t.wants),c=o.next();!c.done;c=o.next())s.push_back(c.value);o=e.i.PacketListener.implement({onResults:function(s){for(var n,o,c,d,l,p,h,u,m,f,g,v,b,w,y={},S=0;S<t.wants.length;++S)y[i[S]]=s.get(S);var P=e.listeners[r];P&&(e.I=(n=t.outs,R(function(t){switch(t.h){case 1:if(!n)return t.return(y);for(o={},c=0,l=(d=a(Object.keys(n))).next();!l.done;l=d.next())"string"!=typeof(p=n[l.value])&&"texture"===p.type&&void 0!==y[p.stream]&&++c;1<c&&(e.M=!1),l=(h=a(Object.keys(n))).next();case 2:if(l.done){t.h=4;break}if("string"==typeof(m=n[u=l.value]))return b=o,w=u,_(t,function(e,t,r){var i;return R(function(s){return"number"==typeof r||r instanceof Uint8Array||r instanceof e.i.Uint8BlobList?s.return(r):r instanceof e.i.Texture2dDataOut?((i=e.v[t])||(i=new tU(e.i,e.K),e.v[t]=i),s.return(t$(i,r,e.M))):s.return(void 0)})}(e,u,y[m]),14);if(f=y[m.stream],"detection_list"===m.type){if(f){for(var r=f.getRectList(),i=f.getLandmarksList(),s=f.getClassificationsList(),S=[],P=0;P<r.size();++P){var x=tF(r.get(P)),C=eJ(x,1),T=eJ(x,2),k=eJ(x,3),D=eJ(x,4),E=eJ(x,5,0),M=void 0;M=void 0===M?0:M,x={la:{sa:C,ta:T,height:k,width:D,rotation:E,pa:eQ(eq(x,6),M)},ea:eG(tj(i.get(P)),tM,1).map(tq),ba:eG(tE(s.get(P)),tC,1).map(function(e){var t=eq(e,1);return{index:null==t?0:t,qa:eJ(e,2),label:null!=eq(e,3)?eQ(eq(e,3),""):void 0,displayName:null!=eq(e,4)?eQ(eq(e,4),""):void 0}})},S.push(x)}r=S}else r=[];o[u]=r,t.h=7;break}if("proto_list"===m.type){if(f){for(i=0,r=Array(f.size());i<f.size();i++)r[i]=f.get(i);f.delete()}else r=[];o[u]=r,t.h=7;break}if(void 0===f){t.h=3;break}if("float_list"===m.type||"proto"===m.type){o[u]=f,t.h=7;break}if("texture"!==m.type)throw Error("Unknown output config type: '"+m.type+"'");return(g=e.v[u])||(g=new tU(e.i,e.K),e.v[u]=g),_(t,t$(g,f,e.M),13);case 13:v=t.i,o[u]=v;case 7:m.transform&&o[u]&&(o[u]=m.transform(o[u])),t.h=3;break;case 14:b[w]=t.i;case 3:l=h.next(),t.h=2;break;case 4:return t.return(o)}})).then(function(r){r=P(r);for(var s=0;s<t.wants.length;++s){var a=y[i[s]];"object"==typeof a&&a.hasOwnProperty&&a.hasOwnProperty("delete")&&a.delete()}r&&(e.I=r)}))}}),e.j.attachMultiListener(s,o),s.delete()})(e,y.value);S=e.l,e.l={},e.setOptions(S),t.h=0}),3):_(t,R(function(t){switch(t.h){case 1:if(!e.u)return t.return();if(!e.F){t.h=2;break}x=(P=a(e.F)).next();case 3:if(x.done){t.h=5;break}return _(t,(0,x.value)(),4);case 4:x=P.next(),t.h=3;break;case 5:e.F=void 0;case 2:if(e.H){for(C=new e.i.GraphOptionChangeRequestList,k=(T=a(e.H)).next();!k.done;k=T.next())D=k.value,C.push_back(D);e.j.changeOptions(C),C.delete(),e.H=void 0}e.u=!1,t.h=0}}),0)})},c.overrideFile=function(e,t){this.j?this.j.overrideFile(e,t):this.D[e]=t},c.clearOverriddenFiles=function(){this.D={},this.j&&this.j.clearOverriddenFiles()},c.send=function(e,t){var r,i,s,n,o,c,d,l,p,h=this;return R(function(u){switch(u.h){case 1:if(!h.h.inputs)return u.return();return r=1e3*(null==t?performance.now():t),_(u,h.I,2);case 2:return _(u,h.initialize(),3);case 3:for(i=new h.i.PacketDataList,n=(s=a(Object.keys(e))).next();!n.done;n=s.next())if(o=n.value,c=h.h.inputs[o]){e:{var m=e[o];switch(c.type){case"video":var f=h.s[c.stream];if(f||(f=new tU(h.i,h.K),h.s[c.stream]=f),0===f.m&&(f.m=f.i.createTexture()),"undefined"!=typeof HTMLVideoElement&&m instanceof HTMLVideoElement)var g=m.videoWidth,v=m.videoHeight;else"undefined"!=typeof HTMLImageElement&&m instanceof HTMLImageElement?(g=m.naturalWidth,v=m.naturalHeight):(g=m.width,v=m.height);v={glName:f.m,width:g,height:v},(g=f.h).canvas.width=v.width,g.canvas.height=v.height,g.activeTexture(g.TEXTURE0),f.i.bindTexture2d(f.m),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,g.RGBA,g.UNSIGNED_BYTE,m),f.i.bindTexture2d(0),f=v;break e;case"detections":for((f=h.s[c.stream])||(f=new tV(h.i),h.s[c.stream]=f),f.data||(f.data=new f.h.DetectionListData),f.data.reset(m.length),v=0;v<m.length;++v){g=m[v];var b=f.data,w=b.setBoundingBox,y=v,S=g.la,R=new tA;if(eH(R,1,S.sa),eH(R,2,S.ta),eH(R,3,S.height),eH(R,4,S.width),eH(R,5,S.rotation),eU(R,6,S.pa),S=R.l(),w.call(b,y,S),g.ea)for(b=0;b<g.ea.length;++b){R=g.ea[b],y=(w=f.data).addNormalizedLandmark,S=v,R=Object.assign({},R,{visibility:R.visibility?R.visibility:0});var P=new tM;eH(P,1,R.x),eH(P,2,R.y),eH(P,3,R.z),R.visibility&&eH(P,4,R.visibility),R=P.l(),y.call(w,S,R)}if(g.ba)for(b=0;b<g.ba.length;++b)y=(w=f.data).addClassification,S=v,R=g.ba[b],eH(P=new tC,2,R.qa),R.index&&eU(P,1,R.index),R.label&&eU(P,3,R.label),R.displayName&&eU(P,4,R.displayName),R=P.l(),y.call(w,S,R)}f=f.data;break e;default:f={}}}switch(d=f,l=c.stream,c.type){case"video":i.pushTexture2d(Object.assign({},d,{stream:l,timestamp:r}));break;case"detections":(p=d).stream=l,p.timestamp=r,i.pushDetectionList(p);break;default:throw Error("Unknown input config type: '"+c.type+"'")}}return h.j.send(i),_(u,h.I,4);case 4:i.delete(),u.h=0}})},c.onResults=function(e,t){this.listeners[t||"$"]=e},C("Solution",tG),C("OptionType",{BOOL:0,NUMBER:1,ua:2,0:"BOOL",1:"NUMBER",2:"STRING"}),(c=tQ.prototype).close=function(){return this.h.close(),Promise.resolve()},c.onResults=function(e){this.h.onResults(e)},c.initialize=function(){var e=this;return R(function(t){return _(t,e.h.initialize(),0)})},c.reset=function(){this.h.reset()},c.send=function(e){var t=this;return R(function(r){return _(r,t.h.send(e),0)})},c.setOptions=function(e){this.h.setOptions(e)},C("SelfieSegmentation",tQ),C("VERSION","0.1.1675465747")}).call(eN);const eF=new eg("MediaPipe"),eB="https://stream-assets.snapcall.io";let eq=!1;const eU=new eN.SelfieSegmentation({locateFile:(e,t)=>{if(eF.debug("selfieSegmentation",e,t),eB)return`${eB}/mediapipe/${e}`;let r=window.location.href.split("/").slice(0,-1).join("/");return`${r}/mediapipe/${e}`}});class e${constructor(e,t){this.fillColor="#000000",this.type="blur",this.live=!1,this.fps=24,this.blurLevel=10,this.timerWorker=new Worker(new URL("timer.ed477f04.js","file:"+__filename),{name:"VirtualBackgroundTimerWorker"}),this.stream=e,this.image=document.createElement("video"),this.image.style.display="none",this.image.setAttribute("autoplay",""),this.image.setAttribute("playsinline",""),this.image.setAttribute("muted",""),this.canvas=document.createElement("canvas"),this.canvas.style.display="none",t&&this.setOptions(t)}setOptions(e){this.setType(e.type),this.setFillColor(e.fillColor||this.fillColor),this.setVideoBackground(e.background),this.setBlurLevel(e.blurLevel||this.blurLevel)}setType(e){this.type=e}setBlurLevel(e){this.blurLevel=e}setVideoBackground(e){this.background=e}setFillColor(e){this.fillColor=e}drawWithBlur(e,t){e.save(),e.drawImage(t.image,0,0,this.canvas.width,this.canvas.height),e.globalCompositeOperation="destination-atop",e.drawImage(t.segmentationMask,0,0,this.canvas.width,this.canvas.height),e.filter=`blur(${this.blurLevel}px)`,e.globalCompositeOperation="destination-over",e.drawImage(t.image,0,0,this.canvas.width,this.canvas.height),e.restore()}drawWithBackground(e,t){e.clearRect(0,0,this.canvas.width,this.canvas.height),e.drawImage(t.segmentationMask,0,0,this.canvas.width,this.canvas.height),e.globalCompositeOperation="source-out",e.fillStyle=this.fillColor,this.background?e.drawImage(this.background,0,0,this.canvas.width,this.canvas.height):e.fillRect(0,0,this.canvas.width,this.canvas.height),e.globalCompositeOperation="destination-atop",e.drawImage(t.image,0,0,this.canvas.width,this.canvas.height),e.restore()}onFrame(e){this.canvas.width=e.image.width,this.canvas.height=e.image.height;let t=this.canvas.getContext("2d");if(t)switch(this.type){case"blur":default:this.drawWithBlur(t,e);break;case"background":this.drawWithBackground(t,e)}}runWithFrameCallback(){this.live&&this.image.requestVideoFrameCallback(()=>{eU.send({image:this.image}),this.runWithFrameCallback()})}async createStream(){try{eU.setOptions({selfieMode:!1,modelSelection:0}),eF.log("selfie segmentation initialized"),eq||(await eU.initialize(),eq=!0),this.image.srcObject=this.stream,this.image.onplay=async()=>{this.live=!0;try{eU.onResults(e=>{this.onFrame(e)}),this.timerWorker.onmessage=()=>{eU.send({image:this.image})},this.timerWorker.postMessage({action:"start",params:this.fps})}catch(e){eF.error("createStream:play",e)}}}catch(e){console.error("createStream",e)}return this.canvas.captureStream()}clean(){return new Promise(e=>{this.live=!1,clearInterval(this.runInterval),this.image.srcObject=null,this.stream.getTracks().forEach(e=>{e.stop(),this.stream.removeTrack(e)}),this.timerWorker.terminate(),e()})}}const eV=window.AudioContext||window.webkitAudioContext;class ez{constructor(){this.audioSources={},this.tracks={},this.audioContext=new eV,this.audioDestination=this.audioContext.createMediaStreamDestination()}getSetting(e){return this.tracks[e]?.getSettings()}removeTrack(e){let t=this.tracks[e];t&&(this.audioSources[e]?.disconnect(),delete this.tracks[e],delete this.audioSources[e],t.stop())}addTrack(e,t){if("audio"===t.kind){this.removeTrack(e);let r=new MediaStream([t]),i=this.audioContext.createMediaStreamSource(r);this.audioSources[e]=i,this.tracks[e]=t,this.audioDestination&&i.connect(this.audioDestination)}}getFinalTrack(){return this.audioDestination.stream.getTracks()[0]}removeAll(){Object.keys(this.tracks).forEach(e=>{this.removeTrack(e)})}}var eW=c.Buffer;const eG=async(e,{token:t,base64Image:r,session_id:i,user_id:s,peer_id:a,stepToken:n})=>{let o=`${_()}.jpeg`,c=eW.from(String(r).replace(/^data:image\/\w+;base64,/,""),"base64"),{url:d,headers:l}=await fetch(`${e}/streams/${t}/snapshot`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filename:o,contentLength:c.length})}).then(e=>e.json());await fetch(d,{method:"PUT",headers:{...l,"Content-Type":"image/*","Content-Length":c.length},body:c});let p=await fetch(`${e}/public/streams/${t}/snapshot-event`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({stepToken:n,filename:o,peer_id:a,session_id:i,user_id:s})}).then(e=>e.json());return{url:p.url,assetId:p.id}},eH=(e,t=300)=>{let r,i,s;return function(){let a=this,n=arguments;r?(clearTimeout(i),i=setTimeout(()=>{Date.now()-s>=t&&(e.apply(a,n),s=Date.now())},Math.max(t-(Date.now()-s),0))):(e.apply(a,n),s=Date.now(),r=!0)}},eK=new eg("StreamerClient"),eQ={WEBRTC_FAILED:"WRTC1",WEBRTC_RECOVER_ERROR:"WRTC2",CREATE_TRANSPORT_FAILED:"TRANS1",CONSUME_ERROR:"CONS1",SOCKET_LOST:"SOCK1",USER_LIMIT:"USERLIMIT"},eJ={qvga:{width:{ideal:320},height:{ideal:240},qualityIndex:3},vga:{width:{ideal:640},height:{ideal:480},qualityIndex:2},hd:{width:{ideal:1280},height:{ideal:720},qualityIndex:1}};class eZ extends CustomEvent{constructor(e,t){super(e,t)}}const eX=EventTarget,eY={background:void 0,fillColor:"#ffffff",type:"blur",blurLevel:10},e0=new class extends eX{constructor(){super(),this.mediasoupTransport={},this.mediaPipeOption=eY,this.useVideoBackground=!1,this.waitingRoomAccess=!1,this.pendingDeviceRequest={},this.joinOptions={},this.devicesList=[],this.plan=void 0,this.permissions=[],this.onAudioLevel=eH(e=>{let t=new eZ("audioLevel",{cancelable:!0,bubbles:!0,detail:{audioLevel:e}});this.dispatchEvent(t)},1e3),navigator.mediaDevices.addEventListener("devicechange",()=>this.onDeviceChange()),this.config={streamApiURL:String("https://apistream.snapcall.io"),apiUrl:String("https://api.snapcall.io/v2"),streamerServer:String("wss://g.snapcall.io/stream"),streamerApi:String("https://g.snapcall.io/stream"),iceServers:[{urls:"turns:t.snapcall.io:443?transport=tcp,turns:t2.snapcall.io:443?transport=tcp,turn:t.snapcall.io:80?transport=tcp,turn:t2.snapcall.io:80?transport=tcp,turn:t.snapcall.io:80?transport=udp,turn:t2.snapcall.io:80?transport=udp".split(",")||[],username:"test",credential:"test"}]},this.peers=new Map,this.consumers=new Map,this.webcams=new Map,this.webcam={device:null,resolution:"hd"},this.webcamTrack=null,this.webcamZoom={available:!1,min:0,max:0},this.muted=!1,this.roomId="",this.companyId=0,this.peerId="",this.clientId=this.setClientId(),this.webcamProducer=null,this.customMessages=new Map,this.audioRenderers={},this.profile={}}getState(){let e=[];return this.peers.forEach((t,r)=>{let i={microphone:{enabled:!1,muted:!1},camera:{enabled:!1},screenshare:{enabled:!1}};t.producersData.forEach(e=>{"microphone"===e.deviceType?i.microphone.enabled=!0:"screen"===e.deviceType?i.screenshare.enabled=!0:"webcam"===e.deviceType&&(i.camera.enabled=!0)}),e.push({peerId:r,profile:t.profile,deviceState:i})}),{roomId:this.roomId,waitingRoomAccess:this.waitingRoomAccess,companyId:this.companyId,company:this.company,plan:this.plan,permissions:this.permissions,peerId:this.peerId,profile:this.profile,joinOptions:this.joinOptions,callId:void 0,deviceState:this.getDevicesState(),peers:e}}onStartSpeak(){if(this.micProducer&&!this.micProducer.paused){let e=new eZ("localStartSpeak",{cancelable:!0,bubbles:!0,detail:{}});this.dispatchEvent(e)}}onStopSpeak(){if(this.micProducer&&!this.micProducer.paused){let e=new eZ("localStopSpeak",{detail:{}});this.dispatchEvent(e)}}onCriticalError(e){let t=new eZ("criticalError",{detail:{code:e}});this.dispatchEvent(t)}async generateToken(e){let t=this.config.streamerApi,{token:r}=await fetch(`${t}/stream`,{method:"post",headers:{"Content-Type":"application/json"},body:JSON.stringify({bid:e})}).then(e=>e.json());return r}setClientId(){let e="stream-ui-client-id";try{let t=localStorage.getItem(e);if(t)return t;let r=_();return localStorage.setItem(e,r),r}catch(e){return console.warn(e),_()}}async readFlow(e){try{return(await fetch(`${this.config.apiUrl}/public/flows/${e}`,{method:"GET",headers:{"Content-Type":"application/json"}})).json()}catch(e){eK.error("readFlow",e)}}async init(e=this.roomId,t=this.joinOptions){let s,a;let n={flow:void 0};if(this.roomId=e,this.peerId=_(),this.joinOptions=t,!this.roomId)throw Error("Missing room ID");try{let r=new URLSearchParams;t.flowToken&&(r.append("flowToken",t.flowToken),t.languageCode&&r.append("languageCode",t.languageCode));let{streamer_instance:i,plan:{permissions:a,name:o},flow:c,recordings:d,company_id:l,company:p,defaultPublicPage:h}=await fetch(`${this.config.apiUrl}/streams/${e}/info?${r}`,{method:"get",headers:{"Content-Type":"application/json"}}).then(e=>{if(e.ok)return e.json();throw Error("Invalid room ID")});c&&c.steps.length>0&&(t.recorder=!0,this.joinOptions.recorder=!0,n.flow=c),this.companyId=l,this.company=p,this.permissions=a,this.defaultPublicPage=h,d?.headless===!0&&a.push("record_video_on_demand"),this.plan=o;let u=new URLSearchParams({peerId:this.peerId,clientId:this.clientId,roomId:e});t.authKey&&u.append("authKey",t.authKey);let m=this.joinOptions.recorder?"/recorder":"";s=`${this.config.streamerServer}/${i}/v2/${m}?${u}`}catch(t){console.error("init",t);let e=new eZ("invalidRoom",{detail:{}});this.dispatchEvent(e)}if(!s)throw Error("Invalid socket URL");this.protooTransport=new i(s,{retry:{retries:0}}),this.protoo=new r(this.protooTransport);let o=!1,c=e=>{};return this.protoo.on("open",async()=>{if(this.joinOptions.apiKey&&await this.setAgentIdentity({apiKey:this.joinOptions.apiKey,email:this.joinOptions.email}).catch(e=>{eK.error("onOpen","failed auth",e)}),o=!0,c(),this.joinOptions.recorder){await this.joinRecorder();return}}),this.protoo.on("failed",()=>{a=Error("failure"),c(a),eK.error("protoo.on","failed"),this.onCriticalError(eQ.SOCKET_LOST)}),this.protoo.on("disconnected",()=>{eK.error("protoo.on","disconnected"),this.onCriticalError(eQ.SOCKET_LOST)}),this.protoo.on("close",()=>eK.log("protoo.on","close :(")),this.protoo.on("notification",async e=>{if(eK.log("notification",e),"error"===e.method)e.data?.reason==="reached user limit"&&this.onCriticalError(eQ.USER_LIMIT);else if("newPeer"===e.method){let{id:t,profile:r,muted:i}=e.data;this.peers.set(t,{id:t,peerId:t,profile:r,muted:i,producersData:[]});let s=new eZ("newPeer",{detail:{peerId:t,displayName:r.name,profile:r,muted:i}});this.dispatchEvent(s)}else if("newProducer"===e.method){let{peerId:t,producerId:r,deviceType:i,paused:s}=e.data;await this.consumeProducer({peerId:t,producerId:r,deviceType:i,paused:s})}else if("peerClosed"===e.method){let{peerId:t,relatedConsumers:r}=e.data;this.peers.delete(t),r.forEach(e=>{this.onConsumerClose({consumerId:e.id})});let i=new eZ("peerClosed",{detail:{peerId:t}});this.dispatchEvent(i)}else if("consumerClosed"===e.method){let{consumerId:t}=e.data;this.onConsumerClose({consumerId:t})}else if("recordStopped"===e.method)this.dispatchEvent(new eZ("recordStopped",{detail:e.data}));else if("displayName"===e.method){let{peerId:t,displayName:r}=e.data,i=new eZ("displayName",{detail:{peerId:t,displayName:r,profile:{}}});this.dispatchEvent(i)}else if("profile"===e.method){let{peerId:t,profile:r}=e.data,i=new CustomEvent("profileUpdate",{detail:{peerId:t,profile:r}});this.dispatchEvent(i)}else if("requestDevice"===e.method){this.pendingDeviceRequest[e.data.requestId]=e.data;let t=new eZ("requestDevice",{detail:e.data});this.dispatchEvent(t)}else if("startSpeak"===e.method);else if("stopSpeak"===e.method);else if("producerPaused"===e.method||"producerResumed"===e.method){let{peerId:t,producerId:r,deviceType:i}=e.data;if(e.data?.deviceType==="microphone"){let i=this.peers.get(t)?.producersData.find(e=>r===e.producerId);i&&(i.paused="producerPaused"===e.method)}let s=r;for(let[,e]of Array.from(this.consumers.entries()))if(e.mediaSoupConsumer.producerId===r){s=e.mediaSoupConsumer.id;break}let a=new eZ("producerPaused"===e.method?"mediaPause":"mediaResume",{detail:{mediaId:s,peerId:t,deviceType:i,paused:"producerPaused"===e.method}});this.dispatchEvent(a)}else if("mute"===e.method){let{peerId:t,device:r}=e.data,i=new eZ("mediaPause",{detail:{peerId:t,deviceType:r,paused:!0}});this.dispatchEvent(i)}else if("unmute"===e.method){let{peerId:t,device:r}=e.data,i=new eZ("mediaResume",{detail:{peerId:t,deviceType:r,paused:!1}});this.dispatchEvent(i)}else if("requestAccessResult"===e.method){e.data.success&&this.onEnterRoom();let t=new eZ(e.method,{detail:e.data});this.dispatchEvent(t)}else if("cancelAccessRequest"===e.method){let t=new eZ(e.method,{detail:e.data});this.dispatchEvent(t)}else if("accessRequest"===e.method){let t=new eZ(e.method,{detail:e.data});this.dispatchEvent(t)}else if("requestDeviceResult"===e.method){let t=new eZ(e.method,{detail:e.data});this.dispatchEvent(t)}else if("terminateRoom"===e.method){this.release();let t=new eZ(e.method,{detail:e.data});this.dispatchEvent(t)}else if("videoRecordingStarted"===e.method||"videoRecordingStopped"===e.method||"videoRecordingRequested"===e.method){let t=new eZ(e.method,{detail:{}});this.dispatchEvent(t)}else if("customMessage"===e.method){let{messageId:t,chunk:r,chunkIndex:i,totalChunks:s}=e.data.event,a=this.customMessages.get(t);a?a.chunks.push({index:i,data:r}):this.customMessages.set(t,{chunks:[{index:i,data:r}],totalChunks:s});let n=this.customMessages.get(t);if(n&&n.totalChunks===n.chunks.length){let r=JSON.parse(n.chunks.sort((e,t)=>e.index-t.index).reduce((e,t)=>e+t.data,"")),i=new eZ("customMessage",{detail:{...e.data,event:r}});this.dispatchEvent(i),this.customMessages.delete(t)}}}),await new Promise((e,t)=>{c=r=>{if(c=()=>{},r)return t(r);e()},o&&c(a)}),n}closeWebrtcTransport(e){let t=this.mediasoupTransport[e];t&&(t?.transport?.close(),clearTimeout(t?.disconnectTimeout),delete this.mediasoupTransport[e])}async getTransport(e,t){if(!this.streamerMediasoup||!this.protoo)throw Error("streamerMediasoup not initialized");let r=this.mediasoupTransport[`${e}-${t}`];if(r)return r&&r.transport?r.transport:r.createPromise;try{let i=this.streamerMediasoup.createTransport(this.protoo,t);r={disconnectTimeout:void 0,kind:e,createPromise:i},this.mediasoupTransport[`${e}-${t}`]=r,r.transport=await i,r.transport&&this.listenWebRTCTransportStates(r)}catch(e){throw this.onCriticalError(eQ.CREATE_TRANSPORT_FAILED),e}return r.transport}listenWebRTCTransportStates(e){if(!e.transport)throw Error("can not listen states of undefined transport");e.transport.on("connectionstatechange",t=>{if(e.transport&&!e.transport.closed){if(eK.log("recv connectionstatechange: ",t),"disconnected"===t)e.disconnectTimeout=setTimeout(()=>{eK.log("listenWebRTCTransportStats",`trying to restart transport for ${e.kind}`),e.transport&&this.restartIce(e.transport)},5e3);else if("connected"===t)clearTimeout(e.disconnectTimeout);else if("failed"===t){let t=Error(`webRTC transport state failed for ${e.kind}`);eK.error("listenWebRTCTransportStats","webrtc stat failed",t),this.onCriticalError(eQ.WEBRTC_FAILED)}}})}async setAgentIdentity({apiKey:e,email:t}){if(e){this.joinOptions.apiKey=e,this.joinOptions.email=t;try{e&&t?this.agentIdentity=await this.fetchAgentInfo({apiKey:e,email:t}):e&&(this.agentIdentity=await this.fetchUserInfo({apiKey:e})),await this.protoo?.request("authenticate",{apiKey:e,email:t}),this.agentIdentity&&this.dispatchEvent(new eZ("agentIdentity",{detail:{success:!0,email:this.agentIdentity.email,name:this.agentIdentity.name,avatarUrl:this.agentIdentity.settings?.avatar_url}}))}catch(e){eK.warn("setAgentIdentity",e),this.dispatchEvent(new eZ("agentIdentity",{detail:{success:!1}}))}}}async acceptAccessRequest(e){if(!this.protoo)throw Error("not connected");await this.protoo.request("acceptAccessRequest",{id:e})}async setStep(e){if(!this.protoo)throw Error("not connected");this.stepToken=e,await this.protoo.request("step",{token:e})}async denyAccessRequest(e){if(!this.protoo)throw Error("stream client not initiated");await this.protoo.request("denyAccessRequest",{id:e})}async requestRoomAccess(){if(!this.protoo)throw Error("stream client not initiated");await this.protoo.request("requestAccess"),this.waitingRoomAccess=!0}async joinRoom(){if(!this.protoo)throw Error("stream client not initiated");await this.protoo.request("join"),await this.onEnterRoom(),this.agentIdentity&&this.dispatchEvent(new eZ("agentIdentity",{detail:{success:!0,email:this.agentIdentity.email,name:this.agentIdentity.name,avatarUrl:this.agentIdentity.settings?.avatar_url}}))}async getRoomPeers(){if(!this.protoo)throw Error("stream client not initiated");return await this.protoo.request("getRoomPeers")}async onEnterRoom(){if(!this.protoo)throw Error("stream client not initiated");this.streamerMediasoup=await eA.create(this.protoo,this.config);let{peers:e,videoRecordStarted:t,videoRecording:r,waitingRequests:i}=await this.protoo.request("getRoomPeers");this.peers=new Map(e.map(e=>[e.id||e.peerId,{...e,peerId:e.id||e.peerId}]));let s=await this.getCallId();this.dispatchEvent(new eZ("enterRoom",{detail:{waitingRequests:i,videoRecording:r,videoRecordStarted:t,peerId:this.peerId,peers:e.map(e=>({...e,peerId:e.id||e.peerId})),callId:s,plan:this.plan,permissions:this.permissions}})),eK.log("joinRoom","peers",e),this.joinOptions.displayName&&await this.setDisplayName(this.joinOptions.displayName),this.joinOptions.profile&&await this.setProfile(this.joinOptions.profile),e.forEach(e=>{this.consumePeer({peerId:e.id||e.peerId,producersData:e.producersData})})}async joinRecorder(){if(!this.protoo)throw Error("stream client not initiated");this.streamerMediasoup=await eA.create(this.protoo,this.config);let e=await this.getCallId();this.joinOptions.apiKey&&this.setAgentIdentity({apiKey:this.joinOptions.apiKey}),this.dispatchEvent(new eZ("enterRoom",{detail:{videoRecording:{started:!1,requested:!1},videoRecordStarted:!1,peerId:this.peerId,peers:[],callId:e,plan:this.plan,permissions:this.permissions,waitingRequests:[]}}))}async switchMicrophone(e){try{eK.log("switchMicrophone","switching Microphone"),this.audioLevel?.release(),this.audioLevel=void 0,this.micProducer&&this.micProducer.track&&(this.audioMedia?.removeTrack("mic"),this.micProducer?.track?.stop(),eK.log("switchMicrophone","stopping previous track"));let t=await this.handleGetUserMediaError("microphone",navigator.mediaDevices.getUserMedia({audio:{deviceId:e,noiseSuppression:!0,echoCancellation:!0}}));this.audioLevel=new eb(t,this),this.audioLevel.analyse(),this.audioMedia=this.audioMedia||new ez;let r=t.getAudioTracks()[0];this.audioMedia.addTrack("mic",r),await this.micProducer?.replaceTrack({track:r}),eK.log("switchMicrophone","switched Microphone")}catch(e){eK.error("switchMicrophone error",e),await this.closeMicrophoneProducer()}}async closeMicrophoneProducer(){let e=this.micProducer?.id;this.micProducer?.close(),this.micProducer=void 0;let t=new eZ("microphoneMute",{detail:{}});this.dispatchEvent(t),this.protoo?.connected&&await this.protoo.request("closeProducer",{producerId:e})}async onDeviceChange(){eK.log("onDeviceChange","detecting device change");let e=new eZ("devicesListChange",{detail:{}});if(this.dispatchEvent(e),this.protoo&&!this.protoo.closed&&this.micProducer){let e=await navigator.mediaDevices.enumerateDevices(),t=e.filter(e=>"audioinput"===e.kind);if(0===t.length){eK.warn("onDeviceChange","no audio input device"),await this.closeMicrophoneProducer();return}let r=t.find(e=>"default"===e.deviceId);if(r){let t=e.filter(e=>!this.devicesList.find(t=>t.deviceId===e.deviceId&&t.label===e.label));eK.log("onDeviceChange",t),this.devicesList=e;let i=!!t.find(e=>"audioinput"===e.kind);if(0!==t.length&&!1===i){eK.warn("onDeviceChange","no audio input change");return}if(eK.log("onDeviceChange","detecting audio input change"),!this.audioInputDefaultDevice||this.audioInputDefaultDevice.label!==r.label){let e=new eZ("defaultAudioDeviceChange",{detail:r});this.audioInputDefaultDevice=r,this.dispatchEvent(e),eK.log("onDeviceChange","new default audio input trying to switch new :",r.deviceId,r.label)}this.switchMicrophone("default")}else this.switchMicrophone()}}async enableMicrophone({deviceId:e}={}){if(!this.micProducer||this.micProducer?.closed){let t=await this.handleGetUserMediaError("microphone",navigator.mediaDevices.getUserMedia({audio:{deviceId:e,noiseSuppression:!0,echoCancellation:!0}}));this.devicesList=await navigator.mediaDevices.enumerateDevices();let r=await this.getTransport("audio","send");this.audioLevel=new eb(t,this),this.audioLevel.analyse(),this.audioMedia=this.audioMedia||new ez;let i=t.getAudioTracks()[0];this.audioMedia.addTrack("mic",i);let s=await r.produce({track:this.audioMedia.getFinalTrack(),codecOptions:{opusStereo:!0,opusDtx:!0},appData:{deviceType:"microphone"}});s.on("transportclose",()=>{eK.log("enableMicrophone","micproducer transportclose")}),i.addEventListener("ended",()=>{eK.log("enableMicrophone","track ended!")}),s.on("trackended",async()=>{eK.log("enableMicrophone","microphone disconnected!"),void 0===navigator.mediaDevices.ondevicechange&&this.closeMicrophoneProducer()}),this.micProducer=s,this.muted=!1;let a=new eZ("microphoneEnabled",{detail:{}});this.dispatchEvent(a)}}muteMicrophone(){if(this.micProducer){this.onStopSpeak(),this.micProducer.pause(),this.muted=!0,this.protoo?.notify("mute",{device:"microphone"});let e=new eZ("microphoneMute",{detail:{}});this.dispatchEvent(e)}}unMuteMicrophone(){if(this.micProducer){this.micProducer.resume(),this.resolvePendingDeviceRequest("microphone",!0),this.muted=!1,this.protoo?.notify("unmute",{device:"microphone"});let e=new eZ("microphoneUnmute",{detail:{}});this.dispatchEvent(e)}}async toggleMute(){return this.muted?(await this.unMuteMicrophone(),{muted:!1}):(await this.muteMicrophone(),{muted:!0})}release(){for(let e in eK.log("release"),this.mediasoupTransport)this.closeWebrtcTransport(e);this.mediaPipe&&(this.mediaPipe.clean(),this.mediaPipe=void 0),this.audioMedia?.removeAll(),this.audioMedia=void 0,this.webcamTrack?.stop(),this.webcamTrack=null,this.protooTransport?.close(),this.protoo?.close(),this.micProducer?.close(),this.screenshareVideoProducer?.close(),this.webcamProducer?.close(),this.consumers.forEach(e=>{e.mediaSoupConsumer.close()}),this.consumers.clear(),this.audioLevel?.release()}endCall(){this.release();let e=new eZ("leaveRoom",{detail:{}});this.dispatchEvent(e);let t=new CustomEvent("snapcallEvent_callEnd");window.dispatchEvent(t)}terminateRoom(){if(!this.protoo)throw Error("stream client not initiated");this.protoo.request("terminateRoom")}async updateWebcams(){for(let e of(this.webcams=new Map,await navigator.mediaDevices.enumerateDevices()))"videoinput"===e.kind&&this.webcams.set(e.deviceId,e);0===this.webcams.size?this.webcam.device=null:this.webcam.device||(this.webcam.device=this.webcams.values().next().value);let e=new eZ("webcamsUpdate",{detail:{numberOfAvailableWebcams:this.webcams.size}});this.dispatchEvent(e)}isVideoZoomAvailable(){return this.webcamZoom.available}resolvePendingDeviceRequest(e,t,r){Object.keys(this.pendingDeviceRequest).forEach(i=>{let s=this.pendingDeviceRequest[i];e===s.deviceType&&(delete this.pendingDeviceRequest[i],this.protoo?.notify("requestDeviceResult",{result:!!t,failure:r,...s}))})}async handleGetUserMediaError(e,t){let r,i;try{r=await t}catch(e){i=e}finally{if(this.resolvePendingDeviceRequest(e,!!r,i?.name),i)throw i;return r}}async restartIce(e){if(eK.log("restartIce",e.connectionState,e.closed),"disconnected"===e.connectionState&&!e.closed&&this.protoo)try{let t=await this.protoo.request("restartIce",{transportId:e.id});eK.log("restartIce",t),await e.restartIce({iceParameters:t})}catch(e){this.onCriticalError(eQ.WEBRTC_RECOVER_ERROR),eK.log("restartIce","restartIceFailed",e)}}scaleVideoMediasConstraintsParameter(e){let t=eJ.hd;2===e?t=eJ.vga:e>2&&(t=eJ.qvga),(!this.webcam.resolution||eJ[this.webcam.resolution].qualityIndex>=t.qualityIndex)&&(eK.log("scaleVideoMediasConstraintsParameter",`scaling video by ${e}`,t),this.webcamProducer?.track?.applyConstraints(t))}scaleVideoEncodingsParameter(){if(!this.useVideoBackground)try{let e=0;this.consumers.forEach(t=>{"video"===t.mediaSoupConsumer.kind&&e++}),this.screenshareVideoProducer&&!this.screenshareVideoProducer.closed&&e++;let t={scaleResolutionDownBy:1};if(e>=3&&(t={scaleResolutionDownBy:2}),e>=9&&(t={scaleResolutionDownBy:4}),!eP.Producer.prototype.setRtpEncodingParameters)return this.scaleVideoMediasConstraintsParameter(t.scaleResolutionDownBy);this.webcamProducer&&!this.webcamProducer.closed&&(eK.log("scaleVideoEncodingsParameter",`scaling video by ${t.scaleResolutionDownBy}`),this.webcamProducer?.setRtpEncodingParameters?.(t).catch(e=>{eK.error("scaleVideoEncodingsParameter","scaleResolutionDownBy not supported",e),this.scaleVideoMediasConstraintsParameter(t.scaleResolutionDownBy)}))}catch(e){eK.error("scaleVideoEncodingsParameter","scaleVideo error",e)}}setVideoBackground(e){this.mediaPipe?.setOptions(e),this.mediaPipeOption=e}async initVideoBackground(){if(!this.permissions.find(e=>"virtual_background"===e))throw Error("feature not allowed");!0!==this.useVideoBackground&&(this.useVideoBackground=!0,this.webcamProducer&&!this.webcamProducer.closed&&await this.switchWebcam({}))}async stopVideoBackground(){!1!==this.useVideoBackground&&(this.useVideoBackground=!1,await this.mediaPipe?.clean(),this.mediaPipe=void 0,this.webcamProducer&&!this.webcamProducer.closed&&await this.switchWebcam({}))}async switchWebcam({device:e,resolution:t,rotate:r,frameRate:i,facingMode:s}){if(!this.webcam.device)throw Error("no webcam devices");let a={};if(r){if(this.webcam.facingMode)console.log("switch by facing mod"),this.webcam.facingMode="user"===this.webcam.facingMode?"environment":"user",a.facingMode=this.webcam.facingMode;else{let e=Array.from(this.webcams.keys()),t=this.webcam?.device?.deviceId||"unknown",r=e.indexOf(t);r<e.length-1?r++:r=0;let i=this.webcams.get(e[r]);if(!i)throw Error("no webcam device");this.webcam.device=i,a.deviceId={ideal:this.webcam.device?.deviceId}}}else s?(this.webcam.facingMode=s,a.facingMode=this.webcam.facingMode):e&&(this.webcam.device=e,this.webcam.facingMode=void 0,a.deviceId={ideal:this.webcam.device.deviceId});this.webcam.resolution=t||this.webcam.resolution||"hd",this.webcam.framerate=i||this.webcam.framerate;let n=eJ[t||this.webcam.resolution];this.useVideoBackground&&(n={width:{ideal:560},height:{ideal:400},qualityIndex:2}),await this.webcamProducer?.replaceTrack?.({track:null}).catch(e=>{eK.error("switchCamera","clean track failed",e)});let o=await this.handleGetUserMediaError("webcam",navigator.mediaDevices.getUserMedia({video:{...a,...n}}));this.useVideoBackground&&(this.mediaPipe&&await this.mediaPipe.clean(),this.mediaPipe=new e$(o,this.mediaPipeOption));let c=await this.mediaPipe?.createStream()||o;if(!await this.getTransport("video","send"))throw Error("video transport not found, can not switch");let d=c.getVideoTracks()[0];await this.webcamProducer?.replaceTrack?.({track:d});let l=await d.getCapabilities?.()||navigator.mediaDevices.getSupportedConstraints?.();this.webcamZoom={available:!!l?.zoom,min:l?.zoom?.min||0,max:l?.zoom?.max||0};let p=new eZ("localVideoChange",{detail:{camera:this.getCurrentWebcam()}});this.dispatchEvent(p)}async enableVideo(e){await this.updateWebcams();let t={};if(e?.facingMode?(t.facingMode=e.facingMode,this.webcam.facingMode=e.facingMode):(e?.device&&(this.webcam.device=e.device),t.deviceId={ideal:this.webcam.device?.deviceId}),!this.webcam.device)throw Error("no webcam devices");this.webcam.resolution=e?.resolution||this.webcam.resolution||"hd",this.webcam.framerate=e?.frameRate||this.webcam.framerate;let r=eJ[e?.resolution||this.webcam.resolution];this.useVideoBackground&&(r={width:{ideal:560},height:{ideal:400},qualityIndex:2});let i=await this.handleGetUserMediaError("webcam",navigator.mediaDevices.getUserMedia({video:{frameRate:e?.frameRate,...t,...r}}));if(e?.facingMode)try{let e=i.getVideoTracks()[0].getCapabilities();if(!e?.facingMode||0===e.facingMode.length)throw Error("no facing mod")}catch{this.webcam.device=this.webcams.values().next().value,this.webcam.facingMode=void 0}this.useVideoBackground&&(this.mediaPipe&&await this.mediaPipe.clean(),this.mediaPipe=new e$(i,this.mediaPipeOption));let s=await this.mediaPipe?.createStream()||i;await this.updateWebcams();let a=await this.getTransport("video","send"),n=s.getVideoTracks()[0];this.webcamTrack=n;let o=await n.getCapabilities?.()||navigator.mediaDevices.getSupportedConstraints?.();this.webcamZoom={available:!!o?.zoom,min:o?.zoom?.min||0,max:o?.zoom?.max||0},o.focusMode&&n.applyConstraints({advanced:[{focusMode:"continuous"}]}),this.webcamProducer=await a.produce({track:n,encodings:void 0,codecOptions:{videoGoogleStartBitrate:1e3},appData:{deviceType:"webcam"}}),this.scaleVideoEncodingsParameter(),this.webcamProducer.on("transportclose",()=>{this.webcamProducer=null}),this.webcamProducer.on("trackended",()=>{this.disableVideo().catch(()=>{})});let c=new eZ("localVideoAvailable",{detail:{camera:this.getCurrentWebcam()}});this.dispatchEvent(c)}async rotateVideo(){await this.switchWebcam({rotate:!0})}async zoomVideo(){if(!this.webcamZoom.available)throw Error("Webcam zoom is not available");if(!this.webcamTrack)throw Error("No webcam track available");this.webcamTrack.applyConstraints({advanced:[{zoom:2*this.webcamZoom.min}]})}async unzoomVideo(){if(!this.webcamZoom.available)throw Error("Webcam zoom is not available");if(!this.webcamTrack)throw Error("No webcam track available");this.webcamTrack.applyConstraints({advanced:[{zoom:this.webcamZoom.min}]})}async disableVideo(){if(!this.webcamProducer)return;this.webcamProducer.close(),this.protoo?.connected&&await this.protoo.request("closeProducer",{producerId:this.webcamProducer.id}),this.webcamProducer=null;let e=new eZ("localVideoUnavailable",{detail:{}});this.dispatchEvent(e)}async enableScreenshare(e={audioTransportOption:"classic"}){if(!this.permissions.find(e=>"screen_sharing"===e))throw Error("feature not allowed");if("mix"===e.audioTransportOption&&!this.micProducer)throw Error("microphone not activated and audio mix transport requested");let t=e.mediaStream;if(t||(t=await this.handleGetUserMediaError("screen",navigator.mediaDevices.getDisplayMedia({audio:"none"!==e.audioTransportOption,video:{displaySurface:"monitor",logicalSurface:!0,width:{max:1920},height:{max:1080},frameRate:{max:30}}}))),!t)return;let r="screen",i=await this.getTransport("audio","send"),s=t.getAudioTracks()[0];if(s){if("classic"===e.audioTransportOption)this.screenshareAudioProducer=await this.streamerMediasoup?.produceAudio(i,s,{deviceType:r,share:!0}),this.screenshareVideoProducer?.on("transportclose",()=>{this.screenshareVideoProducer=void 0});else if("mix"===e.audioTransportOption){this.audioMedia=this.audioMedia||new ez,this.audioMedia.addTrack("screen",s);let e=this.audioMedia.getFinalTrack();e&&this.micProducer&&this.micProducer.replaceTrack({track:e})}}let a=t.getVideoTracks()[0],n=await this.getTransport("video","send");this.screenshareVideoProducer=await this.streamerMediasoup?.produceVideo(n,a,{deviceType:r,share:!0}),this.screenshareVideoProducer?.on("transportclose",()=>{this.screenshareVideoProducer=void 0}),this.screenshareVideoProducer?.on("trackended",()=>{this.disableScreenshare().catch(()=>{})});let o=new eZ("screenshareEnabled",{detail:{}});this.dispatchEvent(o)}async disableScreenshare(){this.screenshareVideoProducer&&(this.screenshareVideoProducer.close(),this.protoo?.connected&&await this.protoo.request("closeProducer",{producerId:this.screenshareVideoProducer.id}),this.screenshareVideoProducer=void 0),this.audioMedia?.removeTrack("screen"),this.screenshareAudioProducer&&(this.screenshareAudioProducer.close(),this.protoo?.connected&&await this.protoo.request("closeProducer",{producerId:this.screenshareAudioProducer.id}),this.screenshareAudioProducer=void 0);let e=new eZ("screenshareDisabled",{detail:{}});this.dispatchEvent(e)}onConsumerClose({consumerId:e}){let t=this.consumers.get(e);if(t){let r=t.mediaSoupConsumer.producerId;this.peers.forEach(e=>{let t=e.producersData.findIndex(e=>e.producerId===r);-1!==t&&e.producersData.splice(t,1)}),t.mediaSoupConsumer.close(),this.consumers.delete(e),this.scaleVideoEncodingsParameter();let i=new eZ("mediaStop",{detail:{mediaId:e,peerId:String(t.mediaSoupConsumer.appData.peerId),deviceType:t.deviceType,paused:!1}});"microphone"===t.deviceType&&this.deleteAudioRenderer(e),this.dispatchEvent(i)}}requestVideo({mediaId:e,element:t}){eK.info("requestVideo");let r=this.consumers.get(e);if(r){let e=new MediaStream;e.onremovetrack=()=>eK.log("requestVideo","Remove Track"),r.mediaSoupConsumer.track.onended=()=>eK.log("requestVideo","Track Ended"),e.addTrack(r.mediaSoupConsumer.track),t.srcObject=e}else eK.error("requestVideo",`Video consumer ${r} not found`)}async saveCapture(e){return eG(this.config.apiUrl,{token:this.roomId,base64Image:e,peer_id:this.peerId,user_id:this.agentIdentity?.id,stepToken:this.stepToken})}async deleteCapture(e){return await this.protoo?.request("deleteCapture",{assetId:e})}async captureVideo(e){if(this.permissions.find(e=>"instant_picture"===e)){let t;if(e)t=await eS(e);else if(this.webcamProducer&&this.webcamProducer.track)t=await eR(this.webcamProducer.track);else throw Error("no video to capture");return t}throw Error("feature not allowed")}requestLocalVideo(e){if(eK.info("requestLocalVideo"),this.webcamProducer){let t=new MediaStream;t.addTrack(this.webcamProducer.track),e.srcObject=t;let r=this.webcamProducer.track?.getSettings();return{facingMode:r?.facingMode||"user"}}throw Error("webcam producer not available yet")}requestLocalScreenshare(e){if(this.screenshareVideoProducer){let t=new MediaStream;t.addTrack(this.screenshareVideoProducer.track),e.srcObject=t}else eK.log("requestLocalScreenshare","screenshare producer not available yet")}consumePeer({peerId:e,producersData:t}){t.forEach(t=>{this.consumeProducer({peerId:e,producerId:t.producerId,deviceType:t.deviceType,paused:t.paused})})}async consumeProducer({peerId:e,producerId:t,deviceType:r,paused:i}){try{let s="microphone"===r?"audio":"video",a=await this.getTransport(s,"recv"),n=await this.protoo?.request("consume",{peerId:e,producerId:t,transportId:a.id,rtpCapabilities:this.streamerMediasoup.getRtpCapabilities()}),o=this.peers.get(e);o&&o.producersData.push({producerId:t,deviceType:r,paused:i});let{producerId:c,id:d,kind:l,rtpParameters:p,appData:h}=n;eK.log("consumeProducer","Data: ",n);let u=await a.consume({id:d,producerId:c,kind:l,rtpParameters:p,appData:{...h,peerId:e}});eK.log("transport",a),eK.log("consumer",u),this.consumers.set(u.id,{mediaSoupConsumer:u,deviceType:r}),this.scaleVideoEncodingsParameter();let m=new eZ("mediaStart",{detail:{peerId:e,mediaId:u.id,deviceType:r,paused:!!o&&o.muted}});if(this.dispatchEvent(m),"audio"===u.kind){let e=this.createAudioRenderer(u.id),t=new MediaStream;t.addTrack(u.track),e.setSource(t),e.play()}"video"===u.kind&&await this.protoo?.request("resumeConsumer",{consumerId:u.id})}catch(e){this.onCriticalError(eQ.CONSUME_ERROR),eK.error("consumeProducer","newConsumer request failed",e)}}async setDisplayName(e){await this.setProfile({name:e});let t=new eZ("selfDisplayName",{detail:{peerId:this.peerId,displayName:this.profile?.name,profile:this.profile}});this.dispatchEvent(t)}async setProfile(e){let t=await this.protoo?.request("setProfile",e);this.joinOptions.profile=e,this.profile={...t};let r=new eZ("selfProfileUpdate",{detail:{peerId:this.peerId,profile:this.profile}});this.dispatchEvent(r)}async requestPeerDevice(e,t){if(!this.permissions.find(e=>"request_input"===e))throw Error("feature not allowed");return this.protoo?.request("requestPeerDevice",{remotePeerId:e,deviceType:t})}denyDeviceRequest(e){this.resolvePendingDeviceRequest(e,!1,"user denied permission")}async getCallId(){try{let{callId:e}=await this.protoo?.request("getCallId");return e}catch(e){throw eK.error("getCallId","Failed to get callId"),e}}getConsumers(){return this.consumers}getDevicesState(){let e=!!this.micProducer&&!this.micProducer.closed,t=!!this.webcamProducer&&!this.webcamProducer.closed,r=!!this.screenshareVideoProducer&&!this.screenshareVideoProducer.closed;return{microphone:{enabled:e,muted:this.muted},camera:{enabled:t},screenshare:{enabled:r}}}getCustomMessageEventChunks(e){let t=JSON.stringify(e),r=[];for(let e=0;e<t.length;e+=9e4)r.push(t.substring(e,e+9e4));return r}async sendCustomMessageToAll(e){let t=_(),r=this.getCustomMessageEventChunks(e),i=r.map((e,i)=>this.protoo?.notify("customMessageToAllPeers",{messageId:t,chunkIndex:i,chunk:e,totalChunks:r.length}));await Promise.all(i)}async sendCustomMessage(e,t){let r=_(),i=this.getCustomMessageEventChunks(t),s=i.map((t,s)=>this.protoo?.notify("customMessageToPeer",{peerId:e,event:{messageId:r,chunkIndex:s,chunk:t,totalChunks:i.length}}));await Promise.all(s)}async listAudioDevices(){return(await navigator.mediaDevices.enumerateDevices()).filter(e=>"audioinput"===e.kind||"audiooutput"===e.kind)}async listVideoDevices(){return(await navigator.mediaDevices.enumerateDevices()).filter(e=>"videoinput"===e.kind)}isListDevicesSupported(){return!!navigator.mediaDevices?.enumerateDevices}getCurrentWebcam(){return this.webcam}getCurrentMicrophoneId(){return this.audioMedia?.getSetting("mic")||this.micProducer?.track?.getSettings().deviceId}getCurrentSpeakerId(){let e=Object.keys(this.audioRenderers),t=this.audioRenderers[e[0]];if(t){let e=t.getSink();if(e)return e}return"default"}async setWebcamResolution(e){if(this.webcam.device)await this.switchWebcam({resolution:e});else{this.webcam.resolution=e;let t=new eZ("localVideoChange",{detail:{camera:this.getCurrentWebcam()}});this.dispatchEvent(t)}}createAudioRenderer(e){let t=new ey({consumerId:e});return this.audioRenderers[e]=t,t}deleteAudioRenderer(e){this.audioRenderers[e]?.destroy(),delete this.audioRenderers[e]}async playAudioRenderer(e){await this.audioRenderers[e]?.play()}async setAudioSink(e){let t=Object.keys(this.audioRenderers).map(t=>this.audioRenderers[t].setSink(e).catch(e=>eK.warn("setAudioSink","Failed to setSinkId on renderer (consumerId: %s): ",t,e)));await Promise.allSettled(t)}dispatchEvent(e){let t=super.dispatchEvent(e);return window.dispatchEvent(e),t}async fetchAgentInfo({apiKey:e,email:t}){let r=this.config.apiUrl;return await fetch(`${r}/agents/${t}`,{method:"get",headers:{Authorization:`Bearer ${e}`}}).then(e=>{if(e.ok)return e.json();throw Error("Invalid agent info")})}async fetchUserInfo({apiKey:e}){let t=this.config.apiUrl;return await fetch(`${t}/users/me`,{method:"get",headers:{Authorization:`Bearer ${e}`}}).then(e=>{if(e.ok)return e.json();throw Error("Invalid user info")})}setConfig(e){this.config={...this.config,...e}}getPermissions(){return this.permissions}async startRecord(){await this.protoo?.request("startRecord")}async stopRecord(){await this.protoo?.request("stopRecord")}async getPublicPage(e){return(await fetch(`${this.config.apiUrl}/public/public-pages/${e}`,{method:"get",headers:{"Content-Type":"application/json"}})).json()}};
|