PageSourceSearch

https://epals-idd.web.app/assets/CallPage-DdsKvTeh.js

js epals-idd.web.app collected 2026-10-03 12:23:44 UTC 343,392 bytes, 42 lines download raw bytes

1import{gm as Cu,gn as Pu,d as Eu,cC as Ru,L as Lu,N as Ou,u as Iu,ax as Mu,M as Du,O as Au,a as xu,z as qu,G as Ae,j as xt,A as ju,J as He,go as ct,fC as Nu,fD as $u,aG as Vu,o as je,c as Ne,b as Ee,f as pe,g7 as Fu,y as Ue,C as bt,e as Oe,k as Bu,m as Uu,p as Wu,x as De,D as yt,ak as es,a8 as Hu,v as zu,t as ut,I as Qu,aq as Gu,g as Ku,i as lt,bO as Yu,an as qt,H as jt,cu as kt,fw as Ju,b$ as Xe,c0 as Ze,gp as Xu,gq as Zu,c1 as el,cw as tl,cv as rl,gr as il,e$ as dt,_ as nl}from"./index-BhFHSAwM.js";var It={exports:{}},Tt={};const Qe=Cu(Pu);var et={},St={},ht={},Nt,ts;function gt(){if(ts)return Nt;ts=1;const s=typeof AudioContext<"u"?AudioContext:typeof webkitAudioContext<"u"?webkitAudioContext:null;class o{constructor(t){t=Object.assign({AudioContext:s},t),Object.defineProperties(this,{_AudioContext:{value:t.AudioContext},_audioContext:{value:null,writable:!0},_holders:{value:new Set},AudioContextFactory:{enumerable:!0,value:o}})}getOrCreate(t){if(!this._holders.has(t)&&(this._holders.add(t),this._AudioContext&&!this._audioContext))try{this._audioContext=new this._AudioContext}catch{}return this._audioContext}release(t){this._holders.has(t)&&(this._holders.delete(t),!this._holders.size&&this._audioContext&&(this._audioContext.close(),this._audioContext=null))}}return Nt=new o,Nt}var rs;function sl(){if(rs)return ht;rs=1,Object.defineProperty(ht,"__esModule",{value:!0}),ht.LegacyPluginAdapter=void 0;const s=gt();class o{constructor(t){this.legacy=t}init(t){return this.legacy.init(t)}isInitialized(){return this.legacy.isInitialized()}isConnected(){return this.legacy.isConnected()}isEnabled(){return this.legacy.isEnabled()}connect(t){return this.legacy.connect(t)}disconnect(){this.legacy.disconnect()}enable(){this.legacy.enable()}disable(){this.legacy.disable()}setLogging(t){this.legacy.setLogging(t)}getVersion(){return this.legacy.getVersion()}isSupported(){const t={},e=s.getOrCreate(t);try{return!!e&&this.legacy.isSupported(e)}finally{s.release(t)}}destroy(){return Promise.resolve().then(()=>{this.legacy.destroy()})}}return ht.LegacyPluginAdapter=o,ht}var $t,is;function al(){return is||(is=1,$t=(function(s){const{location:o,URL:u}=s;if([o,u].some(e=>!e))return function(r){return Promise.reject(new Error(`Failed to import: ${r}: dynamicImport is not supported`))};s.__twilioVideoImportedModules={};const t=new Function("url","return import(url);");return function(r){return r in s.__twilioVideoImportedModules?Promise.resolve(s.__twilioVideoImportedModules[r]):t(new u(r,o).toString()).then(l=>(s.__twilioVideoImportedModules[r]=l,l))}})(globalThis)),$t}var Vt,ns;function Pc(){if(ns)return Vt;ns=1;var s=function(){},o="undefined",u=typeof window!==o&&typeof window.navigator!==o&&/Trident\/|MSIE /.test(window.navigator.userAgent),t=["trace","debug","info","warn","error"];function e(m,b){var d=m[b];if(typeof d.bind=="function")return d.bind(m);try{return Function.prototype.bind.call(d,m)}catch{return function(){return Function.prototype.apply.apply(d,[m,arguments])}}}function r(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function l(m){return m==="debug"&&(m="log"),typeof console===o?!1:m==="trace"&&u?r:console[m]!==void 0?e(console,m):console.log!==void 0?e(console,"log"):s}function _(m,b){for(var d=0;d<t.length;d++){var h=t[d];this[h]=d<m?s:this.methodFactory(h,m,b)}this.log=this.debug}function p(m,b,d){return function(){typeof console!==o&&(_.call(this,b,d),this[m].apply(this,arguments))}}function i(m,b,d){return l(m)||p.apply(this,arguments)}function n(m,b,d){var h=this,w,y="loglevel";typeof m=="string"?y+=":"+m:typeof m=="symbol"&&(y=void 0);function f(T){var I=(t[T]||"silent").toUpperCase();if(!(typeof window===o||!y)){try{window.localStorage[y]=I;return}catch{}try{window.document.cookie=encodeURIComponent(y)+"="+I+";"}catch{}}}function v(){var T;if(!(typeof window===o||!y)){try{T=window.localStorage[y]}catch{}if(typeof T===o)try{var I=window.document.cookie,P=I.indexOf(encodeURIComponent(y)+"=");P!==-1&&(T=/^([^;]+)/.exec(I.slice(P))[1])}catch{}return h.levels[T]===void 0&&(T=void 0),T}}h.name=m,h.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},h.methodFactory=d||i,h.getLevel=function(){return w},h.setLevel=function(T,I){if(typeof T=="string"&&h.levels[T.toUpperCase()]!==void 0&&(T=h.levels[T.toUpperCase()]),typeof T=="number"&&T>=0&&T<=h.levels.SILENT){if(w=T,I!==!1&&f(T),_.call(h,T,m),typeof console===o&&T<h.levels.SILENT)return"No console available for logging"}
1else throw"log.setLevel() called with invalid level: "+T},h.setDefaultLevel=function(T){v()||h.setLevel(T,!1)},h.enableAll=function(T){h.setLevel(h.levels.TRACE,T)},h.disableAll=function(T){h.setLevel(h.levels.SILENT,T)};var k=v();k==null&&(k=b??"WARN"),h.setLevel(k,!1)}var a=new n,c={};a.getLogger=function(b){if(typeof b!="symbol"&&typeof b!="string"||b==="")throw new TypeError("You must supply a name when creating a logger.");var d=c[b];return d||(d=c[b]=new n(b,a.getLevel(),a.methodFactory)),d};var g=typeof window!==o?window.log:void 0;return a.noConflict=function(){return typeof window!==o&&window.log===a&&(window.log=g),a},a.getLoggers=function(){return c},a.default=a,Vt=a,Vt}var Mt={exports:{}};const ol="twilio-video",cl="2.36.0",Ec={name:ol,version:cl};Mt.exports;var ss;function Se(){return ss||(ss=1,(function(s){const o=Ec;s.exports.SDK_NAME=`${o.name}.js`,s.exports.SDK_VERSION=o.version,s.exports.SDP_FORMAT="unified",s.exports.hardwareDevicePublisheriPad={hwDeviceManufacturer:"Apple",hwDeviceModel:"iPad",hwDeviceType:"tablet",platformName:"iOS"},s.exports.hardwareDevicePublisheriPhone={hwDeviceManufacturer:"Apple",hwDeviceModel:"iPhone",hwDeviceType:"mobile",platformName:"iOS"},s.exports.DEFAULT_ENVIRONMENT="prod",s.exports.DEFAULT_REALM="us1",s.exports.DEFAULT_REGION="gll",s.exports.DEFAULT_LOG_LEVEL="warn",s.exports.DEFAULT_LOGGER_NAME="twilio-video",s.exports.WS_SERVER=(t,e)=>(e=e==="gll"?"global":encodeURIComponent(e),t==="prod"?`wss://${e}.vss.twilio.com/signaling`:`wss://${e}.vss.${t}.twilio.com/signaling`),s.exports.PUBLISH_MAX_ATTEMPTS=5,s.exports.PUBLISH_BACKOFF_JITTER=10,s.exports.PUBLISH_BACKOFF_MS=20;function u(t){return["a","e","i","o","u"].includes(t.toLowerCase()[0])?"an":"a"}s.exports.typeErrors={ILLEGAL_INVOKE(t,e){return new TypeError(`Illegal call to ${t}: ${e}`)},INVALID_TYPE(t,e){return new TypeError(`${t} must be ${u(e)} ${e}`)},INVALID_VALUE(t,e){return new RangeError(`${t} must be one of ${e.join(", ")}`)},REQUIRED_ARGUMENT(t){return new TypeError(`${t} must be specified`)}},s.exports.DEFAULT_FRAME_RATE=24,s.exports.DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS=1e4,s.exports.DEFAULT_ICE_GATHERING_TIMEOUT_MS=15e3,s.exports.DEFAULT_SESSION_TIMEOUT_SEC=30,s.exports.DEFAULT_NQ_LEVEL_LOCAL=1,s.exports.DEFAULT_NQ_LEVEL_REMOTE=0,s.exports.MAX_NQ_LEVEL=3,s.exports.ICE_ACTIVITY_CHECK_PERIOD_MS=1e3,s.exports.ICE_INACTIVITY_THRESHOLD_MS=3e3,s.exports.iceRestartBackoffConfig={factor:1.1,min:1,max:s.exports.DEFAULT_SESSION_TIMEOUT_SEC*1e3,jitter:1},s.exports.reconnectBackoffConfig={factor:1.5,min:80,jitter:1},s.exports.subscriptionMode={MODE_COLLABORATION:"collaboration",MODE_GRID:"grid",MODE_PRESENTATION:"presentation"},s.exports.trackSwitchOffMode={MODE_DISABLED:"disabled",MODE_DETECTED:"detected",MODE_PREDICTED:"predicted"},s.exports.trackPriority={PRIORITY_HIGH:"high",PRIORITY_LOW:"low",PRIORITY_STANDARD:"standard"},s.exports.clientTrackSwitchOffControl={MODE_AUTO:"auto",MODE_MANUAL:"manual"},s.exports.videoContentPreferencesMode={MODE_AUTO:"auto",MODE_MANUAL:"manual"}})(Mt)),Mt.exports}var Ft,as;function xe(){if(as)return Ft;as=1;const s=Pc().getLogger,o=Se(),{DEFAULT_LOG_LEVEL:u,DEFAULT_LOGGER_NAME:t}=o,e=Se().typeErrors;let r;function l(g){if(r=r||new Map,r.has(g))return r.get(g);const m=new Set;return r.set(g,m),m}class _{constructor(m,b,d,h,w){if(typeof m!="string")throw e.INVALID_TYPE("moduleName","string");if(!b)throw e.REQUIRED_ARGUMENT("component");typeof d!="object"&&(d={}),w=w||s,c(d),Object.defineProperties(this,{_component:{value:b},_logLevels:{value:d},_warnings:{value:new Set},_loggerName:{get:function(){let f=h&&typeof h=="string"?h:t;return this._logLevelsEqual||(f=`${f}-${m}`),f}},_logger:{get:function(){const f=w(this._loggerName);let v=this._logLevels[m]||u;return v=v==="off"?"silent":v,f.setDefaultLevel(v),f}},_logLevelsEqual:{get:function(){return new Set(Object.values(this._logLevels)).size===1}},logLevel:{get:function(){return _.getLevelByName(d[m]||u)}},name:{get:b.toString.bind(b)}})}static getLevelByName(m){return isNaN(m)?(m=m.toUpperCase(),a(m),_[m]):parseInt(m,10)}createLog(m,b){let d=this._loggerName;return this._logLevelsEqual||(d=d.substring(0,d.lastIndexOf("-"))),new _(m,b,this._logLevels,d)}setLevels(m){return c(m),Object.assign(this._logLevels,m),this}log(m,b){let d=_._levels[m];
1if(!d)throw e.INVALID_VALUE("logLevel",i);d=d.toLowerCase();const h=[new Date().toISOString(),d,this.name];return(this._logger[d]||function(){})(...h.concat(b)),this}debug(){return this.log(_.DEBUG,[].slice.call(arguments))}deprecated(m){const b=l(this._component.constructor);return b.has(m)?this:(b.add(m),this.warn(m))}info(){return this.log(_.INFO,[].slice.call(arguments))}warn(){return this.log(_.WARN,[].slice.call(arguments))}warnOnce(m){return this._warnings.has(m)?this:(this._warnings.add(m),this.warn(m))}error(){return this.log(_.ERROR,[].slice.call(arguments))}throw(m,b){throw m.clone&&(m=m.clone(b)),this.log(_.ERROR,m),m}}Object.defineProperties(_,{DEBUG:{value:0},INFO:{value:1},WARN:{value:2},ERROR:{value:3},OFF:{value:4},_levels:{value:["DEBUG","INFO","WARN","ERROR","OFF"]}});const p={},i=[],n=_._levels.map((g,m)=>(p[g]=!0,i.push(m),g));function a(g){if(!(g in p))throw e.INVALID_VALUE("level",n)}function c(g){Object.keys(g).forEach(m=>{a(g[m].toUpperCase())})}return Ft=_,Ft}var os;function ul(){if(os)return St;os=1,Object.defineProperty(St,"__esModule",{value:!0}),St.createNoiseCancellationAudioProcessor=p;const s=Qe,o=sl(),u=al();xe();const t={krisp:{supportedVersions:["1.0.0","2.0.0"],pluginFile:"krispsdk.mjs"},rnnoise:{supportedVersions:["0.6.0"],pluginFile:"rnnoise_sdk.mjs"}},e=i=>{const a=i.split("-")[0].split(".").map(c=>Number(c));if(a.length!==3||a.some(Number.isNaN))throw new Error(`Unsupported Plugin version format: ${i}`);return a},r=({supportedVersions:i,pluginVersion:n})=>{const a=e(n),c=i.map(e).find(g=>g[0]===a[0]);if(!c)throw new Error(`Major version mismatch: [Plugin version ${n}], [Supported Versions ${i.join(", ")}]`);if(a[1]<c[1])throw new Error(`Minor version mismatch: [Plugin version ${n}] < [Supported Version ${c.join(".")}]`)},l=(i,n)=>n===2?i:new o.LegacyPluginAdapter(i);let _=new Map;function p(i,n){return s.__awaiter(this,void 0,void 0,function*(){let a=_.get(i.vendor);if(!a){let c=t[i.vendor];if(!c)throw new Error(`Unsupported NoiseCancellationOptions.vendor: ${i.vendor}`);const{supportedVersions:g,pluginFile:m}=c,b=i.sdkAssetsPath,d=`${b}/${m}`;try{n.debug("loading noise cancellation sdk: ",d);const h=yield u(d);n.debug("Loaded noise cancellation sdk:",h);const w=h.default;if(!w||typeof w.getVersion!="function")throw new Error(`Invalid noise cancellation plugin module: ${d}`);const y=w.getVersion();n.debug("Plugin Version =",y),r({supportedVersions:g,pluginVersion:y});const f=e(y)[0],v=l(w,f);if(!v.isSupported())throw new Error("Noise Cancellation plugin is not supported on your browser");v.isInitialized()||(n.debug("initializing noise cancellation sdk: ",b),yield v.init({rootDir:b}),n.debug("noise cancellation sdk initialized!")),a={vendor:i.vendor,isInitialized:()=>v.isInitialized(),isConnected:()=>v.isConnected(),isEnabled:()=>v.isEnabled(),disconnect:()=>v.disconnect(),enable:()=>v.enable(),disable:()=>v.disable(),destroy:()=>v.destroy(),setLogging:k=>v.setLogging(k),connect:k=>{n.debug("connect: ",k.id),v.isConnected()&&v.disconnect();const T=v.connect(new MediaStream([k]));if(!T)throw new Error("Error connecting with noise cancellation sdk");const I=T.getAudioTracks()[0];if(!I)throw new Error("Error getting clean track from noise cancellation sdk");return v.enable(),I}},_.set(i.vendor,a)}catch(h){throw n.error(`Error loading noise cancellation sdk:${d}`,h),h}}return a})}return St}var cs;function ll(){if(cs)return et;cs=1,Object.defineProperty(et,"__esModule",{value:!0}),et.NoiseCancellationImpl=void 0,et.applyNoiseCancellation=t;const s=Qe,o=ul();xe();class u{constructor(r,l){this._processor=r,this._sourceTrack=l,this._disabledPermanent=!1}
1get vendor(){return this._processor.vendor}get sourceTrack(){return this._sourceTrack}get isEnabled(){return this._processor.isEnabled()}enable(){if(this._disabledPermanent)throw new Error(`${this.vendor} noise cancellation is disabled permanently for this track`);return this._processor.enable(),Promise.resolve()}disable(){return this._processor.disable(),Promise.resolve()}reacquireTrack(r){return s.__awaiter(this,void 0,void 0,function*(){const l=this._processor.isEnabled();this._processor.disconnect();const _=yield r();this._sourceTrack=_;const p=this._processor.connect(_);return l?this._processor.enable():this._processor.disable(),p})}disablePermanently(){return this._disabledPermanent=!0,this.disable()}stop(){this._processor.disconnect(),this._sourceTrack.stop()}}et.NoiseCancellationImpl=u;function t(e,r,l){return s.__awaiter(this,void 0,void 0,function*(){try{const _=yield(0,o.createNoiseCancellationAudioProcessor)(r,l),p=_.connect(e),i=new u(_,e);return{cleanTrack:p,noiseCancellation:i}}catch(_){return l.warn(`Failed to create noise cancellation. Returning normal audio track: ${_}`),{cleanTrack:e}}})}return et}var fe={},Re={},us;function Me(){if(us)return Re;us=1;function s(){const y={};return y.promise=new Promise((f,v)=>{y.resolve=f,y.reject=v}),y}function o(y,f,v,k){if(k in f)return;if(k.match(/^on[a-z]+$/))return;let T=!1;try{const P=Object.getOwnPropertyDescriptor(y,k);T=P&&!!P.get}catch{}if(T)return;let I;try{I=typeof y[k]}catch{}I==="function"&&(f[k]=function(){return this[v][k].apply(this[v],arguments)})}function u(y,f,v){for(const k in y)o(y,f,v,k)}function t(y,f){y=Array.isArray(y)?new Set(y):new Set(y.values()),f=Array.isArray(f)?new Set(f):new Set(f.values());const v=new Set;return y.forEach(k=>{f.has(k)||v.add(k)}),v}function e(y,f){return(y instanceof Map||y instanceof Set?Array.from(y.values()):y).reduce((k,T)=>k.concat(f(T)),[])}function r(){return typeof navigator<"u"&&typeof navigator.userAgent=="string"?navigator.userAgent:null}function l(y){return typeof y>"u"&&(y=r()),/Chrome|CriOS/.test(y)?"chrome":/Firefox|FxiOS/.test(y)?"firefox":/Safari|iPhone|iPad|iPod/.test(y)?"safari":null}function _(y){typeof y>"u"&&(y=r());const f={chrome:"Chrome|CriOS",firefox:"Firefox|FxiOS",safari:"Version"}[l(y)];if(!f)return null;const v=new RegExp(`(${f})/([^\\s]+)`),[,,k]=y.match(v)||[];if(!k)return null;const T=k.split(".").map(Number);return{major:isNaN(T[0])?null:T[0],minor:isNaN(T[1])?null:T[1]}}function p(y){return typeof y>"u"&&(y=r()),/Mobi/.test(y)&&l()==="chrome"&&/iPad|iPhone|iPod/.test(y)}function i(y,f){let v=null;Object.defineProperty(y,"on"+f,{get:function(){return v}
1,set:function(k){v&&this.removeEventListener(f,v),typeof k=="function"?(v=k,this.addEventListener(f,v)):v=null}})}function n(y,f,v){return f?y.then(f,v):y}function a(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,y=>{const f=Math.random()*16|0;return(y==="x"?f:f&3|8).toString(16)})}function c(y,f,v){Object.getOwnPropertyNames(y).forEach(k=>{g(y,f,v,k)})}function g(y,f,v,k){if(!(k in f)){if(k.match(/^on[a-z]+$/)){Object.defineProperty(f,k,{value:null,writable:!0}),v.addEventListener(k.slice(2),(...T)=>f.dispatchEvent(...T));return}Object.defineProperty(f,k,{enumerable:!0,get:function(){return v[k]}})}}function m(){return typeof navigator=="object"&&typeof navigator.mediaDevices=="object"&&typeof navigator.mediaDevices.getUserMedia=="function"&&typeof RTCPeerConnection=="function"}function b(y){if(typeof RTCRtpSender<"u"&&typeof RTCRtpSender.getCapabilities=="function")return Promise.resolve(new Set(RTCRtpSender.getCapabilities(y).codecs.map(({mimeType:v})=>v.split("/")[1].toLowerCase())));if(typeof RTCPeerConnection>"u"||typeof RTCPeerConnection.prototype>"u"||typeof RTCPeerConnection.prototype.addTransceiver!="function"||typeof RTCPeerConnection.prototype.close!="function"||typeof RTCPeerConnection.prototype.createOffer!="function")return Promise.resolve(new Set);const f=new RTCPeerConnection;return f.addTransceiver(y),f.createOffer().then(({sdp:v})=>(f.close(),new Set((v.match(/^a=rtpmap:.+$/gm)||[]).map(k=>k.match(/^a=rtpmap:.+ ([^/]+)/)[1].toLowerCase()))),()=>(f.close(),new Set))}const d=new Map;function h(y,f){const v=d.get(f);return v?Promise.resolve(v.has(y.toLowerCase())):b(f).then(k=>(d.set(f,k),k.has(y.toLowerCase())))}function w(){d.clear()}return Re.clearCachedSupportedCodecs=w,Re.defer=s,Re.delegateMethods=u,Re.difference=t,Re.flatMap=e,Re.guessBrowser=l,Re.guessBrowserVersion=_,Re.isCodecSupported=h,Re.isIOSChrome=p,Re.interceptEvent=i,Re.legacyPromise=n,Re.makeUUID=a,Re.proxyProperties=c,Re.support=m,Re}var wt={},ls;function Rc(){if(ls)return wt;ls=1;const s="1234567890abcdef",o=32;function u(t){let e="";for(let r=0;r<o;r++)e+=s.charAt(Math.floor(Math.random()*s.length));return`${t}${e}`}return wt.sessionSID=u("SS"),wt.createSID=u,wt}var Bt,ds;function Lc(){return ds||(ds=1,Bt={recordingMediaLost:"recording-media-lost"}),Bt}var hs;function be(){if(hs)return fe;hs=1;const s=Se(),{typeErrors:o,trackPriority:u}=s,t=Me(),{sessionSID:e}=Rc(),r=Lc();function l(q,$){if(q instanceof $.LocalAudioTrack||q instanceof $.LocalVideoTrack||q instanceof $.LocalDataTrack)return q;if(q instanceof $.MediaStreamTrack)return q.kind==="audio"?new $.LocalAudioTrack(q,$):new $.LocalVideoTrack(q,$);throw o.INVALID_TYPE("track","LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack")}function _(q,$,G,W){const F={audio:W.LocalAudioTrackPublication,video:W.LocalVideoTrackPublication,data:W.LocalDataTrackPublication}[q.kind];return new F($,q,G,W)}function p(q){return q[0].toUpperCase()+q.slice(1)}function i(q,$,G,W){const F=new Set;$.on("newListener",function C(x){G.has(x)&&!F.has(x)&&(W.deprecated(`${q}#${x} has been deprecated and scheduled for removal in [email protected].${G.get(x)?` Use ${q}#${G.get(x)} instead.`:""}`),F.add(x)),F.size>=G.size&&$.removeListener("newListener",C)})}function n(q,$){q=Array.isArray(q)?new Set(q):new Set(q.values()),$=Array.isArray($)?new Set($):new Set($.values());const G=new Set;return q.forEach(W=>{$.has(W)||G.add(W)}),G}function a(q,$){return Object.keys(q).reduce((G,W)=>(q[W]!==$&&(G[W]=q[W]),G),{})}function c(q,$){const G=q instanceof Map||q instanceof Set?Array.from(q.values()):q;return $=$||function(F){return F},G.reduce((W,F)=>{const C=$(F);return W.concat(C)},[])}function g(){return typeof navigator<"u"&&navigator.userAgent?navigator.userAgent:"Unknown"}
1function m(){const q=g(),[,$="unknown"]=q.match(/\(([^)]+)\)/)||[],[G]=$.split(";").map(W=>W.trim());return G.toLowerCase()}function b(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,q=>{const $=Math.random()*16|0;return(q==="x"?$:$&3|8).toString(16)})}function d(q){let $=null;function G(){$=null,q()}return function(){$&&clearTimeout($),$=setTimeout(G)}}function h(q,$,G,W){return new Promise((F,C)=>{function x(){const H=[].slice.call(arguments);W&&$.removeListener(W,V),F(...H)}function V(){const H=[].slice.call(arguments);$.removeListener(G,x),C(...H)}$.once(G,x),W&&$.once(W,V),q()})}function w(q,$){return $.split(".").reduce((G,W)=>G?G[W]:null,q)}function y(){const q={};return q.promise=new Promise(($,G)=>{q.resolve=$,q.reject=G}),q}function f(q,$,G,W){if(W in $)return;if(W.match(/^on[a-z]+$/))return;let F;try{F=typeof q[W]}catch{}F==="function"&&($[W]=function(...C){return this[G][W](...C)})}function v(q,$,G){for(const W in q)f(q,$,G,W)}function k(q,$){if(q===$)return!0;if(typeof q!=typeof $)return!1;if(q===null)return $===null;if($===null)return!1;if(Array.isArray(q))return Array.isArray($)&&q.length===$.length&&q.every((G,W)=>k(G,$[W]));if(typeof q=="object"){const G=Object.keys(q).sort(),W=Object.keys($).sort();return!Array.isArray($)&&k(G,W)&&G.every(F=>k(q[F],$[F]))}return!1}function T(q){return typeof q=="object"&&!Array.isArray(q)}function I(q,$,G){Object.getOwnPropertyNames(q).forEach(W=>{P(q,$,G,W)})}function P(q,$,G,W){if(!(W in $)){if(W.match(/^on[a-z]+$/)){Object.defineProperty($,W,{value:null,writable:!0}),G.addEventListener(W.slice(2),function(...F){$.dispatchEvent(...F)});return}Object.defineProperty($,W,{enumerable:!0,get(){return G[W]}})}}function R(q,$,G){return $?q.then(W=>{$(W)},W=>{G(W)}):q}function L(q){return typeof q=="string"?{default:q,media:q,signaling:q,webrtc:q}:q}function M(q,$){return $=$?"Local":"",`${$+(q.kind||"").replace(/\w{1}/,G=>G.toUpperCase())}Track`}function S(q,$){return $=$?"Local":"",`${$+(q.kind||"").replace(/\w{1}/,G=>G.toUpperCase())}TrackPublication`}function A(q){Object.getOwnPropertyNames(q).forEach($=>{$.startsWith("_")&&D(q,$)})}function E(q,$){return class extends q{constructor(...G){super(...G),A(this),O(this,$)}}}function D(q,$){const G=Object.getOwnPropertyDescriptor(q,$);G.enumerable=!1,Object.defineProperty(q,$,G)}function O(q,$=[]){$.forEach(G=>{q.hasOwnProperty(G)&&D(q,G)})}function j(q){return q.map(N)}function U(q){return j([...q])}function Q(q){return[...q.entries()].reduce(($,[G,W])=>Object.assign({[G]:N(W)},$),{})}function K(q){return Object.entries(q).reduce(($,[G,W])=>Object.assign({[G]:N(W)},$),{})}function N(q){return Array.isArray(q)?j(q):q instanceof Set?U(q):q instanceof Map?Q(q):q&&typeof q=="object"?K(q):q}function B(q){return q?"true":"false"}function le(q){const $={sessionSID:e,iceServers:(q.iceServers||[]).length,audioTracks:(q.tracks||[]).filter(W=>W.kind==="audio").length,videoTracks:(q.tracks||[]).filter(W=>W.kind==="video").length,dataTracks:(q.tracks||[]).filter(W=>W.kind==="data").length};if([["audio"],["automaticSubscription"],["enableDscp"],["eventListener"],["preflight"],["video"],["dominantSpeaker","enableDominantSpeaker"]].forEach(([W,F])=>{F=F||W,$[F]=B(!!q[W])}),[["maxVideoBitrate"],["maxAudioBitrate"]].forEach(([W,F])=>{F=F||W,typeof q[W]=="number"?$[F]=q[W]:isNaN(Number(q[W]))||($[F]=Number(q[W]))}),[["iceTransportPolicy"],["region"],["name","roomName"]].forEach(([W,F])=>{F=F||W,typeof q[W]=="string"?$[F]=q[W]:typeof q[W]=="number"&&W==="name"&&($[F]=q[W].toString())}),["preferredAudioCodecs","preferredVideoCodecs"].forEach(W=>{W in q&&($[W]=JSON.stringify(q[W]))}),"networkQuality"in q&&($.networkQualityConfiguration={},T(q.networkQuality)?["local","remote"].forEach(W=>{typeof q.networkQuality[W]=="number"&&($.networkQualityConfiguration[W]=q.networkQuality[W])}):($.networkQualityConfiguration.remote=0,$.networkQualityConfiguration.local=q.networkQuality?1:0)),q.bandwidthProfile&&q.bandwidthProfile.video){const W=q.bandwidthProfile.video||{};$.bandwidthProfileOptions={},["mode","maxTracks","trackSwitchOffMode","dominantSpeakerPriority","maxSub
1scriptionBitrate","renderDimensions","contentPreferencesMode","clientTrackSwitchOffControl"].forEach(F=>{typeof W[F]=="number"||typeof W[F]=="string"?$.bandwidthProfileOptions[F]=W[F]:typeof W[F]=="boolean"?$.bandwidthProfileOptions[F]=B(W[F]):typeof W[F]=="object"&&($.bandwidthProfileOptions[F]=JSON.stringify(W[F]))})}return Object.entries({RTCPeerConnection:"customRTCPeerConnectionImpl",MediaStream:"customMediaStreamImpl",getUserMedia:"customGetUserMediaImpl",enumerateDevices:"customEnumerateDevicesImpl"}).forEach(([W,F])=>{$[F]=B(typeof q[W]<"u")}),{group:"room",name:"connecting",level:"info",payload:$}}function ee(){return{group:"room",name:"connected",level:"info"}}function se(q){return z(q,[{prop:"video",type:"object",transform:de}])}function de(q){return z(q,[{prop:"dominantSpeakerPriority",type:"string",payloadProp:"active_speaker_priority"},{prop:"maxSubscriptionBitrate",type:"number",payloadProp:"max_subscription_bandwidth"},{prop:"maxTracks",type:"number",payloadProp:"max_tracks"},{prop:"mode",type:"string"},{prop:"renderDimensions",type:"object",payloadProp:"render_dimensions",transform:J},{prop:"trackSwitchOffMode",type:"string",payloadProp:"track_switch_off"}])}function he(q,$,G,W,F,C,x){const V={transports:[{type:"data-channel"}]};return Object.assign(q?{active_speaker:V}:{},$?{network_quality:V}:{},C?{render_hints:V}:{},F?{publisher_hints:V}:{},G?{track_priority:V}:{},W?{track_switch_off:V}:{},x?{extension_transcriptions:V}:{})}function me(q){return z(q,[{prop:"height",type:"number"},{prop:"width",type:"number"}])}function J(q){const{PRIORITY_HIGH:$,PRIORITY_LOW:G,PRIORITY_STANDARD:W}=u;return z(q,[{prop:$,type:"object",transform:me},{prop:G,type:"object",transform:me},{prop:W,type:"object",transform:me}])}function z(q,$){return $.reduce((G,{prop:W,type:F,payloadProp:C=W,transform:x=V=>V})=>typeof q[W]===F?Object.assign({[C]:x(q[W])},G):G,{})}function oe(q){return{rules:[{type:q?"include":"exclude",all:!0}],revision:1}}function ae(q){const $={[r.recordingMediaLost]:"recordings"};return q.map(G=>$[G]).filter(G=>!!G)}function ce(q,$){const G=Math.random();return q-$+Math.floor(2*$*G+.5)}function Y(q,$,G){return $<=q&&q<=G}function ye(q){return t.guessBrowser()==="chrome"&&q.kind==="video"&&"displaySurface"in q.getSettings()}function ue(q=10){return new Promise($=>setTimeout($,q))}function Te(q,$){return new Promise(G=>{q.addEventListener($,function W(F){q.removeEventListener($,W),G(F)})})}return fe.constants=s,fe.createBandwidthProfilePayload=se,fe.createMediaSignalingPayload=he,fe.createMediaWarningsPayload=ae,fe.createRoomConnectingEventPayload=le,fe.createRoomConnectedEventPayload=ee,fe.boolToString=B,fe.createSubscribePayload=oe,fe.asLocalTrack=l,fe.asLocalTrackPublication=_,fe.capitalize=p,fe.deprecateEvents=i,fe.difference=n,fe.filterObject=a,fe.flatMap=c,fe.getPlatform=m,fe.getUserAgent=g,fe.hidePrivateProperties=A,fe.hidePrivateAndCertainPublicPropertiesInClass=E,fe.isDeepEqual=k,fe.isNonArrayObject=T,fe.inRange=Y,fe.makeUUID=b,fe.oncePerTick=d,fe.promiseFromEvents=h,fe.getOrNull=w,fe.defer=y,fe.delegateMethods=v,fe.proxyProperties=I,fe.legacyPromise=R,fe.buildLogLevels=L,fe.trackClass=M,fe.trackPublicationClass=S,fe.valueToJSON=N,fe.withJitter=ce,fe.isChromeScreenShareTrack=ye,fe.waitForSometime=ue,fe.waitForEvent=Te,fe}var Ut,fs;function dl(){if(fs)return Ut;fs=1;const{flatMap:s,guessBrowser:o,guessBrowserVersion:u}=Me(),t=o(),e=u(),r=t==="chrome",l=t==="firefox",_=t==="safari",p=r?e.major:null,i=32767;function n(P,R){return typeof P.get=="function"?P.get(R):P.find(L=>L.id===R)}function a(P,R,L=!1){let M;if(Array.isArray(P))M=new Map(P.map(N=>[N.id||String(Math.random()),N]));else if(P instanceof Map)M=P;else if(typeof P=="object"&&P!==null){const N=new Map;Object.keys(P).forEach(B=>{N.set(B,P[B])}),M=N}else return new Map;if(!M||!R)return new Map;const S=new Map,A=R.id,E=R.kind;let D=null,O=null,j=null;for(const[N,B]of M)if(L&&B.type==="inbound-rtp"&&B.trackIdentifier===A){D=B,O=N,j=B.ssrc;break}else if(!L&&B.type==="media-source"&&B.trackIdentifier===A){D=B,O=N;break}else B.type==="track"&&B.trackIdentifier===A&&(D||(D=B,O=N));
1if(!D){if(L){const N=[];for(const[B,le]of M)le.type==="inbound-rtp"&&(le.kind===E||le.mediaType===E)&&N.push({id:B,stat:le});(N.length===1||N.length>1)&&(D=N[0].stat,O=N[0].id,j=D.ssrc)}else for(const[N,B]of M)if(B.type==="media-source"&&B.kind===E){D=B,O=N;break}}if(!D)return S;S.set(O,D);const U=new Set;if(L){if(D.codecId&&U.add(D.codecId),D.transportId&&U.add(D.transportId),D.remoteId&&U.add(D.remoteId),j)for(const[N,B]of M)B.type==="remote-outbound-rtp"&&B.ssrc===j&&U.add(N);for(const N of U)M.has(N)&&S.set(N,M.get(N));for(const[N,B]of M)B.type==="track"&&B.trackIdentifier===A&&S.set(N,B)}else{for(const[N,B]of M)if(B.type==="outbound-rtp"&&B.mediaSourceId===O){S.set(N,B),B.codecId&&U.add(B.codecId),B.transportId&&U.add(B.transportId);const le=N;for(const[ee,se]of M)se.type==="remote-inbound-rtp"&&se.localId===le&&S.set(ee,se)}for(const N of U)M.has(N)&&S.set(N,M.get(N))}let Q=null;const K=new Set;for(const N of S.values())N.transportId&&K.add(N.transportId);for(const N of K)if(M.has(N)){const B=M.get(N);S.set(N,B),B.selectedCandidatePairId&&(Q=B.selectedCandidatePairId),B.localCertificateId&&M.has(B.localCertificateId)&&S.set(B.localCertificateId,M.get(B.localCertificateId)),B.remoteCertificateId&&M.has(B.remoteCertificateId)&&S.set(B.remoteCertificateId,M.get(B.remoteCertificateId))}if(Q&&M.has(Q)){const N=M.get(Q);S.set(Q,N),N.localCandidateId&&M.has(N.localCandidateId)&&S.set(N.localCandidateId,M.get(N.localCandidateId)),N.remoteCandidateId&&M.has(N.remoteCandidateId)&&S.set(N.remoteCandidateId,M.get(N.remoteCandidateId))}return S}function c(P,R){return P&&typeof P.getStats=="function"?g(P,R):Promise.reject(new Error("Given PeerConnection does not support getStats"))}function g(P,R){const L=h(P,"audio","local"),M=h(P,"video","local"),S=h(P,"audio"),A=h(P,"video"),E={activeIceCandidatePair:null,localAudioTrackStats:[],localVideoTrackStats:[],remoteAudioTrackStats:[],remoteVideoTrackStats:[]},D=s([[L,"localAudioTrackStats",!1],[M,"localVideoTrackStats",!1],[S,"remoteAudioTrackStats",!0],[A,"remoteVideoTrackStats",!0]],([O,j,U])=>O.map(Q=>y(P,Q,Object.assign({isRemote:U},R)).then(K=>{K.forEach(N=>{N.trackId=Q.id,E[j].push(N)})})));return Promise.all(D).then(()=>m(P,R)).then(O=>(E.activeIceCandidatePair=O,E))}function m(P,R={}){return typeof R.testForChrome<"u"||r||typeof R.testForSafari<"u"||_?P.getStats().then(b):typeof R.testForFirefox<"u"||l?P.getStats().then(d):Promise.reject(new Error("RTCPeerConnection#getStats() not supported"))}function b(P){const R=Array.from(P.values()).find(({nominated:O,type:j})=>j==="candidate-pair"&&O);if(!R)return null;const L=n(P,R.localCandidateId),M=n(P,R.remoteCandidateId),S=[{key:"candidateType",type:"string"},{key:"ip",type:"string"},{key:"port",type:"number"},{key:"priority",type:"number"},{key:"protocol",type:"string"},{key:"url",type:"string"}],A=S.concat([{key:"deleted",type:"boolean"},{key:"relayProtocol",type:"string"},{key:"networkType",type:"string"}]),E=L?A.reduce((O,{key:j,type:U})=>(O[j]=typeof L[j]===U?L[j]:j==="deleted"?!1:null,O),{}):null,D=M?S.reduce((O,{key:j,type:U})=>(O[j]=typeof M[j]===U?M[j]:null,O),{}):null;return[{key:"availableIncomingBitrate",type:"number"},{key:"availableOutgoingBitrate",type:"number"},{key:"bytesReceived",type:"number"},{key:"bytesSent",type:"number"},{key:"consentRequestsSent",type:"number"},{key:"currentRoundTripTime",type:"number"},{key:"lastPacketReceivedTimestamp",type:"number"},{key:"lastPacketSentTimestamp",type:"number"},{key:"nominated",type:"boolean"},{key:"priority",type:"number"},{key:"readable",type:"boolean"},{key:"requestsReceived",type:"number"},{key:"requestsSent",type:"number"},{key:"responsesReceived",type:"number"},{key:"responsesSent",type:"number"},{key:"retransmissionsReceived",type:"number"},{key:"retransmissionsSent",type:"number"},{key:"state",type:"string",fixup:O=>O==="inprogress"?"in-progress":O},{key:"totalRoundTripTime",type:"number"},{key:"transportId",type:"string"},{key:"writable",type:"boolean"}].reduce((O,{key:j,type:U,fixup:Q})=>(O[j]=typeof R[j]===U?Q?Q(R[j]):R[j]:null,O),{localCandidate:E,remoteCandidate:D})}function d(P){const R=Array.from(P.values()).find(({nominated:j,type:U})=>
1U==="candidate-pair"&&j);if(!R)return null;const L=n(P,R.localCandidateId),M=n(P,R.remoteCandidateId),S=[{key:"candidateType",type:"string"},{key:"ip",ffKeys:["address","ipAddress"],type:"string"},{key:"port",ffKeys:["portNumber"],type:"number"},{key:"priority",type:"number"},{key:"protocol",ffKeys:["transport"],type:"string"},{key:"url",type:"string"}],A=S.concat([{key:"deleted",type:"boolean"},{key:"relayProtocol",type:"string"}]),E={host:"host",peerreflexive:"prflx",relayed:"relay",serverreflexive:"srflx"},D=L?A.reduce((j,{ffKeys:U,key:Q,type:K})=>{const N=U&&U.find(B=>B in L)||Q;return j[Q]=typeof L[N]===K?N==="candidateType"&&E[L[N]]||L[N]:N==="deleted"?!1:null,j},{}):null,O=M?S.reduce((j,{ffKeys:U,key:Q,type:K})=>{const N=U&&U.find(B=>B in M)||Q;return j[Q]=typeof M[N]===K?N==="candidateType"&&E[M[N]]||M[N]:null,j},{}):null;return[{key:"availableIncomingBitrate",type:"number"},{key:"availableOutgoingBitrate",type:"number"},{key:"bytesReceived",type:"number"},{key:"bytesSent",type:"number"},{key:"consentRequestsSent",type:"number"},{key:"currentRoundTripTime",type:"number"},{key:"lastPacketReceivedTimestamp",type:"number"},{key:"lastPacketSentTimestamp",type:"number"},{key:"nominated",type:"boolean"},{key:"priority",type:"number"},{key:"readable",type:"boolean"},{key:"requestsReceived",type:"number"},{key:"requestsSent",type:"number"},{key:"responsesReceived",type:"number"},{key:"responsesSent",type:"number"},{key:"retransmissionsReceived",type:"number"},{key:"retransmissionsSent",type:"number"},{key:"state",type:"string"},{key:"totalRoundTripTime",type:"number"},{key:"transportId",type:"string"},{key:"writable",type:"boolean"}].reduce((j,{key:U,type:Q})=>(j[U]=typeof R[U]===Q?R[U]:null,j),{localCandidate:D,remoteCandidate:O})}function h(P,R,L){return P[L==="local"?"getSenders":"getReceivers"]().map(({track:S})=>S).filter(S=>S&&S.kind===R)}function w(P,R){if(!P||!R)return!1;if(P.getReceivers){const L=P.getReceivers();for(const M of L)if(M.track&&M.track.id===R.id)return!0}if(P.getRemoteStreams){const L=P.getRemoteStreams();for(const M of L){const S=M.getTracks();for(const A of S)if(A.id===R.id)return!0}}return!1}function y(P,R,L={}){return typeof L.testForChrome<"u"||r?f(P,R,L):typeof L.testForFirefox<"u"||l?v(P,R,L):typeof L.testForSafari<"u"||_?f(P,R,L):Promise.reject(new Error("RTCPeerConnection#getStats() not supported"))}function f(P,R,L){const M=L.log;return p&&p<67?new Promise((S,A)=>{P.getStats(E=>{S([k(E,R)])},null,A)}):P.getStats(R).then(S=>(M.info("getStats by track successful"),T(S,L))).catch(()=>(M.warn("getStats by track failed. Getting default stats"),P.getStats().then(S=>{M.info("getStats by default successful");const A=w(P,R);M.info(`Starting filtering stats for ${A?"remote":"local"} track`);const E=a(S,R,A);return M.info(`Completed filtering stats for ${A?"remote":"local"} track`),T(E,L)})))}function v(P,R,L){return P.getStats(R).then(M=>[I(M,L)])}function k(P,R){const L=P.result().find(S=>S.type==="ssrc"&&S.stat("googTrackId")===R.id);let M={};return L&&(M.timestamp=Math.round(Number(L.timestamp)),M=L.names().reduce((S,A)=>{switch(A){case"googCodecName":S.codecName=L.stat(A);break;case"googRtt":S.roundTripTime=Number(L.stat(A));break;case"googJitterReceived":S.jitter=Number(L.stat(A));break;case"googFrameWidthInput":S.frameWidthInput=Number(L.stat(A));break;case"googFrameHeightInput":S.frameHeightInput=Number(L.stat(A));break;case"googFrameWidthSent":S.frameWidthSent=Number(L.stat(A));break;case"googFrameHeightSent":S.frameHeightSent=Number(L.stat(A));break;case"googFrameWidthReceived":S.frameWidthReceived=Number(L.stat(A));break;case"googFrameHeightReceived":S.frameHeightReceived=Number(L.stat(A));break;case"googFrameRateInput":S.frameRateInput=Number(L.stat(A));break;case"googFrameRateSent":S.frameRateSent=Number(L.stat(A));break;case"googFrameRateReceived":S.frameRateReceived=Number(L.stat(A));break;case"ssrc":S[A]=L.stat(A);break;case"bytesReceived":case"bytesSent":case"packetsLost":case"packetsReceived":case"packetsSent":case"audioInputLevel":case"audioOutputLevel":S[A]=Number(L.stat(A));break}return S},M)),M}function T(P,{simulateExceptionWhileStandardizingStats:R=!1}){if(R)throw new Error("Error while gathering stats");let L=null;const M=[];let S=null,A=null,E=null,D=null,O=null;P.forEach(N=>{const{type:B}=N;
1switch(B){case"inbound-rtp":L=N;break;case"outbound-rtp":M.push(N);break;case"media-source":O=N;break;case"track":E=N;break;case"codec":D=N;break;case"remote-inbound-rtp":S=N;break;case"remote-outbound-rtp":A=N;break}});const j=E?E.remoteSource:!O,U=j?[L]:M,Q=[],K=j?A:S;return U.forEach(N=>{const B={},le=[N,O,E,D,K&&K.ssrc===N.ssrc?K:null];function ee(ve){const ke=le.find(ge=>ge&&typeof ge[ve]<"u")||null;return ke?ke[ve]:null}const se=ee("ssrc");typeof se=="number"&&(B.ssrc=String(se));const de=ee("timestamp");B.timestamp=Math.round(de);let he=ee("mimeType");typeof he=="string"&&(he=he.split("/"),B.codecName=he[he.length-1]);const me=ee("roundTripTime");typeof me=="number"&&(B.roundTripTime=Math.round(me*1e3));const J=ee("jitter");typeof J=="number"&&(B.jitter=Math.round(J*1e3));const z=ee("frameWidth");typeof z=="number"&&(j?B.frameWidthReceived=z:(B.frameWidthSent=z,B.frameWidthInput=E?E.frameWidth:O.width));const oe=ee("frameHeight");typeof oe=="number"&&(j?B.frameHeightReceived=oe:(B.frameHeightSent=oe,B.frameHeightInput=E?E.frameHeight:O.height));const ae=ee("framesPerSecond");(typeof ae=="number"||ae===null)&&(B[j?"frameRateReceived":"frameRateSent"]=ae);const ce=ee("qualityLimitationReason");typeof ce=="string"&&(B.qualityLimitationReason=ce);const Y=ee("bytesReceived");typeof Y=="number"&&(B.bytesReceived=Y);const ye=ee("bytesSent");typeof ye=="number"&&(B.bytesSent=ye);const ue=ee("packetsLost");typeof ue=="number"&&(B.packetsLost=ue);const Te=ee("packetsReceived");typeof Te=="number"&&(B.packetsReceived=Te);const q=ee("packetsSent");typeof q=="number"&&(B.packetsSent=q);let $=ee("audioLevel");typeof $=="number"&&($=Math.round($*i),j?B.audioOutputLevel=$:B.audioInputLevel=$);const G=ee("totalPacketSendDelay");typeof G=="number"&&(B.totalPacketSendDelay=G);const W=ee("totalEncodeTime");typeof W=="number"&&(B.totalEncodeTime=W);const F=ee("framesEncoded");typeof F=="number"&&(B.framesEncoded=F);const C=ee("estimatedPlayoutTimestamp");typeof C=="number"&&(B.estimatedPlayoutTimestamp=C);const x=ee("totalDecodeTime");typeof x=="number"&&(B.totalDecodeTime=x);const V=ee("framesDecoded");typeof V=="number"&&(B.framesDecoded=V);const H=ee("jitterBufferDelay");typeof H=="number"&&(B.jitterBufferDelay=H);const X=ee("jitterBufferEmittedCount");typeof X=="number"&&(B.jitterBufferEmittedCount=X);const ie=ee("freezeCount");typeof ie=="number"&&(B.freezeCount=ie),Q.push(B)}),Q}function I(P=new Map,{isRemote:R,simulateExceptionWhileStandardizingStats:L=!1}){if(L)throw new Error("Error while gathering stats");let M=null,S=null;P.forEach(Te=>{const{isRemote:q,remoteId:$,type:G}=Te;
1if(!q)switch(G){case"inbound-rtp":M=Te,S=n(P,$);break;case"outbound-rtp":S=Te,M=n(P,$);break}});const A=R?M:S,E=R?S:M;function D(Te){return A&&typeof A[Te]<"u"?A[Te]:E&&typeof E[Te]<"u"?E[Te]:null}const O={},j=D("timestamp");O.timestamp=Math.round(j);const U=D("ssrc");typeof U=="number"&&(O.ssrc=String(U));const Q=D("bytesSent");typeof Q=="number"&&(O.bytesSent=Q);const K=D("packetsLost");typeof K=="number"&&(O.packetsLost=K);const N=D("packetsSent");typeof N=="number"&&(O.packetsSent=N);const B=D("roundTripTime");typeof B=="number"&&(O.roundTripTime=Math.round(B*1e3));const le=D("jitter");typeof le=="number"&&(O.jitter=Math.round(le*1e3));const ee=D("framesPerSecond");(typeof ee=="number"||ee===null)&&(O.frameRateSent=ee);const se=D("bytesReceived");typeof se=="number"&&(O.bytesReceived=se);const de=D("packetsReceived");typeof de=="number"&&(O.packetsReceived=de);const he=D("framesPerSecond");(typeof he=="number"||he===null)&&(O.frameRateReceived=he);const me=D("totalPacketSendDelay");typeof me=="number"&&(O.totalPacketSendDelay=me);const J=D("totalEncodeTime");typeof J=="number"&&(O.totalEncodeTime=J);const z=D("framesEncoded");typeof z=="number"&&(O.framesEncoded=z);const oe=D("estimatedPlayoutTimestamp");typeof oe=="number"&&(O.estimatedPlayoutTimestamp=oe);const ae=D("totalDecodeTime");typeof ae=="number"&&(O.totalDecodeTime=ae);const ce=D("framesDecoded");typeof ce=="number"&&(O.framesDecoded=ce);const Y=D("jitterBufferDelay");typeof Y=="number"&&(O.jitterBufferDelay=Y);const ye=D("jitterBufferEmittedCount");typeof ye=="number"&&(O.jitterBufferEmittedCount=ye);const ue=D("freezeCount");return typeof ue=="number"&&(O.freezeCount=ue),O}return Ut=c,Ut}var Wt,ps;function hl(){if(ps)return Wt;ps=1;function s(o={audio:!0,video:!0}){return typeof navigator=="object"&&typeof navigator.mediaDevices=="object"&&typeof navigator.mediaDevices.getUserMedia=="function"?navigator.mediaDevices.getUserMedia(o):Promise.reject(new Error("getUserMedia is not supported"))}return Wt=s,Wt}var ze={exports:{}},Ct={exports:{}},ms;function Le(){if(ms)return Ct.exports;ms=1;var s=typeof Reflect=="object"?Reflect:null,o=s&&typeof s.apply=="function"?s.apply:function(v,k,T){return Function.prototype.apply.call(v,k,T)},u;s&&typeof s.ownKeys=="function"?u=s.ownKeys:Object.getOwnPropertySymbols?u=function(v){return Object.getOwnPropertyNames(v).concat(Object.getOwnPropertySymbols(v))}:u=function(v){return Object.getOwnPropertyNames(v)};function t(f){console&&console.warn&&console.warn(f)}var e=Number.isNaN||function(v){return v!==v};function r(){r.init.call(this)}Ct.exports=r,Ct.exports.once=h,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._eventsCount=0,r.prototype._maxListeners=void 0;var l=10;function _(f){if(typeof f!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof f)}Object.defineProperty(r,"defaultMaxListeners",{enumerable:!0,get:function(){return l},set:function(f){if(typeof f!="number"||f<0||e(f))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+f+".");l=f}}),r.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},r.prototype.setMaxListeners=function(v){if(typeof v!="number"||v<0||e(v))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+v+".");return this._maxListeners=v,this};function p(f){return f._maxListeners===void 0?r.defaultMaxListeners:f._maxListeners}r.prototype.getMaxListeners=function(){return p(this)},r.prototype.emit=function(v){for(var k=[],T=1;T<arguments.length;T++)k.push(arguments[T]);var I=v==="error",P=this._events;if(P!==void 0)I=I&&P.error===void 0;else if(!I)return!1;if(I){var R;if(k.length>0&&(R=k[0]),R instanceof Error)throw R;var L=new Error("Unhandled error."+(R?" ("+R.message+")":""));throw L.context=R,L}var M=P[v];if(M===void 0)return!1;if(typeof M=="function")o(M,this,k);else for(var S=M.length,A=m(M,S),T=0;T<S;++T)o(A[T],this,k);return!0};function i(f,v,k,T){var I,P,R;
1if(_(k),P=f._events,P===void 0?(P=f._events=Object.create(null),f._eventsCount=0):(P.newListener!==void 0&&(f.emit("newListener",v,k.listener?k.listener:k),P=f._events),R=P[v]),R===void 0)R=P[v]=k,++f._eventsCount;else if(typeof R=="function"?R=P[v]=T?[k,R]:[R,k]:T?R.unshift(k):R.push(k),I=p(f),I>0&&R.length>I&&!R.warned){R.warned=!0;var L=new Error("Possible EventEmitter memory leak detected. "+R.length+" "+String(v)+" listeners added. Use emitter.setMaxListeners() to increase limit");L.name="MaxListenersExceededWarning",L.emitter=f,L.type=v,L.count=R.length,t(L)}return f}r.prototype.addListener=function(v,k){return i(this,v,k,!1)},r.prototype.on=r.prototype.addListener,r.prototype.prependListener=function(v,k){return i(this,v,k,!0)};function n(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function a(f,v,k){var T={fired:!1,wrapFn:void 0,target:f,type:v,listener:k},I=n.bind(T);return I.listener=k,T.wrapFn=I,I}r.prototype.once=function(v,k){return _(k),this.on(v,a(this,v,k)),this},r.prototype.prependOnceListener=function(v,k){return _(k),this.prependListener(v,a(this,v,k)),this},r.prototype.removeListener=function(v,k){var T,I,P,R,L;if(_(k),I=this._events,I===void 0)return this;if(T=I[v],T===void 0)return this;if(T===k||T.listener===k)--this._eventsCount===0?this._events=Object.create(null):(delete I[v],I.removeListener&&this.emit("removeListener",v,T.listener||k));else if(typeof T!="function"){for(P=-1,R=T.length-1;R>=0;R--)if(T[R]===k||T[R].listener===k){L=T[R].listener,P=R;break}if(P<0)return this;P===0?T.shift():b(T,P),T.length===1&&(I[v]=T[0]),I.removeListener!==void 0&&this.emit("removeListener",v,L||k)}return this},r.prototype.off=r.prototype.removeListener,r.prototype.removeAllListeners=function(v){var k,T,I;if(T=this._events,T===void 0)return this;if(T.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):T[v]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete T[v]),this;if(arguments.length===0){var P=Object.keys(T),R;for(I=0;I<P.length;++I)R=P[I],R!=="removeListener"&&this.removeAllListeners(R);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(k=T[v],typeof k=="function")this.removeListener(v,k);else if(k!==void 0)for(I=k.length-1;I>=0;I--)this.removeListener(v,k[I]);return this};function c(f,v,k){var T=f._events;if(T===void 0)return[];var I=T[v];return I===void 0?[]:typeof I=="function"?k?[I.listener||I]:[I]:k?d(I):m(I,I.length)}r.prototype.listeners=function(v){return c(this,v,!0)},r.prototype.rawListeners=function(v){return c(this,v,!1)},r.listenerCount=function(f,v){return typeof f.listenerCount=="function"?f.listenerCount(v):g.call(f,v)},r.prototype.listenerCount=g;function g(f){var v=this._events;if(v!==void 0){var k=v[f];if(typeof k=="function")return 1;if(k!==void 0)return k.length}return 0}r.prototype.eventNames=function(){return this._eventsCount>0?u(this._events):[]};function m(f,v){for(var k=new Array(v),T=0;T<v;++T)k[T]=f[T];return k}function b(f,v){for(;v+1<f.length;v++)f[v]=f[v+1];f.pop()}function d(f){for(var v=new Array(f.length),k=0;k<v.length;++k)v[k]=f[k].listener||f[k];return v}function h(f,v){return new Promise(function(k,T){function I(R){f.removeListener(v,P),T(R)}function P(){typeof f.removeListener=="function"&&f.removeListener("error",I),k([].slice.call(arguments))}y(f,v,P,{once:!0}),v!=="error"&&w(f,I,{once:!0})})}function w(f,v,k){typeof f.on=="function"&&y(f,"error",v,k)}function y(f,v,k,T){if(typeof f.on=="function")T.once?f.once(v,k):f.on(v,k);else if(typeof f.addEventListener=="function")f.addEventListener(v,function I(P){T.once&&f.removeEventListener(v,I),k(P)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof f)}return Ct.exports}var Ht,gs;function $n(){if(gs)return Ht;gs=1;const{EventEmitter:s}=Le();class o{constructor(){Object.defineProperties(this,{_eventEmitter:{value:new s}})}dispatchEvent(t){return this._eventEmitter.emit(t.type,t)}addEventListener(){return this._eventEmitter.addListener(...arguments)}removeEventListener(){return this._eventEmitter.removeListener(...arguments)}}return Ht=o,Ht}var zt,vs;function Oc(){if(vs)return zt;vs=1;const{defer:s}=Me(),o={high:new Set(["low"]),low:new Set(["high"])};class u{constructor(r="low"){let l=r;Object.defineProperties(this,{_state:{set:function(_){if(l!==_){l=_;const p=this._whenDeferreds.get(l);p.forEach(i=>
1i.resolve(this)),p.clear()}},get:function(){return l}},_whenDeferreds:{value:new Map([["high",new Set],["low",new Set]])}})}get state(){return this._state}lower(){return this.transition("low")}raise(){return this.transition("high")}transition(r){if(!o[this.state].has(r))throw t(this.state,r);return this._state=r,this}when(r){if(this.state===r)return Promise.resolve(this);if(!o[this.state].has(r))return Promise.reject(t(this.state,r));const l=s();return this._whenDeferreds.get(r).add(l),l.promise}}function t(e,r){return new Error(`Cannot transition from "${e}" to "${r}"`)}return zt=u,zt}var tt={},_s;function Vn(){if(_s)return tt;_s=1;const{flatMap:s}=Me();function o(p,i){return(i.match(new RegExp(p,"gm"))||[]).reduce((a,c)=>{const g=c.match(new RegExp(p));return g?a.add(g[1]):a},new Set)}function u(p){return o("^a=msid:.+ +(.+) *$",p)}function t(p,i=".*",n=".*"){return p.split(`\r
2m=`).slice(1).map(a=>`m=${a}`).filter(a=>{const c=new RegExp(`m=${i}`,"gm"),g=new RegExp(`a=${n}`,"gm");return c.test(a)&&g.test(a)})}function e(p){return Array.from(o("^a=ssrc:([0-9]+) +.*$",p))}function r(p,i){const n=t(p),a=new RegExp(`^a=msid:[^ ]+ +${i} *$`,"gm"),c=n.filter(g=>g.match(a));return new Set(s(c,e))}function l(p){return new Map(Array.from(u(p)).map(i=>[i,r(p,i)]))}function _(p,i){const n=l(i),a=new Map;n.forEach((m,b)=>{if(!p.has(b)){p.set(b,m);return}const d=Array.from(p.get(b)),h=Array.from(m);d.forEach((w,y)=>{const f=h[y];a.set(f,w);const v=`^a=ssrc:${f} (.*)$`,k=`a=ssrc:${w} $1`;i=i.replace(new RegExp(v,"gm"),k)})});const c="^(a=ssrc-group:[^ ]+ +)(.*)$";return(i.match(new RegExp(c,"gm"))||[]).forEach(m=>{const b=m.match(new RegExp(c));if(!b)return;const d=b[1],w=b[2].split(" ").map(y=>{const f=a.get(y);return f||y}).join(" ");i=i.replace(b[0],d+w)}),i}return tt.getMediaSections=t,tt.getTrackIds=u,tt.getSSRCs=r,tt.updateTrackIdsToSSRCs=_,tt}var Qt,bs;function fl(){if(bs)return Qt;bs=1;const s=$n(),o=Oc(),{updateTrackIdsToSSRCs:u}=Vn(),{delegateMethods:t,interceptEvent:e,isIOSChrome:r,legacyPromise:l,proxyProperties:_}=Me();class p extends s{constructor(h={},w={}){super();const y=w.chromeSpecificConstraints,f=Object.assign(h.iceTransportPolicy?{iceTransports:h.iceTransportPolicy}:{},h);e(this,"datachannel"),e(this,"signalingstatechange");const v=new RTCPeerConnection(f,y);Object.defineProperties(this,{_appliedTracksToSSRCs:{value:new Map,writable:!0},_applyCodecPreferences:{value:w.applyCodecPreferences||(()=>{})},_audioTransceiver:{value:null,writable:!0},_peerConnection:{value:v},_pendingLocalOffer:{value:null,writable:!0},_pendingRemoteOffer:{value:null,writable:!0},_rolledBackTracksToSSRCs:{value:new Map,writable:!0},_signalingStateLatch:{value:new o},_tracksToSSRCs:{value:new Map,writable:!0},_videoTransceiver:{value:null,writable:!0}}),v.addEventListener("datachannel",k=>{b(k.channel),this.dispatchEvent(k)}),v.addEventListener("signalingstatechange",(...k)=>{v.signalingState==="stable"&&(this._appliedTracksToSSRCs=new Map(this._tracksToSSRCs)),!this._pendingLocalOffer&&!this._pendingRemoteOffer&&this.dispatchEvent(...k)}),_(RTCPeerConnection.prototype,this,v)}get localDescription(){return this._pendingLocalOffer?this._pendingLocalOffer:this._peerConnection.localDescription}get remoteDescription(){return this._pendingRemoteOffer?this._pendingRemoteOffer:this._peerConnection.remoteDescription}get signalingState(){return this._pendingLocalOffer?"have-local-offer":this._pendingRemoteOffer?"have-remote-offer":this._peerConnection.signalingState}addIceCandidate(h,...w){let y;return this.signalingState==="have-remote-offer"?y=this._signalingStateLatch.when("low").then(()=>this._peerConnection.addIceCandidate(h)):y=this._peerConnection.addIceCandidate(h),w.length>0?l(y,...w):y}close(){this.signalingState!=="closed"&&(this._pendingLocalOffer=null,this._pendingRemoteOffer=null,this._peerConnection.close())}createAnswer(...h){let w;return this._pendingRemoteOffer?w=this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(()=>(this._signalingStateLatch.lower(),this._peerConnection.createAnswer())).then(y=>
2(this._pendingRemoteOffer=null,this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:"answer",sdp:u(this._tracksToSSRCs,y.sdp)})),y=>{throw this._pendingRemoteOffer=null,y}):w=this._peerConnection.createAnswer().then(y=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:"answer",sdp:u(this._tracksToSSRCs,y.sdp)}))),h.length>1?l(w,...h):w}createOffer(...h){const[w,y,f]=h,v=f||w||{};if(r()){if(v.offerToReceiveVideo&&!this._audioTransceiver&&!a(this,"audio")){delete v.offerToReceiveAudio;try{this._audioTransceiver=this.addTransceiver("audio",{direction:"recvonly"}),this._applyCodecPreferences(this._audioTransceiver)}catch(T){return Promise.reject(T)}}if(v.offerToReceiveVideo&&!this._videoTransceiver&&!a(this,"video")){delete v.offerToReceiveVideo;try{this._videoTransceiver=this.addTransceiver("video",{direction:"recvonly"}),this._applyCodecPreferences(this._videoTransceiver)}catch(T){return Promise.reject(T)}}}const k=this._peerConnection.createOffer(v).then(T=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:T.type,sdp:u(this._tracksToSSRCs,T.sdp)})));return h.length>1?l(k,w,y):k}createDataChannel(h,w){w=m(w);const y=this._peerConnection.createDataChannel(h,w);return b(y),y}setLocalDescription(...h){const[w,y,f]=h;this._rolledBackTracksToSSRCs.size>0&&(this._tracksToSSRCs=new Map(this._rolledBackTracksToSSRCs),this._rolledBackTracksToSSRCs.clear());const v=i(this,!0,w);return h.length>1?l(v,y,f):v}setRemoteDescription(...h){const[w,y,f]=h;this._rolledBackTracksToSSRCs.clear();const v=i(this,!1,w);return h.length>1?l(v,y,f):v}}t(RTCPeerConnection.prototype,p.prototype,"_peerConnection");function i(d,h,w){function y(R){h?d._pendingLocalOffer=R:d._pendingRemoteOffer=R}function f(){h?d._pendingLocalOffer=null:d._pendingRemoteOffer=null}const v=h?d._pendingLocalOffer:d._pendingRemoteOffer,k=h?d._pendingRemoteOffer:d._pendingLocalOffer,T=h?"have-local-offer":"have-remote-offer",I=h?"setLocalDescription":"setRemoteDescription";let P;if(!h&&k&&w.type==="answer")P=n(d,w);else if(w.type==="offer"){if(d.signalingState!==T&&d.signalingState!=="stable")return Promise.reject(new Error(`Cannot set ${h?"local":"remote"} offer in state ${d.signalingState}`));!v&&d._signalingStateLatch.state==="low"&&d._signalingStateLatch.raise();const R=d.signalingState;y(c(w)),P=Promise.resolve(),d.signalingState!==R&&P.then(()=>d.dispatchEvent(new Event("signalingstatechange")))}else w.type==="rollback"&&(d.signalingState!==T?P=Promise.reject(new Error(`Cannot rollback ${h?"local":"remote"} description in ${d.signalingState}`)):(f(),d._rolledBackTracksToSSRCs=new Map(d._tracksToSSRCs),d._tracksToSSRCs=new Map(d._appliedTracksToSSRCs),P=Promise.resolve(),P.then(()=>d.dispatchEvent(new Event("signalingstatechange")))));return P||d._peerConnection[I](c(w))}function n(d,h){const w=d._pendingLocalOffer;return d._peerConnection.setLocalDescription(w).then(()=>(d._pendingLocalOffer=null,d.setRemoteDescription(h))).then(()=>{d._signalingStateLatch.lower()})}function a(d,h){return!!d.getTransceivers().find(({receiver:w={}})=>{const{track:y={}}=w;return y.kind===h})}function c(d){return d instanceof RTCSessionDescription?d:new RTCSessionDescription(d)}function g(){return"maxRetransmitTime"in RTCDataChannel.prototype&&!("maxPacketLifeTime"in RTCDataChannel.prototype)}function m(d){return d=Object.assign({},d),g()&&"maxPacketLifeTime"in d&&(d.maxRetransmitTime=d.maxPacketLifeTime),d}function b(d){return Object.defineProperty(d,"maxRetransmits",{value:d.maxRetransmits===65535?null:d.maxRetransmits}),g()&&Object.defineProperty(d,"maxPacketLifeTime",{value:d.maxRetransmitTime===65535?null:d.maxRetransmitTime}),d}return Qt=p,Qt}var Gt,ys;function pl(){if(ys)return Gt;ys=1;const s=$n(),{updateTrackIdsToSSRCs:o}=Vn(),{delegateMethods:u,interceptEvent:t,legacyPromise:e,proxyProperties:r}=Me();class l extends s{constructor(a){super(),t(this,"signalingstatechange");const c=new RTCPeerConnection(a);Object.defineProperties(this,{_initiallyNegotiatedDtlsRole:{value:null,writable:!0},_isClosed:{value:!1,writable:!0},_peerConnection:{value:c},_rollingBack:{value:!1,writable:!0},_tracksToSSRCs:{value:new Map},peerIdentity:{enumerable:!0,value:Promise.resolve({idp:"",name:""})}});let g;c.addEventListener("signalingstatechange",(...m)=>{!this._rollingBack&&this.signalingState!==g&&(g=this.signalingState,this._isClosed?setTimeout(()=>this.dispatchEvent(...m)):this.dispatchEvent(...m))}),r(RTCPeerConnection.prototype,this,c)}get iceGatheringState(){return this._isClosed?"complete":this._peerConnection.iceGatheringState}get localDescription(){return i(this._peerConnection.localDescription,this._initiallyNegotiatedDtlsRole)}get signalingState(){return this._isClosed?"closed":this._peerConnection.signalingState}createAnswer(...a){let c;return c=this._peerConnection.createAnswer().then(g=>(p(this,g),i(g,this._initiallyNegotiatedDtlsRole))),typeof a[0]=="function"?e(c,...a):c}createOffer(...a){const[c,g,m]=a,b=m||c||{};let d;if(this.signalingState==="have-local-offer"||this.signalingState==="have-remote-offer"){const h=this.signalingState==="have-local-offer";d=_(this,h,()=>this.createOffer(b))}else d=this._peerConnection.createOffer(b);return d=d.then(h=>new RTCSessionDescription({type:h.type,sdp:o(this._tracksToSSRCs,h.sdp)})),a.length>1?e(d,c,g):d}setLocalDescription(...a){const[c,...g]=a;let m;return c&&c.type==="answer"&&this.signalingState==="have-local-offer"&&(m=Promise.reject(new Error("Cannot set local answer in state have-local-offer"))),m?a.length>1?e(m,...g):m:this._peerConnection.setLocalDescription(...a)}setRemoteDescription(...a){const[c,...g]=a;let m;return c&&this.signalingState==="have-remote-offer"&&(c.type==="answer"?m=Promise.reject(new Error("Cannot set remote answer in state have-remote-offer")):c.type==="offer"&&(m=_(this,!1,()=>this._peerConnection.setRemoteDescription(c)))),m||(m=this._peerConnection.setRemoteDescription(c)),m=m.then(()=>p(this,c,!0)),a.length>1?e(m,...g):m}close(){this.signalingState!=="closed"&&(this._isClosed=!0,this._peerConnection.close())}}u(RTCPeerConnection.prototype,l.prototype,"_peerConnection");function _(n,a,c){const g=a?"setLocalDescription":"setRemoteDescription";return n._rollingBack=!0,n._peerConnection[g](new RTCSessionDescription({type:"rollback"})).then(c).then(m=>(n._rollingBack=!1,m),m=>{throw n._rollingBack=!1,m})}function p(n,a,c){if(n._initiallyNegotiatedDtlsRole||a.type==="offer")return;const g=a.sdp.match(/a=setup:([a-z]+)/);if(!g)return;const m=g[1];n._initiallyNegotiatedDtlsRole=c?{active:"passive",passive:"active"}[m]:m}function i(n,a){return n&&n.type==="answer"&&a?new RTCSessionDescription({type:n.type,sdp:n.sdp.replace(/a=setup:[a-z]+/g,"a=setup:"+a)}):n}return Gt=l,Gt}var Kt,ks;function ml(){if(ks)return Kt;ks=1;const s=$n(),o=Oc(),{updateTrackIdsToSSRCs:u}=Vn(),{delegateMethods:t,interceptEvent:e,proxyProperties:r}=Me();class l extends s{constructor(c,g={}){super(),e(this,"datachannel"),e(this,"iceconnectionstatechange"),e(this,"signalingstatechange"),e(this,"track");const m=new RTCPeerConnection(c);Object.defineProperties(this,{_appliedTracksToSSRCs:{value:new Map,writable:!0},_applyCodecPreferences:{value:g.applyCodecPreferences||(()=>{})},_audioTransceiver:{value:null,writable:!0},_isClosed:{value:!1,writable:!0},_peerConnection:{value:m},_pendingLocalOffer:{value:null,writable:!0},_pendingRemoteOffer:{value:null,writable:!0},_rolledBackTracksToSSRCs:{value:new Map,writable:!0},_signalingStateLatch:{value:new o},_tracksToSSRCs:{value:new Map,writable:!0},_videoTransceiver:{value:null,writable:!0}}),m.addEventListener("datachannel",b=>{n(b.channel),this.dispatchEvent(b)}),m.addEventListener("iceconnectionstatechange",(...b)=>{this._isClosed||this.dispatchEvent(...b)}),m.addEventListener("signalingstatechange",(...b)=>{this._isClosed||(m.signalingState==="stable"&&(this._appliedTracksToSSRCs=new Map(this._tracksToSSRCs)),!this._pe
2ndingLocalOffer&&!this._pendingRemoteOffer&&this.dispatchEvent(...b))}),m.addEventListener("track",b=>{this._pendingRemoteOffer=null,this.dispatchEvent(b)}),r(RTCPeerConnection.prototype,this,m)}get localDescription(){return this._pendingLocalOffer||this._peerConnection.localDescription}get iceConnectionState(){return this._isClosed?"closed":this._peerConnection.iceConnectionState}get iceGatheringState(){return this._isClosed?"complete":this._peerConnection.iceGatheringState}get remoteDescription(){return this._pendingRemoteOffer||this._peerConnection.remoteDescription}get signalingState(){return this._isClosed?"closed":this._pendingLocalOffer?"have-local-offer":this._pendingRemoteOffer?"have-remote-offer":this._peerConnection.signalingState}addIceCandidate(c){return this.signalingState==="have-remote-offer"?this._signalingStateLatch.when("low").then(()=>this._peerConnection.addIceCandidate(c)):this._peerConnection.addIceCandidate(c)}createOffer(c){if(c=Object.assign({},c),c.offerToReceiveVideo&&!this._audioTransceiver&&!i(this,"audio")){delete c.offerToReceiveAudio;try{this._audioTransceiver=this.addTransceiver("audio",{direction:"recvonly"}),this._applyCodecPreferences(this._audioTransceiver)}catch(g){return Promise.reject(g)}}if(c.offerToReceiveVideo&&!this._videoTransceiver&&!i(this,"video")){delete c.offerToReceiveVideo;try{this._videoTransceiver=this.addTransceiver("video",{direction:"recvonly"}),this._applyCodecPreferences(this._videoTransceiver)}catch(g){return Promise.reject(g)}}return this._peerConnection.createOffer(c).then(g=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:g.type,sdp:u(this._tracksToSSRCs,g.sdp)})))}createAnswer(c){return this._pendingRemoteOffer?this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(()=>(this._signalingStateLatch.lower(),this._peerConnection.createAnswer())).then(g=>(this._pendingRemoteOffer=null,this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:g.type,sdp:u(this._tracksToSSRCs,g.sdp)})),g=>{throw this._pendingRemoteOffer=null,g}):this._peerConnection.createAnswer(c).then(g=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:g.type,sdp:u(this._tracksToSSRCs,g.sdp)})))}createDataChannel(c,g){const m=this._peerConnection.createDataChannel(c,g);return n(m),m}removeTrack(c){c.replaceTrack(null),this._peerConnection.removeTrack(c)}setLocalDescription(c){return this._rolledBackTracksToSSRCs.size>0&&(this._tracksToSSRCs=new Map(this._rolledBackTracksToSSRCs),this._rolledBackTracksToSSRCs.clear()),_(this,!0,c)}setRemoteDescription(c){return this._rolledBackTracksToSSRCs.clear(),_(this,!1,c)}close(){this._isClosed||(this._isClosed=!0,this._peerConnection.close())}}t(RTCPeerConnection.prototype,l.prototype,"_peerConnection");function _(a,c,g){function m(f){c?a._pendingLocalOffer=f:a._pendingRemoteOffer=f}function b(){c?a._pendingLocalOffer=null:a._pendingRemoteOffer=null}const d=c?a._pendingLocalOffer:a._pendingRemoteOffer,h=c?a._pendingRemoteOffer:a._pendingLocalOffer,w=c?"have-local-offer":"have-remote-offer",y=c?"setLocalDescription":"setRemoteDescription";if(!c&&h&&g.type==="answer")return p(a,g);if(g.type==="offer"){if(a.signalingState!==w&&a.signalingState!=="stable")return Promise.reject(new Error(`Cannot set ${c?"local":"remote"}
3        offer in state ${a.signalingState}`));!d&&a._signalingStateLatch.state==="low"&&a._signalingStateLatch.raise();const f=a.signalingState;return m(g),a.signalingState!==f?Promise.resolve().then(()=>a.dispatchEvent(new Event("signalingstatechange"))):Promise.resolve()}else if(g.type==="rollback")return a.signalingState!==w?Promise.reject(new Error(`Cannot rollback 
4        ${c?"local":"remote"} description in ${a.signalingState}`)):(b(),a._rolledBackTracksToSSRCs=new Map(a._tracksToSSRCs),a._tracksToSSRCs=new Map(a._appliedTracksToSSRCs),Promise.resolve().then(()=>a.dispatchEvent(new Event("signalingstatechange"))));return a._peerConnection[y](g)}function p(a,c){const g=a._pendingLocalOffer;return a._peerConnection.setLocalDescription(g).then(()=>(a._pendingLocalOffer=null,a.setRemoteDescription(c))).then(()=>a._signalingStateLatch.lower())}function i(a,c){return!!a.getTransceivers().find(({receiver:g={}})=>{const{track:m={}}=g;return m.kind===c})}function n(a){return Object.defineProperties(a,{maxPacketLifeTime:{value:a.maxPacketLifeTime===65535?null:a.maxPacketLifeTime},maxRetransmits:{value:a.maxRetransmits===65535?null:a.maxRetransmits}})}return Kt=l,Kt}var Ts;function gl(){if(Ts)return ze.exports;if(Ts=1,typeof RTCPeerConnection=="function"){const{guessBrowser:s}=Me();switch(s()){case"chrome":ze.exports=fl();break;case"firefox":ze.exports=pl();break;case"safari":ze.exports=ml();break;default:ze.exports=RTCPeerConnection;break}}else ze.exports=function(){throw new Error("RTCPeerConnection is not supported")};return ze.exports}var Yt,Ss;function Fn(){if(Ss)return Yt;Ss=1;const s={};return Object.defineProperties(s,{getStats:{enumerable:!0,value:dl()},getUserMedia:{enumerable:!0,value:hl()},RTCPeerConnection:{enumerable:!0,value:gl()}}),Yt=s,Yt}var Jt,ws;function Bn(){return ws||(ws=1,Jt=function(o,u){if(o&&u)if(o.super_=u,typeof Object.create=="function")o.prototype=Object.create(u.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}});else{class t{constructor(){}}t.prototype=u.prototype,o.prototype=new t,o.prototype.constructor=o}}),Jt}var Xt,Cs;function Ge(){if(Cs)return Xt;Cs=1;function s(){return/Android/.test(navigator.userAgent)}function o(){return!!(navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)}function u(){return o()&&window.screen.width>=744&&(/Macintosh/i.test(navigator.userAgent)||/iPad/.test(navigator.userAgent)||/iPad/.test(navigator.platform))}function t(){return o()&&window.screen.width<=476&&(/Macintosh/i.test(navigator.userAgent)||/iPhone/.test(navigator.userAgent)||/iPhone/.test(navigator.platform))}function e(){return u()||t()}function r(){return/Mobi/.test(navigator.userAgent)}function l(n){return n==="chrome"&&/Edge/.test(navigator.userAgent)&&(typeof chrome>"u"||typeof chrome.runtime>"u")}function _(n){if(n!=="chrome")return null;if("brave"in navigator)return"brave";const g=i(navigator.userAgent).reduce((b,d)=>b.replace(d,""),navigator.userAgent).match(/[^\s]+/g)||[],[,,...m]=g.map(b=>b.split("/")[0].toLowerCase());return m.find(b=>!["chrome","mobile","safari"].includes(b))||null}function p(n){return n!=="safari"?null:"brave"in navigator?"brave":["edge","edg"].find(a=>navigator.userAgent.toLowerCase().includes(a))||null}function i(n){const a=[],c=[];for(let g=0;g<n.length;g++)if(n[g]==="(")a.push(g);else if(n[g]===")"&&a.length>0){const m=a.pop();
4a.length===0&&c.push(n.substring(m,g+1))}return c}return Xt={isAndroid:s,isIOS:e,isIpad:u,isIphone:t,isMobile:r,isNonChromiumEdge:l,mobileWebKitBrowser:p,rebrandedChromeBrowser:_},Xt}var Zt,Ps;function Ic(){if(Ps)return Zt;Ps=1;function s(u){return u=typeof u=="number"?u:0,new Promise(t=>setTimeout(t,u))}function o(u,t,e){e=typeof e=="number"?e:250;const r=u.createMediaStreamSource(t),l=u.createAnalyser();l.fftSize=2048,r.connect(l);const _=new Uint8Array(l.fftSize);let p=!1;setTimeout(()=>{p=!0},e);function i(){return p?Promise.resolve(!0):(l.getByteTimeDomainData(_),_.some(n=>n!==128&&n!==0)?Promise.resolve(!1):s().then(i))}return i().then(n=>(r.disconnect(),n),n=>{throw r.disconnect(),n})}return Zt=o,Zt}var er,Es;function Mc(){if(Es)return er;Es=1;const s=Ic(),o=3,u=250;function t(e){const r=gt(),l={},_=r.getOrCreate(l);let p=o;function i(){return p--,s(_,e.srcObject,u).then(n=>n?p>0?i():!0:!1).catch(()=>!0)}return i().finally(()=>{r.release(l)})}return er=t,er}var tr,Rs;function Dc(){if(Rs)return tr;Rs=1;const{defer:s}=be();class o{constructor(){Object.defineProperties(this,{_audio:{value:s(),writable:!0},_video:{value:s(),writable:!0}}),this._audio.resolve(),this._video.resolve()}resolveDeferred(t){t==="audio"?this._audio.resolve():this._video.resolve()}startDeferred(t){t==="audio"?this._audio=s():this._video=s()}whenResolved(t){return t==="audio"?this._audio.promise:this._video.promise}}return tr=new o,tr}var rr,Ls;function vt(){if(Ls)return rr;Ls=1;const{EventEmitter:s}=Le(),{hidePrivateAndCertainPublicPropertiesInClass:o}=be();return rr=o(s,["domain"]),rr}var ir,Os;function Un(){if(Os)return ir;Os=1;const s=vt(),{buildLogLevels:o,valueToJSON:u}=be(),t=Se().DEFAULT_LOG_LEVEL,e=xe();let r=0;class l extends s{constructor(p,i,n){n=Object.assign({name:p,log:null,logLevel:t},n),super();const a=String(n.name),c=o(n.logLevel),g=n.log?n.log.createLog("media",this):new e("media",this,c,n.loggerName);Object.defineProperties(this,{_instanceId:{value:++r},_log:{value:g},kind:{enumerable:!0,value:i},name:{enumerable:!0,value:a}})}toJSON(){return u(this)}}return ir=l,ir}var nr,Is;function Ac(){if(Is)return nr;Is=1;const{isIOS:s}=Ge(),{waitForEvent:o,waitForSometime:u}=be(),t=Dc(),e=Un();class r extends e{constructor(i,n){n=Object.assign({playPausedElementsIfNotBackgrounded:s()&&typeof document=="object"&&typeof document.addEventListener=="function"&&typeof document.visibilityState=="string"},n),super(i.id,i.kind,n);let a=!1;if(n=Object.assign({MediaStream},n),typeof n.MediaStream!="function")throw new Error("MediaTrack received an invalid MediaStream constructor: "+n.MediaStream);Object.defineProperties(this,{_attachments:{value:new Set},_dummyEl:{value:null,writable:!0},_elShims:{value:new WeakMap},_isStarted:{get(){return a},set(c){a=c}},_playPausedElementsIfNotBackgrounded:{value:n.playPausedElementsIfNotBackgrounded},_shouldShimAttachedElements:{value:n.workaroundWebKitBug212780||n.playPausedElementsIfNotBackgrounded},_unprocessedTrack:{value:null,writable:!0},_MediaStream:{value:n.MediaStream},_mapMediaElement:{value:n.mapMediaElement},_disposeMediaElement:{value:n.disposeMediaElement},isStarted:{enumerable:!0,get(){return a}},mediaStreamTrack:{enumerable:!0,get(){return this._unprocessedTrack||i.track}},processedTrack:{enumerable:!0,value:null,writable:!0}}),this._initialize()}_start(){this._log.debug("Started"),this._isStarted=!0,this._dummyEl&&(this._dummyEl.oncanplay=null),this.emit("started",this)}_initialize(){const i=this;this._log.debug("Initializing"),this._dummyEl=this._createElement(),this.mediaStreamTrack&&this.mediaStreamTrack.addEventListener?this.mediaStreamTrack.addEventListener("ended",function n(){i._end(),i.mediaStreamTrack.removeEventListener("ended",n)}):this.mediaStreamTrack&&(this.mediaStreamTrack.onended=function(){i._end(),i.mediaStreamTrack.onended=null}),this._dummyEl&&(this._dummyEl.muted=!0,this._dummyEl.oncanplay=this._start.bind(this,this._dummyEl),this._attach(this._dummyEl,this.mediaStreamTrack),this._attachments.delete(this._dummyEl))}_end(){this._log.debug("Ended"),this._dummyEl&&(this._dummyEl.remove(),this._disposeMediaElement?this._disposeMediaElement(this._dummyEl):this._dummyEl.srcObject=null,this._dummyEl.oncanplay=null,this._dummyEl=null)}attach(i){if(typeof i=="string"?i=this._selectElement(i):i||(i=this._createElement()),this._log.debug("Attempting to attach to element:",i),i=this._attach(i),this._shouldShimAttachedElements&&!this._elShims.has(i)){const n=this._playPausedElementsIfNotBackgroun
4ded?()=>l(i,this._log):null;this._elShims.set(i,_(i,n))}return i}_attach(i,n=this.processedTrack||this.mediaStreamTrack){let a=i.srcObject;a instanceof this._MediaStream||(a=new this._MediaStream);const c=n.kind==="audio"?"getAudioTracks":"getVideoTracks";return a[c]().forEach(g=>{a.removeTrack(g)}),a.addTrack(n),this._mapMediaElement&&(this._log.debug("Mapping element using mapMediaElement before attaching media to element"),this._mapMediaElement(i)),i.srcObject=a,i.autoplay=!0,i.playsInline=!0,this._attachments.has(i)||this._attachments.add(i),i}_selectElement(i){const n=document.querySelector(i);if(!n)throw new Error(`Selector matched no element: ${i}`);return n}_updateElementsMediaStreamTrack(){this._log.debug("Reattaching all elements to update mediaStreamTrack"),this._getAllAttachedElements().forEach(i=>this._attach(i))}_createElement(){return typeof document<"u"?document.createElement(this.kind):null}detach(i){let n;return typeof i=="string"?n=[this._selectElement(i)]:i?n=[i]:n=this._getAllAttachedElements(),this._log.debug("Attempting to detach from elements:",n),this._detachElements(n),i?n[0]:n}_detachElements(i){return i.map(this._detachElement.bind(this))}_detachElement(i){if(!this._attachments.has(i))return i;const n=i.srcObject;return n instanceof this._MediaStream&&n.removeTrack(this.processedTrack||this.mediaStreamTrack),this._disposeMediaElement&&(this._log.debug("Disposing element using disposeMediaElement after removing media from element"),this._disposeMediaElement(i)),this._attachments.delete(i),this._shouldShimAttachedElements&&this._elShims.has(i)&&(this._elShims.get(i).unShim(),this._elShims.delete(i)),i}_getAllAttachedElements(){const i=[];return this._attachments.forEach(n=>{i.push(n)}),i}}function l(p,i){const n=p.tagName.toLowerCase();i.warn("Unintentionally paused:",p),Promise.race([o(document,"visibilitychange"),u(1e3)]).then(()=>{document.visibilityState==="visible"&&t.whenResolved("audio").then(()=>(i.info(`Playing unintentionally paused <${n}> element`),i.debug("Element:",p),p.play())).then(()=>{i.info(`Successfully played unintentionally paused <${n}> element`),i.debug("Element:",p)}).catch(a=>{i.warn(`Error while playing unintentionally paused <${n}> element:`,{error:a,el:p})})})}function _(p,i=null){const n=p.pause,a=p.play;let c=!1;p.pause=()=>(c=!0,n.call(p)),p.play=()=>(c=!1,a.call(p));const g=i?()=>{c||i()}:null;return g&&p.addEventListener("pause",g),{pausedIntentionally(){return c},unShim(){p.pause=n,p.play=a,g&&p.removeEventListener("pause",g)}}}return nr=r,nr}var sr,Ms;function xc(){if(Ms)return sr;Ms=1;const s=Ac();class o extends s{constructor(t,e){super(t,e)}attach(){return super.attach.apply(this,arguments)}detach(){return super.detach.apply(this,arguments)}}return sr=o,sr}var ar,Ds;function qc(){if(Ds)return ar;Ds=1;let s=null;const o=3,u=50,t=250,e=50;function r(_){try{const p=s.getContext("2d");p.drawImage(_,0,0,e,u);const n=p.getImageData(0,0,e,u).data.filter((c,g)=>(g+1)%4);return Math.max.apply(Math,n)===0}catch(p){return console.log("Error checking silence: ",p),!1}}function l(_){return s=s||document.createElement("canvas"),new Promise(p=>{let i=o;setTimeout(function n(){return i--,r(_)?i>0?setTimeout(n,t):p(!0):p(!1)},t)})}return ar=l,ar}var or,As;function Dt(){if(As)return or;As=1;class s{constructor(u=1){Object.defineProperties(this,{_listeners:{value:[]},_onVisibilityChange:{value:()=>{this._emitVisible(document.visibilityState==="visible")}}});for(let t=0;t<u;t++)this._listeners.push([])}clear(){const u=this._listeners.length;for(let t=0;t<u;t++)this._listeners[t]=[]}_listenerCount(){return this._listeners.reduce((u,t)=>u+t.length,0)}_emitVisible(u){let t=Promise.resolve();for(let e=1;e<=this._listeners.length;e++)t=t.then(()=>this._emitVisiblePhase(e,u));return t}_emitVisiblePhase(u,t){const e=this._listeners[u-1];return Promise.all(e.map(r=>{const l=r(t);return l instanceof Promise?l:Promise.resolve(l)}))}_start(){document.addEventListener("visibilitychange",this._onVisibilityChange)}_stop(){document.removeEventListener("visibilitychange",this._onVisibilityChange)}onVisibilityChange(u,t){if(typeof u!="number"||u<=0||u>this._listeners.length)throw new Error("invalid phase: ",u);return this._listeners[u-1].push(t),this._listenerCount()===1&&this._start(),this}offVisibilityChange(u,t){if(typeof u!="number"||u<=0||u>this._listeners.length)throw new Error("invalid phase: ",u);const e=this._listeners[u-1],r=e.indexOf(t);return r!==-1&&(e.splice(r,1),this._listenerCount()===0&&this._stop()),this}}return or=new s(2),or}var cr,xs;function jc(){if(xs)return cr;xs=1;const s=Ic();function o(u,t,e,r,l){r=typeof r=="number"?r:3;let _=0;const p=gt(),i={},n=p.getOrCreate(i);function a(){return t(e).then(c=>(e.audio?s(n,c,l).catch(m=>(u.warn("Encountered an error while detecting silence",m),!0)):Promise.resolve(!1)).then(m=>{if(m){if(r<=0)return u.warn("Got a silent audio MediaStreamTrack. Normally we would try 	to get a new one, but we've run out of retries; returning it anyway."),c}else return u.info("Got a non-silent audio MediaStreamTrack; returning it."),c;return u.warn(`Got a silent audio MediaStreamTrack. Stopping all MediaStreamTracks and calling getUserMedia again. This is retry #${
4++_}.`),c.getTracks().forEach(b=>b.stop()),r--,a()}))}return a().then(c=>(p.release(i),c),c=>{throw p.release(i),c})}return cr=o,cr}var ur,qs;function Nc(){if(qs)return ur;qs=1;const s=Le().EventEmitter;class o extends s{constructor(){super(),Object.defineProperties(this,{_queuedEvents:{value:new Map}})}dequeue(t){let e=!0;if(!t)return this._queuedEvents.forEach(function(l,_){e=this.dequeue(_)&&e},this),e;const r=this._queuedEvents.get(t)||[];return this._queuedEvents.delete(t),r.reduce((l,_)=>this.emit(...[t].concat(_))&&l,e)}queue(){const t=[].slice.call(arguments);if(this.emit(...t))return!0;const e=t[0];return this._queuedEvents.has(e)||this._queuedEvents.set(e,[]),this._queuedEvents.get(e).push(t.slice(1)),!1}}return ur=o,ur}var lr,js;function $c(){if(js)return lr;js=1;const s=Nc();class o extends s{constructor(t,e){super(),Object.defineProperties(this,{id:{enumerable:!0,value:t},kind:{enumerable:!0,value:e}})}stop(){this.emit("stopped")}}return lr=o,lr}var dr,Ns;function Vc(){if(Ns)return dr;Ns=1;const s=$c();class o extends s{constructor(t,e){super(t,e.kind),Object.defineProperties(this,{_track:{value:e,writable:!0},enabled:{enumerable:!0,get(){return this._track.enabled}},readyState:{enumerable:!0,get(){return this._track.readyState}},track:{enumerable:!0,get(){return this._track}}})}stop(){this.track.stop(),super.stop()}}return dr=o,dr}var hr,$s;function Fc(){if($s)return hr;$s=1;const s=Vc();class o extends s{constructor(t){super(t.id,t),Object.defineProperties(this,{_clones:{value:new Set},_eventsToReemitters:{value:new Map([["mute",()=>this.queue("muted")],["unmute",()=>this.queue("unmuted")]])},_senders:{value:new Set},_senderToPublisherHintCallbacks:{value:new Map},isPublishing:{enumerable:!0,get(){return!!this._clones.size}},muted:{enumerable:!0,get(){return this._track.muted}}}),this._reemitMediaStreamTrackEvents()}_reemitMediaStreamTrackEvents(t=this._track){const{_eventsToReemitters:e,_track:r}=this;t.addEventListener?e.forEach((l,_)=>t.addEventListener(_,l)):e.forEach((l,_)=>{t[`on${_}`]=l}),r!==t&&(e.forEach((l,_)=>r.removeEventListener(_,l)),r.muted!==t.muted&&e.get(t.muted?"mute":"unmute")())}clone(){const t=new o(this.track.clone());return this._clones.add(t),t}removeClone(t){this._clones.delete(t)}setMediaStreamTrack(t){const e=Array.from(this._clones),r=Array.from(this._senders);return Promise.all(e.map(l=>l.setMediaStreamTrack(t.clone())).concat(r.map(l=>this._replaceTrack(l,t)))).finally(()=>{this._reemitMediaStreamTrackEvents(t),this._track=t})}addSender(t,e){return this._senders.add(t),e&&this._senderToPublisherHintCallbacks.set(t,e),this}removeSender(t){return this._senders.delete(t),this._senderToPublisherHintCallbacks.delete(t),this}setPublisherHint(t){const[e]=Array.from(this._senderToPublisherHintCallbacks.values());return e?e(t):Promise.resolve("COULD_NOT_APPLY_HINT")}_replaceTrack(t,e){return t.replaceTrack(e).then(r=>(this.setPublisherHint(null).catch(()=>{}),this.emit("replaced"),r))}}return hr=o,hr}var fr,Vs;function Bc(){if(Vs)return fr;Vs=1;const{getUserMedia:s}=Fn(),{isIOS:o}=Ge(),{capitalize:u,defer:t,waitForSometime:e,waitForEvent:r}=be(),{typeErrors:{ILLEGAL_INVOKE:l}}=Se(),_=Mc(),p=qc(),i=Dt(),n=Dc(),a=jc(),c=Fc();function g(b){return class extends b{constructor(h,w){const y=o()&&typeof document=="object"&&typeof document.addEventListener=="function"&&typeof document.visibilityState=="string";w=Object.assign({getUserMedia:s,isCreatedByCreateLocalTracks:!1,workaroundWebKitBug1208516:y,gUMSilentTrackWorkaround:a},w);const f=new c(h),{kind:v}=f;super(f,w),Object.defineProperties(this,{_constraints:{value:typeof w[v]=="object"?w[v]:{},writable:!0},_getUserMedia:{value:w.getUserMedia},_gUMSilentTrackWorkaround:{value:w.gUMSilentTrackWorkaround},_eventsToReemitters:{value:new Map([["muted",()=>
4this.emit("muted",this)],["unmuted",()=>this.emit("unmuted",this)]])},_workaroundWebKitBug1208516:{value:w.workaroundWebKitBug1208516},_workaroundWebKitBug1208516Cleanup:{value:null,writable:!0},_didCallEnd:{value:!1,writable:!0},_isCreatedByCreateLocalTracks:{value:w.isCreatedByCreateLocalTracks},_noiseCancellation:{value:w.noiseCancellation||null},_trackSender:{value:f},id:{enumerable:!0,value:f.id},isEnabled:{enumerable:!0,get(){return f.enabled}},isMuted:{enumerable:!0,get(){return f.muted}},isStopped:{enumerable:!0,get(){return f.readyState==="ended"}}}),this._workaroundWebKitBug1208516&&(this._workaroundWebKitBug1208516Cleanup=m(this)),this._reemitTrackSenderEvents()}_end(){this._didCallEnd||(super._end.call(this),this._didCallEnd=!0,this._eventsToReemitters.forEach((h,w)=>this._trackSender.removeListener(w,h)),this.emit("stopped",this))}_initialize(){this._didCallEnd&&(this._didCallEnd=!1),this._eventsToReemitters&&this._reemitTrackSenderEvents(),super._initialize.call(this)}_reacquireTrack(h){const{_getUserMedia:w,_gUMSilentTrackWorkaround:y,_log:f,mediaStreamTrack:{kind:v}}=this;f.info("Re-acquiring the MediaStreamTrack"),f.debug("Constraints:",h);const k=Object.assign({audio:!1,video:!1},{[v]:h});return(this._workaroundWebKitBug1208516Cleanup?y(f,w,k):w(k)).then(I=>I.getTracks()[0])}_reemitTrackSenderEvents(){this._eventsToReemitters.forEach((h,w)=>this._trackSender.on(w,h)),this._trackSender.dequeue("muted"),this._trackSender.dequeue("unmuted")}_restart(h){const{_log:w}=this;return h=h||this._constraints,this._stop(),this._reacquireTrack(h).catch(y=>{throw w.error("Failed to re-acquire the MediaStreamTrack:",{error:y,constraints:h}),y}).then(y=>(w.info("Re-acquired the MediaStreamTrack"),w.debug("MediaStreamTrack:",y),this._constraints=Object.assign({},h),this._setMediaStreamTrack(y)))}_setMediaStreamTrack(h){return h.enabled=this.mediaStreamTrack.enabled,this._stop(),(this._unprocessedTrack?Promise.resolve().then(()=>{this._unprocessedTrack=h}):this._trackSender.setMediaStreamTrack(h).catch(w=>{this._log.warn("setMediaStreamTrack failed:",{error:w,mediaStreamTrack:h})})).then(()=>{this._initialize(),this._getAllAttachedElements().forEach(w=>this._attach(w))})}_stop(){return this.mediaStreamTrack.stop(),this._end(),this}enable(h){return h=typeof h=="boolean"?h:!0,h!==this.mediaStreamTrack.enabled&&(this._log.info(`${h?"En":"Dis"}abling`),this.mediaStreamTrack.enabled=h,this.emit(h?"enabled":"disabled",this)),this}disable(){return this.enable(!1)}restart(h){const{kind:w}=this;if(!this._isCreatedByCreateLocalTracks)return Promise.reject(l("restart",`can only be called on a Local${u(w)}Track that is created using createLocalTracks or createLocal${u(w)}Track.`));this._workaroundWebKitBug1208516Cleanup&&(this._workaroundWebKitBug1208516Cleanup(),this._workaroundWebKitBug1208516Cleanup=null);let y=this._restart(h);return this._workaroundWebKitBug1208516&&(y=y.finally(()=>{this._workaroundWebKitBug1208516Cleanup=m(this)})),y}stop(){return this._log.info("Stopping"),this._workaroundWebKitBug1208516Cleanup&&(this._workaroundWebKitBug1208516Cleanup(),this._workaroundWebKitBug1208516Cleanup=null),this._stop()}}}function m(b){const{_log:d,kind:h,_noiseCancellation:w}=b,y={audio:_,video:p}[h],f=()=>w?w.sourceTrack:b.mediaStreamTrack;let{_dummyEl:v}=b,k=f(),T=null;function I(){return v.play().then(()=>y(v)).then(E=>(E?d.warn("Silence detected"):d.info("Non-silence detected"),E)).catch(E=>{d.warn("Failed to detect silence:",E)}).finally(()=>{b.processedTrack||v.pause()})}function P(){const{_workaroundWebKitBug1208516Cleanup:E,isStopped:D}=b,O=D&&!!E,{muted:j}=f();return Promise.resolve().then(()=>document.visibilityState==="visible"&&!T&&(j||O||I()))}function R(){return Promise.race([r(k,"unmute"),e(50)]).then(()=>P()).then(E=>(E&&!T&&(T=t(),b._restart().finally(()=>{v=b._dummyEl,S(),k=f(),M(),T.resolve(),T=null}).catch(O=>{d.error("failed to restart track: ",O)})),(T&&T.promise||Promise.resolve()).finally(()=>n.resolveDeferred(h)))).catch(E=>{d.error(`error in maybeRestart: ${E.message}`)})}function L(){const{_log:E,kind:D}=b;E.info("Muted"),E.debug("LocalMediaTrack:",b),n.startDeferred(D)}function M(){k.addEventListener?(k.addEventListener("ended",R),k.addEventListener("mute",L),k.addEventListener("unmute",R)):(k.onended=R,k.onmute=L,k.onunmute=R)}function S(){k.removeEventListener?(k.removeEventListener("ended",R),k.removeEventListener("mute",L),k.removeEventListener("unmute",R)):(k.onended=null,k.onmute=null,k.onunmute=null)}let A=E=>E?R():!1;return i.onVisibilityChange(1,A),M(),()=>{i.offVisibilityChange(1,A),S()}}return fr=g,fr}var pr,Fs;function vl(){if(Fs)return pr;Fs=1;const{isIOS:s}=Ge(),o=Mc(),{isIOSChrome:u}=Me(),t=xc(),r=Bc()(t);class l extends r{constructor(p,i){const n=(i==null?void 0:i.noiseCancellation)||null;super(p,i);const{_log:a}=this,{label:c=""}=p,{deviceId:g="",groupId:m=""}=p.getSettings();Object.defineProperties(this,{_currentDefaultDeviceInfo:{value:{deviceId:g,groupId:m,label:c},writable:!0},_enumerateDevices:{value:typeof(i==null?void 0:i.enumerateDevices)=="function"?i.enumerateDevices:navigator.mediaDevices.enumerateDevices},_defaultDeviceCaptureMode:{value:(!s()||n)&&this._isCreatedByCreateLocalTracks&&typeof navigator=="object"&&typeof navigator.mediaDevices=="object"&&typeof navigator.mediaDevices.addEventListener=="function"&&(typeof(i==null?void 0:i.enumerateDevices)=="function"||typeof navigator.mediaDevices.enumerateDevices=="function")?(i==null?void 0:i.defaultDeviceCaptureMode)||"auto":"manual"},_onDeviceChange:{value:()=>{this._enumerateDevices().then(b=>{const d=b.find(({deviceId:h,kind:w})=>w==="audioinput"&&h!=="default");d&&["deviceId","groupId"].some(h=>d[h]!==this._currentDefaultDeviceInfo[h])&&(a.info("Default device changed, restarting the LocalAudioTrack"),a.debug(`Old default device: "${this._currentDefaultDeviceInfo.deviceId}" => "${this._currentDefaultDeviceInfo.label}"`),a.debug(`New default device: "${d.deviceId}" => "${d.label}"`),this._currentDefaultDeviceInfo=d,this._restartDefaultDevice().catch(h=>a.warn(`Failed to restart: ${h.message}`)))},b=>{a.warn(`Failed to run enumerateDevices(): ${b.message}`)})}},_restartOnDefaultDeviceChangeCleanup:{value:null,writable:!0},noiseCancellation:{enumerable:!0,value:n,writable:!1}}),a.debug("defaultDeviceCaptureMode:",this._defaultDeviceCaptureMode),this._maybeRestartOnDefaultDeviceChange()}toString(){return`[LocalAudioTrack #${this._instanceId}: ${this.id}]`}attach(p){return p=super.attach.call(this,p),p.muted=!0,p}_end(){return super._end.apply(this,arguments)}_maybeRestartOnDefaultDeviceChange(){const{_constraints:p,_defaultDeviceCaptureMode:i,_log:n}=this,a=this.noiseCancellation?this.noiseCancellation.sourceTrack:this.mediaStreamTrack,{deviceId:c}=a.getSettings(),g=b=>b!==c||b==="default",m=(function b(d={}
4){return typeof d=="string"?g(d):Array.isArray(d)?d.every(g):d.exact?b(d.exact):d.ideal?b(d.ideal):!0})(p.deviceId);i==="auto"&&m?this._restartOnDefaultDeviceChangeCleanup||(n.info("LocalAudioTrack will be restarted if the default device changes"),navigator.mediaDevices.addEventListener("devicechange",this._onDeviceChange),this._restartOnDefaultDeviceChangeCleanup=()=>{n.info("Cleaning up the listener to restart the LocalAudioTrack if the default device changes"),navigator.mediaDevices.removeEventListener("devicechange",this._onDeviceChange),this._restartOnDefaultDeviceChangeCleanup=null}):(n.info("LocalAudioTrack will NOT be restarted if the default device changes"),this._restartOnDefaultDeviceChangeCleanup&&this._restartOnDefaultDeviceChangeCleanup())}_reacquireTrack(p){return this._log.debug("_reacquireTrack: ",p),this.noiseCancellation?this.noiseCancellation.reacquireTrack(()=>super._reacquireTrack.call(this,p)):super._reacquireTrack.call(this,p)}_restartDefaultDevice(){const p=Object.assign({},this._constraints),i=Object.assign({},p,{deviceId:this._currentDefaultDeviceInfo.deviceId});return this.restart(i).then(()=>{this._constraints=p,this._maybeRestartOnDefaultDeviceChange()})}_setMediaStreamTrack(p){const{_log:i,noiseCancellation:n}=this;let a=super._setMediaStreamTrack.call(this,p);return u()&&n&&(i.debug("iOS Chrome detected, checking if the restarted Krisp audio is silent"),a=a.then(()=>o(this._dummyEl)).then(c=>(i.debug(`Krisp audio is ${c?"silent, using source audio":"not silent"}`),c&&n.disablePermanently().then(()=>super._setMediaStreamTrack.call(this,n.sourceTrack))))),a}disable(){return super.disable.apply(this,arguments)}enable(){return super.enable.apply(this,arguments)}restart(){return super.restart.apply(this,arguments)}stop(){return this.noiseCancellation&&this.noiseCancellation.stop(),this._restartOnDefaultDeviceChangeCleanup&&this._restartOnDefaultDeviceChangeCleanup(),super.stop.apply(this,arguments)}}return pr=l,pr}var mr,Bs;function _l(){if(Bs)return mr;Bs=1;const s=Bn(),o=vl();function u(t,e){const r=new o(t,e);return Object.setPrototypeOf(r,u.prototype),r}return s(u,o),mr=u,mr}var gr,Us;function bl(){if(Us)return gr;Us=1;const{DEFAULT_FRAME_RATE:s}=Se();function o(t,e){const[r]=t.srcObject.getVideoTracks(),{frameRate:l=s}=r.getSettings();let _;const p=new ReadableStream({start(n){_=setInterval(()=>n.enqueue(),1e3/l)}}),i=new TransformStream({transform(){return e()}});return p.pipeThrough(i).pipeTo(new WritableStream).then(()=>{}),()=>{clearInterval(_)}}function u(t,e,r){const[l]=t.srcObject.getVideoTracks(),{readable:_}=new MediaStreamTrackProcessor({track:l}),p=new MediaStreamTrackGenerator({kind:"video"});let i=!1;const n=new TransformStream({transform(a,c){return(r==="videoframe"?e(a):Promise.resolve(a.close()).then(e)).finally(()=>{i&&c.terminate()})}});return _.pipeThrough(n).pipeTo(p.writable).then(()=>{}),()=>{i=!0}}return gr=typeof MediaStreamTrackGenerator=="function"&&typeof MediaStreamTrackProcessor=="function"?u:o,gr}var vr,Ws;function yl(){if(Ws)return vr;Ws=1;const{EventEmitter:s}=Le(),{DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS:o}=Se();class u extends s{constructor(e){super(),Object.defineProperties(this,{_lastStatsSaveTime:{value:null,writable:!0},_lastStatsPublishTime:{value:null,writable:!0},_log:{value:e},_processorInfo:{value:null,writable:!0},_stats:{value:null,writable:!0}}),this.on("add",r=>{this._lastStatsSaveTime=Date.now(),this._lastStatsPublishTime=Date.now(),this._processorInfo=r,this._stats=[],this._reemitEvent("add",this._getEventData())}),this.on("remove",()=>{const r=this._getEventData();this._lastStatsSaveTime=null,this._lastStatsPublishTime=null,this._processorInfo=null,this._stats=null,this._reemitEvent("remove",r)}),this.on("start",()=>{this._reemitEvent("start",this._getEventData())}),this.on("stop",r=>{this._reemitEvent("stop",Object.assign({message:r},this._getEventData()))}),this.on("stats",()=>this._maybeEmitStats())}_getEventData(){if(!this._processorInfo)return{};const{processor:e,captureHeight:r,captureWidth:l,inputFrameRate:_,isRemoteVideoTrack:p,inputFrameBufferType:i,outputFrameBufferContextType:n}=this._processorInfo,a={captureHeight:r,captureWidth:l,inputFrameRate:_,isRemoteVideoTrack:p,inputFrameBufferType:i,outputFrameBufferContextType:n};return a.name=e._name||"VideoProcessor",["assetsPath","blurFilterRadius","debounce","fitType","isSimdEnabled","maskBlurRadius","pipeline","version"].forEach(c=>{const g=e[`_${c}`];typeof g<"u"&&(a[c]=g)}
4),Object.keys(a).forEach(c=>{const g=a[c];typeof g=="boolean"&&(a[c]=g?"true":"false")}),a}_maybeEmitStats(){if(!this._stats||!this._processorInfo)return;const e=this._processorInfo.processor._benchmark;if(!e)return;const r=Date.now();if(r-this._lastStatsSaveTime<1e3)return;const l={outputFrameRate:e.getRate("totalProcessingDelay")};if(["captureFrameDelay","imageCompositionDelay","inputImageResizeDelay","processFrameDelay","segmentationDelay"].forEach(i=>{l[i]=e.getAverageDelay(i)}),this._lastStatsSaveTime=r,this._stats.push(l),r-this._lastStatsPublishTime<o)return;this._lastStatsPublishTime=r;const p=this._stats.splice(0).reduce((i,n,a)=>(Object.keys(l).forEach(c=>{i[c]||(i[c]=0),i[c]=(i[c]*a+n[c])/(a+1)}),i),{});Object.keys(p).forEach(i=>{p[i]=parseFloat(p[i].toFixed(2))}),this._reemitEvent("stats",Object.assign({},p,this._getEventData()))}_reemitEvent(e,r){this._log.debug(`VideoProcessor:${e}`,r),this.emit("event",{name:e,data:r})}}return vr=u,vr}var _r,Hs;function Uc(){if(Hs)return _r;Hs=1;const s=Ac(),o=bl(),u=yl(),{DEFAULT_FRAME_RATE:t}=Se();class e extends s{constructor(n,a){return super(n,a),Object.defineProperties(this,{_isCapturing:{value:!1,writable:!0},_inputFrame:{value:null,writable:!0},_outputFrame:{value:null,writable:!0},_processorEventObserver:{value:null,writable:!0},_processorOptions:{value:{},writable:!0},_stopCapture:{value:()=>{},writable:!0},_unmuteHandler:{value:null,writable:!0},dimensions:{enumerable:!0,value:{width:null,height:null}},processor:{enumerable:!0,value:null,writable:!0},_documentPipWindow:{value:null,writable:!0},_documentPipEnterListener:{value:null,writable:!0},_documentPipExitListener:{value:null,writable:!0}}),this._processorEventObserver=new(a.VideoProcessorEventObserver||u)(this._log),this}_checkIfCanCaptureFrames(n=!1){let a=!0,c="";const{enabled:g,readyState:m}=this.mediaStreamTrack;return g||(a=!1,c="MediaStreamTrack is disabled"),m==="ended"&&(a=!1,c="MediaStreamTrack is ended"),this.processor||(a=!1,c="VideoProcessor not detected."),!this._attachments.size&&!n&&(a=!1,c="VideoTrack is not publishing and there is no attached element."),c&&this._log.debug(c),{canCaptureFrames:a,message:c}}_captureFrames(){if(this._isCapturing){this._log.debug("Ignoring captureFrames call. Capture is already in progress");return}if(!this._checkIfCanCaptureFrames().canCaptureFrames){this._isCapturing=!1,this._log.debug("Cannot capture frames. Ignoring captureFrames call.");return}this._isCapturing=!0,this._processorEventObserver.emit("start"),this._log.debug("Start capturing frames");const{inputFrameBufferType:n}=this._processorOptions;this._dummyEl.play().then(()=>{const a=c=>{const g=this._checkIfCanCaptureFrames();if(!g.canCaptureFrames)return c&&c.close(),this._isCapturing=!1,this._stopCapture(),this._processorEventObserver.emit("stop",g.message),this._log.debug("Cannot capture frames. Stopping capturing frames."),Promise.resolve();const{width:m=0,height:b=0}=this.mediaStreamTrack.getSettings();this._outputFrame&&this._outputFrame.width!==m&&(this._outputFrame.width=m,this._outputFrame.height=b),this._inputFrame&&(this._inputFrame.width!==m&&(this._inputFrame.width=m,this._inputFrame.height=b),this._inputFrame.getContext("2d").drawImage(this._dummyEl,0,0,m,b));const d=c||(["video","videoframe"].includes(n)?this._dummyEl:this._inputFrame);let h=null;try{h=this.processor.processFrame(d,this._outputFrame)}catch(w){this._log.debug("Exception detected after calling processFrame.",w)}return(h instanceof Promise?h:Promise.resolve(h)).then(()=>{this._outputFrame&&(typeof this.processedTrack.requestFrame=="function"&&this.processedTrack.requestFrame(),this._processorEventObserver.emit("stats"))})};this._stopCapture=o(this._dummyEl,a,n)}).catch(a=>this._log.error("Video element cannot be played",{error:a,track:this}))}_initialize(){super._initialize(),this._dummyEl&&(this._dummyEl.onloadedmetadata=()=>{r(this,this._dummyEl)&&(this.dimensions.width=this._dummyEl.videoWidth,this.dimensions.height=this._dummyEl.videoHeight)},this._dummyEl.onresize=()=>{r(this,this._dummyEl)&&(this.dimensions.width=this._dummyEl.videoWidth,this.dimensions.height=this._dummyEl.videoHeight,this.isStarted&&(this._log.debug("Dimensions changed:",this.dimensions),this.emit
4(e.DIMENSIONS_CHANGED,this)))})}_restartProcessor(){const n=this.processor;if(n){const a=Object.assign({},this._processorOptions);this.removeProcessor(n),this.addProcessor(n,a)}}_start(n){return this.dimensions.width=n.videoWidth,this.dimensions.height=n.videoHeight,this._log.debug("Dimensions:",this.dimensions),this.emit(e.DIMENSIONS_CHANGED,this),super._start.call(this,n)}addProcessor(n,a){if(!n||typeof n.processFrame!="function")throw new Error("Received an invalid VideoProcessor from addProcessor.");if(this.processor)throw new Error("A VideoProcessor has already been added.");if(!this._dummyEl)throw new Error("VideoTrack has not been initialized.");this._log.debug("Adding VideoProcessor to the VideoTrack",n),this._unmuteHandler||(this._unmuteHandler=()=>{this._log.debug("mediaStreamTrack unmuted"),this.processedTrack.muted&&(this._log.debug("mediaStreamTrack is unmuted but processedTrack is muted. Restarting processor."),this._restartProcessor())},this.mediaStreamTrack.addEventListener?this.mediaStreamTrack.addEventListener("unmute",this._unmuteHandler):this.mediaStreamTrack.onunmute=this._unmuteHandler.bind(this)),this._processorOptions=a||{};let{inputFrameBufferType:c,outputFrameBufferContextType:g}=this._processorOptions;if(typeof OffscreenCanvas>"u"&&c==="offscreencanvas")throw new Error("OffscreenCanvas is not supported by this browser.");if(c&&c!=="videoframe"&&c!=="video"&&c!=="canvas"&&c!=="offscreencanvas")throw new Error(`Invalid inputFrameBufferType of ${c}`);c||(c=typeof OffscreenCanvas>"u"?"canvas":"offscreencanvas");const{width:m=0,height:b=0,frameRate:d=t}=this.mediaStreamTrack.getSettings();if(c==="offscreencanvas"&&(this._inputFrame=new OffscreenCanvas(m,b)),c==="canvas"&&(this._inputFrame=document.createElement("canvas")),this._inputFrame&&(this._inputFrame.width=m,this._inputFrame.height=b),this._outputFrame=document.createElement("canvas"),this._outputFrame.width=m,this._outputFrame.height=b,g=g||"2d",!this._outputFrame.getContext(g))throw new Error(`Cannot get outputFrameBufferContextType: ${g}.`);const w=typeof CanvasCaptureMediaStreamTrack<"u"&&CanvasCaptureMediaStreamTrack.prototype&&typeof CanvasCaptureMediaStreamTrack.prototype.requestFrame=="function"?0:void 0;return this.processedTrack=this._outputFrame.captureStream(w).getTracks()[0],this.processedTrack.enabled=this.mediaStreamTrack.enabled,this.processor=n,this._processorEventObserver.emit("add",{processor:n,captureHeight:b,captureWidth:m,inputFrameRate:d,isRemoteVideoTrack:this.toString().includes("RemoteVideoTrack"),inputFrameBufferType:c,outputFrameBufferContextType:g}),this._updateElementsMediaStreamTrack(),this._captureFrames(),this}attach(){const n=super.attach.apply(this,arguments);return this._attachments.size===1&&l(this),this.processor&&this._captureFrames(),n}detach(){const n=super.detach.apply(this,arguments);return this._attachments.size===0&&_(this),n}removeProcessor(n){if(!n)throw new Error("Received an invalid VideoProcessor from removeProcessor.");if(!this.processor)throw new Error("No existing VideoProcessor detected.");if(n!==this.processor)throw new Error("The provided VideoProcessor is different than the existing one.");return this._processorEventObserver.emit("remove"),this._log.debug("Removing VideoProcessor from the VideoTrack",n),this._stopCapture(),this._stopCapture=()=>{},this.mediaStreamTrack.removeEventListener("unmute",this._unmuteHandler),this._processorOptions={},this._unmuteHandler=null,this._isCapturing=!1,this.processor=null,this.processedTrack=null,this._inputFrame=null,this._outputFrame=null,this._updateElementsMediaStreamTrack(),this}}e.DIMENSIONS_CHANGED="dimensionsChanged";function r(i,n){return i.dimensions.width!==n.videoWidth||i.dimensions.height!==n.videoHeight}function l(i){!i._documentPipEnterListener&&"documentPictureInPicture"in globalThis&&globalThis.documentPictureInPicture&&typeof globalThis.documentPictureInPicture.addEventListener=="function"&&(i._documentPipEnterListener=n=>{i._log.debug("document pip entered"),i._documentPipWindow=n.window,i._documentPipExitListener=()=>{i._log.debug("document pip exited"),i._documentPipWindow=null,typeof i._onDocumentPipExit=="function"&&i._onDocumentPipExit()},n.window&&typeof n.window.addEventListener=="function"&&n.window.addEventListener("pagehide",i._documentPipExitListener),p(i),typeof i._onDocumentPipEnter=="function"&&i._onDocumentPipEnter(n)},globalThis.documentPictureInPicture.addEventListener("enter",i._documentPipEnterListener))}function _(i){i._documentPipEnterListener&&(globalThis.documentPictureInPicture&&typeof globalThis.documentPictureInPicture.removeEventListener=="function"&&globalThis.documentPictureInPicture.removeEventListener("enter",i._documentPipEnterListener),i._documentPipWindow&&i._documentPipExitListener&&typeof i._documentPipWindow.removeEventListener=="function"&&i._documentPipWindow.removeEventListener("pagehide",i._documentPipExitListener),i._documentPipEnterListener=null,i._documentPipExitListener=null,i._documentPipWindow=null)}function p(i){if(i._documentPipWindow)try{const n=new WeakSet(i._documentPipWindow.document.querySelectorAll("video"));
4i._attachments.forEach(a=>{n.has(a)&&a.paused&&a.play().then(()=>{i._log.debug("Successfully played inadvertently paused video element in document PiP window")}).catch(c=>{i._log.debug("Failed to play inadvertently paused video element in document PiP window",c)})})}catch(n){i._log.debug("Error checking document PiP video playback:",n)}}return e._ensureDocumentPipVideosPlaying=p,_r=e,_r}var br,zs;function kl(){if(zs)return br;zs=1;const{isIOS:s}=Ge(),o=qc(),u=Bc(),t=Uc(),e=u(t);class r extends e{constructor(p,i){i=Object.assign({workaroundSilentLocalVideo:s()&&typeof document<"u"&&typeof document.createElement=="function"},i),super(p,i),Object.defineProperties(this,{_workaroundSilentLocalVideo:{value:i.workaroundSilentLocalVideo?l:null},_workaroundSilentLocalVideoCleanup:{value:null,writable:!0},_pipIntersectionObserver:{value:null,writable:!0}}),this._workaroundSilentLocalVideo&&(this._workaroundSilentLocalVideoCleanup=this._workaroundSilentLocalVideo(this,document))}toString(){return`[LocalVideoTrack #${this._instanceId}: ${this.id}]`}_onDocumentPipEnter(){this._log.debug("LocalVideoTrack: Setting up PiP intersection observer"),this._setupPipIntersectionObserver()}_onDocumentPipExit(){this._log.debug("LocalVideoTrack: Cleaning up PiP intersection observer"),this._cleanupPipIntersectionObserver()}_setupPipIntersectionObserver(){!this._pipIntersectionObserver&&this._documentPipWindow&&(this._log.debug("LocalVideoTrack: Creating PiP intersection observer"),this._pipIntersectionObserver=new IntersectionObserver(p=>{p.some(n=>n.isIntersecting)&&(this._log.debug("LocalVideoTrack: Element visible in PiP, ensuring videos are playing"),t._ensureDocumentPipVideosPlaying(this))},{threshold:.25}),this._attachments.forEach(p=>{this._log.debug("LocalVideoTrack: Observing element for PiP visibility"),this._pipIntersectionObserver.observe(p)}))}_cleanupPipIntersectionObserver(){this._pipIntersectionObserver&&(this._log.debug("LocalVideoTrack: Disconnecting PiP intersection observer"),this._pipIntersectionObserver.disconnect(),this._pipIntersectionObserver=null)}attach(){const p=super.attach.apply(this,arguments);return this._pipIntersectionObserver&&(this._log.debug("LocalVideoTrack: Observing newly attached element for PiP visibility"),this._pipIntersectionObserver.observe(p)),p}detach(){const p=super.detach.apply(this,arguments),i=Array.isArray(p)?p:[p];return this._pipIntersectionObserver&&i.forEach(n=>{this._log.debug("LocalVideoTrack: Unobserving detached element from PiP visibility"),this._pipIntersectionObserver.unobserve(n)}),p}_checkIfCanCaptureFrames(){return super._checkIfCanCaptureFrames.call(this,this._trackSender.isPublishing)}_end(){return super._end.apply(this,arguments)}_setSenderMediaStreamTrack(p){const i=this.mediaStreamTrack,n=p?this.processedTrack:i;return this._trackSender.setMediaStreamTrack(n).catch(a=>this._log.warn("setMediaStreamTrack failed on LocalVideoTrack RTCRtpSender",{error:a,mediaStreamTrack:n})).then(()=>{this._unprocessedTrack=p?i:null})}addProcessor(){this._log.debug("Adding VideoProcessor to the LocalVideoTrack");const p=super.addProcessor.apply(this,arguments);return this.processedTrack?(this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the processed MediaStreamTrack",this.processedTrack),this._setSenderMediaStreamTrack(!0),p):this._log.warn("Unable to add a VideoProcessor to the LocalVideoTrack")}removeProcessor(){this._log.debug("Removing VideoProcessor from the LocalVideoTrack");const p=super.removeProcessor.apply(this,arguments);return this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the original MediaStreamTrack"),this._setSenderMediaStreamTrack().then(()=>this._updateElementsMediaStreamTrack()),p}disable(){const p=super.disable.apply(this,arguments);return this.processedTrack&&(this.processedTrack.enabled=!1),p}enable(p=!0){const i=super.enable.apply(this,arguments);return this.processedTrack&&(this.processedTrack.enabled=p,p&&(this._captureFrames(),this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the processed MediaStreamTrack",this.processedTrack),this._setSenderMediaStreamTrack(!0))),i}restart(){this._workaroundSilentLocalVideoCleanup&&(this._workaroundSilentLocalVideoCleanup(),this._workaroundSilentLocalVideoCleanup=null);let p=super.restart.apply(this,arguments);return this.processor&&(p=p.then(()=>this._restartProcessor())),this._workaroundSilentLocalVideo&&p.finally(()=>{this._workaroundSilentLocalVideoCleanup=this._workaroundSilentLocalVideo(this,document)}),p}_restartProcessor(){const p=this.processor,i=Object.assign({},this._processorOptions);return super.removeProcessor.apply(this,[p]),super.addProcessor.apply(this,[p,i]),this._setSenderMediaStreamTrack(!0)}stop(){return this._workaroundSilentLocalVideoCleanup&&(this._workaroundSilentLocalVideoCleanup(),this._workaroundSilentLocalVideoCleanup=null),this._cleanupPipIntersectionObserver(),super.stop.apply(this,arguments)}}function l(_,p){const{_log:i}=_;let{_dummyEl:n,mediaStreamTrack:a}=_;function c(){_.isEnabled&&(i.info("Unmuted, checking silence"),n.play().then(()=>o(n,p)).then(g=>{if(!g){i.info("Non-silent frames detected, so no need to restart");return}return i.warn("Silence detected, restarting"),_._stop(),_._restart()}).catch(g=>{i.warn("Failed to detect silence and restart:",g)}).finally(()=>{n=_._dummyEl,n&&!n.paused&&!_.processedTrack&&n.pause(),a.removeEventListener("unmute",c),a=_.mediaStreamTrack,a.addEventListener?a.addEventListener("unmute",c):a.onunmute=c}))}return a.addEventListener?a.addEventListener("unmute",c):a.onunmute=c,()=>{a.removeEventListener?a.removeEventListener("unmute",c):a.onunmute=null}}return br=r,br}var yr,Qs;function Tl(){if(Qs)return yr;Qs=1;const s=Bn(),o=kl();function u(t,e){const r=new o(t,e);return Object.setPrototypeOf(r,u.prototype),r}return s(u,o),yr=u,yr}var kr,Gs;function Wc(){if(Gs)return kr;Gs=1;const s=$c();class o extends s{constructor(t,e,r,l){super(t,"data"),Object.defineProperties(this,{maxPacketLifeTime:{enumerable:!0,value:e},maxRetransmits:{enumerable:!0,value:r},ordered:{enumerable:!0,value:l}})}}return kr=o,kr}var Tr,Ks;function Sl(){if(Ks)return Tr;Ks=1;const s=Wc(),o=be().makeUUID;class u extends s{constructor(e,r,l){super(o(),e,r,l),Object.defineProperties(this,{_clones:{value:new Set},_dataChannels:{value:new Set}})}_addClone(e){this._clones.add(e)}removeClone(e){this._clones.delete(e)}
4addDataChannel(e){return this._dataChannels.add(e),this}clone(){const e=new u(this.maxPacketLifeTime,this.maxRetransmits,this.ordered);return this._addClone(e),e.once("stopped",()=>this.removeClone(e)),e}removeDataChannel(e){return this._dataChannels.delete(e),this}send(e){return this._dataChannels.forEach(r=>{try{r.send(e)}catch{}}),this._clones.forEach(r=>{try{r.send(e)}catch{}}),this}stop(){this._dataChannels.forEach(e=>e.close()),this._clones.forEach(e=>e.stop()),super.stop()}}return Tr=u,Tr}var Sr,Ys;function wl(){if(Ys)return Sr;Ys=1;const s=Un(),o=Sl();class u extends s{constructor(e){e=Object.assign({DataTrackSender:o,maxPacketLifeTime:null,maxRetransmits:null,ordered:!0},e);const r=e.DataTrackSender,l=new r(e.maxPacketLifeTime,e.maxRetransmits,e.ordered);super(l.id,"data",e),Object.defineProperties(this,{_trackSender:{value:l},id:{enumerable:!0,value:l.id},maxPacketLifeTime:{enumerable:!0,value:e.maxPacketLifeTime},maxRetransmits:{enumerable:!0,value:e.maxRetransmits},ordered:{enumerable:!0,value:e.ordered},reliable:{enumerable:!0,value:e.maxPacketLifeTime===null&&e.maxRetransmits===null}})}send(e){this._trackSender.send(e)}}return Sr=u,Sr}var wr,Js;function Cl(){if(Js)return wr;Js=1;const s=Bn(),o=wl();function u(t){const e=new o(t);return Object.setPrototypeOf(e,u.prototype),e}return s(u,o),wr=u,wr}var Cr,Xs;function nt(){return Xs||(Xs=1,Cr={LocalAudioTrack:_l(),LocalVideoTrack:Tl(),LocalDataTrack:Cl()}),Cr}var Pr,Zs;function Pl(){if(Zs)return Pr;Zs=1;class s{constructor(u){this._telemetry=u}typeChanged(u){this._telemetry.info({group:"network",name:"network-type-changed",payload:{networkType:u}})}informationChanged({downlink:u,downlinkMax:t,effectiveType:e,rtt:r,saveData:l,type:_}){this._telemetry.info({group:"network",name:"network-information-changed",payload:{downlink:u,downlinkMax:t,effectiveType:e,rtt:r,saveData:l,type:_}})}}return Pr=s,Pr}var Er,ea;function El(){if(ea)return Er;ea=1;class s{constructor(u){this._telemetry=u}succeeded(){this._telemetry.info({group:"get-user-media",name:"succeeded"})}denied(){this._telemetry.info({group:"get-user-media",name:"denied"})}failed(u){this._telemetry.info({group:"get-user-media",name:"failed",payload:{name:u.name,message:u.message}})}}return Er=s,Er}var Rr,ta;function Rl(){if(ta)return Rr;ta=1;class s{constructor(u){this._telemetry=u}limitationChanged(u,t){this._telemetry.info({group:"quality",name:"quality-limitation-state-changed",payload:{trackSid:u,qualityLimitationReason:t}})}statsReport(u){this._telemetry.info({group:"quality",name:"stats-report",payload:u})}iceCandidatePair(u){this._telemetry.info({group:"quality",name:"active-ice-candidate-pair",payload:u})}}return Rr=s,Rr}var Lr,ra;function Ll(){if(ra)return Lr;ra=1;class s{constructor(u){this._telemetry=u}stalled(u,t,e,r="video"){this._telemetry.warning({group:"track-warning-raised",name:"track-stalled",payload:{trackSid:u,frameRate:t,threshold:e,trackType:r}})}resumed(u,t,e,r="video"){this._telemetry.info({group:"track-warning-cleared",name:"track-stalled",payload:{trackSid:u,frameRate:t,threshold:e,trackType:r}})}}return Lr=s,Lr}var Or,ia;function Ol(){if(ia)return Or;ia=1;class s{constructor(u){this._telemetry=u}resumed(){this._telemetry.info({group:"application",name:"resumed"})}backgrounded(){this._telemetry.info({group:"application",name:"backgrounded"})}terminated(){this._telemetry.info({group:"application",name:"terminated"})}}return Or=s,Or}var Ir,na;function Il(){if(na)return Ir;na=1;class s{constructor(u){this._telemetry=u}cpuPressureChanged(u){this._telemetry.info({group:"system",name:"cpu-pressure-changed",payload:{resourceType:"cpu",pressure:u}})}}return Ir=s,Ir}var Mr,sa;function Ml(){if(sa)return Mr;sa=1;const{filterObject:s}=be();class o{constructor(t){this._telemetry=t}connectionState(t,e){this._telemetry.debug({group:"pc-connection-state",name:e,payload:{peerConnectionId:t}})}signalingState(t,e){this._telemetry.debug({group:"pc-signaling-state",name:e,payload:{peerConnectionId:t}})}iceGatheringState(t,e){this._telemetry.debug({group:"ice-gathering-state",name:e,payload:{peerConnectionId:t}}
4)}iceConnectionState(t,e){const r=e==="failed"?"error":"debug";this._telemetry[r]({group:"ice-connection-state",name:e,payload:{peerConnectionId:t}})}dtlsTransportState(t,e){const r=e==="failed"?"error":"debug";this._telemetry[r]({group:"dtls-transport-state",name:e,payload:{peerConnectionId:t}})}iceCandidate(t,e,r=!1){this._telemetry.debug({group:"ice-candidate",name:"ice-candidate",payload:Object.assign({peerConnectionId:t,isRemote:r?"true":"false"},this._toIceCandidatePayload(e))})}selectedCandidatePair(t,e){this._telemetry.debug({group:"ice-candidate",name:"selected-ice-candidate-pair",payload:s({peerConnectionId:t,localCandidate:e.local?this._toIceCandidatePayload(e.local):null,remoteCandidate:e.remote?this._toIceCandidatePayload(e.remote):null},null)})}_toIceCandidatePayload(t){var e;const r=(e=t.candidate)===null||e===void 0?void 0:e.match(/network-cost\s+(\d+)/),l=r?parseInt(r[1],10):null;return s({candidateType:t.type,ip:t.address,port:t.port,priority:t.priority,protocol:t.protocol,relatedAddress:t.relatedAddress,relatedPort:t.relatedPort,tcpType:t.tcpType,transportId:t.sdpMid,networkCost:l},null)}}return Mr=o,Mr}var re={},Dr,aa;function Dl(){if(aa)return Dr;aa=1;class s extends Error{constructor(u){const t=[].slice.call(arguments,1);super(...t),Object.setPrototypeOf(this,s.prototype);const e=Error.apply(this,t);e.name="TwilioError",Object.defineProperty(this,"code",{value:u,enumerable:!0}),Object.getOwnPropertyNames(e).forEach(function(r){Object.defineProperty(this,r,{value:e[r],enumerable:!0})},this)}toString(){const u=this.message?`: ${this.message}`:"";return`${this.name} ${this.code}${u}`}}return Dr=s,Dr}var oa;function $e(){if(oa)return re;oa=1;const s=Dl(),o={};re.createTwilioError=function(W,F){return W=typeof W=="number"?W:0,F=typeof F=="string"&&F?F:"Unknown error",o[W]?new o[W]:new s(W,F)};class u extends s{constructor(){super(20101,"Invalid Access Token"),Object.setPrototypeOf(this,u.prototype)}}re.AccessTokenInvalidError=u,Object.defineProperty(o,20101,{value:u});class t extends s{constructor(){super(20102,"Invalid Access Token header"),Object.setPrototypeOf(this,t.prototype)}}re.AccessTokenHeaderInvalidError=t,Object.defineProperty(o,20102,{value:t});class e extends s{constructor(){super(20103,"Invalid Access Token issuer/subject"),Object.setPrototypeOf(this,e.prototype)}}re.AccessTokenIssuerInvalidError=e,Object.defineProperty(o,20103,{value:e});class r extends s{constructor(){super(20104,"Access Token expired or expiration date invalid"),Object.setPrototypeOf(this,r.prototype)}}re.AccessTokenExpiredError=r,Object.defineProperty(o,20104,{value:r});class l extends s{constructor(){super(20105,"Access Token not yet valid"),Object.setPrototypeOf(this,l.prototype)}}re.AccessTokenNotYetValidError=l,Object.defineProperty(o,20105,{value:l});class _ extends s{constructor(){super(20106,"Invalid Access Token grants"),Object.setPrototypeOf(this,_.prototype)}}re.AccessTokenGrantsInvalidError=_,Object.defineProperty(o,20106,{value:_});class p extends s{constructor(){super(20107,"Invalid Access Token signature"),Object.setPrototypeOf(this,p.prototype)}}re.AccessTokenSignatureInvalidError=p,Object.defineProperty(o,20107,{value:p});class i extends s{constructor(){super(53e3,"Signaling connection error"),Object.setPrototypeOf(this,i.prototype)}}re.SignalingConnectionError=i,Object.defineProperty(o,53e3,{value:i});class n extends s{constructor(){super(53001,"Signaling connection disconnected"),Object.setPrototypeOf(this,n.prototype)}}re.SignalingConnectionDisconnectedError=n,Object.defineProperty(o,53001,{value:n});class a extends s{constructor(){super(53002,"Signaling connection timed out"),Object.setPrototypeOf(this,a.prototype)}}re.SignalingConnectionTimeoutError=a,Object.defineProperty(o,53002,{value:a});class c extends s{constructor(){super(53003,"Client received an invalid signaling message"),Object.setPrototypeOf(this,c.prototype)}}re.SignalingIncomingMessageInvalidError=c,Object.defineProperty(o,53003,{value:c});class g extends s{constructor(){super(53004,"Client sent an invalid signaling message"),Object.setPrototypeOf(this,g.prototype)}}re.SignalingOutgoingMessageInvalidError=g,Object.defineProperty(o,53004,{value:g});class m extends s{constructor(){super(53006,"Video server is busy"),Object.setPrototypeOf(this,m.prototype)}}re.SignalingServerBusyError=m,Object.defineProperty(o,53006,{value:m});class b extends s{constructor(){super(53100,"Room name is invali
4d"),Object.setPrototypeOf(this,b.prototype)}}re.RoomNameInvalidError=b,Object.defineProperty(o,53100,{value:b});class d extends s{constructor(){super(53101,"Room name is too long"),Object.setPrototypeOf(this,d.prototype)}}re.RoomNameTooLongError=d,Object.defineProperty(o,53101,{value:d});class h extends s{constructor(){super(53102,"Room name contains invalid characters"),Object.setPrototypeOf(this,h.prototype)}}re.RoomNameCharsInvalidError=h,Object.defineProperty(o,53102,{value:h});class w extends s{constructor(){super(53103,"Unable to create Room"),Object.setPrototypeOf(this,w.prototype)}}re.RoomCreateFailedError=w,Object.defineProperty(o,53103,{value:w});class y extends s{constructor(){super(53104,"Unable to connect to Room"),Object.setPrototypeOf(this,y.prototype)}}re.RoomConnectFailedError=y,Object.defineProperty(o,53104,{value:y});class f extends s{constructor(){super(53105,"Room contains too many Participants"),Object.setPrototypeOf(this,f.prototype)}}re.RoomMaxParticipantsExceededError=f,Object.defineProperty(o,53105,{value:f});class v extends s{constructor(){super(53106,"Room not found"),Object.setPrototypeOf(this,v.prototype)}}re.RoomNotFoundError=v,Object.defineProperty(o,53106,{value:v});class k extends s{constructor(){super(53107,"MaxParticipants is out of range"),Object.setPrototypeOf(this,k.prototype)}}re.RoomMaxParticipantsOutOfRangeError=k,Object.defineProperty(o,53107,{value:k});class T extends s{constructor(){super(53108,"RoomType is not valid"),Object.setPrototypeOf(this,T.prototype)}}re.RoomTypeInvalidError=T,Object.defineProperty(o,53108,{value:T});class I extends s{constructor(){super(53109,"Timeout is out of range"),Object.setPrototypeOf(this,I.prototype)}}re.RoomTimeoutOutOfRangeError=I,Object.defineProperty(o,53109,{value:I});class P extends s{constructor(){super(53110,"StatusCallbackMethod is invalid"),Object.setPrototypeOf(this,P.prototype)}}re.RoomStatusCallbackMethodInvalidError=P,Object.defineProperty(o,53110,{value:P});class R extends s{constructor(){super(53111,"StatusCallback is invalid"),Object.setPrototypeOf(this,R.prototype)}}re.RoomStatusCallbackInvalidError=R,Object.defineProperty(o,53111,{value:R});
4class L extends s{constructor(){super(53112,"Status is invalid"),Object.setPrototypeOf(this,L.prototype)}}re.RoomStatusInvalidError=L,Object.defineProperty(o,53112,{value:L});class M extends s{constructor(){super(53113,"Room exists"),Object.setPrototypeOf(this,M.prototype)}}re.RoomRoomExistsError=M,Object.defineProperty(o,53113,{value:M});class S extends s{constructor(){super(53114,"Room creation parameter(s) incompatible with the Room type"),Object.setPrototypeOf(this,S.prototype)}}re.RoomInvalidParametersError=S,Object.defineProperty(o,53114,{value:S});class A extends s{constructor(){super(53115,"MediaRegion is invalid"),Object.setPrototypeOf(this,A.prototype)}}re.RoomMediaRegionInvalidError=A,Object.defineProperty(o,53115,{value:A});class E extends s{constructor(){super(53116,"There are no media servers available in the MediaRegion"),Object.setPrototypeOf(this,E.prototype)}}re.RoomMediaRegionUnavailableError=E,Object.defineProperty(o,53116,{value:E});class D extends s{constructor(){super(53117,"The subscription operation requested is not supported for the Room type"),Object.setPrototypeOf(this,D.prototype)}}re.RoomSubscriptionOperationNotSupportedError=D,Object.defineProperty(o,53117,{value:D});class O extends s{constructor(){super(53118,"Room completed"),Object.setPrototypeOf(this,O.prototype)}}re.RoomCompletedError=O,Object.defineProperty(o,53118,{value:O});class j extends s{constructor(){super(53124,"The AudioOnly flag is not supported for the Room type"),Object.setPrototypeOf(this,j.prototype)}}re.RoomAudioOnlyFlagNotSupportedError=j,Object.defineProperty(o,53124,{value:j});class U extends s{constructor(){super(53125,"The track kind is not supported by the Room"),Object.setPrototypeOf(this,U.prototype)}}re.RoomTrackKindNotSupportedError=U,Object.defineProperty(o,53125,{value:U});class Q extends s{constructor(){super(53200,"Participant identity is invali
4d"),Object.setPrototypeOf(this,Q.prototype)}}re.ParticipantIdentityInvalidError=Q,Object.defineProperty(o,53200,{value:Q});class K extends s{constructor(){super(53201,"Participant identity is too long"),Object.setPrototypeOf(this,K.prototype)}}re.ParticipantIdentityTooLongError=K,Object.defineProperty(o,53201,{value:K});class N extends s{constructor(){super(53202,"Participant identity contains invalid characters"),Object.setPrototypeOf(this,N.prototype)}}re.ParticipantIdentityCharsInvalidError=N,Object.defineProperty(o,53202,{value:N});class B extends s{constructor(){super(53203,"The maximum number of published tracks allowed in the Room at the same time has been reached"),Object.setPrototypeOf(this,B.prototype)}}re.ParticipantMaxTracksExceededError=B,Object.defineProperty(o,53203,{value:B});class le extends s{constructor(){super(53204,"Participant not found"),Object.setPrototypeOf(this,le.prototype)}}re.ParticipantNotFoundError=le,Object.defineProperty(o,53204,{value:le});class ee extends s{constructor(){super(53205,"Participant disconnected because of duplicate identity"),Object.setPrototypeOf(this,ee.prototype)}}re.ParticipantDuplicateIdentityError=ee,Object.defineProperty(o,53205,{value:ee});class se extends s{constructor(){super(53300,"Track is invalid"),Object.setPrototypeOf(this,se.prototype)}}re.TrackInvalidError=se,Object.defineProperty(o,53300,{value:se});class de extends s{constructor(){super(53301,"Track name is invalid"),Object.setPrototypeOf(this,de.prototype)}}re.TrackNameInvalidError=de,Object.defineProperty(o,53301,{value:de});class he extends s{constructor(){super(53302,"Track name is too long"),Object.setPrototypeOf(this,he.prototype)}}re.TrackNameTooLongError=he,Object.defineProperty(o,53302,{value:he});class me extends s{constructor(){super(53303,"Track name contains invalid characters"),Object.setPrototypeOf(this,me.prototype)}}re.TrackNameCharsInvalidError=me,Object.defineProperty(o,53303,{value:me});class J extends s{constructor(){super(53304,"Track name is duplicated"),Object.setPrototypeOf(this,J.prototype)}}re.TrackNameIsDuplicatedError=J,Object.defineProperty(o,53304,{value:J});class z extends s{constructor(){super(53305,"The server has reached capacity and cannot fulfill this request"),Object.setPrototypeOf(this,z.prototype)}}re.TrackServerTrackCapacityReachedError=z,Object.defineProperty(o,53305,{value:z});class oe extends s{constructor(){super(53400,"Client is unable to create or apply a local media description"),Object.setPrototypeOf(this,oe.prototype)}}re.MediaClientLocalDescFailedError=oe,Object.defineProperty(o,53400,{value:oe});class ae extends s{constructor(){super(53401,"Server is unable to create or apply a local media description"),Object.setPrototypeOf(this,ae.prototype)}}re.MediaServerLocalDescFailedError=ae,Object.defineProperty(o,53401,{value:ae});class ce extends s{constructor(){super(53402,"Client is unable to apply a remote media description"),Object.setPrototypeOf(this,ce.prototype)}}re.MediaClientRemoteDescFailedError=ce,Object.defineProperty(o,53402,{value:ce});class Y extends s{constructor(){super(53403,"Server is unable to apply a remote media description"),Object.setPrototypeOf(this,Y.prototype)}}re.MediaServerRemoteDescFailedError=Y,Object.defineProperty(o,53403,{value:Y});class ye extends s{constructor(){super(53404,"No supported codec"),Object.setPrototypeOf(this,ye.prototype)}}re.MediaNoSupportedCodecError=ye,Object.defineProperty(o,53404,{value:ye});class ue extends s{constructor(){super(53405,"Media connection failed or Media activity ceased"),Object.setPrototypeOf(this,ue.prototype)}}re.MediaConnectionError=ue,Object.defineProperty(o,53405,{value:ue});class Te extends s{constructor(){super(53407,"Media connection failed due to DTLS handshake failure"),Object.setPrototypeOf(this,Te.prototype)}}re.MediaDTLSTransportFailedError=Te,Object.defineProperty(o,53407,{value:Te});class q extends s{constructor(){super(53500,"Unable to acquire configuration"),Object.setPrototypeOf(this,q.prototype)}}re.ConfigurationAcquireFailedError=q,Object.defineProperty(o,53500,{value:q});class $ extends s{constructor(){super(53501,"Unable to acquire TURN credentials"),Object.setPrototypeOf(this,$.prototype)}}return re.ConfigurationAcquireTurnFailedError=$,Object.defineProperty(o,53501,{value:$}),re}var Ar,ca;function Al(){if(ca)return Ar;ca=1;const{MediaConnectionError:s}=$e();class o{constructor(t){this._telemetry=t}reconnecting(t){const e=t instanceof s?"media":"signaling";this._telemetry.info({group:"room",name:"reconnecting",payload:{reason:e}})}reconnected(){this._telemetry.info({group:"room",name:"reconnected"})}disconnected(){this._telemetry.info({group:"room",name:"disconnected"})}}return Ar=o,Ar}var xr,ua;function We(){if(ua)return xr;ua=1;const s=Pl(),o=El(),u=Rl(),t=Ll(),e=Ol(),r=Il(),l=Ml(),_=Al();class p{constructor(){this._publisher=null,this._connectTimestamp=null,this._log=null,this._isConfigured=!1,this.network=new s(this),this.getUserMedia=new o(this),this.qual
4ity=new u(this),this.track=new t(this),this.application=new e(this),this.system=new r(this),this.pc=new l(this),this.room=new _(this)}configure({publisher:n,log:a,connectTimestamp:c}){if(!n||!a||typeof c!="number")throw new Error("Telemetry.configure requires publisher, log, and connectTimestamp");return this._publisher=n,this._log=a,this._connectTimestamp=c,this._isConfigured=!0,this._publisher.on("connected",()=>{this._log.debug("Telemetry publisher connected.")}),this._publisher.on("reconnecting",()=>{this._log.warn("Telemetry publisher reconnecting...")}),this}_emit(n,a,c,g){if(!this._isConfigured)return;const m=Date.now(),b=m-this._connectTimestamp,d=Object.assign({elapsedTime:b,level:c},g||{});if(!this._publisher.publish(n,a,d)){this._log.warn(`Telemetry event "${n}:${a}" dropped - publisher unavailable.`);return}const w=Object.assign({elapsedTime:b,group:n,level:c,name:a,timestamp:m},g?{payload:g}:{}),y={debug:"debug",error:"error",info:"info",warning:"warn"}[c];this._log[y]("telemetry",w)}info({group:n,name:a,payload:c}){return this._emit(n,a,"info",c)}warning({group:n,name:a,payload:c}){return this._emit(n,a,"warning",c)}error({group:n,name:a,payload:c}){return this._emit(n,a,"error",c)}debug({group:n,name:a,payload:c}){return this._emit(n,a,"debug",c)}}return xr=new p,xr}var la;function xl(){if(la)return Tt;la=1,Object.defineProperty(Tt,"__esModule",{value:!0}),Tt.createLocalTracks=m;const s=Qe,o=ll(),{buildLogLevels:u}=be(),{getUserMedia:t}=Fn(),{LocalAudioTrack:e,LocalDataTrack:r,LocalVideoTrack:l}=nt(),_=xe(),{DEFAULT_LOG_LEVEL:p,DEFAULT_LOGGER_NAME:i,typeErrors:{INVALID_VALUE:n}}=Se(),a=jc(),c=We();let g=0;function m(b){return s.__awaiter(this,void 0,void 0,function*(){const d=!(b&&("audio"in b||"video"in b)),h=Object.assign({audio:d,getUserMedia:t,loggerName:i,logLevel:p,LocalAudioTrack:e,LocalDataTrack:r,LocalVideoTrack:l,MediaStreamTrack,Log:_,video:d},b),w=`[createLocalTracks #${++g}]`,y=u(h.logLevel),f=new h.Log("default",w,y,h.loggerName),v=Object.assign({log:f},h);if(delete v.name,h.audio===!1&&h.video===!1)return f.info("Neither audio nor video requested, so returning empty LocalTracks"),[];if(h.tracks)return f.info("Adding user-provided LocalTracks"),f.debug("LocalTracks:",h.tracks),h.tracks;const k={audio:typeof h.audio=="object"&&h.audio.name?{name:h.audio.name}:{defaultDeviceCaptureMode:"auto"},video:typeof h.video=="object"&&h.video.name?{name:h.video.name}:{}};k.audio.isCreatedByCreateLocalTracks=!0,k.video.isCreatedByCreateLocalTracks=!0;let T;if(typeof h.audio=="object")if(typeof h.audio.workaroundWebKitBug1208516=="boolean"&&(k.audio.workaroundWebKitBug1208516=h.audio.workaroundWebKitBug1208516),"noiseCancellationOptions"in h.audio&&(T=h.audio.noiseCancellationOptions,delete h.audio.noiseCancellationOptions),!("defaultDeviceCaptureMode"in h.audio))k.audio.defaultDeviceCaptureMode="auto";else{if(["auto","manual"].every(R=>R!==h.audio.defaultDeviceCaptureMode))throw n("CreateLocalAudioTrackOptions.defaultDeviceCaptureMode",["auto","manual"]);k.audio.defaultDeviceCaptureMode=h.audio.defaultDeviceCaptureMode}typeof h.video=="object"&&typeof h.video.workaroundWebKitBug1208516=="boolean"&&(k.video.workaroundWebKitBug1208516=h.video.workaroundWebKitBug1208516),typeof h.audio=="object"&&delete h.audio.name,typeof h.video=="object"&&delete h.video.name;const I={audio:h.audio,video:h.video},P=typeof h.audio=="object"&&h.audio.workaroundWebKitBug180748;try{const R=yield P?a(f,h.getUserMedia,I):h.getUserMedia(I);c.getUserMedia.succeeded();const L=[...R.getAudioTracks(),...R.getVideoTracks()];return f.info("Call to getUserMedia successful; got tracks:",L),yield Promise.all(L.map(M=>s.__awaiter(this,void 0,void 0,function*(){if(M.kind==="audio"&&T){const{cleanTrack:S,noiseCancellation:A}=yield(0,o.applyNoiseCancellation)(M,T,f);return new v.LocalAudioTrack(S,Object.assign(Object.assign(Object.assign({},k.audio),v),{noiseCancellation:A}))}else if(M.kind==="audio")return new v.LocalAudioTrack(M,Object.assign(Object.assign({},k.audio),v));return new v.LocalVideoTrack(M,Object.assign(Object.assign({},k.video),v))})))}catch(R){throw R.name==="NotAllowedError"||R.name==="PermissionDeniedError"?c.getUserMedia.denied():c.getUserMedia.failed(R),f.warn("Call to getUserMedia failed:",R),R}})}return Tt}var rt={},ft={},da;function ql(){if(da)return ft;
4da=1,Object.defineProperty(ft,"__esModule",{value:!0}),ft.Timer=void 0;class s{constructor(){this._end=void 0,this.start()}start(){return this._start=Date.now(),this}stop(){return this._end=Date.now(),this}getTimeMeasurement(){return{start:this._start,end:this._end,duration:this._end===void 0?void 0:this._end-this._start}}}return ft.Timer=s,ft}var pt={},ha;function jl(){if(ha)return pt;ha=1,Object.defineProperty(pt,"__esModule",{value:!0}),pt.calculateMOS=o,pt.mosToScore=u;const s=94.768;function o(t,e,r){const l=t+e*2+10;let _=0;switch(!0){case l<160:_=s-l/40;break;case l<1e3:_=s-(l-120)/10;break}switch(!0){case r<=_/2.5:_=Math.max(_-r*2.5,6.52);break;default:_=0;break}return 1+.035*_+7e-6*_*(_-60)*(100-_)}function u(t){let e=0;return t?t>4.2?e=5:t>4?e=4:t>3.6?e=3:t>3?e=2:e=1:e=0,e}return pt}var Pt={},fa;function Nl(){if(fa)return Pt;fa=1,Object.defineProperty(Pt,"__esModule",{value:!0}),Pt.getCombinedConnectionStats=u;const s=Qe;function o(r,l,_,p){let i=[];return r.forEach(n=>{(p.length===0||p.includes(n.type))&&(_.length===0||_.includes(n.kind))&&typeof n[l]=="number"&&i.push(n[l])}),i}function u(r){return s.__awaiter(this,arguments,void 0,function*({publisher:l,subscriber:_}){const[p,i]=yield Promise.all([l,_].map(k=>k.getStats())),n=o(i,"timestamp",["audio"],["inbound-rtp"]),a=n.length>0?n[0]:0,c=o(i,"jitter",["audio"],["inbound-rtp"]).reduce((k,T)=>Math.max(k,T),0),g=o(i,"packetsReceived",["audio","video"],["inbound-rtp"]).reduce((k,T)=>k+T,0),m=o(i,"packetsLost",["audio","video"],["inbound-rtp"]).reduce((k,T)=>k+T,0),b=o(p,"roundTripTime",["audio","video"],["remote-inbound-rtp"]).reduce((k,T)=>Math.max(k,T),0),h=(o(i,"currentRoundTripTime",[],["candidate-pair"]).reduce((k,T)=>Math.max(k,T),0)||b)*1e3,w=o(p,"bytesSent",[],["candidate-pair"]).reduce((k,T)=>k+T,0),y=o(i,"bytesReceived",[],["candidate-pair"]).reduce((k,T)=>k+T,0),f=e(i),v=[];return i.forEach(k=>{(k.type==="local-candidate"||k.type==="remote-candidate")&&v.push(t(k))}),{timestamp:a,jitter:c,packets:g,packetsLost:m,roundTripTime:h,bytesSent:w,bytesReceived:y,selectedIceCandidatePairStats:f,iceCandidateStats:v}})}function t(r){return[{key:"transportId",type:"string"},{key:"candidateType",type:"string"},{key:"port",altKeys:["portNumber"],type:"number"},{key:"address",altKeys:["ip","ipAddress"],type:"string"},{key:"priority",type:"number"},{key:"protocol",altKeys:["transport"],type:"string"},{key:"url",type:"string"},{key:"relayProtocol",type:"string"}].reduce(function(_,p){let i=[p.key];p.altKeys&&(i=i.concat(p.altKeys));var n=i.find(a=>a in r);return n&&typeof r[n]===p.type&&(_[p.key]=r[n]),_},{})}function e(r){let l=null;const _=[];r.forEach(c=>{c.type==="transport"&&c.selectedCandidatePairId?l=c.selectedCandidatePairId:c.type==="candidate-pair"&&_.push(c)});const p=_.find(c=>c.selected||l&&c.id===l);if(!p)return null;const i=p,n=r.get(i.localCandidateId),a=r.get(i.remoteCandidateId);return!n||!a?null:{localCandidate:t(n),remoteCandidate:t(a)}}return Pt}var Et={},qr,pa;function st(){if(pa)return qr;pa=1;const s=Le().EventEmitter,o=be();class u extends s{constructor(n,a){super();let c=null,g=n;a=_(a),Object.defineProperties(this,{_lock:{get(){return c},set(m){c=m}},_reachableStates:{value:r(a)},_state:{get(){return g},set(m){g=m}},_states:{value:a},_whenDeferreds:{value:new Set},isLocked:{enumerable:!0,get(){return c!==null}},state:{enumerable:!0,get(){return g}}}),this.on("stateChanged",m=>{this._whenDeferreds.forEach(b=>{b.when(m,b.resolve,b.reject)})})}_whenPromise(n){if(typeof n!="function")return Promise.reject(new Error("when() executor must be a function"));const a=o.defer();return a.when=n,this._whenDeferreds.add(a),a.promise.then(c=>(this._whenDeferreds.delete(a),c),c=>{throw this._whenDeferreds.delete(a),c})}bracket(n,a){let c;const g=this;function m(b){if(g.hasLock(c)&&g.releaseLockCompletely(c),b)throw b}return this.takeLock(n).then(function(d){return c=d,a(c)}).then(function(d){return m(),d},m)}hasLock(n){return this._lock===n}preempt(n,a,c){if(!t(this._states,this.state,n))throw new Error(`Cannot transition from "${this.state}" to "${n}"`);let g;this.isLocked&&(g=this._lock,this._lock=null);let m=null;a&&(m=this.takeLockSync(a));const b=m?null:this.takeLockSync("preemption");return this.transition(n,m||b,c),g&&g.resolve(),b&&this.releaseLock(b),m}releaseLock(n){if(this.isLocked){if(!this.hasLock(n))throw new Error(`Could not release the lock for ${n.name} because ${this._lock.name} has the lock`)}else throw new Error(`Could not release the lock for ${n.name} because the StateMachine is not locked`);n.depth===0?(this._lock=null,n.resolve()):n.depth--}releaseLockCompletely(n){if(this.isLocked){if(!this.hasLock(n))throw new Error(`Could not release the lock for ${n.name} because ${this._lock.name} has the lock`)}else throw new Error(`Could not release the lock for ${n.name} because the StateMachine is not locked`);n.depth=0,this._lock=null,n.resolve()}takeLock(n){if(typeof n=="object"){const g=n;return new Promise(m=>{m(this.takeLockSync(g))})}const a=n;if(this.isLocked){var c=this.takeLock.bind(this,a);return this._lock.promise.then(c)}return Promise.resolve(this.takeLockSync(a))}takeLockSync(n){const a=typeof n=="string"?null:n,c=a?a.name:n;if(a&&!this.hasLock(a)||!a&&this.isLocked)throw new Error(`Could not take the lock for ${c} because the lock for ${this._lock.name} was not released`);if(a)return a.depth++,a;const g=e(c);return this._lock=g,g}transition(n,a,c){if(c=c||[],this.isLocked)if(a){if(!this.hasLock(a))throw new Error(`Could not transition using the key for ${a.name} because ${this._lock.name} has the lock`)}else throw new Error("You must provide the key in order to transition");else if(a)throw new Error(`Key provided for ${a.name}, but the StateMachine was not locked (possibly due to preemption)`);if(!t(this._states,this.state,n))throw new Error(`Cannot transition from "${this.state}" to "${n}"`);
4this._state=n,this.emit(...["stateChanged",n].concat(c))}tryTransition(n,a,c){try{this.transition(n,a,c)}catch{return!1}return!0}when(n){return this.state===n?Promise.resolve(this):t(this._reachableStates,this.state,n)?this._whenPromise((a,c,g)=>{a===n?c(this):t(this._reachableStates,a,n)||g(p(a,n))}):Promise.reject(p(this.state,n))}}function t(i,n,a){return i.get(n).has(a)}function e(i){const n=o.defer();return n.name=i,n.depth=0,n}function r(i){return Array.from(i.keys()).reduce((n,a)=>n.set(a,l(i,a)),new Map)}function l(i,n,a){return a=a||new Set,i.get(n).forEach(c=>{a.has(c)||(a.add(c),l(i,c,a).forEach(a.add,a))}),a}function _(i){const n=new Map;for(const a in i)n.set(a,new Set(i[a]));return n}function p(i,n){return new Error(`"${n}" cannot be reached from "${i}"`)}return qr=u,qr}var jr,ma;function $l(){if(ma)return jr;ma=1;class s{constructor(u,t){t=Object.assign({navigator,window},t);const e=t.navigator,r=e.connection||{type:null};let l=r.type;const{_events:_,_listener:p,_target:i}=r.type?{_events:{value:["change","typechange"]},_listener:{value:()=>{const n=l!==this.type&&this.isOnline;l=this.type,n&&u()}},_target:{value:r}}:{_events:{value:["online"]},_listener:{value:u},_target:{value:t.window}};Object.defineProperties(this,{isOnline:{enumerable:!0,get(){return typeof e.onLine=="boolean"?e.onLine:!0}},type:{enumerable:!0,get(){return r.type||null}},_listener:p,_events:_,_target:i})}start(){this._events.forEach(u=>{this._target.addEventListener(u,this._listener)})}stop(){this._events.forEach(u=>{this._target.removeEventListener(u,this._listener)})}}return jr=s,jr}var Nr,ga;function Ke(){if(ga)return Nr;ga=1;class s{constructor(u,t,e=!0){Object.defineProperties(this,{_delay:{value:t,writable:!0},_fn:{value:u},_timeout:{value:null,writable:!0}}),e&&this.start()}get delay(){return this._delay}get isSet(){return!!this._timeout}setDelay(u){this._delay=u}start(){this.isSet||(this._timeout=setTimeout(()=>{const u=this._fn;this.clear(),u()},this._delay))}clear(){clearTimeout(this._timeout),this._timeout=null}reset(){this.clear(),this.start()}}return Nr=s,Nr}var $r,va;function Hc(){return va||(va=1,$r=WebSocket),$r}var Vr,_a;function zc(){if(_a)return Vr;_a=1;const s=st(),{buildLogLevels:o,makeUUID:u}=be(),t=xe(),e=$l(),r=Ke();let l=0;const _={closed:[],connecting:["closed","open","waiting"],early:["closed","connecting"],open:["closed"],waiting:["closed","connecting","early","open"]},p={closed:"close",open:"open",waiting:"waiting"},i=2,n=3,a=3,c=5e3,g=15e3,m=5e3,b=200,d=1e3,h=3e3,w=3001,y=3002,f=3003,v=3004,k=3005,T=3006,I=3007,P=globalThis,R=P.WebSocket?P.WebSocket:Hc(),L={BUSY:"busy",FAILED:"failed",LOCAL:"local",REMOTE:"remote",TIMEOUT:"timeout"},M=new Map([[h,L.TIMEOUT],[w,L.TIMEOUT],[y,L.FAILED],[f,L.FAILED],[v,L.TIMEOUT],[T,L.BUSY],[I,L.TIMEOUT]]);class S extends s{constructor(E,D){super("early",_),D=Object.assign({helloBody:null,maxConsecutiveFailedHellos:a,maxConsecutiveMissedHeartbeats:n,requestedHeartbeatTimeout:c,openTimeout:g,welcomeTimeout:m,Log:t,WebSocket:R},D);const O=o(D.logLevel),j=new D.Log("default",this,O,D.loggerName),U=D.networkMonitor?new e(()=>{const{type:K}=U,N=`Network changed${K?` to ${K}`:""}`;j.debug(N),this._close({code:v,reason:N})}):null;Object.defineProperties(this,{_busyWaitTimeout:{value:null,writable:!0},_consecutiveHeartbeatsMissed:{value:0,writable:!0},_cookie:{value:null,writable:!0},_eventObserver:{value:D.eventObserver},_heartbeatTimeout:{value:null,writable:!0},_hellosLeft:{value:D.maxConsecutiveFailedHellos,writable:!0},_instanceId:{value:++l},_log:{value:j},_messageQueue:{value:[]},_networkMonitor:{value:U},_options:{value:D},_openTimeout:{value:null,writable:!0},_sendHeartbeatTimeout:{value:null,writable:!0},_serverUrl:{value:E},_welcomeTimeout:{value:null,writable:!0},_ws:{value:null,writable:!0}});const Q={connecting:"info",early:"info",open:"info",waiting:"warning",closed:"info"};this.on("stateChanged",(K,...N)=>{K in p&&this.emit(p[K],...N);const B={name:K,group:"signaling",level:Q[this.state]};if(K==="closed"){const[le]=N;B.payload={reason:le},B.level=le===L.LOCAL?"info":"error"}this._eventObserver.emit("event",B)}),this._eventObserver.emit("event",{name:this.state,group:"signaling",level:Q[this.state]}),this._connect()}toString(){return`[TwilioConnection #${this._instanceId}: ${this._ws.url}]`}_close({code:E,reason:D}){if(this.state==="closed")return;this._openTimeout&&this._openTimeout.clear(),this._welcomeTimeout&&this._welcomeTimeout.clear(),this._heartbeatTimeout&&this._heartbeatTimeout.clear(),this._sendHeartbeatTimeout&&this._sendHeartbeatTimeout.clear(),this._networkMonitor&&this._networkMonitor.stop(),this._busyWaitTimeout&&E!==k&&this._busyWaitTimeout.clear(),this._messageQueue.splice(0);const O=this._log;E===d?(O.debug("Closed"),this.transition("closed",null,[L.LOCAL])):(O.warn(`Closed: ${E} - ${D}`),E!==k&&this.transition("closed",null,[M.get(E)||L.REMOTE]));const{readyState:j}=this._ws,{WebSocket:U}=this._options;j!==U.CLOSING&&j!==U.CLOSED&&this._ws.close(E,D)}_connect(){const E=this._log;if(this.state==="waiting")this.transition("early");else if(this.state!=="early"){E.warn(`Unexpected state "${this.state}" for connecting to the TCMP server.`);return}this._ws=new this._options.WebSocket(this._serverUrl);const D=this._ws;E.debug("Created a new WebSocket:",D),D.addEventListener("close",j=>this._close(j));const{openTimeout:O}=this._options;this._openTimeout=new r(()=>{const j=`Failed to open in ${O} ms`;this._close({code:I,reason:j})},O),D.addEventListener("open",()=>{E.debug("WebSocket opened:",D),this._openTimeout.clear(),this._startHandshake(),this._networkMonitor&&this._networkMonitor.start()}),D.addEventListener("message",j=>{E.debug(`Incoming: ${j.data}`);try{j=JSON.parse(j.data)}
4catch(U){this.emit("error",U);return}switch(j.type){case"bad":this._handleBad(j);break;case"busy":this._handleBusy(j);break;case"bye":break;case"msg":this._handleMessage(j);case"heartbeat":this._handleHeartbeat();break;case"welcome":this._handleWelcome(j);break;default:this._log.debug(`Unknown message type: ${j.type}`),this.emit("error",new Error(`Unknown message type: ${j.type}`));break}})}_handleBad({reason:E}){const D=this._log;if(!["connecting","open"].includes(this.state)){D.warn(`Unexpected state "${this.state}" for handling a "bad" message from the TCMP server.`);return}if(this.state==="connecting"){D.warn(`Closing: ${y} - ${E}`),this._close({code:y,reason:E});return}D.debug(`Error: ${E}`),this.emit("error",new Error(E))}_handleBusy({cookie:E,keepAlive:D,retryAfter:O}){const j=this._log;if(!["connecting","waiting"].includes(this.state)){j.warn(`Unexpected state "${this.state}" for handling a "busy" message from the TCMP server.`);return}this._busyWaitTimeout&&this._busyWaitTimeout.clear(),this._welcomeTimeout&&this._welcomeTimeout.clear();const U=O<0?'Received terminal "busy" message':`Received "busy" message, retrying after ${O} ms`;if(O<0){j.warn(`Closing: ${T} - ${U}`),this._close({code:T,reason:U});return}const{maxConsecutiveFailedHellos:Q}=this._options;this._hellosLeft=Q,this._cookie=E||null,D?(j.warn(U),this._busyWaitTimeout=new r(()=>this._startHandshake(),O)):(j.warn(`Closing: ${k} - ${U}`),this._close({code:k,reason:U}),this._busyWaitTimeout=new r(()=>this._connect(),O)),this.transition("waiting",null,[D,O])}_handleHeartbeat(){if(this.state!=="open"){this._log.warn(`Unexpected state "${this.state}" for handling a "heartbeat" message from the TCMP server.`);return}this._heartbeatTimeout.reset()}_handleHeartbeatTimeout(){if(this.state!=="open")return;const E=this._log,{maxConsecutiveMissedHeartbeats:D}=this._options;E.debug(`Consecutive heartbeats missed: ${D}`);const O=`Missed ${D} "heartbeat" messages`;E.warn(`Closing: ${w} - ${O}`),this._close({code:w,reason:O})}_handleMessage({body:E}){if(this.state!=="open"){this._log.warn(`Unexpected state "${this.state}" for handling a "msg" message from the TCMP server.`);return}this.emit("message",E)}_handleWelcome({negotiatedTimeout:E}){const D=this._log;if(!["connecting","waiting"].includes(this.state)){D.warn(`Unexpected state "${this.state}" for handling a "welcome" message from the TCMP server.`);return}this.state==="waiting"&&(D.debug('Received "welcome" message, no need to retry connection.'),this._busyWaitTimeout.clear());const{maxConsecutiveMissedHeartbeats:O}=this._options,j=E*O,U=E-b;this._welcomeTimeout.clear(),this._heartbeatTimeout=new r(()=>this._handleHeartbeatTimeout(),j),this._messageQueue.splice(0).forEach(Q=>this._send(Q)),this._sendHeartbeatTimeout=new r(()=>this._sendHeartbeat(),U),this.transition("open")}_handleWelcomeTimeout(){if(this.state!=="connecting")return;const E=this._log;if(this._hellosLeft<=0){const O="All handshake attempts failed";E.warn(`Closing: ${h} - ${O}`),this._close({code:h,reason:O});return}const{maxConsecutiveFailedHellos:D}=this._options;E.warn(`Handshake attempt ${D-this._hellosLeft} failed`),this._startHandshake()}_send(E){const{readyState:D}=this._ws,{WebSocket:O}=this._options;if(D===O.OPEN){const j=JSON.stringify(E);this._log.debug(`Outgoing: ${j}`);try{this._ws.send(j),this._sendHeartbeatTimeout&&this._sendHeartbeatTimeout.reset()}catch{const Q="Failed to send message";this._log.warn(`Closing: ${f} - ${Q}`),this._close({code:f,reason:Q})}}}_sendHeartbeat(){this.state!=="closed"&&this._send({type:"heartbeat"})}_sendHello(){const{helloBody:E,requestedHeartbeatTimeout:D}=this._options,O={id:u(),timeout:D,type:"hello",version:i};this._cookie&&(O.cookie=this._cookie),E&&(O.body=E),this._send(O)}_sendOrEnqueue(E){if(this.state==="closed")return;(this.state==="open"?O=>this._send(O):O=>this._messageQueue.push(O))(E)}_startHandshake(){if(["early","waiting"].includes(this.state)&&this.transition("connecting"),this.state!=="connecting")return;this._hellosLeft--,this._sendHello();const{welcomeTimeout:E}=this._options;this._welcomeTimeout=new r(()=>this._handleWelcomeTimeout(),E)}close(){this.state!=="closed"&&(this._sendOrEnqueue({type:"bye"}),this._close({code:d,reason:"Normal"}))}sendMessage(E){this._sendOrEnqueue({body:E,type:"msg"})}}return S.CloseReason=L,Vr=S,Vr}var ba;
4function Vl(){if(ba)return Et;ba=1,Object.defineProperty(Et,"__esModule",{value:!0}),Et.getTurnCredentials=r;const s=zc(),{ICE_VERSION:o}=Se(),{createTwilioError:u,SignalingConnectionError:t}=$e(),e=Le();function r(l,_){return new Promise((p,i)=>{const a={networkMonitor:null,eventObserver:new e.EventEmitter,helloBody:{edge:"roaming",preflight:!0,token:l,type:"ice",version:o}},c=new s(_,a);let g=!1;c.once("close",()=>{g||(g=!0,i(new t))}),c.on("message",m=>{const{code:b,message:d,ice_servers:h,type:w}=m;(w==="iced"||w==="error")&&!g&&(g=!0,w==="iced"?p(h):i(u(b,d)),c.close())})})}return Et}var Rt={},ya;function Fl(){if(ya)return Rt;ya=1,Object.defineProperty(Rt,"__esModule",{value:!0}),Rt.makeStat=s;function s(o){if(o&&o.length){const u=Math.min(...o),t=Math.max(...o),e=o.reduce((r,l)=>r+l,0)/o.length;return{min:u,max:t,average:e}}return null}return Rt}var Lt={},ka;function Bl(){if(ka)return Lt;ka=1,Object.defineProperty(Lt,"__esModule",{value:!0}),Lt.syntheticAudio=s;function s(){const o=gt(),u={},t=o.getOrCreate(u),e=t.createOscillator(),r=e.connect(t.createMediaStreamDestination());e.start();const l=r.stream.getAudioTracks()[0],_=l.stop;return l.stop=()=>{_.call(l),o.release(u)},l}return Lt}var Ot={},Ta;function Ul(){if(Ta)return Ot;Ta=1,Object.defineProperty(Ot,"__esModule",{value:!0}),Ot.syntheticVideo=s;function s({width:o=640,height:u=480}={}){const t=Object.assign(document.createElement("canvas"),{width:o,height:u});let e=t.getContext("2d");e.fillStyle="green",e.fillRect(0,0,t.width,t.height);let r=!1;requestAnimationFrame(function i(){if(!r){const n=Math.round(Math.random()*255),a=Math.round(Math.random()*255),c=Math.round(Math.random()*255),g=Math.round(Math.random()*255);e.fillStyle=`rgba(${n}, ${a}, ${c}, ${g})`,e.fillRect(Math.random()*o,Math.random()*u,50,50),requestAnimationFrame(i)}});const _=t.captureStream(30).getTracks()[0],p=_.stop;return _.stop=()=>{r=!0,p.call(_)},_}return Ot}var Fr,Sa;function Qc(){if(Sa)return Fr;Sa=1;class s{constructor(){Object.defineProperties(this,{_samples:{value:[{denominator:0,numerator:0},{denominator:0,numerator:0}]}})}get(){const{_samples:u}=this,t=u[1].denominator-u[0].denominator||1/0;return(u[1].numerator-u[0].numerator)/t}putSample(u,t){const{_samples:e}=this;e.shift(),e.push({denominator:t,numerator:u})}}return Fr=s,Fr}var Br,wa;function Gc(){if(wa)return Br;wa=1;const{EventEmitter:s}=Le(),o=["signaling","room","media","quality","video-processor","preflight"],u=["debug","error","info","warning"];class t extends s{constructor(r,l,_,p=null){super(),this.on("event",({name:i,group:n,level:a,payload:c})=>{if(typeof i!="string")throw _.error("Unexpected name: ",i),new Error("Unexpected name: ",i);if(!o.includes(n))throw _.error("Unexpected group: ",n),new Error("Unexpected group: ",n);if(!u.includes(a))throw _.error("Unexpected level: ",a),new Error("Unexpected level: ",a);const g=Date.now(),m=g-l,b=Object.assign({elapsedTime:m,level:a},c||{});r.publish(n,i,b);const d=Object.assign({elapsedTime:m,group:n,level:a,name:i,timestamp:g},c?{payload:c}:{}),h={debug:"debug",error:"error",info:"info",warning:"warn"}[a];_[h]("event",d),p&&n==="signaling"&&p.emit("event",d)})}}return Br=t,Br}var Ur,Ca;function Kc(){if(Ca)return Ur;Ca=1;const s=Le().EventEmitter,{getUserAgent:o}=be(),u=5,t=50,e=1e3,r=globalThis,l=r.WebSocket?r.WebSocket:Hc(),{hardwareDevicePublisheriPad:_,hardwareDevicePublisheriPhone:p}=Se(),i=be(),n=Ge();class a extends s{constructor(h,w,y,f,v,k){super(),k=Object.assign({gateway:`${g(f,v)}/v1/VideoEvents`,maxReconnectAttempts:u,reconnectIntervalMs:t,userAgent:o(),WebSocket:l},k),Object.defineProperties(this,{_connectTimestamp:{value:0,writable:!0},_eventQueue:{value:[]},_readyToConnect:{value:i.defer()},_reconnectAttemptsLeft:{value:k.maxReconnectAttempts,writable:!0},_ws:{value:null,writable:!0},_WebSocket:{value:k.WebSocket}}),this._readyToConnect.promise.then(({roomSid:T,participantSid:I})=>{const P=this;this.on("disconnected",function R(L){if(P._session=null,L&&P._reconnectAttemptsLeft>0){P.emit("reconnecting"),b(P,h,w,y,T,I,k);return}P.removeListener("disconnected",R)}
4),c(this,h,w,y,T,I,k)}).catch(()=>{})}connect(h,w){this._readyToConnect.resolve({roomSid:h,participantSid:w})}_publish(h){h.session=this._session,this._ws.send(JSON.stringify(h))}disconnect(){if(this._ws===null||this._ws.readyState===this._WebSocket.CLOSING||this._ws.readyState===this._WebSocket.CLOSED)return!1;try{this._ws.close()}catch{}return this.emit("disconnected"),!0}publish(h,w,y){return this._ws!==null&&(this._ws.readyState===this._WebSocket.CLOSING||this._ws.readyState===this._WebSocket.CLOSED)?!1:((typeof this._session=="string"?this._publish.bind(this):this._eventQueue.push.bind(this._eventQueue))({group:h,name:w,payload:y,timestamp:Date.now(),type:"event",version:1}),!0)}}function c(d,h,w,y,f,v,k){d._connectTimestamp=Date.now(),d._reconnectAttemptsLeft--,d._ws=new k.WebSocket(k.gateway);const T=d._ws;T.addEventListener("close",I=>{if(I.code===e){d.emit("disconnected");return}d.emit("disconnected",new Error(`WebSocket Error ${I.code}: ${I.reason}`))}),T.addEventListener("message",I=>{m(d,JSON.parse(I.data),k)}),T.addEventListener("open",()=>{const I={type:"connect",token:h,version:1};I.publisher={name:w,sdkVersion:y,userAgent:k.userAgent,participantSid:v,roomSid:f},n.isIpad()?I.publisher=Object.assign(Object.assign({},I.publisher),_):n.isIphone()&&(I.publisher=Object.assign(Object.assign({},I.publisher),p)),T.send(JSON.stringify(I))})}function g(d,h){return d==="prod"?`wss://sdkgw.${h}.twilio.com`:`wss://sdkgw.${d}-${h}.twilio.com`}function m(d,h,w){switch(h.type){case"connected":d._session=h.session,d._reconnectAttemptsLeft=w.maxReconnectAttempts,d._eventQueue.splice(0).forEach(d._publish,d),d.emit("connected");break;case"error":d._ws.close(),d.emit("disconnected",new Error(h.message));break}}function b(d,h,w,y,f,v,k){const T=Date.now()-d._connectTimestamp,I=k.reconnectIntervalMs-T;if(I>0){setTimeout(()=>{c(d,h,w,y,f,v,k)},I);return}c(d,h,w,y,f,v,k)}return Ur=a,Ur}var Pa;function Wl(){if(Pa)return rt;Pa=1,Object.defineProperty(rt,"__esModule",{value:!0}),rt.PreflightTest=void 0,rt.runPreflight=L;const s=Qe,o=Se(),u=ql(),t=jl(),e=Nl(),r=Vl(),l=Fl(),_=Bl(),p=Ul(),i=be(),{WS_SERVER:n}=Se(),a=xe(),c=vt(),g=Qc(),m=Gc(),b=Kc(),{createSID:d,sessionSID:h}=Rc(),{SignalingConnectionTimeoutError:w,MediaConnectionError:y}=$e(),f=1e3,v=10*f,k={mediaAcquired:"mediaAcquired",connected:"connected",mediaSubscribed:"mediaSubscribed",mediaStarted:"mediaStarted",dtlsConnected:"dtlsConnected",peerConnectionConnected:"peerConnectionConnected",iceConnected:"iceConnected"};function T(M){return M!==null&&typeof M<"u"}let I=0;class P extends c{constructor(S,A){super(),this._testTiming=new u.Timer,this._dtlsTiming=new u.Timer,this._iceTiming=new u.Timer,this._peerConnectionTiming=new u.Timer,this._mediaTiming=new u.Timer,this._connectTiming=new u.Timer,this._sentBytesMovingAverage=new g,this._packetLossMovingAverage=new g,this._progressEvents=[],this._receivedBytesMovingAverage=new g;const E=A,{environment:D="prod",region:O="gll",duration:j=v}=E,U=E.wsServer||n(D,O);this._log=new a("default",this,o.DEFAULT_LOG_LEVEL,o.DEFAULT_LOGGER_NAME),this._testDuration=j,this._instanceId=I++,this._testTiming.start(),this._runPreflightTest(S,D,U)}toString(){return`[Preflight #${this._instanceId}]`}stop(){this._stopped=!0}_generatePreflightReport(S){return this._testTiming.stop(),{testTiming:this._testTiming.getTimeMeasurement(),networkTiming:{dtls:this._dtlsTiming.getTimeMeasurement(),ice:this._iceTiming.getTimeMeasurement(),peerConnection:this._peerConnectionTiming.getTimeMeasurement(),connect:this._connectTiming.getTimeMeasurement(),media:this._mediaTiming.getTimeMeasurement()},stats:{jitter:(0,l.makeStat)(S==null?void 0:S.jitter),rtt:(0,l.makeStat)(S==null?void 0:S.rtt),packetLoss:(0,l.makeStat)(S==null?void 0:S.packetLoss)},selectedIceCandidatePairStats:S?S.selectedIceCandidatePairStats:null,iceCandidateStats:S?S.iceCandidateStats:[],progressEvents:this._progressEvents,mos:(0,l.makeStat)(S==null?void 0:S.mos)}}_executePreflightStep(S,A,E){return s.__awaiter(this,void 0,void 0,function*(){this._log.debug("Executing step: ",S);const D=this._testDuration+10*f;if(this._stopped)throw new Error("stopped");const O=Promise.resolve().then(A);let j=null;const U=new Promise((Q,K)=>{j=setTimeout(()=>{K(E||new Error(`${S} timeout.`))},D)});try{return yield Promise.race([U,O])}finally{j!==null&&clearTimeout(j)}})}_collectNetworkTimings(S){return new Promise(A=>{let E;S.addEventListener("iceconnectionstatechange",()=>{S.iceConnectionState==="checking"&&this._iceTiming.start(),S.iceConnectionState==="connected"&&(this._iceTiming.stop(),this._updateProgress(k.iceConnected),(!E||E&&E.state==="connected")&&A())}),S.addEventListener("connectionstatechange",()=>{S.connectionState==="connecting"&&this._peerConnectionTiming.start(),S.connectionState==="connected"&&(this._peerConnectionTiming.stop(),this._updateProgress(k.peerConnectionConnected))});let O=S.getSenders().map(j=>j.transport).find(T);typeof O<"u"&&(E=O,E.addEventListener("statechange",()=>{E.state==="connecting"&&this._dtlsTiming.start(),E.state==="connected"&&(this._dtlsTiming.stop(),this._updateProgress(k.dtlsConnected),S.iceConnectionState==="connected"&&A())}))})}_setupInsights({token:S,environment:A=o.DEFAULT_ENVIRONMENT,realm:E=o.DEFAULT_REALM}){const D={},O=new b(S,o.SDK_NAME,o.SDK_VERSION,A,E,D);O.connect("PREFLIGHT_ROOM_SID","PREFLIGHT_PARTICIPANT");const j=new m(O,Date.now(),this._log),U=void 0;return{reportToInsights:({report:Q})=>{var K,N;const B=Q.stats.jitter||U,le=Q.stats.rtt||U,ee=Q.stats.packetLoss||U,se=Q.mos||U,de=new Map;
4Q.iceCandidateStats.forEach(J=>{if(J.candidateType&&J.protocol){let z=de.get(J.candidateType)||[];z.indexOf(J.protocol)<0&&z.push(J.protocol),de.set(J.candidateType,z)}});const he=JSON.stringify(Object.fromEntries(de)),me={name:"report",group:"preflight",level:Q.error?"error":"info",payload:{sessionSID:h,preflightSID:d("PF"),progressEvents:JSON.stringify(Q.progressEvents),testTiming:Q.testTiming,dtlsTiming:Q.networkTiming.dtls,iceTiming:Q.networkTiming.ice,peerConnectionTiming:Q.networkTiming.peerConnection,connectTiming:Q.networkTiming.connect,mediaTiming:Q.networkTiming.media,selectedLocalCandidate:(K=Q.selectedIceCandidatePairStats)===null||K===void 0?void 0:K.localCandidate,selectedRemoteCandidate:(N=Q.selectedIceCandidatePairStats)===null||N===void 0?void 0:N.remoteCandidate,iceCandidateStats:he,jitterStats:B,rttStats:le,packetLossStats:ee,mosStats:se,error:Q.error}};j.emit("event",me),setTimeout(()=>O.disconnect(),2e3)}}}_runPreflightTest(S,A,E){return s.__awaiter(this,void 0,void 0,function*(){let D=[],O=[];const{reportToInsights:j}=this._setupInsights({token:S,environment:A});try{let U=[];D=yield this._executePreflightStep("Acquire media",()=>[(0,_.syntheticAudio)(),(0,p.syntheticVideo)({width:640,height:480})]),this._updateProgress(k.mediaAcquired),this.emit("debug",{localTracks:D}),this._connectTiming.start();let Q=yield this._executePreflightStep("Get turn credentials",()=>(0,r.getTurnCredentials)(S,E),new w);this._connectTiming.stop(),this._updateProgress(k.connected);const K=new RTCPeerConnection({iceServers:Q,iceTransportPolicy:"relay",bundlePolicy:"max-bundle"}),N=new RTCPeerConnection({iceServers:Q,bundlePolicy:"max-bundle"});O.push(K),O.push(N),this._mediaTiming.start();const B=yield this._executePreflightStep("Setup Peer Connections",()=>s.__awaiter(this,void 0,void 0,function*(){K.addEventListener("icecandidate",J=>J.candidate&&N.addIceCandidate(J.candidate)),N.addEventListener("icecandidate",J=>J.candidate&&K.addIceCandidate(J.candidate)),D.forEach(J=>K.addTrack(J));const se=new Promise(J=>{let z=[];N.addEventListener("track",oe=>{z.push(oe.track),z.length===D.length&&J(z)})}),he=yield K.createOffer();yield K.setLocalDescription(he),yield N.setRemoteDescription(he);const me=yield N.createAnswer();return yield N.setLocalDescription(me),yield K.setRemoteDescription(me),yield this._collectNetworkTimings(K),se}),new y);this.emit("debug",{remoteTracks:B}),B.forEach(se=>{se.addEventListener("ended",()=>this._log.warn(se.kind+":ended")),se.addEventListener("mute",()=>this._log.warn(se.kind+":muted")),se.addEventListener("unmute",()=>this._log.warn(se.kind+":unmuted"))}),this._updateProgress(k.mediaSubscribed),yield this._executePreflightStep("Wait for tracks to start",()=>new Promise(se=>{const de=document.createElement("video");
4de.autoplay=!0,de.playsInline=!0,de.muted=!0,de.srcObject=new MediaStream(B),U.push(de),this.emit("debugElement",de),de.oncanplay=se}),new y),this._mediaTiming.stop(),this._updateProgress(k.mediaStarted);const le=yield this._executePreflightStep("Collect stats for duration",()=>this._collectRTCStatsForDuration(this._testDuration,R(),K,N)),ee=yield this._executePreflightStep("Generate report",()=>this._generatePreflightReport(le));j({report:ee}),this.emit("completed",ee)}catch(U){const Q=this._generatePreflightReport();j({report:Object.assign(Object.assign({},Q),{error:U==null?void 0:U.toString()})}),this.emit("failed",U,Q)}finally{O.forEach(U=>U.close()),D.forEach(U=>U.stop())}})}_collectRTCStats(S,A,E){return s.__awaiter(this,void 0,void 0,function*(){const D=yield(0,e.getCombinedConnectionStats)({publisher:A,subscriber:E}),{timestamp:O,bytesSent:j,bytesReceived:U,packets:Q,packetsLost:K,roundTripTime:N,jitter:B,selectedIceCandidatePairStats:le,iceCandidateStats:ee}=D,se=S.jitter.length>0;if(S.jitter.push(B),S.rtt.push(N),this._sentBytesMovingAverage.putSample(j,O),this._receivedBytesMovingAverage.putSample(U,O),this._packetLossMovingAverage.putSample(K,Q),se){S.outgoingBitrate.push(this._sentBytesMovingAverage.get()*1e3*8),S.incomingBitrate.push(this._receivedBytesMovingAverage.get()*1e3*8);const de=this._packetLossMovingAverage.get(),he=Math.min(100,de*100);S.packetLoss.push(he);const me=(0,t.calculateMOS)(N,B,de);S.mos.push(me)}S.selectedIceCandidatePairStats||(S.selectedIceCandidatePairStats=le),S.iceCandidateStats.length===0&&(S.iceCandidateStats=ee)})}_collectRTCStatsForDuration(S,A,E,D){return s.__awaiter(this,void 0,void 0,function*(){const O=Date.now(),j=Math.min(1e3,S);yield(0,i.waitForSometime)(j),yield this._collectRTCStats(A,E,D);const U=S-(Date.now()-O);return U>0&&(A=yield this._collectRTCStatsForDuration(U,A,E,D)),A})}_updateProgress(S){const A=Date.now()-this._testTiming.getTimeMeasurement().start;this._progressEvents.push({duration:A,name:S}),this.emit("progress",S)}}rt.PreflightTest=P;function R(){return{mos:[],jitter:[],rtt:[],outgoingBitrate:[],incomingBitrate:[],packetLoss:[],selectedIceCandidatePairStats:null,iceCandidateStats:[]}}function L(M,S={}){return new P(M,S)}return rt}var Wr,Ea;function Wn(){if(Ea)return Wr;Ea=1;class s{constructor(u,t){Object.defineProperties(this,{_isCancelable:{writable:!0,value:!0},_isCanceled:{writable:!0,value:!1},_onCancel:{value:t}}),Object.defineProperty(this,"_promise",{value:new Promise((e,r)=>{u(l=>{this._isCancelable=!1,e(l)},l=>{this._isCancelable=!1,r(l)},()=>this._isCanceled)})})}static reject(u){return new s(function(e,r){r(u)},function(){})}static resolve(u){return new s(function(e){e(u)},function(){})}cancel(){return this._isCancelable&&(this._isCanceled=!0,this._onCancel()),this}catch(){const u=[].slice.call(arguments),t=this._promise;return new s(function(r,l){t.catch(...u).then(r,l)},this._onCancel)}then(){const u=[].slice.call(arguments),t=this._promise;return new s(function(r,l){t.then(...u).then(r,l)},this._onCancel)}finally(){const u=[].slice.call(arguments),t=this._promise;return new s(function(r,l){t.finally(...u).then(r,l)},this._onCancel)}}return Wr=s,Wr}var Hr,Ra;function Hl(){if(Ra)return Hr;Ra=1;const s=Wn();function o(u,t,e,r){let l;const _=new Error("Canceled");return new s(function(i,n,a){let c;u(function(m){return a()?s.reject(_):(c=t(m),e(c).then(function(d){if(a())throw _;return l=d(),l}))}).then(function(m){if(a())throw m.disconnect(),_;i(r(c,m))}).catch(function(m){n(m)})},function(){l&&l.cancel()})}return Hr=o,Hr}var zr,La;function zl(){if(La)return zr;La=1;const s=Le().EventEmitter;class o extends s{constructor(t,e){super(),t=Object.assign({maxAudioBitrate:null,maxVideoBitrate:null},t),Object.defineProperties(this,{maxAudioBitrate:{value:t.maxAudioBitrate,writable:!0},maxVideoBitrate:{value:t.maxVideoBitrate,writable:!0},adaptiveSimulcast:{value:e}})}toJSON(){return{maxAudioBitrate:this.maxAudioBitrate,maxVideoBitrate:this.maxVideoBitrate}}update(t){t=Object.assign({maxAudioBitrate:this.maxAudioBitrate,maxVideoBitrate:this.maxVideoBitrate},t),["maxAudioBitrate","maxVideoBitrate"].reduce((r,l)=>
4(this[l]!==t[l]&&(this[l]=t[l],r=!0),r),!1)&&this.emit("changed")}}return zr=o,zr}var mt={},Oa;function Yc(){if(Oa)return mt;Oa=1;const{isNonArrayObject:s}=be(),{typeErrors:o,clientTrackSwitchOffControl:u,videoContentPreferencesMode:t,subscriptionMode:e,trackPriority:r,trackSwitchOffMode:l}=Se();function _(a){let c=i(a,"options.bandwidthProfile");return!a||c||(c=i(a.video,"options.bandwidthProfile.video",[{prop:"contentPreferencesMode",values:Object.values(t)},{prop:"dominantSpeakerPriority",values:Object.values(r)},{prop:"maxSubscriptionBitrate",type:"number"},{prop:"maxTracks",type:"number"},{prop:"mode",values:Object.values(e)},{prop:"clientTrackSwitchOffControl",values:Object.values(u)},{prop:"trackSwitchOffMode",values:Object.values(l)}]),c)?c:a.video?"maxTracks"in a.video&&"clientTrackSwitchOffControl"in a.video?new TypeError("options.bandwidthProfile.video.maxTracks is deprecated. Use options.bandwidthProfile.video.clientTrackSwitchOffControl instead."):"renderDimensions"in a.video&&"contentPreferencesMode"in a.video?new TypeError("options.bandwidthProfile.video.renderDimensions is deprecated. Use options.bandwidthProfile.video.contentPreferencesMode instead."):n(a.video.renderDimensions):null}function p(a,c){if(!(a instanceof c.LocalAudioTrack||a instanceof c.LocalDataTrack||a instanceof c.LocalVideoTrack||a instanceof c.MediaStreamTrack))throw o.INVALID_TYPE("track","LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack")}function i(a,c,g=[]){return typeof a>"u"?null:a===null||!s(a)?o.INVALID_TYPE(c,"object"):g.reduce((m,{prop:b,type:d,values:h})=>{if(m||!(b in a))return m;const w=a[b];return d&&typeof w!==d?o.INVALID_TYPE(`${c}.${b}`,d):d==="number"&&isNaN(w)?o.INVALID_TYPE(`${c}.${b}`,d):Array.isArray(h)&&!h.includes(w)?o.INVALID_VALUE(`${c}.${b}`,h):m},null)}function n(a){const c="options.bandwidthProfile.video.renderDimensions";let g=i(a,c);return a?g||Object.values(r).reduce((m,b)=>m||i(a[b],`${c}.${b}`,[{prop:"height",type:"number"},{prop:"width",type:"number"}]),null):g}return mt.validateBandwidthProfile=_,mt.validateLocalTrack=p,mt.validateObject=i,mt}var Qr,Ia;function Jc(){if(Ia)return Qr;Ia=1;const s=vt(),{buildLogLevels:o,valueToJSON:u}=be(),{DEFAULT_LOG_LEVEL:t}=Se(),e=xe();let r=0;class l extends s{constructor(p,i,n){super(),n=Object.assign({logLevel:t},n);const a=o(n.logLevel);Object.defineProperties(this,{_instanceId:{value:r++},_log:{value:n.log?n.log.createLog("default",this):new e("default",this,a,n.loggerName)},trackName:{enumerable:!0,value:p},trackSid:{enumerable:!0,value:i}})}toJSON(){return u(this)}toString(){return`[TrackPublication #${this._instanceId}: ${this.trackSid}]`}}return Qr=l,Qr}var Gr,Ma;function Hn(){if(Ma)return Gr;Ma=1;const s=Jc(),{typeErrors:o,trackPriority:u}=Se();class t extends s{constructor(r,l,_,p){super(l.name,r.sid,p),Object.defineProperties(this,{_reemitSignalingEvent:{value:(...i)=>
4this.emit(i&&i.length?"warning":"warningsCleared",...i)},_reemitTrackEvent:{value:()=>this.emit(this.isTrackEnabled?"trackEnabled":"trackDisabled")},_signaling:{value:r},_unpublish:{value:_},isTrackEnabled:{enumerable:!0,get(){return this.track.kind==="data"?!0:this.track.isEnabled}},kind:{enumerable:!0,value:l.kind},priority:{enumerable:!0,get(){return r.updatedPriority}},track:{enumerable:!0,value:l}}),["disabled","enabled"].forEach(i=>l.on(i,this._reemitTrackEvent)),["warning","warningsCleared"].forEach(i=>r.on(i,this._reemitSignalingEvent))}toString(){return`[LocalTrackPublication #${this._instanceId}: ${this.trackSid}]`}setPriority(r){const l=Object.values(u);if(!l.includes(r))throw o.INVALID_VALUE("priority",l);return this._signaling.setPriority(r),this}unpublish(){return["disabled","enabled"].forEach(r=>this.track.removeListener(r,this._reemitTrackEvent)),["warning","warningsCleared"].forEach(r=>this._signaling.removeListener(r,this._reemitSignalingEvent)),this._unpublish(this),this}}return Gr=t,Gr}var Kr,Da;function Ql(){if(Da)return Kr;Da=1;const s=Hn();class o extends s{constructor(t,e,r,l){super(t,e,r,l)}toString(){return`[LocalAudioTrackPublication #${this._instanceId}: ${this.trackSid}]`}}return Kr=o,Kr}var Yr,Aa;function Gl(){if(Aa)return Yr;Aa=1;const s=Hn();class o extends s{constructor(t,e,r,l){super(t,e,r,l)}toString(){return`[LocalDataTrackPublication #${this._instanceId}: ${this.trackSid}]`}}return Yr=o,Yr}var Jr,xa;function Kl(){if(xa)return Jr;xa=1;const s=Hn();class o extends s{constructor(t,e,r,l){super(t,e,r,l)}toString(){return`[LocalVideoTrackPublication #${this._instanceId}: ${this.trackSid}]`}}return Jr=o,Jr}var Xr,qa;function Xc(){if(qa)return Xr;qa=1;const{typeErrors:s,trackPriority:o}=Se(),{isIOS:u}=Ge(),t=Dt();function e(l){return class extends l{constructor(p,i,n,a,c,g,m){m=Object.assign({workaroundWebKitBug212780:u()&&typeof document=="object"&&typeof document.addEventListener=="function"&&typeof document.visibilityState=="string"},m),super(i,m),Object.defineProperties(this,{_isEnabled:{value:n,writable:!0},_isSwitchedOff:{value:a,writable:!0},_priority:{value:null,writable:!0},_setPriority:{value:c},_setRenderHint:{value:b=>{this._log.debug("updating render hint:",b),g(b)}},isEnabled:{enumerable:!0,get(){return this._isEnabled}},isSwitchedOff:{enumerable:!0,get(){return this._isSwitchedOff}},priority:{enumerable:!0,get(){return this._priority}},sid:{enumerable:!0,value:p},_workaroundWebKitBug212780:{value:m.workaroundWebKitBug212780},_workaroundWebKitBug212780Cleanup:{value:null,writable:!0}})}setPriority(p){const i=[null,...Object.values(o)];if(!i.includes(p))throw s.INVALID_VALUE("priority",i);return this._priority!==p&&(this._priority=p,this._setPriority(p)),this}_setEnabled(p){this._isEnabled!==p&&(this._isEnabled=p,this.emit(this._isEnabled?"enabled":"disabled",this))}_setSwitchedOff(p){this._isSwitchedOff!==p&&(this._isSwitchedOff=p,this.emit(p?"switchedOff":"switchedOn",this))}attach(p){const i=super.attach(p);return this.mediaStreamTrack.enabled!==!0&&(this.mediaStreamTrack.enabled=!0,this.processedTrack&&(this.processedTrack.enabled=!0),this.processor&&this._captureFrames()),this._workaroundWebKitBug212780&&(this._workaroundWebKitBug212780Cleanup=this._workaroundWebKitBug212780Cleanup||r(this)),i}detach(p){const i=super.detach(p);return this._attachments.size===0&&(this.mediaStreamTrack.enabled=!1,this.processedTrack&&(this.processedTrack.enabled=!1),this._workaroundWebKitBug212780Cleanup&&(this._workaroundWebKitBug212780Cleanup(),this._workaroundWebKitBug212780Cleanup=null)),i}}}function r(l){const{_log:_,kind:p}=l;function i(n){n&&l._attachments.forEach(a=>{const c=l._elShims.get(a);a.paused&&c&&!c.pausedIntentionally()&&(_.info(`Playing inadvertently paused <${p}> element`),_.debug("Element:",a),_.debug("RemoteMediaTrack:",l),a.play().then(()=>{_.info(`Successfully played inadvertently paused <${p}> element`),_.debug("Element:",a),_.debug("RemoteMediaTrack:",l)}).catch(m=>{_.warn(`Error while playing inadvertently paused <${p}> element:`,{err:m,el:a,remoteMediaTrack:l})}))})}return t.onVisibilityChange(2,i),()=>{t.offVisibilityChange(2,i)}}return Xr=e,Xr}var Zr,ja;function Yl(){if(ja)return Zr;ja=1;const s=xc(),u=Xc()(s);class t extends u{constructor(r,l,_,p,i,n,a){super(r,l,_,p,i,n,a)}toString(){return`[RemoteAudioTrack #${this._instanceId}: ${this.sid}]`}_start(){super._start(),this._dummyEl&&(this._disposeMediaElement?this._disposeMediaElement(this._dummyEl):this._dummyEl.srcObject=null,this._dummyEl=null)}setPriority(r){return super.setPriority(r)}}return Zr=t,Zr}var ei,Na;function zn(){if(Na)return ei;Na=1;const s=Jc();class o extends s{constructor(t,e){super(t.name,t.sid,e),Object.defineProperties(this,{_signaling:{value:t},_track:{value:null,writable:!0},isSubscribed:{enumerable:!0,get(){return!!this._track}},isTrackEnabled:{enumerable:!0,get(){return t.isEnabled}},kind:{enumerable:!0,value:t.kind},publishPriority:{enumerable:!0,get(){return t.priority}},track:{enumerable:!0,get(){return this._track}}});let{error:r,isEnabled:l,isSwitchedOff:_,priority:p}=t;t.on("updated",()=>
4{if(r!==t.error){r=t.error,this.emit("subscriptionFailed",t.error);return}l!==t.isEnabled&&(l=t.isEnabled,this.track&&this.track._setEnabled(t.isEnabled),this.emit(t.isEnabled?"trackEnabled":"trackDisabled")),_!==t.isSwitchedOff&&(this._log.debug(`${this.trackSid}: ${_?"OFF":"ON"} => ${t.isSwitchedOff?"OFF":"ON"}`),_=t.isSwitchedOff,this.track?(this.track._setSwitchedOff(t.isSwitchedOff),this.emit(_?"trackSwitchedOff":"trackSwitchedOn",this.track)):_&&this._log.warn("Track was not subscribed when switched Off.")),p!==t.priority&&(p=t.priority,this.emit("publishPriorityChanged",p))})}toString(){return`[RemoteTrackPublication #${this._instanceId}: ${this.trackSid}]`}_subscribed(t){!this._track&&t&&(this._track=t,this.emit("subscribed",t))}_unsubscribe(){if(this._track){const t=this._track;this._track=null,this.emit("unsubscribed",t)}}}return ei=o,ei}var ti,$a;function Jl(){if($a)return ti;$a=1;const s=zn();class o extends s{constructor(t,e){super(t,e)}toString(){return`[RemoteAudioTrackPublication #${this._instanceId}: ${this.trackSid}]`}}return ti=o,ti}var ri,Va;function Xl(){if(Va)return ri;Va=1;const s=Un(),{typeErrors:o,trackPriority:u}=Se();class t extends s{constructor(r,l,_){super(l.id,"data",_),Object.defineProperties(this,{_isSwitchedOff:{value:!1,writable:!0},_priority:{value:null,writable:!0},isEnabled:{enumerable:!0,value:!0},isSwitchedOff:{enumerable:!0,get(){return this._isSwitchedOff}},maxPacketLifeTime:{enumerable:!0,value:l.maxPacketLifeTime},maxRetransmits:{enumerable:!0,value:l.maxRetransmits},ordered:{enumerable:!0,value:l.ordered},priority:{enumerable:!0,get(){return this._priority}},reliable:{enumerable:!0,value:l.maxPacketLifeTime===null&&l.maxRetransmits===null},sid:{enumerable:!0,value:r}}),l.on("message",p=>{this.emit("message",p,this)})}setPriority(r){const l=[null,...Object.values(u)];if(!l.includes(r))throw o.INVALID_VALUE("priority",l);return this._priority=r,this}_setEnabled(){}_setSwitchedOff(r){this._isSwitchedOff!==r&&(this._isSwitchedOff=r,this.emit(r?"switchedOff":"switchedOn",this))}}return ri=t,ri}var ii,Fa;function Zl(){if(Fa)return ii;Fa=1;const s=zn();class o extends s{constructor(t,e){super(t,e)}toString(){return`[RemoteDataTrackPublication #${this._instanceId}: ${this.trackSid}]`}}return ii=o,ii}var ni,Ba;function ed(){if(Ba)return ni;Ba=1;class s{constructor(e){Object.defineProperties(this,{_callback:{value:e}})}observe(){}unobserve(){}makeVisible(e){const r=this._makeFakeEntry(e,!0);this._callback([r])}makeInvisible(e){const r=this._makeFakeEntry(e,!1);this._callback([r])}_makeFakeEntry(e,r){return{target:e,isIntersecting:r}}}class o extends s{}class u extends s{resize(e){const r=this._makeFakeEntry(e,!0);this._callback([r])}}return ni={NullIntersectionObserver:o,NullResizeObserver:u,NullOb
4server:s},ni}var si,Ua;function td(){if(Ua)return si;Ua=1;const s=Xc(),o=Uc(),u=Dt(),{NullObserver:t}=ed(),e=Ke(),r=s(o),l=50;class _ extends r{constructor(g,m,b,d,h,w,y){y=Object.assign({clientTrackSwitchOffControl:"auto",contentPreferencesMode:"auto",enableDocumentVisibilityTurnOff:!0},y),y=Object.assign({IntersectionObserver:typeof IntersectionObserver>"u"||y.clientTrackSwitchOffControl!=="auto"?t:IntersectionObserver,ResizeObserver:typeof ResizeObserver>"u"||y.contentPreferencesMode!=="auto"?t:ResizeObserver},y),super(g,m,b,d,h,w,y),Object.defineProperties(this,{_enableDocumentVisibilityTurnOff:{value:y.enableDocumentVisibilityTurnOff===!0&&y.clientTrackSwitchOffControl==="auto"},_documentVisibilityTurnOffCleanup:{value:null,writable:!0},_clientTrackSwitchOffControl:{value:y.clientTrackSwitchOffControl},_contentPreferencesMode:{value:y.contentPreferencesMode},_invisibleElements:{value:new WeakSet},_elToPipCallbacks:{value:new WeakMap},_elToPipWindows:{value:new WeakMap},_turnOffTimer:{value:new e(()=>{this._setRenderHint({enabled:!1})},l,!1)},_resizeObserver:{value:new y.ResizeObserver(f=>{f.find(k=>!this._invisibleElements.has(k.target))&&n(this)})},_intersectionObserver:{value:new y.IntersectionObserver(f=>{let v=!1;f.forEach(k=>{!this._invisibleElements.has(k.target)!==k.isIntersecting&&(k.isIntersecting?(this._log.debug("intersectionObserver detected: Off => On"),this._invisibleElements.delete(k.target)):(this._log.debug("intersectionObserver detected: On => Off"),this._invisibleElements.add(k.target)),v=!0)}),v&&(i(this),n(this))},{threshold:.25})}})}_start(g){const m=super._start.call(this,g);return i(this),m}switchOn(){if(this._clientTrackSwitchOffControl!=="manual")throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.clientTrackSwitchOffControl is set to "manual"');return this._setRenderHint({enabled:!0}),this}switchOff(){if(this._clientTrackSwitchOffControl!=="manual")throw new Error('Invalid state. You can call switchOff only when bandwidthProfile.video.clientTrackSwitchOffControl is set to "manual"');return this._setRenderHint({enabled:!1}),this}setContentPreferences(g){if(this._contentPreferencesMode!=="manual")throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.contentPreferencesMode is set to "manual"');return g.renderDimensions&&this._setRenderHint({renderDimensions:g.renderDimensions}),this}_unObservePip(g){const m=this._elToPipCallbacks.get(g);m&&(g.removeEventListener("enterpictureinpicture",m.onEnterPip),g.removeEventListener("leavepictureinpicture",m.onLeavePip),this._elToPipCallbacks.delete(g))}_observePip(g){if(!this._elToPipCallbacks.get(g)){const b=w=>this._onEnterPip(w,g),d=w=>this._onLeavePip(w,g),h=w=>this._onResizePip(w,g);g.addEventListener("enterpictureinpicture",b),g.addEventListener("leavepictureinpicture",d),this._elToPipCallbacks.set(g,{onEnterPip:b,onLeavePip:d,onResizePip:h})}}_onEnterPip(g,m){this._log.debug("onEnterPip");const b=g.pictureInPictureWindow;this._elToPipWindows.set(m,b);const{onResizePip:d}=this._elToPipCallbacks.get(m);b.addEventListener("resize",d),i(this)}_onLeavePip(g,m){this._log.debug("onLeavePip"),this._elToPipWindows.delete(m);const{onResizePip:b}=this._elToPipCallbacks.get(m);g.pictureInPictureWindow.removeEventListener("resize",b),i(this)}_onResizePip(){n(this)}attach(g){const m=super.attach(g);return this._clientTrackSwitchOffControl==="auto"&&this._invisibleElements.add(m),this._intersectionObserver.observe(m),this._resizeObserver.observe(m),this._enableDocumentVisibilityTurnOff&&(this._documentVisibilityTurnOffCleanup=this._documentVisibilityTurnOffCleanup||a(this)),this._observePip(m),m}detach(g){const m=super.detach(g);return(Array.isArray(m)?m:[m]).forEach(d=>{this._intersectionObserver.unobserve(d),this._resizeObserver.unobserve(d),this._invisibleElements.delete(d),this._unObservePip(d)}),this._attachments.size===0&&this._documentVisibilityTurnOffCleanup&&(this._documentVisibilityTurnOffCleanup(),this._documentVisibilityTurnOffCleanup=null),i(this),n(this),m}addProcessor(){return super.addProcessor.apply(this,arguments)}removeProcessor(){return super.removeProcessor.apply(this,arguments)}toString(){return`[RemoteVideoTrack #${this._instanceId}: ${this.sid}]`}setPriority(g){return super.setPriority(g)}}function p(c){if(!("documentPictureInPicture"in globalThis))return!1;const g=globalThis.documentPictureInPicture.window;if(!g)return!1;const m=new WeakSet(g.document.querySelectorAll("video"));return c._getAllAttachedElements().some(b=>m.has(b))}function i(c){if(c._clientTrackSwitchOffControl!=="auto")return;const g=c._getAllAttachedElements().filter(d=>!c._invisibleElements.has(d));(c._getAllAttachedElements().filter(d=>c._elToPipWindows.has(d)).length>0||p(c)||document.visibilityState==="visible"&&g.length>0)===!0?(c._turnOffTimer.clear(),c._setRenderHint({enabled:!0}),o._ensureDocumentPipVideosPlaying(c)):c._turnOffTimer.isSet||c._turnOffTimer.start()}function n(c){if(c._contentPreferencesMode!=="auto")return;const g=c._getAllAttachedElements().filter(d=>!c._invisibleElements.has(d)),m=c._getAllAttachedElements().map(d=>{const h=c._elToPipWindows.get(d);return h?{clientHeight:h.height,clientWidth:h.width}:{clientHeight:0,clientWidth:0}}),b=g.concat(m);if(b.length>0){const[{clientHeight:d,clientWidth:h}]=b.sort((y,f)=>f.clientHeight+f.clientWidth-y.clientHeight-y.clientWidth-1),w={height:d,width:h};c._setRenderHint({renderDimensions:w})}}function a(c){function g(){i(c)}return u.onVisibilityChange(1,g),()=>{u.offVisibilityChange(1,g)}}return si=_,si}var ai,Wa;function rd(){if(Wa)return ai;Wa=1;const s=zn();class o extends s{constructor(t,e){super(t,e)}toString(){return`[RemoteVideoTrackPublication #${this._instanceId}: ${this.trackSid}]`}}return ai=o,ai}var oi,Ha;function Zc(){if(Ha)return oi;Ha=1;
4const s=vt(),o=Yl(),u=Jl(),t=Xl(),e=Zl(),r=td(),l=rd(),_=be();let p=0;class i extends s{constructor(b,d){super(),d=Object.assign({RemoteAudioTrack:o,RemoteAudioTrackPublication:u,RemoteDataTrack:t,RemoteDataTrackPublication:e,RemoteVideoTrack:r,RemoteVideoTrackPublication:l,tracks:[]},d);const h=n(d.tracks),w=d.log.createLog("default",this),y=new Map(h.audioTracks),f=new Map(h.dataTracks),v=new Map(h.tracks),k=new Map(h.videoTracks);Object.defineProperties(this,{_RemoteAudioTrack:{value:d.RemoteAudioTrack},_RemoteAudioTrackPublication:{value:d.RemoteAudioTrackPublication},_RemoteDataTrack:{value:d.RemoteDataTrack},_RemoteDataTrackPublication:{value:d.RemoteDataTrackPublication},_RemoteVideoTrack:{value:d.RemoteVideoTrack},_RemoteVideoTrackPublication:{value:d.RemoteVideoTrackPublication},_audioTracks:{value:y},_dataTracks:{value:f},_instanceId:{value:++p},_clientTrackSwitchOffControl:{value:d.clientTrackSwitchOffControl},_contentPreferencesMode:{value:d.contentPreferencesMode},_log:{value:w},_signaling:{value:b},_tracks:{value:v},_trackEventReemitters:{value:new Map},_trackPublicationEventReemitters:{value:new Map},_trackSignalingUpdatedEventCallbacks:{value:new Map},_videoTracks:{value:k},audioTracks:{enumerable:!0,value:new Map},dataTracks:{enumerable:!0,value:new Map},identity:{enumerable:!0,get(){return b.identity}},networkQualityLevel:{enumerable:!0,get(){return b.networkQualityLevel}},networkQualityStats:{enumerable:!0,get(){return b.networkQualityStats}},sid:{enumerable:!0,get(){return b.sid}},state:{enumerable:!0,get(){return b.state}},tracks:{enumerable:!0,value:new Map},videoTracks:{enumerable:!0,value:new Map},_MediaStream:{value:d.MediaStream},_mapMediaElement:{value:d.mapMediaElement},_disposeMediaElement:{value:d.disposeMediaElement}}),this._tracks.forEach(c.bind(null,this)),b.on("networkQualityLevelChanged",()=>
4this.emit("networkQualityLevelChanged",this.networkQualityLevel,this.networkQualityStats&&(this.networkQualityStats.audio||this.networkQualityStats.video)?this.networkQualityStats:null)),a(this,b),w.info(`Created a new Participant${this.identity?`: ${this.identity}`:""}`)}_getTrackEvents(){return[["dimensionsChanged","trackDimensionsChanged"],["message","trackMessage"],["started","trackStarted"]]}_getTrackPublicationEvents(){return[]}toString(){return`[Participant #${this._instanceId}: ${this.sid}]`}_addTrack(b,d){const h=this._log;return this._tracks.has(d)?null:(this._tracks.set(d,b),{audio:this._audioTracks,video:this._videoTracks,data:this._dataTracks}[b.kind].set(d,b),c(this,b,d),h.info(`Added a new ${_.trackClass(b)}:`,d),h.debug(`${_.trackClass(b)}:`,b),b)}_addTrackPublication(b){const d=this._log;return this.tracks.has(b.trackSid)?null:(this.tracks.set(b.trackSid,b),{audio:this.audioTracks,data:this.dataTracks,video:this.videoTracks}[b.kind].set(b.trackSid,b),g(this,b),d.info(`Added a new ${_.trackPublicationClass(b)}:`,b.trackSid),d.debug(`${_.trackPublicationClass(b)}:`,b),b)}_handleTrackSignalingEvents(){const{_log:b,_clientTrackSwitchOffControl:d,_contentPreferencesMode:h,_MediaStream:w,_mapMediaElement:y,_disposeMediaElement:f}=this,v=this;if(this.state==="disconnected")return;const k=this._RemoteAudioTrack,T=this._RemoteAudioTrackPublication,I=this._RemoteVideoTrack,P=this._RemoteVideoTrackPublication,R=this._RemoteDataTrack,L=this._RemoteDataTrackPublication,M=this._signaling;function S(O){const j={audio:T,data:L,video:P}[O.kind],U=new j(O,{log:b});v._addTrackPublication(U);let Q=O.isSubscribed;Q&&E(O),v._trackSignalingUpdatedEventCallbacks.set(O.sid,()=>{if(Q!==O.isSubscribed){if(Q=O.isSubscribed,Q){E(O);return}D(O)}}),O.on("updated",v._trackSignalingUpdatedEventCallbacks.get(O.sid))}function A(O){O.isSubscribed&&O.setTrackTransceiver(null);const j=v._trackSignalingUpdatedEventCallbacks.get(O.sid);j&&(O.removeListener("updated",j),v._trackSignalingUpdatedEventCallbacks.delete(O.sid));const U=v.tracks.get(O.sid);U&&v._removeTrackPublication(U)}function E(O){const{isEnabled:j,name:U,kind:Q,sid:K,trackTransceiver:N,isSwitchedOff:B}=O,le={audio:k,video:I,data:R}[Q],ee=v.tracks.get(K);if(!le||Q!==N.kind)return;const se={log:b,name:U,clientTrackSwitchOffControl:d,contentPreferencesMode:h,mapMediaElement:y,disposeMediaElement:f};w&&(se.MediaStream=w);const de=J=>M.updateSubscriberTrackPriority(K,J),he=J=>{O.isSubscribed&&M.updateTrackRenderHint(K,J)},me=Q==="data"?new le(K,N,se):new le(K,N,j,B,de,he,se);v._addTrack(me,ee,N.id)}function D(O){const[j,U]=Array.from(v._tracks.entries()).find(([,K])=>K.sid===O.sid),Q=v.tracks.get(O.sid);U&&v._removeTrack(U,Q,j)}M.on("trackAdded",S),M.on("trackRemoved",A),M.tracks.forEach(S),M.on("stateChanged",function O(j){j==="disconnected"?(b.debug("Removing event listeners"),M.removeListener("stateChanged",O),M.removeListener("trackAdded",S),M.removeListener("trackRemoved",A)):j==="connected"&&(b.info("reconnected"),setTimeout(()=>v.emit("reconnected"),0))})}_removeTrack(b,d){if(!this._tracks.has(d))return null;this._tracks.delete(d),{audio:this._audioTracks,video:this._videoTracks,data:this._dataTracks}[b.kind].delete(d),(this._trackEventReemitters.get(d)||new Map).forEach((f,v)=>{b.removeListener(v,f)});const y=this._log;return y.info(`Removed a ${_.trackClass(b)}:`,d),y.debug(`${_.trackClass(b)}:`,b),b}_removeTrackPublication(b){if(b=this.tracks.get(b.trackSid),!b)return null;this.tracks.delete(b.trackSid),{audio:this.audioTracks,data:this.dataTracks,video:this.videoTracks}[b.kind].delete(b.trackSid),(this._trackPublicationEventReemitters.get(b.trackSid)||new Map).forEach((y,f)=>{b.removeListener(f,y)});const w=this._log;return w.info(`Removed a ${_.trackPublicationClass(b)}:`,b.trackSid),w.debug(`${_.trackPublicationClass(b)}:`,b),b}toJSON(){return _.valueToJSON(this)}}function n(m){const b=m.map(y=>[y.id,y]),d=b.filter(y=>y[1].kind==="audio"),h=b.filter(y=>y[1].kind==="video"),w=b.filter(y=>y[1].kind==="data");return{audioTracks:d,dataTracks:w,tracks:b,videoTracks:h}}function a(m,b){const d=m._log;m.state!=="disconnected"&&b.on("stateChanged",function h(w){d.debug("Transitioned to state:",w),m.emit(w,m),w==="disconnected"&&(d.debug("Removing Track event reemitters"),b.removeListener("stateChanged",h),m._tracks.forEach(y=>{const f=m._trackEventReemitters.get(y.id);y&&f&&f.forEach((v,k)=>{y.removeListener(k,v)})}),b.tracks.forEach(y=>{const f=m._tracks.get(y.id),v=m._trackEventReemitters.get(y.id);f&&v&&v.forEach((k,T)=>{f.removeListener(T,k)})}),m._trackEventReemitters.clear(),m.tracks.forEach(y=>
4{m._trackPublicationEventReemitters.get(y.trackSid).forEach((f,v)=>{y.removeListener(v,f)})}),m._trackPublicationEventReemitters.clear())})}function c(m,b,d){const h=new Map;m.state!=="disconnected"&&(m._getTrackEvents().forEach(w=>{const y=w[0],f=w[1];h.set(y,function(){const v=[f].concat([].slice.call(arguments));return m.emit(...v)}),b.on(y,h.get(y))}),m._trackEventReemitters.set(d,h))}function g(m,b){const d=new Map;m.state!=="disconnected"&&(m._getTrackPublicationEvents().forEach(([h,w])=>{d.set(h,(...y)=>{m.emit(w,...y,b)}),b.on(h,d.get(h))}),m._trackPublicationEventReemitters.set(b.trackSid,d))}return oi=i,oi}var ci,za;function id(){if(za)return ci;za=1;const{asLocalTrack:s,asLocalTrackPublication:o,trackClass:u}=be(),{typeErrors:t,trackPriority:e}=Se(),{validateLocalTrack:r}=Yc(),{LocalAudioTrack:l,LocalDataTrack:_,LocalVideoTrack:p}=nt(),i=Ql(),n=Gl(),a=Kl(),c=Zc();class g extends c{constructor(d,h,w){w=Object.assign({LocalAudioTrack:l,LocalVideoTrack:p,LocalDataTrack:_,MediaStreamTrack,LocalAudioTrackPublication:i,LocalVideoTrackPublication:a,LocalDataTrackPublication:n,shouldStopLocalTracks:!1,tracks:h},w);const y=w.shouldStopLocalTracks?new Set(h.filter(f=>f.kind!=="data")):new Set;super(d,w),Object.defineProperties(this,{_eventObserver:{value:w.eventObserver},_LocalAudioTrack:{value:w.LocalAudioTrack},_LocalDataTrack:{value:w.LocalDataTrack},_LocalVideoTrack:{value:w.LocalVideoTrack},_MediaStreamTrack:{value:w.MediaStreamTrack},_LocalAudioTrackPublication:{value:w.LocalAudioTrackPublication},_LocalDataTrackPublication:{value:w.LocalDataTrackPublication},_LocalVideoTrackPublication:{value:w.LocalVideoTrackPublication},_tracksToStop:{value:y},signalingRegion:{enumerable:!0,get(){return d.signalingRegion}}}),this._handleTrackSignalingEvents()}_addTrack(d,h,w){const y=super._addTrack(d,h);return y&&this.state!=="disconnected"&&this._addLocalTrack(d,w),y}_addLocalTrack(d,h){var w;const y=(w=d.noiseCancellation)===null||w===void 0?void 0:w.vendor;this._signaling.addTrack(d._trackSender,d.name,h,y),this._log.info(`Added a new ${u(d,!0)}:`,d.id),this._log.debug(`${u(d,!0)}:`,d)}_removeTrack(d,h){const w=super._removeTrack(d,h);return w&&this.state!=="disconnected"&&(this._signaling.removeTrack(d._trackSender),this._log.info(`Removed a ${u(d,!0)}:`,d.id),this._log.debug(`${u(d,!0)}:`,d)),w}_getTrackEvents(){return super._getTrackEvents.call(this).concat([["disabled","trackDisabled"],["enabled","trackEnabled"],["stopped","trackStopped"]])}toString(){return`[LocalParticipant #${this._instanceId}${this.sid?`: ${this.sid}`:""}]`}_handleTrackSignalingEvents(){const d=this._log;if(this.state==="disconnected")return;const h=v=>{const k=this._signaling.getPublication(v._trackSender);k&&(k.disable(),d.debug(`Disabled the ${u(v,!0)}:`,v.id))},w=v=>{const k=this._signaling.getPublication(v._trackSender);k&&(k.enable(),d.debug(`Enabled the ${u(v,!0)}:`,v.id))},y=v=>{const k=this._signaling.getPublication(v._trackSender);return k&&k.stop(),k},f=v=>{d.debug("Transitioned to state:",v),v==="disconnected"?(d.debug("Removing LocalTrack event listeners"),this._signaling.removeListener("stateChanged",f),this.removeListener("trackDisabled",h),this.removeListener("trackEnabled",w),this.removeListener("trackStopped",y),this._tracks.forEach(k=>{const T=y(k);T&&k._trackSender.removeClone(T._trackTransceiver)}),d.info(`LocalParticipant disconnected. Stopping ${this._tracksToStop.size} automatically-acquired LocalTracks`),this._tracksToStop.forEach(k=>{k.stop()})):v==="connected"&&(d.info("reconnected"),setTimeout(()=>
4this.emit("reconnected"),0))};this.on("trackDisabled",h),this.on("trackEnabled",w),this.on("trackStopped",y),this._signaling.on("stateChanged",f),this._tracks.forEach(v=>{this._addLocalTrack(v,e.PRIORITY_STANDARD),this._getOrCreateLocalTrackPublication(v).catch(k=>{d.warn(`Failed to get or create LocalTrackPublication for ${v}:`,k)})})}_getOrCreateLocalTrackPublication(d){let h=m(this.tracks,d);if(h)return Promise.resolve(h);const w=this._log,y=this,f=this._signaling.getPublication(d._trackSender);return f?new Promise((v,k)=>{function T(){const I=f.error;if(I){f.removeListener("updated",T),w.warn(`Failed to publish the ${u(d,!0)}: ${I.message}`),y._removeTrack(d,d.id),setTimeout(()=>{y.emit("trackPublicationFailed",I,d)}),k(I);return}if(!y._tracks.has(d.id)){f.removeListener("updated",T),k(new Error(`The ${d} was unpublished`));return}if(!f.sid)return;f.removeListener("updated",T);const R={log:w,LocalAudioTrackPublication:y._LocalAudioTrackPublication,LocalDataTrackPublication:y._LocalDataTrackPublication,LocalVideoTrackPublication:y._LocalVideoTrackPublication};h=m(y.tracks,d);const L=E=>y.emit("trackWarning",E,h),M=()=>y.emit("trackWarningsCleared",h);h||(h=o(d,f,E=>{h.removeListener("trackWarning",L),h.removeListener("trackWarningsCleared",M),y.unpublishTrack(E.track)},R),y._addTrackPublication(h)),h.on("warning",L),h.on("warningsCleared",M);const{state:A}=y._signaling;(A==="connected"||A==="connecting")&&(d._processorEventObserver&&d._processorEventObserver.on("event",E=>{y._eventObserver.emit("event",{name:E.name,payload:E.data,group:"video-processor",level:"info"})}),d.processedTrack&&(d._captureFrames(),d._setSenderMediaStreamTrack(!0))),A==="connected"&&setTimeout(()=>{y.emit("trackPublished",h)}),v(h)}f.on("updated",T)}):Promise.reject(new Error(`Unexpected error: The ${d} cannot be published`))}publishTrack(d,h){const w=m(this.tracks,d);if(w)return Promise.resolve(w);h=Object.assign({log:this._log,priority:e.PRIORITY_STANDARD,LocalAudioTrack:this._LocalAudioTrack,LocalDataTrack:this._LocalDataTrack,LocalVideoTrack:this._LocalVideoTrack,MediaStreamTrack:this._MediaStreamTrack},h);let y;try{y=s(d,h)}catch(I){return Promise.reject(I)}const f=y.noiseCancellation,v=this._signaling.audioProcessors;f&&!v.includes(f.vendor)&&(this._log.warn(`${f.vendor} is not supported in this room. disabling it permanently`),f.disablePermanently());const k=Object.values(e);if(!k.includes(h.priority))return Promise.reject(t.INVALID_VALUE("LocalTrackPublishOptions.priority",k));let T=this._addTrack(y,y.id,h.priority)||this._tracks.get(y.id);return this._getOrCreateLocalTrackPublication(T)}publishTracks(d){if(!Array.isArray(d))throw t.INVALID_TYPE("tracks","Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack");return Promise.all(d.map(this.publishTrack,this))}setBandwidthProfile(){this._log.warn("setBandwidthProfile is not implemented yet and may be available in future versions of twilio-video.js")}setNetworkQualityConfiguration(d){if(typeof d!="object"||d===null)throw t.INVALID_TYPE("networkQualityConfiguration","NetworkQualityConfiguration");return["local","remote"].forEach(h=>{if(h in d&&(typeof d[h]!="number"||isNaN(d[h])))throw t.INVALID_TYPE(`networkQualityConfiguration.${h}`,"number")}),this._signaling.setNetworkQualityConfiguration(d),this}setParameters(d){if(typeof d<"u"&&typeof d!="object")throw t.INVALID_TYPE("encodingParameters","EncodingParameters, null or undefined");if(d){if(this._signaling.getParameters().adaptiveSimulcast&&d.maxVideoBitrate)throw t.INVALID_TYPE("encodingParameters",'encodingParameters.maxVideoBitrate is not compatible with "preferredVideoCodecs=auto"');["maxAudioBitrate","maxVideoBitrate"].forEach(h=>{if(typeof d[h]<"u"&&typeof d[h]!="number"&&d[h]!==null)throw t.INVALID_TYPE(`encodingParameters.${h}`,"number, null or undefined")})}else d===null&&(d={maxAudioBitrate:null,maxVideoBitrate:null});return this._signaling.setParameters(d),this}unpublishTrack(d){r(d,{LocalAudioTrack:this._LocalAudioTrack,LocalDataTrack:this._LocalDataTrack,LocalVideoTrack:this._LocalVideoTrack,MediaStreamTrack:this._MediaStreamTrack});let h=this._tracks.get(d.id);if(!h||(this._signaling.getPublication(h._trackSender).publishFailed(new Error(`The ${h} was unpublished`)),h=this._removeTrack(h,h.id),!h))return null;const y=m(this.tracks,h);return y&&this._removeTrackPublication(y),y}
4unpublishTracks(d){if(!Array.isArray(d))throw t.INVALID_TYPE("tracks","Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack");return d.reduce((h,w)=>{const y=this.unpublishTrack(w);return y?h.concat(y):h},[])}}function m(b,d){return Array.from(b.values()).find(h=>h.track===d||h.track.mediaStreamTrack===d)||null}return ci=g,ci}var ui,Qa;function nd(){if(Qa)return ui;Qa=1;class s{constructor(){Object.defineProperties(this,{_connected:{writable:!0,value:!0}})}connect(){}disconnect(){return this._connected?(this._connected=!1,!0):!1}publish(){return this._connected}}return ui=s,ui}var li,Ga;function sd(){if(Ga)return li;Ga=1;const{EventEmitter:s}=Le(),{DEFAULT_NQ_LEVEL_LOCAL:o,DEFAULT_NQ_LEVEL_REMOTE:u,MAX_NQ_LEVEL:t}=Se(),{inRange:e}=be();class r extends s{constructor(_){super(),_=Object.assign({local:o,remote:u},_),Object.defineProperties(this,{local:{value:e(_.local,o,t)?_.local:o,writable:!0},remote:{value:e(_.remote,u,t)?_.remote:u,writable:!0}})}update(_){_=Object.assign({local:this.local,remote:this.remote},_),[["local",o,3],["remote",u,3]].forEach(([p,i,n])=>{this[p]=typeof _[p]=="number"&&e(_[p],i,n)?_[p]:i})}}return li=r,li}var di,Ka;function ad(){if(Ka)return di;Ka=1;const s=Zc();class o extends s{constructor(t,e){super(t,e),this._handleTrackSignalingEvents(),this.once("disconnected",this._unsubscribeTracks.bind(this))}toString(){return`[RemoteParticipant #${this._instanceId}${this.sid?`: ${this.sid}`:""}]`}_addTrack(t,e,r){return super._addTrack(t,r)?(e._subscribed(t),this.emit("trackSubscribed",t,e),t):null}_addTrackPublication(t){const e=super._addTrackPublication(t);
4return e?(this.emit("trackPublished",e),e):null}_getTrackPublicationEvents(){return[...super._getTrackPublicationEvents(),["subscriptionFailed","trackSubscriptionFailed"],["trackDisabled","trackDisabled"],["trackEnabled","trackEnabled"],["publishPriorityChanged","trackPublishPriorityChanged"],["trackSwitchedOff","trackSwitchedOff"],["trackSwitchedOn","trackSwitchedOn"]]}_unsubscribeTracks(){this.tracks.forEach(t=>{if(t.isSubscribed){const e=t.track;t._unsubscribe(),this.emit("trackUnsubscribed",e,t)}})}_removeTrack(t,e,r){const l=this._tracks.get(r);return l?(super._removeTrack(l,r),e._unsubscribe(),this.emit("trackUnsubscribed",l,e),l):null}_removeTrackPublication(t){this._signaling.clearTrackHint(t.trackSid);const e=super._removeTrackPublication(t);return e?(this.emit("trackUnpublished",e),e):null}}return di=o,di}var hi,Ya;function eu(){if(Ya)return hi;Ya=1;class s{constructor(u,t){if(typeof u!="string")throw new Error("Track id must be a string");Object.defineProperties(this,{trackId:{value:u,enumerable:!0},trackSid:{value:t.trackSid,enumerable:!0},timestamp:{value:t.timestamp,enumerable:!0},ssrc:{value:t.ssrc,enumerable:!0},packetsLost:{value:typeof t.packetsLost=="number"?t.packetsLost:null,enumerable:!0},codec:{value:typeof t.codecName=="string"?t.codecName:null,enumerable:!0}})}}return hi=s,hi}var fi,Ja;function tu(){if(Ja)return fi;Ja=1;const s=eu();class o extends s{constructor(t,e,r){super(t,e),Object.defineProperties(this,{bytesSent:{value:typeof e.bytesSent=="number"?e.bytesSent:r?0:null,enumerable:!0},packetsSent:{value:typeof e.packetsSent=="number"?e.packetsSent:r?0:null,enumerable:!0},roundTripTime:{value:typeof e.roundTripTime=="number"?e.roundTripTime:r?0:null,enumerable:!0}})}}return fi=o,fi}var pi,Xa;function od(){if(Xa)return pi;Xa=1;const s=tu();class o extends s{constructor(t,e,r){super(t,e,r),Object.defineProperties(this,{audioLevel:{value:typeof e.audioInputLevel=="number"?e.audioInputLevel:null,enumerable:!0},jitter:{value:typeof e.jitter=="number"?e.jitter:null,enumerable:!0}})}}return pi=o,pi}var mi,Za;function cd(){if(Za)return mi;Za=1;const s=tu();class o extends s{constructor(t,e,r){super(t,e,r);let l=null;typeof e.frameWidthInput=="number"&&typeof e.frameHeightInput=="number"&&(l={},Object.defineProperties(l,{width:{value:e.frameWidthInput,enumerable:!0},height:{value:e.frameHeightInput,enumerable:!0}}));let _=null;typeof e.frameWidthSent=="number"&&typeof e.frameHeightSent=="number"&&(_={},Object.defineProperties(_,{width:{value:e.frameWidthSent,enumerable:!0},height:{value:e.frameHeightSent,enumerable:!0}})),Object.defineProperties(this,{captureDimensions:{value:l,enumerable:!0},dimensions:{value:_,enumerable:!0},captureFrameRate:{value:typeof e.frameRateInput=="number"?e.frameRateInput:null,enumerable:!0},frameRate:{value:typeof e.frameRateSent=="number"?e.frameRateSent:null,enumerable:!0},qualityLimitationReason:{value:["none","bandwidth","cpu","other"].find(p=>p===e.qualityLimitationReason)||null,enumerable:!0}})}}return mi=o,mi}var gi,eo;function ru(){if(eo)return gi;eo=1;const s=eu();class o extends s{constructor(t,e){super(t,e),Object.defineProperties(this,{bytesReceived:{value:typeof e.bytesReceived=="number"?e.bytesReceived:null,enumerable:!0},packetsReceived:{value:typeof e.packetsReceived=="number"?e.packetsReceived:null,enumerable:!0},jitter:{value:typeof e.jitter=="number"?e.jitter:null,enumerable:!0}})}}return gi=o,gi}var vi,to;function ud(){if(to)return vi;to=1;const s=ru();class o extends s{constructor(t,e){super(t,e),Object.defineProperties(this,{audioLevel:{value:typeof e.audioOutputLevel=="number"?e.audioOutputLevel:null,enumerable:!0}})}}return vi=o,vi}var _i,ro;function ld(){if(ro)return _i;ro=1;const s=ru();class o extends s{constructor(t,e){super(t,e);let r=null;typeof e.frameWidthReceived=="number"&&typeof e.frameHeightReceived=="number"&&(r={},Object.defineProperties(r,{width:{value:e.frameWidthReceived,enumerable:!0},height:{value:e.frameHeightReceived,enumerable:!0}})),Object.defineProperties(this,{dimensions:{value:r,enumerable:!0},frameRate:{value:typeof e.frameRateReceived=="number"?e.frameRateReceived:null,enumerable:!0},freezeCount:{value:typeof e.freezeCount=="number"?e.freezeCount:null,enumerable:!0}})}}return _i=o,_i}var bi,io;
4function iu(){if(io)return bi;io=1;const s=od(),o=cd(),u=ud(),t=ld();class e{constructor(l,_,p){if(typeof l!="string")throw new Error("RTCPeerConnection id must be a string");Object.defineProperties(this,{peerConnectionId:{value:l,enumerable:!0},localAudioTrackStats:{value:_.localAudioTrackStats.map(i=>new s(i.trackId,i,p)),enumerable:!0},localVideoTrackStats:{value:_.localVideoTrackStats.map(i=>new o(i.trackId,i,p)),enumerable:!0},remoteAudioTrackStats:{value:_.remoteAudioTrackStats.map(i=>new u(i.trackId,i)),enumerable:!0},remoteVideoTrackStats:{value:_.remoteVideoTrackStats.map(i=>new t(i.trackId,i)),enumerable:!0}})}}return bi=e,bi}var yi,no;function dd(){if(no)return yi;no=1;const s=Dt(),o=We();class u{constructor(e){if(!e)throw new Error("ApplicationMonitor requires a log instance");this._log=e,this._visibilityChangeHandler=null,this._boundHandleBeforeUnload=this._handleBeforeUnload.bind(this),this._setupVisibilityMonitoring(),this._setupBeforeUnloadMonitoring()}_setupVisibilityMonitoring(){if(typeof window>"u"||typeof document>"u"){this._log.debug("Not in browser environment, skipping setup of ApplicationMonitor");return}this._visibilityChangeHandler=e=>this._handleVisibilityChange(e);try{s.onVisibilityChange(1,this._visibilityChangeHandler),this._log.debug("ApplicationMonitor visibility monitoring initialized")}catch(e){this._log.error("Error initializing ApplicationMonitor visibility monitoring:",e)}}_setupBeforeUnloadMonitoring(){try{window.addEventListener("beforeunload",this._boundHandleBeforeUnload),this._log.debug("ApplicationMonitor beforeunload monitoring initialized")}catch(e){this._log.error("Error initializing ApplicationMonitor beforeunload monitoring:",e)}}cleanup(){this._log.debug("Cleaning up application event monitors"),this._visibilityChangeHandler&&(s.offVisibilityChange(1,this._visibilityChangeHandler),this._visibilityChangeHandler=null),typeof window<"u"&&this._boundHandleBeforeUnload&&window.removeEventListener("beforeunload",this._boundHandleBeforeUnload)}_handleVisibilityChange(e){e?o.application.resumed():o.application.backgrounded()}_handleBeforeUnload(){o.application.terminated()}}return yi=u,yi}var ki,so;function hd(){if(so)return ki;so=1;const{boolToString:s}=be(),o=We();class u{constructor(e){if(!e)throw new Error("NetworkMonitor requires a log instance");this._log=e,this._networkInformationHandler=null,this._setupNetworkInformationAPI()}_setupNetworkInformationAPI(){if(typeof globalThis.navigator>"u"||!globalThis.navigator.connection){this._log.debug("Network Information API not supported");return}const e=()=>{const r=navigator.connection;o.network.informationChanged({downlink:r.downlink,downlinkMax:r.downlinkMax,effectiveType:r.effectiveType,rtt:r.rtt,saveData:typeof r.saveData=="boolean"?s(r.saveData):void 0,type:r.type})};try{const r=navigator.connection;["change","typechange"].forEach(l=>{r.addEventListener(l,e)}),this._networkInformationHandler={stop:()=>{["change","typechange"].forEach(l=>{r.removeEventListener(l,e)})}},this._log.debug("Network Information API monitoring initialized")}catch(r){this._log.error("Error initializing Network Information API monitoring:",r)}}cleanup(){this._log.debug("Cleaning up network monitoring"),this._networkInformationHandler&&(this._networkInformationHandler.stop(),this._networkInformationHandler=null)}}return ki=u,ki}var Ti,ao;function fd(){if(ao)return Ti;ao=1;const s=Qe;function o(){return typeof globalThis<"u"&&typeof globalThis.PressureObserver=="function"?globalThis.PressureObserver:null}class u{constructor(){this._lastCpuPressure=null,this._cpuPressureObserver=null,this._sampleInterval=2e3,this._cpuPressureChangeListeners=[]}watchCpuPressure(e){return s.__awaiter(this,void 0,void 0,function*(){if(typeof e!="function")throw new Error("The CPU pressure change callback must be a function");const r=o();if(!r)throw new Error("PressureObserver is not supported in this environment");this._cpuPressureChangeListeners.push(e),this._cpuPressureObserver||(this._cpuPressureObserver=new r(l=>this._handleCpuPressureRecords(l)),yield this._cpuPressureObserver.observe("cpu",{sampleInterval:this._sampleInterval}))})}isSupported(){return!!o()}unwatchCpuPressure(e){this._cpuPressureChangeListeners=this._cpuPressureChangeListeners.filter(r=>r!==e),this._cpuPressureChangeListeners.length===0&&this.cleanup()}_handleCpuPressureRecords(e){if(!Array.isArray(e)||e.length===0)return;const r=e[e.length-1];if(!r)return;r.state!==this._lastCpuPressure&&(this._lastCpuPressure=r.state,this._cpuPressureChangeListeners.forEac
4h(_=>_(r)))}cleanup(){this._cpuPressureObserver&&(this._cpuPressureObserver.disconnect(),this._cpuPressureObserver=null),this._cpuPressureChangeListeners=[],this._lastCpuPressure=null}}return Ti=new u,Ti}var Si,oo;function pd(){if(oo)return Si;oo=1;const s=fd(),o=We();class u{constructor(e){if(!e)throw new Error("ResourceMonitor requires a log instance");this._log=e,this._cpuPressureHandler=null,this._setupCPUMonitoring()}_setupCPUMonitoring(){if(!s.isSupported()){this._log.debug("CPU pressure monitoring not supported");return}this._cpuPressureHandler=e=>{this._log.debug("CPU pressure changed:",e),o.system.cpuPressureChanged(e.state)},s.watchCpuPressure(this._cpuPressureHandler).then(()=>{this._log.debug("CPU pressure monitoring initialized")}).catch(e=>{this._log.error("Error initializing CPU pressure monitoring:",e)})}cleanup(){this._log.debug("Cleaning up resource monitors"),this._cpuPressureHandler&&(s.unwatchCpuPressure(this._cpuPressureHandler),this._cpuPressureHandler=null)}}return Si=u,Si}var wi,co;function md(){if(co)return wi;co=1;const s=dd(),o=hd(),u=pd();class t{constructor(r){if(!r)throw new Error("MonitorRegistry requires a log instance");this._log=r,this._monitors=[new s(r),new o(r),new u(r)]}cleanup(){this._monitors.forEach(r=>{try{r.cleanup()}catch(l){this._log.warn("Failed to cleanup monitor:",l)}})}}return wi=t,wi}var Ci,uo;function gd(){if(uo)return Ci;uo=1;const s=vt(),o=ad(),u=iu(),t=md(),e=We(),{flatMap:r,valueToJSON:l}=be();let _=0;class p extends s{constructor(d,h,w){super();const y=w.log.createLog("default",this),f=new Map;Object.defineProperties(this,{_log:{value:y},_clientTrackSwitchOffControl:{value:w.clientTrackSwitchOffControl||"disabled"},_contentPreferencesMode:{value:w.contentPreferencesMode||"disabled"},_instanceId:{value:++_},_options:{value:w},_participants:{value:f},_signaling:{value:h},_insightsMonitors:{value:w.eventObserver&&w.insights?new t(y):null},dominantSpeaker:{enumerable:!0,get(){return this.participants.get(h.dominantSpeakerSid)||null}},isRecording:{enumerable:!0,get(){return h.recording.isEnabled||!1}},localParticipant:{enumerable:!0,value:d},name:{enumerable:!0,value:h.name},participants:{enumerable:!0,value:f},sid:{enumerable:!0,value:h.sid},state:{enumerable:!0,get(){return h.state}},mediaRegion:{enumerable:!0,value:h.mediaRegion}}),c(this,d),g(this,h.recording),m(this,h),i(this),y.info("Created a new Room:",this.name),y.debug("Initial RemoteParticipants:",Array.from(this._participants.values()))}toString(){return this._instanceId?`[Room #${this._instanceId}: ${this.sid}]`:"[Room (uninitialized)]"}disconnect(){return this._log.info("Disconnecting"),this._signaling.disconnect(),this}getStats(){return this._signaling.getStats().then(d=>Array.from(d).map(([h,w])=>new u(h,Object.assign({},w,{localAudioTrackStats:n(this,w.localAudioTrackStats),localVideoTrackStats:n(this,w.localVideoTrackStats)}))))}refreshInactiveMedia(){const{tracks:d}=this.localParticipant,h=Array.from(d.values()).filter(({track:{kind:k}})=>k!=="data").map(({track:k})=>k),w=r(this.participants,k=>Array.from(k.tracks.values())).filter(({track:k})=>k&&k.kind!=="data").map(({track:k})=>k),y=h.concat(w),f=new Event("unmute");h.forEach(({isMuted:k,mediaStreamTrack:T})=>{k&&T.dispatchEvent(f)});const v=new Event("pause");return y.forEach(({_attachments:k,_elShims:T})=>k.forEach(I=>{const P=T.get(I);I.paused&&P&&!P.pausedIntentionally()&&I.dispatchEvent(v)})),this}toJSON(){return l(this)}}function i(b){const d=b.localParticipant._signaling.audioProcessors;b.localParticipant.audioTracks.forEach(({track:h})=>{const w=h.noiseCancellation;w&&!d.includes(w.vendor)&&(b._log.warn(`${w.vendor} is not supported in this room. disabling it permanently`),w.disablePermanently())})}function n(b,d){const h=b.localParticipant._signaling;return d.reduce((w,y)=>{const f=h.tracks.get(y.trackId),v=h.getSender(f);return v?[Object.assign({},y,{trackId:v.id})].concat(w):w},[])}function a(b,d){const{_log:h,_clientTrackSwitchOffControl:w,_contentPreferencesMode:y,_options:{MediaStream:f,mapMediaElement:v,disposeMediaElement:k}}=b,T=new o(d,{log:h,clientTrackSwitchOffControl:w,contentPreferencesMode:y,MediaStream:f,mapMediaElement:v,disposeMediaElement:k});h.info("A new RemoteParticipant connected:",T),b._participants.set(T.sid,T),b.emit("participantConnected",T);const I=[["reconnected","participantReconnected"],["reconnecting","participantReconnecting"],"trackDimensionsChanged","trackDisabled","trackEnabled","trackMessage","trackPublished","trackPublishPriorityChanged","trackStarted","trackSubscribed","trackSubscriptionFailed","trackSwitchedOff","trackSwitchedOn","trackUnpublished","trackUnsubscribed"].map(P=>{const[R,L]=Array.isArray(P)?P:[P,P];function M(){const S=[].slice.call(arguments);S.unshift(L),S.push(T),b.emit(...S)}return T.on(R,M),[R,M]});T.once("disconnected",function(){const R=b.dominantSpeaker;h.info("RemoteParticipant disconnected:",T),b._participants.delete(T.sid),I.forEach(L=>{T.removeListener(L[0],L[1])}),b.emit("participantDisconnected",T),T===R&&b.emit("dominantSpeakerChanged",b.dominantSpeaker)})}function c(b,d){const h=["trackWarning","trackWarningsCleared"].map(w=>
4({eventName:w,handler:(...y)=>b.emit(w,...y,d)}));h.forEach(({eventName:w,handler:y})=>d.on(w,y)),b.once("disconnected",()=>h.forEach(({eventName:w,handler:y})=>d.removeListener(w,y)))}function g(b,d){d.on("updated",function(){const w=d.isEnabled;b._log.info(`Recording ${w?"started":"stopped"}`),b.emit(`recording${w?"Started":"Stopped"}`)})}function m(b,d){const h=b._log;h.debug("Creating a new RemoteParticipant for each ParticipantSignaling in the RoomSignaling"),d.participants.forEach(a.bind(null,b)),h.debug("Setting up RemoteParticipant creation for all subsequent ParticipantSignalings that connect to the RoomSignaling"),d.on("participantConnected",a.bind(null,b)),d.on("dominantSpeakerChanged",()=>b.emit("dominantSpeakerChanged",b.dominantSpeaker)),d.on("transcription",w=>b.emit("transcription",w)),d.on("stateChanged",function w(y,f){switch(h.info("Transitioned to state:",y),y){case"disconnected":e.room.disconnected(),b.participants.forEach(v=>{v._unsubscribeTracks()}),b.emit(y,b,f),b.localParticipant.tracks.forEach(v=>{v.unpublish()}),b._insightsMonitors&&b._insightsMonitors.cleanup(),d.removeListener("stateChanged",w);break;case"reconnecting":e.room.reconnecting(f),setTimeout(()=>b.emit("reconnecting",f),0);break;default:e.room.reconnected(),setTimeout(()=>b.emit("reconnected"),0)}})}return Ci=p,Ci}var Pi,lo;function nu(){if(lo)return Pi;lo=1;class s{constructor(u){Object.defineProperties(this,{_min:{value:u.min||100},_max:{value:u.max||1e4},_jitter:{value:u.jitter>0&&u.jitter<=1?u.jitter:0},_factor:{value:u.factor||2},_attempts:{value:0,writable:!0},_duration:{enumerable:!1,get(){let t=this._min*Math.pow(this._factor,this._attempts);if(this._jitter){const e=Math.random(),r=Math.floor(e*this._jitter*t);t=(Math.floor(e*10)&1)===0?t-r:t+r}return Math.min(t,this._max)|0}},_timeoutID:{value:null,writable:!0}})}backoff(u){let t=this._duration;this._timeoutID&&(clearTimeout(this._timeoutID),this._timeoutID=null),this._timeoutID=setTimeout(()=>{this._attempts++,u()},t)}reset(){this._attempts=0,this._timeoutID&&(clearTimeout(this._timeoutID),this._timeoutID=null)}}return Pi=s,Pi}var Ie={},Ei,ho;function vd(){if(ho)return Ei;ho=1;const{difference:s,flatMap:o}=be();function u(){return String(Math.floor(Math.random()*4294967295))}class t{constructor(c,g,m){Object.defineProperties(this,{cName:{enumerable:!0,value:m},isSimulcastEnabled:{enumerable:!0,value:!1,writable:!0},primarySSRCs:{enumerable:!0,value:new Set},rtxPairs:{enumerable:!0,value:new Map},streamId:{enumerable:!0,value:g},trackId:{enumerable:!0,value:c}})}addSimulcastSSRCs(){if(this.isSimulcastEnabled)return;const c=[u(),u()];c.forEach(function(g){this.primarySSRCs.add(g)},this),this.rtxPairs.size&&c.forEach(function(g){this.rtxPairs.set(u(),g)},this)}addSSRC(c,g,m){g?this.rtxPairs.set(c,g):this.primarySSRCs.add(c),this.isSimulcastEnabled=this.isSimulcastEnabled||m}toSdpLines(c){const g=c?[]:Array.from(this.rtxPairs.entries()).map(y=>y.reverse()),m=Array.from(this.primarySSRCs.values()),b=g.length?o(g):m,d=o(b,y=>[`a=ssrc:${y} cname:${this.cName}`,`a=ssrc:${y} msid:${this.streamId} ${this.trackId}`]),h=g.map(y=>`a=ssrc-group:FID ${y.join(" ")}`),w=[`a=ssrc-group:SIM ${m.join(" ")}`];return h.concat(d).concat(w)}}function e(a,c){return(a.match(new RegExp(c,"gm"))||[]).map(m=>(m.match(new RegExp(c))||[]).slice(1))}function r(a){const c="^a=ssrc-group:SIM ([0-9]+) ([0-9]+) ([0-9]+)$";return new Set(o(e(a,c)))}function l(a,c,g){const m=`a=ssrc:${c} ${g}:(.+)`;return a.match(new RegExp(m))[1]}function _(a){const c="^a=ssrc-group:FID ([0-9]+) ([0-9]+)$";return new Map(e(a,c).map(g=>g.reverse()))}function p(a){const[c,g]=o(e(a,"^a=msid:(.+) (.+)$"));return o(e(a,"^a=ssrc:(.+) cname:.+$")).map(b=>[b,c,g])}function i(a){const c=r(a),g=_(a);return p(a).reduce((b,d)=>{const h=d[0],w=d[1],y=d[2],f=b.get(y)||new t(y,w,l(a,h,"cname")),v=g.get(h)||null;return f.addSSRC(h,v,c.has(h)),b.set(y,f)},new Map)}function n(a,c){const g=i(a),m=Array.from(g.keys());let b=Array.from(c.keys());const d=s(m,b),h=s(b,m);o(d,P=>g.get(P)).forEach(P=>{P.addSimulcastSSRCs(),c.set(P.trackId,P)}),b=Array.from(c.keys());
4const y=s(b,h),f=o(y,P=>c.get(P)),v=!a.match(/a=rtpmap:[0-9]+ rtx/),k=o(f,P=>P.toSdpLines(v)),T=o(new Set(a.split(`\r
5`).concat(k))),I="a=x-google-flag:conference";return a.match(I)||T.push(I),T.join(`\r
6`)}return Ei=n,Ei}var fo;function Qn(){if(fo)return Ie;fo=1;const{difference:s,flatMap:o}=be(),u=vd(),t={0:"PCMU",8:"PCMA"};function e(T){return Array.from(l(T)).reduce((I,P)=>{const R=P[0],L=P[1],M=I.get(L)||[];return I.set(L,M.concat(R))},new Map)}function r(T){return i(T).reduce((I,P)=>{const R=p(P);return R?I.set(R,P):I},new Map)}function l(T){return n(T).reduce((I,P)=>{if(I.has(P))return I;const R=new RegExp(`a=rtpmap:${P} ([^/]+)`),L=T.match(R),M=L?L[1].toLowerCase():t[P]?t[P].toLowerCase():"";return I.set(P,M)},new Map)}function _(T,I){const P=new RegExp(`^a=fmtp:${T} (.+)$`,"m"),R=I.match(P);return R&&R[1].split(";").reduce((L,M)=>{const[S,A]=M.split("=");return L[S]=isNaN(A)?A:parseInt(A,10),L},{})}function p(T){const I=T.match(/^a=mid:(.+)$/m);return I&&I[1]}function i(T,I,P){return T.replace(/\r\n\r\n$/,`\r
7`).split(`\r
8m=`).slice(1).map(R=>`m=${R}`).filter(R=>{const L=new RegExp(`m=${I||".*"}`,"gm"),M=new RegExp(`a=${P||".*"}`,"gm");return L.test(R)&&M.test(R)})}function n(T){const P=T.split(`\r
9`)[0].match(/([0-9]+)/g);return P?P.slice(1).map(R=>parseInt(R,10)):[]}function a(T,I){const P=I.split(`\r
10`);let R=P[0];const L=P.slice(1);return R=R.replace(/([0-9]+\s?)+$/,T.join(" ")),[R].concat(L).join(`\r
11`)}function c(T,I){const P=i(T);return[T.split(`\r
12m=`)[0]].concat(P.map(L=>{if(L=L.replace(/\r\n$/,""),!/^m=video/.test(L))return L;const M=e(L),S=n(L),A=new Set(M.get("vp8")||[]);return S.some(D=>A.has(D))?u(L,I):L})).concat("").join(`\r
13`)}function g(T,I,P,R=!1){const L=r(P),M=r(I),S=i(T);return[T.split(`\r
14m=`)[0]].concat(S.map(E=>{if(E=E.replace(/\r\n$/,""),!/^m=video/.test(E))return E;const D=E.match(/^a=mid:(.+)$/m),O=D&&D[1];if(!O)return E;const j=L.get(O),U=l(j),Q=n(j),K=Q.length&&U.get(Q[0])==="vp8";return R||!K?M.get(O).replace(/\r\n$/,""):E})).concat("").join(`\r
15`)}function m(T,I,P){const R=Array.from(P).reduce((L,[M,S])=>(i(T,M,"send(only|recv)").map(p).filter(D=>!I.has(D)).forEach((D,O)=>L.set(D,S[O])),L),new Map);return b(T,R)}function b(T,I){const P=i(T);return[T.split(`\r
16m=`)[0]].concat(P.map(L=>{if(!/^m=(audio|video)/.test(L))return L;const M=p(L);if(!M)return L;const S=I.get(M);if(!S)return L;const A=(L.match(/^a=msid:(.+)$/m)||[])[1];if(!A)return L;const[E,D]=A.split(" "),O=new RegExp(`msid:${E}${D?` ${D}`:""}$`,"gm");return L.replace(O,`msid:${E} ${S}`)})).join(`\r
17`)}function d(T,I){return T.split(`\r
18`).filter(P=>!I.find(R=>new RegExp("a=ssrc:.*"+R+":","g").test(P))).join(`\r
19`)}function h(T){const I=i(T);return[T.split(`\r
20m=`)[0]].concat(I.map(R=>{if(!/^m=video/.test(R))return R;const M=e(R).get("rtx");if(!M)return R;const S=new Set(n(R));M.forEach(O=>S.delete(O));const A=R.match(/a=ssrc-group:FID [0-9]+ ([0-9]+)/),E=A&&A[1],D=[/^a=fmtp:.+ apt=.+$/,/^a=rtpmap:.+ rtx\/.+$/,/^a=ssrc-group:.+$/].concat(E?[new RegExp(`^a=ssrc:${E} .+$`)]:[]);return R=R.split(`\r
21`).filter(O=>D.every(j=>!j.test(O))).join(`\r
22`),a(Array.from(S),R)})).join(`\r
23`)}function w(T,I){const P=Object.entries(I).map(([R,L])=>`${R}=${L}`).join(";");return`a=fmtp:${T} ${P}`}function y(T){const I=i(T);return[T.split(`\r
24m=`)[0]].concat(I.map(R=>{if(!/^m=(audio|video)/.test(R))return R;const L=new Set(n(R));return R.split(`\r
25`).filter(M=>{const S=M.match(/^a=(fmtp|rtpmap|rtcp-fb):(\d+)/);if(!S)return!0;const A=parseInt(S[2],10);return L.has(A)}).join(`\r
26`)})).join(`\r
27`)}function f(T,I){const P=i(T),R=T.split(`\r
28m=`)[0];return I=I||P.filter(L=>/^m=audio/.test(L)).map(p),[R].concat(P.map(L=>{if(!/^m=audio/.test(L))return L;const S=e(L).get("opus");if(!S)return L;const A=_(S,L);if(!A)return L;const E=w(S,A),D=p(L);I.includes(D)?A.usedtx=1:delete A.usedtx;const O=w(S,A);return L.replace(E,O)})).join(`\r
29`)}function v(T,I){I=I.map(({codec:M})=>M.toLowerCase());const P=o(I,M=>T.get(M)||[]),R=s(Array.from(T.keys()),I),L=o(R,M=>T.get(M));return P.concat(L)}function k(T,I,P){const R=i(T);return[T.split(`\r
30m=`)[0]].concat(R.map(M=>
30{if(!/^m=(audio|video)/.test(M))return M;const S=M.match(/^m=(audio|video)/)[1],A=e(M),D=v(A,S==="audio"?I:P),O=a(D,M),j=A.get("pcma")||[],U=A.get("pcmu")||[];return(S==="audio"?new Set(j.concat(U)):new Set).has(D[0])?O.replace(/\r\nb=(AS|TIAS):([0-9]+)/g,""):O})).join(`\r
31`)}return Ie.addOrRewriteNewTrackIds=m,Ie.addOrRewriteTrackIds=b,Ie.createCodecMapForMediaSection=e,Ie.createPtToCodecName=l,Ie.disableRtx=h,Ie.enableDtxForOpus=f,Ie.getMediaSections=i,Ie.removeUnreferencedCodecAttributes=y,Ie.removeSSRCAttributes=d,Ie.revertSimulcast=g,Ie.setCodecPreferences=k,Ie.setSimulcast=c,Ie}var Ri,po;function _d(){if(po)return Ri;po=1;class s{constructor(u){u=Object.assign({getKey:function(e){return e},getValue:function(e){return e},isLessThanOrEqualTo:function(e,r){return e<=r}},u),Object.defineProperties(this,{_getKey:{value:u.getKey},_getValue:{value:u.getValue},_isLessThanOrEqualTo:{value:u.isLessThanOrEqualTo},_map:{value:new Map}})}toMap(){return new Map(this._map)}updateAndFilter(u){return u.filter(this.update,this)}update(u){const t=this._getKey(u),e=this._getValue(u);return this._map.has(t)&&this._isLessThanOrEqualTo(e,this._map.get(t))?!1:(this._map.set(t,e),!0)}}return Ri=s,Ri}var Li,mo;function bd(){if(mo)return Li;mo=1;const s=_d();class o{constructor(){Object.defineProperties(this,{_filter:{value:new s({getKey:function(e){return e.ufrag},isLessThanOrEqualTo:function(e,r){return e.revision<=r.revision}})},_ufrag:{writable:!0,value:null},ufrag:{enumerable:!0,get(){return this._ufrag}}})}setUfrag(t){this._ufrag=t;const e=this._filter.toMap().get(t);return e?e.candidates:[]}update(t){t.candidates=t.candidates||[];const e=this._filter.toMap().get(t.ufrag),r=e?e.candidates:[];return this._filter.update(t)&&this._ufrag===t.ufrag?t.candidates.slice(r.length):[]}}return Li=o,Li}var Oi,go;function yd(){if(go)return Oi;go=1;const{ICE_ACTIVITY_CHECK_PERIOD_MS:s,ICE_INACTIVITY_THRESHOLD_MS:o}=Se();class u{constructor(e,r){r=Object.assign({activityCheckPeriodMs:s,inactivityThresholdMs:o},r),Object.defineProperties(this,{_activityCheckPeriodMs:{value:r.activityCheckPeriodMs},_inactivityThresholdMs:{value:r.inactivityThresholdMs},_lastActivity:{value:null,writable:!0},_peerConnection:{value:e},_timer:{value:null,writable:!0},_onIceConnectionStateChanged:{value:null,writable:!0}})}_getActivePairStat(e){return Array.from(e.values()).find(_=>_.type==="candidate-pair"&&_.nominated)||{bytesReceived:0,timestamp:Math.round(new Date().getTime())}}_getIceConnectionStats(){return this._peerConnection.getStats().then(e=>this._getActivePairStat(e)).catch(()=>null)}_scheduleInactivityCallback(e){e&&this._onIceConnectionStateChanged===null?(this._onIceConnectionStateChanged=()=>{this._peerConnection.iceConnectionState==="disconnected"&&e()},this._peerConnection.addEventListener?this._peerConnection.addEventListener("iceconnectionstatechange",this._onIceConnectionStateChanged):this._peerConnection.oniceconnectionstatechange=this._onIceConnectionStateChanged):!e&&this._onIceConnectionStateChanged&&(this._peerConnection.removeEventListener?this._peerConnection.removeEventListener("iceconnectionstatechange",this._onIceConnectionStateChanged):this._peerConnection.oniceconnectionstatechange=null,this._onIceConnectionStateChanged=null)}start(e){this.stop(),this._timer=setInterval(()=>{this._getIceConnectionStats().then(r=>{r&&((!this._lastActivity||this._lastActivity.bytesReceived!==r.bytesReceived)&&(this._lastActivity=r,this._scheduleInactivityCallback(null)),r.timestamp-this._lastActivity.timestamp>=this._inactivityThresholdMs&&(this._peerConnection.iceConnectionState==="disconnected"?e():this._onIceConnectionStateChanged===null&&this._scheduleInactivityCallback(e)))})},this._activityCheckPeriodMs)}stop(){this._scheduleInactivityCallback(null),this._timer!==null&&(clearInterval(this._timer),this._timer=null,this._lastActivity=null)}}return Oi=u,Oi}var Ii,vo;function kd(){if(vo)return Ii;vo=1;const{EventEmitter:s}=Le();class o extends s{constructor(t){super(),Object.defineProperties(this,{_dataChannel:{value:t},_messageQueue:{value:[]}}),t.addEventListener("open",()=>
31{this._messageQueue.splice(0).forEach(e=>this._publish(e))}),t.addEventListener("message",({data:e})=>{try{const r=JSON.parse(e);this.emit("message",r)}catch{}}),this.publish({type:"ready"})}_publish(t){const e=JSON.stringify(t);try{this._dataChannel.send(e)}catch{}}publish(t){const e=this._dataChannel;return e.readyState==="closing"||e.readyState==="closed"?!1:e.readyState==="connecting"?(this._messageQueue.push(t),!0):(this._publish(t),!0)}}return Ii=o,Ii}var Mi,_o;function Td(){if(_o)return Mi;_o=1;const s=Wc(),o=kd();class u extends s{constructor(e){super(e.label,e.maxPacketLifeTime,e.maxRetransmits,e.ordered),Object.defineProperties(this,{_dataChannel:{value:e}}),e.binaryType="arraybuffer",e.addEventListener("message",r=>{this.emit("message",r.data)}),e.addEventListener("close",()=>{this.emit("close")})}stop(){this._dataChannel.close(),super.stop()}toDataTransport(){return new o(this._dataChannel)}}return Mi=u,Mi}var Di,bo;function Sd(){if(bo)return Di;bo=1;const s=Vc();class o extends s{constructor(t,e){super(t,e)}}return Di=o,Di}var Ai,yo;function wd(){if(yo)return Ai;yo=1;const{getMediaSections:s}=Qn();class o{constructor(){Object.defineProperties(this,{_midsToTrackIds:{value:new Map,writable:!0}})}match(t){return this._midsToTrackIds.get(t.transceiver.mid)||null}update(t){const e=s(t,"(audio|video)");this._midsToTrackIds=e.reduce((r,l)=>{const _=l.match(/^a=mid:(.+)$/m)||[],p=l.match(/^a=msid:.+ (.+)$/m)||[],i=_[1],n=p[1];return i&&n?r.set(i,n):r},this._midsToTrackIds)}}return Ai=o,Ai}var xi,ko;function Cd(){if(ko)return xi;ko=1;const{createPtToCodecName:s,getMediaSections:o}=Qn();function u(g){const m={type:g.type};return g.type!=="rollback"&&(m.sdp=t(g.sdp)),new RTCSessionDescription(m)}function t(g){const m=o(g);return[g.split(`\r
32m=`)[0]].concat(m.map(e)).join(`\r
33`)}function e(g){const m=s(g);g=l(g,m),g=r(g);const b=_(m),d=b.get("rtx")||new Set,h=new Set,w=p(g,m,d,h),y=i(w,h),f=Array.from(h);return["h264","vp8","vp9"].reduce((T,I)=>{const P=b.get(I)||new Set;return Array.from(P).reduce((R,L)=>y.has(L)?R:R.add(L),T)},new Set).forEach(T=>{if(f.length){const I=f.shift();g=n(g,I),g=c(g,I,T)}}),f.forEach(T=>{g=n(g,T),g=a(g,T)}),g}function r(g){const m=g.split(`\r
34`),b=new Map;let d=96;for(let h=0;h<m.length;h++){const w=m[h].match(/^a=rtpmap:(\d+) ([^/]+)/);if(w){const y=parseInt(w[1],10),f=w[2].toLowerCase();if(b.has(y)&&b.get(y)!==f){for(;b.has(d)||d===y;)d++;const v=d;b.set(v,f),m[h]=m[h].replace(`a=rtpmap:${y}`,`a=rtpmap:${v}`);for(let k=h+1;k<m.length;k++)m[k].match(new RegExp(`^a=(fmtp|rtcp-fb):${y}\\b`))&&(m[k]=m[k].replace(new RegExp(`^a=(fmtp|rtcp-fb):${y}\\b`),`a=$1:${v}`))}else b.set(y,f)}}return m.join(`\r
35`)}function l(g,m){return Array.from(m.keys()).reduce((b,d)=>{const h=new RegExp(`^a=rtpmap:${d} rtx.+$`,"gm");return(b.match(h)||[]).slice(m.get(d)==="rtx"?1:0).reduce((w,y)=>{const f=new RegExp(`\r
36${y}`),v=new RegExp(`\r
37a=fmtp:${d} apt=[0-9]+`);return w.replace(f,"").replace(v,"")},b)},g)}function _(g){const m=new Map;return g.forEach((b,d)=>{const h=m.get(b)||new Set;return m.set(b,h.add(d))}),m}function p(g,m,b,d){return Array.from(b).reduce((h,w)=>{const y=new RegExp(`a=fmtp:${w} apt=(\\d+)`),f=g.match(y);if(!f)return d.add(w),h;const v=Number.parseInt(f[1]);return!m.has(v)||m.get(v)==="rtx"?(d.add(w),h):h.set(w,v)},new Map)}function i(g,m){const b=Array.from(g).reduce((d,h)=>{const w=h[0],y=h[1],f=d.get(y)||new Set;return d.set(y,f.add(w))},new Map);return Array.from(b).reduce((d,h)=>{const w=h[0],y=Array.from(h[1]);return y.length>1?(y.forEach(f=>{m.add(f)}),d):d.set(w,y[0])},new Map)}function n(g,m){const b=new RegExp(`a=fmtp:${m}.*\r
38`,"gm");return g.replace(b,"")}function a(g,m){const b=new RegExp(`a=rtpmap:${m}.*\r
39`,"gm");return g.replace(b,"")}function c(g,m,b){return g.endsWith(`\r
40`)?`${g}a=fmtp:${m} apt=${b}\r
41`:`${g}\r
42a=fmtp:${m} apt=${b}`}return xi=u,xi}var qi,To;function Pd(){if(To)return qi;To=1;const s=nu(),{RTCPeerConnection:o,getStats:u}=Fn(),t=Me(),{DEFAULT_ICE_GATHERING_TIMEOUT_MS:e,DEFAULT_LOG_LEVEL:r,DEFAULT_SESSION_TIMEOUT_SEC:l,iceRestartBackoffConfig:_}=Se(),{addOrRewriteNewTrackIds:p,addOrRewriteTrackIds:i,createCodecMapForMediaSection:n,disableRtx:a,enableDtxForOpus:c,getMediaSections:g,removeUnreferencedCodecAttributes:m,removeSSRCAttributes:b,revertSimulcast:d,setCodecPreferences:h,setSimulcast:w}=Qn(),y=Ke(),{MediaClientLocalDescFailedError:f,MediaClientRemoteDescFailedError:v}=$e(),{buildLogLevels:k,isChromeScreenShareTrack:T,oncePerTick:I,defer:P}=be(),R=bd(),L=yd(),M=Td(),S=Sd(),A=st(),E=xe(),D=wd(),O=Cd(),j=We(),U=t.guessBrowser(),Q=U==="chrome",K=U==="firefox",N=U==="safari";let B=0;const le={open:["closed","updating"],updating:["closed","open"],closed:[]};class ee extends A{constructor(C,x,V,H){super("open",le),H=Object.assign({enableDscp:!1,dummyAudioMediaStreamTrack:null,isChromeScreenShareTrack:T,iceServers:[],logLevel:r,offerOptions:{},revertSimulcast:d,sessionTimeout:l*1e3,setCodecPreferences:h,setSimulcast:w,Backoff:s,IceConnectionMonitor:L,RTCIceCandidate,RTCPeerConnection:o,RTCSessionDescription,Timeout:y},H);const X=J(Object.assign({},H,H.rtcConfiguration)),ie=k(H.logLevel),ve=H.RTCPeerConnection;H.enableDscp===!0&&(H.chromeSpecificConstraints=H.chromeSpecificConstraints||{},H.chromeSpecificConstraints.optional=H.chromeSpecificConstraints.optional||[],H.
42chromeSpecificConstraints.optional.push({googDscp:!0}));const ke=H.log?H.log.createLog("webrtc",this):new E("webrtc",this,ie,H.loggerName),ge=new ve(X,{chromeSpecificConstraints:H.chromeSpecificConstraints,applyCodecPreferences:we=>this._applyCodecPreferencesToTransceiver(we)});H.dummyAudioMediaStreamTrack&&ge.addTrack(H.dummyAudioMediaStreamTrack),Object.defineProperties(this,{_appliedTrackIdsToAttributes:{value:new Map,writable:!0},_dataChannels:{value:new Map},_dataTrackReceivers:{value:new Set},_descriptionRevision:{writable:!0,value:0},_didGenerateLocalCandidates:{writable:!0,value:!1},_dtlsTransport:{writable:!0,value:null},_enableDscp:{value:H.enableDscp},_encodingParameters:{value:x},_isChromeScreenShareTrack:{value:H.isChromeScreenShareTrack},_iceGatheringFailed:{value:!1,writable:!0},_iceGatheringTimeout:{value:new H.Timeout(()=>this._handleIceGatheringTimeout(),e,!1)},_iceRestartBackoff:{value:new H.Backoff(_)},_instanceId:{value:++B},_isIceConnectionInactive:{writable:!0,value:!1},_isIceLite:{writable:!0,value:!1},_isIceRestartBackoffInProgress:{writable:!0,value:!1},_isRestartingIce:{writable:!0,value:!1},_lastIceConnectionState:{writable:!0,value:null},_lastStableDescriptionRevision:{writable:!0,value:0},_localCandidates:{writable:!0,value:[]},_localCodecs:{value:new Set},_localCandidatesRevision:{writable:!0,value:1},_localDescriptionWithoutSimulcast:{writable:!0,value:null},_localDescription:{writable:!0,value:null},_localUfrag:{writable:!0,value:null},_log:{value:ke},_eventObserver:{value:H.eventObserver},_remoteCodecMaps:{value:new Map},_rtpSenders:{value:new Map},_rtpNewSenders:{value:new Set},_iceConnectionMonitor:{value:new H.IceConnectionMonitor(ge)},_mediaTrackReceivers:{value:new Set},_needsAnswer:{writable:!0,value:!1},_negotiationRole:{writable:!0,value:null},_offerOptions:{writable:!0,value:H.offerOptions},_onEncodingParametersChanged:{value:I(()=>{this._needsAnswer||$(this)})},_peerConnection:{value:ge},_preferredAudioCodecs:{value:V.audio},_preferredVideoCodecs:{value:V.video},_shouldApplyDtx:{value:V.audio.every(({codec:we})=>we!=="opus")||V.audio.some(({codec:we,dtx:Ve})=>we==="opus"&&Ve)},_queuedDescription:{writable:!0,value:null},_iceReconnectTimeout:{value:new H.Timeout(()=>{ke.debug("ICE reconnect timed out"),this.close()},H.sessionTimeout,!1)},_recycledTransceivers:{value:{audio:[],video:[]}},_replaceTrackPromises:{value:new Map},_remoteCandidates:{writable:!0,value:new R},_setSimulcast:{value:H.setSimulcast},_revertSimulcast:{value:H.revertSimulcast},_setCodecPreferences:{value:H.setCodecPreferences},_RTCIceCandidate:{value:H.RTCIceCandidate},_RTCPeerConnection:{value:H.RTCPeerConnection},_RTCSessionDescription:{value:H.RTCSessionDescription},_shouldOffer:{writable:!0,value:!1},_shouldRestartIce:{writable:!0,value:!1},_trackIdsToAttributes:{value:new Map,writable:!0},_trackMatcher:{writable:!0,value:null},_mediaTrackSenderToPublisherHints:{value:new Map},id:{enumerable:!0,value:C}}),x.on("changed",this._onEncodingParametersChanged),j.pc.signalingState(this.id,ge.signalingState),j.pc.iceGatheringState(this.id,ge.iceGatheringState),j.pc.iceConnectionState(this.id,ge.iceConnectionState),j.pc.connectionState(this.id,this.connectionState),ge.addEventListener("connectionstatechange",this._handleConnectionStateChange.bind(this)),ge.addEventListener("datachannel",this._handleDataChannelEvent.bind(this)),ge.addEventListener("icecandidate",this._handleIceCandidateEvent.bind(this)),ge.addEventListener("iceconnectionstatechange",this._handleIceConnectionStateChange.bind(this)),ge.addEventListener("icegatheringstatechange",this._handleIceGatheringStateChange.bind(this)),ge.addEventListener("signalingstatechange",this._handleSignalingStateChange.bind(this)),ge.addEventListener("track",this._handleTrackEvent.bind(this));const ne=this;this.on("stateChanged",function we(Ve){Ve==="closed"&&(ne.removeListener("stateChanged",we),ne._dataChannels.forEach((Kn,At)=>{ne.removeDataTrackSender(At)}))})}toString(){return`[PeerConnectionV2 #${this._instanceId}: ${this.id}]`}setEffectiveAdaptiveSimulcast(C){this._log.debug("Setting setEffectiveAdaptiveSimulcast: ",C),this._preferredVideoCodecs.forEach(x=>{"adaptiveSimulcast"in x&&(x.adaptiveSimulcast=C)})}get _shouldApplySimulcast(){return!Q&&!N?!1:this._preferredVideoCodecs.some(x=>x.codec.toLowerCase()==="vp8"&&x.simulcast&&x.adaptiveSimulcast!==!1)}get connectionState(){return this.iceConnectionState==="failed"?"failed":this._peerConnection.connectionState||this.iceConnectionState}get iceConnectionState(){return this._isIceConnectionInactive&&this._peerConnection.iceConnectionState==="disconnected"||this._iceGatheringFailed?"failed":this._peerConnection.iceConnectionState}get isApplicationSectionNegotiated(){return this._peerConnection.signalingState!=="closed"?this._peerConnection.localDescription?g(this._peerConnection.localDescription.sdp,"application").length>0:!1:!0}get _isAdaptiveSimulcastEnabled(){const C=this._preferredVideoCodecs.find(x=>"adaptiveSimulcast"in x);return C&&C.adaptiveSimulcast===!0}_maybeUpdateEncodings(C,x,V=!1){if(C.kind!=="video"||C.readyState==="ended")return!1;const{height:H,width:X}=C.getSettings();if(typeof H!="number"||typeof X!="number")return!1;const ie=t.guessBrowser();return ie==="safari"||ie==="chrome"&&this._isAdaptiveSimulcastEnabled?(this._updateEncodings(C,x,V),!0):!1}_updateEncodings(C,x,V){if(this._isChromeScreenShareTrack(C)){const H=[{scaleResolutionDownBy:1},{scaleResolutionDownBy:1}];x.forEach((X,ie)=>{const ve=H[ie];ve?(X.scaleResolutionDownBy=ve.scaleResolutionDownBy,V&&delete X.active):(X.active=!1,delete X.scaleResolutionDownBy)})}else{const{width:H,height:X}=C.getSettings(),ie=[{pixels:960*540,maxActiveLayers:3},{pixels:480*270,maxActiveLayers:2},{pixels:0,maxActiveLayers:1}],ve=H*X,ke=ie.find(ne=>ve>=ne.pixels),ge=Math.min(x.length,ke.maxActiveLayers);x.forEach((ne,we)=>{we<ge?(ne.scaleResolutionDownBy=1<<ge-we-1,V&&(ne.active=!0)):(ne.active=!1,delete ne.scaleResolutionDownBy)})}this._log.debug("_updateEncodings:",x.map(({active:H,scaleResolutionDownBy:X},ie)=>`[${ie}: ${H}, ${X||0}]`).join(", "))}_addIceCandidate(C){return Promise.resolve().then(()=>(j.pc.iceCandidate(this.id,C,!0),C=new this._RTCIceCandidate(C),this._peerConnection.addIceCandidate(C))).catch(x=>{this._log.warn(`Failed to add RTCIceCandidate ${C?`"${C.candidate}"`:"null"}: `+x.message)})}_addIceCandidates(C){return Promise.all(C.map(this._addIceCandidate,this)).then(()=>{})}_applyCodecPreferencesToTransceiver(C){if(!C||!C.receiver||!C.receiver.track)return;const x=C.receiver.track.kind,V=x==="audio"?this._preferredAudioCodecs:this._preferredVideoCodecs;if(!(!V||V.length===0))try{const H=RTCRtpReceiver.getCapabilities(x).codecs,X=this._sortCodecsByPreference(H,V);C.setCodecPreferences(X)}catch(H){this._log.warn("Failed to apply codec preferences:",H)}}_sortCodecsByPreference(C,x){const V=[],H=[],X=x.map(ie=>(typeof ie=="string"?ie:ie.codec).toLowerCase());
42return C.forEach(ie=>{const ve=ie.mimeType.split("/")[1].toLowerCase(),ke=X.indexOf(ve);ke>=0?(V[ke]||(V[ke]=[]),V[ke].push(ie)):H.push(ie)}),V.flat().concat(H)}_addOrUpdateTransceiver(C){const x=ce(this,C.kind);if(x&&x.sender){const H=x.sender.track?x.sender.track.id:null;return H&&this._log.warn(`Reusing transceiver: ${x.mid}] ${H} => ${C.id}`),this._replaceTrackPromises.set(x,x.sender.replaceTrack(C).then(()=>{x.direction="sendrecv"},()=>{}).finally(()=>{this._replaceTrackPromises.delete(x)})),x}const V=this._peerConnection.addTransceiver(C,{});return this._applyCodecPreferencesToTransceiver(V),V}_checkIceBox(C){const x=me(C);if(!x)return Promise.resolve();const V=this._remoteCandidates.setUfrag(x);return this._addIceCandidates(V)}_answer(C){return Promise.resolve().then(()=>(this._negotiationRole||(this._negotiationRole="answerer"),this._setRemoteDescription(C))).catch(()=>{throw new v}).then(()=>this._peerConnection.createAnswer()).then(x=>{K?x=new this._RTCSessionDescription({sdp:a(x.sdp),type:x.type}):x=O(x);let V=b(x.sdp,["mslabel","label"]);if(this._shouldApplySimulcast){let H=V;V=this._setSimulcast(H,this._trackIdsToAttributes),V=this._revertSimulcast(V,H,C.sdp)}return V=V.replace(/42e015/g,"42e01f"),this._setLocalDescription({type:x.type,sdp:V})}).then(()=>this._checkIceBox(C)).then(()=>this._queuedDescription&&this._updateDescription(this._queuedDescription)).then(()=>(this._queuedDescription=null,this._maybeReoffer(this._peerConnection.localDescription))).catch(x=>{const V=x instanceof v?x:new f;throw this._publishMediaWarning({message:"Failed to _answer",code:V.code,error:x}),V})}_close(){return this._iceConnectionMonitor.stop(),this._peerConnection.signalingState!=="closed"?(this._peerConnection.close(),this._dtlsTransport&&!Q&&j.pc.dtlsTransportState(this.id,this._dtlsTransport.state),j.pc.signalingState(this.id,this._peerConnection.signalingState),j.pc.iceConnectionState(this.id,this._peerConnection.iceConnectionState),j.pc.connectionState(this.id,this._peerConnection.connectionState),this.preempt("closed"),this._encodingParameters.removeListener("changed",this._onEncodingParametersChanged),!0):!1}_handleConnectionStateChange(){j.pc.connectionState(this.id,this.connectionState),this.emit("connectionStateChanged")}_handleDataChannelEvent(C){const x=C.channel,V=new M(x);this._dataTrackReceivers.add(V),x.addEventListener("close",()=>{this._dataTrackReceivers.delete(V)}),this.emit("trackAdded",V)}_handleGlare(C){return this._log.debug("Glare detected; rolling back"),this._isRestartingIce&&(this._log.debug("An ICE restart was in progress; we'll need to restart ICE again after rolling back"),this._isRestartingIce=!1,this._shouldRestartIce=!0),Promise.resolve().then(()=>(this._trackIdsToAttributes=new Map(this._appliedTrackIdsToAttributes),this._setLocalDescription({type:"rollback"}))).then(()=>(this._needsAnswer=!1,this._answer(C))).then(x=>x?Promise.resolve():this._offer())}_publishMediaWarning({message:C,code:x,error:V,sdp:H}){this._eventObserver.emit("event",{level:"warning",name:"error",group:"media",payload:{message:C,code:x,context:JSON.stringify({error:V.message,sdp:H})}})}_handleIceCandidateEvent(C){C.candidate&&(this._log.debug("Clearing ICE gathering timeout"),this._didGenerateLocalCandidates=!0,this._iceGatheringTimeout.clear(),this._localCandidates.push(C.candidate),j.pc.iceCandidate(this.id,C.candidate));const x={ice:{candidates:this._isIceLite?[]:this._localCandidates.slice(),ufrag:this._localUfrag},id:this.id};C.candidate||(x.ice.complete=!0),this._isIceLite&&C.candidate||(x.ice.revision=this._localCandidatesRevision++,this.emit("candidates",x))}_handleIceConnectionStateChange(){const{iceConnectionState:C}=this._peerConnection,x=["connected","completed"].includes(C),V=this._log;V.debug(`ICE connection state is "${C}"`),j.pc.iceConnectionState(this.id,C),x&&(this._iceReconnectTimeout.clear(),this._iceRestartBackoff.reset()),this._lastIceConnectionState!=="failed"&&C==="failed"&&!this._shouldRestartIce&&!this._isRestartingIce?(V.warn("ICE failed"),this._initiateIceRestartBackoff()):["disconnected","failed"].includes(this._lastIceConnectionState)&&x&&V.debug("ICE reconnected"),C==="connected"?(this._isIceConnectionInactive=!1,this._iceConnectionMonitor.start(()=>{this._iceConnectionMonitor.stop(),!this._shouldRestartIce&&!this._isRestartingIce&&(V.warn("ICE Connection Monitor detected inactivity"),this._isIceConnectionInactive=!0,this._initiateIceRestartBackoff(),this.emit
42("iceConnectionStateChanged"),this.emit("connectionStateChanged"))})):["disconnected","completed"].includes(C)||(this._iceConnectionMonitor.stop(),this._isIceConnectionInactive=!1),this._lastIceConnectionState=C,this.emit("iceConnectionStateChanged")}_handleIceGatheringTimeout(){this._log.warn("ICE failed to gather any local candidates"),this._iceGatheringFailed=!0,this._initiateIceRestartBackoff(),this.emit("iceConnectionStateChanged"),this.emit("connectionStateChanged")}_handleIceGatheringStateChange(){const{iceGatheringState:C}=this._peerConnection;j.pc.iceGatheringState(this.id,C);const x=this._log;x.debug(`ICE gathering state is "${C}"`);const{delay:V,isSet:H}=this._iceGatheringTimeout;C==="gathering"&&!this._didGenerateLocalCandidates&&!H&&(x.debug(`Starting ICE gathering timeout: ${V}`),this._iceGatheringFailed=!1,this._iceGatheringTimeout.start())}_handleSignalingStateChange(){j.pc.signalingState(this.id,this._peerConnection.signalingState),this._peerConnection.signalingState==="stable"&&(this._appliedTrackIdsToAttributes=new Map(this._trackIdsToAttributes))}_handleDtlsTransportStateChange(){const C=this._dtlsTransport;C&&(this._log.debug(`DTLS transport state is "${C.state}"`),j.pc.dtlsTransportState(this.id,C.state))}_handleSelectedCandidatePairChange(){var C;const x=(C=this._dtlsTransport)===null||C===void 0?void 0:C.iceTransport;if(x&&typeof x.getSelectedCandidatePair=="function"){const V=x.getSelectedCandidatePair();V&&j.pc.selectedCandidatePair(this.id,V)}}_handleTrackEvent(C){const x=this._peerConnection.remoteDescription?this._peerConnection.remoteDescription.sdp:null;this._trackMatcher=this._trackMatcher||new D,this._trackMatcher.update(x);const V=C.track,H=this._trackMatcher.match(C)||V.id,X=new S(H,V);this._mediaTrackReceivers.forEach(ie=>{ie.track.id===X.track.id&&this._mediaTrackReceivers.delete(ie)}),this._mediaTrackReceivers.add(X),V.addEventListener?V.addEventListener("ended",()=>this._mediaTrackReceivers.delete(X)):V.onended=()=>this._mediaTrackReceivers.delete(X),this.emit("trackAdded",X)}_initiateIceRestart(){if(this._peerConnection.signalingState==="closed")return;const C=this._log;C.warn("Attempting to restart ICE"),this._didGenerateLocalCandidates=!1,this._isIceRestartBackoffInProgress=!1,this._shouldRestartIce=!0;const{delay:x,isSet:V}=this._iceReconnectTimeout;V||(C.debug(`Starting ICE reconnect timeout: ${x}`),this._iceReconnectTimeout.start()),this.offer().catch(H=>{C.error(`offer failed in _initiateIceRestart with: ${H.message}`)})}_initiateIceRestartBackoff(){this._peerConnection.signalingState==="closed"||this._isIceRestartBackoffInProgress||(this._log.warn("An ICE restart has been scheduled"),this._isIceRestartBackoffInProgress=!0,this._iceRestartBackoff.backoff(()=>this._initiateIceRestart()))}_maybeReoffer(C){let x=this._shouldOffer;if(C&&C.sdp){const H=this._peerConnection.getSenders().filter(ke=>ke.track);x=["audio","video"].reduce((ke,ge)=>{const ne=g(C.sdp,ge,"(sendrecv|sendonly)"),we=H.filter(z.bind(null,ge));return ke||ne.length<we.length},x);const X=this._dataChannels.size>0,ie=g(C.sdp,"application").length>0;x=x||X&&!ie}return(x?this._offer():Promise.resolve()).then(()=>x)}_offer(){const C=Object.assign({},this._offerOptions);return this._needsAnswer=!0,this._shouldRestartIce&&(this._shouldRestartIce=!1,this._isRestartingIce=!0,C.iceRestart=!0),Promise.all(this._replaceTrackPromises.values()).then(()=>(this._peerConnection.getTransceivers().forEach(V=>this._applyCodecPreferencesToTransceiver(V)),this._peerConnection.createOffer(C))).catch(x=>{const V=new f;throw this._publishMediaWarning({message:"Failed to create offer",code:V.code,error:x}),V}).then(x=>{if(K){let H=a(x.sdp);H=m(H),x=new this._RTCSessionDescription({sdp:H,type:x.type})}else x=O(x);let V=b(x.sdp,["mslabel","label"]);return this._shouldOffer=!1,this._negotiationRole||(this._negotiationRole="offerer"),this._shouldApplySimulcast&&(this._localDescriptionWithoutSimulcast={type:"offer",sdp:V},V=this._setSimulcast(V,this._trackIdsToAttributes)),this._setLocalDescription({type:"offer",sdp:V})})}
42_getMediaTrackSenderId(C){const x=Array.from(this._rtpSenders.keys()).find(({track:{id:V}})=>V===C);return x?x.id:C}_addOrRewriteLocalTrackIds(C){const V=this._peerConnection.getTransceivers().filter(({sender:ne,stopped:we})=>!we&&ne&&ne.track),H=V.filter(({mid:ne})=>ne),X=new Map(H.map(({mid:ne,sender:we})=>[ne,this._getMediaTrackSenderId(we.track.id)])),ie=i(C.sdp,X),ve=V.filter(({mid:ne})=>!ne),ke=new Map(["audio","video"].map(ne=>[ne,ve.filter(({sender:we})=>we.track.kind===ne).map(({sender:we})=>this._getMediaTrackSenderId(we.track.id))])),ge=p(ie,X,ke);return new this._RTCSessionDescription({sdp:ge,type:C.type})}_rollbackAndApplyOffer(C){return this._setLocalDescription({type:"rollback"}).then(()=>this._setLocalDescription(C))}_setLocalDescription(C){return C.type!=="rollback"&&this._shouldApplyDtx&&(C=new this._RTCSessionDescription({sdp:c(C.sdp),type:C.type})),this._peerConnection.setLocalDescription(C).catch(x=>{this._log.warn(`Calling setLocalDescription with an RTCSessionDescription of type "${C.type}" failed with the error "${x.message}".`,x);const V=new f,H={message:`Calling setLocalDescription with an RTCSessionDescription of type "${C.type}" failed`,code:V.code,error:x};throw C.sdp&&(this._log.warn(`The SDP was ${C.sdp}`),H.sdp=C.sdp),this._publishMediaWarning(H),V}).then(()=>{C.type!=="rollback"&&(this._localDescription=this._addOrRewriteLocalTrackIds(C),this._shouldApplyDtx&&(this._localDescription=new this._RTCSessionDescription({sdp:c(this._localDescription.sdp,[]),type:this._localDescription.type})),this._localCandidates=[],C.type==="offer"?this._descriptionRevision++:C.type==="answer"&&(this._lastStableDescriptionRevision=this._descriptionRevision,q(this)),this._localUfrag=me(C),this.emit("description",this.getState()))})}_setRemoteDescription(C){return C.sdp&&(C.sdp=this._setCodecPreferences(C.sdp,this._preferredAudioCodecs,this._preferredVideoCodecs),this._shouldApplyDtx?C.sdp=c(C.sdp):C.sdp=c(C.sdp,[]),K&&(C.sdp=oe(C.sdp)),this._peerConnection.remoteDescription||(this._isIceLite=/a=ice-lite/.test(C.sdp))),C=new this._RTCSessionDescription(C),Promise.resolve().then(()=>{if(C.type==="answer"&&this._localDescriptionWithoutSimulcast){const x=this._preferredVideoCodecs.find(X=>"adaptiveSimulcast"in X),V=!!x&&x.adaptiveSimulcast===!1,H=this._revertSimulcast(this._localDescription.sdp,this._localDescriptionWithoutSimulcast.sdp,C.sdp,V);if(this._localDescriptionWithoutSimulcast=null,H!==this._localDescription.sdp)return this._rollbackAndApplyOffer({type:this._localDescription.type,sdp:H})}}).then(()=>this._peerConnection.setRemoteDescription(C)).then(()=>{C.type==="answer"&&(this._isRestartingIce&&(this._log.debug("An ICE restart was in-progress and is now completed"),this._isRestartingIce=!1),q(this))},x=>{throw this._log.warn(`Calling setRemoteDescription with an RTCSessionDescription of type "${C.type}" failed with the error "${x.message}".`,x),C.sdp&&this._log.warn(`The SDP was ${C.sdp}`),x})}_updateDescription(C){switch(C.type){case"answer":case"pranswer":if(C.revision!==this._descriptionRevision||this._peerConnection.signalingState!=="have-local-offer")return Promise.resolve();this._descriptionRevision=C.revision;break;case"close":return this._close();case"create-offer":return C.revision<=this._lastStableDescriptionRevision?Promise.resolve():this._needsAnswer?(this._queuedDescription=C,Promise.resolve()):(this._descriptionRevision=C.revision,this._offer());case"offer":return C.revision<=this._lastStableDescriptionRevision||this._peerConnection.signalingState==="closed"?Promise.resolve():this._peerConnection.signalingState==="have-local-offer"?this._needsAnswer&&this._lastStableDescriptionRevision===0?(this._queuedDescription=C,Promise.resolve()):(this._descriptionRevision=C.revision,this._handleGlare(C)):(this._descriptionRevision=C.revision,this._answer(C).then(()=>{}))}const x=C.revision;return Promise.resolve().then(()=>this._setRemoteDescription(C)).catch(V=>{const H=new v;throw this._publishMediaWarning({message:`Calling setRemoteDescription with an RTCSessionDescription of type "${C.type}" failed`,code:H.code,error:V,sdp:C.sdp}),H}).then(()=>(this._lastStableDescriptionRevision=x,this._needsAnswer=!1,this._checkIceBox(C))).then(()=>this._queuedDescription&&this._updateDescription(this._queuedDescription)).then(()=>(this._queuedDescription=null,this._maybeReoffer(this._peerConnection.localDescription).then(()=>{})))}_updateIce(C){const x=this._remoteCandidates.update(C);return this._addIceCandidates(x)}addDataTrackSender(C){if(!this._dataChannels.has(C))try{const x={ordered:C.ordered};C.maxPacketLifeTime!==null&&(x.maxPacketLifeTime=C.maxPacketLifeTime),C.maxRetransmits!==null&&(x.maxRetransmits=C.maxRetransmits);
42const V=this._peerConnection.createDataChannel(C.id,x);C.addDataChannel(V),this._dataChannels.set(C,V)}catch(x){this._log.warn(`Error creating an RTCDataChannel for DataTrack "${C.id}": ${x.message}`)}}_handleQueuedPublisherHints(){this._peerConnection.signalingState==="stable"&&this._mediaTrackSenderToPublisherHints.forEach(({deferred:C,encodings:x},V)=>{this._mediaTrackSenderToPublisherHints.delete(V),this._setPublisherHint(V,x).then(H=>C.resolve(H)).catch(H=>C.reject(H))})}_setPublisherHint(C,x){if(K)return Promise.resolve("COULD_NOT_APPLY_HINT");this._mediaTrackSenderToPublisherHints.has(C)&&(this._mediaTrackSenderToPublisherHints.get(C).deferred.resolve("REQUEST_SKIPPED"),this._mediaTrackSenderToPublisherHints.delete(C));const V=this._rtpSenders.get(C);if(!V)return this._log.warn("Could not apply publisher hint because RTCRtpSender was not found"),Promise.resolve("UNKNOWN_TRACK");if(this._peerConnection.signalingState==="closed")return this._log.warn('Could not apply publisher hint because signalingState was "closed"'),Promise.resolve("COULD_NOT_APPLY_HINT");if(this._peerConnection.signalingState!=="stable"){this._log.debug("Queuing up publisher hint because signalingState:",this._peerConnection.signalingState);const X=P();return this._mediaTrackSenderToPublisherHints.set(C,{deferred:X,encodings:x}),X.promise}const H=V.getParameters();return x!==null&&x.forEach(({enabled:X,layer_index:ie})=>{H.encodings.length>ie?(this._log.debug(`layer:${ie}, active:${H.encodings[ie].active} => ${X}`),H.encodings[ie].active=X):this._log.warn(`invalid layer:${ie}, active:${X}`)}),this._maybeUpdateEncodings(V.track,H.encodings,x===null),V.setParameters(H).then(()=>"OK").catch(X=>(this._log.error("Failed to apply publisher hints:",X),"COULD_NOT_APPLY_HINT"))}addMediaTrackSender(C){if(this._peerConnection.signalingState==="closed"||this._rtpSe
42nders.has(C))return;const x=this._addOrUpdateTransceiver(C.track),{sender:V}=x;C.addSender(V,H=>this._setPublisherHint(C,H)),this._rtpNewSenders.add(V),this._rtpSenders.set(C,V)}close(){this._close()&&(this._descriptionRevision++,this._localDescription={type:"close"},this.emit("description",this.getState()))}getTrackReceivers(){return Array.from(this._dataTrackReceivers).concat(Array.from(this._mediaTrackReceivers))}getState(){if(!this._localDescription)return null;const C=this._localDescription.type==="answer"?this._lastStableDescriptionRevision:this._descriptionRevision,x={type:this._localDescription.type,revision:C};return this._localDescription.sdp&&(x.sdp=this._localDescription.sdp),{description:x,id:this.id}}offer(){return this._needsAnswer||this._isRestartingIce?(this._shouldOffer=!0,Promise.resolve()):this.bracket("offering",C=>(this.transition("updating",C),(this._needsAnswer||this._isRestartingIce?Promise.resolve():this._offer()).then(()=>{this.tryTransition("open",C)},V=>{throw this.tryTransition("open",C),V})))}removeDataTrackSender(C){const x=this._dataChannels.get(C);x&&(C.removeDataChannel(x),this._dataChannels.delete(C),x.close())}removeMediaTrackSender(C){const x=this._rtpSenders.get(C);x&&(this._peerConnection.signalingState!=="closed"&&this._peerConnection.removeTrack(x),C.removeSender(x),this._mediaTrackSenderToPublisherHints.has(C)&&(this._mediaTrackSenderToPublisherHints.get(C).deferred.resolve("UNKNOWN_TRACK"),this._mediaTrackSenderToPublisherHints.delete(C)),this._rtpNewSenders.delete(x),this._rtpSe
42nders.delete(C))}setConfiguration(C){typeof this._peerConnection.setConfiguration=="function"&&this._peerConnection.setConfiguration(J(C))}setIceReconnectTimeout(C){return this._iceReconnectTimeout.setDelay(C),this._log.debug("Updated ICE reconnection timeout period:",this._iceReconnectTimeout.delay),this}update(C){return this.bracket("updating",x=>{if(this.state==="closed")return Promise.resolve();this.transition("updating",x);const V=[];return C.ice&&V.push(this._updateIce(C.ice)),C.description&&V.push(this._updateDescription(C.description)),Promise.all(V).then(()=>{this.tryTransition("open",x)},H=>{throw this.tryTransition("open",x),H})})}getStats(){return u(this._peerConnection,{log:this._log}).then(C=>he(this,C))}}function se(F,C){const x=F._getMediaTrackSenderId(C.trackId);return Object.assign(C,{trackId:x})}function de(F,C){const x=[...F._mediaTrackReceivers].find(H=>H.track.id===C.trackId),V=x?x.id:null;return Object.assign(C,{trackId:V})}function he(F,C){return Object.assign(C,{remoteAudioTrackStats:C.remoteAudioTrackStats.map(x=>de(F,x)),remoteVideoTrackStats:C.remoteVideoTrackStats.map(x=>de(F,x)),localAudioTrackStats:C.localAudioTrackStats.map(x=>se(F,x)),localVideoTrackStats:C.localVideoTrackStats.map(x=>se(F,x))})}function me(F){if(F.sdp){const C=F.sdp.match(/^a=ice-ufrag:([a-zA-Z0-9+/]+)/m);if(C)return C[1]}return null}function J(F={}){return Object.assign({bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"},F)}function z(F,C){const x=C.track;return x&&x.kind===F&&x.readyState!=="ended"}function oe(F){return F.replace(/a=msid:[^ ]+ /g,"a=msid:- ")}function ae(F,C){return!F.stopped&&!C._replaceTrackPromises.has(F)&&["inactive","recvonly"].includes(F.direction)}function ce(F,C){const x={audio:F._preferredAudioCodecs.map(({codec:ie})=>ie.toLowerCase()),video:F._preferredVideoCodecs.map(({codec:ie})=>ie.toLowerCase())}[C],V=F._recycledTransceivers[C],H=x.find(ie=>F._localCodecs.has(ie));if(!H)return V.shift();const X=V.find(ie=>{const ve=F._remoteCodecMaps.get(ie.mid);return ve&&ve.has(H)});return X&&V.splice(V.indexOf(X),1),X}function Y(F){const C=F._peerConnection.localDescription;!C||!C.sdp||g(C.sdp).forEach(x=>{n(x).forEach((H,X)=>F._localCodecs.add(X))})}function ye(F){const C=F._peerConnection.remoteDescription;!C||!C.sdp||g(C.sdp).forEach(x=>{const V=x.match(/^a=mid:(.+)$/m);if(!V||!V[1])return;const H=V[1],X=n(x);F._remoteCodecMaps.set(H,X)})}function ue(F){F._recycledTransceivers.audio=[],F._recycledTransceivers.video=[],F._peerConnection.getTransceivers().forEach(C=>{if(ae(C,F)){const x=C.receiver.track;F._recycledTransceivers[x.kind].push(C)}})}function Te(F){var C;const V=(C=F._peerConnection.getSenders().find(H=>H.transport))===null||C===void 0?void 0:C.transport;V&&!F._dtlsTransport&&(F._dtlsTransport=V,V.addEventListener("statechange",F._handleDtlsTransportStateChange.bind(F)),V.state&&F._handleDtlsTransportStateChange(),V.iceTransport&&typeof V.iceTransport.getSelectedCandidatePair=="function"&&(V.iceTransport.addEventListener("selectedcandidatepairchange",F._handleSelectedCandidatePairChange.bind(F)),V.iceTransport.getSelectedCandidatePair()&&F._handleSelectedCandidatePairChange()))}function q(F){ue(F),Y(F),ye(F),Te(F),$(F).then(()=>{F._handleQueuedPublisherHints()})}function $(F){const{maxAudioBitrate:C,maxVideoBitrate:x}=F._encodingParameters,V=new Map([["audio",C],["video",x]]),H=[];return F._peerConnection.getSenders().filter(X=>X.track).forEach(X=>{const ie=V.get(X.track.kind),ve=X.getParameters();ie===null||ie===0?G(ve):F._isChromeScreenShareTrack(X.track)?F._log.warn(`Not setting maxBitrate for ${X.track.kind} Track ${X.track.id} because it appears to be screen share track: ${X.track.label}`):W(ve,ie),!K&&ve.encodings.length>0&&(X.track.kind==="audio"?ve.encodings[0].priority="high":F._isChromeScreenShareTrack(X.track)&&(ve.encodings[0].priority="medium"),F._enableDscp&&(ve.encodings[0].networkPriority="high"));const ke=F._rtpNewSenders.has(X);F._maybeUpdateEncodings(X.track,ve.encodings,ke),F._rtpNewSenders.delete(X);const ge=X.setParameters(ve).catch(ne=>{F._log.warn(`Error while setting encodings parameters for ${X.track.kind} Track ${X.track.id}: ${ne.message||ne.name}`)});H.push(ge)}),Promise.all(H)}
42function G(F){Array.isArray(F.encodings)&&F.encodings.forEach(C=>delete C.maxBitrate)}function W(F,C){K?F.encodings=[{maxBitrate:C}]:F.encodings.forEach(x=>{x.maxBitrate=C})}return qi=ee,qi}var ji,So;function Ed(){if(So)return ji;So=1;const{guessBrowser:s}=Me(),o=Pd(),u=Fc(),t=Nc(),e=be(),{MediaConnectionError:r}=$e(),l=s()==="firefox";class _ extends t{constructor(f,v,k){super(),k=Object.assign({audioContextFactory:l?gt():null,PeerConnectionV2:o},k);const T=k.audioContextFactory?k.audioContextFactory.getOrCreate(this):null,I=T?{offerToReceiveVideo:!0}:{offerToReceiveAudio:!0,offerToReceiveVideo:!0};Object.defineProperties(this,{_audioContextFactory:{value:k.audioContextFactory},_closedPeerConnectionIds:{value:new Set},_configuration:{writable:!0,value:null},_configurationDeferred:{writable:!0,value:e.defer()},_connectionState:{value:"new",writable:!0},_dummyAudioTrackSender:{value:T?new u(p(T)):null},_encodingParameters:{value:f},_iceConnectionState:{writable:!0,value:"new"},_dataTrackSenders:{writable:!0,value:new Set},_lastConnectionState:{value:"new",writable:!0},_lastIceConnectionState:{writable:!0,value:"new"},_mediaTrackSenders:{writable:!0,value:new Set},_offerOptions:{value:I},_peerConnections:{value:new Map},_preferredCodecs:{value:v},_sessionTimeout:{value:null,writable:!0},_PeerConnectionV2:{value:k.PeerConnectionV2}})}setEffectiveAdaptiveSimulcast(f){this._peerConnections.forEach(v=>v.setEffectiveAdaptiveSimulcast(f)),this._preferredCodecs.video.forEach(v=>{"adaptiveSimulcast"in v&&(v.adaptiveSimulcast=f)})}get connectionState(){return this._connectionState}get iceConnectionState(){return this._iceConnectionState}_closeAbsentPeerConnections(f){const v=new Set(f.map(k=>k.id));return this._peerConnections.forEach(k=>{v.has(k.id)||k._close()}),this}_getConfiguration(){return this._configurationDeferred.promise}_getOrCreate(f,v){const k=this;let T=this._peerConnections.get(f);if(!T){const I=this._PeerConnectionV2,P=Object.assign({dummyAudioMediaStreamTrack:this._dummyAudioTrackSender?this._dummyAudioTrackSender.track:null,offerOptions:this._offerOptions},this._sessionTimeout?{sessionTimeout:this._sessionTimeout}:{},v);try{T=new I(f,this._encodingParameters,this._preferredCodecs,P)}catch{throw new r}this._peerConnections.set(T.id,T),T.on("candidates",this.queue.bind(this,"candidates")),T.on("description",this.queue.bind(this,"description")),T.on("trackAdded",this.queue.bind(this,"trackAdded")),T.on("stateChanged",function R(L){L==="closed"&&(T.removeListener("stateChanged",R),k._dataTrackSenders.forEach(M=>T.removeDataTrackSender(M)),k._mediaTrackSenders.forEach(M=>T.removeMediaTrackSender(M)),k._peerConnections.delete(T.id),k._closedPeerConnectionIds.add(T.id),w(k),h(k))}),T.on("connectionStateChanged",()=>w(this)),T.on("iceConnectionStateChanged",()=>h(this)),this._dataTrackSenders.forEach(T.addDataTrackSender,T),this._mediaTrackSenders.forEach(T.addMediaTrackSender,T),h(this)}return T}close(){return this._peerConnections.forEach(f=>{f.close()}),this._dummyAudioTrackSender&&this._dummyAudioTrackSender.stop(),this._audioContextFactory&&this._audioContextFactory.release(this),h(this),this}createAndOffer(){return this._getConfiguration().then(f=>{let v;do v=e.makeUUID();while(this._peerConnections.has(v));return this._getOrCreate(v,f)}).then(f=>f.offer()).then(()=>this)}getTrackReceivers(){return e.flatMap(this._peerConnections,f=>f.getTrackReceivers())}getStates(){const f=[];return this._peerConnections.forEach(v=>{const k=v.getState();k&&f.push(k)}),f}setConfiguration(f){return this._configuration&&(this._configurationDeferred=e.defer(),this._peerConnections.forEach(v=>{v.setConfiguration(f)})),this._configuration=f,this._configurationDeferred.resolve(f),this}setIceReconnectTimeout(f){return this._sessionTimeout===null&&(this._peerConnections.forEach(v=>{v.setIceReconnectTimeout(f)}),this._sessionTimeout=f),this}setTrackSenders(f){const v=new Set(f.filter(I=>I.kind==="data")),k=new Set(f.filter(I=>I&&(I.kind==="audio"||I.kind==="video"))),T=a(this,v,k);return this._dataTrackSenders=v,this._mediaTrackSenders=k,i(this,T),this}update(f,v=!1){return v&&this._closeAbsentPeerConnections(f),this._getConfiguration().then(k=>Promise.all(f.map(T=>this._closedPeerConnectionIds.has(T.id)?null:this._getOrCreate(T.id,k).update(T)))).then(()=>this)}getStats(){const f=Array.from(this._peerConnections.values());return Promise.all(f.map(v=>v.getStats().then(k=>[v.id,k]))).then(v=>new Map(v))}}function p(y){return y.createMediaStreamDestination().stream.getAudioTracks()[0]}function i(y,f){(f.data.add.size||f.data.remove.size||f.media.add.size||f.media.remove.size)&&y._peerConnections.forEach(v=>{f.data.remove.forEach(v.removeDataTrackSender,v),f.media.remove.forEach(v.removeMediaTrackSender,v),f.data.add.forEac
42h(v.addDataTrackSender,v),f.media.add.forEach(v.addMediaTrackSender,v),(f.media.add.size||f.media.remove.size||f.data.add.size&&!v.isApplicationSectionNegotiated)&&v.offer()})}function n(y,f){const v=e.difference(f,y._dataTrackSenders),k=e.difference(y._dataTrackSenders,f);return{add:v,remove:k}}function a(y,f,v){return{data:n(y,f),media:c(y,v)}}function c(y,f){const v=e.difference(f,y._mediaTrackSenders),k=e.difference(y._mediaTrackSenders,f);return{add:v,remove:k}}const g={new:0,checking:1,connecting:2,connected:3,completed:4,disconnected:-1,failed:-2,closed:-3};let m;function b(){return Object.keys(g).reduce((y,f)=>Object.assign(y,{[g[f]]:f}),{})}function d(y){return y.length?(m=m||b(),y.reduce((f,v)=>m[Math.max(g[f],g[v])])):"new"}function h(y){y._lastIceConnectionState=y.iceConnectionState,y._iceConnectionState=d([...y._peerConnections.values()].map(f=>f.iceConnectionState)),y.iceConnectionState!==y._lastIceConnectionState&&y.emit("iceConnectionStateChanged")}function w(y){y._lastConnectionState=y.connectionState,y._connectionState=d([...y._peerConnections.values()].map(f=>f.connectionState)),y.connectionState!==y._lastConnectionState&&y.emit("connectionStateChanged")}return ji=_,ji}var Ni,wo;function Ye(){if(wo)return Ni;wo=1;const s=Le();let o=0;class u extends s{constructor(e,r,l){super(),Object.defineProperties(this,{_instanceId:{value:o++},channel:{value:r},_log:{value:l.log.createLog("default",this)},_getReceiver:{value:e},_receiverPromise:{value:null,writable:!0},_transport:{value:null,writable:!0}})}get isSetup(){return!!this._receiverPromise}toString(){return`[MediaSignaling #${this._instanceId}:${this.channel}]`}setup(e){this._teardown(),this._log.info("setting up msp transport for id:",e);const r=this._getReceiver(e).then(l=>{if(l.kind!=="data"&&this._log.error("Expected a DataTrackReceiver"),this._receiverPromise===r){try{this._transport=l.toDataTransport(),this.emit("ready",this._transport)}catch(_){this._log.error(`Failed to toDataTransport: ${_.message}`)}l.once("close",()=>this._teardown())}});this._receiverPromise=r}_teardown(){this._transport&&(this._log.info("Tearing down"),this._transport=null,this._receiverPromise=null,this.emit("teardown"))}}return Ni=u,Ni}var $i,Co;function Rd(){if(Co)return $i;Co=1;const s=Ye();class o extends s{constructor(t,e){super(t,"active_speaker",e),Object.defineProperties(this,{_loudestParticipantSid:{value:null,writable:!0}}),this.on("ready",r=>{r.on("message",l=>{switch(l.type){case"active_speaker":this._setLoudestParticipantSid(l.participant);break}})})}get loudestParticipantSid(){return this._loudestParticipantSid}_setLoudestParticipantSid(t){this.loudestParticipantSid!==t&&(this._loudestParticipantSid=t,this.emit("updated"))}}return $i=o,$i}var Vi,Po;function Ld(){if(Po)return Vi;Po=1;const s=Ye();class o extends s{constructor(t,e){super(t,"extension_transcriptions",e),this.on("ready",r=>{r.on("message",l=>{switch(l.type){case"extension_transcriptions":this.emit("transcription",l);break}})})}}return Vi=o,Vi}var Fi,Eo;function Od(){if(Eo)return Fi;Eo=1;class s{constructor(u,t,e,r){Object.defineProperties(this,{availableSend:{enumerable:!0,value:e},recv:{enumerable:!0,value:t},rtt:{enumerable:!0,value:r},send:{enumerable:!0,value:u}})}static of(u,t){const e=(t.timestamp-u.timestamp)/1e3,r=t.bytesSent-u.bytesSent,l=t.bytesReceived-u.bytesReceived,_=e>0?r/e*8:0,p=e>0?l/e*8:0,{availableOutgoingBitrate:i,currentRoundTripTime:n}=t;return new s(_,p,i,n)}}return Fi=s,Fi}var Bi,Ro;function Id(){if(Ro)return Bi;Ro=1;const s=Od();class o{constructor(){Object.defineProperties(this,{lastReport:{enumerable:!0,value:new s(0,0),writable:!0},lastStats:{enumerable:!0,value:null,writable:!0}})}next(t){const e=this.lastStats;if(this.lastStats=t,e){const r=e.id===t.id?s.of(e,t):new s(0,0);this.lastReport=r}return this.lastReport}}return Bi=o,Bi}var Ui,Lo;function su(){if(Lo)return Ui;Lo=1;function s(o){return o=o.filter(u=>typeof u=="number"),o.length<1?void 0:o.reduce((u,t)=>t+u)/o.length}return Ui=s,Ui}var Wi,Oo;function au(){if(Oo)return Wi;Oo=1;class s{constructor(u,t,e){Object.defineProperties(this,{id:{enumerable:!0,value:u},trackId:{enumerable:!0,value:t},bitrate:{enumerable:!0,value:e}})}}return Wi=s,Wi}var Hi,Io;function ou(){if(Io)return Hi;Io=1;function s(o){return o.reduce((u,t)=>typeof t=="number"?t+u:u,0)}return Hi=s,Hi}var zi,Mo;function cu(){if(Mo)return zi;Mo=1;const s=su(),o=au(),u=ou();class t extends o{constructor(r,l,_,p,i,n,a){super(r,l,_);const c=i>0?p/i:0;Object.defineProperties(this,{deltaPacketsLost:{enumerable:!0,value:p},deltaPacketsReceived:{enumerable:!0,value:i},fractionLost:{enumerable:!0,value:n},jitter:{enumerable:!0,value:a},phonyFractionLost:{enumerable:!0,value:c}})}static of(r,l,_){if(l.id!==_.id)throw new Error("RTCStats IDs must match");const p=(_.timestamp-l.timestamp)/1e3,i=_.bytesReceived-l.bytesReceived,n=p>0?i/p*8:0,a=Math.max(_.packetsLost-l.packetsLost,0),c=_.packetsReceived-l.packetsReceived,{fractionLost:g,jitter:m}=_;return new t(l.id,r,n,a,c,g,m)}static summarize(r){const l=r.map(n=>n.summarize()),_=u(l.map(n=>n.bitrate)),p=s(l.map(n=>n.fractionLost)),i=s(l.map(n=>n.jitter));return{bitrate:_,fractionLost:p,jitter:i}}summarize(){return{bitrate:this.bitrate,fractionLost:typeof this.fractionLost=="number"?this.fractionLost:this.phonyFractionLost,jitter:this.jitter}}}return zi=t,zi}var Qi,Do;function uu(){if(Do)return Qi;Do=1;const s=su(),o=au(),u=ou();class t extends o{constructor(r,l,_,p){super(r,l,_),Object.defineProperties(this,{rtt:{enumerable:!0,value:p}})}static of(r,l,_,p){if(l.id!==_.id)throw new Error("RTCStats IDs must match");const i=(_.timestamp-l.timestamp)/1e3,n=_.bytesSent-l.bytesSent,a=i>0?n/i*8:0,c=p&&typeof p.roundTripTime=="number"?p.roundTripTime/1e3:void 0;return new t(l.id,r,a,c)}static summarize(r){const l=u(r.map(p=>p.bitrate)),_=s(r.map(p=>p.rtt));return{bitrate:l,rtt:_}}}return Qi=t,Qi}var Gi,Ao;function Md(){if(Ao)return Gi;Ao=1;const s=cu(),o=uu();class u{constructor(e,r,l){Object.defineProperties(this,{ice:{enumerable:!0,value:e},audio:{enumerable:!0,value:r},video:{enumerable:!0,value:l}})}summarize(){const e=this.audio.send.concat(this.video.send),r=o.summarize(e),l=this.audio.recv.concat(this.video.recv),_=s.summarize(l);return{ice:this.ice,send:r,recv:_,audio:{send:o.summarize(this.audio.send),recv:s.summarize(this.audio.recv)},video:{send:o.summarize(this.video.send),recv:s.summarize(this.video.recv)}}}}return Gi=u,Gi}var Ki,xo;function lu(){if(xo)return Ki;xo=1;class s{constructor(u,t,e){Object.defineProperties(this,{id:{enumerable:!0,value:u,writable:!0},trackId:{enumerable:!0,value:t,writable:!0},lastStats:{enumerable:!0,value:e,writable:!0}})}}return Ki=s,Ki}var Yi,qo;function Dd(){if(qo)return Yi;qo=1;const s=cu(),o=lu();class u extends o{constructor(e,r){super(r.id,e,r),Object.defineProperties(this,{lastReport:{enumerable:!0,value:null,writable:!0}})}next(e,r){const l=this.lastStats;this.lastStats=r,this.trackId=e;const _=s.of(e,l,r);return this.lastReport=_,_}}return Yi=u,Yi}var Ji,jo;function Ad(){if(jo)return Ji;jo=1;const s=lu(),o=uu();class u extends s{constructor(e,r){super(r.id,e,r),Object.defineProperties(this,{lastReport:{enumerable:!0,value:null,writable:!0}})}next(e,r,l){const _=this.lastStats;this.lastStats=r,this.trackId=e;const p=o.of(e,_,r,l);return this.lastReport=p,p}}return Ji=u,Ji}var Xi,No;function xd(){if(No)return Xi;No=1;const{guessBrowser:s}=Me(),o=Id(),u=Md(),t=Dd(),e=Ad();
42class r{constructor(v){Object.defineProperties(this,{pc:{enumerable:!0,value:v},ice:{enumerable:!0,value:new o},audio:{enumerable:!0,value:{send:new Map,recv:new Map}},video:{enumerable:!0,value:{send:new Map,recv:new Map}},lastReport:{enumerable:!0,value:null,writable:!0}})}next(){return(s()==="firefox"?w(this):y(this)).then(()=>{const k=[...this.audio.send.values()],T=[...this.video.send.values()],I=[...this.audio.recv.values()],P=[...this.video.recv.values()],R=new u(this.ice.lastReport,{send:k.map(L=>L.lastReport).filter(L=>L),recv:I.map(L=>L.lastReport).filter(L=>L)},{send:T.map(L=>L.lastReport).filter(L=>L),recv:P.map(L=>L.lastReport).filter(L=>L)});return this.lastReport=R,R})}}function l(f){return Promise.all(f.map(v=>{const k=v.track.id;return v.getStats().then(T=>{for(const I of T.values())I.type==="inbound-rtp"&&(I.id=`${k}-${I.id}`);return[k,T]})})).then(v=>new Map(v))}function _(f,v,k,T,I){const P=v[T.mediaType];if(!I){const R=k.get(T.trackId);R&&(I=R.trackIdentifier)}if(P&&I){if(P.has(T.id))return P.get(T.id);const R=new f(I,T);P.set(T.id,R)}return null}function p(f){return{audio:f.audio.send,video:f.video.send}}function i(f){return{audio:f.audio.recv,video:f.video.recv}}function n(f,v,k,T){return _(e,p(f),v,k,T)}function a(f,v,k,T){return _(t,i(f),v,k,T)}function c(f){return{audio:new Set(f.audio.send.keys()),video:new Set(f.video.send.keys())}}function g(f){return{audio:new Set(f.audio.recv.keys()),video:new Set(f.video.recv.keys())}}function m(f,v,k,T){for(const I of v.values())if(I.type==="outbound-rtp"&&!I.isRemote){if(s()!=="firefox"&&!I.trackId)continue;const P=k[I.mediaType];P&&P.delete(I.id);const R=n(f,v,I,T);if(R){const L=v.get(I.remoteId);R.next(T||R.trackId,I,L)}}}function b(f,v,k,T){for(const I of v.values())if(I.type==="inbound-rtp"&&!I.isRemote){const P=k[I.mediaType];P&&P.delete(I.id);const R=a(f,v,I,T);R&&R.next(T||R.trackId,I)}}function d(f,v){for(const k in v){const T=f[k];v[k].forEach(P=>T.delete(P))}}function h(f,v){let k;for(const T of v.values())T.type==="transport"&&(k=v.get(T.selectedCandidatePairId));if(k){f.next(k);return}for(const T of v.values())T.type==="candidate-pair"&&T.nominated&&(!("selected"in T)||T.selected)&&f.next(T)}function w(f){const v=f.pc.getTransceivers().filter(T=>T.currentDirection&&T.currentDirection.match(/send/)&&T.sender.track).map(T=>T.sender),k=f.pc.getTransceivers().filter(T=>T.currentDirection&&T.currentDirection.match(/recv/)).map(T=>T.receiver);return Promise.all([l(v),l(k),f.pc.getStats()]).then(([T,I,P])=>{const R=p(f),L=c(f);T.forEach((A,E)=>m(f,A,L,E)),d(R,L);const M=i(f),S=g(f);I.forEach((A,E)=>b(f,A,S,E)),d(M,S),h(f.ice,P)})}function y(f){return f.pc.getStats().then(v=>{const k=p(f),T=c(f);m(f,v,T),d(k,T);const I=i(f),P=g(f);b(f,v,P),d(I,P),h(f.ice,v)})}return Xi=r,Xi}var Zi,$o;function qd(){if($o)return Zi;$o=1;const s=Le(),o=xd();class u extends s{constructor(r,l){super(),Object.defineProperties(this,{_factories:{value:new WeakMap},_manager:{value:r},_signaling:{value:l}}),l.on("updated",()=>
42this.emit("updated"))}get level(){return this._signaling.level}get levels(){return this._signaling.levels}get remoteLevels(){return this._signaling.remoteLevels}start(){this.stop();const r=setTimeout(()=>{this._timeout===r&&t(this).then(l=>{if(this._timeout===r){if(l.length){const[_]=l;this._signaling.put(_)}this.start()}})},200);this._timeout=r}stop(){clearTimeout(this._timeout),this._timeout=null}}function t(e){const p=(e._manager._peerConnections?Array.from(e._manager._peerConnections.values()):[]).map(i=>i._peerConnection).filter(i=>i.signalingState!=="closed").map(i=>{if(e._factories.has(i))return e._factories.get(i);const n=new o(i);return e._factories.set(i,n),n}).map(i=>i.next().catch(()=>null));return Promise.all(p).then(i=>i.filter(n=>n).map(n=>n.summarize()))}return Zi=u,Zi}var en,Vo;function jd(){if(Vo)return en;Vo=1;const{defer:s}=be();class o{constructor(){Object.defineProperties(this,{_deferreds:{value:[]},_hasValue:{value:!1,writable:!0},_value:{value:null,writable:!0}})}put(t){this._hasValue=!0,this._value=t;const e=this._deferreds.shift();return e&&e.resolve(t),this}take(){if(this._hasValue&&!this._deferreds.length)return this._hasValue=!1,Promise.resolve(this._value);const t=s();return this._deferreds.push(t),t.promise.then(e=>(this._hasValue=!1,e))}}return en=o,en}var tn,Fo;function Nd(){if(Fo)return tn;Fo=1;const s=Ye(),o=jd(),u=Ke(),t=5e3;class e extends s{constructor(_,p,i){super(_,"network_quality",i),Object.defineProperties(this,{_level:{value:null,writable:!0},_levels:{value:null,writable:!0},_remoteLevels:{value:new Map,writable:!0},_networkQualityInputs:{value:new o},_resendTimer:{value:new u(()=>{this._resendTimer.setDelay(this._resendTimer.delay*1.5),this._sendNetworkQualityInputs()},t,!1)},_networkQualityReportLevels:{get(){return{reportLevel:p.local,remoteReportLevel:p.remote}}}}),this.on("ready",n=>{n.on("message",a=>{switch(this._log.debug("Incoming: ",a),a.type){case"network_quality":this._handleNetworkQualityMessage(a);break}})}),this._sendNetworkQualityInputs()}get level(){return this._level}get levels(){return this._levels}get remoteLevels(){return this._remoteLevels}_handleNetworkQualityMessage(_){let p=!1,i=null;const n=_?_.local:null;typeof n=="number"?(i=n,this._levels=null):typeof n=="object"&&n&&(this._levels=n,i=typeof n.level=="number"?n.level:Math.min(n.audio.send,n.audio.recv,n.video.send,n.video.recv)),i!==null&&this.level!==i&&(this._level=i,p=!0),this._remoteLevels=_&&_.remotes?_.remotes.reduce((a,c)=>((this._remoteLevels.get(c.sid)||{}).level!==c.level&&(p=!0),a.set(c.sid,c)),new Map):this._remoteLevels,p&&this.emit("updated"),this._resendTimer.setDelay(t),this._resendTimer.isSet&&setTimeout(()=>this._sendNetworkQualityInputs(),1e3)}_sendNetworkQualityInputs(){return this._resendTimer.clear(),this._networkQualityInputs.take().then(_=>{this._transport&&this._transport.publish(r(_,this._networkQualityReportLevels))}).finally(()=>{this._resendTimer.start()})}put(_){this._networkQualityInputs.put(_)}}function r(l,_){return Object.assign({type:"network_quality"},l,_)}return tn=e,tn}var rn,Bo;function du(){if(Bo)return rn;Bo=1;const s=Le().EventEmitter;class o extends s{constructor(){super(),Object.defineProperties(this,{_isEnabled:{value:null,writable:!0},isEnabled:{enumerable:!0,get(){return this._isEnabled}}})}disable(){return this.enable(!1)}enable(t){return t=typeof t=="boolean"?t:!0,this.isEnabled!==t&&(this._isEnabled=t,this.emit("updated")),this}}return rn=o,rn}var nn,Uo;function $d(){if(Uo)return nn;Uo=1;const s=du();class o extends s{constructor(){super(),Object.defineProperties(this,{_revision:{value:1,writable:!0}})}update(t){return t.revision<this._revision?this:(this._revision=t.revision,this.enable(t.is_recording))}}return nn=o,nn}var sn,Wo;function Vd(){if(Wo)return sn;Wo=1;const s=Qe,o=iu(),u=Qc(),{filterObject:t,flatMap:e,difference:r}=be(),l=We();class _{constructor(i,n,a={}){if(!i||typeof i.getStats!="function")throw new Error("StatsMonitor requires a stats source with getStats() method");if(!n)throw new Error("StatsMonitor requires a log instance");this._statsSource=i,this._log=n,this._publishIntervalMs=a.publishIntervalMs||1e4,this._collectionIntervalMs=a.collectionIntervalMs||1e3,this._collectionsPerPublish=Math.floor(this._publishIntervalMs/this._collectionIntervalMs),this._stallThreshold=.5,this._resumeThreshold=5,this._initializeState(),this._startStatsCollection()}_initializeState(){this._movingAverageDeltas=new Map,this._interval=null,this._statsCollectionCount=0,this._iceCandidatePublishToggle=!1,this._hasSeenActivePair=!1,this._lastNetworkType=null,this._lastQualityLimitationReasonByTrackSid=new Map,this._stalledTrackSids=new Set}_startStatsCollection(){if(this._interval){this._log.warn("StatsMonitor already started");return}this._interval=setInterval(()=>s.__awaiter(this,void 0,void 0,function*(){yield this._collectAndAnalyzeStats()}),this._collectionIntervalMs),this._log.debug("StatsMonitor started")}_stopStatsCollection(){this._interval&&(clearInterval(this._interval),this._interval=null),this._log.debug("StatsMonitor stopped")}_collectAndAnalyzeStats(){return s.__awaiter(this,void 0,void 0,function*(){try{const i=yield this._statsSource.getStats();this._statsCollectionCount++;const n=this._statsCollectionCount%this._collectionsPerPublish===0;
42n&&(this._iceCandidatePublishToggle=!this._iceCandidatePublishToggle);const a=n&&this._iceCandidatePublishToggle;this._analyzeStats(i,n,a)}catch{}})}_analyzeStats(i,n,a){!i||i instanceof Map&&i.size===0||Array.isArray(i)&&i.length===0||i.forEach((c,g)=>{this._checkNetworkTypeChanges(c),this._checkQualityLimitations(c.localVideoTrackStats),this._checkTrackStalls(c.remoteVideoTrackStats),n&&(this._publishStatsReport(g,c),a&&this._publishActiveIceCandidatePair(g,c))})}_checkNetworkTypeChanges(i){const{activeIceCandidatePair:n}=i;if(!n||!n.localCandidate)return;const a=n.localCandidate.networkType;if(a){if(!this._hasSeenActivePair){this._hasSeenActivePair=!0,this._lastNetworkType=a,l.network.typeChanged(a);return}this._lastNetworkType!==a&&(this._log.debug(`Network type changed: ${this._lastNetworkType} -> ${a}`),this._lastNetworkType=a,l.network.typeChanged(a))}}_checkQualityLimitations(i){Array.isArray(i)&&i.forEach(({trackSid:n,qualityLimitationReason:a})=>{if(!n||typeof a!="string")return;const c=this._lastQualityLimitationReasonByTrackSid.get(n);c!==a&&(this._log.debug(`Quality limitation reason changed for track ${n}: ${c||"none"} -> ${a}`),this._lastQualityLimitationReasonByTrackSid.set(n,a),l.quality.limitationChanged(n,a))})}_checkTrackStalls(i){Array.isArray(i)&&i.forEach(({trackSid:n,frameRateReceived:a})=>{if(a===void 0)return;const c=typeof a=="number"&&!isNaN(a)?a:0,g=this._stalledTrackSids.has(n);!g&&c<this._stallThreshold?(this._stalledTrackSids.add(n),this._log.debug(`Track ${n} stalled: frame rate ${c} below threshold ${this._stallThreshold}`),l.track.stalled(n,c,this._stallThreshold)):g&&c>=this._resumeThreshold&&(this._stalledTrackSids.delete(n),this._log.debug(`Track ${n} resumed: frame rate ${c} above threshold ${this._resumeThreshold}`),l.track.resumed(n,c,this._resumeThreshold))})}_addLocalTrackMetrics(i,n){const{framesEncoded:a,packetsSent:c,totalEncodeTime:g,totalPacketSendDelay:m}=n,b=Object.assign({},i),d=`${i.trackSid}+${i.ssrc}`,h=this._movingAverageDeltas.get(d)||new Map;if(typeof g=="number"&&typeof a=="number"){const w=h.get("avgEncodeDelay")||new u;w.putSample(g*1e3,a),b.avgEncodeDelay=Math.round(w.get()),h.set("avgEncodeDelay",w)}if(typeof m=="number"&&typeof c=="number"){const w=h.get("avgPacketSendDelay")||new u;w.putSample(m*1e3,c),b.avgPacketSendDelay=Math.round(w.get()),h.set("avgPacketSendDelay",w)}return this._movingAverageDeltas.set(d,h),b}_addRemoteTrackMetrics(i,n){const{estimatedPlayoutTimestamp:a,framesDecoded:c,jitterBufferDelay:g,jitterBufferEmittedCount:m,totalDecodeTime:b}=n,d=Object.assign({},i),h=`${i.trackSid}+${i.ssrc}`,w=this._movingAverageDeltas.get(h)||new Map;if(typeof a=="number"&&(d.estimatedPlayoutTimestamp=a),typeof c=="number"&&typeof b=="number"){const y=w.get("avgDecodeDelay")||new u;y.putSample(b*1e3,c),d.avgDecodeDelay=Math.round(y.get()),w.set("avgDecodeDelay",y)}if(typeof g=="number"&&typeof m=="number"){const y=w.get("avgJitterBufferDelay")||new u;y.putSample(g*1e3,m),d.avgJitterBufferDelay=Math.round(y.get()),w.set("avgJitterBufferDelay",y)}return this._movingAverageDeltas.set(h,w),d}_cleanupMovingAverageDeltas(i){const n=e(["localAudioTrackStats","localVideoTrackStats","remoteAudioTrackStats","remoteVideoTrackStats"],c=>i[c].map(({ssrc:g,trackSid:m})=>`${m}+${g}`));r(Array.from(this._movingAverageDeltas.keys()),n).forEach(c=>this._movingAverageDeltas.delete(c))}_publishStatsReport(i,n){const a=new o(i,n,!0);l.quality.statsReport({audioTrackStats:a.remoteAudioTrackStats.map((c,g)=>this._addRemoteTrackMetrics(c,n.remoteAudioTrackStats[g])),localAudioTrackStats:a.localAudioTrackStats.map((c,g)=>this._addLocalTrackMetrics(c,n.localAudioTrackStats[g])),localVideoTrackStats:a.localVideoTrackStats.map((c,g)=>this._addLocalTrackMetrics(c,n.localVideoTrackStats[g])),peerConnectionId:a.peerConnectionId,videoTrackStats:a.remoteVideoTrackStats.map((c,g)=>this._addRemoteTrackMetrics(c,n.remoteVideoTrackStats[g]))}),this._cleanupMovingAverageDeltas(a)}_publishActiveIceCandidatePair(i,n){const a=this._replaceNullsWithDefaults(n.activeIceCandidatePair,i);l.quality.iceCandidatePair(a)}_replaceNullsWithDefaults(i,n){return i=Object.assign({availableIncomingBitrate:0,availableOutgoingBitrate:0,bytesReceived:0,bytesSent:0,consentRequestsSent:0,currentRoundTripTime:0,lastPacketReceivedTimestamp:0,lastPacketSentTimestamp:0,nominated:!1,peerConnectionId:n,priority:0,readable:!1,requestsReceived:0,requestsSent:0,responsesReceived:0,responsesSent:0,retransmissionsReceived:0,retransmissionsSent:0,state:"failed",totalRoundTripTime:0,transportId:"",writable:!1},t(i||{},null)),i.localCandidate=Object.assign({candidateType:"host",deleted:!1,ip:"",port:0,priority:0,protocol:"udp",url:""},t(i.localCandidate||{},null)),i.remoteCandidate=Object.assign({candidateType:"host",ip:"",port:0,priority:0,protocol:"udp",url:""},t(i.remoteCandidate||{},null)),i}cleanup(){this._stopStatsCollection(),this._movingAverageDeltas.clear(),this._lastQualityLimitationReasonByTrackSid.clear(),this._stalledTrackSids.clear()}}return sn=_,sn}var an,Ho;function hu(){if(Ho)return an;Ho=1;const s=du(),o=st(),u=Ke(),{buildLogLevels:t}=be(),{DEFAULT_LOG_LEVEL:e}=Se(),r=xe(),{MediaConnectionError:l,MediaDTLSTransportFailedError:_,SignalingConnectionDisconnectedError:p}=$e();let i=0;const n={connected:["reconnecting","disconnected"],reconnecting:["connected","disconnected"],disconnected:[]};class a extends o{constructor(m,b,d,h){h=Object.assign({logLevel:e,RecordingSignaling:s,Timeout:u},h);const w=t(h.logLevel);super("connected",n);const y=h.RecordingSignaling,f=new h.Timeout(()=>{this._disconnect(this._reconnectingError)},h.sessionTimeout,!1);Object.defineProperties(this,{_instanceId:{value:i++},_log:{value:h.log?h.log.createLog("default",this):new r("default",this,w,h.loggerName)}
42,_mediaConnectionIsReconnecting:{writable:!0,value:!1},_options:{value:h},_reconnectingError:{value:null,writable:!0},_sessionTimeout:{value:f},dominantSpeakerSid:{enumerable:!0,value:null,writable:!0},localParticipant:{enumerable:!0,value:m},name:{enumerable:!0,value:d},participants:{enumerable:!0,value:new Map},recording:{enumerable:!0,value:new y},sid:{enumerable:!0,value:b}}),this.on("connectionStateChanged",()=>{this.connectionState==="failed"&&!["disconnected","failed"].includes(this.iceConnectionState)&&this._disconnect(new _)}),this.on("iceConnectionStateChanged",()=>c(this)),this.on("signalingConnectionStateChanged",()=>c(this)),setTimeout(()=>c(this))}_disconnect(m){return this.state!=="disconnected"?(this.preempt("disconnected",null,[m]),!0):!1}toString(){return`[RoomSignaling #${this._instanceId}: ${this.localParticipant?this.localParticipant.sid:"null"}]`}connectParticipant(m){const b=this;return m.state==="disconnected"||this.participants.has(m.sid)?!1:(this.participants.set(m.sid,m),m.on("stateChanged",function d(h){h==="disconnected"&&(m.removeListener("stateChanged",d),b.participants.delete(m.sid),b.emit("participantDisconnected",m))}),this.emit("participantConnected",m),!0)}disconnect(){return this._disconnect()}setDominantSpeaker(m){this.dominantSpeakerSid=m,this.emit("dominantSpeakerChanged")}}function c(g){if(g.state==="disconnected"||g.signalingConnectionState==="disconnected"){g._sessionTimeout.clear();return}let m;g.signalingConnectionState==="reconnecting"?m=g.signalingConnectionState:g.iceConnectionState==="failed"?(g._mediaConnectionIsReconnecting=!0,m="reconnecting"):g.iceConnectionState==="new"||g.iceConnectionState==="checking"?m=g._mediaConnectionIsReconnecting?"reconnecting":"connected":(g._mediaConnectionIsReconnecting=!1,g._reconnectingError=null,g._sessionTimeout.clear(),m="connected"),m!==g.state&&(m==="reconnecting"?(g._reconnectingError=g.signalingConnectionState==="reconnecting"?new p:new l,g._sessionTimeout.start(),g.preempt(m,null,[g._reconnectingError])):g.preempt(m))}return an=a,an}var on,zo;function Fd(){if(zo)return on;zo=1;class s{constructor({actual:u=null,available:t=null,level:e=null}){Object.defineProperties(this,{actual:{value:u,enumerable:!0},available:{value:t,enumerable:!0},level:{value:e,enumerable:!0}})}}return on=s,on}var cn,Qo;function Bd(){if(Qo)return cn;Qo=1;class s{constructor({fractionLost:u=null,level:t=null}){Object.defineProperties(this,{fractionLost:{value:u,enumerable:!0},level:{value:t,enumerable:!0}})}}return cn=s,cn}var un,Go;function Ud(){if(Go)return un;Go=1;class s{constructor({jitter:u=null,rtt:t=null,level:e=null}){Object.defineProperties(this,{jitter:{value:u,enumerable:!0},rtt:{value:t,enumerable:!0},level:{value:e,enumerable:!0}})}}return un=s,un}var ln,Ko;function fu(){if(Ko)return ln;Ko=1;const s=Fd(),o=Bd(),u=Ud();class t{constructor({bandwidth:r=null,fractionLost:l=null,latency:_=null}){Object.defineProperties(this,{bandwidth:{value:r?new s(r):null,enumerable:!0},fractionLost:{value:l?new o(l):null,enumerable:!0},latency:{value:_?new u(_):null,enumerable:!0}})}}return ln=t,ln}var dn,Yo;function Wd(){if(Yo)return dn;Yo=1;const s=fu();class o extends s{constructor(t){super(t)}}return dn=o,dn}var hn,Jo;function Hd(){if(Jo)return hn;Jo=1;const s=fu();class o extends s{constructor(t){super(t)}}return hn=o,hn}var fn,Xo;function pu(){if(Xo)return fn;Xo=1;const s=Wd(),o=Hd();class u{constructor({send:e,recv:r,sendStats:l=null,recvStats:_=null}){Object.defineProperties(this,{send:{value:e,enumerable:!0},recv:{value:r,enumerable:!0},sendStats:{value:l?new s(l):null,enumerable:!0},recvStats:{value:_?new o(_):null,enumerable:!0}})}}return fn=u,fn}var pn,Zo;function zd(){if(Zo)return pn;Zo=1;const s=pu();class o extends s{constructor(t){super(t)}}return pn=o,pn}var mn,ec;function Qd(){if(ec)return mn;ec=1;const s=pu();class o extends s{constructor(t){super(t)}}return mn=o,mn}var gn,tc;function Gd(){if(tc)return gn;tc=1;const s=zd(),o=Qd();class u{constructor({level:e,audio:r,video:l}){Object.defineProperties(this,{level:{value:e,enumerable:!0},audio:{value:r?new s(r):null,enumerable:!0},video:{value:l?new o(l):null,enumerable:!0}})}}return gn=u,gn}var vn,rc;function Gn(){if(rc)return vn;rc=1;const s=st(),o=Gd(),u={connecting:["connected"],connected:["disconnected","reconnecting"],reconnecting:["connected","disconnected"],disconnected:[]};class t extends s{constructor(){super("connecting",u),Object.defineProperties(this,{_identity:{writable:!0,value:null},_networkQualityLevel:{value:null,writable:!0},_networkQualityStats:{value:null,writable:!0},_sid:{writable:!0,value:null},identity:{enumerable:!0,get(){return this._identity}},sid:{enumerable:!0,get(){return this._sid}},tracks:{enumerable:!0,value:new Map}})}get networkQualityLevel(){return this._networkQualityLevel}get networkQualityStats(){return this._networkQualityStats}
42addTrack(r){return this.tracks.set(r.id||r.sid,r),this.emit("trackAdded",r),this}disconnect(){return this.state!=="disconnected"?(this.preempt("disconnected"),!0):!1}removeTrack(r){const l=this.tracks.get(r.id||r.sid);return this.tracks.delete(r.id||r.sid),l&&this.emit("trackRemoved",r),l||null}setNetworkQualityLevel(r,l){this._networkQualityLevel!==r&&(this._networkQualityLevel=r,this._networkQualityStats=l&&(l.audio||l.video)?new o(l):null,this.emit("networkQualityLevelChanged"))}connect(r,l){return this.state==="connecting"||this.state==="reconnecting"?(this._sid||(this._sid=r),this._identity||(this._identity=l),this.preempt("connected"),!0):!1}reconnecting(){return this.state==="connecting"||this.state==="connected"?(this.preempt("reconnecting"),!0):!1}}return vn=t,vn}var _n,ic;function Kd(){if(ic)return _n;ic=1;const s=Gn();class o extends s{constructor(t,e){super(),this.connect(t,e)}}return _n=o,_n}var bn,nc;function mu(){if(nc)return bn;nc=1;const{EventEmitter:s}=Le();class o extends s{constructor(t,e,r,l){super();let _=null;Object.defineProperties(this,{_error:{value:null,writable:!0},_isEnabled:{value:r,writable:!0},_priority:{value:l,writable:!0},_trackTransceiver:{value:null,writable:!0},_sid:{get(){return _},set(p){_===null&&(_=p)}},kind:{enumerable:!0,value:e},name:{enumerable:!0,value:t}})}get error(){return this._error}get isEnabled(){return this._isEnabled}get priority(){return this._priority}get sid(){return this._sid}get trackTransceiver(){return this._trackTransceiver}disable(){return this.enable(!1)}enable(t){return t=typeof t=="boolean"?t:!0,this.isEnabled!==t&&(this._isEnabled=t,this.emit("updated")),this}setTrackTransceiver(t){return t=t||null,this.trackTransceiver!==t&&(this._trackTransceiver=t,this.emit("updated")),this}setSid(t){return this.sid===null&&(this._sid=t,this.emit("updated")),this}}return bn=o,bn}var yn,sc;function Yd(){if(sc)return yn;sc=1;const s=mu();class o extends s{constructor(t,e,r,l,_,p){super(e,r,l,_),Object.defineProperties(this,{_isSwitchedOff:{value:p,writable:!0}}),this.setSid(t)}get isSubscribed(){return!!this.trackTransceiver}get isSwitchedOff(){return this._isSwitchedOff}subscribeFailed(t){return this.error||(this._error=t,this.emit("updated")),this}setPriority(t){return this._priority!==t&&(this._priority=t,this.emit("updated")),this}setSwitchedOff(t){return this._isSwitchedOff!==t&&(this._isSwitchedOff=t,this.emit("updated")),this}}return yn=o,yn}var kn,ac;function Jd(){if(ac)return kn;ac=1;const s=Yd();class o extends s{constructor(t,e){super(t.sid,t.name,t.kind,t.enabled,t.priority,e)}update(t){return this.enable(t.enabled),this.setPriority(t.priority),this}}return kn=o,kn}var Tn,oc;function Xd(){if(oc)return Tn;oc=1;const s=Kd(),o=Jd();class u extends s{constructor(e,r,l,_,p,i){return super(e.sid,e.identity),i=Object.assign({RemoteTrackPublicationV2:o},i),Object.defineProperties(this,{_revision:{writable:!0,value:null},_RemoteTrackPublicationV2:{value:i.RemoteTrackPublicationV2},_getInitialTrackSwitchOffState:{value:r},updateSubscriberTrackPriority:{value:(n,a)=>l(n,a)},updateTrackRenderHint:{value:(n,a)=>_(n,a)},clearTrackHint:{value:n=>p(n)},revision:{enumerable:!0,get(){return this._revision}}}),this.update(e)}_getOrCreateTrack(e){const r=this._RemoteTrackPublicationV2;let l=this.tracks.get(e.sid);if(!l){const _=this._getInitialTrackSwitchOffState(e.sid);l=new r(e,_),this.addTrack(l)}return l}update(e){if(this.revision!==null&&e.revision<=this.revision)return this;this._revision=e.revision;const r=new Set;switch(e.tracks.forEach(l=>{const _=this._getOrCreateTrack(l);_.update(l),r.add(_)}),this.tracks.forEach(l=>{r.has(l)||this.removeTrack(l)}),e.state){case"disconnected":this.disconnect();break;case"reconnecting":this.reconnecting();break;case"connected":this.connect(this.sid,this.identity);break}return this}}return Tn=u,Tn}var Sn,cc;function Zd(){if(cc)return Sn;cc=1;const s=Ye();class o extends s{constructor(t,e){super(t,"track_priority",e),Object.defineProperties(this,{_enqueuedPriorityUpdates:{value:new Map}}),this.on("ready",r=>
42{Array.from(this._enqueuedPriorityUpdates.keys()).forEach(l=>{r.publish({type:"track_priority",track:l,subscribe:this._enqueuedPriorityUpdates.get(l)})})})}sendTrackPriorityUpdate(t,e,r){if(e!=="subscribe")throw new Error("only subscribe priorities are supported, found: "+e);this._enqueuedPriorityUpdates.set(t,r),this._transport&&this._transport.publish({type:"track_priority",track:t,subscribe:r})}}return Sn=o,Sn}var wn,uc;function eh(){if(uc)return wn;uc=1;const s=Ye();class o extends s{constructor(t,e){super(t,"track_switch_off",e),this.on("ready",r=>{r.on("message",l=>{switch(l.type){case"track_switch_off":this._setTrackSwitchOffUpdates(l.off||[],l.on||[]);break}})})}_setTrackSwitchOffUpdates(t,e){this.emit("updated",t,e)}}return wn=o,wn}var Cn,lc;function th(){if(lc)return Cn;lc=1;const s=Ye(),o=Ke(),{isDeepEqual:u}=be(),t=2e3;let e=1;class r extends s{constructor(_,p){super(_,"render_hints",p),Object.defineProperties(this,{_trackSidsToRenderHints:{value:new Map},_responseTimer:{value:new o(()=>{this._sendAllHints(),this._responseTimer.setDelay(this._responseTimer.delay*2)},t,!1)}}),this.on("ready",i=>{i.on("message",n=>{switch(this._log.debug("Incoming: ",n),n.type){case"render_hints":this._processHintResults(n&&n.subscriber&&n.subscriber.hints||[]);break;default:this._log.warn("Unknown message type: ",n.type);break}}),this._sendAllHints()})}_sendAllHints(){Array.from(this._trackSidsToRenderHints.keys()).forEach(_=>{const p=this._trackSidsToRenderHints.get(_);p.renderDimensions&&(p.isDimensionDirty=!0),"enabled"in p&&(p.isEnabledDirty=!0)}),this._sendHints()}_processHintResults(_){this._responseTimer.clear(),this._responseTimer.setDelay(t),_.forEach(p=>{p.result!=="OK"&&this._log.debug("Server error processing hint:",p)}),this._sendHints()}_sendHints(){if(!this._transport||this._responseTimer.isSet)return;const _=[];if(Array.from(this._trackSidsToRenderHints.keys()).forEach(p=>{const i=this._trackSidsToRenderHints.get(p);if(i.isEnabledDirty||i.isDimensionDirty){const n={track:p};i.isEnabledDirty&&(n.enabled=i.enabled,i.isEnabledDirty=!1),i.isDimensionDirty&&(n.render_dimensions=i.renderDimensions,i.isDimensionDirty=!1),_.push(n)}}),_.length>0){const p={type:"render_hints",subscriber:{id:e++,hints:_}};this._log.debug("Outgoing: ",p),this._transport.publish(p),this._responseTimer.start()}}setTrackHint(_,p){const i=this._trackSidsToRenderHints.get(_)||{isEnabledDirty:!1,isDimensionDirty:!1};"enabled"in p&&i.enabled!==p.enabled&&(i.enabled=!!p.enabled,i.isEnabledDirty=!0),p.renderDimensions&&!u(p.renderDimensions,i.renderDimensions)&&(i.renderDimensions=p.renderDimensions,i.isDimensionDirty=!0),this._trackSidsToRenderHints.set(_,i),this._sendHints()}clearTrackHint(_){this._trackSidsToRenderHints.delete(_)}}return Cn=r,Cn}var Pn,dc;function rh(){if(dc)return Pn;dc=1;const s=Ye();let o=1;class u extends s{constructor(e,r){super(e,"publisher_hints",r),this.on("ready",l=>{this._log.debug("publisher_hints transport ready:",l),l.on("message",_=>{switch(this._log.debug("Incoming: ",_),_.type){case"publisher_hints":_.publisher&&_.publisher.hints&&_.publisher.id&&this._processPublisherHints(_.publisher.hints,_.publisher.id);break;default:this._log.warn("Unknown message type: ",_.type);break}})})}sendTrackReplaced({trackSid:e}){if(!this._transport)return;const r={type:"client_reset",track:e,id:o++};this._log.debug("Outgoing: ",r),this._transport.publish(r)}sendHintResponse({id:e,hints:r}){if(!this._transport)return;const l={type:"publisher_hints",id:e,hints:r};this._log.debug("Outgoing: ",l),this._transport.publish(l)}_processPublisherHints(e,r){try{this.emit("updated",e,r)}catch(l){this._log.error("error processing hints:",l)}}}return Pn=u,Pn}var En,hc;function ih(){if(hc)return En;hc=1;const s=Rd(),o=Ld(),u=qd(),t=Nd(),e=$d(),r=Vd(),l=hu(),_=Xd(),p=Zd(),i=eh(),n=th(),a=rh(),{constants:{DEFAULT_SESSION_TIMEOUT_SEC:c},createBandwidthProfilePayload:g,defer:m,flatMap:b,oncePerTick:d}
42=be(),{createTwilioError:h}=$e(),w=1e4,y=1e3;class f extends l{constructor(S,A,E,D,O){A.options=Object.assign({session_timeout:c},A.options),O=Object.assign({DominantSpeakerSignaling:s,TranscriptionSignaling:o,NetworkQualityMonitor:u,NetworkQualitySignaling:t,RecordingSignaling:e,RemoteParticipantV2:_,TrackPrioritySignaling:p,TrackSwitchOffSignaling:i,bandwidthProfile:null,sessionTimeout:A.options.session_timeout*1e3,statsPublishIntervalMs:w,statsCollectionIntervalMs:y},O),S.setBandwidthProfile(O.bandwidthProfile);const{options:{signaling_region:j,audio_processors:U=[]}}=A;S.setSignalingRegion(j),U.includes("krisp")&&U.push("rnnoise"),S.setAudioProcessors(U),D.setIceReconnectTimeout(O.sessionTimeout),super(S,A.sid,A.name,O);const Q=N=>this._getTrackReceiver(N),K=this._log;Object.defineProperties(this,{_disconnectedParticipantRevisions:{value:new Map},_NetworkQualityMonitor:{value:O.NetworkQualityMonitor},_lastBandwidthProfileRevision:{value:S.bandwidthProfileRevision,writable:!0},_mediaStatesWarningsRevision:{value:0,writable:!0},_networkQualityMonitor:{value:null,writable:!0},_networkQualityConfiguration:{value:S.networkQualityConfiguration},_peerConnectionManager:{value:D},_published:{value:new Map},_publishedRevision:{value:0,writable:!0},_RemoteParticipantV2:{value:O.RemoteParticipantV2},_subscribed:{value:new Map},_subscribedRevision:{value:0,writable:!0},_subscriptionFailures:{value:new Map},_dominantSpeakerSignaling:{value:new O.DominantSpeakerSignaling(Q,{log:K})},_transcriptionSignaling:{value:new O.TranscriptionSignaling(Q,{log:K})},_networkQualitySignaling:{value:new O.NetworkQualitySignaling(Q,S.networkQualityConfiguration,{log:K})},_renderHintsSignaling:{value:new n(Q,{log:K})},_publisherHintsSignaling:{value:new a(Q,{log:K})},_trackPrioritySignaling:{value:new O.TrackPrioritySignaling(Q,{log:K})},_trackSwitchOffSignaling:{value:new O.TrackSwitchOffSignaling(Q,{log:K})},_pendingSwitchOffStates:{value:new Map},_statsMonitor:{value:O.eventObserver&&O.insights?new r(this,K,{publishIntervalMs:O.statsPublishIntervalMs,collectionIntervalMs:O.statsCollectionIntervalMs}):null},_transport:{value:E},_trackReceiverDeferreds:{value:new Map},mediaRegion:{enumerable:!0,value:A.options.media_region||null}}),this._initTrackSwitchOffSignaling(),this._initDominantSpeakerSignaling(),this._initTranscriptionSignaling(),this._initNetworkQualityMonitorSignaling(),this._initPublisherHintSignaling(),I(this,S),P(this,D),R(this,E),this._statsMonitor&&this.on("stateChanged",N=>{N==="disconnected"&&this._statsMonitor&&this._statsMonitor.cleanup()}),this._update(A),this._peerConnectionManager.setEffectiveAdaptiveSimulcast(this._publisherHintsSignaling.isSetup)}get connectionState(){return this._peerConnectionManager.connectionState}get signalingConnectionState(){return this._transport.state==="syncing"?"reconnecting":this._transport.state}get iceConnectionState(){return this._peerConnectionManager.iceConnectionState}_deleteTrackReceiverDeferred(S){return this._trackReceiverDeferreds.delete(S)}_getOrCreateTrackReceiverDeferred(S){const A=this._trackReceiverDeferreds.get(S)||m(),D=this._peerConnectionManager.getTrackReceivers().find(O=>O.id===S&&O.readyState!=="ended");return D?A.resolve(D):this._trackReceiverDeferreds.set(S,A),A}_addTrackReceiver(S){return this._getOrCreateTrackReceiverDeferred(S.id).resolve(S),this}_disconnect(S){const A=super._disconnect.call(this,S);return A&&(this._teardownNetworkQualityMonitor(),this._transport.disconnect(),this._peerConnectionManager.close()),this.localParticipant.tracks.forEach(E=>{E.publishFailed(S||new Error("LocalParticipant disconnected"))}),A}_getTrackReceiver(S){return this._getOrCreateTrackReceiverDeferred(S).promise.then(A=>(this._deleteTrackReceiverDeferred(S),A))}_getInitialTrackSwitchOffState(S){const A=this._pendingSwitchOffStates.get(S)||!1;return this._pendingSwitchOffStates.delete(S),A&&this._log.warn(`[${S}] was initially switched off! `),A}_getTrackSidsToTrackSignalings(){const S=b(this.participants,A=>Array.from(A.tracks));return new Map(S)}_getOrCreateRemoteParticipant(S){const A=this._RemoteParticipantV2;let E=this.participants.get(S.sid);const D=this;return E||(E=new A(S,O=>this._getInitialTrackSwitchOffState(O),(O,j)=>this._trackPrioritySignaling.sendTrackPriorityUpdate(O,"subscribe",j),(O,j)=>this._renderHintsSignaling.setTrackHint(O,j),O=>this._renderHintsSignaling.clearTrackHint(O)),E.on("stateChanged",function O(j){j==="disconnected"&&(E.removeListener("stateChanged",O),D.participants.delete(E.sid),D._disconnectedParticipantRevisions.set(E.sid,E.revision))}),this.connectParticipant(E)),E}_getState(){return{participant:this.localParticipant.getState()}}_maybeAddBandwidthProfile(S){const{bandwidthProfile:A,bandwidthProfileRevision:E}=this.localParticipant;return A&&this._lastBandwidthProfileRevision<E?(this._lastBandwidthProfileRevision=E,Object.assign({bandwidth_profile:g(A)},S)):S}
42_publishNewLocalParticipantState(){this._transport.publish(this._maybeAddBandwidthProfile(this._getState()))}_publishPeerConnectionState(S){this._transport.publish(Object.assign({peer_connections:[S]},this._getState()))}_update(S){if(S.subscribed&&S.subscribed.revision>this._subscribedRevision){this._subscribedRevision=S.subscribed.revision,S.subscribed.tracks.forEach(D=>{D.id?(this._subscriptionFailures.delete(D.sid),this._subscribed.set(D.sid,D.id)):D.error&&!this._subscriptionFailures.has(D.sid)&&this._subscriptionFailures.set(D.sid,D.error)});const E=new Set(S.subscribed.tracks.filter(D=>!!D.id).map(D=>D.sid));this._subscribed.forEach((D,O)=>{E.has(O)||this._subscribed.delete(O)})}const A=new Set;return(S.participants||[]).forEach(E=>{if(E.sid===this.localParticipant.sid)return;const D=this._disconnectedParticipantRevisions.get(E.sid);if(D&&E.revision<=D)return;D&&this._disconnectedParticipantRevisions.delete(E.sid);const O=this._getOrCreateRemoteParticipant(E);O.update(E),A.add(O)}),S.type==="synced"&&this.participants.forEac
42h(E=>{A.has(E)||E.disconnect()}),L(this),S.peer_connections&&this._peerConnectionManager.update(S.peer_connections,S.type==="synced"),S.recording&&this.recording.update(S.recording),S.published&&S.published.revision>this._publishedRevision&&(this._publishedRevision=S.published.revision,S.published.tracks.forEach(E=>{E.sid&&this._published.set(E.id,E.sid)}),this.localParticipant.update(S.published)),S.participant&&this.localParticipant.connect(S.participant.sid,S.participant.identity),[this._dominantSpeakerSignaling,this._transcriptionSignaling,this._networkQualitySignaling,this._trackPrioritySignaling,this._trackSwitchOffSignaling,this._renderHintsSignaling,this._publisherHintsSignaling].forEach(E=>{const D=E.channel;!E.isSetup&&S.media_signaling&&S.media_signaling[D]&&S.media_signaling[D].transport&&S.media_signaling[D].transport.type==="data-channel"&&E.setup(S.media_signaling[D].transport.label)}),S.type==="warning"&&S.states&&S.states.revision>this._mediaStatesWarningsRevision&&(this._mediaStatesWarningsRevision=S.states.revision,this.localParticipant.updateMediaStates(S.states)),this}_initPublisherHintSignaling(){this._publisherHintsSignaling.on("updated",(A,E)=>{Promise.all(A.map(D=>this.localParticipant.setPublisherHint(D.track,D.encodings).then(O=>({track:D.track,result:O})))).then(D=>{this._publisherHintsSignaling.sendHintResponse({id:E,hints:D})})});const S=A=>{A.kind==="video"&&A.trackTransceiver.on("replaced",()=>{this._publisherHintsSignaling.sendTrackReplaced({trackSid:A.sid})})};Array.from(this.localParticipant.tracks.values()).forEach(A=>S(A)),this.localParticipant.on("trackAdded",A=>S(A))}_initTrackSwitchOffSignaling(){this._trackSwitchOffSignaling.on("updated",(S,A)=>{try{this._log.debug("received trackSwitch: ",{tracksOn:A,tracksOff:S});const E=new Map;A.forEach(D=>E.set(D,!0)),S.forEach(D=>{E.get(D)&&this._log.warn(`${D} is DUPLICATED in both tracksOff and tracksOn list`),E.set(D,!1)}
42),this.participants.forEach(D=>{D.tracks.forEach(O=>{const j=E.get(O.sid);typeof j<"u"&&(O.setSwitchedOff(!j),E.delete(O.sid))})}),E.forEach((D,O)=>this._pendingSwitchOffStates.set(O,!D))}catch(E){this._log.error("error processing track switch off:",E)}})}_initDominantSpeakerSignaling(){this._dominantSpeakerSignaling.on("updated",()=>this.setDominantSpeaker(this._dominantSpeakerSignaling.loudestParticipantSid))}_initTranscriptionSignaling(){this._transcriptionSignaling.on("transcription",S=>{this.emit("transcription",S)})}_initNetworkQualityMonitorSignaling(){this._networkQualitySignaling.on("ready",()=>{const S=new this._NetworkQualityMonitor(this._peerConnectionManager,this._networkQualitySignaling);this._networkQualityMonitor=S,S.on("updated",()=>{this.iceConnectionState!=="failed"&&(this.localParticipant.setNetworkQualityLevel(S.level,S.levels),this.participants.forEach(A=>{const E=S.remoteLevels.get(A.sid);E&&A.setNetworkQualityLevel(E.level,E)}))}),S.start()}),this._networkQualitySignaling.on("teardown",()=>this._teardownNetworkQualityMonitor())}_teardownNetworkQualityMonitor(){this._networkQualityMonitor&&(this._networkQualityMonitor.stop(),this._networkQualityMonitor=null)}getStats(){return this._peerConnectionManager.getStats().then(S=>new Map(Array.from(S).map(([A,E])=>[A,Object.assign({},E,{localAudioTrackStats:k(this,E.localAudioTrackStats),localVideoTrackStats:k(this,E.localVideoTrackStats),remoteAudioTrackStats:T(this,E.remoteAudioTrackStats),remoteVideoTrackStats:T(this,E.remoteVideoTrackStats)})])))}}function v(M,S){return S.reduce((A,E)=>{const D=M.get(E.trackId);return D?[Object.assign({},E,{trackSid:D})].concat(A):A},[])}function k(M,S){return v(M._published,S)}function T(M,S){const A=new Map(Array.from(M._subscribed.entries()).map(([E,D])=>[D,E]));return v(A,S)}function I(M,S){const A=d(()=>{M._publishNewLocalParticipantState()}),E=d(()=>{const D=b(S.tracks,O=>O.trackTransceiver);M._peerConnectionManager.setTrackSenders(D)});S.on("trackAdded",E),S.on("trackRemoved",E),S.on("updated",A),M.on("stateChanged",function D(O){O==="disconnected"&&(S.removeListener("trackAdded",E),S.removeListener("trackRemoved",E),S.removeListener("updated",A),M.removeListener("stateChanged",D),S.disconnect())}),M.on("signalingConnectionStateChanged",()=>{const{localParticipant:D,signalingConnectionState:O}=M,{identity:j,sid:U}=D;switch(O){case"connected":D.connect(U,j);break;case"reconnecting":D.reconnecting();break}})}function P(M,S){S.on("description",function(E){M._publishPeerConnectionState(E)}),S.dequeue("description"),S.on("candidates",function(E){M._publishPeerConnectionState(E)}),S.dequeue("candidates"),S.on("trackAdded",M._addTrackReceiver.bind(M)),S.dequeue("trackAdded"),S.getTrackReceivers().forEach(M._addTrackReceiver,M),S.on("connectionStateChanged",()=>{M.emit("connectionStateChanged")}),S.on("iceConnectionStateChanged",()=>{M.emit("iceConnectionStateChanged"),M.iceConnectionState==="failed"&&(M.localParticipant.networkQualityLevel!==null&&M.localParticipant.setNetworkQualityLevel(0),M.participants.forEac
42h(A=>{A.networkQualityLevel!==null&&A.setNetworkQualityLevel(0)}))})}function R(M,S){S.on("message",M._update.bind(M)),S.on("stateChanged",function A(E,D){E==="disconnected"&&(M.state!=="disconnected"&&M._disconnect(D),S.removeListener("stateChanged",A)),M.emit("signalingConnectionStateChanged")})}function L(M){const S=M._getTrackSidsToTrackSignalings();M._subscriptionFailures.forEach((A,E)=>{const D=S.get(E);D&&(M._subscriptionFailures.delete(E),D.subscribeFailed(h(A.code,A.message)))}),S.forEach(A=>{const E=M._subscribed.get(A.sid);(!E||A.isSubscribed&&A.trackTransceiver.id!==E)&&A.setTrackTransceiver(null),E&&M._getTrackReceiver(E).then(D=>A.setTrackTransceiver(D))})}return En=f,En}var Rn,fc;function nh(){if(fc)return Rn;fc=1;const s=st(),o=zc(),u=nu(),{reconnectBackoffConfig:t}=Se(),e=Ke(),{SDK_NAME:r,SDK_VERSION:l,SDP_FORMAT:_}=Se(),{createBandwidthProfilePayload:p,createMediaSignalingPayload:i,createMediaWarningsPayload:n,createSubscribePayload:a,getUserAgent:c,isNonArrayObject:g}=be(),{createTwilioError:m,RoomCompletedError:b,SignalingConnectionError:d,SignalingServerBusyError:h}=$e(),w=1,y=2,f={connecting:["connected","disconnected"],connected:["disconnected","syncing"],syncing:["connected","disconnected"],disconnected:[]};class v extends s{constructor(R,L,M,S,A,E){E=Object.assign({Backoff:u,TwilioConnection:o,iceServers:null,trackPriority:!0,trackSwitchOff:!0,renderHints:!0,userAgent:c()},E),super("connecting",f),Object.defineProperties(this,{_accessToken:{value:L},_adaptiveSimulcast:{value:E.adaptiveSimulcast},_automaticSubscription:{value:E.automaticSubscription},_bandwidthProfile:{value:E.bandwidthProfile},_dominantSpeaker:{value:E.dominantSpeaker},_receiveTranscriptions:{value:E.receiveTranscriptions},_eventObserver:{value:E.eventObserver,writable:!1},_renderHints:{value:E.renderHints},_iceServersStatus:{value:Array.isArray(E.iceServers)?"overrode":"acquire"},_localParticipant:{value:M},_name:{value:R},_networkQuality:{value:g(E.networkQuality)||E.networkQuality},_notifyWarnings:{value:E.notifyWarnings},_options:{value:E},_peerConnectionManager:{value:S},_sessionTimer:{value:null,writable:!0},_sessionTimeoutMS:{value:0,writable:!0},_reconnectBackoff:{value:new E.Backoff(t)},_session:{value:null,writable:!0},_trackPriority:{value:E.trackPriority},_trackSwitchOff:{value:E.trackSwitchOff},_twilioConnection:{value:null,writable:!0},_updatesReceived:{value:[]},_updatesToSend:{value:[]},_userAgent:{value:E.userAgent},_wsServer:{value:A}}),I(this)}_createConnectOrSyncOrDisconnectMessage(){if(this.state==="connected")return null;if(this.state==="disconnected")return{session:this._session,type:"disconnect",version:y};const R={connecting:"connect",syncing:"sync"}[this.state],L={name:this._name,participant:this._localParticipant.getState(),peer_connections:this._peerConnectionManager.getStates(),type:R,version:y};return L.type==="connect"?(L.ice_servers=this._iceServersStatus,L.publisher={name:r,sdk_version:l,user_agent:this._userAgent},this._bandwidthProfile&&(L.bandwidth_profile=p(this._bandwidthProfile)),this._notifyWarnings&&(L.participant.media_warnings=n(this._notifyWarnings)),L.media_signaling=i(this._dominantSpeaker,this._networkQuality,this._trackPriority,this._trackSwitchOff,this._adaptiveSimulcast,this._renderHints,this._receiveTranscriptions),L.subscribe=a(this._automaticSubscription),L.format=_,L.token=this._accessToken):L.type==="sync"?(L.session=this._session,L.token=this._accessToken):L.type==="update"&&(L.session=this._session),L}_createIceMessage(){return{edge:"roaming",token:this._accessToken,type:"ice",version:w}}_sendConnectOrSyncOrDisconnectMessage(){const R=this._createConnectOrSyncOrDisconnectMessage();R&&this._twilioConnection.sendMessage(R)}disconnect(R){return this.state!=="disconnected"?(this.preempt("disconnected",null,[R]),this._sendConnectOrSyncOrDisconnectMessage(),this._twilioConnection.close(),!0):!1}publish(R){switch(this.state){case"connected":return this._twilioConnection.sendMessage(Object.assign({session:this._session,type:"update",version:y},R)),!0;case"connecting":case"syncing":return this._updatesToSend.push(R),!0;case"disconnected":default:return!1}}publishEvent(R,L,M,S){this._eventObserver.emit("event",{group:R,name:L,level:M,payload:S})}sync(){return this.state==="connected"?(this.preempt("syncing"),this._sendConnectOrSyncOrDisconnectMessage(),!0):!1}_setSession(R,L){this._session=R,this._sessionTimeoutMS=L*1e3}_getReconnectTimer(){return this._sessionTimeoutMS===0?null:(this._sessionTimer||(this._sessionTimer=new e(()=>{this._sessionTimer&&(this._sessionTimeoutMS=0)},this._sessionTimeoutMS)),new Promise(R=>{this._reconnectBackoff.backoff(R)}))}_clearReconnectTimer(){this._reconnectBackoff.reset(),this._sessionTimer&&(this._sessionTimer.clear(),this._sessionTimer=null)}}function k(P){return Array.from(P.reduce((R,L)=>{const M=R.get(L.id)||L;return(!M.description&&L.description||M.description&&L.description&&L.description.revision>M.description.revision)&&(M.description=L.description),(!M.ice&&L.ice||M.ice&&L.ice&&L.ice.revision>M.ice.revision)&&(M.ice=L.ice),R.set(M.id,M),R},new Map).values())}function T(P){return P.reduce((R,L)=>((!R.participant&&L.participant||R.participant&&L.participant&&L.participant.revision>R.participant.revision)&&(R.participant=L.participant),!R.peer_connections&&L.peer_connections?R.peer_connections=k(L.peer_connections):R.peer_connections&&L.peer_connections&&(R.peer_connections=k(R.peer_connections.concat(L.peer_connections))),R),{})}function I(P){function R(){if(P.state==="disconnected")return;P._twilioConnection&&P._twilioConnection.removeListener("message",M);const{_iceServersStatus:O,_options:j,_wsServer:U,state:Q}
42=P,{TwilioConnection:K}=j,N=new K(U,Object.assign({helloBody:Q==="connecting"&&O==="acquire"?P._createIceMessage():P._createConnectOrSyncOrDisconnectMessage()},j));N.once("close",B=>{B===K.CloseReason.LOCAL?L():L(new Error(B))}),N.on("message",M),P._twilioConnection=N}function L(O){if(P.state==="disconnected")return;if(!O){P.disconnect();return}const j=P._getReconnectTimer();if(!j){const U=O.message===o.CloseReason.BUSY?new h:new d;P.disconnect(U);return}P.state==="connected"&&P.preempt("syncing"),j.then(R)}function M(O){if(P.state!=="disconnected"){if(O.type==="error"){P.disconnect(m(O.code,O.message));return}switch(P.state){case"connected":switch(O.type){case"connected":case"synced":case"update":case"warning":P.emit("message",O);return;case"disconnected":P.disconnect(O.status==="completed"?new b:null);return;default:return}case"connecting":switch(O.type){case"iced":P._options.onIced(O.ice_servers).then(()=>{P._sendConnectOrSyncOrDisconnectMessage()});return;case"connected":P._setSession(O.session,O.options.session_timeout),P.emit("connected",O),P.preempt("connected");return;case"synced":case"update":P._updatesReceived.push(O);return;case"disconnected":P.disconnect(O.status==="completed"?new b:null);return;default:return}case"syncing":switch(O.type){case"connected":case"update":P._updatesReceived.push(O);return;case"synced":P._clearReconnectTimer(),P.emit("message",O),P.preempt("connected");return;case"disconnected":P.disconnect(O.status==="completed"?new b:null);return;default:return}default:return}}}P.on("stateChanged",function O(j){switch(j){case"connected":{const U=P._updatesToSend.splice(0);U.length&&P.publish(T(U)),P._updatesReceived.splice(0).forEach(Q=>P.emit("message",Q));return}case"disconnected":P._twilioConnection.removeListener("message",M),P.removeListener("stateChanged",O);return;case"syncing":return;default:return}});const{_options:S,_iceServersStatus:A}=P,{iceServers:E,onIced:D}=S;A==="overrode"?D(E).then(R):R()}return Rn=v,Rn}var Ln,pc;function sh(){if(pc)return Ln;pc=1;const s=Wn(),o=Ed(),u=ih(),t=nh(),{SignalingConnectionDisconnectedError:e,SignalingIncomingMessageInvalidError:r}=$e(),{flatMap:l,createRoomConnectingEventPayload:_}=be();function p(i,n,a,c,g,m){m=Object.assign({PeerConnectionManager:o,RoomV2:u,Transport:t},m);const b=g.video[0]&&g.video[0].adaptiveSimulcast===!0,{PeerConnectionManager:d,RoomV2:h,Transport:w,iceServers:y,log:f}=m,v=new d(c,g,m),k=l(a.tracks,R=>[R.trackTransceiver]);v.setTrackSenders(k);const T=new Error("Canceled");let I;const P=new s((R,L,M)=>{const S=ae=>M()?(L(T),Promise.reject(T)):(f.debug("Got ICE servers:",ae),m.iceServers=ae,v.setConfiguration(m),v.createAndOffer().then(()=>{if(M())throw L(T),T;f.debug("createAndOffer() succeeded."),v.dequeue("description")}).catch(ce=>{throw f.error("createAndOffer() failed:",ce),L(ce),ce})),{automaticSubscription:A,bandwidthProfile:E,dominantSpeaker:D,receiveTranscriptions:O,environment:j,eventObserver:U,loggerName:Q,logLevel:K,name:N,networkMonitor:B,networkQuality:le,notifyWarnings:ee,realm:se,sdpSemantics:de}=m,he=!!E,me=!!E,J=!!E&&(m.clientTrackSwitchOffControl!=="disabled"||m.contentPreferencesMode!=="disabled"),z=Object.assign({adaptiveSimulcast:b,automaticSubscription:A,dominantSpeaker:D,receiveTranscriptions:O,environment:j,eventObserver:U,loggerName:Q,logLevel:K,networkMonitor:B,networkQuality:le,notifyWarnings:ee,iceServers:y,onIced:S,realm:se,renderHints:J,sdpSemantics:de,trackPriority:he,trackSwitchOff:me},E?{bandwidthProfile:E}:{});I=new w(N,i,a,v,n,z);const oe=_(m);U.emit("event",oe),I.once("connected",ae=>{if(f.debug("Transport connected:",ae),M()){L(T);return}const{participant:ce}=ae;if(!ce){L(new r);return}R(new h(a,ae,I,v,m))}),I.once("stateChanged",(ae,ce)=>{ae==="disconnected"?(I=null,L(ce||new e)):f.debug("Transport state changed:",ae)})},()=>{I&&(I.disconnect(),I=null)});return P.catch(()=>{I&&(I.disconnect(),I=null),v.close()}),P}return Ln=p,Ln}var On,mc;function ah(){if(mc)return On;mc=1;const s=Gn();class o extends s{constructor(){super(),Object.defineProperties(this,{_publicationsToTrackSenders:{value:new Map},_trackSendersToPublications:{value:new Map}})}addTrack(t,e,r,l=null){const _=this._createLocalTrackPublicationSignaling(t,e,r,l);return this._trackSendersToPublications.set(t,_),this._publicationsToTrackSenders.set(_,t),super.addTrack(_),this}getPublication(t){return this._trackSendersToPublications.get(t)||null}getSender(t){return this._publicationsToTrackSenders.get(t)||null}removeTrack(t){const e=this._trackSendersToPublications.get(t);return e?(this._trackSendersToPublications.delete(t),this._publicationsToTrackSenders.delete(e),super.removeTrack(e)&&e.stop(),e):null}}return On=o,On}var In,gc;
42function oh(){if(gc)return In;gc=1;const s=mu();class o extends s{constructor(e,r,l){const _=e.clone();e.kind!=="data"&&(_.track.enabled=e.track.enabled),e=_;const p=e.kind==="data"?!0:e.track.enabled;super(r,e.kind,p,l),this.setTrackTransceiver(e),Object.defineProperties(this,{_updatedPriority:{value:l,writable:!0},id:{enumerable:!0,value:e.id}})}get updatedPriority(){return this._updatedPriority}enable(e){return e=typeof e=="boolean"?e:!0,this.trackTransceiver.track.enabled=e,super.enable(e)}publishFailed(e){return u(this,e)&&this.emit("updated"),this}setPriority(e){return this._updatedPriority!==e&&(this._updatedPriority=e,this.emit("updated")),this}setSid(e){return this._error?this:super.setSid.call(this,e)}stop(){this.trackTransceiver.stop()}}function u(t,e){return t._sid!==null||t._error?!1:(t._error=e,!0)}return In=o,In}var Mn,vc;function ch(){if(vc)return Mn;vc=1;const s=oh(),o=Lc(),u=$e().createTwilioError;class t extends s{constructor(r,l,_,p,i){super(r,l,_),Object.defineProperties(this,{_log:{value:i.log.createLog("default",this)},_mediaStates:{value:{recordings:null},writable:!0},_noiseCancellationVendor:{value:p}})}getState(){const r={enabled:this.isEnabled,id:this.id,kind:this.kind,name:this.name,priority:this.updatedPriority};return this._noiseCancellationVendor&&(r.audio_processor=this._noiseCancellationVendor),r}toString(){return`[LocalTrackPublicationV2: ${this.sid}]`}update(r){switch(r.state){case"ready":this.setSid(r.sid);break;case"failed":{const l=r.error;this.publishFailed(u(l.code,l.message));break}}return this}updateMediaStates(r){if(!r||!r.recordings||this._mediaStates.recordings===r.recordings)return this;switch(this._mediaStates.recordings=r.recordings,this._mediaStates.recordings){case"OK":this._log.info("Warnings have cleared."),this.emit("warningsCleared");break;case"NO_MEDIA":this._log.warn("Recording media lost."),this.emit("warning",o.recordingMediaLost);break;default:this._log.warn(`Unknown media state detected: ${this._mediaStates.recordings}`);break}return this}}return Mn=t,Mn}var Dn,_c;function uh(){if(_c)return Dn;_c=1;const s=ah(),o=ch(),{DEFAULT_LOG_LEVEL:u}=Se(),t=xe(),{buildLogLevels:e,isDeepEqual:r}=be();class l extends s{constructor(p,i,n){n=Object.assign({logLevel:u,LocalTrackPublicationV2:o},n),super();const a=e(n.logLevel);Object.defineProperties(this,{_bandwidthProfile:{value:null,writable:!0},_bandwidthProfileRevision:{value:0,writable:!0},_encodingParameters:{value:p},_removeListeners:{value:new Map},_LocalTrackPublicationV2:{value:n.LocalTrackPublicationV2},_log:{value:n.log?n.log.createLog("default",this):new t("default",this,a,n.loggerName)},_publishedRevision:{writable:!0,value:0},_revision:{writable:!0,value:1},_signalingRegion:{value:null,writable:!0},audioProcessors:{value:[],writable:!0},bandwidthProfile:{enumerable:!0,get(){return this._bandwidthProfile}},bandwidthProfileRevision:{enumerable:!0,get(){return this._bandwidthProfileRevision}},networkQualityConfiguration:{enumerable:!0,value:i},revision:{enumerable:!0,get(){return this._revision}},signalingRegion:{enumerable:!0,get(){return this._signalingRegion}}})}toString(){return`[LocalParticipantSignaling: ${this.sid}]`}setSignalingRegion(p){this._signalingRegion||(this._signalingRegion=p)}setBandwidthProfile(p){r(this._bandwidthProfile,p)||(this._bandwidthProfile=JSON.parse(JSON.stringify(p)),this._bandwidthProfileRevision++,this.didUpdate())}setAudioProcessors(p){this.audioProcessors=p}getParameters(){return this._encodingParameters}setParameters(p){return this._encodingParameters.update(p),this}update(p){return this._publishedRevision>=p.revision?this:(this._publishedRevision=p.revision,p.tracks.forEach(function(i){const n=this.tracks.get(i.id);n&&n.update(i)},this),this)}updateMediaStates(p){return!p||!p.tracks?this:(Array.from(this.tracks.values()).forEach(i=>{const n=p.tracks[i.sid];n&&i.updateMediaStates(n)}),this)}_createLocalTrackPublicationSignaling(p,i,n,a){return new this._LocalTrackPublicationV2(p,i,n,a,{log:this._log})}addTrack(p,i,n,a){super.addTrack(p,i,n,a);const c=this.getPublication(p);let{isEnabled:g,updatedPriority:m}=c;const b=()=>{(g!==c.isEnabled||m!==c.updatedPriority)&&(this.didUpdate(),g=c.isEnabled,m=c.updatedPriority)};return c.on("updated",b),this._removeListener(c),this._removeListeners.set(c,()=>c.removeListener("updated",b)),this.didUpdate(),this}_removeListener(p){const i=this._removeListeners.get(p);i&&i()}getState(){return{revision:this.revision,tracks:Array.from(this.tracks.values()).map(p=>p.getState())}}
42didUpdate(){this._revision++,this.emit("updated")}removeTrack(p){const i=super.removeTrack(p);return i&&(p.removeClone(i.trackTransceiver),this._removeListener(i),this.didUpdate()),i}setNetworkQualityConfiguration(p){this.networkQualityConfiguration.update(p)}setPublisherHint(p,i){const n=Array.from(this.tracks.values()).find(a=>a.sid===p);return n?n.trackTransceiver.setPublisherHint(i):(this._log.warn(`track:${p} not found`),Promise.resolve("UNKNOWN_TRACK"))}}return Dn=l,Dn}var An,bc;function lh(){if(bc)return An;bc=1;const s=Gn(),o=hu(),u=st(),t={closed:["opening"],opening:["closed","open"],open:["closed","closing"],closing:["closed","open"]};class e extends u{constructor(){super("closed",t)}_close(l){return this.transition("closing",l),this.transition("closed",l),Promise.resolve(this)}_connect(l,_,p,i,n){l.connect("PA00000000000000000000000000000000","test");const a="RM00000000000000000000000000000000",c=Promise.resolve(new o(l,a,n));return c.cancel=function(){},c}_open(l){return this.transition("opening",l),this.transition("open",l),Promise.resolve(this)}close(){return this.bracket("close",l=>{switch(this.state){case"closed":return this;case"open":return this._close(l);default:throw new Error(`Unexpected Signaling state "${this.state}"`)}})}connect(l,_,p,i,n){const a=this;return this.bracket("connect",function c(g){switch(a.state){case"closed":return a._open(g).then(c.bind(null,g));case"open":return a.releaseLockCompletely(g),a._connect(l,_,p,i,n);default:throw new Error(`Unexpected Signaling state "${a.state}"`)}})}createLocalParticipantSignaling(){return new s}open(){return this.bracket("open",l=>{switch(this.state){case"closed":return this._open(l);case"open":return this;default:throw new Error(`Unexpected Signaling state "${this.state}"`)}})}}return An=e,An}var xn,yc;function dh(){if(yc)return xn;yc=1;const s=sh(),o=uh(),u=lh();class t extends u{constructor(r,l){l=Object.assign({createCancelableRoomSignalingPromise:s},l),super(),Object.defineProperties(this,{_createCancelableRoomSignalingPromise:{value:l.createCancelableRoomSignalingPromise},_options:{value:l},_wsServer:{value:r}})}_connect(r,l,_,p,i){return i=Object.assign({},this._options,i),this._createCancelableRoomSignalingPromise.bind(null,l,this._wsServer,r,_,p,i)}createLocalParticipantSignaling(r,l){return new o(r,l)}}return xn=t,xn}var qn,kc;function hh(){if(kc)return qn;kc=1;const{guessBrowser:s,guessBrowserVersion:o,isCodecSupported:u}=Me(),t=Hl(),e=zl(),r=id(),l=Kc(),_=nd(),{LocalAudioTrack:p,LocalDataTrack:i,LocalVideoTrack:n}=nt(),a=sd(),c=gd(),g=dh(),{asLocalTrack:m,buildLogLevels:b,createRoomConnectedEventPayload:d,filterObject:h,isNonArrayObject:w}=be(),{DEFAULT_ENVIRONMENT:y,DEFAULT_LOG_LEVEL:f,DEFAULT_LOGGER_NAME:v,DEFAULT_REALM:k,DEFAULT_REGION:T,WS_SERVER:I,SDK_NAME:P,SDK_VERSION:R,typeErrors:L}=Se(),M=Wn(),S=Gc(),A=xe(),{validateBandwidthProfile:E}=Yc(),D=We(),O=s()==="safari"&&o();let j=0,U=!1,Q=!1;if(O){const{major:J,minor:z}=O;Q=J<12||J===12&&z<1}const K=new Set([{didWarn:!1,shouldDelete:!0,name:"abortOnIceServersTimeout"},{didWarn:!1,shouldDelete:!0,name:"dscpTagging",newName:"enableDscp"},{didWarn:!1,shouldDelete:!0,name:"iceServersTimeout"},{didWarn:!1,shouldDelete:!1,name:"eventListener",newName:"Video.Logger"},{didWarn:!1,shouldDelete:!1,name:"logLevel",newName:"Video.Logger"}]),N=new Set([{didWarn:!1,shouldDelete:!1,name:"maxTracks",newName:"bandwidthProfile.video.clientTrackSwitchOffControl"},{didWarn:!1,shouldDelete:!1,name:"renderDimensions",newName:"bandwidthProfile.video.contentPreferencesMode"}]);function B(J,z){if(typeof z>"u"&&(z={}),!w(z))return M.reject(L.INVALID_TYPE("options","object"));const oe=z.Log||A,ae=z.loggerName||v,ce=z.logLevel||f,Y=b(ce),ye=`[connect #${++j}]`;let ue;try{ue=new oe("default",ye,Y,ae)}catch(ne){return M.reject(ne)}le(z,ue,K);const Te=z.preferredVideoCodecs==="auto";if(Te&&(z.preferredVideoCodecs=[{codec:"VP8",simulcast:!0,adaptiveSimulcast:!0}]),z.maxVideoBitrate&&Te)return ue.error('ConnectOptions "maxVideoBitrate" is not compatible with "preferredVideoCodecs=auto"'),M.reject(L.ILLEGAL_INVOKE("connect",'ConnectOptions "maxVideoBitrate" is not compatible with "preferredVideoCodecs=auto"'));z=Object.assign({automaticSubscription:!0,dominantSpeaker:!1,enableDscp:!1,receiveTranscriptions:!1,environment:y,eventListener:null,insights:!0,LocalAudioTrack:p,LocalDataTrack:i,LocalParticipant:r,LocalVideoTrack:n,Log:oe,MediaStreamTrack,loggerName:ae,logLevel:ce,maxAudioBitrate:null,maxVideoBitrate:null,name:null,networkMonitor:!0,networkQuality:!1,preferredAudioCodecs:[],preferredVideoCodecs:[],realm:k,region:T,signaling:g},h(z));const q={};typeof z.wsServerInsights=="string"&&(q.gateway=z.wsServerInsights);const $=z.insights?l:_,G=new $(J,P,R,z.environment,z.realm,q),W=I(z.environment,z.region),F=Date.now(),C=new S(G,F,ue,z.eventListener);if(z=Object.assign({eventObserver:C,wsServer:W},z),z.log=ue,Q&&!U&&ue.logLevel!=="error"&&ue.logLevel!=="off"&&(U=!0,ue.warn(["Supp
42ort for Safari 12.0 and below is limited because it does not support VP8.","This means you may experience codec issues in Group Rooms. You may also","experience codec issues in Peer-to-Peer (P2P) Rooms containing Android- or","iOS-based Participants who do not support H.264. However, P2P Rooms","with browser-based Participants should work. For more information, please","refer to this guide: https://www.twilio.com/docs/video/javascript-v2-developing-safari-11"].join(" "))),typeof J!="string")return M.reject(L.INVALID_TYPE("token","string"));z.insights&&G&&D.configure({publisher:G,log:ue,connectTimestamp:F});const x=Object.assign({},z);if(delete x.name,"tracks"in z){if(!Array.isArray(z.tracks))return M.reject(L.INVALID_TYPE("options.tracks","Array of LocalAudioTrack, LocalVideoTrack or MediaStreamTrack"));try{z.tracks=z.tracks.map(ne=>m(ne,x))}catch(ne){return M.reject(ne)}}const V=E(z.bandwidthProfile);if(V)return M.reject(V);z.clientTrackSwitchOffControl="disabled",z.contentPreferencesMode="disabled",z.bandwidthProfile&&(z.clientTrackSwitchOffControl="auto",z.contentPreferencesMode="auto",z.bandwidthProfile.video&&(le(z.bandwidthProfile.video,ue,N),"maxTracks"in z.bandwidthProfile.video?z.clientTrackSwitchOffControl="disabled":z.bandwidthProfile.video.clientTrackSwitchOffControl==="manual"?z.clientTrackSwitchOffControl="manual":z.clientTrackSwitchOffControl="auto","renderDimensions"in z.bandwidthProfile.video?z.contentPreferencesMode="disabled":z.bandwidthProfile.video.contentPreferencesMode==="manual"?z.contentPreferencesMode="manual":z.contentPreferencesMode="auto"));const H=z.signaling,X=new H(z.wsServer,z);ue.info("Connecting to a Room"),ue.debug("Options:",z);const ie=new e({maxAudioBitrate:z.maxAudioBitrate,maxVideoBitrate:z.maxVideoBitrate},Te),ve={audio:z.preferredAudioCodecs.map(me),video:z.preferredVideoCodecs.map(me)},ke=new a(w(z.networkQuality)?z.networkQuality:{});["audio","video"].forEach(ne=>ve[ne].forEach(({codec:we})=>u(we,ne).then(Ve=>!Ve&&ue.warn(`The preferred ${ne} codec "${we}" will be ignored as it is not supported by the browser.`))));const ge=t(he.bind(null,z),ee.bind(null,X,ue,ie,ke,z),de.bind(null,J,z,X,ie,ve),se.bind(null,z));return ge.then(ne=>{G.connect(ne.sid,ne.localParticipant.sid);const we=d(z);return z.eventObserver.emit("event",we),ue.info("Connected to Room:",ne.toString()),ue.info("Room name:",ne.name),ue.debug("Room:",ne),ne.once("disconnected",()=>{setTimeout(()=>G.disconnect(),50)}),ne},ne=>{setTimeout(()=>G.disconnect(),50),ge._isCanceled?ue.info("Attempt to connect to a Room was canceled"):ue.info("Error while connecting to a Room:",ne)}),ge}function le(J,z,oe){oe.forEach(ae=>{const{didWarn:ce,name:Y,newName:ye,shouldDelete:ue}=ae;Y in J&&typeof J[Y]<"u"&&(ye&&ue&&(J[ye]=J[Y]),ue&&delete J[Y],!ce&&!["error","off"].includes(z.level)&&(z.warn(`The ConnectOptions "${Y}" is ${ye?`deprecated and scheduled for removal. Please use "${ye}" instead.`:"no longer applicable and will be ignored."}`),ae.didWarn=!0))})}function ee(J,z,oe,ae,ce,Y){const ye=J.createLocalParticipantSignaling(oe,ae);return z.debug("Creating a new LocalParticipant:",ye),new ce.LocalParticipant(ye,Y,ce)}function se(J,z,oe){const ae=new c(z,oe,J),ce=J.log;return ce.debug("Creating a new Room:",ae),oe.on("stateChanged",function Y(ye){ye==="disconnected"&&(ce.info("Disconnected from Room:",ae.toString()),oe.removeListener("stateChanged",Y))}),ae}function de(J,z,oe,ae,ce,Y){return z.log.debug("Creating a new RoomSignaling"),oe.connect(Y._signaling,J,ae,ce,z)}function he(J,z){const oe=J.log;return J.shouldStopLocalTracks=!J.tracks,J.shouldStopLocalTracks?oe.info("LocalTracks were not provided, so they will be acquired automatically before connecting to the Room. LocalTracks will be released if connecting to the Room fails or if the Room is disconnected"):(oe.info("Getting LocalTracks"),oe.debug("Options:",J)),J.createLocalTracks(J).then(function(ce){const Y=z(ce);return Y.catch(function(){J.shouldStopLocalTracks&&(oe.info("The automatically acquired LocalTracks will now be stopped"),ce.forEach(ue=>{ue.stop()}))}),Y})}function me(J){const z=typeof J=="string"?{codec:J}:J;switch(z.codec.toLowerCase()){case"opus":return Object.assign({dtx:!0}
42,z);case"vp8":return Object.assign({simulcast:!1},z);default:return z}}return qn=B,qn}var jn,Tc;function Sc(){if(Tc)return jn;Tc=1;const{DEFAULT_LOG_LEVEL:s,DEFAULT_LOGGER_NAME:o}=Se();function u(r,l){l=Object.assign({loggerName:o,logLevel:s},l);const _={};_.loggerName=l.loggerName,_.logLevel=l.logLevel,delete l.loggerName,delete l.logLevel,["getUserMedia","enumerateDevices","MediaStream","mapMediaElement","disposeMediaElement"].forEach(n=>{n in l&&(_[n]=l[n],delete l[n])});const i=l.createLocalTracks;return delete l.createLocalTracks,_[r]=Object.keys(l).length>0?l:!0,i(_).then(n=>n[0])}function t(r){return u("audio",r)}function e(r){return u("video",r)}return jn={audio:t,video:e},jn}var Nn,wc;function fh(){if(wc)return Nn;wc=1;const{guessBrowser:s,support:o}=Me(),{isAndroid:u,isMobile:t,isNonChromiumEdge:e,rebrandedChromeBrowser:r,mobileWebKitBrowser:l}=Ge(),_=["crios","edg","edge","electron","headlesschrome","samsungbrowser"],p=["chrome","firefox"],i=["chrome","safari"],n=["edg"];function a(){const c=s();if(!c)return!1;const g=r(c),m=l(c),b=u()?p:i;return o()&&(!g||_.includes(g))&&!e(c)&&(!m||n.includes(m))&&(!t()||b.includes(c))}return Nn=a,Nn}var ph=It.exports,Cc;function mh(){if(Cc)return It.exports;Cc=1,Object.defineProperty(ph,"__esModule",{value:!0});const s=xl(),o=Wl(),u={connect:hh(),createLocalAudioTrack:Sc().audio,createLocalVideoTrack:Sc().video,isSupported:fh()(),version:Ec.version,Logger:Pc(),LocalAudioTrack:nt().LocalAudioTrack,LocalDataTrack:nt().LocalDataTrack,LocalVideoTrack:nt().LocalVideoTrack};function t(c,g){const m=Object.assign({createLocalTracks:s.createLocalTracks},g);return u.connect(c,m)}function e(c){const g=Object.assign({createLocalTracks:s.createLocalTracks},c);return u.createLocalAudioTrack(g)}function r(c){const g=Object.assign({createLocalTracks:s.createLocalTracks},c);return u.createLocalVideoTrack(g)}const l=u.isSupported,_=u.version,p=u.Logger,i=u.LocalAudioTrack,n=u.LocalVideoTrack,a=u.LocalDataTrack;return It.exports={connect:t,createLocalAudioTrack:e,createLocalVideoTrack:r,createLocalTracks:s.createLocalTracks,runPreflight:o.runPreflight,isSupported:l,version:_,Logger:p,LocalAudioTrack:i,LocalVideoTrack:n,LocalDataTrack:a},It.exports}var it=mh();const gh={class:"stack"},vh={class:"label"},_h={class:"stack"},bh={class:"label"},yh={class:"stack"},kh={class:"label"},Th={class:"stack"},Sh={class:"label"},wh={class:"stack"},Ch={class:"label"},Ph=Eu({__name:"CallPage",props:{userId:{},chatId:{},kind:{}},setup(s){var Xn;Ru(Z=>({v38078ecf:H.value}));const o=s,u=Lu({predictableActionArguments:!0,id:"CallPage",initial:"init",states:{init:{on:{LOADING:{target:"loading"}}},loading:{on:{LOADED:{target:"loaded"}}},loaded:{on:{ENDING:{target:"ending"}}},ending:{on:{LOADED:{target:"loaded"}}}}}),{send:t,state:e}=Ou.useMachine(u),{t:r}=Iu({useScope:"global",messages:{en:{CallPage:{anotherCallInProgressLabel:"You have joined to another call in progress that needs to end before starting another.",recordingRequestTitle:"Record Call",recordingRequestMessage:"Do you want this call to be recorded?",recordingRequestConfirmationLabel:"Yes",recordingRequestCancelLabel:"No",loading:"Joining the call...",ending:"Ending the call...",shareScreen:"Share Screen",stopShareScreen:"Stop Sharing",stopRecordingTitle:"Stop Recording",stopRecordingConfirmationLabel:"Yes",stopRecordingCancelLabel:"No",stopRecordingMessage:"Are you sure you want to stop recording?",exitTitleLabel:"Are you sure you want to leave the call?",exitLabel:"Leave"}},es:{CallPage:{anotherCallInProgressLabel:"Usted se ha unido a otra llamada en progreso que debe ser terminada antes de comenzar otra",recordingRequestTitle:"Grabar Llamada",recordingRequestMessage:"¿Desea que la llamada sea grabada?",recordingRequestConfirmationLabel:"Sí",recordingRequestCancelLabel:"No",loading:"Uniéndose a la llamada...",ending:"Terminando la llamada...",shareScreen:"Compartir Pantalla",stopShareScreen:"Dejar de Compartir",stopRecordingTitle:"Detener Grabación",stopRecordingConfirmationLabel:"Sí",stopRecordingCancelLabel:"No",stopRecordingMessage:"¿Está seguro que desea detener la grabación?",exitTitleLabel:"¿Está seguro que desea salir de la llamada?",exitLabel:"Salir"}}}}
42),{chatsArray:l}=Mu(),{appDataInitialized:_}=Du(),{chatMemberId:p,duration:i,hasRemoteTrack:n,isPictureInPicture:a,screenSharing:c,isCallAnswered:g,recordingRequest:m,isCallPageOpenedByUser:b,completeCallRoom:d,clearDuration:h,deinitCall:w,deinitPictureInPicture:y,setCallAnswered:f,setIntervalDuration:v,setChatId:k,setChatMemberId:T,setCallKind:I,setLocalVideo:P,setPictureInPicture:R,setRecordingRequest:L,setRemoteTrack:M,setRemoteVideo:S,setScreenSharing:A,setScreenSharingVideoElement:E,setIsCallPageOpenedByUser:D}=Gu(),{isLandscape:O,windowHeight:j}=Ku(),{showFooter:U,hideFooter:Q}=Au(),{setAppTitle:K}=xu(),{viewer:N,isGuide:B,isOnWeb:le}=qu(),ee=Ae(),se=Ae(),de=Ae(),he=Ae(),me=Ae(),J=Ae(),z=Ae(),oe=Ae();let ae,ce,Y;const ye=Ae(((Xn=N.value)==null?void 0:Xn.id)??"user"),ue=Ae(""),Te=Ae(0),q=Ae(!1);function $(Z){return new Date(Z*1e3).toISOString().substring(14,19)}const G=lt(()=>$(i.value)),W=getComputedStyle(document.documentElement).getPropertyValue("--pip-track-height"),F=getComputedStyle(document.documentElement).getPropertyValue("--pip-track-width"),C=lt(()=>{var Z;return(Z=l.value.find(te=>te.id===o.chatId))==null?void 0:Z.callInProgress}),x=lt(()=>{var Z;return(Z=l.value.find(te=>te.id===o.chatId))==null?void 0:Z.chatMembers.find(te=>te.id===o.userId)}),V=lt(()=>le.value&&o.kind==="video"),H=lt(()=>{var Be,_t;const Z=dt(document.documentElement,"--header-toolbar-height"),te=dt(document.documentElement,"--call-page-footer-height"),Ce=dt(document.documentElement,"--screen-sharing-button-height"),_e=dt(document.documentElement,"--safe-area-bottom"),Pe=dt(document.documentElement,"--safe-area-top");let qe=j.value-Z-_e-Pe;return qe-=Ce,(Be=C.value)!=null&&Be.isRecording&&(qe-=te),!O.value&&(!c.value||c.value.by===((_t=N.value)==null?void 0:_t.id))&&(qe/=2),`${qe}px`});async function X(Z,te,Ce=!0){const _e=[{type:Ce?"include":"exclude",all:!0}];await kt(Xe(Ze,"chats",Z,"call-room",te),{isRecording:Ce}),await il(te,_e),Yn(Ce)}async function ie(Z,te,Ce){Ce===void 0?await kt(Xe(Ze,"chats",Z,"call-room",te),{screenSharing:Ju()}):await kt(Xe(Ze,"chats",Z,"call-room",te),{screenSharing:Ce})}async function ve(Z){if(!Y){He.push({path:ct});return}let te;if(Z&&(te=await jt({title:r("CallPage.exitTitleLabel"),confirmLabel:r("CallPage.exitLabel"),destructive:!0})),!Z||te){t("ENDING"),i.value!==0&&(Te.value=i.value),h(),Y==null||Y.localParticipant.videoTracks.forEach(_e=>{_e.unpublish(),_e.track.stop(),_e.track.detach()}),Y==null||Y.localParticipant.audioTracks.forEach(_e=>{_e.unpublish(),_e.track.stop(),_e.track.detach()}
42),Y==null||Y.participants.forEach(_e=>{_e.removeAllListeners()}),Y==null||Y.disconnect();const Ce=Array.from((Y==null?void 0:Y.participants.values())??[]).length===0;(B.value||Z&&Ce)&&await d(Y==null?void 0:Y.sid,o.chatId,Te.value),Y=void 0,w(),He.push({path:ct})}}function ke(Z){Z.style.width=F,Z.style.maxHeight=W,Z.style.backgroundColor="black"}function ge(Z,te){Z.style.height="100%",Z.style.width="100%",te&&(Z.style.transform="scale(-1, 1)")}const ne=Z=>{const te=Z.attach();Z.kind==="video"&&(Z.name==="screenSharingVideo"?(J.value=te,a.value?(ke(J.value),E(J.value)):(ge(J.value),z.value&&z.value.appendChild(J.value))):(he.value=te,ge(he.value),me.value&&me.value.appendChild(he.value),a.value&&(S(he.value),ke(he.value))))},we=Z=>{Z.detach().forEach(te=>te.remove())},Ve=async Z=>{Y&&(i.value===0&&v(),B.value&&m.value&&await X(o.chatId,Y.sid),f(!0,Y.sid),n.value||(M(!0),Z.on("trackSubscribed",ne),Z.on("trackUnsubscribed",we),Z.tracks.forEach(te=>{te.isSubscribed&&te.track&&te.track.kind!=="data"&&ne(te.track)})))},Kn=async Z=>{Z.removeAllListeners(),i.value!==0&&(Te.value=i.value),h(),M(!1),B.value||await ve(!1)};async function At(Z,te,Ce,_e,Pe){if(!N.value)throw"Viewer not initialized";await kt(Xe(Ze,"users",N.value.id),{currentCall:{roomId:Z,chatId:te}}),!(await el(Xe(Ze,"chats",te,"call-room",Z))).exists()&&await tl(Xe(Ze,"chats",te,"call-room",Z),{id:Z,name:Ce,createdAt:rl(),createdBy:N.value.id,inProgress:!0,kind:_e,isRecording:Pe,missedCall:!0})}function gu(){var Z;return[(Z=N.value)==null?void 0:Z.id,o.userId].sort().join()}async function vu(Z,te){let Ce,_e;if(o.kind==="video"){const Pe=await it.createLocalVideoTrack();ee.value=Pe.attach(),ge(ee.value,!0),se.value.appendChild(ee.value);const qe=await it.createLocalAudioTrack();Ce=[Pe,qe],_e={video:{width:400}}}else Ce=[await it.createLocalAudioTrack()],_e={audio:!0};Y=await it.connect(Z,{name:te,tracks:Ce,..._e}),await At(Y.sid,o.chatId,Y.name,o.kind,m.value),Y.participants.forEac
42h(Ve),Y.on("participantConnected",Ve),Y.on("participantDisconnected",Kn),window.addEventListener("beforeunload",async()=>{await ve(!1)}),de.value=!0}async function _u(Z){t("LOADING");try{const Ce=(await Xu(ue.value,ye.value,o.kind)).data;await vu(Ce,Z)}catch(te){qt({error:te})}finally{t("LOADED")}}async function bu(){ue.value=gu(),await _u(ue.value),K(G.value)}xt(()=>i.value,()=>{a.value||K(G.value)}),xt([g,C],()=>{var Ce,_e,Pe;const Z=(_e=(Ce=C.value)==null?void 0:Ce.screenSharing)==null?void 0:_e.by;if(Z?A({by:Z}):(A(void 0),J.value=void 0,E(void 0)),!g.value)return;const te=!!((Pe=C.value)!=null&&Pe.isRecording);L(te),a.value||Yn(te)});function Yn(Z){Z?U():Q()}xt(()=>q.value,()=>{q.value&&K(G.value)});function Jn(){Y&&(ie(o.chatId,Y.sid,void 0),ce&&(Y==null||Y.localParticipant.unpublishTrack(ce)),ae&&(Y==null||Y.localParticipant.unpublishTrack(ae)),A(void 0),J.value=void 0,E(void 0),He.push({path:`${Zu}/${o.userId}/${o.chatId}/${o.kind}`}))}async function yu(){var Z,te,Ce;try{if(oe.value=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!0,preferCurrentTab:!0}),!((Z=N.value)!=null&&Z.id))return;Y&&await ie(o.chatId,Y.sid,{by:(te=N.value)==null?void 0:te.id});const _e=oe.value.getVideoTracks()[0],Pe=oe.value.getAudioTracks()[0];_e&&(ce=new it.LocalVideoTrack(_e,{name:"screenSharingVideo"})),Pe&&(ae=new it.LocalAudioTrack(Pe,{name:"screenSharingAudio"})),A({by:(Ce=N.value)==null?void 0:Ce.id}),ce&&(Y==null||Y.localParticipant.publishTrack(ce)),ae&&(Y==null||Y.localParticipant.publishTrack(ae)),oe.value.getTracks()[0].onended=Jn,He.push({path:Yu})}catch(_e){qt({error:_e})}}async function ku(){oe.value&&(oe.value.getTracks().forEach(Z=>{Z.stop()}),Jn())}async function Tu(){L(await jt({message:r("CallPage.recordingRequestMessage"),title:r("CallPage.recordingRequestTitle"),confirmLabel:r("CallPage.recordingRequestConfirmationLabel"),cancelLabel:r("CallPage.recordingRequestCancelLabel")})),m.value&&g.value&&Y&&await X(o.chatId,Y.sid)}async function Su(){await jt({message:r("CallPage.stopRecordingMessage"),title:r("CallPage.stopRecordingTitle"),confirmLabel:r("CallPage.stopRecordingConfirmationLabel"),cancelLabel:r("CallPage.stopRecordingCancelLabel")})&&Y&&(L(!1),await X(o.chatId,Y.sid,!1))}return ju(async()=>{var Z,te;if(!b.value){He.push({path:ct});return}p.value&&p.value!==o.userId||(await _(),Q(),y(),k(o.chatId),T(o.userId),I(o.kind),A((Z=C.value)==null?void 0:Z.screenSharing),bu(),(te=C.value)!=null&&te.isRecording&&L(!0))}),Nu(async()=>{if(!b.value){He.push({path:ct});return}if(Q(),p.value&&p.value!==o.userId){qt({error:r("CallPage.anotherCallInProgressLabel")}),He.push({path:ct});return}await _(),y(),Y&&(o.kind==="video"&&Y.localParticipant.videoTracks.forEach(Z=>{Z.track.name==="screenSharingVideo"||Z.track.name==="screenSharingAudio"||(ee.value=Z.track.attach(),ge(ee.value,!0),se.value.appendChild(ee.value))}
42),Y.participants.forEach(Z=>Z.tracks.forEach(te=>{te.isSubscribed&&te.track&&te.track.kind!=="data"&&ne(te.track)})),Y.isRecording&&g.value&&U())}),$u(()=>{e.value.matches("ending")||(ee.value&&(P(ee.value),ke(ee.value)),he.value&&(S(he.value),ke(he.value)),J.value&&ee.value&&(E(J.value),ke(J.value),ke(ee.value)),R(!0)),t("LOADED"),U()}),Vu(()=>{w(),D(!1),U()}),(Z,te)=>{const Ce=Fu,_e=Wu,Pe=Hu,qe=Uu,Be=zu,_t=Bu,wu=Qu;return je(),Ne(wu,{fullscreen:""},{default:Ee(()=>[pe(e).matches("loading")||pe(e).matches("ending")?(je(),Ne(Ce,{key:0,message:pe(r)(`CallPage.${pe(e).value}`)},null,8,["message"])):Ue("",!0),bt(Oe(_t,null,{default:Ee(()=>[Oe(qe,{class:"ion-align-items-center ion-justify-content-center"},{default:Ee(()=>{var Je;return[bt(Oe(_e,{size:"12"},{default:Ee(()=>[De("div",{id:"screenSharingTrack",ref_key:"screenSharingTrackRef",ref:z,class:"screen-sharing-track"},null,512)]),_:1},512),[[yt,pe(c)&&pe(c).by!==((Je=pe(N))==null?void 0:Je.id)]]),Oe(_e,{"size-md":pe(O)?"6":"12","size-xs":"12"},{default:Ee(()=>{var Fe,at,ot,Zn;return[bt(De("div",{ref_key:"localTrackRef",ref:se,class:"ion-align-items-center ion-justify-content-center call-track"},[!de.value||s.kind==="audio"?(je(),Ne(es,{key:0,style:{position:"relative"},displayName:((Fe=pe(N))==null?void 0:Fe.displayName)||((at=pe(N))==null?void 0:at.name),"profile-picture":(ot=pe(N))==null?void 0:ot.profilePicture},{default:Ee(()=>[de.value?(je(),Ne(Pe,{key:0,id:"badge",name:"ellipse"})):Ue("",!0)]),_:1},8,["displayName","profile-picture"])):Ue("",!0)],512),[[yt,!pe(c)||pe(c).by===((Zn=pe(N))==null?void 0:Zn.id)]])]}),_:1},8,["size-md"]),Oe(_e,{"size-md":pe(O)?"6":"12","size-xs":"12"},{default:Ee(()=>{var Fe,at,ot;return[bt(De("div",{ref_key:"remoteTrackRef",ref:me,class:"ion-align-items-center ion-justify-content-center call-track"},[!pe(n)||s.kind==="audio"?(je(),Ne(es,{key:0,style:{position:"relative"},displayName:(Fe=x.value)==null?void 0:Fe.displayName,"profile-picture":(at=x.value)==null?void 0:at.profilePicture},{default:Ee(()=>[pe(n)?(je(),Ne(Pe,{key:0,id:"badge",name:"ellipse"})):Ue("",!0)]),_:1},8,["displayName","profile-picture"])):Ue("",!0)],512),[[yt,!pe(c)||pe(c).by===((ot=pe(N))==null?void 0:ot.id)]])]}),_:1},8,["size-md"])]}),_:1}),Oe(qe,{class:"ion-justify-content-center call-tool-bar ion-align-items-center"},{default:Ee(()=>[Oe(_e,{size:"7",offset:"2",class:"ion-text-center"},{default:Ee(()=>{var Je;return[V.value&&!pe(c)?(je(),Ne(Be,{key:0,class:"vertical-btn",onClick:te[0]||(te[0]=Fe=>yu())},{default:Ee(()=>[De("div",gh,[Oe(Pe,{name:"share-outline","aria-hidden":"true"}),De("span",vh,ut(pe(r)("CallPage.shareScreen")),1)])]),_:1})):V.value&&pe(c)&&pe(c).by===((Je=pe(N))==null?void 0:Je.id)?(je(),Ne(Be,{key:1,class:"vertical-btn",onClick:te[1]||(te[1]=Fe=>ku())},{default:Ee(()=>[De("div",_h,[Oe(Pe,{name:"close-circle-outline","aria-hidden":"true"}),De("span",bh,ut(pe(r)("CallPage.stopShareScreen")),1)])]),_:1})):Ue("",!0),!pe(m)&&pe(B)&&pe(n)?(je(),Ne(Be,{key:2,class:"vertical-btn",onClick:te[2]||(te[2]=Fe=>Tu()),"aria-label":pe(r)("CallPage.recordingRequestTitle")},{default:Ee(()=>[De("div",yh,[Oe(Pe,{name:"radio-button-on"}),De("span",kh,ut(pe(r)("CallPage.recordingRequestTitle")),1)])]),_:1},8,["aria-label"])):Ue("",!0),pe(m)&&pe(B)?(je(),Ne(Be,{key:3,class:"vertical-btn",onClick:te[3]||(te[3]=Fe=>Su()),"aria-label":pe(r)("CallPage.stopRecordingTitle")},{default:Ee(()=>[De("div",Th,[Oe(Pe,{name:"stop-circle-outline",color:"danger"}),De("span",Sh,ut(pe(r)("CallPage.stopRecordingTitle")),1)])]),_:1},8,["aria-label"])):Ue("",!0)]}),_:1}),Oe(_e,{class:"ion-text-end"},{default:Ee(()=>[Oe(Be,{onClick:te[4]||(te[4]=Je=>ve(!0)),color:"danger",class:"ion-padding-end vertical-btn"},{default:Ee(()=>[De("div",wh,[Oe(Pe,{name:"exit-outline"}),De("span",Ch,ut(pe(r)("CallPage.exitLabel")),1)])]),_:1})]),_:1})]),_:1})]),_:1},512),[[yt,pe(e).matches("loaded")]])]),_:1})}}}),Oh=nl(Ph,[["__scopeId","data-v-eb956e2f"]]);export{Oh as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.