trtc-sdk-v5 5.13.0-beta.16 → 5.13.0-wasm.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/av_processing.wasm +0 -0
- package/assets/worker.js +17 -0
- package/index.d.ts +1 -25
- package/package.json +4 -6
- package/plugins/cdn-streaming/package.json +1 -1
- package/plugins/cross-room/package.json +1 -1
- package/plugins/custom-encryption/package.json +1 -1
- package/plugins/device-detector/package.json +1 -1
- package/plugins/small-stream-auto-switcher/package.json +1 -1
- package/plugins/video-decoder/package.json +1 -1
- package/plugins/video-effect/basic-beauty/package.json +1 -1
- package/plugins/video-effect/beauty/package.json +1 -1
- package/plugins/video-effect/video-mixer/package.json +1 -1
- package/plugins/video-effect/virtual-background/package.json +1 -1
- package/plugins/video-effect/watermark/package.json +1 -1
- package/plugins/voice-changer/package.json +1 -1
- package/trtc.esm.js +65 -44
- package/trtc.js +1 -1
package/trtc.esm.js
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
var E_=Object.create;var Es=Object.defineProperty,S_=Object.defineProperties,Uh=Object.getOwnPropertyDescriptor,I_=Object.getOwnPropertyDescriptors,A_=Object.getOwnPropertyNames,Wn=Object.getOwnPropertySymbols,Bh=Object.getPrototypeOf,ud=Object.prototype.hasOwnProperty,Fh=Object.prototype.propertyIsEnumerable,C_=Reflect.get;var sr=Math.pow,ld=(o,i,e)=>i in o?Es(o,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[i]=e,D=(o,i)=>{for(var e in i||(i={}))ud.call(i,e)&&ld(o,e,i[e]);if(Wn)for(var e of Wn(i))Fh.call(i,e)&&ld(o,e,i[e]);return o},w=(o,i)=>S_(o,I_(i));var Hh=(o,i)=>{var e={};for(var t in o)ud.call(o,t)&&i.indexOf(t)<0&&(e[t]=o[t]);if(o!=null&&Wn)for(var t of Wn(o))i.indexOf(t)<0&&Fh.call(o,t)&&(e[t]=o[t]);return e};var Oi=(o,i)=>()=>(i||o((i={exports:{}}).exports,i),i.exports),Mi=(o,i)=>{for(var e in i)Es(o,e,{get:i[e],enumerable:!0})},R_=(o,i,e,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of A_(i))!ud.call(o,r)&&r!==e&&Es(o,r,{get:()=>i[r],enumerable:!(t=Uh(i,r))||t.enumerable});return o};var He=(o,i,e)=>(e=o!=null?E_(Bh(o)):{},R_(i||!o||!o.__esModule?Es(e,"default",{value:o,enumerable:!0}):e,o));var O=(o,i,e,t)=>{for(var r=t>1?void 0:t?Uh(i,e):i,s=o.length-1,n;s>=0;s--)(n=o[s])&&(r=(t?n(i,e,r):n(r))||r);return t&&r&&Es(i,e,r),r};var d=(o,i,e)=>ld(o,typeof i!="symbol"?i+"":i,e);var qe=(o,i,e)=>C_(Bh(o),e,i);var f=(o,i,e)=>new Promise((t,r)=>{var s=c=>{try{a(e.next(c))}catch(l){r(l)}},n=c=>{try{a(e.throw(c))}catch(l){r(l)}},a=c=>c.done?t(c.value):Promise.resolve(c.value).then(s,n);a((e=e.apply(o,i)).next())});var Qe=Oi((qS,hd)=>{"use strict";var y_=Object.prototype.hasOwnProperty,it="~";function Ss(){}Object.create&&(Ss.prototype=Object.create(null),new Ss().__proto__||(it=!1));function b_(o,i,e){this.fn=o,this.context=i,this.once=e||!1}function $h(o,i,e,t,r){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new b_(e,t||o,r),n=it?it+i:i;return o._events[n]?o._events[n].fn?o._events[n]=[o._events[n],s]:o._events[n].push(s):(o._events[n]=s,o._eventsCount++),o}function Jn(o,i){--o._eventsCount===0?o._events=new Ss:delete o._events[i]}function ze(){this._events=new Ss,this._eventsCount=0}ze.prototype.eventNames=function(){var i=[],e,t;if(this._eventsCount===0)return i;for(t in e=this._events)y_.call(e,t)&&i.push(it?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i};ze.prototype.listeners=function(i){var e=it?it+i:i,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var r=0,s=t.length,n=new Array(s);r<s;r++)n[r]=t[r].fn;return n};ze.prototype.listenerCount=function(i){var e=it?it+i:i,t=this._events[e];return t?t.fn?1:t.length:0};ze.prototype.emit=function(i,e,t,r,s,n){var a=it?it+i:i;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,h;if(c.fn){switch(c.once&&this.removeListener(i,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,t),!0;case 4:return c.fn.call(c.context,e,t,r),!0;case 5:return c.fn.call(c.context,e,t,r,s),!0;case 6:return c.fn.call(c.context,e,t,r,s,n),!0}for(h=1,u=new Array(l-1);h<l;h++)u[h-1]=arguments[h];c.fn.apply(c.context,u)}else{var m=c.length,g;for(h=0;h<m;h++)switch(c[h].once&&this.removeListener(i,c[h].fn,void 0,!0),l){case 1:c[h].fn.call(c[h].context);break;case 2:c[h].fn.call(c[h].context,e);break;case 3:c[h].fn.call(c[h].context,e,t);break;case 4:c[h].fn.call(c[h].context,e,t,r);break;default:if(!u)for(g=1,u=new Array(l-1);g<l;g++)u[g-1]=arguments[g];c[h].fn.apply(c[h].context,u)}}return!0};ze.prototype.on=function(i,e,t){return $h(this,i,e,t,!1)};ze.prototype.once=function(i,e,t){return $h(this,i,e,t,!0)};ze.prototype.removeListener=function(i,e,t,r){var s=it?it+i:i;if(!this._events[s])return this;if(!e)return Jn(this,s),this;var n=this._events[s];if(n.fn)n.fn===e&&(!r||n.once)&&(!t||n.context===t)&&Jn(this,s);else{for(var a=0,c=[],l=n.length;a<l;a++)(n[a].fn!==e||r&&!n[a].once||t&&n[a].context!==t)&&c.push(n[a]);c.length?this._events[s]=c.length===1?c[0]:c:Jn(this,s)}return this};ze.prototype.removeAllListeners=function(i){var e;return i?(e=it?it+i:i,this._events[e]&&Jn(this,e)):(this._events=new Ss,this._eventsCount=0),this};ze.prototype.off=ze.prototype.removeListener;ze.prototype.addListener=ze.prototype.on;ze.prefixed=it;ze.EventEmitter=ze;typeof hd!="undefined"&&(hd.exports=ze)});var Va=Oi((gA,xm)=>{"use strict";var wm=xm.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(o){return o.encoding?"rtpmap:%d %s/%s/%s":o.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(o){return o.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(o){return o.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(o){return"extmap:%d"+(o.direction?"/%s":"%v")+(o["encrypt-uri"]?" %s":"%v")+" %s"+(o.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(o){return o.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(o){var i="candidate:%s %d %s %d %s %d typ %s";return i+=o.raddr!=null?" raddr %s rport %d":"%v%v",i+=o.tcptype!=null?" tcptype %s":"%v",o.generation!=null&&(i+=" generation %d"),i+=o["network-id"]!=null?" network-id %d":"%v",i+=o["network-cost"]!=null?" network-cost %d":"%v",i}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(o){var i="ssrc:%d";return o.attribute!=null&&(i+=" %s",o.value!=null&&(i+=":%s")),i}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(o){return o.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(o){return o.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(o){return"imageattr:%s %s %s"+(o.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(o){return"simulcast:%s %s"+(o.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(o){return"ts-refclk:%s"+(o.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(o){var i="mediaclk:";return i+=o.id!=null?"id=%s %s":"%v%s",i+=o.mediaClockValue!=null?"=%s":"",i+=o.rateNumerator!=null?" rate=%s":"",i+=o.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(wm).forEach(function(o){var i=wm[o];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Vm=Oi(Wi=>{"use strict";var $o=function(o){return String(Number(o))===o?Number(o):o},kg=function(o,i,e,t){if(t&&!e)i[t]=$o(o[1]);else for(var r=0;r<e.length;r+=1)o[r+1]!=null&&(i[e[r]]=$o(o[r+1]))},wg=function(o,i,e){var t=o.name&&o.names;o.push&&!i[o.push]?i[o.push]=[]:t&&!i[o.name]&&(i[o.name]={});var r=o.push?{}:t?i[o.name]:i;kg(e.match(o.reg),r,o.names,o.name),o.push&&i[o.push].push(r)},Lm=Va(),xg=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Wi.parse=function(o){var i={},e=[],t=i;return o.split(/(\r\n|\r|\n)/).filter(xg).forEach(function(r){var s=r[0],n=r.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(Lm[s]||[]).length;a+=1){var c=Lm[s][a];if(c.reg.test(n))return wg(c,t,n)}}),i.media=e,i};var Pm=function(o,i){var e=i.split(/=(.+)/,2);return e.length===2?o[e[0]]=$o(e[1]):e.length===1&&i.length>1&&(o[e[0]]=void 0),o};Wi.parseParams=function(o){return o.split(/;\s?/).reduce(Pm,{})};Wi.parseFmtpConfig=Wi.parseParams;Wi.parsePayloads=function(o){return o.toString().split(" ").map(Number)};Wi.parseRemoteCandidates=function(o){for(var i=[],e=o.split(" ").map($o),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};Wi.parseImageAttributes=function(o){return o.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(Pm,{})})};Wi.parseSimulcastStreamList=function(o){return o.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=$o(e):(t=$o(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var Bm=Oi((EA,Um)=>{"use strict";var Rl=Va(),Lg=/%[sdv%]/g,Pg=function(o){var i=1,e=arguments,t=e.length;return o.replace(Lg,function(r){if(i>=t)return r;var s=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},Zs=function(o,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[o+"="+t];if(i.names)for(var s=0;s<i.names.length;s+=1){var n=i.names[s];i.name?r.push(e[i.name][n]):r.push(e[i.names[s]])}else r.push(e[i.name]);return Pg.apply(null,r)},Vg=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Ug=["i","c","b","a"];Um.exports=function(o,i){i=i||{},o.version==null&&(o.version=0),o.name==null&&(o.name=" "),o.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=i.outerOrder||Vg,t=i.innerOrder||Ug,r=[];return e.forEach(function(s){Rl[s].forEach(function(n){n.name in o&&o[n.name]!=null?r.push(Zs(s,n,o)):n.push in o&&o[n.push]!=null&&o[n.push].forEach(function(a){r.push(Zs(s,n,a))})})}),o.media.forEach(function(s){r.push(Zs("m",Rl.m[0],s)),t.forEach(function(n){Rl[n].forEach(function(a){a.name in s&&s[a.name]!=null?r.push(Zs(n,a,s)):a.push in s&&s[a.push]!=null&&s[a.push].forEach(function(c){r.push(Zs(n,a,c))})})})}),r.join(`\r
|
|
1
|
+
var eT=Object.create;var $n=Object.defineProperty,tT=Object.defineProperties,Ph=Object.getOwnPropertyDescriptor,rT=Object.getOwnPropertyDescriptors,iT=Object.getOwnPropertyNames,kh=Object.getOwnPropertySymbols,Lh=Object.getPrototypeOf,Uh=Object.prototype.hasOwnProperty,oT=Object.prototype.propertyIsEnumerable,sT=Reflect.get;var eo=Math.pow,gl=(i,t,e)=>t in i?$n(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,j=(i,t)=>{for(var e in t||(t={}))Uh.call(t,e)&&gl(i,e,t[e]);if(kh)for(var e of kh(t))oT.call(t,e)&&gl(i,e,t[e]);return i},pe=(i,t)=>tT(i,rT(t));var Bn=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),li=(i,t)=>{for(var e in t)$n(i,e,{get:t[e],enumerable:!0})},nT=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of iT(t))!Uh.call(i,o)&&o!==e&&$n(i,o,{get:()=>t[o],enumerable:!(r=Ph(t,o))||r.enumerable});return i};var mi=(i,t,e)=>(e=i!=null?eT(Lh(i)):{},nT(t||!i||!i.__esModule?$n(e,"default",{value:i,enumerable:!0}):e,i));var K=(i,t,e,r)=>{for(var o=r>1?void 0:r?Ph(t,e):t,s=i.length-1,n;s>=0;s--)(n=i[s])&&(o=(r?n(t,e,o):n(o))||o);return r&&o&&$n(t,e,o),o};var l=(i,t,e)=>gl(i,typeof t!="symbol"?t+"":t,e);var Gt=(i,t,e)=>sT(Lh(i),e,t);var y=(i,t,e)=>new Promise((r,o)=>{var s=u=>{try{a(e.next(u))}catch(m){o(m)}},n=u=>{try{a(e.throw(u))}catch(m){o(m)}},a=u=>u.done?r(u.value):Promise.resolve(u.value).then(s,n);a((e=e.apply(i,t)).next())});var yi=Bn((tb,am)=>{"use strict";var I_=Object.prototype.hasOwnProperty,jt="~";function Ea(){}Object.create&&(Ea.prototype=Object.create(null),new Ea().__proto__||(jt=!1));function S_(i,t,e){this.fn=i,this.context=t,this.once=e||!1}function Sf(i,t,e,r,o){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new S_(e,r||i,o),n=jt?jt+t:t;return i._events[n]?i._events[n].fn?i._events[n]=[i._events[n],s]:i._events[n].push(s):(i._events[n]=s,i._eventsCount++),i}function _d(i,t){--i._eventsCount===0?i._events=new Ea:delete i._events[t]}function Bt(){this._events=new Ea,this._eventsCount=0}Bt.prototype.eventNames=function(){var t=[],e,r;if(this._eventsCount===0)return t;for(r in e=this._events)I_.call(e,r)&&t.push(jt?r.slice(1):r);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Bt.prototype.listeners=function(t){var e=jt?jt+t:t,r=this._events[e];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,s=r.length,n=new Array(s);o<s;o++)n[o]=r[o].fn;return n};Bt.prototype.listenerCount=function(t){var e=jt?jt+t:t,r=this._events[e];return r?r.fn?1:r.length:0};Bt.prototype.emit=function(t,e,r,o,s,n){var a=jt?jt+t:t;if(!this._events[a])return!1;var u=this._events[a],m=arguments.length,h,f;if(u.fn){switch(u.once&&this.removeListener(t,u.fn,void 0,!0),m){case 1:return u.fn.call(u.context),!0;case 2:return u.fn.call(u.context,e),!0;case 3:return u.fn.call(u.context,e,r),!0;case 4:return u.fn.call(u.context,e,r,o),!0;case 5:return u.fn.call(u.context,e,r,o,s),!0;case 6:return u.fn.call(u.context,e,r,o,s,n),!0}for(f=1,h=new Array(m-1);f<m;f++)h[f-1]=arguments[f];u.fn.apply(u.context,h)}else{var T=u.length,A;for(f=0;f<T;f++)switch(u[f].once&&this.removeListener(t,u[f].fn,void 0,!0),m){case 1:u[f].fn.call(u[f].context);break;case 2:u[f].fn.call(u[f].context,e);break;case 3:u[f].fn.call(u[f].context,e,r);break;case 4:u[f].fn.call(u[f].context,e,r,o);break;default:if(!h)for(A=1,h=new Array(m-1);A<m;A++)h[A-1]=arguments[A];u[f].fn.apply(u[f].context,h)}}return!0};Bt.prototype.on=function(t,e,r){return Sf(this,t,e,r,!1)};Bt.prototype.once=function(t,e,r){return Sf(this,t,e,r,!0)};Bt.prototype.removeListener=function(t,e,r,o){var s=jt?jt+t:t;if(!this._events[s])return this;if(!e)return _d(this,s),this;var n=this._events[s];if(n.fn)n.fn===e&&(!o||n.once)&&(!r||n.context===r)&&_d(this,s);else{for(var a=0,u=[],m=n.length;a<m;a++)(n[a].fn!==e||o&&!n[a].once||r&&n[a].context!==r)&&u.push(n[a]);u.length?this._events[s]=u.length===1?u[0]:u:_d(this,s)}return this};Bt.prototype.removeAllListeners=function(t){var e;return t?(e=jt?jt+t:t,this._events[e]&&_d(this,e)):(this._events=new Ea,this._eventsCount=0),this};Bt.prototype.off=Bt.prototype.removeListener;Bt.prototype.addListener=Bt.prototype.on;Bt.prefixed=jt;Bt.EventEmitter=Bt;typeof am!="undefined"&&(am.exports=Bt)});var Cd=Bn((Vb,kf)=>{"use strict";var xf=kf.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(i){return i.encoding?"rtpmap:%d %s/%s/%s":i.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(i){return i.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(i){return i.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(i){return"extmap:%d"+(i.direction?"/%s":"%v")+(i["encrypt-uri"]?" %s":"%v")+" %s"+(i.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(i){return i.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(i){var t="candidate:%s %d %s %d %s %d typ %s";return t+=i.raddr!=null?" raddr %s rport %d":"%v%v",t+=i.tcptype!=null?" tcptype %s":"%v",i.generation!=null&&(t+=" generation %d"),t+=i["network-id"]!=null?" network-id %d":"%v",t+=i["network-cost"]!=null?" network-cost %d":"%v",t}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(i){var t="ssrc:%d";return i.attribute!=null&&(t+=" %s",i.value!=null&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(i){return i.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(i){return i.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(i){return"imageattr:%s %s %s"+(i.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(i){return"simulcast:%s %s"+(i.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(i){return"ts-refclk:%s"+(i.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(i){var t="mediaclk:";return t+=i.id!=null?"id=%s %s":"%v%s",t+=i.mediaClockValue!=null?"=%s":"",t+=i.rateNumerator!=null?" rate=%s":"",t+=i.rateDenominator!=null?"/%s":"",t}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(xf).forEach(function(i){var t=xf[i];t.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Uf=Bn(Ci=>{"use strict";var rn=function(i){return String(Number(i))===i?Number(i):i},D_=function(i,t,e,r){if(r&&!e)t[r]=rn(i[1]);else for(var o=0;o<e.length;o+=1)i[o+1]!=null&&(t[e[o]]=rn(i[o+1]))},w_=function(i,t,e){var r=i.name&&i.names;i.push&&!t[i.push]?t[i.push]=[]:r&&!t[i.name]&&(t[i.name]={});var o=i.push?{}:r?t[i.name]:t;D_(e.match(i.reg),o,i.names,i.name),i.push&&t[i.push].push(o)},Pf=Cd(),M_=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Ci.parse=function(i){var t={},e=[],r=t;return i.split(/(\r\n|\r|\n)/).filter(M_).forEach(function(o){var s=o[0],n=o.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),r=e[e.length-1]);for(var a=0;a<(Pf[s]||[]).length;a+=1){var u=Pf[s][a];if(u.reg.test(n))return w_(u,r,n)}}),t.media=e,t};var Lf=function(i,t){var e=t.split(/=(.+)/,2);return e.length===2?i[e[0]]=rn(e[1]):e.length===1&&t.length>1&&(i[e[0]]=void 0),i};Ci.parseParams=function(i){return i.split(/;\s?/).reduce(Lf,{})};Ci.parseFmtpConfig=Ci.parseParams;Ci.parsePayloads=function(i){return i.toString().split(" ").map(Number)};Ci.parseRemoteCandidates=function(i){for(var t=[],e=i.split(" ").map(rn),r=0;r<e.length;r+=3)t.push({component:e[r],ip:e[r+1],port:e[r+2]});return t};Ci.parseImageAttributes=function(i){return i.split(" ").map(function(t){return t.substring(1,t.length-1).split(",").reduce(Lf,{})})};Ci.parseSimulcastStreamList=function(i){return i.split(";").map(function(t){return t.split(",").map(function(e){var r,o=!1;return e[0]!=="~"?r=rn(e):(r=rn(e.substring(1,e.length)),o=!0),{scid:r,paused:o}})})}});var Ff=Bn(($b,Vf)=>{"use strict";var bm=Cd(),O_=/%[sdv%]/g,x_=function(i){var t=1,e=arguments,r=e.length;return i.replace(O_,function(o){if(t>=r)return o;var s=e[t];switch(t+=1,o){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},va=function(i,t,e){var r=t.format instanceof Function?t.format(t.push?e:e[t.name]):t.format,o=[i+"="+r];if(t.names)for(var s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?o.push(e[t.name][n]):o.push(e[t.names[s]])}else o.push(e[t.name]);return x_.apply(null,o)},k_=["v","o","s","i","u","e","p","c","b","t","r","z","a"],P_=["i","c","b","a"];Vf.exports=function(i,t){t=t||{},i.version==null&&(i.version=0),i.name==null&&(i.name=" "),i.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=t.outerOrder||k_,r=t.innerOrder||P_,o=[];return e.forEach(function(s){bm[s].forEach(function(n){n.name in i&&i[n.name]!=null?o.push(va(s,n,i)):n.push in i&&i[n.push]!=null&&i[n.push].forEach(function(a){o.push(va(s,n,a))})})}),i.media.forEach(function(s){o.push(va("m",bm.m[0],s)),r.forEach(function(n){bm[n].forEach(function(a){a.name in s&&s[a.name]!=null?o.push(va(n,a,s)):a.push in s&&s[a.push]!=null&&s[a.push].forEach(function(u){o.push(va(n,a,u))})})})}),o.join(`\r
|
|
2
2
|
`)+`\r
|
|
3
|
-
`}});var Fm=Oi(fi=>{"use strict";var Hr=Vm(),Bg=Bm(),Fg=Va();fi.grammar=Fg;fi.write=Bg;fi.parse=Hr.parse;fi.parseParams=Hr.parseParams;fi.parseFmtpConfig=Hr.parseFmtpConfig;fi.parsePayloads=Hr.parsePayloads;fi.parseRemoteCandidates=Hr.parseRemoteCandidates;fi.parseImageAttributes=Hr.parseImageAttributes;fi.parseSimulcastStreamList=Hr.parseSimulcastStreamList});var Ih=Oi((xU,bf)=>{"use strict";var yf=bf.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(o){return o.encoding?"rtpmap:%d %s/%s/%s":o.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(o){return o.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(o){return o.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(o){return"extmap:%d"+(o.direction?"/%s":"%v")+(o["encrypt-uri"]?" %s":"%v")+" %s"+(o.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(o){return o.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(o){var i="candidate:%s %d %s %d %s %d typ %s";return i+=o.raddr!=null?" raddr %s rport %d":"%v%v",i+=o.tcptype!=null?" tcptype %s":"%v",o.generation!=null&&(i+=" generation %d"),i+=o["network-id"]!=null?" network-id %d":"%v",i+=o["network-cost"]!=null?" network-cost %d":"%v",i}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(o){var i="ssrc:%d";return o.attribute!=null&&(i+=" %s",o.value!=null&&(i+=":%s")),i}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(o){return o.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(o){return o.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(o){return"imageattr:%s %s %s"+(o.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(o){return"simulcast:%s %s"+(o.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(o){return"ts-refclk:%s"+(o.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(o){var i="mediaclk:";return i+=o.id!=null?"id=%s %s":"%v%s",i+=o.mediaClockValue!=null?"=%s":"",i+=o.rateNumerator!=null?" rate=%s":"",i+=o.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(yf).forEach(function(o){var i=yf[o];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Df=Oi(ir=>{"use strict";var ps=function(o){return String(Number(o))===o?Number(o):o},gS=function(o,i,e,t){if(t&&!e)i[t]=ps(o[1]);else for(var r=0;r<e.length;r+=1)o[r+1]!=null&&(i[e[r]]=ps(o[r+1]))},TS=function(o,i,e){var t=o.name&&o.names;o.push&&!i[o.push]?i[o.push]=[]:t&&!i[o.name]&&(i[o.name]={});var r=o.push?{}:t?i[o.name]:i;gS(e.match(o.reg),r,o.names,o.name),o.push&&i[o.push].push(r)},vf=Ih(),ES=RegExp.prototype.test.bind(/^([a-z])=(.*)/);ir.parse=function(o){var i={},e=[],t=i;return o.split(/(\r\n|\r|\n)/).filter(ES).forEach(function(r){var s=r[0],n=r.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(vf[s]||[]).length;a+=1){var c=vf[s][a];if(c.reg.test(n))return TS(c,t,n)}}),i.media=e,i};var Nf=function(o,i){var e=i.split(/=(.+)/,2);return e.length===2?o[e[0]]=ps(e[1]):e.length===1&&i.length>1&&(o[e[0]]=void 0),o};ir.parseParams=function(o){return o.split(/;\s?/).reduce(Nf,{})};ir.parseFmtpConfig=ir.parseParams;ir.parsePayloads=function(o){return o.toString().split(" ").map(Number)};ir.parseRemoteCandidates=function(o){for(var i=[],e=o.split(" ").map(ps),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};ir.parseImageAttributes=function(o){return o.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(Nf,{})})};ir.parseSimulcastStreamList=function(o){return o.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=ps(e):(t=ps(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var Mf=Oi((PU,Of)=>{"use strict";var Ah=Ih(),SS=/%[sdv%]/g,IS=function(o){var i=1,e=arguments,t=e.length;return o.replace(SS,function(r){if(i>=t)return r;var s=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},Vn=function(o,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[o+"="+t];if(i.names)for(var s=0;s<i.names.length;s+=1){var n=i.names[s];i.name?r.push(e[i.name][n]):r.push(e[i.names[s]])}else r.push(e[i.name]);return IS.apply(null,r)},AS=["v","o","s","i","u","e","p","c","b","t","r","z","a"],CS=["i","c","b","a"];Of.exports=function(o,i){i=i||{},o.version==null&&(o.version=0),o.name==null&&(o.name=" "),o.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=i.outerOrder||AS,t=i.innerOrder||CS,r=[];return e.forEach(function(s){Ah[s].forEach(function(n){n.name in o&&o[n.name]!=null?r.push(Vn(s,n,o)):n.push in o&&o[n.push]!=null&&o[n.push].forEach(function(a){r.push(Vn(s,n,a))})})}),o.media.forEach(function(s){r.push(Vn("m",Ah.m[0],s)),t.forEach(function(n){Ah[n].forEach(function(a){a.name in s&&s[a.name]!=null?r.push(Vn(n,a,s)):a.push in s&&s[a.push]!=null&&s[a.push].forEach(function(c){r.push(Vn(n,a,c))})})})}),r.join(`\r
|
|
4
|
-
`)+`\r
|
|
5
|
-
`}});var Ch=Oi(rr=>{"use strict";var oo=Df(),RS=Mf();rr.write=RS;rr.parse=oo.parse;rr.parseParams=oo.parseParams;rr.parseFmtpConfig=oo.parseFmtpConfig;rr.parsePayloads=oo.parsePayloads;rr.parseRemoteCandidates=oo.parseRemoteCandidates;rr.parseImageAttributes=oo.parseImageAttributes;rr.parseSimulcastStreamList=oo.parseSimulcastStreamList});import wW from"webrtc-adapter";var gf=He(Qe());var Gh=(B=>(B[B.INVALID_PARAMETER=4096]="INVALID_PARAMETER",B[B.INVALID_OPERATION=4097]="INVALID_OPERATION",B[B.NOT_SUPPORTED=4098]="NOT_SUPPORTED",B[B.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",B[B.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",B[B.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",B[B.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",B[B.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",B[B.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",B[B.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",B[B.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",B[B.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",B[B.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",B[B.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",B[B.CLIENT_BANNED=16448]="CLIENT_BANNED",B[B.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",B[B.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",B[B.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",B[B.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",B[B.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",B[B.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",B[B.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",B[B.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",B[B.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",B[B.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",B[B.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",B[B.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",B[B.API_CALL_ABORTED=16461]="API_CALL_ABORTED",B[B.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",B[B.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",B[B.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",B[B.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",B[B.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",B[B.UNKNOWN=65535]="UNKNOWN",B))(Gh||{}),I=Gh;var v_=function(o){for(let i in I)if(I[i]===o)return i;return"UNKNOWN"},Is=class extends Error{constructor({name:e="RtcError",message:t,code:r=I.UNKNOWN,extraCode:s=0,constraint:n}){let a=`<${v_(r)} 0x${r.toString(16)}>`,c=`${t}${n?` constraint: ${n}`:""}${t!=null&&t.includes(a)?"":` ${a}`}`;super(c);d(this,"code");d(this,"extraCode");d(this,"message");d(this,"originMessage");d(this,"name");d(this,"constraint");this.code=r,this.extraCode=s,this.name=e,this.message=c,this.constraint=n,this.originMessage=t}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},N=Is;var Wh=new Date().getTime(),md=0,Jh=function(o){Wh=o,md=Wh-new Date().getTime();let i=new Date;i.setTime(o),y.info(`baseTime from server: ${i} offset: ${md}`)},As=function(){return new Date().getTime()+md},qn=function(){let o=new Date;return o.setTime(As()),o.toLocaleString()},uo=function(o){let i=String(o.getMilliseconds());return"padStart"in String.prototype&&(i=i.toString().padStart(3,"0")),`${o.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${i}`};var gt={};Mi(gt,{REPORT_TYPE:()=>yo,buildSSOPackage:()=>Vi,bytes2ms:()=>em,calculateScaleResolutionDownNumber:()=>Ro,convertObjectNumberToInt:()=>Ls,copyProperties:()=>Kh,deepClone:()=>Dr,deepCloneBasic:()=>sa,deepMerge:()=>Gt,delay:()=>Wt,fibonacci:()=>Mr,formatedTime:()=>dm,getConstructorName:()=>Eo,getContainerFromElement:()=>cm,getEnv:()=>Yh,getInternalVersion:()=>nm,getLoggerUrl:()=>Pi,getMediaStreamTrackInfo:()=>la,getMuteStateFromFlag:()=>$t,getNetworkType:()=>Vd,getNumNetworkType:()=>Or,getReconnectionTimeout:()=>Ht,getStringByteLength:()=>xs,getTurnServer:()=>am,getUint32Version:()=>aa,getValueType:()=>ye,getViewListFromView:()=>Ao,glog:()=>Fd,ipv4ToUint32:()=>Io,isArray:()=>Se,isAudioWorkletSupported:()=>om,isBoolean:()=>de,isConstructor:()=>kr,isEmpty:()=>So,isFunction:()=>ae,isLangChinese:()=>Ft,isMediaStreamTrack:()=>im,isNumber:()=>q,isObject:()=>ft,isOverseaSdkAppId:()=>Li,isPlainObject:()=>Ze,isPortrait:()=>Hd,isPromise:()=>ur,isRemoteTrack:()=>rm,isRotate90Or270:()=>_t,isSetSinkIdSupported:()=>sm,isString:()=>te,isUndefined:()=>E,loadImage:()=>Co,loadVideo:()=>lm,ms2bytes:()=>tm,ms2samples:()=>Bd,normalizeUrl:()=>da,performanceNow:()=>P,promiseAny:()=>wr,samples2ms:()=>Ud,setNetworkType:()=>na,stringify:()=>bt,stringifyIncludeValue:()=>ws,throttlePromise:()=>ca});var vd={};Mi(vd,{AUDIO_MUTE_BIT:()=>Zn,AUDIO_STAT_BIT:()=>dr,AUX_STAT_BIT:()=>yr,AUX_STREAM_MSID:()=>Sd,BACKEND_ENV:()=>Yn,BASE_DOC_URL:()=>di,BASE_HOST:()=>qh,CAPABILITIES_KEYS:()=>ta,CLASS_NAME:()=>z_,CLOUD_CONSOLE_URL:()=>M_,CROSS_ROOM_BIT:()=>Ed,DATA_FREEZE_TIMING:()=>ea,DOC_URL:()=>k_,DTLS_STATE_UNKNOWN:()=>Bt,ENV_NAME:()=>ki,EXCHANGE_SDP_TIMEOUT:()=>yd,IS_WORKER:()=>ho,IS_WORKLET:()=>Rs,KIBANA_EVENT:()=>ct,LOCAL_STREAM_PUBLISH_STATE:()=>Xh,LOGGER_CMD_TYPE:()=>nr,LOGGER_DOMAIN:()=>fd,LOGGER_DOMAIN_OVERSEA:()=>_d,LOG_LEVEL:()=>Vt,LOG_LEVEL_NAME:()=>Y_,MAIN_STREAM_MSID:()=>vs,MAX_RTT:()=>Os,MICROPHONE_COMMUNICATIONS:()=>Q_,MICROPHONE_DEFAULT:()=>Nr,MUTE_ALL_BIT:()=>L_,NAME:()=>p,NETWORK_TYPE:()=>jn,NOT_SUPPORTED_H264:()=>br,PAUSED_RETRY_COUNT:()=>vr,PEERCONNECTION_CONNECTING_TIMEOUT:()=>Ns,PEER_CONNECTION_STATE:()=>ge,PEER_LEAVE_REASON:()=>bd,RECOVER_CAPTURE_INTERVAL:()=>fo,REMOTE_STREAM_TYPE_AUX:()=>Ad,REMOTE_STREAM_TYPE_MAIN:()=>Id,RENDER_FREEZE_TIMING:()=>J_,SCHEDULE_DOMAIN:()=>xi,SCHEDULE_TIMEOUT:()=>X_,SDP_SEMANTICS_PLAN_B:()=>mo,SDP_SEMANTICS_UNIFIED_PLAN:()=>lr,SECOND_HOST:()=>D_,SIGNAL_PING_PONG_INTERVAL:()=>x_,SIGNAL_PING_TIMEOUT:()=>w_,SIGNAL_RECONNECTION_COUNT:()=>G_,SMALL_STAT_BIT:()=>bs,SPEAKER_DEFAULT:()=>Ds,STORAGE_EXPIRES_TIME:()=>Xn,STREAM_TYPE_BIG:()=>q_,STREAM_TYPE_SMALL:()=>j_,SUBSCRIBE_SMALL_RETRY_COUNT:()=>po,SYNC_USER_LIST_INTERVAL:()=>W_,Scene:()=>li,THIRD_HOST:()=>O_,TRANSPORT_DIRECTION:()=>ie,TRTC_ERROR_ASSISTANCE:()=>gd,TRTC_QUALITY_BAD:()=>F_,TRTC_QUALITY_DISCONNECTED:()=>$_,TRTC_QUALITY_EXCELLENT:()=>V_,TRTC_QUALITY_GOOD:()=>U_,TRTC_QUALITY_POOR:()=>B_,TRTC_QUALITY_UNKNOWN:()=>P_,TRTC_QUALITY_VERY_BAD:()=>H_,UPDATE_OFFER_TIMEOUT:()=>Rd,VIDEO_MUTE_BIT:()=>Kn,VIDEO_STAT_BIT:()=>cr,audioProfileMap:()=>zn,defaultBigVideoProfile:()=>ar,defaultSmallVideoProfile:()=>Td,getRetryCount:()=>wi,getScriptDir:()=>N_,innerVersion:()=>Cs,loggerProxy:()=>ys,screenProfileMap:()=>Qn,setLoggerProxy:()=>Rr,setRetryCount:()=>Cd,setVersion:()=>pd,version:()=>Ve,videoProfileMap:()=>Ut});var Cs="4.15.00.1600",Ve="5.0.0";function pd(o){Ve=o;let[i,e,t]=o.split(".").map(r=>parseInt(r,10));Cs=`${i}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var ho=typeof importScripts!="undefined",Rs=typeof registerProcessor!="undefined",N_=()=>{let o=ho?self.location.href:document.currentScript.src;return o.substring(0,o.lastIndexOf("/")+1)},ys="",Rr=o=>ys=o,qh="web.sdk.qcloud.com",D_="web.sdk.tencent.cn",O_="web.sdk.cloud.tencent.cn",M_="https://console.cloud.tencent.com/trtc",di=`https://${qh}/trtc/webrtc/v5/doc`,k_=`${di}/zh-cn/`,fd="https://yun.tim.qq.com",_d="https://apisgp.my-imcloud.com",gd="trtc_error_assistance",nr={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},ki={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},Vt=(n=>(n[n.TRACE=0]="TRACE",n[n.DEBUG=1]="DEBUG",n[n.INFO=2]="INFO",n[n.WARN=3]="WARN",n[n.ERROR=4]="ERROR",n[n.NONE=5]="NONE",n))(Vt||{}),w_=18e3,x_=2e3,jn={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},Xn=7*24*3600*1e3,zn={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},Ut={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},ar=Ut["480p_2"],Td=Ut["120p_2"],Qn={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},p={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture",RESIZE:"resize"},ie={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},Yn={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},li=(e=>(e.LIVE="live",e.RTC="rtc",e))(li||{}),cr=1,bs=2,yr=4,dr=8,Zn=64,Kn=16,L_=112,Ed=128,vs="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",Sd="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",Id=p.MAIN,Ad=p.AUXILIARY,P_=0,V_=1,U_=2,B_=3,F_=4,H_=5,$_=6,Bt="unknown",ge={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},jh=1/0;function Cd(o){jh=o}function wi(){return jh}var G_=30,ct={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},W_=1e4,Rd=1e4,yd=1e4,lr="unified-plan",mo="plan-b",br=1028,Xh=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(Xh||{}),ea=500,J_=1e3,q_=p.BIG,j_=p.SMALL,Ns=10*1e3,xi={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},X_=2e3,z_={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},vr=5,Nr="default",Ds=Nr,Q_="communications",Y_=Object.keys(Vt),bd=["normal leave","timeout leave","kick","role change"],po=10,fo=2e3,ta=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],Os=10*1e3;var Z_=function(o,i,e,t){function r(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function a(u){try{l(t.next(u))}catch(h){n(h)}}function c(u){try{l(t.throw(u))}catch(h){n(h)}}function l(u){u.done?s(u.value):r(u.value).then(a,c)}l((t=t.apply(o,i||[])).next())})},Nd=Symbol(32),Dd=Symbol(16),Od=Symbol(8),ui=class{constructor(i){this.g=i,this.consumed=0,i&&(this.need=i.next().value)}setG(i){this.g=i,this.demand(i.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(i,e){return e&&this.consume(),this.need=i,this.flush()}read(i){return Z_(this,void 0,void 0,function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise((e,t)=>{var r;this.reject=t,this.resolve=n=>{delete this.lastReadPromise,delete this.resolve,delete this.need,e(n)},this.demand(i,!0)||(r=this.pull)===null||r===void 0||r.call(this,i)})})}readU32(){return this.read(Nd)}readU16(){return this.read(Dd)}readU8(){return this.read(Od)}close(){var i;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),(i=this.reject)===null||i===void 0||i.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let i=null,e=this.buffer.subarray(this.consumed),t=0,r=s=>e.length<(t=s);if(typeof this.need=="number"){if(r(this.need))return;i=e.subarray(0,t)}else if(this.need===Nd){if(r(4))return;i=e[0]<<24|e[1]<<16|e[2]<<8|e[3]}else if(this.need===Dd){if(r(2))return;i=e[0]<<8|e[1]}else if(this.need===Od){if(r(1))return;i=e[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(r(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(e.subarray(0,t)),i=this.need}else if(this.g){this.g.throw(new Error("Unsupported type"));return}}else{if(r(this.need.byteLength))return;new Uint8Array(this.need).set(e.subarray(0,t)),i=this.need}return this.consumed+=t,this.g?this.demand(this.g.next(i).value,!0):this.resolve&&this.resolve(i),i}write(i){if(i instanceof Uint8Array?this.malloc(i.length).set(i):"buffer"in i?this.malloc(i.byteLength).set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength)):this.malloc(i.byteLength).set(new Uint8Array(i)),this.g||this.resolve)this.flush();else return new Promise(e=>this.pull=e)}writeU32(i){this.malloc(4).set([i>>24&255,i>>16&255,i>>8&255,i&255]),this.flush()}writeU16(i){this.malloc(2).set([i>>8&255,i&255]),this.flush()}writeU8(i){this.malloc(1)[0]=i,this.flush()}malloc(i){if(this.buffer){let e=this.buffer.length,t=e+i;if(t<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,t);else{let r=new Uint8Array(t);r.set(this.buffer),this.buffer=r}return this.buffer.subarray(e,t)}else return this.buffer=new Uint8Array(i),this.buffer}};ui.U32=Nd;ui.U16=Dd;ui.U8=Od;var K_=128,eg=127,tI=~eg,iI=Math.pow(2,31);function Md(o){let i=new ui;for(;o>=128;)i.malloc(1)[0]=o&255|K_,o>>>=7;return i.malloc(1)[0]=o&255,i.buffer||new Uint8Array(0)}function ia(o,i=0){let e=new ui,t=i<<3;switch(typeof o){case"boolean":let r=e.malloc(2);r[0]=t,r[1]=o?1:0;break;case"number":e.malloc(1)[0]=t,e.write(Md(o));break;case"string":e.malloc(1)[0]=t|2;let s=new TextEncoder().encode(o);e.write(Md(s.length));let n=e.malloc(s.length);for(let c=0;c<s.length;c++)n[c]=s[c];break;case"object":let a=new ui;if(Array.isArray(o))for(let c=0;c<o.length;c++){let l=ia(o[c],c+1);l&&a.write(l)}else{let c=1;for(let l in o){let u=ia(o[l],c++);u&&a.write(u)}}i===0?a.buffer&&e.write(a.buffer):(e.malloc(1)[0]=t|2,a.buffer&&(e.write(Md(a.buffer.length)),e.write(a.buffer)))}return e.buffer||new Uint8Array(0)}var Ms=class{constructor(){d(this,"buffer");this.buffer=[]}get data(){return this.buffer}get length(){return this.buffer.length}writeInt32(i){this.buffer.push(i>>>24&255),this.buffer.push(i>>>16&255),this.buffer.push(i>>>8&255),this.buffer.push(i&255)}writeInt16(i){this.buffer.push(i>>>8&255),this.buffer.push(i&255)}writeByte(i){this.buffer.push(i&255)}writeBytes(i){for(let e=0;e<i.length;e++)this.buffer.push(i[e])}};function kd(o,i,e){o[e]=i>>>24&255,o[e+1]=i>>>16&255,o[e+2]=i>>>8&255,o[e+3]=i&255}function Ye(o,i){return o[i]<<24|o[i+1]<<16|o[i+2]<<8|o[i+3]}function wd(o,i){return o[i]}function _o(o,i,e){return new TextDecoder().decode(tg(o,i,e))}function tg(o,i,e){return o.slice(i,i+e)}var xd=0,ra=2654435769,oa=16,Pd=4,go=2,To=7;function ig(o,i,e,t="AVQualityReportSvc.C2S",r=2e3,s=2,n=30){return{version:r,encryption:s,d2:"",d2Len:0,uinType:n,uin:"",uinLen:0,reqHead:{seqNumber:e,appId:o,appidAtThird:new Uint8Array(0),a2:"",a2Len:0,serviceCmd:t,serviceCmdLen:0,cookie:"",cookieLen:0,imei:"",imeiLen:0,ksid:"",ksidLen:0,clientVersionInfo:"",clientVersionInfoLen:0},busiBuff:i}}function zh(o,i){let e=new Ms,t=ig(i,o,xd);xd=xd+1&2147483647,e.writeInt32(0),e.writeInt32(t.version),e.writeByte(t.encryption);let r=new TextEncoder().encode(t.d2);e.writeInt32(r.length+4),r&&e.writeBytes(r),e.writeByte(t.uinType);let s=new TextEncoder().encode(t.uin);e.writeInt32(s.length+4),s.length&&e.writeBytes(s);let n=new Ms;n.writeInt32(0),n.writeInt32(t.reqHead.seqNumber),n.writeInt32(t.reqHead.appId),n.writeByte(t.reqHead.appId>>>24&255),n.writeByte(t.reqHead.appId>>>16&255),n.writeByte(t.reqHead.appId>>>8&255),n.writeByte(t.reqHead.appId&255);for(let X=4;X<16;X++)n.writeByte(0);let a=new TextEncoder().encode(t.reqHead.a2);n.writeInt32(a.length+4),a.length&&n.writeBytes(a);let c=new TextEncoder().encode(t.reqHead.serviceCmd);n.writeInt32(c.length+4),c.length&&n.writeBytes(c);let l=new TextEncoder().encode(t.reqHead.cookie);n.writeInt32(l.length+4),l.length&&n.writeBytes(l);let u=new TextEncoder().encode(t.reqHead.imei);n.writeInt32(u.length+4),u.length&&n.writeBytes(u);let h=new TextEncoder().encode(t.reqHead.ksid);n.writeInt32(h.length+4),h.length&&n.writeBytes(h);let m=new TextEncoder().encode(t.reqHead.clientVersionInfo);n.writeInt16(m.length+2),m.length&&n.writeBytes(m);let g=n.length;n.data[0]=g>>>24&255,n.data[1]=g>>>16&255,n.data[2]=g>>>8&255,n.data[3]=g&255,te(o)&&(o=new TextEncoder().encode(o)),n.writeInt32(o.length+4),o.length&&n.writeBytes(o);let T=new Uint8Array(n.data),_=null;t.encryption===1?_=new TextEncoder().encode(t.uin):t.encryption===2&&(_=new Uint8Array(16)),_&&(T=rg(T,_)),e.writeBytes(T);let S=new Uint8Array(e.data),R=S.length;return S[0]=R>>>24&255,S[1]=R>>>16&255,S[2]=R>>>8&255,S[3]=R&255,S}function rg(o,i){let e=o.length,r=(e+1+go+To)%8;r&&(r=8-r);let s=e+1+go+To+r,n=new Uint8Array(s),a=0,c=new Uint8Array(8),l=new Uint8Array(8),u=new Uint8Array(8),h=0;c[0]=Math.floor(Math.random()*256)&248|r,h=1;for(let g=0;g<r;g++)c[h]=Math.floor(Math.random()*256)&255,h+=1;for(let g=0;g<go;)if(h<8&&(c[h]=Math.floor(Math.random()*256)&255,h+=1,g+=1),h===8){Ld(c,i,l,u,n,a),a+=8,h=0;for(let T=0;T<8;T++)u[T]=n[a-8+T]}let m=0;for(;m<e;)if(h<8&&(c[h]=o[m],h+=1,m+=1),h===8){Ld(c,i,l,u,n,a),a+=8,h=0;for(let g=0;g<8;g++)u[g]=n[a-8+g]}for(let g=0;g<To;)if(h<8&&(c[h]=0,h+=1,g+=1),h===8){Ld(c,i,l,u,n,a),a+=8,h=0;for(let T=0;T<8;T++)u[T]=n[a-8+T]}return n}function Ld(o,i,e,t,r,s){for(let n=0;n<8;n++)o[n]^=t[n];og(o,i,r,s);for(let n=0;n<8;n++)r[s+n]^=e[n];for(let n=0;n<8;n++)e[n]=o[n]}function og(o,i,e,t){let r=Ye(o,0),s=Ye(o,4),n=[];for(let c=0;c<4;c++)n[c]=Ye(i,c*4);let a=0;for(let c=0;c<oa;c++)a+=ra,a=a>>>0,r+=(s<<4)+n[0]^s+a^(s>>>5)+n[1],r=r>>>0,s+=(r<<4)+n[2]^r+a^(r>>>5)+n[3],s=s>>>0;kd(e,r,t),kd(e,s,t+4)}var Yh=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Li=o=>Number(o)<14e8,Pi=function(o,i){let e;ys?e=ys:e=Li(o)?_d:fd;let t=Math.floor(Math.random()*sr(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${o}&cmdtype=${i}`},ks="unknown";function Vd(){if(ks!=="unknown")return ks;let{userAgent:o,connection:i}=navigator,e=(o.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let t=i&&i.type&&i.type.toLowerCase(),r=i&&i.effectiveType&&i.effectiveType.toLowerCase();return r==="slow-2"&&(r="2g"),t&&(ks=Zh(t,r)),ks}function Zh(o,i){if(jn[o])return o;switch(o){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function na(o){ks=Zh(o)}function Or(){return jn[Vd()]}function Kh(o,i){for(let e of Reflect.ownKeys(i))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let t=Object.getOwnPropertyDescriptor(i,e)||"";Object.defineProperty(o,e,t)}return o}function em(o,i=48e3){return Ud(o/4,i)}function Ud(o,i=48e3){return o*1e3/i}function tm(o,i=48e3){return Bd(o,i)*4}function Bd(o,i=48e3){return o*i/1e3}var Fd=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},Ft=()=>{let o=navigator.language;return o=o.substring(0,2),o==="zh"},Ze=function(o){if(!o||typeof o!="object"||Object.prototype.toString.call(o)!="[object Object]")return!1;let i=Object.getPrototypeOf(o);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Mr(o,i=1,e=1){return o<=1?e:Mr(o-1,e,i+e)}function Ht(o){return o>8?30*1e3:Mr(o)*1e3}function ye(o){return Reflect.apply(Object.prototype.toString,o,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var ae=o=>typeof o=="function",E=o=>typeof o=="undefined",te=o=>typeof o=="string",q=o=>typeof o=="number",de=o=>typeof o=="boolean",ft=o=>ye(o)==="object",Se=o=>ye(o)==="array",im=o=>ye(o)==="MediaStreamTrack".toLowerCase(),rm=o=>o.isRemote,ur=o=>ye(o)==="promise",kr=o=>ae(o)&&o.prototype.constructor===o,Eo=o=>kr(o)?o.prototype.constructor.name:"",om=typeof AudioWorkletNode!="undefined",sm=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype;function wr(o){return new Promise((i,e)=>{let t=[];o.forEach(r=>{r.then(i).catch(s=>{t.push(s),t.length===o.length&&e(t)})})})}function P(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Qh=o=>+o<10?`0${o}`:o,nm=o=>{let i=o.match(/^\d+\.\d+\.\d+/)[0];if(!i)return o;let e=i.split("."),t=Qh(e[1])+Qh(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},sg=Object.prototype.hasOwnProperty,{toString:pI}=Object.prototype;function So(o){if(o==null)return!0;if(typeof o=="boolean")return!1;if(typeof o=="number")return o===0;if(typeof o=="string"||typeof o=="function"||Array.isArray(o))return o.length===0;if(o instanceof Error)return o.message==="";if(Ze(o))switch(Object.prototype.toString.call(o)){case"[object File]":case"[object Map]":case"[object Set]":return o.size===0;case"[object Object]":{for(let i in o)if(sg.call(o,i))return!1;return!0}}return!1}function $t(o,i){return{userId:i,hasAudio:!!(o&dr),hasVideo:!!(o&cr),hasAuxiliary:!!(o&yr),hasSmall:!!(o&bs),audioMuted:!!(o&Zn),videoMuted:!!(o&Kn),audioAvailable:!!(o&dr)&&!(o&Zn),videoAvailable:!!(o&cr)&&!(o&Kn)}}function am(o){let i={urls:o.url.startsWith("turn:")||o.url.startsWith("turns:")?o.url:`turn:${o.url}`};return!E(o.username)&&!E(o.credential)&&(i.username=o.username,i.credential=o.credential,i.credentialType="password",E(o.credentialType)||(i.credentialType=o.credentialType)),i}function Io(o,i=!0){if(!te(o))return 0;let e=o.split(".");return i?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var Gt=function(o,i,e,t){if(!(ft(o)&&ft(i)))return 0;let r=0,s=Object.keys(i),n;for(let a=0,c=s.length;a<c;a++)if(n=s[a],!(E(i[n])||e&&e.includes(n)))if(ft(o[n])&&ft(i[n]))r+=Gt(o[n],i[n],e,t);else{if(t&&t.includes(i[n]))continue;o[n]!==i[n]&&(o[n]=Dr(i[n]),r+=1)}return r};function Dr(o){if(Se(o)){let i=[];return o.forEach((e,t)=>{i[t]=Dr(e)}),i}if(ft(o)){let i={};return Object.keys(o).forEach(e=>{i[e]=Dr(o[e])}),i}return o}var Ao=o=>{let i=[];if(Se(o))i=[...o];else if(te(o)){let e=document.getElementById(o);e&&i.push(e)}else o&&i.push(o);return i},cm=o=>te(o)?document.getElementById(o):o,ng=o=>{let i=c=>c<10?`0${c}`:`${c}`,e=o.getFullYear(),t=o.getMonth()+1,r=o.getDate(),s=i(o.getHours()),n=i(o.getMinutes()),a=i(o.getSeconds());return`${e}/${t}/${r} ${s}:${n}:${a}`},dm=()=>ng(new Date);function bt(o,{keysToInclude:i,keysToExclude:e}){try{if(Se(o))return`[${o.map(n=>bt(n,{keysToInclude:i,keysToExclude:e})).join(",")}]`;if(!Ze(o)||!Se(i)&&!Se(e))return JSON.stringify(o);let t={},r=new Set(i),s=new Set(e);return Object.keys(o).forEach(n=>{(s.size===0&&r.has(n)||r.size===0&&!s.has(n))&&(t[n]=Ze(o[n])||Se(o[n])?JSON.parse(bt(o[n],{keysToExclude:e,keysToInclude:i})):o[n])}),JSON.stringify(t)}catch(t){return"{}"}}function ws(o,i=!1){let e=[];return Object.keys(o).forEach(t=>{i===o[t]&&e.push(t)}),bt(o,{keysToInclude:e})}function xs(o){return o.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Hd=()=>{var o,i,e,t;return(o=window.screen)!=null&&o.orientation?!!((t=(e=(i=window.screen)==null?void 0:i.orientation)==null?void 0:e.type)!=null&&t.includes("portrait")):window.orientation===0||window.orientation===180},Co=o=>f(void 0,null,function*(){return new Promise((i,e)=>{let t;if(te(o))t=new Image,t.crossOrigin="anonymous",t.src=o;else if(t=o,t.complete){i(t);return}t.onload=()=>i(t),t.onerror=()=>{e(new N({code:I.INVALID_PARAMETER,message:`load image failed, url: ${o}`}))}})}),aa=o=>{let i=o.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]<<0},Ls=o=>(Object.keys(o).forEach(i=>{q(o[i])&&(i.startsWith("uint")||i.startsWith("int"))?o[i]=Math.floor(o[i]):(Ze(o[i])||Se(o[i]))&&Ls(o[i])}),o);function Wt(o,i){return new Promise(e=>{let t=setTimeout(e,o);i&&i(t)})}function ca(o,i){let e=null;return function(...t){return e||(e=o.apply(i||this,t),e.finally(()=>e=null),e)}}function da(o){return o.replace(/(^|[^:])\/{2,}/g,"$1/")}function la(o){var i;try{let{width:e,height:t,frameRate:r,sampleRate:s,sampleSize:n,channelCount:a}=(i=o.getSettings)==null?void 0:i.call(o),c=o.kind===p.AUDIO?`${s}x${n}@${a}`:`${e}x${t}@${r}`,l=o.stats?` stats: ${JSON.stringify(o.stats).replaceAll('"',"")}`:"";return`${o.id} ${o.readyState} muted:${o.muted} ${o.kind} ${o.label} ${c}${l}`}catch(e){return""}}function Ro(o,i){return o.width*o.height===i.width*i.height?1:Hd()&&i.width>i.height&&o.height>i.width?Math.max(o.width/i.height,o.height/i.width,1):Math.max(o.width/i.width,o.height/i.height,1)}function _t(o){return o===90||o===270}function lm(o){return f(this,null,function*(){return new Promise((i,e)=>{let t=document.createElement("video");t.crossOrigin="anonymous",t.src=o,t.muted=!0,t.loop=!0,t.playsInline=!0,t.play().then(()=>i(t)),t.onerror=()=>{e(t.error)}})})}function sa(o,i=new WeakMap){if(typeof o!="object"||o===null)return o;if(i.has(o))return i.get(o);if(Array.isArray(o)){let e=[];return i.set(o,e),o.forEach((t,r)=>{e[r]=sa(t,i)}),e}if(Object.prototype.toString.call(o)==="[object Object]"){let e={};return i.set(o,e),Reflect.ownKeys(o).forEach(t=>{e[t]=sa(o[t],i)}),e}return o}var yo=(t=>(t[t.END_REPORT=2001]="END_REPORT",t[t.LOG=2002]="LOG",t[t.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",t))(yo||{});function ag(o,i,e,t){let r={data:o,random:Math.floor(Math.random()*2147483648),sdkAppId:e};return E(t)||(r=w(D({},r),{gzip:+t})),{uint32_sdkappid:0,uint64_from_uin:0,uint32_timestamp:0,uint32_seq:0,msg_common_info:{msg_device_info:{enum_device_type:0,str_device_brand:"",str_device_model:"",str_device_board:"",str_device_cpu_abi:""},msg_system_info:{enum_os_type:0,str_os_version:"",msg_network_info:0},msg_network_info:{enum_network_type:0}},msg_report_content:{uint32_type:i,bytes_report_data:JSON.stringify(r)}}}function Vi(o,i,e,t){try{let r=ag(o,i,e,t),s=ia(r);return zh(s,e)}catch(r){return JSON.stringify(o)}}function um(o){let i=cg(o);return i==null?void 0:i.busiBuff}function cg(o){try{let i={},e=0;i.totalLength=Ye(o,e),e+=4,i.version=Ye(o,e),e+=4,i.encryption=wd(o,e),e+=1,i.uinType=wd(o,e),e+=1,i.uinLength=Ye(o,e),e+=4,i.uin=i.uinLength>4?_o(o,e,i.uinLength-4):"",e+=i.uinLength-4;let t=o.slice(e);if(i.encryption===2){let r=new Uint8Array(16).fill(0);o=dg(t,r),i.decrypted=!0,e=0}else o=t,e=0;return i.rspHeadLength=Ye(o,e),e+=4,i.seqNo=Ye(o,e),e+=4,i.retCode=Ye(o,e),e+=4,i.retStrLength=Ye(o,e),e+=4,i.retStr=i.retStrLength?_o(o,e,i.retStrLength-4):"",e+=i.retStrLength-4,i.serviceCmdLength=Ye(o,e),e+=4,i.serviceCmd=i.serviceCmdLength?_o(o,e,i.serviceCmdLength-4):"",e+=i.serviceCmdLength-4,i.cookieLength=Ye(o,e),e+=4,i.cookie=i.cookieLength?_o(o,e,i.cookieLength-4):"",e+=i.cookieLength-4,i.flag=Ye(o,e),e+=4,i.busiBuffLength=Ye(o,e),e+=4,i.busiBuff=i.busiBuffLength?_o(o,e,i.busiBuffLength-4):"",e+=i.busiBuffLength-4,i}catch(i){}}function hm(o,i){let e=o[0]<<24|o[1]<<16|o[2]<<8|o[3],t=o[4]<<24|o[5]<<16|o[6]<<8|o[7];e=e>>>0,t=t>>>0;let r=ra*oa>>>0;for(let s=0;s<oa;s++)t-=(e<<Pd)+i[2]^e+r^(e>>>5)+i[3],t=t>>>0,e-=(t<<Pd)+i[0]^t+r^(t>>>5)+i[1],e=e>>>0,r-=ra,r=r>>>0;return new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,e&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255])}function dg(o,i){let e=0,t=new Uint8Array(8).fill(0),r=new Uint8Array(o.slice(0,8)),s=hm(r,i),n=s[0]&7,a=o.length-1-n-go-To,c=new Uint8Array(a),l=0,u=t,h=o.slice(0,8);e=8;let m=1;m+=n;for(let T=1;T<=go;)if(m<8)m++,T++;else if(m===8){let _=$d(o,e,u,h,s,i);u=_.ivPreCrypt,h=_.ivCurCrypt,s=_.debiBuf,e=_.bufPos,m=0}let g=a;for(;g>0;)if(m<8)c[l++]=s[m]^u[m],m++,g--;else if(m===8){let T=$d(o,e,u,h,s,i);u=T.ivPreCrypt,h=T.ivCurCrypt,s=T.debiBuf,e=T.bufPos,m=0}for(let T=1;T<=To;)if(m<8)s[m]^u[m],m++,T++;else if(m===8){if(e>=o.length)break;let _=$d(o,e,u,h,s,i);if(!_.success)break;u=_.ivPreCrypt,h=_.ivCurCrypt,s=_.debiBuf,e=_.bufPos,m=0}return c}function $d(o,i,e,t,r,s){if(i+8>o.length)return{success:!1};let n=new Uint8Array(t),a=o.slice(i,i+8),c=new Uint8Array(8);for(let u=0;u<8;u++)c[u]=r[u]^a[u];let l=hm(c,s);return{success:!0,ivPreCrypt:n,ivCurCrypt:a,debiBuf:l,bufPos:i+8}}var mm=typeof TextDecoder!="undefined"?new TextDecoder:void 0;function Ui({url:o,body:i,method:e="POST",timeout:t,priority:r}){return new Promise((s,n)=>{if("fetch"in window)return fetch(o,{method:e,body:i,priority:r}).then(c=>c.clone().json().then(l=>({data:l}),()=>c.arrayBuffer().then(l=>({data:um(new Uint8Array(l))||(mm?mm.decode(l):l)})))).then(s,n);let a=new XMLHttpRequest;a.onreadystatechange=()=>{if(a.readyState===4)if(a.status>=200&&a.status<300)try{let c=JSON.parse(a.response);s({data:c})}catch(c){s({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=t||5e3,a.open(e,o,!0),a.send(i)})}function Gd(o){return f(this,null,function*(){let i=P(),e=JSON.stringify(o);try{if(!CompressionStream||e.length<=2800)return e;let r=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),a=yield(yield(yield new Response(r)).blob()).arrayBuffer();return y.debug(`compressJSON ${e.length} -> ${a.byteLength} ${P()-i}ms`),a}catch(t){return e}})}var lg=Object.prototype.hasOwnProperty;var hi=o=>typeof o=="function",Bi=o=>typeof o=="undefined";var ua=o=>typeof o=="boolean";var Wd=o=>o.isRemote;var Jd=function(o){if(!o||typeof o!="object"||Object.prototype.toString.call(o)!="[object Object]")return!1;let i=Object.getPrototypeOf(o);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function pm(o){if(o==null)return!0;if(typeof o=="boolean")return!1;if(typeof o=="number")return o===0;if(typeof o=="string"||typeof o=="function"||Array.isArray(o))return o.length===0;if(o instanceof Error)return o.message==="";if(Jd(o))switch(Object.prototype.toString.call(o)){case"[object File]":case"[object Map]":case"[object Set]":return o.size===0;case"[object Object]":{for(let i in o)if(lg.call(o,i))return!1;return!0}}return!1}var ug=0,hg=1,fm=2;function mg({retryFunction:o,settings:i,onError:e,onRetrying:t,onRetryFailed:r,onRetrySuccess:s,context:n}){return function(...a){let{retries:c=5,timeout:l=1e3}=i,u=0,h=-1,m=ug,g=(T,_)=>f(this,null,function*(){let S=n||this;try{let R=yield o.apply(S,a);u>0&&s&&s.call(this,u),u=0,T(R)}catch(R){let X=()=>{clearTimeout(h),u=0,m=fm,_(R)},$=()=>{m!==fm&&u<(hi(c)?c():c)?(u++,m=hg,hi(t)&&t.call(this,u,X),h=window.setTimeout(()=>{h=-1,g(T,_)},hi(l)?l(u):l)):(X(),hi(r)&&r.call(this,R))};hi(e)?e.call(this,{error:R,retry:$,reject:_,retryFuncArgs:a,retriedCount:u}):$()}});return new Promise(g)}}var mi=mg;var bo=class{constructor(i){d(this,"userId");d(this,"remoteUserId");d(this,"id");d(this,"sdkAppId");d(this,"type");d(this,"isLocal");this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=ua(i.isLocal)?i.isLocal:!0,this.type=this.isLocal?"":i.type}createChild(i){return Object.setPrototypeOf(i,this)}setUserId(i){this.userId=i}setSdkAppId(i){this.sdkAppId=i}log(i,e){let t=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${t?`|${t}`:""}]`),y.log(i,e,Bi(this.userId)||pm(this.userId),this.userId,this.sdkAppId)}info(...i){this.log(2,i)}debug(...i){this.log(1,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}};var Uo={};Mi(Uo,{ANDROID_VERSION:()=>Xd,CHROME_MAJOR_VERSION:()=>dt,CHROME_VERSION:()=>Na,EDGE_VERSION:()=>ma,EDG_MAJOR_VERSION:()=>zd,EDG_VERSION:()=>pa,FIREFOX_MAJOR_VERSION:()=>Do,FIREFOX_VERSION:()=>ha,HUAWEI_VERSION:()=>Ra,IE_VERSION:()=>Tg,IOS_MAIN_VERSION:()=>je,IOS_VERSION:()=>Tt,IPADQQB_VERSION:()=>Aa,IS_ANDROID:()=>pe,IS_ANDROID_WEBVIEW:()=>Ag,IS_ANY_SAFARI:()=>vt,IS_CHROME:()=>Vo,IS_CHROME_OS:()=>Qd,IS_CHROMIUM_BASE:()=>Ke,IS_DESKTOP_IOS_CHROME:()=>rl,IS_EDG:()=>Oo,IS_EDGE:()=>xr,IS_ELECTRON:()=>Sg,IS_FIREFOX:()=>ne,IS_HEADLESS_CHROME:()=>Kd,IS_HONOR:()=>Zd,IS_HUAWEI:()=>Ws,IS_HUAWEIBROWSER:()=>Gs,IS_IE:()=>Em,IS_IE8:()=>gg,IS_IOS:()=>Ie,IS_IOS_13_OR_14:()=>il,IS_IOS_15_1:()=>tl,IS_IOS_CHROME:()=>Sm,IS_IPAD:()=>No,IS_IPADQQB:()=>Fs,IS_IPAD_PRO:()=>jd,IS_IPHONE:()=>hr,IS_IPOD:()=>Tm,IS_LINUX:()=>Hs,IS_LOCAL:()=>zt,IS_MAC:()=>Xt,IS_MACQQB:()=>Bs,IS_MIBROWSER:()=>$s,IS_MQQB:()=>xo,IS_NATIVE_ANDROID:()=>_g,IS_OLD_ANDROID:()=>fg,IS_OPENHARMONY:()=>Lo,IS_OPPOBROWSER:()=>qs,IS_SAFARI:()=>ke,IS_SAFARI_15_1:()=>Cg,IS_SAMSUNGBROWSER:()=>Js,IS_SOGOU:()=>Vs,IS_SOGOUM:()=>Ps,IS_TBS:()=>jt,IS_UCBROWSER:()=>Yd,IS_VIVOBROWSER:()=>js,IS_WECHAT:()=>ko,IS_WIN:()=>Lr,IS_WQQB:()=>Us,IS_WX:()=>Eg,IS_X5MQQB:()=>wo,IS_XWEB:()=>Mo,MACQQB_VERSION:()=>Ia,MI_VERSION:()=>Ca,MQQB_VERSION:()=>vo,OPENHARMONY_VERSION:()=>Ig,OPPO_VERSION:()=>ba,SAFARI_VERSION:()=>Fi,SAMSUNG_VERSION:()=>ya,SOGOUM_VERSION:()=>fa,SOGOU_VERSION:()=>_a,TBS_VERSION:()=>ga,UA_DATA_STRING:()=>Jt,USER_AGENT:()=>qt,VIVO_VERSION:()=>va,WECHAT_VERSION:()=>Ea,WQQB_VERSION:()=>Sa,XWEB_VERSION:()=>Ta,browserInfo:()=>pi,getBrowserCoreNumber:()=>nl,getBrowserInfo:()=>Im,getChromeMajorVersion:()=>Po,getDeviceModel:()=>Vr,getGPUInfo:()=>sl,getOSName:()=>Da,getOSNumber:()=>Ur,getOSString:()=>$i,getOSType:()=>Rg,getTerminalType:()=>al,getUserAgentData:()=>Pr,isLocalStorageEnabled:()=>Hi,isMobile:()=>ol,isVersionLargerThan:()=>el,isVersionSmallerThan:()=>Xs});var qt=typeof navigator=="undefined"?"":navigator.userAgent,Z=o=>new RegExp(o,"i").test(qt),Me=o=>{if(Z(o)){let i=new RegExp(`${o}\\/([\\d.]+)`),e=qt.match(i);if(e&&e[1])return e[1]}return""},qd=o=>{if(Z(o)){let i=new RegExp(`${o}\\/(\\d+)`),e=qt.match(i);if(e&&e[1])return parseFloat(e[1])}return NaN},_m=/AppleWebKit\/([\d.]+)/i.exec(qt),pg=_m?parseFloat(_m[1]):NaN,No=Z("iPad"),jd=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Z("Macintosh"),hr=Z("iPhone")&&!No,Tm=Z("iPod"),Ie=hr||No||Tm||jd,pe=Z("Android"),Xd=function(){if(pe){let o=qt.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(o){let i=o[1]&&parseFloat(o[1]),e=o[2]&&parseFloat(o[2]);if(i&&e)return parseFloat(`${o[1]}.${o[2]}`);if(i)return i}}return NaN}(),fg=pe&&Z("webkit")&&Xd<2.3,_g=pe&&Xd<5&&pg<537,ne=Z("Firefox"),ha=Me("Firefox"),Do=qd("Firefox"),xr=Z("Edge"),ma=Me("Edge"),Oo=Z("Edg"),pa=Me("Edg"),zd=qd("Edg"),Ps=Z("SogouMobileBrowser"),fa=Me("SogouMobileBrowser"),Vs=Z("MetaSr\\s"),_a=Me("MetaSr\\s"),jt=Z("TBS"),ga=Me("TBS"),Mo=Z("XWEB"),Ta=Me("XWEB"),gg=Z("MSIE\\s8\\.0"),Em=Z("MSIE\\/\\d+"),Tg=function(){if(Em){let o=/MSIE\s(\d+)\.\d/.exec(qt),i=o&&parseFloat(o[1]);return!i&&/Trident\/7.0/i.test(qt)&&/rv:11.0/.test(qt)&&(i=11),i}return NaN}(),ko=Z("(micromessenger|webbrowser)"),Ea=Me("MicroMessenger"),wo=!jt&&Z("MQQBrowser")&&Z("COVC"),xo=!jt&&Z("MQQBrowser")&&!Z("COVC"),vo=xo||wo?Me("MQQBrowser"):"",Us=!jt&&Z(" QQBrowser"),Sa=Me(" QQBrowser"),Bs=!jt&&Z("QQBrowserLite"),Ia=Me("QQBrowserLite"),Fs=!jt&&Z("MQBHD"),Aa=Me("MQBHD"),Lr=Z("Windows"),Xt=!Ie&&Z("MAC OS X"),Hs=!pe&&Z("Linux"),Qd=Z("CrOS"),Eg=Z("MicroMessenger"),Yd=Z("UCBrowser"),Sg=Z("Electron"),$s=Z("MiuiBrowser"),Ca=Me("MiuiBrowser"),Gs=Z("HuaweiBrowser"),Ws=Z("Huawei")||Z("HUAWEI"),Zd=Z("Honor")||Z("HONOR"),Ra=Me("HuaweiBrowser"),Js=Z("SamsungBrowser"),ya=Me("SamsungBrowser"),qs=Z("HeyTapBrowser"),ba=Me("HeyTapBrowser"),js=Z("VivoBrowser"),va=Me("VivoBrowser"),Lo=Z("OpenHarmony"),Ig=Me("OpenHarmony"),Po=()=>qd("Chrome"),Ke=Z("Chrome"),Vo=!xr&&!Vs&&!Ps&&!jt&&!Mo&&!Oo&&!Us&&!$s&&!Gs&&!Js&&!qs&&!js&&Ke,Kd=Z("HeadlessChrome"),dt=Po(),Na=Me("Chrome"),ke=!Ke&&!xo&&!wo&&!Bs&&!Fs&&Z("Safari"),vt=ke||Ie,Fi=Me("Version"),Ag=/Android.*(wv|.0.0.0)/.test(qt),Tt=(()=>{if(jd)return Fi;if(Ie){let o=qt.match(/OS (\d+)_(\d+)/i);if(o&&o[1]){let i=o[1];return o[2]&&(i+=`.${o[2]}`),i}}return""})();function Xs(o,i){let e=o.split(".").map(r=>Number(r)),t=i.split(".").map(r=>Number(r));for(let r=0;r<Math.max(e.length,t.length);r++){let s=e[r]||0,n=t[r]||0;if(s<n)return!0;if(s>n)return!1}return!1}function el(o,i,e=!1){let t=o.split(".").map(s=>Number(s)),r=i.split(".").map(s=>Number(s));for(let s=0;s<Math.max(t.length,r.length);s++){let n=t[s]||0,a=r[s]||0;if(n>a)return!0;if(n<a)return!1}return e}var je=Number(Tt.split(".")[0]),Cg=Fi==="15.1",tl=Tt==="15.1",il=(()=>{let o=Number(Tt.split(".")[0]);return o===14||o===13})(),Sm=Z("CriOS"),rl=Sm&&Fi==="11.1.1",zt=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",Hi=(()=>{let o;return()=>{if(typeof o=="undefined")try{o=!!window.localStorage}catch(i){o=!1}return o}})(),pi=Im();function Im(){let o=new Map([[ne,["Firefox",ha]],[Oo,["Edg",pa]],[Vo,["Chrome",Na]],[ke,["Safari",Fi]],[jt,["TBS",ga]],[Mo,["XWEB",Ta]],[ko&&hr,["WeChat",Ea]],[Us,["QQ(Win)",Sa]],[xo,["QQ(Mobile)",vo]],[wo,["QQ(Mobile X5)",vo]],[Bs,["QQ(Mac)",Ia]],[Fs,["QQ(iPad)",Aa]],[$s,["MI",Ca]],[Gs,["HW",Ra]],[Js,["Samsung",ya]],[qs,["OPPO",ba]],[js,["VIVO",va]],[xr,["EDGE",ma]],[Ps,["SogouMobile",fa]],[Vs,["Sogou",_a]]]),i="unknown",e="unknown";return o.has(!0)&&([i,e]=o.get(!0)),{name:i,version:e}}var ce=null;function ol(){return ce&&typeof ce.mobile=="boolean"?ce.mobile:pe||Ie||hr||No||Lo}var Jt="";function Pr(){return f(this,null,function*(){if(ce)return ce;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return ce=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),ce&&!Jt&&(Jt=`UAData: ${ce.platform}/${ce.platformVersion}`,ce.architecture&&ce.bitness&&(Jt+=` ${ce.architecture}/${ce.bitness}`),ce.mobile&&(Jt+=" mobile"),ce.model&&(Jt+=` model: ${ce.model.replace(/\s+/g,"/")}`),ce.fullVersionList&&(Jt+=` ${ce.fullVersionList.filter(o=>o.brand!=="Not/A)Brand").map(o=>`${o.brand}/${o.version}`).join(",")}`)),ce}catch(o){return null}})}function sl(){try{let o=document.createElement("canvas"),i=o.getContext("webgl")||o.getContext("experimental-webgl");if(!i)return"";let e=i.getExtension("WEBGL_debug_renderer_info");if(e){let t=i.getParameter(e.UNMASKED_VENDOR_WEBGL),r=i.getParameter(e.UNMASKED_RENDERER_WEBGL);return`${t} ${r}`}return""}catch(o){return""}}function Vr(){return(ce==null?void 0:ce.model)||""}var gm=new Map([[pe,"Android"],[Ie,"iOS"],[Lr,"Windows"],[Xt,"MacOS"],[Hs,"Linux"],[Qd,"ChromeOS"]]),Da=function(){return gm.get(!0)?gm.get(!0):ce?ce.platform:"unknown"};function Ur(){return Lr?1:pe?2:Xt?3:Ie?4:Hs?5:Qd?6:Lo?7:0}function nl(){return Ke?1:ke?2:ne?3:0}var $i=()=>{let o=Da();return o+=`/${pi.name}/${ke?pi.version:pi.version.split(".")[0]}`,ce!=null&&ce.platformVersion&&(o+=`/${ce.platformVersion}`),ce!=null&&ce.architecture&&(o+=`/${ce.architecture}`),o};function al(){return pe?4:hr?2:No?3:Xt?12:Lr?5:Hs?13:Lo?22:1}function Rg(){return pe?"Android":hr?"iPhone":No?"iPad":Xt?"Mac":Lr?"Windows":Hs?"Linux":"unknown"}var Am=He(Qe(),1),yg=new Am.default,A=yg;var Et=(H=>(H.ROOM_DESTROY="1",H.JOIN_START="21",H.JOIN_SCHEDULE_SUCCESS="22",H.JOIN_SIGNAL_CONNECTION_START="23",H.JOIN_SIGNAL_CONNECTION_END="24",H.JOIN_SEND_CMD="25",H.JOIN_RECEIVED_CMD_RES="26",H.JOIN_SUCCESS="27",H.JOIN_FAILED="28",H.LEAVE_START="51",H.LEAVE_SEND_CMD="52",H.LEAVE_SUCCESS="53",H.PUBLISH_START="61",H.SEND_FIRST_VIDEO_FRAME="62",H.PUBLISH_FAILED="63",H.SUBSCRIBE_START="81",H.SUBSCRIBE_SUCCESS="82",H.SUBSCRIBE_FAILED="84",H.UNSUBSCRIBE_SUCCESS="83",H.LOCAL_TRACK_CAPTURE_START="101",H.LOCAL_TRACK_CAPTURE_SUCCESS="102",H.LOCAL_TRACK_CAPTURE_FAILED="103",H.LOCAL_TRACK_PUBLISHED="104",H.LOCAL_TRACK_UNPUBLISHED="105",H.LOCAL_TRACK_REPLACED="106",H.SWITCH_DEVICE_SUCCESS="107",H.TRACK_MUTED="108",H.TRACK_UNMUTED="109",H.REMOTE_TRACK_SUBSCRIBED="110",H.REMOTE_TRACK_UNSUBSCRIBED="111",H.LOCAL_TRACK_RECAPTURE="112",H.LOCAL_AUDIO_STARTED="113",H.LOCAL_AUDIO_STOPPED="114",H.REMOTE_AUDIO_STARTED="115",H.REMOTE_AUDIO_STOPPED="116",H.PLAY_TRACK_START="151",H.PLAYER_STATE_CHANGED="152",H.VIDEO_LOADED_DATA="153",H.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",H.AUDIO_CONTEXT_LONG_SUSPENDED="155",H.SIGNAL_CONNECTION_STATE_CHANGED="201",H.PEER_CONNECTION_STATE_CHANGED="202",H.SINGLE_CONNECTION_STAT="203",H.SPC_RECONNECTED="204",H.HEARTBEAT_REPORT="251",H.RECEIVED_PUBLISHED_USER_LIST="252",H.REMOTE_PUBLISH_STATE_CHANGED="253",H.AUDIO_LEVEL_INTERVAL="260",H.NETWORK_QUALITY="261",H.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",H.QUALITY_LIMITATION_CHANGED="263",H.LOG="264",H.AUDIO_PROCESSOR_DEBUG="265",H.SSO_SWITCH="266",H.SWITCH_ROOM_START="401",H.SWITCH_ROOM_SUCCESS="407",H.SWITCH_ROOM_FAILED="408",H))(Et||{});var C=Et;var cl=class{constructor(){d(this,"enable",!1);d(this,"ssoFailCount",0);A.on("22",({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.sso&&A.emit("266",{enable:!0})}),A.on("266",({enable:i})=>{this.enable=i})}handleUploadFailed(){this.ssoFailCount++,this.ssoFailCount>3&&A.emit("266",{enable:!1})}},mr=new cl;var bg="%cTRTC%c%s",vg="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",Ng="display: inline",Oa=class Oa{constructor(){d(this,"_isEnableUploadLog",!0);d(this,"_localJoinedUser",new Map);d(this,"_queue",[]);d(this,"_timeoutId",-1);d(this,"_logLevel",1);d(this,"_logLevelToUpload",2);!ho&&!Rs&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){A.on(C.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.logLevelToUpload&&Vt[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),A.on(C.JOIN_SUCCESS,({room:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),A.once(C.JOIN_FAILED,()=>{this.startUpload()}),A.on(C.LEAVE_SUCCESS,({room:i})=>{this.deleteJoinedUser(i.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(i){this._localJoinedUser.set(i.userId,i),this.startUpload()}deleteJoinedUser(i){this._localJoinedUser.delete(i)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let i={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return i;let e=0;for(;e<this._queue.length&&e!==50;e++){let t=this._queue[e];if(t.forAllJoinedClients)this._localJoinedUser.forEach(({userId:r,sdkAppId:s})=>{i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:s,logs:[t]})});else if(te(t.userId)&&q(t.sdkAppId)){let{userId:r,sdkAppId:s}=t;i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:s,logs:[t]})}}return i.map.size>0&&(i.splicedQueue=this._queue.splice(0,e)),i}upload(){return f(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:i,splicedQueue:e}=this.getLogsToUpload();if(i.size===0)return;try{let r=[...i.values()];for(let s=0;s<r.length;s++){let{userId:n,sdkAppId:a,logs:c}=r[s],l={timestamp:qn(),sdkAppId:String(a),userId:n,version:Ve,log:c.map(m=>m.log).join(`
|
|
6
|
-
`)},u=JSON.stringify(l),h=mr.enable?Vi(l,2002,a):u;yield this.uploadLogWithRetry(h,a,h instanceof Uint8Array,u),c.forEach(m=>m.uploaded=!0)}}catch(r){}let t=e.filter(r=>!r.uploaded);t.length>0&&(this._queue=t.concat(this._queue))})}uploadLogWithRetry(i,e,t,r){return mi({retryFunction:()=>Ui({url:Pi(e,nr.LOG),body:i,timeout:5e3,priority:"low"}).then(s=>{t&&s.data!=="ok"&&(mr.handleUploadFailed(),this.uploadLogWithRetry(r,e,!1,r))}),settings:{retries:3,timeout:2e3},onError:({retry:s})=>{s()}})()}getPrefix(i){let e=new Date;return e.setTime(As()),`[${uo(e)}] <${Vt[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){E(Vt[i])||(this._logLevel!==i&&this.info("setLogLevel",i),this._logLevel=i)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(i){if(te(i))return i;try{return i instanceof Error?i.toString():JSON.stringify(i)}catch(e){return""}}log(i,e,t=!0,r,s){var c;e.unshift(this.getPrefix(i));let n={log:e.reduce((l,u)=>`${l} ${this.logChunkToString(u)}`.trim(),""),level:i,userId:r,sdkAppId:s,forAllJoinedClients:t};if(A.emit(C.LOG,{log:n}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(n),i<this._logLevel)return;let a=((c=Vt[i])==null?void 0:c.toLowerCase())||"info";Oa.PRINT_LOG_TAG?console[a](bg,vg,Ng,...e):console[a](...e)}debug(...i){this.log(1,i)}info(...i){this.log(2,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}createLogger(i){return new bo(i)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;Vt[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}};d(Oa,"PRINT_LOG_TAG",!(Ie||pe||Kd));var dl=Oa,y=new dl;var Dg=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,o=>{let i=Math.random()*16|0;return(o=="x"?i:i&3|8).toString(16)})},zs=Dg;var ll=class{constructor(){d(this,"_prefix","TRTC");d(this,"_queue",new Map)}getRealKey(i){return`${this._prefix}_${i}`}checkStorage(){if(!Hi())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix))try{let r=localStorage.getItem(t);if(!r)return!1;let s=JSON.parse(r);if(s&&s.expiresIn<Date.now())return!0}catch(r){return!1}return!1}).forEach(t=>localStorage.removeItem(t))}doFlush(){if(Hi())try{for(let[i,e]of this._queue)localStorage.setItem(i,JSON.stringify(e))}catch(i){y.warn(i)}}getItem(i){if(!Hi())return null;try{let e=localStorage.getItem(this.getRealKey(i));if(!e)return null;let t=JSON.parse(e);return t&&t.expiresIn>=Date.now()?t.value:null}catch(e){y.warn(e)}}setItem(i,e){if(Hi())try{let t={expiresIn:Date.now()+Xn,value:e};this._queue.set(this.getRealKey(i),t)}catch(t){y.warn(t)}}deleteItem(i){if(!Hi())return!1;try{return i=this.getRealKey(i),this._queue.delete(i),localStorage.removeItem(i),!0}catch(e){return y.warn(e),!1}}clear(){if(Hi())try{localStorage.clear()}catch(i){y.warn(i)}}},Bo=new ll;var Ti={};Mi(Ti,{HTTPS_API:()=>Yg,IS_GET_CAPABILITIES_FROM_INPUTDEVICE_SUPPORTED:()=>Pl,IS_GET_CAPABILITIES_SUPPORTED:()=>Ll,IS_GET_SETTINGS_SUPPORTED:()=>gi,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>xl,IS_INSERTABLE_STREAM_SUPPORTED:()=>qi,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>ja,IS_RTC_RTP_SENDER_SUPPORTED:()=>tn,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>Jo,IS_SEI_SUPPORTED:()=>on,IS_SPC_SUPPORTED:()=>Wo,basis:()=>tT,capabilityCheck:()=>Ul,checkSystemRequirementsInternal:()=>Wa,decodeSupportStatus:()=>Ga,detectVideoCodecCapabilities:()=>Bl,detectVideoDecoderCapabilities:()=>tp,detectVideoEncoderCapabilities:()=>ep,encodeSupportStatus:()=>kl,getBrowserInfo:()=>Jg,getDisplayResolution:()=>Jm,isAddTransceiverSupported:()=>ut,isBrowserSupported:()=>Ol,isCanvasCaptureStreamAPISupported:()=>Xm,isCanvasSmallStreamSupported:()=>Ja,isGetReceiversSupported:()=>Gr,isGetSendersSupported:()=>_r,isGetTransceiversSupported:()=>_i,isGetUserMediaSupported:()=>qm,isMediaDevicesSupported:()=>$a,isMediaSessionSupported:()=>Ym,isMediaStreamTrackProcessorSupported:()=>Ks,isReplaceTrackSupported:()=>wl,isRequestVideoFrameCallbackSupported:()=>Wr,isSIMDSupported:()=>eT,isScaleResolutionDownBySupported:()=>zm,isScreenCaptureApiAvailable:()=>en,isSelectedCandidatePair:()=>fr,isSetParametersSupported:()=>rn,isSetSinkIdSupported:()=>Xg,isSmallStreamSupported:()=>qa,isStopTransceiverSupported:()=>Kg,isTRTCSupported:()=>jg,isUnifiedPlanDefault:()=>Zg,isUsedInHttpProtocol:()=>Ji,isWebAudioSupported:()=>jm,isWebCodecSupported:()=>Qm,isWebCodecsSupported:()=>Ml,isWebRTCSupported:()=>Vl,isWebTransportSupported:()=>Zm});var Cl={};Mi(Cl,{AUDIO_LEVEL_SCALE:()=>It,AudioCodecPipelineType:()=>Sl,AudioDecoderDowngradeState:()=>pl,AudioPlayerMode:()=>Tl,AudioType:()=>bm,BASIC_TYPE:()=>Gi,BannedReason:()=>El,CONNECTION_CLOSED_REASON:()=>hl,CheckPermissionType:()=>Al,ClientEvent:()=>Cm,CodecType:()=>Mm,ConnectionEvent:()=>Qt,ConnectionState:()=>St,DECODE_FAILED_ERROR_CODE:()=>Il,DeviceType:()=>Pa,FacingMode:()=>wa,FrameWorkType:()=>Ma,LeaveReason:()=>Om,LocalTrackEvent:()=>pr,MULTI_VIDEO_DATA_TYPE:()=>Kt,MediaType:()=>we,MediaTypeLabel:()=>Og,MonitorEventId:()=>Qs,MutedFlag:()=>ym,NetworkQualityValue:()=>gl,PlayerState:()=>Br,ReceiveMode:()=>Dm,RemoteStreamType:()=>lt,RemoteTrackEvent:()=>Fo,RoomEvent:()=>Yt,SMALL_MODE:()=>Ys,SceneNumber:()=>ml,StreamEvent:()=>Rm,StreamType:()=>Nm,SubscribeMediaType:()=>ul,TIMER_TYPE:()=>ti,TRACK_ACTION:()=>_l,TRACK_KIND:()=>fl,TrackEvent:()=>Zt,UserRole:()=>rt,UserRoleNumber:()=>Fr,VideoCodec:()=>ei,VideoCodecPipelineType:()=>La,VideoContentHint:()=>Ho,VideoDecoderDowngradeState:()=>ka,VideoPlayerMode:()=>xa,VideoType:()=>vm});var Ma=(e=>(e[e.WEBRTC=30]="WEBRTC",e[e.WASM=37]="WASM",e))(Ma||{}),Qt=(_=>(_.TRACK_ADDED="track-added",_.TRACK_UPDATED="track-updated",_.TRACK_SUBSCRIBED="track-subscribed",_.STREAM_ADDED="stream-added",_.STREAM_REMOVED="stream-removed",_.STREAM_UPDATED="stream-updated",_.STREAM_PUBLISHED="stream-published",_.STREAM_SUBSCRIBED="stream-subscribed",_.STREAM_UNSUBSCRIBED="stream-unsubscribed",_.STATE_CHANGED="state-changed",_.ERROR="error",_.CONNECTION_STATE_CHANGED="connection-state-changed",_.FIREWALL_RESTRICTION="firewall-restriction",_.SEI_MESSAGE="sei-message",_.CLOSED="closed",_))(Qt||{}),hl=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(hl||{}),Cm=(S=>(S.STREAM_ADDED="stream-added",S.STREAM_REMOVED="stream-removed",S.STREAM_UPDATED="stream-updated",S.STREAM_SUBSCRIBED="stream-subscribed",S.CONNECTION_STATE_CHANGED="connection-state-changed",S.PEER_JOIN="peer-join",S.PEER_LEAVE="peer-leave",S.MUTE_AUDIO="mute-audio",S.MUTE_VIDEO="mute-video",S.UNMUTE_AUDIO="unmute-audio",S.UNMUTE_VIDEO="unmute-video",S.CLIENT_BANNED="client-banned",S.NETWORK_QUALITY="network-quality",S.AUDIO_VOLUME="audio-volume",S.SEI_MESSAGE="sei-message",S.ERROR="error",S))(Cm||{}),Rm=(s=>(s.PLAYER_STATE_CHANGED="player-state-changed",s.SCREEN_SHARING_STOPPED="screen-sharing-stopped",s.CONNECTION_STATE_CHANGED="connection-state-changed",s.DEVICE_AUTO_RECOVERED="device-auto-recovered",s.ERROR="error",s))(Rm||{}),pr=(c=>(c.DEVICE_AUTO_RECOVERED="1",c.DEVICE_RECOVER_FAILED="5",c.DEVICE_CHANGED="2",c.ERROR="3",c.PUBLISH_STATE_CHANGED="4",c.ENCODE_FAILED="6",c.TRACK_ENDED="7",c.RENDER="render",c))(pr||{}),Br=(t=>(t.PAUSED="PAUSED",t.PLAYING="PLAYING",t.STOPPED="STOPPED",t))(Br||{}),Yt=(Q=>(Q.PEER_JOIN="peer-join",Q.PEER_LEAVE="peer-leave",Q.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",Q.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",Q.BANNED="banned",Q.NETWORK_QUALITY="network-quality",Q.AUDIO_VOLUME="audio-volume",Q.SEI_MESSAGE="sei-message",Q.ERROR="error",Q.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",Q.REMOTE_PUBLISHED="remote-published",Q.REMOTE_UNPUBLISHED="remote-unpublished",Q.FIREWALL_RESTRICTION="firewall-restriction",Q.HEARTBEAT_REPORT="heartbeat-report",Q.CUSTOM_MESSAGE="custom-message",Q.LAYER_DATA="layerData",Q.FIRST_VIDEO_FRAME="first-video-frame",Q.DUMP="dump",Q.AUDIO_FRAME="audio-frame",Q.SUBSCRIBE_SMALL_VIDEO_CHANGED="subscribe-small-video-changed",Q.LOCAL_PUBLISH_FLAG_CHANGED="local-publish-flag-changed",Q))(Yt||{}),Zt=(c=>(c.PLAYER_STATE_CHANGED="player-state-changed",c.MUTE="mute",c.UNMUTE="unmute",c.ERROR="error",c.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",c.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",c.FIRST_VIDEO_FRAME="first-video-frame",c.VIDEO_SIZE_CHANGED="video-size-changed",c))(Zt||{}),Fo=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(Fo||{}),ym=(a=>(a[a.VIDEO=1]="VIDEO",a[a.SMALL=2]="SMALL",a[a.AUX=4]="AUX",a[a.AUDIO=8]="AUDIO",a[a.VIDEO_MUTE=16]="VIDEO_MUTE",a[a.AUX_MUTE=32]="AUX_MUTE",a[a.AUDIO_MUTE=64]="AUDIO_MUTE",a))(ym||{}),ml=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(ml||{}),Fr=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(Fr||{}),rt=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(rt||{}),St=(s=>(s.CONNECTED="CONNECTED",s.DISCONNECTED="DISCONNECTED",s.CONNECTING="CONNECTING",s.RECONNECTED="RECONNECTED",s.RECONNECTING="RECONNECTING",s))(St||{}),pl=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(pl||{}),ka=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(ka||{}),fl=(t=>(t.AUDIO="audio",t.VIDEO="video",t.AUXILIARY="auxVideo",t))(fl||{}),_l=(e=>(e.ADD="add",e.REMOVE="remove",e))(_l||{}),we=(s=>(s[s.NULL=0]="NULL",s[s.AUDIO=1]="AUDIO",s[s.AUX_VIDEO=2]="AUX_VIDEO",s[s.BIG_VIDEO=4]="BIG_VIDEO",s[s.SMALL_VIDEO=8]="SMALL_VIDEO",s))(we||{}),Og={1:"audio",2:"auxVideo",4:"video"},bm=(i=>(i[i.opus=111]="opus",i))(bm||{}),vm=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(vm||{}),Nm=(e=>(e.Big="big",e.Small="small",e))(Nm||{}),lt=(e=>(e.Main="main",e.Aux="auxiliary",e))(lt||{}),Kt=(s=>(s[s.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",s[s.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",s[s.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",s[s.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",s[s.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",s))(Kt||{}),Qs=(M=>(M[M.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",M[M.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",M[M.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",M[M.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",M[M.MUTE_AUDIO=32772]="MUTE_AUDIO",M[M.MUTE_VIDEO=32773]="MUTE_VIDEO",M[M.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",M[M.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",M[M.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",M[M.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",M[M.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",M[M.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",M[M.SWITCH_CAMERA=32780]="SWITCH_CAMERA",M[M.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",M[M.REPLACE_VIDEO=32782]="REPLACE_VIDEO",M[M.REPLACE_AUDIO=32783]="REPLACE_AUDIO",M[M.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",M[M.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",M[M.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",M[M.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",M[M.JOIN=32788]="JOIN",M[M.LEAVE=32789]="LEAVE",M[M.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",M[M.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",M[M.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",M[M.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",M[M.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",M[M.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",M[M.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",M[M.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",M[M.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",M[M.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",M[M.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",M[M.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",M[M.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",M[M.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",M[M.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",M[M.PUBLISH_AUX=32805]="PUBLISH_AUX",M[M.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",M[M.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",M[M.VIDEO_ENCODER=4004]="VIDEO_ENCODER",M[M.VIDEO_DECODER=4005]="VIDEO_DECODER",M))(Qs||{}),gl=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.EXCELLENT=1]="EXCELLENT",a[a.GOOD=2]="GOOD",a[a.POOR=3]="POOR",a[a.BAD=4]="BAD",a[a.VERY_BAD=5]="VERY_BAD",a[a.DISCONNECTED=6]="DISCONNECTED",a))(gl||{}),Dm=(r=>(r[r.MANUAL=0]="MANUAL",r[r.AUTO_AUDIO=1]="AUTO_AUDIO",r[r.AUTO_VIDEO=2]="AUTO_VIDEO",r[r.AUTO_ALL=3]="AUTO_ALL",r))(Dm||{}),wa=(e=>(e.user="user",e.environment="environment",e))(wa||{}),xa=(t=>(t[t.ELEMENT=0]="ELEMENT",t[t.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",t[t.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",t))(xa||{}),Tl=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(Tl||{}),El=(r=>(r.BANNED="banned",r.KICK="kick",r.USER_TIME_OUT="user_time_out",r.ROOM_DISBAND="room_disband",r))(El||{}),Om=(l=>(l[l.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",l[l.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",l[l.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",l[l.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",l[l.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",l[l.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",l[l.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",l[l.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",l[l.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",l))(Om||{}),It=1e8,ul=class{constructor(){d(this,"mediaType",0)}set audio(i){i?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(i){i?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(i){i?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(i){i?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},Gi=(s=>(s.String="string",s.Number="number",s.Boolean="boolean",s.Array="array",s.Object="object",s))(Gi||{}),ei=(s=>(s.H264="h264",s.H265="h265",s.VP8="vp8",s.VP9="vp9",s.AV1="av1",s))(ei||{}),La=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.DUMP=1]="DUMP",r[r.SEI=2]="SEI",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(La||{}),Sl=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",r[r.DUMP=2]="DUMP",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(Sl||{}),Mm=(t=>(t.WebRTC="webrtc",t.WebCodecs="webcodecs",t.WebAssembly="webassembly",t))(Mm||{}),Il=(m=>(m[m.SUCCESS=0]="SUCCESS",m[m.FAILED=1]="FAILED",m[m.WEBCODEC_INIT=2]="WEBCODEC_INIT",m[m.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",m[m.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",m[m.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",m[m.WASM_INIT=6]="WASM_INIT",m[m.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",m[m.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",m[m.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",m[m.TEST=10]="TEST",m[m.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",m))(Il||{}),Ho=(r=>(r.NONE="",r.DETAIL="detail",r.MOTION="motion",r.TEXT="text",r))(Ho||{}),ti=(s=>(s.INTERVAL="interval",s.TIMEOUT="timeout",s.RAF="raf",s.RIC="ric",s.INTERVAL_IN_WORKER="intervalInWorker",s))(ti||{}),Ys=(e=>(e.CANVAS="canvas",e.API="api",e))(Ys||{}),Al=(r=>(r[r.NONE=0]="NONE",r[r.MICROPHONE=1]="MICROPHONE",r[r.CAMERA=2]="CAMERA",r[r.BOTH=3]="BOTH",r))(Al||{}),Pa=(e=>(e.CAMERA="camera",e.MICROPHONE="microphone",e))(Pa||{});var L={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},$e={AVOID_REPEATED_CALL(o){return`previous ${o.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s="";return Array.isArray(i.type)?s=i.type.join("|"):s=i.type,`'${r}' must be type of ${s} when calling ${e}(), received type: ${ye(t)}.`},INVALID_PARAMETER_EMPTY({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${s} when calling ${e}(), received type: ${ye(t)}.`},INVALID_PARAMETER_RANGE({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_MIN({key:o,rule:i,fnName:e,value:t}){return`the min value of ${o||i.name} is ${i.min}, received: ${t}.`},INVALID_PARAMETER_MAX({key:o,rule:i,fnName:e,value:t}){return`the max value of ${o||i.name} is ${i.max}, received: ${t}.`},API_CALL_TIMEOUT(o){return`${o.commandDesc||o.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(o){return`SignalChannel setup failure: (errorCode: ${o.errorCode}, errorMsg: ${o.errorMsg} }).`},ERROR_MESSAGE(o){let i=`${o.type} failed`;return o.message&&(i=`${i}: ${o.message}.`),i},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(o){return`exchange sdp failed ${o.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(o){return`'${o}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(o){return`'${o}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:o,code:i}){return`Failed to join room - ${o} code: ${i}`},REJOIN_ROOM_FAILED(o){return`reJoin room: ${o.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(o){return`duplicate ${o} stream publishing, please unpublish your prev ${o} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:o,userId:i,streamType:e}){return`failed to subscribe ${i} ${e} stream, reason: ${o}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(o){return`switchRole failed, errCode: ${o.code} errMsg: ${o.message}.`},CLIENT_BANNED(o){return`client was banned because of ${o.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(o){return`startPublishCDNStream failed, errMsg: ${o.message}.`},STOP_PUBLISH_CDN_FAILED(o){return`stopPublishCDNStream failed, errMsg: ${o.message}.`},INVALID_STREAM_ID(o){return`'${o}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(o){return`cannot replace ${o.kind} track because stream has not ${o.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(o){return`startMixTranscode failed, errMsg: ${o.message}.`},STOP_MIX_TRANSCODE_FAILED(o){return`stopMixTranscode failed, errMsg: ${o.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(o){return`'${o}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:o,fnName:i})=>`'${o}' is not found in the document object when calling ${i}().`,INVALID_ELEMENT_ID_TYPE:({key:o,fnName:i,type:e})=>`the element corresponding to '${o}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`,PLAY_FAILED:o=>`${o.media} play failed, browser exception: ${o.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(o){return`${o}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(o){return`${o.signalResponse} failed, response code is ${o.code} , errMsg: ${o.message}.`},CATCH_HANDLER_ERROR({name:o,event:i}){return`an error was caught in ${o}.on('${i}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:o}){return`experimental api ${o} does not exist.`},REPEAT_JOIN:o=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:o}){return`failed to call ${o}() because client was destroyed.`},SEI_NOT_SUPPORT:o=>`not support to sendSEIMessage${o===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:o,name:i,timesInSecond:e,maxSizeInSecond:t})=>`api ${i} call ${o?"size":"times"} is over ${o?`${t} bytes`:e} in a second.`,CONNECTION_ABORTED(o){return`connection aborted due to: ${o}`},API_CALL_ABORTED(o){let i;return o.message.includes("REMOTE_STREAM_NOT_EXIST")?i=`Subscribe ${o.userId} ${o.streamType} stream aborted, reason: remote user ${o.userId} unpublished stream.`:i=`API aborted, reason: ${o.message}`,i},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:o=>`'streamType' is required when 'userId' is not '*', calling ${o}()`};var km=(o,i)=>i?`${di}/${o}/${i}`:`${di}/${o}/index.html`;var Mg=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let o=localStorage==null?void 0:localStorage.getItem(gd);if(o){o=JSON.parse(o);let i=document.createElement("script");i.type="text/javascript",i.text=o.message,document.body.appendChild(i);let e=window.TRTC_ERROR_INFO,t=window.TRTC_ERROR_LINK;return document.body.removeChild(i),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:t}}return{}};function V(o){let{key:i,data:e,link:t,addDocLink:r=!0}=o,s="",n="",a="";ae($e[i])?s=$e[i](e):te($e[i])&&(s=$e[i]);let{TRTC_ERROR_INFO:c,TRTC_ERROR_LINK:l}=Mg();t?a=`${t.className}.html#${t.fnName}`:l&&l[i]&&(ae(l[i])?a=l[i](e):te(l[i])&&(a=l[i]));let u=s;return Ft()&&(c&&c[i]&&(ae(c[i])?n=c[i](e):te(c[i])&&(n=c[i])),n&&(r?u=`${n}
|
|
7
|
-
\u8BF7\u67E5\u770B\u6587\u6863: ${km("zh-cn",a)}
|
|
3
|
+
`}});var $f=Bn(Zr=>{"use strict";var Yo=Uf(),L_=Ff(),U_=Cd();Zr.grammar=U_;Zr.write=L_;Zr.parse=Yo.parse;Zr.parseParams=Yo.parseParams;Zr.parseFmtpConfig=Yo.parseFmtpConfig;Zr.parsePayloads=Yo.parsePayloads;Zr.parseRemoteCandidates=Yo.parseRemoteCandidates;Zr.parseImageAttributes=Yo.parseImageAttributes;Zr.parseSimulcastStreamList=Yo.parseSimulcastStreamList});var Vh=(ie=>(ie[ie.INVALID_PARAMETER=4096]="INVALID_PARAMETER",ie[ie.INVALID_OPERATION=4097]="INVALID_OPERATION",ie[ie.NOT_SUPPORTED=4098]="NOT_SUPPORTED",ie[ie.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",ie[ie.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",ie[ie.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",ie[ie.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",ie[ie.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",ie[ie.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",ie[ie.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",ie[ie.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",ie[ie.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",ie[ie.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",ie[ie.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",ie[ie.CLIENT_BANNED=16448]="CLIENT_BANNED",ie[ie.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",ie[ie.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",ie[ie.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",ie[ie.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",ie[ie.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",ie[ie.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",ie[ie.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",ie[ie.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",ie[ie.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",ie[ie.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",ie[ie.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",ie[ie.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",ie[ie.API_CALL_ABORTED=16461]="API_CALL_ABORTED",ie[ie.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",ie[ie.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",ie[ie.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",ie[ie.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",ie[ie.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",ie[ie.UNKNOWN=65535]="UNKNOWN",ie))(Vh||{}),q=Vh;var aT=function(i){for(let t in q)if(q[t]===i)return t;return"UNKNOWN"},Hn=class extends Error{constructor({name:e="RtcError",message:r,code:o=q.UNKNOWN,extraCode:s=0,constraint:n}){let a=`<${aT(o)} 0x${o.toString(16)}>`,u=`${r}${n?` constraint: ${n}`:""}${r!=null&&r.includes(a)?"":` ${a}`}`;super(u);l(this,"code");l(this,"extraCode");l(this,"message");l(this,"originMessage");l(this,"name");l(this,"constraint");this.code=o,this.extraCode=s,this.name=e,this.message=u,this.constraint=n,this.originMessage=r}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},de=Hn;var EA=new Date().getTime(),cT=0;var Wn=function(){return new Date().getTime()+cT},Pc=function(){let i=new Date;return i.setTime(Wn()),i.toLocaleString()},Ns=function(i){let t=String(i.getMilliseconds());return"padStart"in String.prototype&&(t=t.toString().padStart(3,"0")),`${i.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${t}`};var zr={};li(zr,{REPORT_TYPE:()=>Bs,buildSSOPackage:()=>Ti,bytes2ms:()=>Xh,calculateScaleResolutionDownNumber:()=>Kc,convertObjectNumberToInt:()=>ra,copyProperties:()=>Jh,deepClone:()=>Fo,deepCloneBasic:()=>zc,deepMerge:()=>Nr,delay:()=>ia,fibonacci:()=>$o,formatedTime:()=>Xc,getConstructorName:()=>Ls,getContainerFromElement:()=>sf,getEnv:()=>jh,getInternalVersion:()=>rf,getLoggerUrl:()=>Ei,getMediaStreamTrackInfo:()=>Zc,getMuteStateFromFlag:()=>Ho,getNetworkType:()=>Zn,getNumNetworkType:()=>Jc,getReconnectionTimeout:()=>Yh,getStringByteLength:()=>nf,getTurnServer:()=>of,getUint32Version:()=>Qc,getValueType:()=>at,getViewListFromView:()=>Fs,glog:()=>Kn,ipv4ToUint32:()=>Vs,isArray:()=>ot,isAudioWorkletSupported:()=>ef,isBoolean:()=>Xe,isConstructor:()=>Bo,isEmpty:()=>Us,isFunction:()=>We,isLangChinese:()=>Cr,isMediaStreamTrack:()=>Zh,isNumber:()=>Le,isObject:()=>ir,isOverseaSdkAppId:()=>gi,isPlainObject:()=>Ft,isPortrait:()=>Vl,isPromise:()=>ro,isRemoteTrack:()=>Kh,isRotate90Or270:()=>or,isSetSinkIdSupported:()=>tf,isString:()=>De,isUndefined:()=>O,loadImage:()=>$s,loadVideo:()=>af,ms2bytes:()=>Qh,ms2samples:()=>Ul,normalizeUrl:()=>Wo,performanceNow:()=>Te,promiseAny:()=>ea,samples2ms:()=>Ll,setNetworkType:()=>zh,stringify:()=>lr,stringifyIncludeValue:()=>ta,throttlePromise:()=>Yc});var vl={};li(vl,{AUDIO_MUTE_BIT:()=>$c,AUDIO_STAT_BIT:()=>Ms,AUX_STAT_BIT:()=>zn,AUX_STREAM_MSID:()=>IT,BACKEND_ENV:()=>Fc,BASE_DOC_URL:()=>Gr,BASE_HOST:()=>Fh,CAPABILITIES_KEYS:()=>Wc,CLASS_NAME:()=>GT,CLOUD_CONSOLE_URL:()=>mT,CROSS_ROOM_BIT:()=>TT,DATA_FREEZE_TIMING:()=>Hc,DOC_URL:()=>pT,DTLS_STATE_UNKNOWN:()=>wT,ENV_NAME:()=>pi,EXCHANGE_SDP_TIMEOUT:()=>LT,IS_WORKER:()=>Ds,IS_WORKLET:()=>Gn,KIBANA_EVENT:()=>hi,LOCAL_STREAM_PUBLISH_STATE:()=>Bh,LOGGER_CMD_TYPE:()=>to,LOGGER_DOMAIN:()=>_l,LOGGER_DOMAIN_OVERSEA:()=>Il,LOG_LEVEL:()=>Rr,LOG_LEVEL_NAME:()=>qT,MAIN_STREAM_MSID:()=>_T,MAX_RTT:()=>Xn,MICROPHONE_COMMUNICATIONS:()=>jT,MICROPHONE_DEFAULT:()=>Vo,MUTE_ALL_BIT:()=>ET,NAME:()=>M,NETWORK_TYPE:()=>Lo,NOT_SUPPORTED_H264:()=>VT,PAUSED_RETRY_COUNT:()=>Uo,PEERCONNECTION_CONNECTING_TIMEOUT:()=>HT,PEER_CONNECTION_STATE:()=>MT,PEER_LEAVE_REASON:()=>Hh,RECOVER_CAPTURE_INTERVAL:()=>Os,REMOTE_STREAM_TYPE_AUX:()=>yT,REMOTE_STREAM_TYPE_MAIN:()=>ST,RENDER_FREEZE_TIMING:()=>FT,SCHEDULE_DOMAIN:()=>fi,SCHEDULE_TIMEOUT:()=>WT,SDP_SEMANTICS_PLAN_B:()=>UT,SDP_SEMANTICS_UNIFIED_PLAN:()=>Rl,SECOND_HOST:()=>uT,SIGNAL_PING_PONG_INTERVAL:()=>fT,SIGNAL_PING_TIMEOUT:()=>hT,SIGNAL_RECONNECTION_COUNT:()=>xT,SMALL_STAT_BIT:()=>Al,SPEAKER_DEFAULT:()=>Jn,STORAGE_EXPIRES_TIME:()=>Lc,STREAM_TYPE_BIG:()=>$T,STREAM_TYPE_SMALL:()=>BT,SUBSCRIBE_SMALL_RETRY_COUNT:()=>zT,SYNC_USER_LIST_INTERVAL:()=>kT,Scene:()=>jr,THIRD_HOST:()=>lT,TRANSPORT_DIRECTION:()=>gT,TRTC_ERROR_ASSISTANCE:()=>Sl,TRTC_QUALITY_BAD:()=>CT,TRTC_QUALITY_DISCONNECTED:()=>DT,TRTC_QUALITY_EXCELLENT:()=>bT,TRTC_QUALITY_GOOD:()=>RT,TRTC_QUALITY_POOR:()=>vT,TRTC_QUALITY_UNKNOWN:()=>AT,TRTC_QUALITY_VERY_BAD:()=>NT,UPDATE_OFFER_TIMEOUT:()=>PT,VIDEO_MUTE_BIT:()=>Bc,VIDEO_STAT_BIT:()=>ws,audioProfileMap:()=>Uc,defaultBigVideoProfile:()=>qn,defaultSmallVideoProfile:()=>yl,getRetryCount:()=>OT,getScriptDir:()=>dT,innerVersion:()=>El,loggerProxy:()=>jn,screenProfileMap:()=>Vc,setLoggerProxy:()=>Po,setRetryCount:()=>bl,setVersion:()=>Tl,version:()=>nt,videoProfileMap:()=>vr});var El="4.15.00.1600",nt="5.0.0";function Tl(i){nt=i;let[t,e,r]=i.split(".").map(o=>parseInt(o,10));El=`${t}.${Math.min(15,e)}.${Math.min(15,r)}.${e.toString().padStart(2,"0")}${r.toString().padStart(2,"0")}`}var Ds=typeof importScripts!="undefined",Gn=typeof registerProcessor!="undefined",dT=()=>{let i=Ds?self.location.href:document.currentScript.src;return i.substring(0,i.lastIndexOf("/")+1)},jn="",Po=i=>jn=i,Fh="web.sdk.qcloud.com",uT="web.sdk.tencent.cn",lT="web.sdk.cloud.tencent.cn",mT="https://console.cloud.tencent.com/trtc",Gr=`https://${Fh}/trtc/webrtc/v5/doc`,pT=`${Gr}/zh-cn/`,_l="https://yun.tim.qq.com",Il="https://apisgp.my-imcloud.com",Sl="trtc_error_assistance",to={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},pi={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},Rr=(n=>(n[n.TRACE=0]="TRACE",n[n.DEBUG=1]="DEBUG",n[n.INFO=2]="INFO",n[n.WARN=3]="WARN",n[n.ERROR=4]="ERROR",n[n.NONE=5]="NONE",n))(Rr||{}),hT=18e3,fT=2e3,Lo={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},Lc=7*24*3600*1e3,Uc={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},vr={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},qn=vr["480p_2"],yl=vr["120p_2"],Vc={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},M={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture",RESIZE:"resize"},gT={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},Fc={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},jr=(e=>(e.LIVE="live",e.RTC="rtc",e))(jr||{}),ws=1,Al=2,zn=4,Ms=8,$c=64,Bc=16,ET=112,TT=128,_T="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",IT="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",ST=M.MAIN,yT=M.AUXILIARY,AT=0,bT=1,RT=2,vT=3,CT=4,NT=5,DT=6,wT="unknown",MT={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},$h=1/0;function bl(i){$h=i}function OT(){return $h}var xT=30,hi={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},kT=1e4,PT=1e4,LT=1e4,Rl="unified-plan",UT="plan-b",VT=1028,Bh=(r=>(r[r.UNPUBLISH=-1]="UNPUBLISH",r[r.PUBLISHING=0]="PUBLISHING",r[r.PUBLISHED=1]="PUBLISHED",r))(Bh||{}),Hc=500,FT=1e3,$T=M.BIG,BT=M.SMALL,HT=10*1e3,fi={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},WT=2e3,GT={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},Uo=5,Vo="default",Jn=Vo,jT="communications",qT=Object.keys(Rr),Hh=["normal leave","timeout leave","kick","role change"],zT=10,Os=2e3,Wc=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],Xn=10*1e3;var JT=function(i,t,e,r){function o(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function a(h){try{m(r.next(h))}catch(f){n(f)}}function u(h){try{m(r.throw(h))}catch(f){n(f)}}function m(h){h.done?s(h.value):o(h.value).then(a,u)}m((r=r.apply(i,t||[])).next())})},Cl=Symbol(32),Nl=Symbol(16),Dl=Symbol(8),qr=class{constructor(t){this.g=t,this.consumed=0,t&&(this.need=t.next().value)}setG(t){this.g=t,this.demand(t.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(t,e){return e&&this.consume(),this.need=t,this.flush()}read(t){return JT(this,void 0,void 0,function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise((e,r)=>{var o;this.reject=r,this.resolve=n=>{delete this.lastReadPromise,delete this.resolve,delete this.need,e(n)},this.demand(t,!0)||(o=this.pull)===null||o===void 0||o.call(this,t)})})}readU32(){return this.read(Cl)}readU16(){return this.read(Nl)}readU8(){return this.read(Dl)}close(){var t;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),(t=this.reject)===null||t===void 0||t.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let t=null,e=this.buffer.subarray(this.consumed),r=0,o=s=>e.length<(r=s);if(typeof this.need=="number"){if(o(this.need))return;t=e.subarray(0,r)}else if(this.need===Cl){if(o(4))return;t=e[0]<<24|e[1]<<16|e[2]<<8|e[3]}else if(this.need===Nl){if(o(2))return;t=e[0]<<8|e[1]}else if(this.need===Dl){if(o(1))return;t=e[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(o(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(e.subarray(0,r)),t=this.need}else if(this.g){this.g.throw(new Error("Unsupported type"));return}}else{if(o(this.need.byteLength))return;new Uint8Array(this.need).set(e.subarray(0,r)),t=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(t).value,!0):this.resolve&&this.resolve(t),t}write(t){if(t instanceof Uint8Array?this.malloc(t.length).set(t):"buffer"in t?this.malloc(t.byteLength).set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)):this.malloc(t.byteLength).set(new Uint8Array(t)),this.g||this.resolve)this.flush();else return new Promise(e=>this.pull=e)}writeU32(t){this.malloc(4).set([t>>24&255,t>>16&255,t>>8&255,t&255]),this.flush()}writeU16(t){this.malloc(2).set([t>>8&255,t&255]),this.flush()}writeU8(t){this.malloc(1)[0]=t,this.flush()}malloc(t){if(this.buffer){let e=this.buffer.length,r=e+t;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{let o=new Uint8Array(r);o.set(this.buffer),this.buffer=o}return this.buffer.subarray(e,r)}else return this.buffer=new Uint8Array(t),this.buffer}};qr.U32=Cl;qr.U16=Nl;qr.U8=Dl;var XT=128,QT=127,SA=~QT,yA=Math.pow(2,31);function wl(i){let t=new qr;for(;i>=128;)t.malloc(1)[0]=i&255|XT,i>>>=7;return t.malloc(1)[0]=i&255,t.buffer||new Uint8Array(0)}function Gc(i,t=0){let e=new qr,r=t<<3;switch(typeof i){case"boolean":let o=e.malloc(2);o[0]=r,o[1]=i?1:0;break;case"number":e.malloc(1)[0]=r,e.write(wl(i));break;case"string":e.malloc(1)[0]=r|2;let s=new TextEncoder().encode(i);e.write(wl(s.length));let n=e.malloc(s.length);for(let u=0;u<s.length;u++)n[u]=s[u];break;case"object":let a=new qr;if(Array.isArray(i))for(let u=0;u<i.length;u++){let m=Gc(i[u],u+1);m&&a.write(m)}else{let u=1;for(let m in i){let h=Gc(i[m],u++);h&&a.write(h)}}t===0?a.buffer&&e.write(a.buffer):(e.malloc(1)[0]=r|2,a.buffer&&(e.write(wl(a.buffer.length)),e.write(a.buffer)))}return e.buffer||new Uint8Array(0)}var Qn=class{constructor(){l(this,"buffer");this.buffer=[]}get data(){return this.buffer}get length(){return this.buffer.length}writeInt32(t){this.buffer.push(t>>>24&255),this.buffer.push(t>>>16&255),this.buffer.push(t>>>8&255),this.buffer.push(t&255)}writeInt16(t){this.buffer.push(t>>>8&255),this.buffer.push(t&255)}writeByte(t){this.buffer.push(t&255)}writeBytes(t){for(let e=0;e<t.length;e++)this.buffer.push(t[e])}};function Ml(i,t,e){i[e]=t>>>24&255,i[e+1]=t>>>16&255,i[e+2]=t>>>8&255,i[e+3]=t&255}function Vt(i,t){return i[t]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3]}function Ol(i,t){return i[t]}function xs(i,t,e){return new TextDecoder().decode(YT(i,t,e))}function YT(i,t,e){return i.slice(t,t+e)}var xl=0,jc=2654435769,qc=16,Pl=4,ks=2,Ps=7;function ZT(i,t,e,r="AVQualityReportSvc.C2S",o=2e3,s=2,n=30){return{version:o,encryption:s,d2:"",d2Len:0,uinType:n,uin:"",uinLen:0,reqHead:{seqNumber:e,appId:i,appidAtThird:new Uint8Array(0),a2:"",a2Len:0,serviceCmd:r,serviceCmdLen:0,cookie:"",cookieLen:0,imei:"",imeiLen:0,ksid:"",ksidLen:0,clientVersionInfo:"",clientVersionInfoLen:0},busiBuff:t}}function Wh(i,t){let e=new Qn,r=ZT(t,i,xl);xl=xl+1&2147483647,e.writeInt32(0),e.writeInt32(r.version),e.writeByte(r.encryption);let o=new TextEncoder().encode(r.d2);e.writeInt32(o.length+4),o&&e.writeBytes(o),e.writeByte(r.uinType);let s=new TextEncoder().encode(r.uin);e.writeInt32(s.length+4),s.length&&e.writeBytes(s);let n=new Qn;n.writeInt32(0),n.writeInt32(r.reqHead.seqNumber),n.writeInt32(r.reqHead.appId),n.writeByte(r.reqHead.appId>>>24&255),n.writeByte(r.reqHead.appId>>>16&255),n.writeByte(r.reqHead.appId>>>8&255),n.writeByte(r.reqHead.appId&255);for(let te=4;te<16;te++)n.writeByte(0);let a=new TextEncoder().encode(r.reqHead.a2);n.writeInt32(a.length+4),a.length&&n.writeBytes(a);let u=new TextEncoder().encode(r.reqHead.serviceCmd);n.writeInt32(u.length+4),u.length&&n.writeBytes(u);let m=new TextEncoder().encode(r.reqHead.cookie);n.writeInt32(m.length+4),m.length&&n.writeBytes(m);let h=new TextEncoder().encode(r.reqHead.imei);n.writeInt32(h.length+4),h.length&&n.writeBytes(h);let f=new TextEncoder().encode(r.reqHead.ksid);n.writeInt32(f.length+4),f.length&&n.writeBytes(f);let T=new TextEncoder().encode(r.reqHead.clientVersionInfo);n.writeInt16(T.length+2),T.length&&n.writeBytes(T);let A=n.length;n.data[0]=A>>>24&255,n.data[1]=A>>>16&255,n.data[2]=A>>>8&255,n.data[3]=A&255,De(i)&&(i=new TextEncoder().encode(i)),n.writeInt32(i.length+4),i.length&&n.writeBytes(i);let C=new Uint8Array(n.data),N=null;r.encryption===1?N=new TextEncoder().encode(r.uin):r.encryption===2&&(N=new Uint8Array(16)),N&&(C=KT(C,N)),e.writeBytes(C);let w=new Uint8Array(e.data),x=w.length;return w[0]=x>>>24&255,w[1]=x>>>16&255,w[2]=x>>>8&255,w[3]=x&255,w}function KT(i,t){let e=i.length,o=(e+1+ks+Ps)%8;o&&(o=8-o);let s=e+1+ks+Ps+o,n=new Uint8Array(s),a=0,u=new Uint8Array(8),m=new Uint8Array(8),h=new Uint8Array(8),f=0;u[0]=Math.floor(Math.random()*256)&248|o,f=1;for(let A=0;A<o;A++)u[f]=Math.floor(Math.random()*256)&255,f+=1;for(let A=0;A<ks;)if(f<8&&(u[f]=Math.floor(Math.random()*256)&255,f+=1,A+=1),f===8){kl(u,t,m,h,n,a),a+=8,f=0;for(let C=0;C<8;C++)h[C]=n[a-8+C]}let T=0;for(;T<e;)if(f<8&&(u[f]=i[T],f+=1,T+=1),f===8){kl(u,t,m,h,n,a),a+=8,f=0;for(let A=0;A<8;A++)h[A]=n[a-8+A]}for(let A=0;A<Ps;)if(f<8&&(u[f]=0,f+=1,A+=1),f===8){kl(u,t,m,h,n,a),a+=8,f=0;for(let C=0;C<8;C++)h[C]=n[a-8+C]}return n}function kl(i,t,e,r,o,s){for(let n=0;n<8;n++)i[n]^=r[n];e_(i,t,o,s);for(let n=0;n<8;n++)o[s+n]^=e[n];for(let n=0;n<8;n++)e[n]=i[n]}function e_(i,t,e,r){let o=Vt(i,0),s=Vt(i,4),n=[];for(let u=0;u<4;u++)n[u]=Vt(t,u*4);let a=0;for(let u=0;u<qc;u++)a+=jc,a=a>>>0,o+=(s<<4)+n[0]^s+a^(s>>>5)+n[1],o=o>>>0,s+=(o<<4)+n[2]^o+a^(o>>>5)+n[3],s=s>>>0;Ml(e,o,r),Ml(e,s,r+4)}var jh=function(){return new URLSearchParams(location.search).get("trtc_env")||""},gi=i=>Number(i)<14e8,Ei=function(i,t){let e;jn?e=jn:e=gi(i)?Il:_l;let r=Math.floor(Math.random()*eo(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${r}&sdkappid=${i}&cmdtype=${t}`},Yn="unknown";function Zn(){if(Yn!=="unknown")return Yn;let{userAgent:i,connection:t}=navigator,e=(i.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let r=t&&t.type&&t.type.toLowerCase(),o=t&&t.effectiveType&&t.effectiveType.toLowerCase();return o==="slow-2"&&(o="2g"),r&&(Yn=qh(r,o)),Yn}function qh(i,t){if(Lo[i])return i;switch(i){case"cellular":case"wimax":return t||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function zh(i){Yn=qh(i)}function Jc(){return Lo[Zn()]}function Jh(i,t){for(let e of Reflect.ownKeys(t))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let r=Object.getOwnPropertyDescriptor(t,e)||"";Object.defineProperty(i,e,r)}return i}function Xh(i,t=48e3){return Ll(i/4,t)}function Ll(i,t=48e3){return i*1e3/t}function Qh(i,t=48e3){return Ul(i,t)*4}function Ul(i,t=48e3){return i*t/1e3}var Kn=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},Cr=()=>{let i=navigator.language;return i=i.substring(0,2),i==="zh"},Ft=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function $o(i,t=1,e=1){return i<=1?e:$o(i-1,e,t+e)}function Yh(i){return i>8?30*1e3:$o(i)*1e3}function at(i){return Reflect.apply(Object.prototype.toString,i,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var We=i=>typeof i=="function",O=i=>typeof i=="undefined",De=i=>typeof i=="string",Le=i=>typeof i=="number",Xe=i=>typeof i=="boolean",ir=i=>at(i)==="object",ot=i=>at(i)==="array",Zh=i=>at(i)==="MediaStreamTrack".toLowerCase(),Kh=i=>i.isRemote,ro=i=>at(i)==="promise",Bo=i=>We(i)&&i.prototype.constructor===i,Ls=i=>Bo(i)?i.prototype.constructor.name:"",ef=typeof AudioWorkletNode!="undefined",tf=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype;function ea(i){return new Promise((t,e)=>{let r=[];i.forEach(o=>{o.then(t).catch(s=>{r.push(s),r.length===i.length&&e(r)})})})}function Te(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Gh=i=>+i<10?`0${i}`:i,rf=i=>{let t=i.match(/^\d+\.\d+\.\d+/)[0];if(!t)return i;let e=t.split("."),r=Gh(e[1])+Gh(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${r}`},t_=Object.prototype.hasOwnProperty,{toString:kA}=Object.prototype;function Us(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Ft(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(t_.call(i,t))return!1;return!0}}return!1}function Ho(i,t){return{userId:t,hasAudio:!!(i&Ms),hasVideo:!!(i&ws),hasAuxiliary:!!(i&zn),hasSmall:!!(i&Al),audioMuted:!!(i&$c),videoMuted:!!(i&Bc),audioAvailable:!!(i&Ms)&&!(i&$c),videoAvailable:!!(i&ws)&&!(i&Bc)}}function of(i){let t={urls:i.url.startsWith("turn:")||i.url.startsWith("turns:")?i.url:`turn:${i.url}`};return!O(i.username)&&!O(i.credential)&&(t.username=i.username,t.credential=i.credential,t.credentialType="password",O(i.credentialType)||(t.credentialType=i.credentialType)),t}function Vs(i,t=!0){if(!De(i))return 0;let e=i.split(".");return t?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var Nr=function(i,t,e,r){if(!(ir(i)&&ir(t)))return 0;let o=0,s=Object.keys(t),n;for(let a=0,u=s.length;a<u;a++)if(n=s[a],!(O(t[n])||e&&e.includes(n)))if(ir(i[n])&&ir(t[n]))o+=Nr(i[n],t[n],e,r);else{if(r&&r.includes(t[n]))continue;i[n]!==t[n]&&(i[n]=Fo(t[n]),o+=1)}return o};function Fo(i){if(ot(i)){let t=[];return i.forEach((e,r)=>{t[r]=Fo(e)}),t}if(ir(i)){let t={};return Object.keys(i).forEach(e=>{t[e]=Fo(i[e])}),t}return i}var Fs=i=>{let t=[];if(ot(i))t=[...i];else if(De(i)){let e=document.getElementById(i);e&&t.push(e)}else i&&t.push(i);return t},sf=i=>De(i)?document.getElementById(i):i,r_=i=>{let t=u=>u<10?`0${u}`:`${u}`,e=i.getFullYear(),r=i.getMonth()+1,o=i.getDate(),s=t(i.getHours()),n=t(i.getMinutes()),a=t(i.getSeconds());return`${e}/${r}/${o} ${s}:${n}:${a}`},Xc=()=>r_(new Date);function lr(i,{keysToInclude:t,keysToExclude:e}){try{if(ot(i))return`[${i.map(n=>lr(n,{keysToInclude:t,keysToExclude:e})).join(",")}]`;if(!Ft(i)||!ot(t)&&!ot(e))return JSON.stringify(i);let r={},o=new Set(t),s=new Set(e);return Object.keys(i).forEach(n=>{(s.size===0&&o.has(n)||o.size===0&&!s.has(n))&&(r[n]=Ft(i[n])||ot(i[n])?JSON.parse(lr(i[n],{keysToExclude:e,keysToInclude:t})):i[n])}),JSON.stringify(r)}catch(r){return"{}"}}function ta(i,t=!1){let e=[];return Object.keys(i).forEach(r=>{t===i[r]&&e.push(r)}),lr(i,{keysToInclude:e})}function nf(i){return i.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Vl=()=>{var i,t,e,r;return(i=window.screen)!=null&&i.orientation?!!((r=(e=(t=window.screen)==null?void 0:t.orientation)==null?void 0:e.type)!=null&&r.includes("portrait")):window.orientation===0||window.orientation===180},$s=i=>y(void 0,null,function*(){return new Promise((t,e)=>{let r;if(De(i))r=new Image,r.crossOrigin="anonymous",r.src=i;else if(r=i,r.complete){t(r);return}r.onload=()=>t(r),r.onerror=()=>{e(new de({code:q.INVALID_PARAMETER,message:`load image failed, url: ${i}`}))}})}),Qc=i=>{let t=i.split(".");return+t[0]<<24|+t[1]<<16|+t[2]<<8|+t[3]<<0},ra=i=>(Object.keys(i).forEach(t=>{Le(i[t])&&(t.startsWith("uint")||t.startsWith("int"))?i[t]=Math.floor(i[t]):(Ft(i[t])||ot(i[t]))&&ra(i[t])}),i);function ia(i,t){return new Promise(e=>{let r=setTimeout(e,i);t&&t(r)})}function Yc(i,t){let e=null;return function(...r){return e||(e=i.apply(t||this,r),e.finally(()=>e=null),e)}}function Wo(i){return i.replace(/(^|[^:])\/{2,}/g,"$1/")}function Zc(i){var t;try{let{width:e,height:r,frameRate:o,sampleRate:s,sampleSize:n,channelCount:a}=(t=i.getSettings)==null?void 0:t.call(i),u=i.kind===M.AUDIO?`${s}x${n}@${a}`:`${e}x${r}@${o}`,m=i.stats?` stats: ${JSON.stringify(i.stats).replaceAll('"',"")}`:"";return`${i.id} ${i.readyState} muted:${i.muted} ${i.kind} ${i.label} ${u}${m}`}catch(e){return""}}function Kc(i,t){return i.width*i.height===t.width*t.height?1:Vl()&&t.width>t.height&&i.height>t.width?Math.max(i.width/t.height,i.height/t.width,1):Math.max(i.width/t.width,i.height/t.height,1)}function or(i){return i===90||i===270}function af(i){return y(this,null,function*(){return new Promise((t,e)=>{let r=document.createElement("video");r.crossOrigin="anonymous",r.src=i,r.muted=!0,r.loop=!0,r.playsInline=!0,r.play().then(()=>t(r)),r.onerror=()=>{e(r.error)}})})}function zc(i,t=new WeakMap){if(typeof i!="object"||i===null)return i;if(t.has(i))return t.get(i);if(Array.isArray(i)){let e=[];return t.set(i,e),i.forEach((r,o)=>{e[o]=zc(r,t)}),e}if(Object.prototype.toString.call(i)==="[object Object]"){let e={};return t.set(i,e),Reflect.ownKeys(i).forEach(r=>{e[r]=zc(i[r],t)}),e}return i}var Bs=(r=>(r[r.END_REPORT=2001]="END_REPORT",r[r.LOG=2002]="LOG",r[r.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",r))(Bs||{});function i_(i,t,e,r){let o={data:i,random:Math.floor(Math.random()*2147483648),sdkAppId:e};return O(r)||(o=pe(j({},o),{gzip:+r})),{uint32_sdkappid:0,uint64_from_uin:0,uint32_timestamp:0,uint32_seq:0,msg_common_info:{msg_device_info:{enum_device_type:0,str_device_brand:"",str_device_model:"",str_device_board:"",str_device_cpu_abi:""},msg_system_info:{enum_os_type:0,str_os_version:"",msg_network_info:0},msg_network_info:{enum_network_type:0}},msg_report_content:{uint32_type:t,bytes_report_data:JSON.stringify(o)}}}function Ti(i,t,e,r){try{let o=i_(i,t,e,r),s=Gc(o);return Wh(s,e)}catch(o){return JSON.stringify(i)}}function cf(i){let t=o_(i);return t==null?void 0:t.busiBuff}function o_(i){try{let t={},e=0;t.totalLength=Vt(i,e),e+=4,t.version=Vt(i,e),e+=4,t.encryption=Ol(i,e),e+=1,t.uinType=Ol(i,e),e+=1,t.uinLength=Vt(i,e),e+=4,t.uin=t.uinLength>4?xs(i,e,t.uinLength-4):"",e+=t.uinLength-4;let r=i.slice(e);if(t.encryption===2){let o=new Uint8Array(16).fill(0);i=s_(r,o),t.decrypted=!0,e=0}else i=r,e=0;return t.rspHeadLength=Vt(i,e),e+=4,t.seqNo=Vt(i,e),e+=4,t.retCode=Vt(i,e),e+=4,t.retStrLength=Vt(i,e),e+=4,t.retStr=t.retStrLength?xs(i,e,t.retStrLength-4):"",e+=t.retStrLength-4,t.serviceCmdLength=Vt(i,e),e+=4,t.serviceCmd=t.serviceCmdLength?xs(i,e,t.serviceCmdLength-4):"",e+=t.serviceCmdLength-4,t.cookieLength=Vt(i,e),e+=4,t.cookie=t.cookieLength?xs(i,e,t.cookieLength-4):"",e+=t.cookieLength-4,t.flag=Vt(i,e),e+=4,t.busiBuffLength=Vt(i,e),e+=4,t.busiBuff=t.busiBuffLength?xs(i,e,t.busiBuffLength-4):"",e+=t.busiBuffLength-4,t}catch(t){}}function df(i,t){let e=i[0]<<24|i[1]<<16|i[2]<<8|i[3],r=i[4]<<24|i[5]<<16|i[6]<<8|i[7];e=e>>>0,r=r>>>0;let o=jc*qc>>>0;for(let s=0;s<qc;s++)r-=(e<<Pl)+t[2]^e+o^(e>>>5)+t[3],r=r>>>0,e-=(r<<Pl)+t[0]^r+o^(r>>>5)+t[1],e=e>>>0,o-=jc,o=o>>>0;return new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,e&255,r>>>24&255,r>>>16&255,r>>>8&255,r&255])}function s_(i,t){let e=0,r=new Uint8Array(8).fill(0),o=new Uint8Array(i.slice(0,8)),s=df(o,t),n=s[0]&7,a=i.length-1-n-ks-Ps,u=new Uint8Array(a),m=0,h=r,f=i.slice(0,8);e=8;let T=1;T+=n;for(let C=1;C<=ks;)if(T<8)T++,C++;else if(T===8){let N=Fl(i,e,h,f,s,t);h=N.ivPreCrypt,f=N.ivCurCrypt,s=N.debiBuf,e=N.bufPos,T=0}let A=a;for(;A>0;)if(T<8)u[m++]=s[T]^h[T],T++,A--;else if(T===8){let C=Fl(i,e,h,f,s,t);h=C.ivPreCrypt,f=C.ivCurCrypt,s=C.debiBuf,e=C.bufPos,T=0}for(let C=1;C<=Ps;)if(T<8)s[T]^h[T],T++,C++;else if(T===8){if(e>=i.length)break;let N=Fl(i,e,h,f,s,t);if(!N.success)break;h=N.ivPreCrypt,f=N.ivCurCrypt,s=N.debiBuf,e=N.bufPos,T=0}return u}function Fl(i,t,e,r,o,s){if(t+8>i.length)return{success:!1};let n=new Uint8Array(r),a=i.slice(t,t+8),u=new Uint8Array(8);for(let h=0;h<8;h++)u[h]=o[h]^a[h];let m=df(u,s);return{success:!0,ivPreCrypt:n,ivCurCrypt:a,debiBuf:m,bufPos:t+8}}var uf=typeof TextDecoder!="undefined"?new TextDecoder:void 0;function _i({url:i,body:t,method:e="POST",timeout:r,priority:o}){return new Promise((s,n)=>{if("fetch"in window)return fetch(i,{method:e,body:t,priority:o}).then(u=>u.clone().json().then(m=>({data:m}),()=>u.arrayBuffer().then(m=>({data:cf(new Uint8Array(m))||(uf?uf.decode(m):m)})))).then(s,n);let a=new XMLHttpRequest;a.onreadystatechange=()=>{if(a.readyState===4)if(a.status>=200&&a.status<300)try{let u=JSON.parse(a.response);s({data:u})}catch(u){s({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=r||5e3,a.open(e,i,!0),a.send(t)})}function $l(i){return y(this,null,function*(){let t=Te(),e=JSON.stringify(i);try{if(!CompressionStream||e.length<=2800)return e;let o=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),a=yield(yield(yield new Response(o)).blob()).arrayBuffer();return $.debug(`compressJSON ${e.length} -> ${a.byteLength} ${Te()-t}ms`),a}catch(r){return e}})}var n_=Object.prototype.hasOwnProperty;var io=i=>typeof i=="function",lf=i=>typeof i=="undefined";var mf=i=>typeof i=="boolean";var Bl=i=>i.isRemote;var Hl=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function pf(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Hl(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(n_.call(i,t))return!1;return!0}}return!1}var a_=0,c_=1,hf=2;function d_({retryFunction:i,settings:t,onError:e,onRetrying:r,onRetryFailed:o,onRetrySuccess:s,context:n}){return function(...a){let{retries:u=5,timeout:m=1e3}=t,h=0,f=-1,T=a_,A=(C,N)=>y(this,null,function*(){let w=n||this;try{let x=yield i.apply(w,a);h>0&&s&&s.call(this,h),h=0,C(x)}catch(x){let te=()=>{clearTimeout(f),h=0,T=hf,N(x)},ue=()=>{T!==hf&&h<(io(u)?u():u)?(h++,T=c_,io(r)&&r.call(this,h,te),f=window.setTimeout(()=>{f=-1,A(C,N)},io(m)?m(h):m)):(te(),io(o)&&o.call(this,x))};io(e)?e.call(this,{error:x,retry:ue,reject:N,retryFuncArgs:a,retriedCount:h}):ue()}});return new Promise(A)}}var oo=d_;var Hs=class{constructor(t){l(this,"userId");l(this,"remoteUserId");l(this,"id");l(this,"sdkAppId");l(this,"type");l(this,"isLocal");this.id=t.id,this.userId=t.userId,this.sdkAppId=t.sdkAppId,this.remoteUserId=t.remoteUserId,this.isLocal=mf(t.isLocal)?t.isLocal:!0,this.type=this.isLocal?"":t.type}createChild(t){return Object.setPrototypeOf(t,this)}setUserId(t){this.userId=t}setSdkAppId(t){this.sdkAppId=t}log(t,e){let r=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${r?`|${r}`:""}]`),$.log(t,e,lf(this.userId)||pf(this.userId),this.userId,this.sdkAppId)}info(...t){this.log(2,t)}debug(...t){this.log(1,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}};var Ks={};li(Ks,{ANDROID_VERSION:()=>jl,CHROME_MAJOR_VERSION:()=>Qr,CHROME_VERSION:()=>Td,EDGE_VERSION:()=>rd,EDG_MAJOR_VERSION:()=>ql,EDG_VERSION:()=>id,FIREFOX_MAJOR_VERSION:()=>td,FIREFOX_VERSION:()=>ed,HUAWEI_VERSION:()=>pd,IE_VERSION:()=>h_,IOS_MAIN_VERSION:()=>Mt,IOS_VERSION:()=>Or,IPADQQB_VERSION:()=>ld,IS_ANDROID:()=>pt,IS_ANDROID_WEBVIEW:()=>T_,IS_ANY_SAFARI:()=>mr,IS_CHROME:()=>Ys,IS_CHROME_OS:()=>zl,IS_CHROMIUM_BASE:()=>Xr,IS_DESKTOP_IOS_CHROME:()=>tm,IS_EDG:()=>js,IS_EDGE:()=>Go,IS_ELECTRON:()=>g_,IS_FIREFOX:()=>$t,IS_HEADLESS_CHROME:()=>Ql,IS_HONOR:()=>Xl,IS_HUAWEI:()=>ma,IS_HUAWEIBROWSER:()=>la,IS_IE:()=>Tf,IS_IE8:()=>p_,IS_IOS:()=>mt,IS_IOS_13_OR_14:()=>em,IS_IOS_15_1:()=>Kl,IS_IOS_CHROME:()=>_f,IS_IPAD:()=>Gs,IS_IPADQQB:()=>ca,IS_IPAD_PRO:()=>Gl,IS_IPHONE:()=>so,IS_IPOD:()=>Ef,IS_LINUX:()=>da,IS_LOCAL:()=>xr,IS_MAC:()=>Mr,IS_MACQQB:()=>aa,IS_MIBROWSER:()=>ua,IS_MQQB:()=>Xs,IS_NATIVE_ANDROID:()=>m_,IS_OLD_ANDROID:()=>l_,IS_OPENHARMONY:()=>Qs,IS_OPPOBROWSER:()=>ha,IS_SAFARI:()=>_t,IS_SAFARI_15_1:()=>__,IS_SAMSUNGBROWSER:()=>pa,IS_SOGOU:()=>sa,IS_SOGOUM:()=>oa,IS_TBS:()=>wr,IS_UCBROWSER:()=>Jl,IS_VIVOBROWSER:()=>fa,IS_WECHAT:()=>zs,IS_WIN:()=>jo,IS_WQQB:()=>na,IS_WX:()=>f_,IS_X5MQQB:()=>Js,IS_XWEB:()=>qs,MACQQB_VERSION:()=>ud,MI_VERSION:()=>md,MQQB_VERSION:()=>Ws,OPENHARMONY_VERSION:()=>E_,OPPO_VERSION:()=>fd,SAFARI_VERSION:()=>Ii,SAMSUNG_VERSION:()=>hd,SOGOUM_VERSION:()=>od,SOGOU_VERSION:()=>sd,TBS_VERSION:()=>nd,UA_DATA_STRING:()=>Dr,USER_AGENT:()=>sr,VIVO_VERSION:()=>gd,WECHAT_VERSION:()=>cd,WQQB_VERSION:()=>dd,XWEB_VERSION:()=>ad,browserInfo:()=>Jr,getBrowserCoreNumber:()=>om,getBrowserInfo:()=>If,getChromeMajorVersion:()=>Ed,getDeviceModel:()=>ga,getGPUInfo:()=>im,getOSName:()=>Zs,getOSNumber:()=>zo,getOSString:()=>Jo,getOSType:()=>nm,getTerminalType:()=>sm,getUserAgentData:()=>qo,isLocalStorageEnabled:()=>Si,isMobile:()=>rm,isVersionLargerThan:()=>Zl,isVersionSmallerThan:()=>Yl});var sr=typeof navigator=="undefined"?"":navigator.userAgent,Ae=i=>new RegExp(i,"i").test(sr),Tt=i=>{if(Ae(i)){let t=new RegExp(`${i}\\/([\\d.]+)`),e=sr.match(t);if(e&&e[1])return e[1]}return""},Wl=i=>{if(Ae(i)){let t=new RegExp(`${i}\\/(\\d+)`),e=sr.match(t);if(e&&e[1])return parseFloat(e[1])}return NaN},ff=/AppleWebKit\/([\d.]+)/i.exec(sr),u_=ff?parseFloat(ff[1]):NaN,Gs=Ae("iPad"),Gl=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Ae("Macintosh"),so=Ae("iPhone")&&!Gs,Ef=Ae("iPod"),mt=so||Gs||Ef||Gl,pt=Ae("Android"),jl=function(){if(pt){let i=sr.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(i){let t=i[1]&&parseFloat(i[1]),e=i[2]&&parseFloat(i[2]);if(t&&e)return parseFloat(`${i[1]}.${i[2]}`);if(t)return t}}return NaN}(),l_=pt&&Ae("webkit")&&jl<2.3,m_=pt&&jl<5&&u_<537,$t=Ae("Firefox"),ed=Tt("Firefox"),td=Wl("Firefox"),Go=Ae("Edge"),rd=Tt("Edge"),js=Ae("Edg"),id=Tt("Edg"),ql=Wl("Edg"),oa=Ae("SogouMobileBrowser"),od=Tt("SogouMobileBrowser"),sa=Ae("MetaSr\\s"),sd=Tt("MetaSr\\s"),wr=Ae("TBS"),nd=Tt("TBS"),qs=Ae("XWEB"),ad=Tt("XWEB"),p_=Ae("MSIE\\s8\\.0"),Tf=Ae("MSIE\\/\\d+"),h_=function(){if(Tf){let i=/MSIE\s(\d+)\.\d/.exec(sr),t=i&&parseFloat(i[1]);return!t&&/Trident\/7.0/i.test(sr)&&/rv:11.0/.test(sr)&&(t=11),t}return NaN}(),zs=Ae("(micromessenger|webbrowser)"),cd=Tt("MicroMessenger"),Js=!wr&&Ae("MQQBrowser")&&Ae("COVC"),Xs=!wr&&Ae("MQQBrowser")&&!Ae("COVC"),Ws=Xs||Js?Tt("MQQBrowser"):"",na=!wr&&Ae(" QQBrowser"),dd=Tt(" QQBrowser"),aa=!wr&&Ae("QQBrowserLite"),ud=Tt("QQBrowserLite"),ca=!wr&&Ae("MQBHD"),ld=Tt("MQBHD"),jo=Ae("Windows"),Mr=!mt&&Ae("MAC OS X"),da=!pt&&Ae("Linux"),zl=Ae("CrOS"),f_=Ae("MicroMessenger"),Jl=Ae("UCBrowser"),g_=Ae("Electron"),ua=Ae("MiuiBrowser"),md=Tt("MiuiBrowser"),la=Ae("HuaweiBrowser"),ma=Ae("Huawei")||Ae("HUAWEI"),Xl=Ae("Honor")||Ae("HONOR"),pd=Tt("HuaweiBrowser"),pa=Ae("SamsungBrowser"),hd=Tt("SamsungBrowser"),ha=Ae("HeyTapBrowser"),fd=Tt("HeyTapBrowser"),fa=Ae("VivoBrowser"),gd=Tt("VivoBrowser"),Qs=Ae("OpenHarmony"),E_=Tt("OpenHarmony"),Ed=()=>Wl("Chrome"),Xr=Ae("Chrome"),Ys=!Go&&!sa&&!oa&&!wr&&!qs&&!js&&!na&&!ua&&!la&&!pa&&!ha&&!fa&&Xr,Ql=Ae("HeadlessChrome"),Qr=Ed(),Td=Tt("Chrome"),_t=!Xr&&!Xs&&!Js&&!aa&&!ca&&Ae("Safari"),mr=_t||mt,Ii=Tt("Version"),T_=/Android.*(wv|.0.0.0)/.test(sr),Or=(()=>{if(Gl)return Ii;if(mt){let i=sr.match(/OS (\d+)_(\d+)/i);if(i&&i[1]){let t=i[1];return i[2]&&(t+=`.${i[2]}`),t}}return""})();function Yl(i,t){let e=i.split(".").map(o=>Number(o)),r=t.split(".").map(o=>Number(o));for(let o=0;o<Math.max(e.length,r.length);o++){let s=e[o]||0,n=r[o]||0;if(s<n)return!0;if(s>n)return!1}return!1}function Zl(i,t,e=!1){let r=i.split(".").map(s=>Number(s)),o=t.split(".").map(s=>Number(s));for(let s=0;s<Math.max(r.length,o.length);s++){let n=r[s]||0,a=o[s]||0;if(n>a)return!0;if(n<a)return!1}return e}var Mt=Number(Or.split(".")[0]),__=Ii==="15.1",Kl=Or==="15.1",em=(()=>{let i=Number(Or.split(".")[0]);return i===14||i===13})(),_f=Ae("CriOS"),tm=_f&&Ii==="11.1.1",xr=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",Si=(()=>{let i;return()=>{if(typeof i=="undefined")try{i=!!window.localStorage}catch(t){i=!1}return i}})(),Jr=If();function If(){let i=new Map([[$t,["Firefox",ed]],[js,["Edg",id]],[Ys,["Chrome",Td]],[_t,["Safari",Ii]],[wr,["TBS",nd]],[qs,["XWEB",ad]],[zs&&so,["WeChat",cd]],[na,["QQ(Win)",dd]],[Xs,["QQ(Mobile)",Ws]],[Js,["QQ(Mobile X5)",Ws]],[aa,["QQ(Mac)",ud]],[ca,["QQ(iPad)",ld]],[ua,["MI",md]],[la,["HW",pd]],[pa,["Samsung",hd]],[ha,["OPPO",fd]],[fa,["VIVO",gd]],[Go,["EDGE",rd]],[oa,["SogouMobile",od]],[sa,["Sogou",sd]]]),t="unknown",e="unknown";return i.has(!0)&&([t,e]=i.get(!0)),{name:t,version:e}}var Ge=null;function rm(){return Ge&&typeof Ge.mobile=="boolean"?Ge.mobile:pt||mt||so||Gs||Qs}var Dr="";function qo(){return y(this,null,function*(){if(Ge)return Ge;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return Ge=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),Ge&&!Dr&&(Dr=`UAData: ${Ge.platform}/${Ge.platformVersion}`,Ge.architecture&&Ge.bitness&&(Dr+=` ${Ge.architecture}/${Ge.bitness}`),Ge.mobile&&(Dr+=" mobile"),Ge.model&&(Dr+=` model: ${Ge.model.replace(/\s+/g,"/")}`),Ge.fullVersionList&&(Dr+=` ${Ge.fullVersionList.filter(i=>i.brand!=="Not/A)Brand").map(i=>`${i.brand}/${i.version}`).join(",")}`)),Ge}catch(i){return null}})}function im(){try{let i=document.createElement("canvas"),t=i.getContext("webgl")||i.getContext("experimental-webgl");if(!t)return"";let e=t.getExtension("WEBGL_debug_renderer_info");if(e){let r=t.getParameter(e.UNMASKED_VENDOR_WEBGL),o=t.getParameter(e.UNMASKED_RENDERER_WEBGL);return`${r} ${o}`}return""}catch(i){return""}}function ga(){return(Ge==null?void 0:Ge.model)||""}var gf=new Map([[pt,"Android"],[mt,"iOS"],[jo,"Windows"],[Mr,"MacOS"],[da,"Linux"],[zl,"ChromeOS"]]),Zs=function(){return gf.get(!0)?gf.get(!0):Ge?Ge.platform:"unknown"};function zo(){return jo?1:pt?2:Mr?3:mt?4:da?5:zl?6:Qs?7:0}function om(){return Xr?1:_t?2:$t?3:0}var Jo=()=>{let i=Zs();return i+=`/${Jr.name}/${_t?Jr.version:Jr.version.split(".")[0]}`,Ge!=null&&Ge.platformVersion&&(i+=`/${Ge.platformVersion}`),Ge!=null&&Ge.architecture&&(i+=`/${Ge.architecture}`),i};function sm(){return pt?4:so?2:Gs?3:Mr?12:jo?5:da?13:Qs?22:1}function nm(){return pt?"Android":so?"iPhone":Gs?"iPad":Mr?"Mac":jo?"Windows":da?"Linux":"unknown"}var yf=mi(yi(),1),y_=new yf.default,V=y_;var kr=(G=>(G.ROOM_DESTROY="1",G.JOIN_START="21",G.JOIN_SCHEDULE_SUCCESS="22",G.JOIN_SIGNAL_CONNECTION_START="23",G.JOIN_SIGNAL_CONNECTION_END="24",G.JOIN_SEND_CMD="25",G.JOIN_RECEIVED_CMD_RES="26",G.JOIN_SUCCESS="27",G.JOIN_FAILED="28",G.LEAVE_START="51",G.LEAVE_SEND_CMD="52",G.LEAVE_SUCCESS="53",G.PUBLISH_START="61",G.SEND_FIRST_VIDEO_FRAME="62",G.PUBLISH_FAILED="63",G.SUBSCRIBE_START="81",G.SUBSCRIBE_SUCCESS="82",G.SUBSCRIBE_FAILED="84",G.UNSUBSCRIBE_SUCCESS="83",G.LOCAL_TRACK_CAPTURE_START="101",G.LOCAL_TRACK_CAPTURE_SUCCESS="102",G.LOCAL_TRACK_CAPTURE_FAILED="103",G.LOCAL_TRACK_PUBLISHED="104",G.LOCAL_TRACK_UNPUBLISHED="105",G.LOCAL_TRACK_REPLACED="106",G.SWITCH_DEVICE_SUCCESS="107",G.TRACK_MUTED="108",G.TRACK_UNMUTED="109",G.REMOTE_TRACK_SUBSCRIBED="110",G.REMOTE_TRACK_UNSUBSCRIBED="111",G.LOCAL_TRACK_RECAPTURE="112",G.LOCAL_AUDIO_STARTED="113",G.LOCAL_AUDIO_STOPPED="114",G.REMOTE_AUDIO_STARTED="115",G.REMOTE_AUDIO_STOPPED="116",G.PLAY_TRACK_START="151",G.PLAYER_STATE_CHANGED="152",G.VIDEO_LOADED_DATA="153",G.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",G.AUDIO_CONTEXT_LONG_SUSPENDED="155",G.SIGNAL_CONNECTION_STATE_CHANGED="201",G.PEER_CONNECTION_STATE_CHANGED="202",G.SINGLE_CONNECTION_STAT="203",G.SPC_RECONNECTED="204",G.HEARTBEAT_REPORT="251",G.RECEIVED_PUBLISHED_USER_LIST="252",G.REMOTE_PUBLISH_STATE_CHANGED="253",G.AUDIO_LEVEL_INTERVAL="260",G.NETWORK_QUALITY="261",G.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",G.QUALITY_LIMITATION_CHANGED="263",G.LOG="264",G.AUDIO_PROCESSOR_DEBUG="265",G.SSO_SWITCH="266",G.SWITCH_ROOM_START="401",G.SWITCH_ROOM_SUCCESS="407",G.SWITCH_ROOM_FAILED="408",G))(kr||{});var F=kr;var cm=class{constructor(){l(this,"enable",!1);l(this,"ssoFailCount",0);V.on("22",({schedule:t})=>{var e;(e=t==null?void 0:t.config)!=null&&e.sso&&V.emit("266",{enable:!0})}),V.on("266",({enable:t})=>{this.enable=t})}handleUploadFailed(){this.ssoFailCount++,this.ssoFailCount>3&&V.emit("266",{enable:!1})}},no=new cm;var A_="%cTRTC%c%s",b_="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",R_="display: inline",Id=class Id{constructor(){l(this,"_isEnableUploadLog",!0);l(this,"_localJoinedUser",new Map);l(this,"_queue",[]);l(this,"_timeoutId",-1);l(this,"_logLevel",1);l(this,"_logLevelToUpload",2);!Ds&&!Gn&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){V.on(F.JOIN_SCHEDULE_SUCCESS,({schedule:t})=>{var e;(e=t==null?void 0:t.config)!=null&&e.logLevelToUpload&&Rr[t.config.logLevelToUpload]&&(this._logLevelToUpload=t.config.logLevelToUpload)}),V.on(F.JOIN_SUCCESS,({room:t})=>{this.addJoinedUser({userId:t.userId,sdkAppId:t.sdkAppId}),this.startUpload()}),V.once(F.JOIN_FAILED,()=>{this.startUpload()}),V.on(F.LEAVE_SUCCESS,({room:t})=>{this.deleteJoinedUser(t.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(t){this._localJoinedUser.set(t.userId,t),this.startUpload()}deleteJoinedUser(t){this._localJoinedUser.delete(t)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let t={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return t;let e=0;for(;e<this._queue.length&&e!==50;e++){let r=this._queue[e];if(r.forAllJoinedClients)this._localJoinedUser.forEach(({userId:o,sdkAppId:s})=>{t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})});else if(De(r.userId)&&Le(r.sdkAppId)){let{userId:o,sdkAppId:s}=r;t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})}}return t.map.size>0&&(t.splicedQueue=this._queue.splice(0,e)),t}upload(){return y(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:t,splicedQueue:e}=this.getLogsToUpload();if(t.size===0)return;try{let o=[...t.values()];for(let s=0;s<o.length;s++){let{userId:n,sdkAppId:a,logs:u}=o[s],m={timestamp:Pc(),sdkAppId:String(a),userId:n,version:nt,log:u.map(T=>T.log).join(`
|
|
4
|
+
`)},h=JSON.stringify(m),f=no.enable?Ti(m,2002,a):h;yield this.uploadLogWithRetry(f,a,f instanceof Uint8Array,h),u.forEach(T=>T.uploaded=!0)}}catch(o){}let r=e.filter(o=>!o.uploaded);r.length>0&&(this._queue=r.concat(this._queue))})}uploadLogWithRetry(t,e,r,o){return oo({retryFunction:()=>_i({url:Ei(e,to.LOG),body:t,timeout:5e3,priority:"low"}).then(s=>{r&&s.data!=="ok"&&(no.handleUploadFailed(),this.uploadLogWithRetry(o,e,!1,o))}),settings:{retries:3,timeout:2e3},onError:({retry:s})=>{s()}})()}getPrefix(t){let e=new Date;return e.setTime(Wn()),`[${Ns(e)}] <${Rr[t]}>`}getLogLevel(){return this._logLevel}setLogLevel(t){O(Rr[t])||(this._logLevel!==t&&this.info("setLogLevel",t),this._logLevel=t)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(t){if(De(t))return t;try{return t instanceof Error?t.toString():JSON.stringify(t)}catch(e){return""}}log(t,e,r=!0,o,s){var u;e.unshift(this.getPrefix(t));let n={log:e.reduce((m,h)=>`${m} ${this.logChunkToString(h)}`.trim(),""),level:t,userId:o,sdkAppId:s,forAllJoinedClients:r};if(V.emit(F.LOG,{log:n}),this._isEnableUploadLog&&t>=this._logLevelToUpload&&this._queue.push(n),t<this._logLevel)return;let a=((u=Rr[t])==null?void 0:u.toLowerCase())||"info";Id.PRINT_LOG_TAG?console[a](A_,b_,R_,...e):console[a](...e)}debug(...t){this.log(1,t)}info(...t){this.log(2,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}createLogger(t){return new Hs(t)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),r=e?Number(e):-1;Rr[r]&&(this._logLevelToUpload=r)}getQueue(){return this._queue}};l(Id,"PRINT_LOG_TAG",!(mt||pt||Ql));var dm=Id,$=new dm;var v_=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let t=Math.random()*16|0;return(i=="x"?t:t&3|8).toString(16)})},Ta=v_;var um=class{constructor(){l(this,"_prefix","TRTC");l(this,"_queue",new Map)}getRealKey(t){return`${this._prefix}_${t}`}checkStorage(){if(!Si())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(r=>{if(r.startsWith(this._prefix))try{let o=localStorage.getItem(r);if(!o)return!1;let s=JSON.parse(o);if(s&&s.expiresIn<Date.now())return!0}catch(o){return!1}return!1}).forEach(r=>localStorage.removeItem(r))}doFlush(){if(Si())try{for(let[t,e]of this._queue)localStorage.setItem(t,JSON.stringify(e))}catch(t){$.warn(t)}}getItem(t){if(!Si())return null;try{let e=localStorage.getItem(this.getRealKey(t));if(!e)return null;let r=JSON.parse(e);return r&&r.expiresIn>=Date.now()?r.value:null}catch(e){$.warn(e)}}setItem(t,e){if(Si())try{let r={expiresIn:Date.now()+Lc,value:e};this._queue.set(this.getRealKey(t),r)}catch(r){$.warn(r)}}deleteItem(t){if(!Si())return!1;try{return t=this.getRealKey(t),this._queue.delete(t),localStorage.removeItem(t),!0}catch(e){return $.warn(e),!1}}clear(){if(Si())try{localStorage.clear()}catch(t){$.warn(t)}}},en=new um;var co={};li(co,{HTTPS_API:()=>z_,IS_GET_CAPABILITIES_FROM_INPUTDEVICE_SUPPORTED:()=>km,IS_GET_CAPABILITIES_SUPPORTED:()=>xm,IS_GET_SETTINGS_SUPPORTED:()=>sn,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>rI,IS_INSERTABLE_STREAM_SUPPORTED:()=>Da,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>nI,IS_RTC_RTP_SENDER_SUPPORTED:()=>Na,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>eg,IS_SEI_SUPPORTED:()=>wa,IS_SPC_SUPPORTED:()=>Z_,basis:()=>oI,capabilityCheck:()=>Lm,checkSystemRequirementsInternal:()=>kd,decodeSupportStatus:()=>qf,detectVideoCodecCapabilities:()=>Um,detectVideoDecoderCapabilities:()=>ng,detectVideoEncoderCapabilities:()=>sg,encodeSupportStatus:()=>Om,getBrowserInfo:()=>Od,getDisplayResolution:()=>zf,isAddTransceiverSupported:()=>Ld,isBrowserSupported:()=>Dm,isCanvasCaptureStreamAPISupported:()=>Qf,isCanvasSmallStreamSupported:()=>Yf,isGetReceiversSupported:()=>Q_,isGetSendersSupported:()=>Kf,isGetTransceiversSupported:()=>Y_,isGetUserMediaSupported:()=>Jf,isMediaDevicesSupported:()=>xd,isMediaSessionSupported:()=>rg,isMediaStreamTrackProcessorSupported:()=>Mm,isReplaceTrackSupported:()=>eI,isRequestVideoFrameCallbackSupported:()=>Di,isSIMDSupported:()=>iI,isScaleResolutionDownBySupported:()=>Zf,isScreenCaptureApiAvailable:()=>Ca,isSelectedCandidatePair:()=>J_,isSetParametersSupported:()=>tI,isSetSinkIdSupported:()=>G_,isSmallStreamSupported:()=>Pd,isStopTransceiverSupported:()=>K_,isTRTCSupported:()=>W_,isUnifiedPlanDefault:()=>X_,isUsedInHttpProtocol:()=>Ni,isWebAudioSupported:()=>Xf,isWebCodecSupported:()=>tg,isWebCodecsSupported:()=>wm,isWebRTCSupported:()=>Pm,isWebTransportSupported:()=>ig});var Am={};li(Am,{AUDIO_LEVEL_SCALE:()=>Ri,AudioCodecPipelineType:()=>bd,AudioDecoderDowngradeState:()=>pm,AudioPlayerMode:()=>Em,AudioType:()=>fm,BASIC_TYPE:()=>vi,BannedReason:()=>Tm,CONNECTION_CLOSED_REASON:()=>bf,CheckPermissionType:()=>ym,ClientEvent:()=>lm,CodecType:()=>Mf,ConnectionEvent:()=>Af,ConnectionState:()=>yd,DECODE_FAILED_ERROR_CODE:()=>Sm,DeviceType:()=>vd,FacingMode:()=>Ad,FrameWorkType:()=>Sd,LeaveReason:()=>_m,LocalTrackEvent:()=>Ia,MULTI_VIDEO_DATA_TYPE:()=>bi,MediaType:()=>At,MediaTypeLabel:()=>C_,MonitorEventId:()=>ya,MutedFlag:()=>vf,NetworkQualityValue:()=>Df,PlayerState:()=>Xo,ReceiveMode:()=>wf,RemoteStreamType:()=>Yr,RemoteTrackEvent:()=>tn,RoomEvent:()=>Ai,SMALL_MODE:()=>Rd,SceneNumber:()=>mm,StreamEvent:()=>Rf,StreamType:()=>Nf,SubscribeMediaType:()=>_a,TIMER_TYPE:()=>ao,TRACK_ACTION:()=>Cf,TRACK_KIND:()=>hm,TrackEvent:()=>Pr,UserRole:()=>Qt,UserRoleNumber:()=>Qo,VideoCodec:()=>Im,VideoCodecPipelineType:()=>ba,VideoContentHint:()=>Ra,VideoDecoderDowngradeState:()=>Sa,VideoPlayerMode:()=>Aa,VideoType:()=>gm});var Sd=(e=>(e[e.WEBRTC=30]="WEBRTC",e[e.WASM=37]="WASM",e))(Sd||{}),Af=(N=>(N.TRACK_ADDED="track-added",N.TRACK_UPDATED="track-updated",N.TRACK_SUBSCRIBED="track-subscribed",N.STREAM_ADDED="stream-added",N.STREAM_REMOVED="stream-removed",N.STREAM_UPDATED="stream-updated",N.STREAM_PUBLISHED="stream-published",N.STREAM_SUBSCRIBED="stream-subscribed",N.STREAM_UNSUBSCRIBED="stream-unsubscribed",N.STATE_CHANGED="state-changed",N.ERROR="error",N.CONNECTION_STATE_CHANGED="connection-state-changed",N.FIREWALL_RESTRICTION="firewall-restriction",N.SEI_MESSAGE="sei-message",N.CLOSED="closed",N))(Af||{}),bf=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(bf||{}),lm=(w=>(w.STREAM_ADDED="stream-added",w.STREAM_REMOVED="stream-removed",w.STREAM_UPDATED="stream-updated",w.STREAM_SUBSCRIBED="stream-subscribed",w.CONNECTION_STATE_CHANGED="connection-state-changed",w.PEER_JOIN="peer-join",w.PEER_LEAVE="peer-leave",w.MUTE_AUDIO="mute-audio",w.MUTE_VIDEO="mute-video",w.UNMUTE_AUDIO="unmute-audio",w.UNMUTE_VIDEO="unmute-video",w.CLIENT_BANNED="client-banned",w.NETWORK_QUALITY="network-quality",w.AUDIO_VOLUME="audio-volume",w.SEI_MESSAGE="sei-message",w.ERROR="error",w))(lm||{}),Rf=(s=>(s.PLAYER_STATE_CHANGED="player-state-changed",s.SCREEN_SHARING_STOPPED="screen-sharing-stopped",s.CONNECTION_STATE_CHANGED="connection-state-changed",s.DEVICE_AUTO_RECOVERED="device-auto-recovered",s.ERROR="error",s))(Rf||{}),Ia=(a=>(a.DEVICE_AUTO_RECOVERED="1",a.DEVICE_RECOVER_FAILED="5",a.DEVICE_CHANGED="2",a.ERROR="3",a.PUBLISH_STATE_CHANGED="4",a.ENCODE_FAILED="6",a.TRACK_ENDED="7",a))(Ia||{}),Xo=(r=>(r.PAUSED="PAUSED",r.PLAYING="PLAYING",r.STOPPED="STOPPED",r))(Xo||{}),Ai=(Ie=>(Ie.PEER_JOIN="peer-join",Ie.PEER_LEAVE="peer-leave",Ie.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",Ie.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",Ie.BANNED="banned",Ie.NETWORK_QUALITY="network-quality",Ie.AUDIO_VOLUME="audio-volume",Ie.SEI_MESSAGE="sei-message",Ie.ERROR="error",Ie.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",Ie.REMOTE_PUBLISHED="remote-published",Ie.REMOTE_UNPUBLISHED="remote-unpublished",Ie.FIREWALL_RESTRICTION="firewall-restriction",Ie.HEARTBEAT_REPORT="heartbeat-report",Ie.CUSTOM_MESSAGE="custom-message",Ie.LAYER_DATA="layerData",Ie.FIRST_VIDEO_FRAME="first-video-frame",Ie.DUMP="dump",Ie.AUDIO_FRAME="audio-frame",Ie.SUBSCRIBE_SMALL_VIDEO_CHANGED="subscribe-small-video-changed",Ie.LOCAL_PUBLISH_FLAG_CHANGED="local-publish-flag-changed",Ie))(Ai||{}),Pr=(u=>(u.PLAYER_STATE_CHANGED="player-state-changed",u.MUTE="mute",u.UNMUTE="unmute",u.ERROR="error",u.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",u.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",u.FIRST_VIDEO_FRAME="first-video-frame",u.VIDEO_SIZE_CHANGED="video-size-changed",u))(Pr||{}),tn=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(tn||{}),vf=(a=>(a[a.VIDEO=1]="VIDEO",a[a.SMALL=2]="SMALL",a[a.AUX=4]="AUX",a[a.AUDIO=8]="AUDIO",a[a.VIDEO_MUTE=16]="VIDEO_MUTE",a[a.AUX_MUTE=32]="AUX_MUTE",a[a.AUDIO_MUTE=64]="AUDIO_MUTE",a))(vf||{}),mm=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(mm||{}),Qo=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(Qo||{}),Qt=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(Qt||{}),yd=(s=>(s.CONNECTED="CONNECTED",s.DISCONNECTED="DISCONNECTED",s.CONNECTING="CONNECTING",s.RECONNECTED="RECONNECTED",s.RECONNECTING="RECONNECTING",s))(yd||{}),pm=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(pm||{}),Sa=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(Sa||{}),hm=(r=>(r.AUDIO="audio",r.VIDEO="video",r.AUXILIARY="auxVideo",r))(hm||{}),Cf=(e=>(e.ADD="add",e.REMOVE="remove",e))(Cf||{}),At=(s=>(s[s.NULL=0]="NULL",s[s.AUDIO=1]="AUDIO",s[s.AUX_VIDEO=2]="AUX_VIDEO",s[s.BIG_VIDEO=4]="BIG_VIDEO",s[s.SMALL_VIDEO=8]="SMALL_VIDEO",s))(At||{}),C_={1:"audio",2:"auxVideo",4:"video"},fm=(t=>(t[t.opus=111]="opus",t))(fm||{}),gm=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(gm||{}),Nf=(e=>(e.Big="big",e.Small="small",e))(Nf||{}),Yr=(e=>(e.Main="main",e.Aux="auxiliary",e))(Yr||{}),bi=(s=>(s[s.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",s[s.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",s[s.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",s[s.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",s[s.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",s))(bi||{}),ya=(J=>(J[J.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",J[J.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",J[J.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",J[J.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",J[J.MUTE_AUDIO=32772]="MUTE_AUDIO",J[J.MUTE_VIDEO=32773]="MUTE_VIDEO",J[J.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",J[J.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",J[J.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",J[J.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",J[J.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",J[J.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",J[J.SWITCH_CAMERA=32780]="SWITCH_CAMERA",J[J.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",J[J.REPLACE_VIDEO=32782]="REPLACE_VIDEO",J[J.REPLACE_AUDIO=32783]="REPLACE_AUDIO",J[J.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",J[J.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",J[J.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",J[J.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",J[J.JOIN=32788]="JOIN",J[J.LEAVE=32789]="LEAVE",J[J.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",J[J.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",J[J.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",J[J.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",J[J.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",J[J.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",J[J.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",J[J.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",J[J.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",J[J.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",J[J.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",J[J.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",J[J.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",J[J.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",J[J.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",J[J.PUBLISH_AUX=32805]="PUBLISH_AUX",J[J.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",J[J.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",J[J.VIDEO_ENCODER=4004]="VIDEO_ENCODER",J[J.VIDEO_DECODER=4005]="VIDEO_DECODER",J))(ya||{}),Df=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.EXCELLENT=1]="EXCELLENT",a[a.GOOD=2]="GOOD",a[a.POOR=3]="POOR",a[a.BAD=4]="BAD",a[a.VERY_BAD=5]="VERY_BAD",a[a.DISCONNECTED=6]="DISCONNECTED",a))(Df||{}),wf=(o=>(o[o.MANUAL=0]="MANUAL",o[o.AUTO_AUDIO=1]="AUTO_AUDIO",o[o.AUTO_VIDEO=2]="AUTO_VIDEO",o[o.AUTO_ALL=3]="AUTO_ALL",o))(wf||{}),Ad=(e=>(e.user="user",e.environment="environment",e))(Ad||{}),Aa=(r=>(r[r.ELEMENT=0]="ELEMENT",r[r.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",r[r.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",r))(Aa||{}),Em=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(Em||{}),Tm=(o=>(o.BANNED="banned",o.KICK="kick",o.USER_TIME_OUT="user_time_out",o.ROOM_DISBAND="room_disband",o))(Tm||{}),_m=(m=>(m[m.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",m[m.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",m[m.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",m[m.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",m[m.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",m[m.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",m[m.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",m[m.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",m[m.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",m))(_m||{}),Ri=1e8,_a=class{constructor(){l(this,"mediaType",0)}set audio(t){t?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(t){t?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(t){t?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(t){t?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},vi=(s=>(s.String="string",s.Number="number",s.Boolean="boolean",s.Array="array",s.Object="object",s))(vi||{}),Im=(s=>(s.H264="h264",s.H265="h265",s.VP8="vp8",s.VP9="vp9",s.AV1="av1",s))(Im||{}),ba=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.DUMP=1]="DUMP",o[o.SEI=2]="SEI",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(ba||{}),bd=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",o[o.DUMP=2]="DUMP",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(bd||{}),Mf=(r=>(r.WebRTC="webrtc",r.WebCodecs="webcodecs",r.WebAssembly="webassembly",r))(Mf||{}),Sm=(T=>(T[T.SUCCESS=0]="SUCCESS",T[T.FAILED=1]="FAILED",T[T.WEBCODEC_INIT=2]="WEBCODEC_INIT",T[T.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",T[T.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",T[T.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",T[T.WASM_INIT=6]="WASM_INIT",T[T.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",T[T.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",T[T.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",T[T.TEST=10]="TEST",T[T.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",T))(Sm||{}),Ra=(o=>(o.NONE="",o.DETAIL="detail",o.MOTION="motion",o.TEXT="text",o))(Ra||{}),ao=(s=>(s.INTERVAL="interval",s.TIMEOUT="timeout",s.RAF="raf",s.RIC="ric",s.INTERVAL_IN_WORKER="intervalInWorker",s))(ao||{}),Rd=(e=>(e.CANVAS="canvas",e.API="api",e))(Rd||{}),ym=(o=>(o[o.NONE=0]="NONE",o[o.MICROPHONE=1]="MICROPHONE",o[o.CAMERA=2]="CAMERA",o[o.BOTH=3]="BOTH",o))(ym||{}),vd=(e=>(e.CAMERA="camera",e.MICROPHONE="microphone",e))(vd||{});var $e={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},Yt={AVOID_REPEATED_CALL(i){return`previous ${i.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${at(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${at(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_MIN({key:i,rule:t,fnName:e,value:r}){return`the min value of ${i||t.name} is ${t.min}, received: ${r}.`},INVALID_PARAMETER_MAX({key:i,rule:t,fnName:e,value:r}){return`the max value of ${i||t.name} is ${t.max}, received: ${r}.`},API_CALL_TIMEOUT(i){return`${i.commandDesc||i.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(i){return`SignalChannel setup failure: (errorCode: ${i.errorCode}, errorMsg: ${i.errorMsg} }).`},ERROR_MESSAGE(i){let t=`${i.type} failed`;return i.message&&(t=`${t}: ${i.message}.`),t},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(i){return`exchange sdp failed ${i.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(i){return`'${i}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(i){return`'${i}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:i,code:t}){return`Failed to join room - ${i} code: ${t}`},REJOIN_ROOM_FAILED(i){return`reJoin room: ${i.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(i){return`duplicate ${i} stream publishing, please unpublish your prev ${i} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:i,userId:t,streamType:e}){return`failed to subscribe ${t} ${e} stream, reason: ${i}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(i){return`switchRole failed, errCode: ${i.code} errMsg: ${i.message}.`},CLIENT_BANNED(i){return`client was banned because of ${i.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(i){return`startPublishCDNStream failed, errMsg: ${i.message}.`},STOP_PUBLISH_CDN_FAILED(i){return`stopPublishCDNStream failed, errMsg: ${i.message}.`},INVALID_STREAM_ID(i){return`'${i}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(i){return`cannot replace ${i.kind} track because stream has not ${i.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(i){return`startMixTranscode failed, errMsg: ${i.message}.`},STOP_MIX_TRANSCODE_FAILED(i){return`stopMixTranscode failed, errMsg: ${i.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(i){return`'${i}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:i,fnName:t})=>`'${i}' is not found in the document object when calling ${t}().`,INVALID_ELEMENT_ID_TYPE:({key:i,fnName:t,type:e})=>`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`,PLAY_FAILED:i=>`${i.media} play failed, browser exception: ${i.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(i){return`${i}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(i){return`${i.signalResponse} failed, response code is ${i.code} , errMsg: ${i.message}.`},CATCH_HANDLER_ERROR({name:i,event:t}){return`an error was caught in ${i}.on('${t}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:i}){return`experimental api ${i} does not exist.`},REPEAT_JOIN:i=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:i}){return`failed to call ${i}() because client was destroyed.`},SEI_NOT_SUPPORT:i=>`not support to sendSEIMessage${i===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:i,name:t,timesInSecond:e,maxSizeInSecond:r})=>`api ${t} call ${i?"size":"times"} is over ${i?`${r} bytes`:e} in a second.`,CONNECTION_ABORTED(i){return`connection aborted due to: ${i}`},API_CALL_ABORTED(i){let t;return i.message.includes("REMOTE_STREAM_NOT_EXIST")?t=`Subscribe ${i.userId} ${i.streamType} stream aborted, reason: remote user ${i.userId} unpublished stream.`:t=`API aborted, reason: ${i.message}`,t},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:i=>`'streamType' is required when 'userId' is not '*', calling ${i}()`};var Of=(i,t)=>t?`${Gr}/${i}/${t}`:`${Gr}/${i}/index.html`;var N_=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let i=localStorage==null?void 0:localStorage.getItem(Sl);if(i){i=JSON.parse(i);let t=document.createElement("script");t.type="text/javascript",t.text=i.message,document.body.appendChild(t);let e=window.TRTC_ERROR_INFO,r=window.TRTC_ERROR_LINK;return document.body.removeChild(t),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:r}}return{}};function Be(i){let{key:t,data:e,link:r,addDocLink:o=!0}=i,s="",n="",a="";We(Yt[t])?s=Yt[t](e):De(Yt[t])&&(s=Yt[t]);let{TRTC_ERROR_INFO:u,TRTC_ERROR_LINK:m}=N_();r?a=`${r.className}.html#${r.fnName}`:m&&m[t]&&(We(m[t])?a=m[t](e):De(m[t])&&(a=m[t]));let h=s;return Cr()&&(u&&u[t]&&(We(u[t])?n=u[t](e):De(u[t])&&(n=u[t])),n&&(o?h=`${n}
|
|
5
|
+
\u8BF7\u67E5\u770B\u6587\u6863: ${Of("zh-cn",a)}
|
|
8
6
|
|
|
9
|
-
`:
|
|
7
|
+
`:h=`${n}
|
|
10
8
|
|
|
11
|
-
`,
|
|
12
|
-
Refer to: ${
|
|
13
|
-
`),u}var Nl=He(Fm(),1);var Hg=1,$g=0,Ua=class{constructor(i=!0){d(this,"countMap",new Map);d(this,"distributionMap",new Map);d(this,"version");d(this,"log",y.createLogger({id:"kv"}));i&&(A.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===p.AUDIO?501700:511700,cost:t})}),A.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===p.AUDIO?501700:511700,error:t})}),A.on("266",({enable:e})=>{this.log.info(`${e?"enable":"disable"} sso`),e?this.addSuccessEvent({key:525701}):this.addFailedEvent({key:525701})}))}getReportData(){let i={msg_sdk_basic_info:{uint32_sdk_version:aa(this.version||Ve),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,t])=>({uint32_key:e,uint32_count:t})),stats_distribution:[...this.distributionMap.entries()].map(([e,t])=>({uint32_key:e,distribution_items:[...t.entries()].map(([r,s])=>({uint32_item_key:r,uint32_item_value:s}))}))};return this.countMap.clear(),this.distributionMap.clear(),i}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(i){let e=+String(i).slice(-3);return e>=700&&e<799}isErrorCodeKey(i){let e=+String(i).slice(-3);return e>=600&&e<699}isCountKey(i){let e=+String(i).slice(-3);return e>=0&&e<599}isNumberKey(i){let e=+String(i).slice(-3);return e>=800&&e<899}addCount({key:i,useUV:e=!1}){if(!this.isCountKey(i)){this.log.debug(`${i} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(i)||this.countMap.set(i,(this.countMap.get(i)||0)+1)}addEnum({key:i,value:e,useUV:t=!0}){var s;if(!this.isEnumKey(i))return this.log.debug(`${i} is not enum key, last 3 number should be 700~799`);if(t&&this.countMap.has(i))return;this.countMap.set(i,(this.countMap.get(i)||0)+1);let r=((s=this.distributionMap)==null?void 0:s.get(i))||new Map;r.set(e,(r.get(e)||0)+1),this.distributionMap.set(i,r)}addNumber({key:i,value:e,split:t=100,useUV:r=!1,max:s=5e3}){var c;if(!this.isNumberKey(i))return this.log.debug(`${i} is not number key, last 3 number should be 800~899`);if(r&&this.countMap.has(i))return;e>s&&(e=s),this.countMap.set(i,(this.countMap.get(i)||0)+1);let n=((c=this.distributionMap)==null?void 0:c.get(i))||new Map,a=0;if(q(t))a=Math.floor(e/t);else for(let l=t.length-1;l>0;l--)if(e>t[l]){a=l;break}n.set(a,(n.get(a)||0)+1),this.distributionMap.set(i,n)}addSuccessEvent({key:i,cost:e,timeKey:t,split:r}){if(i&&(this.addEnum({key:i,value:Hg,useUV:!1}),e)){let s=+String(i).slice(-3);s<800&&s>=700?this.addNumber({key:t||i+100,value:e,split:r}):t||this.log.debug(`time stat ignored, ${i}`)}}addFailedEvent({key:i,error:e}){if(!i)return;let t=I.UNKNOWN;e&&(q(e)?t=e:(!E(e.extraCode)||!E(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:i,value:$g,useUV:!1}),this.addEnum({key:i,value:Math.abs(t),useUV:!1})}},Ba=(J=>(J[J.enterRoom=500700]="enterRoom",J[J.exitRoom=500701]="exitRoom",J[J.switchRole=500702]="switchRole",J[J.destroy=500703]="destroy",J[J.startLocalAudio=500704]="startLocalAudio",J[J.updateLocalAudio=500705]="updateLocalAudio",J[J.stopLocalAudio=500706]="stopLocalAudio",J[J.startLocalVideo=500707]="startLocalVideo",J[J.updateLocalVideo=500708]="updateLocalVideo",J[J.stopLocalVideo=500709]="stopLocalVideo",J[J.startScreenShare=500710]="startScreenShare",J[J.updateScreenShare=500711]="updateScreenShare",J[J.stopScreenShare=500712]="stopScreenShare",J[J.startRemoteVideo=500713]="startRemoteVideo",J[J.updateRemoteVideo=500714]="updateRemoteVideo",J[J.stopRemoteVideo=500715]="stopRemoteVideo",J[J.muteRemoteAudio=500716]="muteRemoteAudio",J[J.setRemoteAudioVolume=500717]="setRemoteAudioVolume",J[J.use=500718]="use",J[J.switchRoom=500719]="switchRoom",J[J.sendSEIMessage=5e5]="sendSEIMessage",J[J.sendCustomMessage=500001]="sendCustomMessage",J))(Ba||{}),yl=(m=>(m[m.AudioMixer=550700]="AudioMixer",m[m.AIDenoiser=551700]="AIDenoiser",m[m.VirtualBackground=570700]="VirtualBackground",m[m.Beauty=571700]="Beauty",m[m.Watermark=572700]="Watermark",m[m.BasicBeauty=574700]="BasicBeauty",m[m.CDNStreaming=590700]="CDNStreaming",m[m.DeviceDetector=591700]="DeviceDetector",m[m.Debug=592700]="Debug",m[m.SmallStreamAutoSwitcher=593700]="SmallStreamAutoSwitcher",m[m.VideoMixer=594700]="VideoMixer",m[m.AudioProcessor=595700]="AudioProcessor",m))(yl||{}),bl=(m=>(m[m.AudioMixer=550701]="AudioMixer",m[m.AIDenoiser=551701]="AIDenoiser",m[m.VirtualBackground=570701]="VirtualBackground",m[m.Beauty=571701]="Beauty",m[m.Watermark=572701]="Watermark",m[m.BasicBeauty=574701]="BasicBeauty",m[m.CDNStreaming=590701]="CDNStreaming",m[m.DeviceDetector=591701]="DeviceDetector",m[m.Debug=592701]="Debug",m[m.SmallStreamAutoSwitcher=593701]="SmallStreamAutoSwitcher",m[m.VideoMixer=594701]="VideoMixer",m[m.AudioProcessor=595701]="AudioProcessor",m))(bl||{}),vl=(m=>(m[m.AudioMixer=550702]="AudioMixer",m[m.AIDenoiser=551702]="AIDenoiser",m[m.VirtualBackground=570702]="VirtualBackground",m[m.Beauty=571702]="Beauty",m[m.Watermark=572702]="Watermark",m[m.BasicBeauty=574702]="BasicBeauty",m[m.CDNStreaming=590702]="CDNStreaming",m[m.DeviceDetector=591702]="DeviceDetector",m[m.Debug=592702]="Debug",m[m.SmallStreamAutoSwitcher=593702]="SmallStreamAutoSwitcher",m[m.VideoMixer=594702]="VideoMixer",m[m.AudioProcessor=595702]="AudioProcessor",m))(vl||{});var Go=(R=>(R[R.DECODER_TYPE=514700]="DECODER_TYPE",R[R.DECODER_HW_SW=514701]="DECODER_HW_SW",R[R.DECODE_RESULT=514702]="DECODE_RESULT",R[R.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",R[R.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",R[R.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",R[R.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",R[R.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",R[R.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",R[R.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",R[R.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",R[R.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",R[R.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",R[R.DECODE_CAPABILITIES=514713]="DECODE_CAPABILITIES",R[R.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",R[R.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",R[R.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",R))(Go||{});var Gg=new Ua(!0),$r=new Ua(!1);var v=Gg;var ee={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}},Wg=new Map([[ne,["Firefox",ha]],[Oo,["Edg",pa]],[Vo,["Chrome",Na]],[ke,["Safari",Fi]],[jt,["TBS",ga]],[Mo,["XWEB",Ta]],[ko&&hr,["WeChat",Ea]],[Us,["QQ(Win)",Sa]],[xo,["QQ(Mobile)",vo]],[wo,["QQ(Mobile X5)",vo]],[Bs,["QQ(Mac)",Ia]],[Fs,["QQ(iPad)",Aa]],[$s,["MI",Ca]],[Gs,["HW",Ra]],[Js,["Samsung",ya]],[qs,["OPPO",ba]],[js,["VIVO",va]],[xr,["EDGE",ma]],[Ps,["SogouMobile",fa]],[Vs,["Sogou",_a]]]);function Jg(){let o=Wg.get(!0),i=o?o[0]:"unknown",e=o?o[1]:"unknown";return{browserName:i,browserVersion:e}}var Ol=function(){return!(Yd||xr||Oo&&zd<80||ne&&Do<56)},Ml=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(i=>i in window)},$a=function(){if(!navigator.mediaDevices)return Ji()||y.error($e.NOT_SUPPORTED_MEDIA),!1;let o=["getUserMedia","enumerateDevices"];return o.filter(i=>i in navigator.mediaDevices).length===o.length},Hm=!1;function Ji(){return location.protocol==="http:"&&!zt?(Hm||y.error(V({key:L.NOT_SUPPORTED_HTTP})),Hm=!0,!0):!1}var Ks=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},kl=function(){return f(this,null,function*(){var r,s,n;if(ee.detail.isH264EncodeSupported&&ee.detail.isVp8EncodeSupported)return{isH264EncodeSupported:ee.detail.isH264EncodeSupported,isVp8EncodeSupported:ee.detail.isVp8EncodeSupported,isH265EncodeSupported:ee.detail.isH265EncodeSupported};let o,i=!1,e=!1,t=!1;try{let a=new RTCPeerConnection,c=document.createElement(p.CANVAS);c.getContext("2d");let l=c.captureStream(0);return a.addTrack(l.getVideoTracks()[0],l),o=yield a.createOffer(),i=((r=o.sdp)==null?void 0:r.toLowerCase().indexOf("h264"))!==-1,e=((s=o.sdp)==null?void 0:s.toLowerCase().indexOf("vp8"))!==-1,t=((n=o.sdp)==null?void 0:n.toLowerCase().indexOf("h265"))!==-1,a.close(),{isH264EncodeSupported:i,isVp8EncodeSupported:e,isH265EncodeSupported:t}}catch(a){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1}}})},Ga=function(){return f(this,null,function*(){var t;if(ee.detail.isH264DecodeSupported&&ee.detail.isVp8DecodeSupported)return{isH264DecodeSupported:ee.detail.isH264DecodeSupported,isVp8DecodeSupported:ee.detail.isVp8DecodeSupported,isH265DecodeSupported:ee.detail.isH265DecodeSupported};let o,i=!1,e=!1;try{let r=new RTCPeerConnection;ut()?(r.addTransceiver(p.VIDEO,{direction:"recvonly"}),o=yield r.createOffer()):o=yield r.createOffer({offerToReceiveVideo:!0}),o.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),o.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0);let s=((t=o.sdp)==null?void 0:t.toLowerCase().indexOf("h265"))!==-1;return r.close(),{isH264DecodeSupported:i,isVp8DecodeSupported:e,isH265DecodeSupported:s}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}}})};function qg(){return f(this,null,function*(){let[o,i]=yield Promise.all([kl(),Ga()]);return{encode:{h264:o.isH264EncodeSupported,vp8:o.isVp8EncodeSupported,h265:o.isH265EncodeSupported},decode:{h264:i.isH264DecodeSupported,vp8:i.isVp8DecodeSupported,h265:i.isH265DecodeSupported}}})}var Wa=ca(o=>f(void 0,null,function*(){let i=Date.now(),e=Vl(),t=$a(),r=Ml();if(ee.detail.isWebRTCSupported=e,ee.detail.isMediaDevicesSupported=t,ee.detail.isWebCodecsSupported=r,ee.detail.isScreenShareSupported=en(),ee.detail.isSmallStreamSupported=qa(),o===37)return Object.assign(ee.detail,yield Qg()),ee.detail.isBrowserSupported=r,ee.result=t&&r,ee.result||y.error(`${navigator.userAgent} ${ws(ee.detail,!1)}`),$m(o),v.addNumber({key:523800,value:Date.now()-i}),ee;if(ee.result&&ee.detail.isH264EncodeSupported&&ee.detail.isVp8EncodeSupported&&ee.detail.isH265EncodeSupported&&ee.detail.isH264DecodeSupported&&ee.detail.isVp8DecodeSupported&&ee.detail.isH265DecodeSupported)return ee;let s=Ol(),{encode:n,decode:a}=yield qg(),{h264:c,vp8:l}=n,{h264:u}=a,{h265:h}=n,{vp8:m,h265:g}=a;if(!c||!l){let T=yield kl();y.warn(`detect encode again h264:${c} vp8:${l} result: ${JSON.stringify(T)}`),c=T.isH264EncodeSupported,l=T.isVp8EncodeSupported}if(c&&u&&pe&&Ke&&!Mo&&!jt){let{encode:T,decode:_}=yield zg();c=T,u=_}return ee.result=s&&e&&t&&(c||l)&&(u||m),ee.detail.isBrowserSupported=s,ee.detail.isWebRTCSupported=e,ee.detail.isH264EncodeSupported=c,ee.detail.isVp8EncodeSupported=l,ee.detail.isH265EncodeSupported=h,ee.detail.isH264DecodeSupported=u,ee.detail.isVp8DecodeSupported=m,ee.detail.isH265DecodeSupported=g,ee.result||y.error(`${navigator.userAgent} ${ws(ee.detail,!1)}`),$m(),v.addNumber({key:523800,value:Date.now()-i}),ee})),jg=function(){return ee.result},en=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},Xg=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype,Fa=null;function zg(){return f(this,null,function*(){return Fa||(Fa=new Promise(o=>f(this,null,function*(){let i={encode:!1,decode:!1},e=()=>{};try{let t=document.createElement("canvas"),r=t.getContext("2d");t.width=320,t.height=240;let s=setInterval(()=>{r.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(s),clearTimeout(a),l.close(),u.close(),c.getTracks().forEach(_=>_.stop())},a=setTimeout(()=>{e(),o(i)},2*1e3);let c=t.captureStream(),l=new RTCPeerConnection({}),u=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});l.addEventListener("icecandidate",_=>u.addIceCandidate(_.candidate)),u.addEventListener("icecandidate",_=>l.addIceCandidate(_.candidate)),l.addTrack(c.getVideoTracks()[0],c);let h=yield l.createOffer();yield l.setLocalDescription(h),yield u.setRemoteDescription(h);let m=yield u.createAnswer(),g=Nl.default.parse(m.sdp),T=g.media[0].rtp.findIndex(_=>_.codec==="H264");g.media[0].rtp=[g.media[0].rtp[T]],g.media[0].fmtp=g.media[0].fmtp.filter(_=>_.payload===g.media[0].rtp[0].payload),g.media[0].rtcpFb&&(g.media[0].rtcpFb=g.media[0].rtcpFb.filter(_=>_.payload===g.media[0].rtp[0].payload)),m.sdp=Nl.default.write(g),yield u.setLocalDescription(m),yield l.setRemoteDescription(m),n=setInterval(()=>f(this,null,function*(){i.encode&&i.decode&&(e(),o(i));let[_,S]=yield Promise.all([l.getSenders()[0].getStats(),u.getReceivers()[0].getStats()]);i.encode||_.forEach(R=>{R.type==="outbound-rtp"&&R.mediaType===p.VIDEO&&R.bytesSent>0&&(i.encode=!0)}),i.decode||S.forEach(R=>{R.type==="inbound-rtp"&&R.mediaType===p.VIDEO&&R.bytesReceived>0&&(i.decode=!0)})}),100)}catch(t){e(),y.warn("detectH264Supported failed",t),o({encode:!0,decode:!0})}})).then(o=>(o.encode||(o.decode=!0),(!o.encode||!o.decode)&&y.warn(`detectH264Supported encode: ${o.encode} decode: ${o.decode} ${Jt}`),o)),Fa)})}var Ha=null;function Qg(){return f(this,null,function*(){return Ha||(Ha=new Promise(o=>f(this,null,function*(){let i={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!Ml()){o(i);return}let e=null,t=null,r=null,s=()=>{r&&clearTimeout(r),e=null,t=null};try{e=document.createElement("canvas"),t=e.getContext("2d"),e.width=320,e.height=240;let n=0,a=()=>{!t||!e||(t.fillStyle=`hsl(${n%360}, 50%, 50%)`,t.fillRect(0,0,e.width,e.height),t.fillStyle="white",t.font="20px Arial",t.fillText(`Frame ${n}`,10,30),n++)};r=setTimeout(()=>{s(),o(i)},5e3);let c=[{type:"h264",encodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"},width:320,height:240,bitrate:1e6},decodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"}}},{type:"vp8",encodeConfig:{codec:"vp8",width:320,height:240,bitrate:1e6},decodeConfig:{codec:"vp8"}}];(yield Promise.all(c.map(u=>f(this,null,function*(){let h={type:u.type,encodeSupported:!1,decodeSupported:!1},m;try{m=yield new Promise((g,T)=>f(this,null,function*(){try{let _=new VideoEncoder({output:R=>{g(R),h.encodeSupported=!0},error:T});_.configure(u.encodeConfig),a();let S=new VideoFrame(e,{timestamp:0});_.encode(S,{keyFrame:!0}),S.close(),yield _.flush(),_.close()}catch(_){T(_)}}))}catch(g){return y.warn(`${u.type} encoder error:`,g),h}try{yield new Promise((g,T)=>f(this,null,function*(){try{let _=new VideoDecoder({output:S=>{h.decodeSupported=!0,g(0),S.close()},error:T});_.configure(u.decodeConfig),_.decode(m),yield _.flush(),_.close()}catch(_){T(_)}}))}catch(g){y.warn(`${u.type} decoder error:`,g)}return h})))).forEach(u=>{u.type==="h264"?(i.isH264EncodeSupported=u.encodeSupported,i.isH264DecodeSupported=u.decodeSupported):u.type==="vp8"&&(i.isVp8EncodeSupported=u.encodeSupported,i.isVp8DecodeSupported=u.decodeSupported)}),s(),o(i)}catch(n){s(),y.warn("detectWebCodecsSupported failed:",n),o(i)}})),Ha)})}var Yg=(o,i,e)=>{location.protocol==="http:"&&!zt&&(o[i]=()=>{throw new N({code:I.INVALID_OPERATION,message:$e.NOT_SUPPORTED_HTTP})})},fr=function(o){return o.type==="candidate-pair"&&o.nominated&&(o.state==="in-progress"||o.state==="succeeded")?!(de(o.selected)&&!o.selected):!1};function Jm(){let o="";if(screen.width){let i=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";o+=`${i} * ${e}`}return o}function qm(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function jm(){let o={isSupported:!1},i=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<i.length;e++)if(i[e]in window){o.isSupported=!0;break}return o.isSupported}function Xm(){return"captureStream"in HTMLCanvasElement.prototype}function Ja(){return ko||Ie||dt&&dt<63?!1:!!(Ol()&&Xm())}function zm(){return!(dt<74||xr||je<11||Do<46)}function qa(){return Ja()||zm()}var Zg=function(){if(E(window.RTCRtpTransceiver)||!ut()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let o=null,i=!1;try{o=new RTCPeerConnection({sdpSemantics:lr}),o.addTransceiver(p.AUDIO),i=!0}catch(e){}return o==null||o.close(),i};function Gr(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function _r(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function _i(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function ut(){return je===11&&!rl?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var Wo=!(!ut()||Ke&&dt<86);function Kg(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var tn="RTCRtpSender"in window;function wl(){return tn&&"replaceTrack"in window.RTCRtpSender.prototype}function rn(){return tn&&"setParameters"in window.RTCRtpSender.prototype&&_r()}var xl="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,gi=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Ll=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Pl=typeof InputDeviceInfo!="undefined"&&"getCapabilities"in InputDeviceInfo.prototype,qi=tn&&"createEncodedStreams"in window.RTCRtpSender.prototype&&Po()>=86,Jo="RTCRtpScriptTransform"in window,on=tn&&(qi||Jo),Vl=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(i=>i in window).length>0};function Qm(){let o={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return E(window.AudioDecoder)||(o.AudioDecoder=!0),E(window.AudioEncoder)||(o.AudioEncoder=!0),E(window.VideoDecoder)||(o.VideoDecoder=!0),E(window.VideoEncoder)||(o.VideoEncoder=!0),E(window.ImageDecoder)||(o.ImageDecoder=!0),o}function Ym(){return"mediaSession"in navigator&&!E(navigator.mediaSession.setActionHandler)}function Zm(){return!E(window.WebTransport)}function eT(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function tT(){let o={browser:`${pi.name}/${pi.version}`,os:Da(),displayResolution:Jm(),isScreenShareSupported:en(),isWebRTCSupported:Vl(),isGetUserMediaSupported:qm(),isWebAudioSupported:jm(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Qm(),isMediaSessionSupported:Ym(),isWebTransportSupported:Zm()};return navigator.userAgent.includes("miniProgram")&&(o.browser=`mini/${o.browser}`),o}var Km="checkResult";function $m(o=30){Bo.setItem(Km+o,{ua:navigator.userAgent,checkResult:ee})}function Ul(o){Ji();let i=Bo.getItem(Km+o);i&&i.ua===navigator.userAgent&&i.checkResult&&iT(i.checkResult.detail,ee.detail)&&(ee=i.checkResult),Wa(o)}function iT(o,i){return ft(o)?Object.keys(i).every(e=>e in o):!1}function Wr(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var ja="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;function Gm(o){return{h264:1,h265:2,vp8:3,vp9:4,av1:5}[o]}var Wm=!1;function Bl(){return f(this,null,function*(){var o;try{if(Wm||!((o=navigator==null?void 0:navigator.mediaCapabilities)!=null&&o.encodingInfo))return;let i=Ur(),e=nl();if(i===0||e===0)return;Wm=!0;let t=["H264","VP8","VP9","AV1","H265"],[r,s]=yield Promise.all([ep(t),tp(t)]);r&&Object.keys(r).forEach(n=>{let a=Gm(n.toLowerCase());v.addEnum({key:513707,value:+`${a}${+r[n].supported}${+r[n].powerEfficient}${i}${e}`,useUV:!1})}),s&&Object.keys(s).forEach(n=>{let a=Gm(n.toLowerCase());v.addEnum({key:514713,value:+`${a}${+s[n].supported}${+s[n].powerEfficient}${i}${e}`,useUV:!1})})}catch(i){y.info("detectVideoCodecCapabilities failed",i)}})}function ep(o,i=1920,e=1080,t=30,r=3e3){return f(this,null,function*(){let s={};try{for(let n of o){let a=yield navigator.mediaCapabilities.encodingInfo({type:"webrtc",video:{contentType:`video/${n}`,width:i,height:e,bitrate:r,framerate:t}});s[n]=a}}catch(n){}return s})}function tp(o,i=1920,e=1080,t=30,r=3e3){return f(this,null,function*(){let s={};try{for(let n of o){let a=yield navigator.mediaCapabilities.decodingInfo({type:"webrtc",video:{contentType:`video/${n}`,width:i,height:e,bitrate:r,framerate:t}});s[n]=a}}catch(n){}return s})}var rp=He(Qe(),1);var ip=Symbol("instance"),GA=Symbol("abortCtrl"),Xa=Symbol("cacheResult"),sn=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,cn.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},nn=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function rT(o){return typeof o=="object"&&o&&"then"in o}var an=new Map;function Te(o,i,e={}){return(t,r,s)=>{let n=e.action||r;if(!e.context){let c=an.get(t)||[];an.has(t)||an.set(t,c),c.push({from:o,to:i,action:n})}let a=s.value;s.value=function(...c){let l=this;if(e.context&&(l=G.get(typeof e.context=="function"?e.context.call(this,...c):e.context)),l.state===i)return e.sync?l[Xa]:Promise.resolve(l[Xa]);l.state instanceof sn&&l.state.action==e.abortAction&&l.state.abort(l);let u=null;Array.isArray(o)?o.length==0?l.state instanceof sn&&l.state.abort(l):(typeof l.state!="string"||!o.includes(l.state))&&(u=new nn(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${o.join("|")}`)):o!==l.state&&(u=new nn(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${o}`));let h=S=>{if(e.fail&&e.fail.call(this,S),e.sync){if(e.ignoreError)return S;throw S}else return e.ignoreError?Promise.resolve(S):Promise.reject(S)};if(u)return h(u);let m=l.state,g=new sn(m,i,n);cn.call(l,g);let T=S=>{var R;return l[Xa]=S,g.aborted||(cn.call(l,i),(R=e.success)===null||R===void 0||R.call(this,l[Xa])),S},_=S=>(cn.call(l,m,S),h(S));try{let S=a.apply(this,c);return rT(S)?S.then(T).catch(_):e.sync?T(S):Promise.resolve(T(S))}catch(S){return _(new nn(l._state,`${l.name} ${n} from ${o} to ${i} failed: ${S}`,S instanceof Error?S:new Error(String(S))))}}}}var oT=typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{};function cn(o,i){let e=this._state;this._state=o;let t=o.toString();o&&this.emit(t,e),this.emit(G.STATECHANGED,o,e,i),this.updateDevTools({value:o,old:e,err:i instanceof Error?i.message:String(i)})}var G=class o extends rp.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=o.INIT,i||(i=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let r=t[ip];r?this.name=r.name+"-"+r.count++:t[ip]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=an.get(i)||[],t=new Set,r=[],s=[],n=new Set,a=Object.getPrototypeOf(i);an.has(a)&&(a.stateDiagram.forEach(l=>t.add(l)),a.allStates.forEach(l=>n.add(l))),e.forEach(({from:l,to:u,action:h})=>{typeof l=="string"?r.push({from:l,to:u,action:h}):l.length?l.forEach(m=>{r.push({from:m,to:u,action:h})}):s.push({to:u,action:h})}),r.forEach(({from:l,to:u,action:h})=>{n.add(l),n.add(u),n.add(h+"ing"),t.add(`${l} --> ${h}ing : ${h}`),t.add(`${h}ing --> ${u} : ${h} \u{1F7E2}`),t.add(`${h}ing --> ${l} : ${h} \u{1F534}`)}),s.forEach(({to:l,action:u})=>{t.add(`${u}ing --> ${l} : ${u} \u{1F7E2}`),n.forEach(h=>{h!==l&&t.add(`${h} --> ${u}ing : ${u}`)})});let c=[...t];return Object.defineProperties(i,{stateDiagram:{value:c},allStates:{value:n}}),c}static get(i){let e;return typeof i=="string"?(e=o.instances.get(i),e||o.instances.set(i,e=new o(i,void 0,Object.create(o.prototype)))):(e=o.instances2.get(i),e||o.instances2.set(i,e=new o(i.constructor.name,void 0,Object.create(o.prototype)))),e}static getState(i){var e;return(e=o.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){oT(o.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){cn.call(this,i)}};G.STATECHANGED="stateChanged";G.UPDATEAFSM="updateAFSM";G.INIT="[*]";G.ON="on";G.OFF="off";G.instances=new Map;G.instances2=new WeakMap;var Hl=typeof window!="undefined",op=Hl&&window.requestIdleCallback||function(o){let i=Date.now();return setTimeout(()=>{o({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-i))}})},1e3)},sT=Hl&&window.cancelIdleCallback||function(o){clearTimeout(o)},sp=Hl&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),xe=class xe{static generateTaskID(){return this.currentTaskID++}static run(i,e,t){t!=null&&t.fps&&(t.delay=t.delay||Number((1e3/t.fps).toFixed(2))),i==="interval"?t=D({delay:2e3,count:0,backgroundTask:!0},t):i==="ric"?t=D({delay:1e4,count:0},t):i==="raf"?t=D({fps:60,delay:16.6,count:0,backgroundTask:!0},t):t=D({delay:2e3,count:0,backgroundTask:!0},t);let r=w(D({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:i,callback:e},t),{delay:t.delay});return this.taskMap.set(r.taskID,r),this[i](r),r.taskID}static interval(i){let e=()=>{i.callback(),i.loopCount+=1,xe.isBreakLoop(i)};return i.intervalID=setInterval(e,i.delay)}static intervalInWorker(i){xe.sharedWorker||(xe.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
|
|
9
|
+
`,h+=s)),o&&(h+=`
|
|
10
|
+
Refer to: ${Of("en",a)}
|
|
11
|
+
`),h}var Nm=mi($f(),1);var V_=1,F_=0,Nd=class{constructor(t=!0){l(this,"countMap",new Map);l(this,"distributionMap",new Map);l(this,"version");l(this,"log",$.createLogger({id:"kv"}));t&&(V.on("102",({track:e,cost:r})=>{this.addSuccessEvent({key:e.kind===M.AUDIO?501700:511700,cost:r})}),V.on("103",({track:e,error:r})=>{this.addFailedEvent({key:e.kind===M.AUDIO?501700:511700,error:r})}),V.on("266",({enable:e})=>{this.log.info(`${e?"enable":"disable"} sso`),e?this.addSuccessEvent({key:525701}):this.addFailedEvent({key:525701})}))}getReportData(){let t={msg_sdk_basic_info:{uint32_sdk_version:Qc(this.version||nt),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,r])=>({uint32_key:e,uint32_count:r})),stats_distribution:[...this.distributionMap.entries()].map(([e,r])=>({uint32_key:e,distribution_items:[...r.entries()].map(([o,s])=>({uint32_item_key:o,uint32_item_value:s}))}))};return this.countMap.clear(),this.distributionMap.clear(),t}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(t){let e=+String(t).slice(-3);return e>=700&&e<799}isErrorCodeKey(t){let e=+String(t).slice(-3);return e>=600&&e<699}isCountKey(t){let e=+String(t).slice(-3);return e>=0&&e<599}isNumberKey(t){let e=+String(t).slice(-3);return e>=800&&e<899}addCount({key:t,useUV:e=!1}){if(!this.isCountKey(t)){this.log.debug(`${t} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(t)||this.countMap.set(t,(this.countMap.get(t)||0)+1)}addEnum({key:t,value:e,useUV:r=!0}){var s;if(!this.isEnumKey(t))return this.log.debug(`${t} is not enum key, last 3 number should be 700~799`);if(r&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);let o=((s=this.distributionMap)==null?void 0:s.get(t))||new Map;o.set(e,(o.get(e)||0)+1),this.distributionMap.set(t,o)}addNumber({key:t,value:e,split:r=100,useUV:o=!1,max:s=5e3}){var u;if(!this.isNumberKey(t))return this.log.debug(`${t} is not number key, last 3 number should be 800~899`);if(o&&this.countMap.has(t))return;e>s&&(e=s),this.countMap.set(t,(this.countMap.get(t)||0)+1);let n=((u=this.distributionMap)==null?void 0:u.get(t))||new Map,a=0;if(Le(r))a=Math.floor(e/r);else for(let m=r.length-1;m>0;m--)if(e>r[m]){a=m;break}n.set(a,(n.get(a)||0)+1),this.distributionMap.set(t,n)}addSuccessEvent({key:t,cost:e,timeKey:r,split:o}){if(t&&(this.addEnum({key:t,value:V_,useUV:!1}),e)){let s=+String(t).slice(-3);s<800&&s>=700?this.addNumber({key:r||t+100,value:e,split:o}):r||this.log.debug(`time stat ignored, ${t}`)}}addFailedEvent({key:t,error:e}){if(!t)return;let r=q.UNKNOWN;e&&(Le(e)?r=e:(!O(e.extraCode)||!O(e.code))&&(r=e.extraCode||e.code)),this.addEnum({key:t,value:F_,useUV:!1}),this.addEnum({key:t,value:Math.abs(r),useUV:!1})}},Dd=(Y=>(Y[Y.enterRoom=500700]="enterRoom",Y[Y.exitRoom=500701]="exitRoom",Y[Y.switchRole=500702]="switchRole",Y[Y.destroy=500703]="destroy",Y[Y.startLocalAudio=500704]="startLocalAudio",Y[Y.updateLocalAudio=500705]="updateLocalAudio",Y[Y.stopLocalAudio=500706]="stopLocalAudio",Y[Y.startLocalVideo=500707]="startLocalVideo",Y[Y.updateLocalVideo=500708]="updateLocalVideo",Y[Y.stopLocalVideo=500709]="stopLocalVideo",Y[Y.startScreenShare=500710]="startScreenShare",Y[Y.updateScreenShare=500711]="updateScreenShare",Y[Y.stopScreenShare=500712]="stopScreenShare",Y[Y.startRemoteVideo=500713]="startRemoteVideo",Y[Y.updateRemoteVideo=500714]="updateRemoteVideo",Y[Y.stopRemoteVideo=500715]="stopRemoteVideo",Y[Y.muteRemoteAudio=500716]="muteRemoteAudio",Y[Y.setRemoteAudioVolume=500717]="setRemoteAudioVolume",Y[Y.use=500718]="use",Y[Y.switchRoom=500719]="switchRoom",Y[Y.sendSEIMessage=5e5]="sendSEIMessage",Y[Y.sendCustomMessage=500001]="sendCustomMessage",Y))(Dd||{}),Rm=(T=>(T[T.AudioMixer=550700]="AudioMixer",T[T.AIDenoiser=551700]="AIDenoiser",T[T.VirtualBackground=570700]="VirtualBackground",T[T.Beauty=571700]="Beauty",T[T.Watermark=572700]="Watermark",T[T.BasicBeauty=574700]="BasicBeauty",T[T.CDNStreaming=590700]="CDNStreaming",T[T.DeviceDetector=591700]="DeviceDetector",T[T.Debug=592700]="Debug",T[T.SmallStreamAutoSwitcher=593700]="SmallStreamAutoSwitcher",T[T.VideoMixer=594700]="VideoMixer",T[T.AudioProcessor=595700]="AudioProcessor",T))(Rm||{}),vm=(T=>(T[T.AudioMixer=550701]="AudioMixer",T[T.AIDenoiser=551701]="AIDenoiser",T[T.VirtualBackground=570701]="VirtualBackground",T[T.Beauty=571701]="Beauty",T[T.Watermark=572701]="Watermark",T[T.BasicBeauty=574701]="BasicBeauty",T[T.CDNStreaming=590701]="CDNStreaming",T[T.DeviceDetector=591701]="DeviceDetector",T[T.Debug=592701]="Debug",T[T.SmallStreamAutoSwitcher=593701]="SmallStreamAutoSwitcher",T[T.VideoMixer=594701]="VideoMixer",T[T.AudioProcessor=595701]="AudioProcessor",T))(vm||{}),Cm=(T=>(T[T.AudioMixer=550702]="AudioMixer",T[T.AIDenoiser=551702]="AIDenoiser",T[T.VirtualBackground=570702]="VirtualBackground",T[T.Beauty=571702]="Beauty",T[T.Watermark=572702]="Watermark",T[T.BasicBeauty=574702]="BasicBeauty",T[T.CDNStreaming=590702]="CDNStreaming",T[T.DeviceDetector=591702]="DeviceDetector",T[T.Debug=592702]="Debug",T[T.SmallStreamAutoSwitcher=593702]="SmallStreamAutoSwitcher",T[T.VideoMixer=594702]="VideoMixer",T[T.AudioProcessor=595702]="AudioProcessor",T))(Cm||{});var on=(x=>(x[x.DECODER_TYPE=514700]="DECODER_TYPE",x[x.DECODER_HW_SW=514701]="DECODER_HW_SW",x[x.DECODE_RESULT=514702]="DECODE_RESULT",x[x.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",x[x.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",x[x.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",x[x.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",x[x.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",x[x.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",x[x.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",x[x.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",x[x.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",x[x.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",x[x.DECODE_CAPABILITIES=514713]="DECODE_CAPABILITIES",x[x.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",x[x.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",x[x.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",x))(on||{});var $_=new Nd(!0),Zo=new Nd(!1);var X=$_;var ve={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}},B_=new Map([[$t,["Firefox",ed]],[js,["Edg",id]],[Ys,["Chrome",Td]],[_t,["Safari",Ii]],[wr,["TBS",nd]],[qs,["XWEB",ad]],[zs&&so,["WeChat",cd]],[na,["QQ(Win)",dd]],[Xs,["QQ(Mobile)",Ws]],[Js,["QQ(Mobile X5)",Ws]],[aa,["QQ(Mac)",ud]],[ca,["QQ(iPad)",ld]],[ua,["MI",md]],[la,["HW",pd]],[pa,["Samsung",hd]],[ha,["OPPO",fd]],[fa,["VIVO",gd]],[Go,["EDGE",rd]],[oa,["SogouMobile",od]],[sa,["Sogou",sd]]]);function Od(){let i=B_.get(!0),t=i?i[0]:"unknown",e=i?i[1]:"unknown";return{browserName:t,browserVersion:e}}var Dm=function(){return!(Jl||Go||js&&ql<80||$t&&td<56)},wm=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(t=>t in window)},xd=function(){if(!navigator.mediaDevices)return Ni()||$.error(Yt.NOT_SUPPORTED_MEDIA),!1;let i=["getUserMedia","enumerateDevices"];return i.filter(t=>t in navigator.mediaDevices).length===i.length},Bf=!1;function Ni(){return location.protocol==="http:"&&!xr?(Bf||$.error(Be({key:$e.NOT_SUPPORTED_HTTP})),Bf=!0,!0):!1}var Mm=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},Om=function(){return y(this,null,function*(){var o,s,n;if(ve.detail.isH264EncodeSupported&&ve.detail.isVp8EncodeSupported)return{isH264EncodeSupported:ve.detail.isH264EncodeSupported,isVp8EncodeSupported:ve.detail.isVp8EncodeSupported,isH265EncodeSupported:ve.detail.isH265EncodeSupported};let i,t=!1,e=!1,r=!1;try{let a=new RTCPeerConnection,u=document.createElement(M.CANVAS);u.getContext("2d");let m=u.captureStream(0);return a.addTrack(m.getVideoTracks()[0],m),i=yield a.createOffer(),t=((o=i.sdp)==null?void 0:o.toLowerCase().indexOf("h264"))!==-1,e=((s=i.sdp)==null?void 0:s.toLowerCase().indexOf("vp8"))!==-1,r=((n=i.sdp)==null?void 0:n.toLowerCase().indexOf("h265"))!==-1,a.close(),{isH264EncodeSupported:t,isVp8EncodeSupported:e,isH265EncodeSupported:r}}catch(a){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1}}})},qf=function(){return y(this,null,function*(){var r;if(ve.detail.isH264DecodeSupported&&ve.detail.isVp8DecodeSupported)return{isH264DecodeSupported:ve.detail.isH264DecodeSupported,isVp8DecodeSupported:ve.detail.isVp8DecodeSupported,isH265DecodeSupported:ve.detail.isH265DecodeSupported};let i,t=!1,e=!1;try{let o=new RTCPeerConnection;Ld()?(o.addTransceiver(M.VIDEO,{direction:"recvonly"}),i=yield o.createOffer()):i=yield o.createOffer({offerToReceiveVideo:!0}),i.sdp.toLowerCase().indexOf("h264")!==-1&&(t=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0);let s=((r=i.sdp)==null?void 0:r.toLowerCase().indexOf("h265"))!==-1;return o.close(),{isH264DecodeSupported:t,isVp8DecodeSupported:e,isH265DecodeSupported:s}}catch(o){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}}})};function H_(){return y(this,null,function*(){let[i,t]=yield Promise.all([Om(),qf()]);return{encode:{h264:i.isH264EncodeSupported,vp8:i.isVp8EncodeSupported,h265:i.isH265EncodeSupported},decode:{h264:t.isH264DecodeSupported,vp8:t.isVp8DecodeSupported,h265:t.isH265DecodeSupported}}})}var kd=Yc(i=>y(void 0,null,function*(){let t=Date.now(),e=Pm(),r=xd(),o=wm();if(ve.detail.isWebRTCSupported=e,ve.detail.isMediaDevicesSupported=r,ve.detail.isWebCodecsSupported=o,ve.detail.isScreenShareSupported=Ca(),ve.detail.isSmallStreamSupported=Pd(),i===37)return Object.assign(ve.detail,yield q_()),ve.detail.isBrowserSupported=o,ve.result=r&&o,ve.result||$.error(`${navigator.userAgent} ${ta(ve.detail,!1)}`),Hf(i),X.addNumber({key:523800,value:Date.now()-t}),ve;if(ve.result&&ve.detail.isH264EncodeSupported&&ve.detail.isVp8EncodeSupported&&ve.detail.isH265EncodeSupported&&ve.detail.isH264DecodeSupported&&ve.detail.isVp8DecodeSupported&&ve.detail.isH265DecodeSupported)return ve;let s=Dm(),{encode:n,decode:a}=yield H_(),{h264:u,vp8:m}=n,{h264:h}=a,{h265:f}=n,{vp8:T,h265:A}=a;if(!u||!m){let C=yield Om();$.warn(`detect encode again h264:${u} vp8:${m} result: ${JSON.stringify(C)}`),u=C.isH264EncodeSupported,m=C.isVp8EncodeSupported}if(u&&h&&pt&&Xr&&!qs&&!wr){let{encode:C,decode:N}=yield j_();u=C,h=N}return ve.result=s&&e&&r&&(u||m)&&(h||T),ve.detail.isBrowserSupported=s,ve.detail.isWebRTCSupported=e,ve.detail.isH264EncodeSupported=u,ve.detail.isVp8EncodeSupported=m,ve.detail.isH265EncodeSupported=f,ve.detail.isH264DecodeSupported=h,ve.detail.isVp8DecodeSupported=T,ve.detail.isH265DecodeSupported=A,ve.result||$.error(`${navigator.userAgent} ${ta(ve.detail,!1)}`),Hf(),X.addNumber({key:523800,value:Date.now()-t}),ve})),W_=function(){return ve.result},Ca=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},G_=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype,wd=null;function j_(){return y(this,null,function*(){return wd||(wd=new Promise(i=>y(this,null,function*(){let t={encode:!1,decode:!1},e=()=>{};try{let r=document.createElement("canvas"),o=r.getContext("2d");r.width=320,r.height=240;let s=setInterval(()=>{o.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(s),clearTimeout(a),m.close(),h.close(),u.getTracks().forEach(N=>N.stop())},a=setTimeout(()=>{e(),i(t)},2*1e3);let u=r.captureStream(),m=new RTCPeerConnection({}),h=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});m.addEventListener("icecandidate",N=>h.addIceCandidate(N.candidate)),h.addEventListener("icecandidate",N=>m.addIceCandidate(N.candidate)),m.addTrack(u.getVideoTracks()[0],u);let f=yield m.createOffer();yield m.setLocalDescription(f),yield h.setRemoteDescription(f);let T=yield h.createAnswer(),A=Nm.default.parse(T.sdp),C=A.media[0].rtp.findIndex(N=>N.codec==="H264");A.media[0].rtp=[A.media[0].rtp[C]],A.media[0].fmtp=A.media[0].fmtp.filter(N=>N.payload===A.media[0].rtp[0].payload),A.media[0].rtcpFb&&(A.media[0].rtcpFb=A.media[0].rtcpFb.filter(N=>N.payload===A.media[0].rtp[0].payload)),T.sdp=Nm.default.write(A),yield h.setLocalDescription(T),yield m.setRemoteDescription(T),n=setInterval(()=>y(this,null,function*(){t.encode&&t.decode&&(e(),i(t));let[N,w]=yield Promise.all([m.getSenders()[0].getStats(),h.getReceivers()[0].getStats()]);t.encode||N.forEach(x=>{x.type==="outbound-rtp"&&x.mediaType===M.VIDEO&&x.bytesSent>0&&(t.encode=!0)}),t.decode||w.forEach(x=>{x.type==="inbound-rtp"&&x.mediaType===M.VIDEO&&x.bytesReceived>0&&(t.decode=!0)})}),100)}catch(r){e(),$.warn("detectH264Supported failed",r),i({encode:!0,decode:!0})}})).then(i=>(i.encode||(i.decode=!0),(!i.encode||!i.decode)&&$.warn(`detectH264Supported encode: ${i.encode} decode: ${i.decode} ${Dr}`),i)),wd)})}var Md=null;function q_(){return y(this,null,function*(){return Md||(Md=new Promise(i=>y(this,null,function*(){let t={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!wm()){i(t);return}let e=null,r=null,o=null,s=()=>{o&&clearTimeout(o),e=null,r=null};try{e=document.createElement("canvas"),r=e.getContext("2d"),e.width=320,e.height=240;let n=0,a=()=>{!r||!e||(r.fillStyle=`hsl(${n%360}, 50%, 50%)`,r.fillRect(0,0,e.width,e.height),r.fillStyle="white",r.font="20px Arial",r.fillText(`Frame ${n}`,10,30),n++)};o=setTimeout(()=>{s(),i(t)},5e3);let u=[{type:"h264",encodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"},width:320,height:240,bitrate:1e6},decodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"}}},{type:"vp8",encodeConfig:{codec:"vp8",width:320,height:240,bitrate:1e6},decodeConfig:{codec:"vp8"}}];(yield Promise.all(u.map(h=>y(this,null,function*(){let f={type:h.type,encodeSupported:!1,decodeSupported:!1},T;try{T=yield new Promise((A,C)=>y(this,null,function*(){try{let N=new VideoEncoder({output:x=>{A(x),f.encodeSupported=!0},error:C});N.configure(h.encodeConfig),a();let w=new VideoFrame(e,{timestamp:0});N.encode(w,{keyFrame:!0}),w.close(),yield N.flush(),N.close()}catch(N){C(N)}}))}catch(A){return $.warn(`${h.type} encoder error:`,A),f}try{yield new Promise((A,C)=>y(this,null,function*(){try{let N=new VideoDecoder({output:w=>{f.decodeSupported=!0,A(0),w.close()},error:C});N.configure(h.decodeConfig),N.decode(T),yield N.flush(),N.close()}catch(N){C(N)}}))}catch(A){$.warn(`${h.type} decoder error:`,A)}return f})))).forEach(h=>{h.type==="h264"?(t.isH264EncodeSupported=h.encodeSupported,t.isH264DecodeSupported=h.decodeSupported):h.type==="vp8"&&(t.isVp8EncodeSupported=h.encodeSupported,t.isVp8DecodeSupported=h.decodeSupported)}),s(),i(t)}catch(n){s(),$.warn("detectWebCodecsSupported failed:",n),i(t)}})),Md)})}var z_=(i,t,e)=>{location.protocol==="http:"&&!xr&&(i[t]=()=>{throw new de({code:q.INVALID_OPERATION,message:Yt.NOT_SUPPORTED_HTTP})})},J_=function(i){return i.type==="candidate-pair"&&i.nominated&&(i.state==="in-progress"||i.state==="succeeded")?!(Xe(i.selected)&&!i.selected):!1};function zf(){let i="";if(screen.width){let t=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";i+=`${t} * ${e}`}return i}function Jf(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Xf(){let i={isSupported:!1},t=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<t.length;e++)if(t[e]in window){i.isSupported=!0;break}return i.isSupported}function Qf(){return"captureStream"in HTMLCanvasElement.prototype}function Yf(){return zs||mt||Qr&&Qr<63?!1:!!(Dm()&&Qf())}function Zf(){return!(Qr<74||Go||Mt<11||td<46)}function Pd(){return Yf()||Zf()}var X_=function(){if(O(window.RTCRtpTransceiver)||!Ld()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let i=null,t=!1;try{i=new RTCPeerConnection({sdpSemantics:Rl}),i.addTransceiver(M.AUDIO),t=!0}catch(e){}return i==null||i.close(),t};function Q_(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function Kf(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function Y_(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function Ld(){return Mt===11&&!tm?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var Z_=!(!Ld()||Xr&&Qr<86);function K_(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var Na="RTCRtpSender"in window;function eI(){return Na&&"replaceTrack"in window.RTCRtpSender.prototype}function tI(){return Na&&"setParameters"in window.RTCRtpSender.prototype&&Kf()}var rI="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,sn=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,xm=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,km=typeof InputDeviceInfo!="undefined"&&"getCapabilities"in InputDeviceInfo.prototype,Da=Na&&"createEncodedStreams"in window.RTCRtpSender.prototype&&Ed()>=86,eg="RTCRtpScriptTransform"in window,wa=Na&&(Da||eg),Pm=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(t=>t in window).length>0};function tg(){let i={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return O(window.AudioDecoder)||(i.AudioDecoder=!0),O(window.AudioEncoder)||(i.AudioEncoder=!0),O(window.VideoDecoder)||(i.VideoDecoder=!0),O(window.VideoEncoder)||(i.VideoEncoder=!0),O(window.ImageDecoder)||(i.ImageDecoder=!0),i}function rg(){return"mediaSession"in navigator&&!O(navigator.mediaSession.setActionHandler)}function ig(){return!O(window.WebTransport)}function iI(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function oI(){let i={browser:`${Jr.name}/${Jr.version}`,os:Zs(),displayResolution:zf(),isScreenShareSupported:Ca(),isWebRTCSupported:Pm(),isGetUserMediaSupported:Jf(),isWebAudioSupported:Xf(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:tg(),isMediaSessionSupported:rg(),isWebTransportSupported:ig()};return navigator.userAgent.includes("miniProgram")&&(i.browser=`mini/${i.browser}`),i}var og="checkResult";function Hf(i=30){en.setItem(og+i,{ua:navigator.userAgent,checkResult:ve})}function Lm(i){Ni();let t=en.getItem(og+i);t&&t.ua===navigator.userAgent&&t.checkResult&&sI(t.checkResult.detail,ve.detail)&&(ve=t.checkResult),kd(i)}function sI(i,t){return ir(i)?Object.keys(t).every(e=>e in i):!1}function Di(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var nI="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;function Wf(i){return{h264:1,h265:2,vp8:3,vp9:4,av1:5}[i]}var Gf=!1;function Um(){return y(this,null,function*(){var i;try{if(Gf||!((i=navigator==null?void 0:navigator.mediaCapabilities)!=null&&i.encodingInfo))return;let t=zo(),e=om();if(t===0||e===0)return;Gf=!0;let r=["H264","VP8","VP9","AV1","H265"],[o,s]=yield Promise.all([sg(r),ng(r)]);o&&Object.keys(o).forEach(n=>{let a=Wf(n.toLowerCase());X.addEnum({key:513707,value:+`${a}${+o[n].supported}${+o[n].powerEfficient}${t}${e}`,useUV:!1})}),s&&Object.keys(s).forEach(n=>{let a=Wf(n.toLowerCase());X.addEnum({key:514713,value:+`${a}${+s[n].supported}${+s[n].powerEfficient}${t}${e}`,useUV:!1})})}catch(t){$.info("detectVideoCodecCapabilities failed",t)}})}function sg(i,t=1920,e=1080,r=30,o=3e3){return y(this,null,function*(){let s={};try{for(let n of i){let a=yield navigator.mediaCapabilities.encodingInfo({type:"webrtc",video:{contentType:`video/${n}`,width:t,height:e,bitrate:o,framerate:r}});s[n]=a}}catch(n){}return s})}function ng(i,t=1920,e=1080,r=30,o=3e3){return y(this,null,function*(){let s={};try{for(let n of i){let a=yield navigator.mediaCapabilities.decodingInfo({type:"webrtc",video:{contentType:`video/${n}`,width:t,height:e,bitrate:o,framerate:r}});s[n]=a}}catch(n){}return s})}var cg=mi(yi(),1);var ag=Symbol("instance"),uR=Symbol("abortCtrl"),Ud=Symbol("cacheResult"),Ma=class{constructor(t,e,r){this.oldState=t,this.newState=e,this.action=r,this.aborted=!1}abort(t){this.aborted=!0,ka.call(t,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},Oa=class extends Error{constructor(t,e,r){super(e),this.state=t,this.message=e,this.cause=r}};function aI(i){return typeof i=="object"&&i&&"then"in i}var xa=new Map;function Ze(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let u=xa.get(r)||[];xa.has(r)||xa.set(r,u),u.push({from:i,to:t,action:n})}let a=s.value;s.value=function(...u){let m=this;if(e.context&&(m=le.get(typeof e.context=="function"?e.context.call(this,...u):e.context)),m.state===t)return e.sync?m[Ud]:Promise.resolve(m[Ud]);m.state instanceof Ma&&m.state.action==e.abortAction&&m.state.abort(m);let h=null;Array.isArray(i)?i.length==0?m.state instanceof Ma&&m.state.abort(m):(typeof m.state!="string"||!i.includes(m.state))&&(h=new Oa(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(h=new Oa(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i}`));let f=w=>{if(e.fail&&e.fail.call(this,w),e.sync){if(e.ignoreError)return w;throw w}else return e.ignoreError?Promise.resolve(w):Promise.reject(w)};if(h)return f(h);let T=m.state,A=new Ma(T,t,n);ka.call(m,A);let C=w=>{var x;return m[Ud]=w,A.aborted||(ka.call(m,t),(x=e.success)===null||x===void 0||x.call(this,m[Ud])),w},N=w=>(ka.call(m,T,w),f(w));try{let w=a.apply(this,u);return aI(w)?w.then(C).catch(N):e.sync?C(w):Promise.resolve(C(w))}catch(w){return N(new Oa(m._state,`${m.name} ${n} from ${i} to ${t} failed: ${w}`,w instanceof Error?w:new Error(String(w))))}}}}var cI=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function ka(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(le.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var le=class i extends cg.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=i.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[ag];o?this.name=o.name+"-"+o.count++:r[ag]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=xa.get(t)||[],r=new Set,o=[],s=[],n=new Set,a=Object.getPrototypeOf(t);xa.has(a)&&(a.stateDiagram.forEach(m=>r.add(m)),a.allStates.forEach(m=>n.add(m))),e.forEach(({from:m,to:h,action:f})=>{typeof m=="string"?o.push({from:m,to:h,action:f}):m.length?m.forEach(T=>{o.push({from:T,to:h,action:f})}):s.push({to:h,action:f})}),o.forEach(({from:m,to:h,action:f})=>{n.add(m),n.add(h),n.add(f+"ing"),r.add(`${m} --> ${f}ing : ${f}`),r.add(`${f}ing --> ${h} : ${f} \u{1F7E2}`),r.add(`${f}ing --> ${m} : ${f} \u{1F534}`)}),s.forEach(({to:m,action:h})=>{r.add(`${h}ing --> ${m} : ${h} \u{1F7E2}`),n.forEach(f=>{f!==m&&r.add(`${f} --> ${h}ing : ${h}`)})});let u=[...r];return Object.defineProperties(t,{stateDiagram:{value:u},allStates:{value:n}}),u}static get(t){let e;return typeof t=="string"?(e=i.instances.get(t),e||i.instances.set(t,e=new i(t,void 0,Object.create(i.prototype)))):(e=i.instances2.get(t),e||i.instances2.set(t,e=new i(t.constructor.name,void 0,Object.create(i.prototype)))),e}static getState(t){var e;return(e=i.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){cI(i.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){ka.call(this,t)}};le.STATECHANGED="stateChanged";le.UPDATEAFSM="updateAFSM";le.INIT="[*]";le.ON="on";le.OFF="off";le.instances=new Map;le.instances2=new WeakMap;var Fm=typeof window!="undefined",dg=Fm&&window.requestIdleCallback||function(i){let t=Date.now();return setTimeout(()=>{i({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-t))}})},1e3)},dI=Fm&&window.cancelIdleCallback||function(i){clearTimeout(i)},ug=Fm&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),It=class It{static generateTaskID(){return this.currentTaskID++}static run(t,e,r){r!=null&&r.fps&&(r.delay=r.delay||Number((1e3/r.fps).toFixed(2))),t==="interval"?r=j({delay:2e3,count:0,backgroundTask:!0},r):t==="ric"?r=j({delay:1e4,count:0},r):t==="raf"?r=j({fps:60,delay:16.6,count:0,backgroundTask:!0},r):r=j({delay:2e3,count:0,backgroundTask:!0},r);let o=pe(j({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:t,callback:e},r),{delay:r.delay});return this.taskMap.set(o.taskID,o),this[t](o),o.taskID}static interval(t){let e=()=>{t.callback(),t.loopCount+=1,It.isBreakLoop(t)};return t.intervalID=setInterval(e,t.delay)}static intervalInWorker(t){It.sharedWorker||(It.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
|
|
14
12
|
const timers = new Map();
|
|
15
13
|
self.onmessage = function(e) {
|
|
16
14
|
const { taskId, delay, type } = e.data;
|
|
@@ -23,15 +21,15 @@ Refer to: ${km("en",a)}
|
|
|
23
21
|
timers.delete(taskId);
|
|
24
22
|
}
|
|
25
23
|
};
|
|
26
|
-
`],{type:"application/javascript"}))),
|
|
27
|
-
${t.stack}`));let s=mr.enable?Vi(r,2002,Number(this._configs.sdkAppId)):JSON.stringify(r);this.sendRequest(Pi(this._configs.sdkAppId,nr.LOG),s)}sendRequest(i,e){setTimeout(()=>Ui({url:i,body:e,priority:"low"}).catch(()=>{}),2e3)}},se=new $l;var Ei=new WeakMap;function At({settings:o={retries:5,timeout:2e3},onError:i,onRetrying:e,onRetryFailed:t}){return function(r,s,n){let a=mi({retryFunction:n.value,settings:o,onError({error:c,retry:l,reject:u,retryFuncArgs:h}){var m;i?i.call(this,c,()=>{var g;(g=Ei.get(r))!=null&&g.has(s)?l():u(c)},u,h):(m=Ei.get(r))!=null&&m.has(s)?l():u(c)},onRetrying(c,l){var u;hi(e)&&e.call(this,c,l),(u=Ei.get(r))!=null&&u.has(s)&&(Ei.get(r).get(s).stopRetry=l)},onRetryFailed:t});return n.value=function(...c){let l=Ei.get(r);return l?l.set(s,{args:c}):Ei.set(r,new Map([[s,{args:c}]])),a.apply(this,c).finally(()=>{var u;return(u=Ei.get(r))==null?void 0:u.delete(s)})},n}}function ln({fnName:o,callback:i,validateArgs:e=!0}){return function(t,r,s){let n=s.value;return s.value=function(...a){var c,l;if((c=Ei.get(t))!=null&&c.has(o)){let{stopRetry:u,args:h}=Ei.get(t).get(o),m=!0;if(e){for(let g of h)if(!a.find(T=>T===g)){m=!1;break}}m&&(i&&i.apply(this,a),u&&u(),(l=Ei.get(t))==null||l.delete(o))}return n.apply(this,a)},s}}var Si=class extends G{constructor(e,t){super(e.id,`${t}-player`);this.kind=t;d(this,"id");d(this,"element",null);d(this,"track");d(this,"url");d(this,"attr");d(this,"mode");d(this,"muted");d(this,"_log");d(this,"_pausedRetryCount");d(this,"_isElementPlayingFired",!1);d(this,"_interval");d(this,"_delayDestroyTimeoutId",0);d(this,"_playSuccessResolve");d(this,"_isReplayByRecreateMediaStreamCalled",!1);d(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=vr,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${t}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&((e=this.element)==null?void 0:e.paused)===!1}get isPaused(){var e;return this._state==="PAUSED"||((e=this.element)==null?void 0:e.paused)===!0}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return f(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,t)=>{this._playSuccessResolve=e,this.element.play().then(e,t)})}catch(e){let t=V({key:L.PLAY_FAILED,data:{media:this.kind,error:e}});if(this._log.warn(e),t.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new N({code:I.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!vt?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(p.ENDED),this._interval>0&&re.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():tl?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return Ue(this.element,this.element).add(p.PLAYING,e).add(p.ENDED,e).add(p.PAUSE,e).add(p.ERROR,e).add(p.LOADEDDATA,e).add(p.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let t=this.handleTrackEvent.bind(this);ii==null||ii.create(e,e).add(p.ENDED,t).add(p.MUTE,t).add(p.UNMUTE,t),e.readyState===p.ENDED&&this.handleTrackEvent({type:p.ENDED}),e.muted&&this.handleTrackEvent({type:p.MUTE})}}bindAutoPlayEvent(){A.on(C.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&be(e)}unbindEvents(){this.element&&be(this.element),this.unbindTrackEvents(),A.off(C.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case p.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(p.PLAYING),this._interval&&(re.clearTask(this._interval),this._interval=-1);break;case p.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(p.ENDED);break;case p.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(p.PAUSE),Ie&&(this._interval=re.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case p.ERROR:if(this.element&&this.element.error){this.handlePaused(p.ERROR);let{code:r,message:s}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${r} message: ${s} userAgent: ${navigator.userAgent}`),se.uploadEvent({log:`stat-${this.kind}-${ct.PLAYER_ERROR}-${r}-${navigator.userAgent}`,error:this.element.error}),Zd||Ws?this.emit(he.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case p.LOADEDDATA:this.kind===p.VIDEO&&this.emit(he.LOADED_DATA);break;case p.LOADEDMETADATA:this.kind===p.VIDEO&&this.emit(he.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),se.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),v.addSuccessEvent({key:this.kind===p.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),se.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),v.addFailedEvent({key:this.kind===p.AUDIO?506700:516700,error:(t=this.element)==null?void 0:t.error}),this.emit(he.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,r)=>{Wt(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var s,n,a;this._log.warn(`element onerror ${(n=(s=this.element)==null?void 0:s.error)==null?void 0:n.code} fired after recreated mediaStream`),r((a=this.element)==null?void 0:a.error)}),Wt(5e3).then(()=>{var s,n;(!this.isPlaying||(s=this.element)!=null&&s.error)&&r((n=this.element)==null?void 0:n.error),t()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){return f(this,null,function*(){switch(e.type){case p.ENDED:this.handleStopped(p.ENDED);break;case p.MUTE:this.handlePaused(p.MUTE);break;case p.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&(this._log.warn("track unmuted and element is paused, resume"),yield this.resume()),!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(p.UNMUTE));break}})}handlePlaying(e){var t;this._log.debug("handlePlaying",e),(t=this._playSuccessResolve)==null||t.call(this,e),this.emit(he.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this._log.debug("handlePaused",e),this.emit(he.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this._log.debug("handleStopped",e),this.emit(he.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};O([At({settings:{retries:2,timeout:0},onError(e,t,r,s){s[0]=(s[0]||1e3)+1e3,t()}})],Si.prototype,"doReplayByRecreateMediaStream",1),O([Te([],"PLAYING",{sync:!0})],Si.prototype,"handlePlaying",1),O([Te("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],Si.prototype,"handlePaused",1),O([Te([],"STOPPED",{sync:!0})],Si.prototype,"handleStopped",1);var ji="trtc_autoplay",Gl=`${ji}_mask`,qo=`${ji}_wrapper`,np=`${ji}_header`,Wl=`${ji}_content`,za=`${ji}_action_wrapper`,Jl=`${ji}_question`,ql=`${ji}_collapse`,Qa=`${ji}_action_confirm`,ap=`${ji}_detail`,cp="#2473E8",Xl="dialog",aT=`${Xl}-show`,cT=`${Xl}-1`,dT=`${Xl}-2`,dp=!1,zl=()=>!!document.querySelector(`.${qo}`),up=`${di}/${Ft()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,lp=`<br><a href='${up}' target='_blank'>${Ft()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,lT=`${Ft()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${lp}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${lp}`}`,jl=class{constructor(){d(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");d(this,"_dialogNode",null);d(this,"_bodyPosition","");d(this,"_showDetail",!1);d(this,"_isCollapseClicked",!1);d(this,"_isQuestionClicked",!1);if(Ft()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!dp){let i=document.createElement("style");i.innerHTML=`.${Gl}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${Gl} div:not(.${za}){display:block !important;}.${qo}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${qo} a{color:${cp};}.${np}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Wl}{margin:8px 0;}.${za}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${ql}{margin-right:auto;cursor:pointer}.${Jl}{height:100%;line-height:16px;cursor:pointer;}.${Qa}{margin-left:8px;color:#fff;background:${cp};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${Qa}:hover{opacity:0.9;}.${ql},.${Qa},.${Wl},.${Jl}{font-size:14px;}@media screen and (max-width:750px){.${qo}{width:80vw;}}`,document.head.appendChild(i),dp=!0}this.addDiaLog()}createDiaLog(){let i=document.createElement("template");i.innerHTML=`<div class="${Gl}"><div class='${qo}'><div class='${np}'>${location.host}</div><div class='${Wl}'>${this.content}</div><div class='${ap}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${lT}</div><div class='${za}'></div></div></div>`.trim();let e=document.createElement("button");e.className=Qa,e.innerText=Ft()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=Jl,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
|
|
24
|
+
`],{type:"application/javascript"}))),It.sharedWorker.onmessage=e=>{var r;if(e.data.type==="tick"){let o=It.workerTasks.get(e.data.taskId);o&&(It.isBreakLoop(o)?((r=It.sharedWorker)==null||r.postMessage({type:"stop",taskId:o.taskID}),It.workerTasks.delete(o.taskID)):(o.callback(),o.loopCount+=1))}}),It.workerTasks.set(t.taskID,t),It.sharedWorker.postMessage({taskId:t.taskID,delay:t.delay,type:"start"})}static timeout(t){let e=()=>{if(t.callback(),t.loopCount+=1,!It.isBreakLoop(t))return t.timeoutID=setTimeout(e,t.delay)};return t.timeoutID=setTimeout(e,t.delay)}static ric(t){let e=Te(),r,o=()=>{if(r=Te()-e,r>=t.delay&&(e=Te()-Math.floor(r%t.delay),t.callback(),t.loopCount+=1),!It.isBreakLoop(t))return t.ricID=dg(o,{timeout:t.delay})};return t.ricID=dg(o,{timeout:t.delay})}static raf(t){let e=Te(),r,o=()=>{if(document.hidden&&t.backgroundTask)return r=Te()-e,e=Te(),t.callback(),t.loopCount+=1,It.isBreakLoop(t)?void 0:t.timeoutID=setTimeout(o,t.delay-Math.floor(r%t.delay));if(r=Te()-e,r>=t.delay&&(e=Te()-Math.floor(r%t.delay),t.callback(),t.loopCount+=1),!It.isBreakLoop(t))return t.rafID=requestAnimationFrame(o)};if(t.rafID=requestAnimationFrame(o),t.backgroundTask){let s=()=>{if(document.hidden){let n=Te()-e;n>=t.delay?o():t.timeoutID=setTimeout(o,t.delay-n)}};document.addEventListener("visibilitychange",s),t.onVisibilitychange=s,document.hidden&&s()}return t.taskID}static hasTask(t){return this.taskMap.has(t)}static clearTask(t){if(!this.taskMap.has(t))return!0;let{intervalID:e,timeoutID:r,rafID:o,ricID:s,onVisibilitychange:n}=this.taskMap.get(t);return e&&clearInterval(e),r&&clearTimeout(r),o&&ug&&ug(o),s&&dI(s),n&&document.removeEventListener("visibilitychange",n),this.taskMap.delete(t),!0}static isBreakLoop(t){return this.hasTask(t.taskID)?t.count!==0&&t.loopCount>=t.count?(this.clearTask(t.taskID),!0):!1:!0}};l(It,"taskMap",new Map),l(It,"currentTaskID",1),l(It,"sharedWorker",null),l(It,"workerTasks",new Map);var Vm=It,ft=Vm;var IR={STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",STREAM_UPDATED:"stream-updated",STREAM_SUBSCRIBED:"stream-subscribed",CONNECTION_STATE_CHANGED:"connection-state-changed",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",MUTE_AUDIO:"mute-audio",MUTE_VIDEO:"mute-video",UNMUTE_AUDIO:"unmute-audio",UNMUTE_VIDEO:"unmute-video",CLIENT_BANNED:"client-banned",NETWORK_QUALITY:"network-quality",AUDIO_VOLUME:"audio-volume",SEI_MESSAGE:M.SEI_MESSAGE,ERROR:"error"};var Qe={LOADED_DATA:M.LOADEDDATA,LOADED_META_DATA:M.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error",RESIZE:M.RESIZE};var Lr={};li(Lr,{create:()=>bt,remove:()=>ct});var Pa=new WeakMap;function bt(i,t){Pa.has(i)||Pa.set(i,[]);let e=Pa.get(i),o={add:(s,n)=>("addEventListener"in t?(e.push(t.removeEventListener.bind(t,s,n)),t.addEventListener(s,n)):(e.push(t.off.bind(t,s,n)),t.on(s,n)),o)};return o}function ct(i){let t=Pa.get(i);t&&(t.forEach(e=>e()),Pa.delete(i))}var $m=class{constructor(){l(this,"_roomIdMap",new Map);l(this,"_configs");typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:nt,env:pi.QCLOUD,browserVersion:Jr.name+Jr.version,ua:navigator.userAgent})}setConfig({sdkAppId:t,env:e,userId:r,roomId:o}){t!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(t)),this._configs.env=e,this._configs.userId=r,this._roomIdMap.set(r,String(o))}logSuccessEvent(t){xr||!$.isAbleToUpload||this._configs.env===pi.QCLOUD&&this.uploadEventToKibana(pe(j({},t),{result:"success"}))}logFailedEvent(t){if(xr||!$.isAbleToUpload)return;let{eventType:e,code:r,error:o,userId:s}=t,n={roomId:this._roomIdMap.get(s||this._configs.userId),userId:s,eventType:e,result:"failed",code:r||(o==null?void 0:o.extraCode)||(o==null?void 0:o.code)||q.UNKNOWN};this._configs.env===pi.QCLOUD&&this.uploadEventToKibana(pe(j({},n),{error:o}))}uploadEventToKibana(t){let e=`stat-${t.eventType}-${t.result}`;(t.eventType==="delta-join"||t.eventType==="delta-leave"||t.eventType==="delta-publish")&&(e=`${t.eventType}:${t.delta}`),this.uploadEvent({log:e,userId:t.userId}),t.result==="failed"&&(e=`stat-${t.eventType}-${t.result}-${t.code}`,this.uploadEvent({log:e,userId:t.userId,error:t.error}))}uploadEvent({log:t,userId:e,error:r}){let o={timestamp:Pc(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:nt,log:t};r&&(o.errorInfo=r.message,r.stack&&(o.errorInfo+=`
|
|
25
|
+
${r.stack}`));let s=no.enable?Ti(o,2002,Number(this._configs.sdkAppId)):JSON.stringify(o);this.sendRequest(Ei(this._configs.sdkAppId,to.LOG),s)}sendRequest(t,e){setTimeout(()=>_i({url:t,body:e,priority:"low"}).catch(()=>{}),2e3)}},je=new $m;var Ko=new WeakMap;function es({settings:i={retries:5,timeout:2e3},onError:t,onRetrying:e,onRetryFailed:r}){return function(o,s,n){let a=oo({retryFunction:n.value,settings:i,onError({error:u,retry:m,reject:h,retryFuncArgs:f}){var T;t?t.call(this,u,()=>{var A;(A=Ko.get(o))!=null&&A.has(s)?m():h(u)},h,f):(T=Ko.get(o))!=null&&T.has(s)?m():h(u)},onRetrying(u,m){var h;io(e)&&e.call(this,u,m),(h=Ko.get(o))!=null&&h.has(s)&&(Ko.get(o).get(s).stopRetry=m)},onRetryFailed:r});return n.value=function(...u){let m=Ko.get(o);return m?m.set(s,{args:u}):Ko.set(o,new Map([[s,{args:u}]])),a.apply(this,u).finally(()=>{var h;return(h=Ko.get(o))==null?void 0:h.delete(s)})},n}}var Kr=class extends le{constructor(e,r){super(e.id,`${r}-player`);this.kind=r;l(this,"id");l(this,"element",null);l(this,"track");l(this,"url");l(this,"attr");l(this,"mode");l(this,"muted");l(this,"_log");l(this,"_pausedRetryCount");l(this,"_isElementPlayingFired",!1);l(this,"_interval");l(this,"_delayDestroyTimeoutId",0);l(this,"_playSuccessResolve");l(this,"_isReplayByRecreateMediaStreamCalled",!1);l(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=Uo,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${r}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&((e=this.element)==null?void 0:e.paused)===!1}get isPaused(){var e;return this._state==="PAUSED"||((e=this.element)==null?void 0:e.paused)===!0}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return y(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,r)=>{this._playSuccessResolve=e,this.element.play().then(e,r)})}catch(e){let r=Be({key:$e.PLAY_FAILED,data:{media:this.kind,error:e}});if(this._log.warn(e),r.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new de({code:q.PLAY_NOT_ALLOWED,message:r})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!mr?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(M.ENDED),this._interval>0&&ft.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():Kl?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return bt(this.element,this.element).add(M.PLAYING,e).add(M.ENDED,e).add(M.PAUSE,e).add(M.ERROR,e).add(M.LOADEDDATA,e).add(M.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let r=this.handleTrackEvent.bind(this);Lr==null||Lr.create(e,e).add(M.ENDED,r).add(M.MUTE,r).add(M.UNMUTE,r),e.readyState===M.ENDED&&this.handleTrackEvent({type:M.ENDED}),e.muted&&this.handleTrackEvent({type:M.MUTE})}}bindAutoPlayEvent(){V.on(F.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&ct(e)}unbindEvents(){this.element&&ct(this.element),this.unbindTrackEvents(),V.off(F.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case M.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(M.PLAYING),this._interval&&(ft.clearTask(this._interval),this._interval=-1);break;case M.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(M.ENDED);break;case M.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(M.PAUSE),mt&&(this._interval=ft.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case M.ERROR:if(this.element&&this.element.error){this.handlePaused(M.ERROR);let{code:o,message:s}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${o} message: ${s} userAgent: ${navigator.userAgent}`),je.uploadEvent({log:`stat-${this.kind}-${hi.PLAYER_ERROR}-${o}-${navigator.userAgent}`,error:this.element.error}),Xl||ma?this.emit(Qe.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case M.LOADEDDATA:this.kind===M.VIDEO&&this.emit(Qe.LOADED_DATA);break;case M.LOADEDMETADATA:this.kind===M.VIDEO&&this.emit(Qe.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),je.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),X.addSuccessEvent({key:this.kind===M.AUDIO?506700:516700})}).catch(()=>{var r;this._log.error("replayByRecreateMediaStream failed"),je.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),X.addFailedEvent({key:this.kind===M.AUDIO?506700:516700,error:(r=this.element)==null?void 0:r.error}),this.emit(Qe.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((r,o)=>{ia(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var s,n,a;this._log.warn(`element onerror ${(n=(s=this.element)==null?void 0:s.error)==null?void 0:n.code} fired after recreated mediaStream`),o((a=this.element)==null?void 0:a.error)}),ia(5e3).then(()=>{var s,n;(!this.isPlaying||(s=this.element)!=null&&s.error)&&o((n=this.element)==null?void 0:n.error),r()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){return y(this,null,function*(){switch(e.type){case M.ENDED:this.handleStopped(M.ENDED);break;case M.MUTE:this.handlePaused(M.MUTE);break;case M.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&(this._log.warn("track unmuted and element is paused, resume"),yield this.resume()),!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(M.UNMUTE));break}})}handlePlaying(e){var r;this._log.debug("handlePlaying",e),(r=this._playSuccessResolve)==null||r.call(this,e),this.emit(Qe.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this._log.debug("handlePaused",e),this.emit(Qe.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this._log.debug("handleStopped",e),this.emit(Qe.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};K([es({settings:{retries:2,timeout:0},onError(e,r,o,s){s[0]=(s[0]||1e3)+1e3,r()}})],Kr.prototype,"doReplayByRecreateMediaStream",1),K([Ze([],"PLAYING",{sync:!0})],Kr.prototype,"handlePlaying",1),K([Ze("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],Kr.prototype,"handlePaused",1),K([Ze([],"STOPPED",{sync:!0})],Kr.prototype,"handleStopped",1);var wi="trtc_autoplay",Bm=`${wi}_mask`,nn=`${wi}_wrapper`,lg=`${wi}_header`,Hm=`${wi}_content`,Vd=`${wi}_action_wrapper`,Wm=`${wi}_question`,Gm=`${wi}_collapse`,Fd=`${wi}_action_confirm`,mg=`${wi}_detail`,pg="#2473E8",qm="dialog",lI=`${qm}-show`,mI=`${qm}-1`,pI=`${qm}-2`,hg=!1,zm=()=>!!document.querySelector(`.${nn}`),gg=`${Gr}/${Cr()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,fg=`<br><a href='${gg}' target='_blank'>${Cr()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,hI=`${Cr()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${fg}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${fg}`}`,jm=class{constructor(){l(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");l(this,"_dialogNode",null);l(this,"_bodyPosition","");l(this,"_showDetail",!1);l(this,"_isCollapseClicked",!1);l(this,"_isQuestionClicked",!1);if(Cr()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!hg){let t=document.createElement("style");t.innerHTML=`.${Bm}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${Bm} div:not(.${Vd}){display:block !important;}.${nn}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${nn} a{color:${pg};}.${lg}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Hm}{margin:8px 0;}.${Vd}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Gm}{margin-right:auto;cursor:pointer}.${Wm}{height:100%;line-height:16px;cursor:pointer;}.${Fd}{margin-left:8px;color:#fff;background:${pg};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${Fd}:hover{opacity:0.9;}.${Gm},.${Fd},.${Hm},.${Wm}{font-size:14px;}@media screen and (max-width:750px){.${nn}{width:80vw;}}`,document.head.appendChild(t),hg=!0}this.addDiaLog()}createDiaLog(){let t=document.createElement("template");t.innerHTML=`<div class="${Bm}"><div class='${nn}'><div class='${lg}'>${location.host}</div><div class='${Hm}'>${this.content}</div><div class='${mg}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${hI}</div><div class='${Vd}'></div></div></div>`.trim();let e=document.createElement("button");e.className=Fd,e.innerText=Cr()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let r=document.createElement("div");r.className=Wm,r.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
|
|
28
26
|
<svg class="icon" width="18" height="18" p-id="2030" t="1639646523624" version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
29
27
|
<path d="m464 784.35c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" p-id="2031"/>
|
|
30
28
|
<path d="m512 960c-247.04 0-448-200.96-448-448s200.96-448 448-448 448 200.96 448 448-200.96 448-448 448zm0-831.71c-211.58 0-383.71 172.13-383.71 383.71 0 211.55 172.13 383.71 383.71 383.71 211.55 0 383.71-172.16 383.71-383.71 0-211.58-172.16-383.71-383.71-383.71z" p-id="2032"/>
|
|
31
29
|
<path d="m512 673.7c-17.665 0-32.001-14.336-32.001-31.999v-54.112c0-52.353 40-92.352 75.328-127.65 25.887-25.92 52.672-52.672 52.672-74.017 0-53.343-43.072-96.735-95.999-96.735-53.823 0-95.999 41.536-95.999 94.559 0 17.665-14.336 31.999-32.001 31.999s-32.001-14.336-32.001-31.999c0-87.424 71.775-158.56 160-158.56s160 72.095 160 160.74c0 47.904-36.32 84.192-71.424 119.3-27.84 27.776-56.576 56.512-56.576 82.336v54.112c0 17.665-14.336 32.032-32.001 32.032z" p-id="2033"/>
|
|
32
30
|
</svg>
|
|
33
|
-
`,t.onclick=this.onQuestionClick.bind(this);let r=document.createElement("div");r.className=ql,r.innerText=`${Ft()?"\u8BE6\u60C5 >":"Detail >"}`,r.onclick=this.onCollapseClick.bind(this);let s=i.content.firstChild,n=s.querySelector(`.${za}`);return n.appendChild(r),n.appendChild(t),n.appendChild(e),s}addDiaLog(){zl()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${qo}`).onclick=i=>i.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",y.info("show autoplay dialog"),se.uploadEvent({log:aT}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){y.warn("confirm clicked, try resume stream"),A.emit(C.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let i=this._dialogNode.querySelector(`.${ap}`);i.style.visibility=`${this._showDetail?"hidden":"visible"}`,i.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||se.uploadEvent({log:cT}),this._isCollapseClicked=!0}onQuestionClick(){window.open(up,"_blank"),this._isQuestionClicked||se.uploadEvent({log:dT}),this._isQuestionClicked=!0}},hp=jl;var ot=class extends Si{constructor(e){super(e,p.VIDEO);d(this,"stat",{});d(this,"_calculateTimeout",-1);d(this,"viewMirror",!1);d(this,"objectFit");d(this,"container");d(this,"canvas");d(this,"_preSize",{width:0,height:0});this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,E(e.viewMirror)||(this.viewMirror=e.viewMirror),E(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return this._state!=="PLAYING"||this.element&&this.element.paused?!1:((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){var t;let e=document.createElement(p.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(t=this.container)==null||t.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var t;this.container=e,this.track&&this.elementToRender&&((t=this.container)==null||t.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(p.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(p.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent).add(p.RESIZE,this.handleElementEvent)}handleTrackEvent(e){var t;return e.type===p.MUTE&&((t=this.stat)!=null&&t.fps)&&(this.stat.fps=0),super.handleTrackEvent(e)}handleElementEvent(e){var r,s,n,a,c,l,u,h;if(this.mode===2)return;super.handleElementEvent(e);let t=e.type;if(t===p.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(r=this.container)==null?void 0:r.id}`),this.container&&this.container!==document.getElementById(this.container.id)&&(this._pausedRetryCount=vr,this._log.info(`view container ${(s=this.container)==null?void 0:s.id} is recreated`)),this._pausedRetryCount>0&&!zl()&&(this._log.info(`[${vr-this._pausedRetryCount+1}/${vr}] ${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let m=this.element.style.transform;t===p.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=m.replace("scaleX(-1)",""):t===p.LEAVE_PICTURE_IN_PICTURE&&!m.includes("scaleX")&&(this.element.style.transform=`${m} scaleX(-1)`)}t===p.RESIZE&&(this._preSize.height!==((n=this.element)==null?void 0:n.videoHeight)||this._preSize.width!==((a=this.element)==null?void 0:a.videoWidth))&&(this._log.info(`video size changed to ${(c=this.element)==null?void 0:c.videoWidth}x${(l=this.element)==null?void 0:l.videoHeight}`),this._preSize.height=((u=this.element)==null?void 0:u.videoHeight)||0,this._preSize.width=((h=this.element)==null?void 0:h.videoWidth)||0,this.emit(he.RESIZE,{newWidth:this._preSize.width,newHeight:this._preSize.height}))}setCanvas(e,t=1){var r,s,n,a;this.canvas!==e&&((r=this.canvas)==null||r.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?t:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((s=this.element)==null||s.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((a=this.container)==null||a.appendChild(this.element)))}setAttr(e){let t=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);t.style=Object.assign({width:"100%",height:"100%"},t.style),super.setAttr(t)}get mirror(){return this.viewMirror}setRect(e,t){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${t}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}setPoster(e){this.element&&(this.element.poster=e)}stop(e=0){var t;super.stop(e),(t=this.canvas)==null||t.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(he.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(Wr()&&this.element&&this._calculateTimeout<0){let e=0,t=null,r=(s,n)=>{this.stat.width=n.width,this.stat.height=n.height,t&&(this.stat.fps=Math.round((n.presentedFrames-t.presentedFrames)/(s-e)*1e3)),e=s,t=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var a;return(a=this.element)==null?void 0:a.requestVideoFrameCallback(r)},2e3))};this.element.requestVideoFrameCallback(r)}}catch(e){this._log.warn("init stat failed",e)}}};function Xi(o,i){return f(this,null,function*(){if(!o.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield o.audioWorklet.addModule(i),y.info("worklet addModule success")}catch(e){throw y.info(`worklet addModule catch error. ${e.message}`),e}})}var un;typeof AudioContext!="undefined"?un=AudioContext:typeof webkitAudioContext!="undefined"?un=webkitAudioContext:typeof mozAudioContext!="undefined"&&(un=mozAudioContext);var Kl=1500,Nt,mp=-1,Ya=0,hn=-1,Zl=!1;pp();function pp(){try{if(Nt)return;Nt=new un({sampleRate:48e3}),Nt.onstatechange=()=>{y.info(`context state: ${Nt.state}${Nt.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),jo()},clearTimeout(mp)}catch(o){y.error(`initAudioContext failed: ${o} typeof AudioContextClass: ${typeof un}`),mp=setTimeout(pp,1e3)}}var jo=()=>{Nt.state==="suspended"?(Ya=P(),uT(),Xo(),document.addEventListener("click",jo)):Nt.state==="interrupted"?Xo():(Ya&&(v.addNumber({key:507800,value:P()-Ya,split:[0,500,1e3,1500,2e3,3e3,4e3,5e3,1e4,3e4],max:6e4}),Ya=0),hT(),document.removeEventListener("visibilitychange",jo),document.removeEventListener("click",jo))},Ql=0,Yl=-1;function Xo(){return new Promise((o,i)=>{if(Nt.state==="running")return o();Date.now()-Ql<1e3?(clearTimeout(Yl),Yl=setTimeout(()=>{Ql=Date.now(),Nt.resume().then(o,i)},1e3)):(clearTimeout(Yl),Ql=Date.now(),Nt.resume().then(o,i))}).catch(o=>{y.warn(`context resume failed: ${o}`),document.addEventListener("visibilitychange",jo)})}document.addEventListener("click",jo);function uT(){hn===-1&&(hn=setTimeout(()=>{Nt.state==="suspended"&&(Zl=!0,A.emit("155",{isSuspended:!0}))},Kl))}function hT(){hn!==-1&&(clearTimeout(hn),hn=-1,Zl&&(Zl=!1,A.emit("155",{isSuspended:!1})))}var Ee=o=>Nt;var Oe=class{constructor(i){this.name=i;d(this,"node");d(this,"node2");d(this,"pre",new Set);d(this,"next",new Set);d(this,"context");d(this,"connectedNodes",new Set);d(this,"nextInputChannelMap",new Map);d(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(i){this._channelCount=i,this.setChannelCount(this.node,i),this.setChannelCount(this.node2,i),this.next.forEach(e=>e.channelCount=i)}setChannelCount(i,e){!i||i instanceof ScriptProcessorNode||(i.channelCountMode="explicit",i.channelCount=e||this.channelCount||1)}setContext(i){this.context=i,this.node&&i.addMixWeight()}removeContext(){var i;this.node&&((i=this.context)==null||i.reduceMixWeight()),delete this.context}replaceNode(i){var e;if(i!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=i,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(t){y.error(t)}}setNode(i,e){var t;if(!this.node)try{(t=this.context)==null||t.addMixWeight(),this.node=i,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),v.addSuccessEvent({key:502701})}catch(r){y.error(r),v.addFailedEvent({key:502701,error:r})}}deleteNode(){var i;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(i=this.context)==null||i.reduceMixWeight(),this.preNodeReconnect(),v.addSuccessEvent({key:502702})}catch(e){y.error(e),v.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(i=>{i.node?i.reconnect():i.preNodeReconnect()})}connectNext(i){this.next.forEach(e=>{let t=this.nextInputChannelMap.get(e);i._connect(e.node,t)||e.connectNext(i)})}_connect(i,e=0){return!this.node||!i?!1:((this.node2||this.node).connect(i,0,e),this.connectedNodes.add(i),!0)}_disconnect(){this.connectedNodes.forEach(i=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(i)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(i,e=0){return this.next.add(i),i.pre.add(this),this.nextInputChannelMap.set(i,e),i}},Za=class extends Oe{constructor(e=256){super();this.fftSize=e;d(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),t=1,r=0,s=0,n=`M${r},${s}`;for(let a=0;a<e.length;a++)s=e[a]/128*100/2,n+=`L${r},${s}`,r+=t;return n}},mn=class{constructor(){d(this,"source",new Oe);d(this,"gain",new Oe);d(this,"destination",new Oe)}get volume(){var i;return((i=this.gain.node)==null?void 0:i.gain.value)||1}setVolume(i){if(i===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(Ee().createGain()),this.gain.node.gain.value=i}replaceSource(i){this.source.replaceNode(pn(i))}get track(){var i;return(i=this.stream)==null?void 0:i.getAudioTracks()[0]}get stream(){var i;return(i=this.destination.node)==null?void 0:i.stream}},zo=class extends mn{constructor(e){super();this.context=e;d(this,"aec",new Oe("aec"));d(this,"mixNode",new Oe("mixNode"));d(this,"silentNode",new Oe("silentNode"));d(this,"denoiser",new Oe("denoiser"));d(this,"voiceChanger",new Oe("voiceChanger"));this.source.pipeTo(this.aec).pipeTo(this.denoiser).pipeTo(this.voiceChanger).pipeTo(this.gain).pipeTo(this.destination),this.silentNode.pipeTo(this.mixNode).pipeTo(this.aec,1)}get isProcessEnabled(){return this.aec.node||this.denoiser.node||this.voiceChanger.node||this.gain.node}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.aec.setContext(this.context),this.silentNode.setContext(this.context),this.mixNode.setContext(this.context),this.denoiser.setContext(this.context),this.voiceChanger.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){this.context.inputs.has(this)&&(this.destination.deleteNode(),this.source.removeContext(),this.aec.removeContext(),this.silentNode.removeContext(),this.mixNode.removeContext(),this.denoiser.removeContext(),this.voiceChanger.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.aec.deleteNode(),this.silentNode.deleteNode(),this.mixNode.deleteNode(),this.denoiser.deleteNode(),this.voiceChanger.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},Ka=class{constructor(){d(this,"audioContext",Ee("audio-mixer"));d(this,"destination",this.audioContext.createMediaStreamDestination());d(this,"inputs",new Set);d(this,"mixWeight",0);this.destination.channelCount=1}addMixWeight(i=1){this.mixWeight+=i,this.mixWeight-1===i+1>>1&&this.mixOnChange()}reduceMixWeight(i=1){this.addMixWeight(-i)}close(){this.inputs.forEach(i=>i.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},fp=new WeakMap;function pn(o){let i=fp.get(o);if(i)return i;let e=Ee();if(o instanceof HTMLAudioElement)i=e.createMediaElementSource(o);else if(o instanceof MediaStreamTrack)i=e.createMediaStreamSource(new MediaStream([o]));else return o;return fp.set(o,i),i}var Ct=class Ct{constructor(i){d(this,"_volume",0);d(this,"_volumeDb",0);d(this,"_log");d(this,"_scriptProcessorNode",null);d(this,"_audioWorkletNode",null);d(this,"_interval",200);d(this,"ready",this.preload());let{log:e}=i;this._log=e,A.on(C.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-Ct.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!Ct.workletReady){let i='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(i<h?(s[0].set(this.cache.slice(0,i)),this.cache=this.cache.slice(i)):this.unmute&&s[0].set(t[0]),(i<h?s:t)[0]);if(a){let e=0;for(let t=0;t<a.length;++t)e=Math.max(Math.abs(a[t]),e);s=a.reduce((t,e)=>t+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';Ct.workletReady=Xi(Ct.audioContext,URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}return Ct.workletReady.then(()=>this.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(Ct.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=e=>{Ct.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||0,!i&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),i=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(i){this._log.error(`volumeMeter init audio worklet error: ${i}`),se.logFailedEvent({userId:this._log.userId,eventType:ct.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=Ee("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{Ct.lastMessageTime=Date.now();let e=i.inputBuffer.getChannelData(0),t=0;for(let r=0;r<e.length;++r)t+=e[r]*e[r];this._volume=Math.sqrt(t/e.length)||0}}catch(i){this._log.error(`volumeMeter init script processor error: ${i}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,A.off(C.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(this._volumeDb*100)}handleAudioLevelInterval(i){var t;let{interval:e}=i;this._interval=e,(t=this._audioWorkletNode)==null||t.port.postMessage({name:"setIntervalTime",intervalTime:e})}};d(Ct,"lastMessageTime",0),d(Ct,"audioContext",Ee("volume-meter")),d(Ct,"workletReady");var ec=Ct,fn=class extends Oe{constructor(e){super();d(this,"_volumeMeter");this._volumeMeter=new ec(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return f(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}getVolumeDb(){return this._volumeMeter.getVolumeDb()}write(e){if(this.node){let t=e.allocationSize({planeIndex:0}),r=new Float32Array(t>>2);e.copyTo(r,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:r},[r.buffer]),e.close()}}},Jr=ec;var Ep=He(Qe(),1);var gp=o=>i=>i.deviceId===o;var _n=class{constructor(i,e){d(this,"kind");d(this,"type");d(this,"devices",[]);this.kind=i,this.type=e}update(i,e){let t=i.filter(r=>r.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&Yo(this.devices[0])){this.devices=t;return}e&&(t.forEach(r=>{if(r.deviceId&&!this.devices.find(gp(r.deviceId))){let s=`${this.kind}${this.type}Added`;y.warn(`${s}: ${JSON.stringify(r)}`),e.emit(s,r)}}),this.devices.forEach(r=>{if(r.deviceId&&!t.find(gp(r.deviceId))){let s=`${this.kind}${this.type}Removed`;y.warn(`${s}: ${JSON.stringify(r)}`),e.emit(s,r)}})),this.devices=t}hasDevice(i){return!!this.devices.find(e=>e.deviceId===i)}},eu=class extends Ep.EventEmitter{constructor(){super();d(this,"audioInputs",new _n(p.AUDIO,"Input"));d(this,"videoInputs",new _n(p.VIDEO,"Input"));d(this,"audioOutputs",new _n(p.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||re.run("interval",()=>{this.update()},{delay:1e4}))}init(){Qo().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return f(this,arguments,function*(e=0){let t=yield Qo(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}},ve=Rs||ho?null:new eu;function Yo(o){return o.deviceId===o.groupId&&o.groupId===""}function Qo(){return f(this,arguments,function*(o=0){if(Ji()||!$a())return[];let i=yield navigator.mediaDevices.enumerateDevices();if(o!==0){let e={audio:!1,video:!1};if(i.forEach(t=>{Yo(t)&&(t.kind===p.AUDIO_INPUT?e.audio=!0:t.kind===p.VIDEO_INPUT&&(e.video=!0))}),o===2&&(e.audio=!1),o===1&&(e.video=!1),e.audio||e.video){let t;try{t=yield navigator.mediaDevices.getUserMedia(e),e.audio&&Xo()}catch(r){y.debug("capture before getDevices failed: ",r)}i=yield navigator.mediaDevices.enumerateDevices(),t==null||t.getTracks().forEach(r=>r.stop())}}return i.map((e,t)=>{let r={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${t}`};return e.deviceId.length>0&&tu.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(r.getCapabilities=()=>e.getCapabilities()),r})})}function ht(o=!1){return ve.update(o?1:0).then(i=>i.audioInputs.devices)}function mt(o=!1){return ve.update(o?2:0).then(i=>i.videoInputs.devices)}var Tp=!1;function Sp(){return f(this,null,function*(){try{Tp||(Tp=!0,y.info(`speakers:${(yield gr()).map(o=>` ${o.deviceId.slice(0,8)}: ${o.label}`)}`))}catch(o){}})}function gr(o=!1){return f(this,null,function*(){return(Ie||ke)&&(o=!1),ve.update(o?1:0).then(i=>i.audioOutputs.devices)})}var tu=new Set;function Ip(o){if(o instanceof CanvasCaptureMediaStreamTrack||!(o instanceof MediaStreamTrack))return!1;let i=o.label.toLocaleLowerCase();if(i.includes("camera")||i.includes("webcam"))return!0;let t=`${((o==null?void 0:o.getSettings())||{}).deviceId}_${p.VIDEO_INPUT}`;return!!tu.has(t)}function Ap(o){if(o instanceof CanvasCaptureMediaStreamTrack||!(o instanceof MediaStreamTrack))return!1;let i=o.label.toLocaleLowerCase();if(i.includes("mic")||i.includes("\u9EA6\u514B\u98CE"))return!0;let t=`${((o==null?void 0:o.getSettings())||{}).deviceId}_${p.AUDIO_INPUT}`;return!!tu.has(t)}function iu(o,i){return f(this,null,function*(){let t=(yield ht()).find(r=>r.deviceId===Nr);return!i&&(t==null?void 0:t.groupId)===o||(t==null?void 0:t.groupId)===o&&t.label===i})}function Cp(s){return f(this,arguments,function*({newDeviceId:o,oldDeviceId:i,oldGroupId:e,oldLabel:t,kind:r}){return o!==i?!1:r===p.AUDIO&&o===Nr?yield iu(e,t):!0})}var tc,ru=class extends mn{constructor(e){super();this.log=e;d(this,"volumeMeter");d(this,"volumeMeterAfter3A");d(this,"volumeDestination");d(this,"analyser",new Za);this.volumeMeter=new fn({log:this.log}),this.volumeMeterAfter3A=new fn({log:this.log}),this.volumeDestination=new Oe,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},ic=class o extends Si{constructor(e){super(e,p.AUDIO);d(this,"_outputDeviceId");d(this,"_volume",1);d(this,"_destination",Ee("player").createMediaStreamDestination());d(this,"pipeline");d(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new ru(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Tt==="15.2"||Tt==="15.3"||Tt==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let r=tc||new Audio;r.setAttribute("autoplay","autoplay"),r.srcObject=this.getMediaStream(),r.muted=this.muted,this.element=r,q(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),r===tc&&(tc=void 0),this.bindElementEvents()}play(e){return f(this,null,function*(){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?(this.pipeline.volumeMeter.init(),this.pipeline.volumeMeterAfter3A.init()):this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(Ee("player").createAnalyser()),Sp(),qe(o.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return f(this,null,function*(){var t,r;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(r=(t=this.element).setSinkId)==null?void 0:r.call(t,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}getInternalAudioLevelAfter3A(){return this.pipeline.volumeMeterAfter3A.getInternalAudioLevel()}},rc=class extends ic{setTrack(i){this.track!==i&&(this.unbindTrackEvents(),this.track=i,this.emit(he.MEDIA_TRACK_CHANGED,i),i&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([i]))))}setVolume(i){this._volume=i,this.element&&(this.element.volume=i)}},oc=class extends ic{constructor(e){super(e);d(this,"_sourceElement");d(this,"_output",new Oe);this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(Ee("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var t,r,s;((r=(t=this.element)==null?void 0:t.error)==null?void 0:r.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(he.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((s=e.getSettings())==null?void 0:s.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1?this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element"):Ie||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),be(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let t=this._sourceElement||this.element;t&&vt&&(tc=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var qr=class extends G{constructor({userId:e,sdkAppId:t,mediaType:r,room:s,PlayerClass:n=r===1?oc:ot}){var a;super();d(this,"id",zs());d(this,"userId","");d(this,"isRemote");d(this,"mediaType");d(this,"room");d(this,"user");d(this,"_log");d(this,"_inputTrack");d(this,"_outputTrack");d(this,"isPlayCalled");d(this,"container",null);d(this,"player");d(this,"subVideoPlayerMap");d(this,"muted",!1);d(this,"abortCtrl");d(this,"objectFit","cover");d(this,"mirror");d(this,"rotation");d(this,"isScreen",!1);d(this,"manager");d(this,"trackSettings");d(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=r,this._log=y.createLogger({id:`${this.kind[0]}t`,userId:(a=s||this.room)==null?void 0:a.userId,remoteUserId:this instanceof ri?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof ri}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(he.PLAYER_STATE_CHANGED,c=>{A.emit(C.PLAYER_STATE_CHANGED,D({track:this},c)),this.emit("player-state-changed",c)}),this.kind===p.VIDEO&&(this.player.on(he.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(he.LOADED_DATA),A.emit(C.VIDEO_LOADED_DATA,{track:this})}),this.player.on(he.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(he.LOADED_META_DATA)}),this.player.on(he.MEDIA_TRACK_CHANGED,c=>{var l;(l=this.subVideoPlayerMap)==null||l.forEach(u=>u.setTrack(c))}),this.player.on(he.RESIZE,c=>{this.emit("video-size-changed",D({userId:this.userId,streamType:this.mediaType===2?"auxiliary":"main"},c))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(he.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||y}get kind(){return this.mediaType===1?p.AUDIO:p.VIDEO}get strMediaType(){return this.mediaType===4?p.VIDEO:this.mediaType===2?p.SCREEN:p.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,t){return f(this,null,function*(){let r=Se(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(t)}`),t&&!E(t.muted)&&this.setPlayerMute(t.muted),t&&!E(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof ot&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&(this.container=r,this.player.setContainer(r)),Se(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),t)));return}if(t&&!E(t.muted)?this.setPlayerMute(t.muted):(!this.isRemote||this.kind===p.VIDEO)&&this.setPlayerMute(!0),t&&!E(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof ot&&(this.player.setObjectFit(this.objectFit),t&&!E(t.poster)&&this.player.setPoster(t.poster)),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof ot&&this.player.setContainer(r)),A.emit(C.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(t)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(t),Se(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),t))}catch(s){throw this.handleAutoPlayFailed(s),s}})}setMirror(e,t){if(this.isScreen||this.kind!==p.VIDEO||E(e)||e===this.mirror)return;this.mirror=e;let r=this.player;t&&(r=t);let s=this.manager;if(de(this.mirror)){r.setViewMirror(this.mirror),!this.isRemote&&s&&(s.mirror=!1);return}switch(this.mirror){case"view":{s&&(s.mirror=!1),r.setViewMirror(!0);break}case"publish":{s&&(s.mirror=!0),r.setViewMirror(!0);break}case"both":s&&(s.mirror=!0),r.setViewMirror(!1)}}playSubContainer(e,t){return f(this,null,function*(){if(!this._outputTrack||this.kind===p.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((s,n)=>{var a;e.find(c=>n===c)||(s.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[s,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?t&&(E(t.objectFit)||a.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(n,new ot({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${s+1}`})}))}let r=[...this.subVideoPlayerMap.values()];for(let s of r)s.setViewMirror(this.player.mirror),yield s.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(Wd(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(t=>{t.stop()}),this.container=null)}resume(){return f(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),A.emit(e?C.TRACK_MUTED:C.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){Ue(e,e).add(p.MUTE,this.onTrackMuted).add(p.UNMUTE,this.onTrackUnmuted).add(p.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===p.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){be(e)}setInputMediaStreamTrack(e){var r;let t=this._inputTrack;if(e!==t)return this._inputTrack=e,this.trackSettings=(r=e.getSettings)==null?void 0:r.call(e),e.enabled=!this.muted,t&&this.uninstallTrackEvent(t),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,t||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var r;let t=this._outputTrack;e!==t&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(r=e.getSettings)==null?void 0:r.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(t=>this.handleAutoPlayFailed(t)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(Wd(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new hp;else{let t=()=>{this.resume().then(()=>{document.removeEventListener("click",t,!0)})};document.addEventListener("click",t,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof ot?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,a,c;if(this.isFirstVideoFrameEmitted)return;let t=(n=this.mediaTrack)==null?void 0:n.getSettings(),r=(t==null?void 0:t.width)||((a=this.player.element)==null?void 0:a.videoWidth)||0,s=(t==null?void 0:t.height)||((c=this.player.element)==null?void 0:c.videoHeight)||0;e===he.RESIZE&&!r&&!s||e===he.LOADED_META_DATA&&!r&&!s||(e===he.LOADED_DATA&&!r&&!s&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,_t(this.rotation)&&([r,s]=[s,r]),this.emit("first-video-frame",{width:r,height:s,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};O([Te([],G.INIT,{sync:!0})],qr.prototype,"close",1);var mT=Object.prototype.hasOwnProperty,{toString:by}=Object.prototype;function pT(o){if(o==null)return!0;if(typeof o=="boolean")return!1;if(typeof o=="number")return o===0;if(typeof o=="string"||typeof o=="function"||Array.isArray(o))return o.length===0;if(o instanceof Error)return o.message==="";if(Ze(o))switch(Object.prototype.toString.call(o)){case"[object File]":case"[object Map]":case"[object Set]":return o.size===0;case"[object Object]":{for(let i in o)if(mT.call(o,i))return!1;return!0}}return!1}var Ii=pT;var fT=function(o){return f(this,null,function*(){let i=gT(o);y.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let e=[],t=[],r=["label","deviceId","groupId"];i.audio&&(e=yield ht(),y.info(`microphones: ${bt(e.map(s=>w(D({},s),{groupId:s.groupId.substring(0,8)})),{keysToInclude:r})}`)),i.video&&(t=yield mt(),y.info(`cameras: ${bt(t,{keysToInclude:r})}`));try{let s=yield navigator.mediaDevices.getUserMedia(i);return Ll&&s.getTracks().forEach(n=>{y.info(`${n.kind} capabilities: ${bt(n.getCapabilities(),{keysToInclude:ta})}`)}),i.audio&&Xo(),s}catch(s){let{message:n}=s;throw s.name==="NotFoundError"&&(o.video&&t&&t.length===0&&(n=V({key:L.CAMERA_NOT_FOUND})),o.audio&&e&&e.length===0&&(n=V({key:L.MICROPHONE_NOT_FOUND}))),new N({code:I.INITIALIZE_FAILED,name:s.name,message:n,constraint:s.constraint})}})},_T=mi({retryFunction:fT,settings:{retries:3,timeout:500},onError:({error:o,retry:i,reject:e,retryFuncArgs:t,retriedCount:r})=>{let s=r+1;o.name==="NotReadableError"||o.name==="OverconstrainedError"?(s===1?(t[0].video&&(t[0].maxResolution=!1,(!ke||t[0].width*t[0].height<=1920*1080)&&t[0].frameRate&&(t[0].frameRate=t[0].frameRate>10?10:5)),t[0].retryWhenExactFailed&&t[0].useExactDeviceId&&(t[0].useExactDeviceId=!1)):s===2?t[0].useDeviceIdOnly=!0:s===3&&!t[0].useExactDeviceId&&(t[0].useTrueAsConstraint=!0),i()):e(o),t[0].microphoneId&&Rp(t[0].microphoneId,!1),t[0].cameraId&&Rp(t[0].cameraId,!0)},onRetrying:o=>{y.warn(`getUserMedia NotReadableError observed, retrying [${o}/3]`)},onRetryFailed:o=>{se.logFailedEvent({eventType:ct.GET_USER_MEDIA_RETRY,error:o})},onRetrySuccess:o=>{se.logSuccessEvent({eventType:ct.GET_USER_MEDIA_RETRY}),se.uploadEvent({log:`stat-${ct.GET_USER_MEDIA_RETRY}-success-${o}`})}});function Rp(o,i){return f(this,null,function*(){let t=(i?yield mt():yield ht()).find(r=>r.deviceId===o);t&&ae(t.getCapabilities)&&y.warn(bt(t.getCapabilities(),{keysToInclude:ta}))})}function gT(o){return{audio:TT(o),video:ET(o)}}function TT(o){if(!o.audio)return!1;if(o.useTrueAsConstraint)return!0;let i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:o.sampleRate};return!Ii(o.microphoneId)&&(i.deviceId=o.useExactDeviceId?{exact:o.microphoneId}:o.microphoneId,o.useDeviceIdOnly)?i:(q(o.channelCount)&&(i.channelCount=o.channelCount),de(o.echoCancellation)&&!o.echoCancellation&&(i.echoCancellation=!1),de(o.noiseSuppression)&&!o.noiseSuppression&&(i.noiseSuppression=!1),de(o.autoGainControl)&&!o.autoGainControl&&(i.autoGainControl=!1),Ii(i)?!0:i)}function ET(o){if(!o.video)return!1;if(o.useTrueAsConstraint)return!0;let{maxResolution:i=!0}=o,e={};return o.cameraId?e.deviceId=o.useExactDeviceId?{exact:o.cameraId}:o.cameraId:o.facingMode&&(e.facingMode=o.facingMode),o.useDeviceIdOnly&&!Ii(e)?e:(o.width&&(e.width={ideal:o.width},i&&!ne&&(e.width.max=o.width)),o.height&&(e.height={ideal:o.height},i&&!ne&&(e.height.max=o.height)),ne&&Xt&&o.width&&o.height&&o.width*o.height<352*288&&(e.width=o.width,e.height=o.height),o.frameRate&&(e.frameRate=o.frameRate),Ii(e)?!0:e)}var yp=_T;function sc(o){return K((i,e)=>function(...t){return f(this,null,function*(){return yield o.apply(this,t),i.apply(this,t)})})}function st(o){return K((i,e)=>function(...t){return f(this,null,function*(){let r=yield i.apply(this,t);return yield o.call(this,...t),r})})}function nc(o){return K((i,e)=>function(...t){return f(this,null,function*(){try{return yield i.apply(this,t)}catch(r){o.call(this,r)}})})}function K(o){return function(i,e,t){return t.value=o(t.value,e),t}}var bp=(()=>{let o=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&y.info(`visibility change: ${document.visibilityState}`),!o&&(document.addEventListener("visibilitychange",()=>{y.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),o=!0)}})();var ST=0,ac=class{constructor(){d(this,"log",y.createLogger({id:`fq${++ST}`}));d(this,"isRunning",!1);d(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(i,e=!1){var s,n;let t=D({},i),r=new Promise((a,c)=>{t.resolve=a,t.reject=c});return t.promise=r,e?this.length<=1?this.queue.push(t):(n=(s=this.lastQueueItem)==null?void 0:s.promise)==null||n.then(t.resolve,t.reject):this.queue.push(t),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),r}shift(){let i=this.queue.shift();return this.log.debug(`shift ${this.length}`),i}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:i,args:e,context:t,resolve:r,reject:s}=this.queue[0];this.isRunning=!0,i.apply(t,e).then(r,s).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},gn=new WeakMap,cc=new WeakMap;function Dt(o=!1){return function(i,e,t){let r=t.value;return t.value=function(...s){let n=gn.get(this)||new ac;return gn.set(this,n),n.push({fn:r,args:s,context:this},o)},t}}function vp(o){return function(i,e,t){let r=t.value;return t.value=function(...s){let n=gn.get(this);if(n){let a=n.queue.filter((c,l)=>{if(l===0)return!0;let u=!0;return c.args.forEach(h=>{s.find(m=>m===h)||(u=!1)}),u?(c.reject(new N({code:I.API_CALL_ABORTED,message:o})),!1):!0});n.queue=a}return r.apply(this,s)},t}}function dc(o){return function(i,e,t){let r=t.value;return t.value=function(...s){var a,c,l;let n=[];return(c=(a=gn.get(this))==null?void 0:a.queue)==null||c.forEach(u=>n.push(u)),(l=cc.get(this))==null||l.forEach(u=>u==null?void 0:u.queue.forEach(h=>n.push(h))),n.forEach(u=>{u.reject(new N({code:I.API_CALL_ABORTED,message:o}))}),gn.delete(this),cc.delete(this),r.apply(this,s)},t}}function zi(o){return function(i,e,t){let r=t.value,s=n=>o(...n);return t.value=function(...n){let a=cc.get(this)||new Map,c=a.get(s(n))||new ac;return a.set(s(n),c),cc.set(this,a),c.push({fn:r,args:n,context:this})},t}}function pt(o,i){return K((e,t)=>function(...r){let s=o;try{let n=e.apply(this,r),a=P();return ur(n)?n.then(c=>(i?v.addSuccessEvent({key:s,cost:P()-a}):v.addSuccessEvent({key:s}),c)).catch(c=>{throw v.addFailedEvent({key:s,error:c}),c}):(v.addSuccessEvent({key:s}),n)}catch(n){throw v.addFailedEvent({key:s,error:n}),n}})}var Hu={};Mi(Hu,{Events:()=>Ne,Inspect:()=>Ot,LastSink:()=>jr,Sink:()=>W,Subscribe:()=>Xr,TimeoutError:()=>Tn,audit:()=>tE,bindCallback:()=>FT,bindNodeCallback:()=>HT,buffer:()=>DT,bufferCount:()=>NT,bufferTime:()=>SE,call:()=>Np,catchError:()=>Vu,combineLatest:()=>Op,concat:()=>CT,concatMap:()=>hE,concatMapTo:()=>mE,count:()=>WT,create:()=>oe,debounce:()=>iE,debounceTime:()=>rE,defer:()=>Mp,delay:()=>IE,deliver:()=>j,dispose:()=>lc,elementAt:()=>oE,empty:()=>An,every:()=>dE,exhaustMap:()=>_E,exhaustMapTo:()=>gE,filter:()=>Mt,find:()=>sE,findIndex:()=>nE,first:()=>aE,fromAnimationFrame:()=>UT,fromArray:()=>kT,fromEvent:()=>ue,fromEventPattern:()=>wT,fromFetch:()=>xT,fromIterable:()=>LT,fromPromise:()=>xp,fromReadableStream:()=>VT,fromReader:()=>PT,groupBy:()=>TE,identity:()=>IT,ignoreElements:()=>XT,iif:()=>yT,inspect:()=>Dp,interval:()=>du,last:()=>cE,map:()=>Cn,mapTo:()=>uE,max:()=>JT,merge:()=>En,mergeMap:()=>pE,mergeMapTo:()=>fE,min:()=>qT,never:()=>$T,nothing:()=>me,of:()=>MT,pairwise:()=>lE,pipe:()=>le,race:()=>cu,range:()=>BT,reduce:()=>lu,retry:()=>yE,scan:()=>Pu,share:()=>Qi,shareReplay:()=>RT,skip:()=>QT,skipUntil:()=>YT,skipWhile:()=>fc,startWith:()=>Sn,subject:()=>nt,subscribe:()=>Ae,sum:()=>jT,switchMap:()=>es,switchMapTo:()=>Qr,take:()=>Yi,takeLast:()=>zT,takeUntil:()=>Le,takeWhile:()=>Lp,tap:()=>Fu,throttle:()=>KT,throwError:()=>GT,timeInterval:()=>EE,timeout:()=>RE,timer:()=>In,toPromise:()=>AE,toReadableStream:()=>CE,withLatestFrom:()=>vT,zip:()=>bT});function me(...o){}var Np=o=>o(),IT=o=>o;function lc(){this.dispose()}var Dp=()=>typeof __FASTRX_DEVTOOLS__!="undefined",AT=1,Ot=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(i){let e=new ou(i,this,this.streamId++);return Ne.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},jr=class{constructor(){this.defers=new Set,this.disposed=!1}next(i){}complete(){this.dispose()}error(i){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=me,this.error=me,this.next=me,this.dispose=me,this.subscribe=me,this.doDefer()}subscribe(i){return i instanceof Ot?i.subscribe(this):i(this),this}get bindSubscribe(){return i=>this.subscribe(i)}doDefer(){this.defers.forEach(Np),this.defers.clear()}defer(i){this.defers.add(i)}removeDefer(i){this.defers.delete(i)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},W=class extends jr{constructor(i){super(),this.sink=i,i.defer(this.bindDispose)}next(i){this.sink.next(i)}complete(){this.sink.complete()}error(i){this.sink.error(i)}},Xr=class extends jr{constructor(i,e=me,t=me,r=me){if(super(),this._next=e,this._error=t,this._complete=r,this.then=me,i instanceof Ot){let s={toString:()=>"subscribe",id:0,source:i};this.defer(()=>{Ne.defer(s,0)}),Ne.create(s),Ne.pipe(s),this.sourceId=s.id,this.subscribe(i),Ne.subscribe({id:s.id,end:!0}),e==me?this._next=n=>Ne.next(s,0,n):this.next=n=>{Ne.next(s,0,n),e(n)},r==me?this._complete=()=>Ne.complete(s,0):this.complete=()=>{this.dispose(),Ne.complete(s,0),r()},t==me?this._error=n=>Ne.complete(s,0,n):this.error=n=>{this.dispose(),Ne.complete(s,0,n),t()}}else this.subscribe(i)}next(i){this._next(i)}complete(){this.dispose(),this._complete()}error(i){this.dispose(),this._error(i)}};function le(o,...i){return i.reduce((e,t)=>t(e),o)}function oe(o,i,e){if(Dp()){let t=Object.defineProperties(Object.setPrototypeOf(o,Ot.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:i,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Ne.create(t);for(let r=0;r<e.length;r++){let s=e[r];typeof s=="function"&&s instanceof Ot&&Ne.addSource(t,s)}return t}return o}function j(o,i){return function(...e){return t=>{if(t instanceof Ot){let r=oe(s=>{let n=new o(s,...e);n.sourceId=r.id,n.subscribe(t)},i,arguments);return r.source=t,Ne.pipe(r),r}else return r=>t(new o(r,...e))}}}function Tr(o,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:o,payload:i}})}var ou=class extends W{constructor(i,e,t){super(i),this.source=e,this.id=t,this.sourceId=i.sourceId,this.defer(()=>{Ne.defer(this.source,this.id)})}next(i){Ne.next(this.source,this.id,i),this.sink.next(i)}complete(){Ne.complete(this.source,this.id),this.sink.complete()}error(i){Ne.complete(this.source,this.id,i),this.sink.error(i)}},Ne={addSource(o,i){Tr("addSource",{id:o.id,name:o.toString(),source:{id:i.id,name:i.toString()}})},next(o,i,e){Tr("next",{id:o.id,streamId:i,data:e&&e.toString()})},subscribe({id:o,end:i},e){Tr("subscribe",{id:o,end:i,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(o,i,e){Tr("complete",{id:o.id,streamId:i,err:e?e.toString():null})},defer(o,i){Tr("defer",{id:o.id,streamId:i})},pipe(o){Tr("pipe",{name:o.toString(),id:o.id,source:{id:o.source.id,name:o.source.toString()}})},update(o){Tr("update",{id:o.id,name:o.toString()})},create(o){o.id||(o.id=AT++),Tr("create",{name:o.toString(),id:o.id})}},Tn=class extends Error{constructor(i){super(`timeout after ${i}ms`),this.timeout=i}};var uc=class extends jr{constructor(i){super(),this.source=i,this.sinks=new Set}add(i){i.defer(()=>this.remove(i)),this.sinks.add(i).size===1&&(this.reset(),this.subscribe(this.source))}remove(i){this.sinks.delete(i),this.sinks.size===0&&this.dispose()}next(i){this.sinks.forEach(e=>e.next(i))}complete(){this.sinks.forEach(i=>i.complete()),this.sinks.clear()}error(i){this.sinks.forEach(e=>e.error(i)),this.sinks.clear()}};function Qi(){return o=>{let i=new uc(o);if(o instanceof Ot){let e=oe(t=>{i.add(t)},"share",arguments);return i.sourceId=e.id,e.source=o,Ne.pipe(e),e}return oe(i.add.bind(i),"share",arguments)}}function En(...o){return oe(i=>{let e=new W(i),t=o.length;e.complete=()=>{--t===0&&i.complete()},o.forEach(e.bindSubscribe)},"merge",arguments)}function cu(...o){return oe(i=>{let e=new Map;o.forEach(t=>{let r=new W(i);e.set(t,r),r.complete=()=>{e.delete(t),e.size===0?i.complete():r.dispose()},r.next=s=>{e.delete(t),e.forEach(n=>n.dispose()),r.resetNext(),r.resetComplete(),r.next(s)}}),o.forEach(t=>e.get(t).subscribe(t))},"race",arguments)}function CT(...o){return oe(i=>{let e=0,t=o.length,r=new W(i);r.complete=()=>{e<t&&!r.disposed?(r.doDefer(),r.subscribe(o[e++])):i.complete()},r.complete()},"concat",arguments)}function RT(o){return i=>{let e=new uc(i),t=[];return e.next=function(r){t.push(r),t.length>o&&t.shift(),this.sinks.forEach(s=>s.next(r))},oe(r=>{r.defer(()=>e.remove(r)),t.forEach(s=>r.next(s)),e.add(r)},"shareReplay",arguments)}}function yT(o,i,e){return oe(t=>o()?i(t):e(t),"iif",arguments)}function Op(...o){return oe(i=>{let e=o.length,t=e,r=e,s=new Array(e),n=()=>{--r===0&&i.complete()},a=(c,l)=>{let u=new W(i);u.next=h=>{--t===0?(u.next=m=>{s[l]=m,i.next(s)},u.next(h)):s[l]=h},u.complete=n,u.subscribe(c)};o.forEach(a)},"combineLatest",arguments)}function bT(...o){return oe(i=>{let e=o.length,t=e,r=new Array(e),s=()=>{--t===0&&i.complete()},n=(a,c)=>{let l=new W(i),u=[];r[c]=u,l.next=h=>{u.push(h),r.every(m=>m.length)&&i.next(r.map(m=>m.shift()))},l.complete=s,l.subscribe(a)};o.forEach(n)},"zip",arguments)}function Sn(...o){return i=>oe((e,t=0,r=o.length)=>{for(;t<r&&!e.disposed;)e.next(o[t++]);e.disposed||e.subscribe(i)},"startWith",arguments)}var su=class extends W{constructor(i,...e){super(i);let t=new W(this.sink);t.next=r=>this.buffer=r,t.complete=me,t.subscribe(Op(...e))}next(i){this.buffer&&this.sink.next([i,...this.buffer])}},vT=j(su,"withLatestFrom"),nu=class extends W{constructor(i,e,t){super(i),this.bufferSize=e,this.startBufferEvery=t,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(i){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(i)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(i),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(i=>this.sink.next(i)),super.complete()}},NT=j(nu,"bufferCount"),au=class extends W{constructor(i,e){super(i),this.buffer=[];let t=new W(i);t.next=r=>{i.next(this.buffer),this.buffer=[]},t.complete=me,t.subscribe(e)}next(i){this.buffer.push(i)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},DT=j(au,"buffer");var OT=function(o,i,e,t){function r(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function a(u){try{l(t.next(u))}catch(h){n(h)}}function c(u){try{l(t.throw(u))}catch(h){n(h)}}function l(u){u.done?s(u.value):r(u.value).then(a,c)}l((t=t.apply(o,i||[])).next())})};function nt(o){let i=arguments,e=Qi()(oe(t=>{e.next=r=>t.next(r),e.complete=()=>t.complete(),e.error=r=>t.error(r),o&&t.subscribe(o)},"subject",i));return e.next=me,e.complete=me,e.error=me,e}function Mp(o){return oe(i=>i.subscribe(o()),"defer",arguments)}var kp=o=>i=>{setTimeout(()=>o(i))},wp=o=>kp(i=>{for(let e=0;!i.disposed&&e<o.length;e++)i.next(o[e]);i.complete()});function MT(...o){return oe(wp(o),"of",arguments)}function kT(o){return oe(wp(o),"fromArray",arguments)}function du(o){return oe(i=>{let e=0,t=setInterval(()=>i.next(e++),o);return i.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function In(o,i){return oe(e=>{let t=0,r=setTimeout(()=>{if(e.removeDefer(s),e.next(t++),i){let n=setInterval(()=>e.next(t++),i);e.defer(()=>{clearInterval(n)})}else e.complete()},o),s=()=>{clearTimeout(r)};e.defer(s)},"timer",arguments)}function hc(o,i){return e=>{let t=r=>e.next(r);e.defer(()=>i(t)),o(t)}}function wT(o,i){return oe(hc(o,i),"fromEventPattern",arguments)}function ue(o,i){if("on"in o&&"off"in o)return oe(hc(e=>o.on(i,e),e=>o.off(i,e)),"fromEvent",arguments);if("addListener"in o&&"removeListener"in o)return oe(hc(e=>o.addListener(i,e),e=>o.removeListener(i,e)),"fromEvent",arguments);if("addEventListener"in o)return oe(hc(e=>o.addEventListener(i,e),e=>o.removeEventListener(i,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function xp(o){return oe(i=>{o.then(i.next.bind(i),i.error.bind(i))},"fromPromise",arguments)}function xT(o,i){return oe(Mp(()=>xp(fetch(o,i))),"fromFetch",arguments)}function LT(o){return oe(kp(i=>{try{for(let e of o){if(i.disposed)return;i.next(e)}i.complete()}catch(e){i.error(e)}}),"fromIterable",arguments)}function PT(o){let i=e=>OT(this,void 0,void 0,function*(){if(e.disposed)return;let{done:t,value:r}=yield o.read();if(t){e.complete();return}else e.next(r),i(e)});return oe(e=>{i(e)},"fromReader",arguments)}function VT(o){return oe(i=>{let e=new AbortController,t=e.signal;i.defer(()=>e.abort("cancelled")),o.pipeTo(new WritableStream({write(r){i.next(r)},close(){i.complete()},abort(r){i.error(r)}}),{signal:t}).then(()=>i.complete(),r=>i.error(r))},"fromReadableStream",arguments)}function UT(){return oe(o=>{let i=requestAnimationFrame(function e(t){o.disposed||(o.next(t),i=requestAnimationFrame(e))});o.defer(()=>cancelAnimationFrame(i))},"fromAnimationFrame",arguments)}function BT(o,i){return oe((e,t=o,r=i+o)=>{for(;t<r&&!e.disposed;)e.next(t++);return e.complete(),"range"},"range",arguments)}function FT(o,i,...e){return oe(t=>{let r=e.concat(s=>(t.next(s),t.complete()));o.apply(i,r)},"bindCallback",arguments)}function HT(o,i,...e){return oe(t=>{let r=e.concat((s,n)=>s?t.error(s):(t.next(n),t.complete()));o.apply(i,r)},"bindNodeCallback",arguments)}function $T(){return oe(()=>{},"never",arguments)}function GT(o){return oe(i=>i.error(o),"throwError",arguments)}function An(){return oe(o=>o.complete(),"empty",arguments)}var zr=class extends W{constructor(i,e,t){super(i),this.f=e;let r=()=>{this.sink.next(this.acc),this.sink.complete()};typeof t=="undefined"?this.next=s=>{this.acc=s,this.complete=r,this.resetNext()}:(this.acc=t,this.complete=r)}next(i){this.acc=this.f(this.acc,i)}},lu=j(zr,"reduce"),WT=o=>j(zr,"count")((i,e)=>o(e)?i+1:i,0),JT=()=>j(zr,"max")(Math.max),qT=()=>j(zr,"min")(Math.min),jT=()=>j(zr,"sum")((o,i)=>o+i,0);var uu=class extends W{constructor(i,e,t){super(i),this.filter=e,this.thisArg=t}next(i){this.filter.call(this.thisArg,i)&&this.sink.next(i)}},Mt=j(uu,"filter"),hu=class extends W{next(i){}},XT=j(hu,"ignoreElements"),mu=class extends W{constructor(i,e){super(i),this.count=e}next(i){this.sink.next(i),--this.count===0&&this.complete()}},Yi=j(mu,"take"),pu=class extends W{constructor(i,e){super(i);let t=new W(i);t.next=()=>i.complete(),t.complete=lc,t.subscribe(e)}},Le=j(pu,"takeUntil"),fu=class extends W{constructor(i,e){super(i),this.f=e}next(i){this.f(i)?this.sink.next(i):this.complete()}},Lp=j(fu,"takeWhile"),zT=o=>lu((i,e)=>(i.push(e),i.length>o&&i.shift(),i),[]),_u=class extends W{constructor(i,e){super(i),this.count=e}next(i){--this.count===0&&(this.next=super.next)}},QT=j(_u,"skip"),gu=class extends W{constructor(i,e){super(i),i.next=me;let t=new W(i);t.next=()=>{t.dispose(),i.resetNext()},t.complete=lc,t.subscribe(e)}},YT=j(gu,"skipUntil"),Tu=class extends W{constructor(i,e){super(i),this.f=e}next(i){this.f(i)||(this.next=super.next,this.next(i))}},fc=j(Tu,"skipWhile"),ZT={leading:!0,trailing:!1},Eu=class extends W{constructor(i,e,t){super(i),this.durationSelector=e,this.trailing=t}cacheValue(i){this.last=i,this.disposed&&this.throttle(i)}send(i){this.sink.next(i),this.throttle(i)}throttle(i){this.reset(),this.subscribe(this.durationSelector(i))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},mc=class extends W{constructor(i,e,t=ZT){super(i),this.durationSelector=e,this.config=t,this._throttle=new Eu(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(i){this._throttle.disposed&&this.config.leading?this._throttle.send(i):this._throttle.cacheValue(i)}complete(){this._throttle.throttle=me,this._throttle.complete(),super.complete()}},KT=j(mc,"throttle"),eE={leading:!1,trailing:!0},tE=o=>j(mc,"audit")(o,eE),Su=class extends W{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},pc=class extends W{constructor(i,e){super(i),this.durationSelector=e,this._debounce=new Su(this.sink),this._debounce.dispose()}next(i){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=i,this._debounce.subscribe(this.durationSelector(i))}complete(){this._debounce.complete(),super.complete()}},iE=j(pc,"debounce"),rE=o=>j(pc,"debounceTime")(i=>In(o)),Iu=class extends W{constructor(i,e,t){super(i),this.count=e,this.defaultValue=t}next(i){this.count--===0&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},oE=j(Iu,"elementAt"),sE=o=>i=>Yi(1)(fc(e=>!o(e))(i)),Au=class extends W{constructor(i,e){super(i),this.f=e,this.i=0}next(i){this.f(i)?(this.sink.next(this.i++),this.complete()):++this.i}},nE=j(Au,"findIndex"),Cu=class extends W{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},aE=j(Cu,"first"),Ru=class extends W{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},cE=j(Ru,"last"),yu=class extends W{constructor(i,e){super(i),this.predicate=e,this.index=0}next(i){this.predicate(i,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},dE=j(yu,"every");var bu=class extends W{constructor(i,e,t){super(i),this.f=e,typeof t=="undefined"?this.next=r=>{this.acc=r,this.resetNext(),this.sink.next(this.acc)}:this.acc=t}next(i){this.sink.next(this.acc=this.f(this.acc,i))}},Pu=j(bu,"scan"),vu=class extends W{constructor(){super(...arguments),this.hasLast=!1}next(i){this.hasLast?this.sink.next([this.last,i]):this.hasLast=!0,this.last=i}},lE=j(vu,"pairwise"),_c=class extends W{constructor(i,e,t){super(i),this.mapper=e,this.thisArg=t}next(i){super.next(this.mapper.call(this.thisArg,i))}},Cn=j(_c,"map"),uE=o=>j(_c,"mapTo")(i=>o),Zo=class extends W{constructor(i,e,t){super(i),this.data=e,this.context=t}next(i){let e=this.context.combineResults;e?this.sink.next(e(this.data,i)):this.sink.next(i)}tryComplete(){this.context.resetComplete(),this.dispose()}},Ko=class extends W{constructor(i,e,t){super(i),this.makeSource=e,this.combineResults=t,this.index=0}subInner(i,e){let t=this.currentSink=new e(this.sink,i,this);this.complete=this.tryComplete,t.complete=t.tryComplete,t.subscribe(this.makeSource(i,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},gc=class extends Zo{},Tc=class extends Ko{next(i){this.subInner(i,gc),this.next=e=>{this.currentSink.dispose(),this.subInner(e,gc)}}},es=j(Tc,"switchMap");function Ac(o){return(i,e)=>o(()=>i,e)}var Qr=Ac(j(Tc,"switchMapTo")),Nu=class extends Zo{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},Ec=class extends Ko{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(i){this.next2(i),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),Nu),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},hE=j(Ec,"concatMap"),mE=Ac(j(Ec,"concatMapTo")),Du=class extends Zo{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},Sc=class extends Ko{constructor(){super(...arguments),this.inners=new Set}next(i){this.subInner(i,Du),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(i=>i.resetComplete()):this.dispose()}},pE=j(Sc,"mergeMap"),fE=Ac(j(Sc,"mergeMapTo")),Ou=class extends Zo{dispose(){this.context.resetNext(),super.dispose()}},Ic=class extends Ko{next(i){this.next=me,this.subInner(i,Ou)}},_E=j(Ic,"exhaustMap"),gE=Ac(j(Ic,"exhaustMapTo")),Mu=class extends W{constructor(i,e){super(i),this.f=e,this.groups=new Map}next(i){let e=this.f(i),t=this.groups.get(e);typeof t=="undefined"&&(t=nt(),t.key=e,this.groups.set(e,t),super.next(t)),t.next(i)}complete(){this.groups.forEach(i=>i.complete()),super.complete()}error(i){this.groups.forEach(e=>e.error(i)),super.error(i)}},TE=j(Mu,"groupBy"),ku=class extends W{constructor(){super(...arguments),this.start=new Date}next(i){this.sink.next({value:i,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},EE=j(ku,"timeInterval"),wu=class extends W{constructor(i,e){super(i),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(i){this.buffer.push(i)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},SE=j(wu,"bufferTime"),xu=class extends W{constructor(i,e){super(i),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(i){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:t,data:r}=e;super.next(r),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(t))}},i)}next(i){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:i})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},IE=j(xu,"delay"),Lu=class extends W{constructor(i,e){super(i),this.selector=e}error(i){this.dispose(),this.selector(i)(this.sink)}},Vu=j(Lu,"catchError");var AE=()=>o=>new Promise((i,e)=>{let t;new Xr(o,r=>t=r,e,()=>i(t))}),CE=()=>o=>{let i;return new ReadableStream({start(e){i=new Xr(o,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){i.dispose()}})},Ae=(o=me,i=me,e=me)=>t=>new Xr(t,o,i,e),Uu=class extends W{constructor(i,e){super(i),e instanceof Function?this.next=t=>{e(t),i.next(t)}:(e.next&&(this.next=t=>{e.next(t),i.next(t)}),e.complete&&(this.complete=()=>{e.complete(),i.complete()}),e.error&&(this.error=t=>{e.error(t),i.error(t)}))}},Fu=j(Uu,"tap"),Bu=class extends W{constructor(i,e){super(i),this.timeout=e,this.id=setTimeout(()=>this.error(new Tn(this.timeout)),this.timeout)}next(i){super.next(i),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},RE=j(Bu,"timeout"),yE=(o=1/0)=>i=>{if(i instanceof Ot){let e=oe(t=>{let r=o,s=new W(t);s.error=n=>{r-- >0?s.subscribe(i):t.error(n)},s.sourceId=e.id,s.subscribe(i)},"retry",[o]);return e.source=i,Ne.pipe(e),e}else return e=>{let t=o,r=new W(e);r.error=s=>{t-- >0?i(r):e.error(s)},i(r)}};var ts=(e=>(e[e.AUTO_SWITCH_NEW_DEVICE=0]="AUTO_SWITCH_NEW_DEVICE",e[e.WAIT_CURRENT_DEVICE=1]="WAIT_CURRENT_DEVICE",e))(ts||{}),Yr=class Yr extends qr{constructor(e,t){super({mediaType:e,PlayerClass:t});d(this,"isRemote",!1);d(this,"deviceId");d(this,"groupId","");d(this,"label","");d(this,"sourceTrack");d(this,"enableAutoSwitchWhenRecapturing",!0);d(this,"_isRecapturing",!1);d(this,"_lastRecaptureTime",0);d(this,"_onMuteTimeoutId",-1);d(this,"_encodeCheckTimeoutId",-1);d(this,"recaptureMode",0);d(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}get isUseCustomSource(){return this.sourceTrack&&this.mediaTrack&&this.sourceTrack!==this.mediaTrack}encodeFrame(e,t){throw new Error("Method not implemented.")}installTrackEvent(e){Ue(e,e).add(p.MUTE,this.onTrackMuted).add(p.UNMUTE,this.onTrackUnmuted).add(p.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===p.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){be(e)}setStateToReady(){}capture(e){return f(this,null,function*(){var t;try{let r=P();A.emit(C.LOCAL_TRACK_CAPTURE_START,{track:this});let s;e.customSource?(s=new MediaStream,s.addTrack(e.customSource)):((t=this.sourceTrack)==null||t.stop(),s=yield yp(e));let n=s.getTracks()[0];return yield this.setInputMediaStreamTrack(n),e.customSource||(this.sourceTrack=n,this.updateDeviceIdInUse(),this.listenDeviceChange()),A.emit(C.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:P()-r}),s}catch(r){throw A.emit(C.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:r}),this.log.error(`getUserMedia error observed ${r}`),r}})}setOutputMediaStreamTrack(e){var t;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(t=this.room)==null?void 0:t.replaceTrack(this)}get hasFlag(){var t,r;let e=$t(((t=this.room)==null?void 0:t.localPublishFlag)||0,((r=this.room)==null?void 0:r.userId)||"");return this.mediaType===4&&e.hasVideo||this.mediaType===1&&e.hasAudio||this.mediaType===2&&e.hasAuxiliary}publish(e,t){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),Promise.all([t,new Promise((r,s)=>f(this,null,function*(){var a,c;this.hasFlag?r():le(ue(e,"local-publish-flag-changed"),Mt(()=>this.hasFlag),Le(En(ue(this,G.INIT),ue(this,"ready"))),Ae(r)),!((((c=(a=this.room)==null?void 0:a.networkQuality)==null?void 0:c.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var u,h,m,g,T,_;if(!((((h=(u=this.room)==null?void 0:u.networkQuality)==null?void 0:h.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let S=this.kind===p.AUDIO,R=this.stat.bytesSent>0;if(v[R?"addSuccessEvent":"addFailedEvent"]({key:S?503700:513702}),!S){let X=((g=(m=this.room)==null?void 0:m.videoCodec)==null?void 0:g.toUpperCase())||"H264",$={H264:513704,H265:513705,VP8:513706}[X];$&&v[R?"addSuccessEvent":"addFailedEvent"]({key:$})}R||(v.addEnum({key:S?503701:513703,value:Ur()}),se.uploadEvent({log:`stat-encode-failed-${this.kind}-${Vr()||$i()}`,userId:this.userId}),this.log.warn(S?"encode failed":`${(_=(T=this.room)==null?void 0:T.videoCodec)==null?void 0:_.toUpperCase()} encode failed`),this.emit("6",this),s(new N({message:`${this.strMediaType} encode failed`,code:S?I.AUDIO_ENCODE_FAILED:I.VIDEO_ENCODE_FAILED})))}},5e3))}))])}unpublish(){this.room&&this.room.localTracks.delete(this),A.emit(C.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return f(this,null,function*(){if(this.sourceTrack&&gi){let{deviceId:e,groupId:t}=this.sourceTrack.getSettings(),{label:r}=this.sourceTrack;(yield Cp({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=r,t&&(this.groupId=t),Qo().then(n=>{let a=n.find(c=>c.deviceId===e);a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.sourceTrack||this.kind===p.AUDIO&&!Ap(this.sourceTrack)||this.kind===p.VIDEO&&!Ip(this.sourceTrack)||this._isRecapturing||e&&Xt&&ke)}onTrackMuted(){if(super.onTrackMuted(),bp(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<fo){setTimeout(()=>this.onTrackMuted(),fo);return}this._onMuteTimeoutId=setTimeout(()=>f(this,null,function*(){var e;if((e=this.sourceTrack)!=null&&e.muted){if((Ie||pe)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return f(this,null,function*(){if(qe(Yr.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()&&this.recaptureMode===0){if(Date.now()-this._lastRecaptureTime<fo){setTimeout(()=>this.onTrackEnded(),fo);return}this.emit("7"),this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return f(this,null,function*(){var r;if(this._isRecapturing||!this.sourceTrack)return;this.log.warn("recapture trying"),(r=this.sourceTrack)==null||r.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let t={useExactDeviceId:!0};if(e==="user"||e==="environment")t.facingMode=e;else{let s;(this.kind==="audio"?yield ht():yield mt()).find(a=>a.deviceId===e)&&(s=e),t.deviceId=s}return this.capture(t).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),A.emit(C.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(s=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${s.message}`),this.emit("5",s),A.emit(C.LOCAL_TRACK_RECAPTURE,{track:this,error:s})})})}getRecoverCaptureDeviceId(){return f(this,null,function*(){let e=this instanceof Ge;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let r=(Rn.get(t)||0)+1;if(Rn.set(t,r),r>=3&&this.enableAutoSwitchWhenRecapturing){let s=e?(yield mt()).find(n=>!Rn.has(n.deviceId)):(yield ht()).find(n=>!Rn.has(n.deviceId));s&&(this.log.warn(`${t} capture fail ${r} times, change new ${s.deviceId}`),t=s.deviceId)}}return t})}stopCapture(){var e;this.sourceTrack&&(this.sourceTrack.stop(),this.uninstallTrackEvent(this.sourceTrack)),(e=this.manager)==null||e.removeInput(this)}close(){super.close(),this.stopCapture()}};O([Te(G.INIT,"ready",{ignoreError:!0,sync:!0})],Yr.prototype,"setStateToReady",1),O([Dt()],Yr.prototype,"capture",1),O([Te("ready","publish",{ignoreError:!0,success(){this.room.localTracks.add(this),A.emit(C.LOCAL_TRACK_PUBLISHED,{track:this,room:this.room}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"})},fail(e){let t="error";if(e.cause instanceof N){let r=e.cause;r.message.includes("timeout")?t="timeout":r.code===I.API_CALL_ABORTED&&(t="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:t,error:e.cause||e})}}),pt(521714,!1)],Yr.prototype,"publish",1),O([K(e=>function(){return f(this,null,function*(){let t=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:t,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),Te([],"ready",{sync:!0})],Yr.prototype,"unpublish",1);var ri=Yr,Rn=new Map;A.on(C.SWITCH_DEVICE_SUCCESS,o=>{o.track.deviceId&&Rn.delete(o.track.deviceId)});var Rt=class o extends ri{constructor(e){super(1,rc);d(this,"mediaType",1);d(this,"volume",0);d(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});d(this,"playerMuted",!0);d(this,"pipeline");d(this,"earMonitorGainNode",new Oe);d(this,"_output",new Oe);d(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});d(this,"mixedAudioReferenceMap",new Map);d(this,"isAudioContextLongSuspended",!1);this.manager=e,this.pipeline=new zo(e),this.pipeline.source.pipeTo(this.player.pipeline.volumeMeter),this.pipeline.gain.pipeTo(this.earMonitorGainNode).pipeTo(this._output),this.pipeline.gain.pipeTo(this.player.pipeline.volumeMeterAfter3A),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this),A.on(C.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this)}get dbVolume(){return Jr.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}getInternalAudioLevelAfter3A(){if(this.pipeline.aec.node||this.pipeline.denoiser.node)return this.player.getInternalAudioLevelAfter3A()}setInputMediaStreamTrack(e){return f(this,null,function*(){let t=this.trackSettings||{};v.addEnum({key:501701,value:t.channelCount||0,useUV:!1}),v.addEnum({key:501702,value:t.sampleRate||0,useUV:!1}),v.addEnum({key:502700,value:0});let{sampleRate:r,channelCount:s}=t;this._log.info(`local audio track input ${JSON.stringify({sampleRate:r,channelCount:s})}`),this.pipeline.source.channelCount=s||1,this.pipeline.replaceSource(e),yield qe(o.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:t,useExactDeviceId:r=!0,retryWhenExactFailed:s=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:r,retryWhenExactFailed:s,customSource:t})}switchDevice(e){return f(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e&&!this.isUseCustomSource)if(e===Nr){if(yield iu(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.sourceTrack&&this.sourceTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),A.emit(C.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(t){throw this.log.error(`switch microphone failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}}})}listenDeviceChange(){ve&&!ve.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&ve.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){let t=this.recaptureMode===1;if(this.log.warn(`RecaptureMode: ${ts[this.recaptureMode]}. Current microphone is lost: ${JSON.stringify(e)}`),this.recaptureMode===0){Ce(this.userId,{eventId:2003,param1:6,streamType:1});let r=yield ht();r[0]?this.recapture(r[0].deviceId):t=!0}t&&ve.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.recaptureMode===1&&e.deviceId!==this.deviceId||(ve.off("audioInputAdded",this.handleMicrophoneAdded,this),this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId))}update3A(s){return f(this,arguments,function*({echoCancellation:e,noiseSuppression:t,autoGainControl:r}){let n=this.sourceTrack||this.mediaTrack;if(!n)return;let a=n.getConstraints(),c=!1;!E(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a.echoCancellation=e,c=!0),!E(t)&&t!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=t,a.noiseSuppression=t,c=!0),!E(r)&&r!==this.profile.autoGainControl&&(this.profile.autoGainControl=r,a.autoGainControl=r,c=!0),c&&(ne||ke?yield n.applyConstraints(a).catch(l=>this._log.warn("update3A failed: ",l)):this.deviceId&&(yield this.recapture(this.deviceId)))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&v.addEnum({key:502700,value:2})}setAudioVolume(e){super.setAudioVolume(0),Ie&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(Ee().createGain()),this._output.setNode(Ee().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this.sourceTrack&&!(ke||Ie))return this.update3A({echoCancellation:e})}addDenoiser(e){var t;if(dt<=92&&((t=this.trackSettings)==null?void 0:t.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}v.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1)}mixAudioReference(e,t){if(this.mixedAudioReferenceMap.has(t))return;this.log.info(`mixAudioReference() => ${t}`);let r=pn(e),s=new Oe,n=Ee().createGain();n.gain.value=1;let a=new Oe;s.pipeTo(a).pipeTo(this.pipeline.mixNode),s.setNode(r),a.setNode(n),this.mixedAudioReferenceMap.set(t,[s,a])}unMixAudioReference(e){let[t,r]=this.mixedAudioReferenceMap.get(e)||[];t&&(this.log.info(`unMixAudioReference() => ${e}`),t.deleteNode(),r==null||r.deleteNode(),this.mixedAudioReferenceMap.delete(e))}setAudioReferenceVolume(e,t){let[r,s]=this.mixedAudioReferenceMap.get(e)||[];s!=null&&s.node&&(s.node.gain.value=t/100,this.log.info(`setAudioReferenceVolume() => ${e} ${s.node.gain.value}`))}addAudioProcessor(e,t,r){this.pipeline.silentNode.setNode(r),this.pipeline.mixNode.setNode(t),this.pipeline.aec.setNode(e)}removeDenoiser(e){if(this.pipeline.denoiser.node===e)return this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0)}removeAudioProcessor(e){this.pipeline.aec.node===e&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode())}close(){this.mixedAudioReferenceMap.forEach(([e,t])=>{e.deleteNode(),t.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),ve.off("audioInputAdded",this.handleMicrophoneAdded,this),ve.off("audioInputRemoved",this.handleMicrophoneRemoved,this),A.off(C.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this),super.close()}recapture(e){return f(this,null,function*(){try{yield qe(o.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield ht()).find(s=>s.deviceId!==e);if(r)yield qe(o.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((t,r)=>r?r({frame:t}):t,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}handleAudioContextLongSuspended({isSuspended:e}){if(this.pipeline.isProcessEnabled)if(e){this.isAudioContextLongSuspended=!0,this.log.warn(`context has suspended for ${Kl/1e3} seconds, change to source audio${vt?"":", non-Safari"}`);let t=this.sourceTrack||this.mediaTrack;t&&this.setOutputMediaStreamTrack(t)}else this.isAudioContextLongSuspended=!1,this.log.warn("context has resumed, change to processed audio"),this.pipeline.track&&this.setOutputMediaStreamTrack(this.pipeline.track)}setOutputMediaStreamTrack(e){if(this.isAudioContextLongSuspended){let t=this.sourceTrack||this.mediaTrack;t&&(e=t)}super.setOutputMediaStreamTrack(e)}};var Zi=class{constructor(i,e=!1){this.dataView=i;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,t=[],r=0;for(let n=i;n<=e;n++){let a=this.dataView.getInt8(n);switch(a){case 0:case 1:case 2:case 3:r===2&&(t.push(3),r=0),a==0?r++:r=0,t.push(a);break;default:r=0,t.push(a);break}}t.push(this.dataView.getInt8(this.dataView.byteLength-1));let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=s}removePreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,t=[],r=0;for(let n=i;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:r++,t.push(this.dataView.getInt8(n));break;case 3:r!==2&&t.push(this.dataView.getInt8(n)),r=0;break;default:t.push(this.dataView.getInt8(n)),r=0;break}let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=s}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let i=6;for(let e=6;e<this.dataView.buffer.byteLength&&(i++,this.dataView.getUint8(e)===255);e++);return i}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let i=0,e=6;for(let s=6;s<this.dataView.buffer.byteLength;s++){let n=this.dataView.getUint8(s);if(e++,n===255)i+=255;else{i+=n;break}}let t=new ArrayBuffer(i),r=new DataView(t);for(let s=0;s<t.byteLength;s++,e++)r.setInt8(s,this.dataView.getInt8(e));return r}};var Cc=class{constructor(){d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(this,"_seiPayloadType",243)}encodeSEINalu(i){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,s=[];s.push(0,0,0,1,6,this._seiPayloadType);for(let a=0;a<t;a++)s.push(255);s.push(r);let n=new DataView(i);return s.push(...new Uint8Array(n.buffer)),s.push(128),new Zi(new DataView(new Uint8Array(s).buffer),!0)}sendSEI(i,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(i),e!=null&&e.small&&this._smallSeiMessageList.push(i)}isEmpty(){return!this._seiMessageList.length}getNaluCount(i){let e=0,t=0,r=new DataView(i);for(let s=0;s<i.byteLength;s++)switch(r.getUint8(s)){case 0:e++;break;case 1:(e===2||e===3)&&t++,e=0;break;default:e=0;break}return t}encode(i,e){let t=e?this._smallSeiMessageList:this._seiMessageList;if(t.length>0&&i.data.byteLength>0){let s=9-this.getNaluCount(i.data);if(s<=0)return 0;let n=t.splice(0,s).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((m,g)=>m+g.dataView.byteLength,0),c=new ArrayBuffer(a+i.data.byteLength),l=new DataView(c),u=new DataView(i.data),h=0;for(let m=0;m<n.length;m++)for(let g=0;g<n[m].dataView.byteLength;g++)l.setInt8(h++,n[m].dataView.getInt8(g));for(let m=0;m<i.data.byteLength;m++)l.setInt8(h++,u.getInt8(m));return i.data=c,n.length}return 0}};var Zr=class Zr extends ri{constructor(e,t=4){super(t,ot);d(this,"profile",D({},ar));d(this,"avoidCropping",!1);d(this,"_scaleResolutionDownBy");d(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});d(this,"small");d(this,"isNeedToSetBandwidth");d(this,"muteImage");d(this,"manager");d(this,"_seiCodec",new Cc);this.manager=e;let r=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(w(D({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",r),this.on("publish",r),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!gi||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return f(this,null,function*(){var t,r,s;if(te(e)){if(this.muteImage===e)return;yield(t=this.manager)==null?void 0:t.deleteWatermark("mute"),yield(r=this.manager)==null?void 0:r.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,qe(Zr.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(s=this.manager)==null?void 0:s.deleteWatermark("mute"),this.muteImage=void 0),qe(Zr.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:t,useExactDeviceId:r=!0,customSource:s,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:t||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:r,retryWhenExactFailed:n,customSource:s})}setProfile(e){let t=this.fallbackProfile(e);t.bitrate&&(this.isNeedToSetBandwidth=t.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(t):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(w(D({},this.profile),{width:1920,height:1080})))}applyProfile(){return f(this,null,function*(){var a;if(!this.mediaTrack)return;let{width:e=0,height:t=0}=(this.sourceTrack||this.mediaTrack).getSettings(),r=e*t,s=this.settings,n=s.height!==this.profile.height||s.width!==this.profile.width||s.frameRate!==this.profile.frameRate;if(n&&(je===16&&this.deviceId?yield this.recapture(this.deviceId):(yield(a=this.sourceTrack||this.mediaTrack)==null?void 0:a.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;let{width:c=0,height:l=0}=(this.sourceTrack||this.mediaTrack).getSettings(),u=c*l;if(n&&u&&r&&u===r){this.log.warn("set bandwidth failed: resolution is not changed");return}return this.room.setBandWidth({bandwidth:this.profile.bitrate,type:p.VIDEO,videoType:p.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},t=this.sourceTrack||this.mediaTrack;return gi&&t&&Object.assign(e,t.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:Ro(this.settings,this.profile)}isAllowed2k4k(e){var t;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((t=this.room.scheduleResult.trtcAutoConf)==null?void 0:t["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return f(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e)&&!this.isUseCustomSource)return;let t={useExactDeviceId:!0,retryWhenExactFailed:!1};if(e==="user"||e==="environment"){t.facingMode=e;try{if((Ws||Lo)&&e==="environment"&&Pl){let s=(yield mt(!0)).map(a=>{var c;return w(D({},a),{capabilities:(c=a.getCapabilities)==null?void 0:c.call(a)})}).filter(a=>{var c,l;return(l=(c=a.capabilities)==null?void 0:c.facingMode)==null?void 0:l.includes("environment")}),n=s[0];s.forEach(a=>{var h,m,g,T;let{capabilities:c}=a,l=(h=c.width)!=null&&h.max&&((m=c.height)!=null&&m.max)?c.width.max*c.height.max:0,u=(g=n.capabilities.width)!=null&&g.max&&((T=n.capabilities.height)!=null&&T.max)?n.capabilities.width.max*n.capabilities.height.max:0;l>u&&(n=a)}),n!=null&&n.capabilities&&(delete t.facingMode,this._log.info("switch to max res camera",n),t.deviceId=n.deviceId)}}catch(r){this._log.warn("get max res camera failed",r)}}else t.deviceId=e;this.sourceTrack&&this.sourceTrack.stop(),yield this.capture(t),A.emit(C.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(t){throw this.log.error(`switch camera failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}})}updateSmallConfig(e){var r,s;this._log.info(`update small stream config: ${JSON.stringify(e)}`);let t=!this.small;this.small=this.fallbackProfile(e,!0),(r=this.manager)==null||r.update(),t&&((s=this.room)==null||s.enableSmall(!0)),this.log.info("update small stream config success")}fallbackProfile(e,t=!1){let r=e.width>e.height,s=D({},e);return e.width*e.height<=160*120&&pe&&Ke&&(this.log.warn(`${t?"small ":""}resolution is ${e.width}*${e.height}, fallback to 240*180 for android chrome`),s.width=r?240:180,s.height=r?180:240,s.bitrate=Math.max(e.bitrate,150)),e.width*e.height>1280*720&&il&&(s.width=r?1280:720,s.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),Xs(Tt,"14.3")&&el(Tt,"14.0",!0)&&this.on("7",()=>{let n=this.profile.width>this.profile.height;this.profile.width*this.profile.height>640*480?(this.profile.width=n?640:480,this.profile.height=n?480:640,this.log.warn("reduce the resolution to 480p on iOS 14.0 ~ 14.2")):this.profile.width*this.profile.height>640*360&&(this.profile.width=n?640:360,this.profile.height=n?360:640,this.log.warn("reduce the resolution to 360p on iOS 14.0 ~ 14.2"))}),!t&&this.avoidCropping&&(Ke||ne)&&!ol()&&e.width*e.height<=640*360&&e.width/e.height===16/9&&(this._scaleResolutionDownBy=1280/e.width,e.width=1280,e.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),s}stopSmall(){var e,t;this.small&&(delete this.small,(e=this.manager)==null||e.update(),(t=this.room)==null||t.enableSmall(!1))}listenDeviceChange(){ve&&!ve.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&ve.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){let t=this.recaptureMode===1;if(this.log.warn(`RecaptureMode: ${ts[this.recaptureMode]}. Current camera is lost: ${JSON.stringify(e)}`),this.recaptureMode===0){Ce(this.userId,{eventId:2003,param1:7,streamType:2});let r=yield mt();r[0]?this.recapture(r[0].deviceId):t=!0}t&&ve.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return f(this,null,function*(){this.recaptureMode===1&&e.deviceId!==this.deviceId||(ve.off("videoInputAdded",this.handleCameraAdded,this),this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId))})}encodeFrame(e,t){if(!this.manager)return e;let r=t?8:this.mediaType;return this.manager.encodePipeline.reduceRight((s,n)=>n?n({frame:s,mediaType:r}):s,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,t){return E(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,t)}close(){ve.off("videoInputAdded",this.handleCameraAdded,this),ve.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield qe(Zr.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield mt()).find(s=>s.deviceId!==e);if(r)yield qe(Zr.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}setRotation(e){this.manager&&(this.isScreen||E(e)||e!==this.rotation&&(this.rotation=e,this.manager.rotation=e))}};O([st(function(e){this.setContentHint(e.contentHint||"motion")})],Zr.prototype,"capture",1);var Ge=Zr;var Gu={};Mi(Gu,{REPORT_TYPE:()=>yo,buildSSOPackage:()=>Vi,bytes2ms:()=>em,calculateScaleResolutionDownNumber:()=>Ro,convertObjectNumberToInt:()=>Ls,copyProperties:()=>Kh,deepClone:()=>Dr,deepCloneBasic:()=>sa,deepMerge:()=>Gt,delay:()=>Wt,fibonacci:()=>Mr,formatedTime:()=>dm,getConstructorName:()=>Eo,getContainerFromElement:()=>cm,getEnv:()=>Yh,getInternalVersion:()=>nm,getLoggerUrl:()=>Pi,getMediaStreamTrackInfo:()=>la,getMuteStateFromFlag:()=>$t,getNetworkType:()=>Vd,getNumNetworkType:()=>Or,getReconnectionTimeout:()=>Ht,getStringByteLength:()=>xs,getTurnServer:()=>am,getUint32Version:()=>aa,getValueType:()=>ye,getViewListFromView:()=>Ao,glog:()=>Fd,ipv4ToUint32:()=>Io,isArray:()=>Se,isAudioWorkletSupported:()=>om,isBoolean:()=>de,isConstructor:()=>kr,isEmpty:()=>So,isFunction:()=>ae,isLangChinese:()=>Ft,isMediaStreamTrack:()=>im,isNumber:()=>q,isObject:()=>ft,isOverseaSdkAppId:()=>Li,isPlainObject:()=>Ze,isPortrait:()=>Hd,isPromise:()=>ur,isRemoteTrack:()=>rm,isRotate90Or270:()=>_t,isSetSinkIdSupported:()=>sm,isString:()=>te,isUndefined:()=>E,loadImage:()=>Co,loadVideo:()=>lm,ms2bytes:()=>tm,ms2samples:()=>Bd,normalizeUrl:()=>da,performanceNow:()=>P,promiseAny:()=>wr,samples2ms:()=>Ud,setNetworkType:()=>na,stringify:()=>bt,stringifyIncludeValue:()=>ws,throttlePromise:()=>ca});var NE=[-1,-1,1,-1,-1,1,1,1],DE=[0,0,1,0,0,1,1,1];var Er=class Er extends G{constructor(e,t){super();this.context=e;d(this,"name");d(this,"input");d(this,"output");d(this,"texture");d(this,"ctx2d",null);d(this,"fbo");d(this,"width",0);d(this,"height",0);d(this,"x",0);d(this,"y",0);d(this,"program");d(this,"vertexShader");d(this,"fragmentShader");d(this,"totalFrames",0);d(this,"dropFrames",0);d(this,"matchInputSize",!0);d(this,"texCoordBuffer");d(this,"positionBuffer");d(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});d(this,"cost",0);d(this,"_canvas",null);d(this,"_image");d(this,"log");if(this.context.on("disconnect",this.close,this),this.name=t.name,this.log=t.logger,this.matchInputSize=t.matchInputSize!==!1,this.width=t.width||e.width,this.height=t.height||e.height,this._image=t.image,e instanceof We){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&je!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let r=e.ctx;this.texCoordBuffer=this.createBuffer(DE),this.positionBuffer=this.createBuffer(NE),t.createTexture!==!1&&(this.texture=r.createTexture(),this.useTexture(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1)),t.useFbo&&(this.fbo=r.createFramebuffer(),this.useBufferFrame(),this.useTexture(),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.width,this.height,0,r.RGBA,r.UNSIGNED_BYTE,null),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,this.texture,0)),t.useDefaultProgram?this.program=e.defaultProgam:(t.vertexShaderSource||t.fragmentShaderSource)&&(this.vertexShader=t.vertexShaderSource?e.createShader(r.VERTEX_SHADER,t.vertexShaderSource):e.defaultVShader,this.fragmentShader=t.fragmentShaderSource?e.createShader(r.FRAGMENT_SHADER,t.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(r){this.context.destroy(new N({code:I.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${r.message||r}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let t=this.context.ctx,r=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),r}connect(e,...t){return e.addInput(this,...t),this.output=e,e}addInput(e,...t){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let t=Date.now();if(this.context instanceof Pe&&this.render(e)||this.context instanceof We&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-t,!0}render2d(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var t;(t=this.output)==null||t.update(e)}disconnect(...e){var t;(t=this.output)==null||t.removeInput(this,...e),delete this.output}removeInput(e,...t){delete this.input}close(){var e,t;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(t=this.input)==null||t.disconnect(),this.context instanceof Pe){let r=this.context.ctx;r.deleteBuffer(this.texCoordBuffer),r.deleteBuffer(this.positionBuffer),this.fbo&&r.deleteFramebuffer(this.fbo),this.texture&&r.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&r.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&r.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&r.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let t=this.context.ctx;e.forEach((r,s)=>{r&&(t.activeTexture(t.TEXTURE0+s),t.bindTexture(t.TEXTURE_2D,r))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let t=this.context.ctx,r=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW),r}setTexBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.texCoordBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}setPosBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}changeBufferData(e,t){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,e),r.bufferData(r.ARRAY_BUFFER,new Float32Array(t),r.STATIC_DRAW)}setAttributes(...e){let t=this.context.ctx;e.forEach((r,s)=>{t.enableVertexAttribArray(s),t.bindBuffer(t.ARRAY_BUFFER,r),t.vertexAttribPointer(s,2,t.FLOAT,!1,0,0)})}getVertexPoint(e,t){return[e/this.width*2-1,t/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,t){if(!(this.width===e&&this.height===t)){if(this.width=e,this.height=t,this._canvas&&(this._canvas.width=e,this._canvas.height=t),this.texture&&this.fbo){this.useTexture();let r=this.context.ctx;r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e,t,0,r.RGBA,r.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,t)}}draw(e,t){this.setAttributes(e||this.positionBuffer,t||this.texCoordBuffer);let r=this.context.ctx;r.drawArrays(r.TRIANGLE_STRIP,0,4)}draw2d(e,t,r,s,n,a,c,l,u){let h=!E(a)&&!E(c)&&!E(l)&&!E(u);return this.ctx2d&&e?(e instanceof ImageData?(h?this.ctx2d.putImageData(e,t,r,a,c,l,u):this.ctx2d.putImageData(e,t,r),this.emit(Er.RENDER,this.ctx2d.canvas)):(h?this.ctx2d.drawImage(e,a,c,l,u,t,r,s,n):this.ctx2d.drawImage(e,t,r,s,n),this.emit(Er.RENDER,e)),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close(),!0):!1}drawBackGround2d(e){this.ctx2d&&(this.ctx2d.save(),this.ctx2d.fillStyle=e,this.ctx2d.fillRect(0,0,this.width,this.height),this.ctx2d.restore())}getInfo(){var h;let{totalFrames:e,x:t,y:r,width:s,height:n,name:a,cost:c}=this,l=Date.now(),u=(e-this.lastInfo.totalFrames)/((l-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:s,height:n,timestamp:l,fps:u,name:a,cost:c},D({parent:(h=this.input)==null?void 0:h.getInfo()},this.lastInfo)}createTexture(e){let t=this.context.ctx,r=t.createTexture();return this.useTextures(r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),r}};d(Er,"RENDER","render"),O([Te(G.INIT,"connected",{sync:!0})],Er.prototype,"connect",1),O([Te("connected",G.INIT,{ignoreError:!0,sync:!0})],Er.prototype,"disconnect",1),O([Te([],"closed",{sync:!0})],Er.prototype,"close",1);var Be=Er;var OE=le(du(250),Cn(()=>performance.now()),Qi());var Pp=o=>i=>{let e=performance.now();le(OE,fc(t=>t-e<o),Yi(1))(i)};var kE=[0,1,1,1,0,0,1,0],Kr=class extends Be{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t));d(this,"_intervalId",0);d(this,"_sequence",0);d(this,"checkGLError",!1);d(this,"checkVisibilityChange");e instanceof We?this.ctx2d=e.ctx||null:e.available&&(t!=null&&t.mirrorUpAndDown)&&this.setTexBuffer(kE)}start(e){this.log.info(`${this.name} start render ${e} fps`),re.clearTask(this._intervalId),this._intervalId=re.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(re.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof Pe){let r=this.context.ctx.getError();r&&this.context.destroy(new N({code:I.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${r}`}))}},{fps:this.context.frameRate})}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),this.emit(Be.RENDER,this.context._canvas),!0):!1}addInput(e,...t){super.addInput(e,...t),this.start(this.context.frameRate)}update(e=0){this._intervalId&&(re.clearTask(this._intervalId),this._intervalId=0,e===1&&(this.log.info(`${this.name} use requestVideoFrameCallback`),this.checkVisibilityChange=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",this.checkVisibilityChange))},document.addEventListener("visibilitychange",this.checkVisibilityChange))),this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),re.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),re.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},is=class extends Kr{constructor(e,t){super(e,t);d(this,"_videoTrack");d(this,"_muteOb");d(this,"_closedOb",ue(this,"closed"));d(this,"_subscription");d(this,"_canvasContainer");Number(Fi)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=ue(this._videoTrack,"mute"),le(ue(this._videoTrack,"ended"),Le(this._closedOb),Ae(()=>{this.context.destroy(new N({code:I.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=le(this._muteOb,Le(this._closedOb),Qr(Pp(5e3)),Mt(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),Ae(()=>{this.context.destroy(new N({code:I.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,t;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(t=this._canvasContainer)==null||t.remove()}},Rc=class extends is{render(i){var e;return!!((e=this.input)!=null&&e.requestFrame(i))}};var yc=class extends is{constructor(e,t,r){super(e,{name:"smallDestination",logger:r});this.resolution=t}resize(e,t){let r,s=e*t,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${t} small res: ${this.resolution.width}*${this.resolution.height} `),s>n?r=s/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${t} small: ${this.resolution.width} * ${this.resolution.height}`),r=s/(160*120)),super.resize(e/Math.sqrt(r),t/Math.sqrt(r))}};var yn=class extends Be{constructor(e,t){super(e,D({name:"imageSource"},t));d(this,"_lastImage");d(this,"_totalFrames",0);d(this,"_autoResize",!1);d(this,"_canvasRendered");d(this,"videoCallbackId",0);d(this,"waitingFirstFrame",!0);d(this,"shouldUpdate",!0);this._autoResize=(t==null?void 0:t.autoResize)!==!1,je===16&&(this._canvasRendered=nt(),le(this._canvasRendered,Sn(this._image),es(r=>r instanceof HTMLCanvasElement?ue(r,"rendered"):An()),Le(ue(this,"closed")),Ae(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;let e=this.image;this.videoCallbackId&&e.cancelVideoFrameCallback(this.videoCallbackId),Wr()&&!document.hidden&&(this.videoCallbackId=e.requestVideoFrameCallback((t,r)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=r.presentedFrames,this.update(1))}))}_render(e,t){var a;let{width:r,height:s}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:r,videoHeight:s}=n,!r||!s)return!1;n.width=r,n.height=s}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:r,height:s}=n,n!==this._lastImage)this._lastImage=n;else if(r===this.width&&s===this.height)return!0}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:r,height:s}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:r,displayHeight:s}=n,(a=this._lastImage)==null||a.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===r&&this.height===s&&this.totalFrames){if(t){this.useTexture();let c=this.context.ctx;c.texSubImage2D(c.TEXTURE_2D,0,0,0,c.RGBA,c.UNSIGNED_BYTE,n)}}else{if(t){this.useTexture();let c=this.context.ctx;c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,n)}this.resize(r,s)}return!0}get image(){return this._image}set image(e){var t;(t=this._canvasRendered)==null||t.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},bn=class extends yn{constructor(e,t,r){super(e,r);this._player=t;this.name="videoPlayerSource",le(ue(this._player,he.PLAYER_STATE_CHANGED),Le(ue(this,"closed")),Mt(({state:s})=>s==="PLAYING"),Ae(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},kt=class extends bn{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(i,e,t){super(i,new ot({id:t.name,track:e,muted:!0,container:null,objectFit:"contain",log:t.logger}),t),this.name="videoTrackSource",this._player.play()}replaceTrack(i){this.waitingFirstFrame=!0,this._player.setTrack(i),this._player.play()}close(){super.close(),this._player.stop()}},bc=class extends Be{constructor(e,t,r){super(e,w(D({name:"textSource"},r),{create2d:!0}));d(this,"hasChange",!0);d(this,"content","");this.ctx2d.textBaseline="top",this.content=t.content||"",t.font&&(this.font=t.font),t.color&&(this.color=t.color)}set font(e){this.ctx2d&&(this.ctx2d.font=e,this.hasChange=!0)}get font(){var e;return((e=this.ctx2d)==null?void 0:e.font)||""}set color(e){this.ctx2d&&(this.ctx2d.fillStyle=e,this.hasChange=!0)}get color(){var e;return((e=this.ctx2d)==null?void 0:e.fillStyle)||""}render2d(e){return this.ctx2d&&this.hasChange?(this.ctx2d.clearRect(0,0,this.width,this.height),this.drawMultilineText(0,0),this.hasChange=!1,!0):!1}render(e){return!1}resize(e,t){if(!this.ctx2d)return;let{color:r,font:s}=this;super.resize(e,t),this.color=r,this.font=s}drawMultilineText(e=0,t=0,r=1.2){if(!this.ctx2d)return;let s=this.ctx2d.measureText(this.content);t+=s.fontBoundingBoxAscent||s.actualBoundingBoxAscent||0;let n=this.font.match(/(\d+)px/),c=(n?parseInt(n[1],10):16)*r,l=this.content.split(`
|
|
34
|
-
`);for(let
|
|
31
|
+
`,r.onclick=this.onQuestionClick.bind(this);let o=document.createElement("div");o.className=Gm,o.innerText=`${Cr()?"\u8BE6\u60C5 >":"Detail >"}`,o.onclick=this.onCollapseClick.bind(this);let s=t.content.firstChild,n=s.querySelector(`.${Vd}`);return n.appendChild(o),n.appendChild(r),n.appendChild(e),s}addDiaLog(){zm()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${nn}`).onclick=t=>t.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",$.info("show autoplay dialog"),je.uploadEvent({log:lI}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){$.warn("confirm clicked, try resume stream"),V.emit(F.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let t=this._dialogNode.querySelector(`.${mg}`);t.style.visibility=`${this._showDetail?"hidden":"visible"}`,t.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||je.uploadEvent({log:mI}),this._isCollapseClicked=!0}onQuestionClick(){window.open(gg,"_blank"),this._isQuestionClicked||je.uploadEvent({log:pI}),this._isQuestionClicked=!0}},Eg=jm;var qt=class extends Kr{constructor(e){super(e,M.VIDEO);l(this,"stat",{});l(this,"_calculateTimeout",-1);l(this,"viewMirror",!1);l(this,"objectFit");l(this,"container");l(this,"canvas");l(this,"_preSize",{width:0,height:0});this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,O(e.viewMirror)||(this.viewMirror=e.viewMirror),O(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return this._state!=="PLAYING"||this.element&&this.element.paused?!1:((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){var r;let e=document.createElement(M.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(r=this.container)==null||r.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var r;this.container=e,this.track&&this.elementToRender&&((r=this.container)==null||r.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(M.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(M.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent).add(M.RESIZE,this.handleElementEvent)}handleTrackEvent(e){var r;return e.type===M.MUTE&&((r=this.stat)!=null&&r.fps)&&(this.stat.fps=0),super.handleTrackEvent(e)}handleElementEvent(e){var o,s,n,a,u,m,h,f;if(this.mode===2)return;super.handleElementEvent(e);let r=e.type;if(r===M.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(o=this.container)==null?void 0:o.id}`),this.container&&this.container!==document.getElementById(this.container.id)&&(this._pausedRetryCount=Uo,this._log.info(`view container ${(s=this.container)==null?void 0:s.id} is recreated`)),this._pausedRetryCount>0&&!zm()&&(this._log.info(`[${Uo-this._pausedRetryCount+1}/${Uo}] ${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let T=this.element.style.transform;r===M.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=T.replace("scaleX(-1)",""):r===M.LEAVE_PICTURE_IN_PICTURE&&!T.includes("scaleX")&&(this.element.style.transform=`${T} scaleX(-1)`)}r===M.RESIZE&&(this._preSize.height!==((n=this.element)==null?void 0:n.videoHeight)||this._preSize.width!==((a=this.element)==null?void 0:a.videoWidth))&&(this._log.info(`video size changed to ${(u=this.element)==null?void 0:u.videoWidth}x${(m=this.element)==null?void 0:m.videoHeight}`),this._preSize.height=((h=this.element)==null?void 0:h.videoHeight)||0,this._preSize.width=((f=this.element)==null?void 0:f.videoWidth)||0,this.emit(Qe.RESIZE,{newWidth:this._preSize.width,newHeight:this._preSize.height}))}setCanvas(e,r=1){var o,s,n,a;this.canvas!==e&&((o=this.canvas)==null||o.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?r:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((s=this.element)==null||s.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((a=this.container)==null||a.appendChild(this.element)))}setAttr(e){let r=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);r.style=Object.assign({width:"100%",height:"100%"},r.style),super.setAttr(r)}get mirror(){return this.viewMirror}setRect(e,r){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${r}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}setPoster(e){this.element&&(this.element.poster=e)}stop(e=0){var r;super.stop(e),(r=this.canvas)==null||r.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(Qe.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(Di()&&this.element&&this._calculateTimeout<0){let e=0,r=null,o=(s,n)=>{this.stat.width=n.width,this.stat.height=n.height,r&&(this.stat.fps=Math.round((n.presentedFrames-r.presentedFrames)/(s-e)*1e3)),e=s,r=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var a;return(a=this.element)==null?void 0:a.requestVideoFrameCallback(o)},2e3))};this.element.requestVideoFrameCallback(o)}}catch(e){this._log.warn("init stat failed",e)}}};function Mi(i,t){return y(this,null,function*(){if(!i.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield i.audioWorklet.addModule(t),$.info("worklet addModule success")}catch(e){throw $.info(`worklet addModule catch error. ${e.message}`),e}})}var La;typeof AudioContext!="undefined"?La=AudioContext:typeof webkitAudioContext!="undefined"?La=webkitAudioContext:typeof mozAudioContext!="undefined"&&(La=mozAudioContext);var Ym=1500,pr,Tg=-1,$d=0,Ua=-1,Qm=!1;_g();function _g(){try{if(pr)return;pr=new La({sampleRate:48e3}),pr.onstatechange=()=>{$.info(`context state: ${pr.state}${pr.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),an()},clearTimeout(Tg)}catch(i){$.error(`initAudioContext failed: ${i} typeof AudioContextClass: ${typeof La}`),Tg=setTimeout(_g,1e3)}}var an=()=>{pr.state==="suspended"?($d=Te(),fI(),cn(),document.addEventListener("click",an)):pr.state==="interrupted"?cn():($d&&(X.addNumber({key:507800,value:Te()-$d,split:[0,500,1e3,1500,2e3,3e3,4e3,5e3,1e4,3e4],max:6e4}),$d=0),gI(),document.removeEventListener("visibilitychange",an),document.removeEventListener("click",an))},Jm=0,Xm=-1;function cn(){return new Promise((i,t)=>{if(pr.state==="running")return i();Date.now()-Jm<1e3?(clearTimeout(Xm),Xm=setTimeout(()=>{Jm=Date.now(),pr.resume().then(i,t)},1e3)):(clearTimeout(Xm),Jm=Date.now(),pr.resume().then(i,t))}).catch(i=>{$.warn(`context resume failed: ${i}`),document.addEventListener("visibilitychange",an)})}document.addEventListener("click",an);function fI(){Ua===-1&&(Ua=setTimeout(()=>{pr.state==="suspended"&&(Qm=!0,V.emit("155",{isSuspended:!0}))},Ym))}function gI(){Ua!==-1&&(clearTimeout(Ua),Ua=-1,Qm&&(Qm=!1,V.emit("155",{isSuspended:!1})))}var Ye=i=>pr;var gt=class{constructor(t){this.name=t;l(this,"node");l(this,"node2");l(this,"pre",new Set);l(this,"next",new Set);l(this,"context");l(this,"connectedNodes",new Set);l(this,"nextInputChannelMap",new Map);l(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(t){this._channelCount=t,this.setChannelCount(this.node,t),this.setChannelCount(this.node2,t),this.next.forEach(e=>e.channelCount=t)}setChannelCount(t,e){!t||t instanceof ScriptProcessorNode||(t.channelCountMode="explicit",t.channelCount=e||this.channelCount||1)}setContext(t){this.context=t,this.node&&t.addMixWeight()}removeContext(){var t;this.node&&((t=this.context)==null||t.reduceMixWeight()),delete this.context}replaceNode(t){var e;if(t!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=t,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(r){$.error(r)}}setNode(t,e){var r;if(!this.node)try{(r=this.context)==null||r.addMixWeight(),this.node=t,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),X.addSuccessEvent({key:502701})}catch(o){$.error(o),X.addFailedEvent({key:502701,error:o})}}deleteNode(){var t;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(t=this.context)==null||t.reduceMixWeight(),this.preNodeReconnect(),X.addSuccessEvent({key:502702})}catch(e){$.error(e),X.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(t=>{t.node?t.reconnect():t.preNodeReconnect()})}connectNext(t){this.next.forEach(e=>{let r=this.nextInputChannelMap.get(e);t._connect(e.node,r)||e.connectNext(t)})}_connect(t,e=0){return!this.node||!t?!1:((this.node2||this.node).connect(t,0,e),this.connectedNodes.add(t),!0)}_disconnect(){this.connectedNodes.forEach(t=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(t)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(t,e=0){return this.next.add(t),t.pre.add(this),this.nextInputChannelMap.set(t,e),t}},Bd=class extends gt{constructor(e=256){super();this.fftSize=e;l(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),r=1,o=0,s=0,n=`M${o},${s}`;for(let a=0;a<e.length;a++)s=e[a]/128*100/2,n+=`L${o},${s}`,o+=r;return n}},Va=class{constructor(){l(this,"source",new gt);l(this,"gain",new gt);l(this,"destination",new gt)}get volume(){var t;return((t=this.gain.node)==null?void 0:t.gain.value)||1}setVolume(t){if(t===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(Ye().createGain()),this.gain.node.gain.value=t}replaceSource(t){this.source.replaceNode(Fa(t))}get track(){var t;return(t=this.stream)==null?void 0:t.getAudioTracks()[0]}get stream(){var t;return(t=this.destination.node)==null?void 0:t.stream}},dn=class extends Va{constructor(e){super();this.context=e;l(this,"aec",new gt("aec"));l(this,"mixNode",new gt("mixNode"));l(this,"silentNode",new gt("silentNode"));l(this,"denoiser",new gt("denoiser"));l(this,"voiceChanger",new gt("voiceChanger"));this.source.pipeTo(this.aec).pipeTo(this.denoiser).pipeTo(this.voiceChanger).pipeTo(this.gain).pipeTo(this.destination),this.silentNode.pipeTo(this.mixNode).pipeTo(this.aec,1)}get isProcessEnabled(){return this.aec.node||this.denoiser.node||this.voiceChanger.node||this.gain.node}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.aec.setContext(this.context),this.silentNode.setContext(this.context),this.mixNode.setContext(this.context),this.denoiser.setContext(this.context),this.voiceChanger.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){this.context.inputs.has(this)&&(this.destination.deleteNode(),this.source.removeContext(),this.aec.removeContext(),this.silentNode.removeContext(),this.mixNode.removeContext(),this.denoiser.removeContext(),this.voiceChanger.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.aec.deleteNode(),this.silentNode.deleteNode(),this.mixNode.deleteNode(),this.denoiser.deleteNode(),this.voiceChanger.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},Hd=class{constructor(){l(this,"audioContext",Ye("audio-mixer"));l(this,"destination",this.audioContext.createMediaStreamDestination());l(this,"inputs",new Set);l(this,"mixWeight",0);this.destination.channelCount=1}addMixWeight(t=1){this.mixWeight+=t,this.mixWeight-1===t+1>>1&&this.mixOnChange()}reduceMixWeight(t=1){this.addMixWeight(-t)}close(){this.inputs.forEach(t=>t.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},Ig=new WeakMap;function Fa(i){let t=Ig.get(i);if(t)return t;let e=Ye();if(i instanceof HTMLAudioElement)t=e.createMediaElementSource(i);else if(i instanceof MediaStreamTrack)t=e.createMediaStreamSource(new MediaStream([i]));else return i;return Ig.set(i,t),t}var nr=class nr{constructor(t){l(this,"_volume",0);l(this,"_volumeDb",0);l(this,"_log");l(this,"_scriptProcessorNode",null);l(this,"_audioWorkletNode",null);l(this,"_interval",200);l(this,"ready",this.preload());let{log:e}=t;this._log=e,V.on(F.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-nr.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!nr.workletReady){let t='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(i<h?(s[0].set(this.cache.slice(0,i)),this.cache=this.cache.slice(i)):this.unmute&&s[0].set(t[0]),(i<h?s:t)[0]);if(a){let e=0;for(let t=0;t<a.length;++t)e=Math.max(Math.abs(a[t]),e);s=a.reduce((t,e)=>t+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';nr.workletReady=Mi(nr.audioContext,URL.createObjectURL(new Blob([t],{type:"application/javascript"})))}return nr.workletReady.then(()=>this.initAudioWorklet()).catch(t=>(this._log.error(`volumeMeter preload error: ${t}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(nr.audioContext,"volume-meter");let t=!1;this._audioWorkletNode.port.onmessage=e=>{nr.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||0,!t&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),t=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(t){this._log.error(`volumeMeter init audio worklet error: ${t}`),je.logFailedEvent({userId:this._log.userId,eventType:hi.LOAD_WORKLET,error:t}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=Ye("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=t=>{nr.lastMessageTime=Date.now();let e=t.inputBuffer.getChannelData(0),r=0;for(let o=0;o<e.length;++o)r+=e[o]*e[o];this._volume=Math.sqrt(r/e.length)||0}}catch(t){this._log.error(`volumeMeter init script processor error: ${t}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,V.off(F.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(this._volumeDb*100)}handleAudioLevelInterval(t){var r;let{interval:e}=t;this._interval=e,(r=this._audioWorkletNode)==null||r.port.postMessage({name:"setIntervalTime",intervalTime:e})}};l(nr,"lastMessageTime",0),l(nr,"audioContext",Ye("volume-meter")),l(nr,"workletReady");var Wd=nr,$a=class extends gt{constructor(e){super();l(this,"_volumeMeter");this._volumeMeter=new Wd(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return y(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}getVolumeDb(){return this._volumeMeter.getVolumeDb()}write(e){if(this.node){let r=e.allocationSize({planeIndex:0}),o=new Float32Array(r>>2);e.copyTo(o,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:o},[o.buffer]),e.close()}}},Gd=Wd;var bg=mi(yi(),1);var yg=i=>t=>t.deviceId===i;var Ba=class{constructor(t,e){l(this,"kind");l(this,"type");l(this,"devices",[]);this.kind=t,this.type=e}update(t,e){let r=t.filter(o=>o.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&ln(this.devices[0])){this.devices=r;return}e&&(r.forEach(o=>{if(o.deviceId&&!this.devices.find(yg(o.deviceId))){let s=`${this.kind}${this.type}Added`;$.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}}),this.devices.forEach(o=>{if(o.deviceId&&!r.find(yg(o.deviceId))){let s=`${this.kind}${this.type}Removed`;$.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}})),this.devices=r}hasDevice(t){return!!this.devices.find(e=>e.deviceId===t)}},Zm=class extends bg.EventEmitter{constructor(){super();l(this,"audioInputs",new Ba(M.AUDIO,"Input"));l(this,"videoInputs",new Ba(M.VIDEO,"Input"));l(this,"audioOutputs",new Ba(M.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||ft.run("interval",()=>{this.update()},{delay:1e4}))}init(){un().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return y(this,arguments,function*(e=0){let r=yield un(e);return this.audioInputs.update(r,this),this.videoInputs.update(r,this),this.audioOutputs.update(r,this),this})}},dt=Gn||Ds?null:new Zm;function ln(i){return i.deviceId===i.groupId&&i.groupId===""}function un(){return y(this,arguments,function*(i=0){if(Ni()||!xd())return[];let t=yield navigator.mediaDevices.enumerateDevices();if(i!==0){let e={audio:!1,video:!1};if(t.forEach(r=>{ln(r)&&(r.kind===M.AUDIO_INPUT?e.audio=!0:r.kind===M.VIDEO_INPUT&&(e.video=!0))}),i===2&&(e.audio=!1),i===1&&(e.video=!1),e.audio||e.video){let r;try{r=yield navigator.mediaDevices.getUserMedia(e),e.audio&&cn()}catch(o){$.debug("capture before getDevices failed: ",o)}t=yield navigator.mediaDevices.enumerateDevices(),r==null||r.getTracks().forEach(o=>o.stop())}}return t.map((e,r)=>{let o={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${r}`};return e.deviceId.length>0&&Km.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(o.getCapabilities=()=>e.getCapabilities()),o})})}function Zt(i=!1){return dt.update(i?1:0).then(t=>t.audioInputs.devices)}function Kt(i=!1){return dt.update(i?2:0).then(t=>t.videoInputs.devices)}var Ag=!1;function Rg(){return y(this,null,function*(){try{Ag||(Ag=!0,$.info(`speakers:${(yield uo()).map(i=>` ${i.deviceId.slice(0,8)}: ${i.label}`)}`))}catch(i){}})}function uo(i=!1){return y(this,null,function*(){return(mt||_t)&&(i=!1),dt.update(i?1:0).then(t=>t.audioOutputs.devices)})}var Km=new Set;function vg(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("camera")||t.includes("webcam"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${M.VIDEO_INPUT}`;return!!Km.has(r)}function Cg(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("mic")||t.includes("\u9EA6\u514B\u98CE"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${M.AUDIO_INPUT}`;return!!Km.has(r)}function ep(i,t){return y(this,null,function*(){let r=(yield Zt()).find(o=>o.deviceId===Vo);return!t&&(r==null?void 0:r.groupId)===i||(r==null?void 0:r.groupId)===i&&r.label===t})}function Ng(s){return y(this,arguments,function*({newDeviceId:i,oldDeviceId:t,oldGroupId:e,oldLabel:r,kind:o}){return i!==t?!1:o===M.AUDIO&&i===Vo?yield ep(e,r):!0})}var jd,tp=class extends Va{constructor(e){super();this.log=e;l(this,"volumeMeter");l(this,"volumeMeterAfter3A");l(this,"volumeDestination");l(this,"analyser",new Bd);this.volumeMeter=new $a({log:this.log}),this.volumeMeterAfter3A=new $a({log:this.log}),this.volumeDestination=new gt,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},qd=class i extends Kr{constructor(e){super(e,M.AUDIO);l(this,"_outputDeviceId");l(this,"_volume",1);l(this,"_destination",Ye("player").createMediaStreamDestination());l(this,"pipeline");l(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new tp(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Or==="15.2"||Or==="15.3"||Or==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let o=jd||new Audio;o.setAttribute("autoplay","autoplay"),o.srcObject=this.getMediaStream(),o.muted=this.muted,this.element=o,Le(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),o===jd&&(jd=void 0),this.bindElementEvents()}play(e){return y(this,null,function*(){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?(this.pipeline.volumeMeter.init(),this.pipeline.volumeMeterAfter3A.init()):this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(Ye("player").createAnalyser()),Rg(),Gt(i.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return y(this,null,function*(){var r,o;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(o=(r=this.element).setSinkId)==null?void 0:o.call(r,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}getInternalAudioLevelAfter3A(){return this.pipeline.volumeMeterAfter3A.getInternalAudioLevel()}},zd=class extends qd{setTrack(t){this.track!==t&&(this.unbindTrackEvents(),this.track=t,this.emit(Qe.MEDIA_TRACK_CHANGED,t),t&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([t]))))}setVolume(t){this._volume=t,this.element&&(this.element.volume=t)}},Jd=class extends qd{constructor(e){super(e);l(this,"_sourceElement");l(this,"_output",new gt);this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(Ye("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var r,o,s;((o=(r=this.element)==null?void 0:r.error)==null?void 0:o.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(Qe.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((s=e.getSettings())==null?void 0:s.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1?this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element"):mt||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),ct(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let r=this._sourceElement||this.element;r&&mr&&(jd=r),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var ts=class extends le{constructor({userId:e,sdkAppId:r,mediaType:o,room:s,PlayerClass:n=o===1?Jd:qt}){var a;super();l(this,"id",Ta());l(this,"userId","");l(this,"isRemote");l(this,"mediaType");l(this,"room");l(this,"user");l(this,"_log");l(this,"_inputTrack");l(this,"_outputTrack");l(this,"isPlayCalled");l(this,"container",null);l(this,"player");l(this,"subVideoPlayerMap");l(this,"muted",!1);l(this,"abortCtrl");l(this,"objectFit","cover");l(this,"mirror");l(this,"rotation");l(this,"isScreen",!1);l(this,"manager");l(this,"trackSettings");l(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=o,this._log=$.createLogger({id:`${this.kind[0]}t`,userId:(a=s||this.room)==null?void 0:a.userId,remoteUserId:this instanceof Ur?void 0:this.userId,sdkAppId:r,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof Ur}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(Qe.PLAYER_STATE_CHANGED,u=>{V.emit(F.PLAYER_STATE_CHANGED,j({track:this},u)),this.emit("player-state-changed",u)}),this.kind===M.VIDEO&&(this.player.on(Qe.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(Qe.LOADED_DATA),V.emit(F.VIDEO_LOADED_DATA,{track:this})}),this.player.on(Qe.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(Qe.LOADED_META_DATA)}),this.player.on(Qe.MEDIA_TRACK_CHANGED,u=>{var m;(m=this.subVideoPlayerMap)==null||m.forEach(h=>h.setTrack(u))}),this.player.on(Qe.RESIZE,u=>{this.emit("video-size-changed",j({userId:this.userId,streamType:this.mediaType===2?"auxiliary":"main"},u))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(Qe.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||$}get kind(){return this.mediaType===1?M.AUDIO:M.VIDEO}get strMediaType(){return this.mediaType===4?M.VIDEO:this.mediaType===2?M.SCREEN:M.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,r){return y(this,null,function*(){let o=ot(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(r)}`),r&&!O(r.muted)&&this.setPlayerMute(r.muted),r&&!O(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof qt&&(this.player.setObjectFit(this.objectFit),this.container!==o&&o&&(this.container=o,this.player.setContainer(o)),ot(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),r)));return}if(r&&!O(r.muted)?this.setPlayerMute(r.muted):(!this.isRemote||this.kind===M.VIDEO)&&this.setPlayerMute(!0),r&&!O(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof qt&&(this.player.setObjectFit(this.objectFit),r&&!O(r.poster)&&this.player.setPoster(r.poster)),this.isPlayCalled=!0,o&&(this.container=o,this.player instanceof qt&&this.player.setContainer(o)),V.emit(F.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(r)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(r),ot(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),r))}catch(s){throw this.handleAutoPlayFailed(s),s}})}setMirror(e,r){if(this.isScreen||this.kind!==M.VIDEO||O(e)||e===this.mirror)return;this.mirror=e;let o=this.player;r&&(o=r);let s=this.manager;if(Xe(this.mirror)){o.setViewMirror(this.mirror),!this.isRemote&&s&&(s.mirror=!1);return}switch(this.mirror){case"view":{s&&(s.mirror=!1),o.setViewMirror(!0);break}case"publish":{s&&(s.mirror=!0),o.setViewMirror(!0);break}case"both":s&&(s.mirror=!0),o.setViewMirror(!1)}}playSubContainer(e,r){return y(this,null,function*(){if(!this._outputTrack||this.kind===M.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((s,n)=>{var a;e.find(u=>n===u)||(s.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[s,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?r&&(O(r.objectFit)||a.setObjectFit(r.objectFit)):this.subVideoPlayerMap.set(n,new qt({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${s+1}`})}))}let o=[...this.subVideoPlayerMap.values()];for(let s of o)s.setViewMirror(this.player.mirror),yield s.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(Bl(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(r=>{r.stop()}),this.container=null)}resume(){return y(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),V.emit(e?F.TRACK_MUTED:F.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){bt(e,e).add(M.MUTE,this.onTrackMuted).add(M.UNMUTE,this.onTrackUnmuted).add(M.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===M.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ct(e)}setInputMediaStreamTrack(e){var o;let r=this._inputTrack;if(e!==r)return this._inputTrack=e,this.trackSettings=(o=e.getSettings)==null?void 0:o.call(e),e.enabled=!this.muted,r&&this.uninstallTrackEvent(r),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,r||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var o;let r=this._outputTrack;e!==r&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(o=e.getSettings)==null?void 0:o.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(r=>this.handleAutoPlayFailed(r)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(Bl(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new Eg;else{let r=()=>{this.resume().then(()=>{document.removeEventListener("click",r,!0)})};document.addEventListener("click",r,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof qt?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,a,u;if(this.isFirstVideoFrameEmitted)return;let r=(n=this.mediaTrack)==null?void 0:n.getSettings(),o=(r==null?void 0:r.width)||((a=this.player.element)==null?void 0:a.videoWidth)||0,s=(r==null?void 0:r.height)||((u=this.player.element)==null?void 0:u.videoHeight)||0;e===Qe.LOADED_META_DATA&&!o&&!s||(e===Qe.LOADED_DATA&&!o&&!s&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,or(this.rotation)&&([o,s]=[s,o]),this.emit("first-video-frame",{width:o,height:s,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};K([Ze([],le.INIT,{sync:!0})],ts.prototype,"close",1);var EI=Object.prototype.hasOwnProperty,{toString:zC}=Object.prototype;function TI(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Ft(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(EI.call(i,t))return!1;return!0}}return!1}var Ha=TI;var _I=function(i){return y(this,null,function*(){let t=SI(i);$.info(`getUserMedia with constraints: ${JSON.stringify(t)}`);let e=[],r=[],o=["label","deviceId","groupId"];t.audio&&(e=yield Zt(),$.info(`microphones: ${lr(e.map(s=>pe(j({},s),{groupId:s.groupId.substring(0,8)})),{keysToInclude:o})}`)),t.video&&(r=yield Kt(),$.info(`cameras: ${lr(r,{keysToInclude:o})}`));try{let s=yield navigator.mediaDevices.getUserMedia(t);return xm&&s.getTracks().forEach(n=>{$.info(`${n.kind} capabilities: ${lr(n.getCapabilities(),{keysToInclude:Wc})}`)}),t.audio&&cn(),s}catch(s){let{message:n}=s;throw s.name==="NotFoundError"&&(i.video&&r&&r.length===0&&(n=Be({key:$e.CAMERA_NOT_FOUND})),i.audio&&e&&e.length===0&&(n=Be({key:$e.MICROPHONE_NOT_FOUND}))),new de({code:q.INITIALIZE_FAILED,name:s.name,message:n,constraint:s.constraint})}})},II=oo({retryFunction:_I,settings:{retries:3,timeout:500},onError:({error:i,retry:t,reject:e,retryFuncArgs:r,retriedCount:o})=>{let s=o+1;i.name==="NotReadableError"||i.name==="OverconstrainedError"?(s===1?(r[0].video&&(r[0].maxResolution=!1,(!_t||r[0].width*r[0].height<=1920*1080)&&r[0].frameRate&&(r[0].frameRate=r[0].frameRate>10?10:5)),r[0].retryWhenExactFailed&&r[0].useExactDeviceId&&(r[0].useExactDeviceId=!1)):s===2?r[0].useDeviceIdOnly=!0:s===3&&!r[0].useExactDeviceId&&(r[0].useTrueAsConstraint=!0),t()):e(i),r[0].microphoneId&&Dg(r[0].microphoneId,!1),r[0].cameraId&&Dg(r[0].cameraId,!0)},onRetrying:i=>{$.warn(`getUserMedia NotReadableError observed, retrying [${i}/3]`)},onRetryFailed:i=>{je.logFailedEvent({eventType:hi.GET_USER_MEDIA_RETRY,error:i})},onRetrySuccess:i=>{je.logSuccessEvent({eventType:hi.GET_USER_MEDIA_RETRY}),je.uploadEvent({log:`stat-${hi.GET_USER_MEDIA_RETRY}-success-${i}`})}});function Dg(i,t){return y(this,null,function*(){let r=(t?yield Kt():yield Zt()).find(o=>o.deviceId===i);r&&We(r.getCapabilities)&&$.warn(lr(r.getCapabilities(),{keysToInclude:Wc}))})}function SI(i){return{audio:yI(i),video:AI(i)}}function yI(i){if(!i.audio)return!1;if(i.useTrueAsConstraint)return!0;let t={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:i.sampleRate};return!Ha(i.microphoneId)&&(t.deviceId=i.useExactDeviceId?{exact:i.microphoneId}:i.microphoneId,i.useDeviceIdOnly)?t:(Le(i.channelCount)&&(t.channelCount=i.channelCount),Xe(i.echoCancellation)&&!i.echoCancellation&&(t.echoCancellation=!1),Xe(i.noiseSuppression)&&!i.noiseSuppression&&(t.noiseSuppression=!1),Xe(i.autoGainControl)&&!i.autoGainControl&&(t.autoGainControl=!1),Ha(t)?!0:t)}function AI(i){if(!i.video)return!1;if(i.useTrueAsConstraint)return!0;let{maxResolution:t=!0}=i,e={};return i.cameraId?e.deviceId=i.useExactDeviceId?{exact:i.cameraId}:i.cameraId:i.facingMode&&(e.facingMode=i.facingMode),i.useDeviceIdOnly&&!Ha(e)?e:(i.width&&(e.width={ideal:i.width},t&&!$t&&(e.width.max=i.width)),i.height&&(e.height={ideal:i.height},t&&!$t&&(e.height.max=i.height)),$t&&Mr&&i.width&&i.height&&i.width*i.height<352*288&&(e.width=i.width,e.height=i.height),i.frameRate&&(e.frameRate=i.frameRate),Ha(e)?!0:e)}var wg=II;function lo(i){return xe((t,e)=>function(...r){return y(this,null,function*(){let o=yield t.apply(this,r);return yield i.call(this,...r),o})})}function Mg(i){return xe((t,e)=>function(...r){return y(this,null,function*(){try{return yield t.apply(this,r)}catch(o){i.call(this,o)}})})}function xe(i){return function(t,e,r){return r.value=i(r.value,e),r}}var Og=(()=>{let i=!1,t=document.visibilityState;return()=>{document.visibilityState!==t&&$.info(`visibility change: ${document.visibilityState}`),!i&&(document.addEventListener("visibilitychange",()=>{$.info(`visibility change: ${document.visibilityState}`),t=document.visibilityState}),i=!0)}})();var bI=0,Xd=class{constructor(){l(this,"log",$.createLogger({id:`fq${++bI}`}));l(this,"isRunning",!1);l(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(t,e=!1){var s,n;let r=j({},t),o=new Promise((a,u)=>{r.resolve=a,r.reject=u});return r.promise=o,e?this.length<=1?this.queue.push(r):(n=(s=this.lastQueueItem)==null?void 0:s.promise)==null||n.then(r.resolve,r.reject):this.queue.push(r),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),o}shift(){let t=this.queue.shift();return this.log.debug(`shift ${this.length}`),t}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:t,args:e,context:r,resolve:o,reject:s}=this.queue[0];this.isRunning=!0,t.apply(r,e).then(o,s).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},xg=new WeakMap,kg=new WeakMap;function Qd(i=!1){return function(t,e,r){let o=r.value;return r.value=function(...s){let n=xg.get(this)||new Xd;return xg.set(this,n),n.push({fn:o,args:s,context:this},i)},r}}function Yd(i){return function(t,e,r){let o=r.value,s=n=>i(...n);return r.value=function(...n){let a=kg.get(this)||new Map,u=a.get(s(n))||new Xd;return a.set(s(n),u),kg.set(this,a),u.push({fn:o,args:n,context:this})},r}}function Zd(i,t){return xe((e,r)=>function(...o){let s=i;try{let n=e.apply(this,o),a=Te();return ro(n)?n.then(u=>(t?X.addSuccessEvent({key:s,cost:Te()-a}):X.addSuccessEvent({key:s}),u)).catch(u=>{throw X.addFailedEvent({key:s,error:u}),u}):(X.addSuccessEvent({key:s}),n)}catch(n){throw X.addFailedEvent({key:s,error:n}),n}})}var Fp={};li(Fp,{Events:()=>ut,Inspect:()=>hr,LastSink:()=>rs,Sink:()=>fe,Subscribe:()=>is,TimeoutError:()=>Wa,audit:()=>sS,bindCallback:()=>GI,bindNodeCallback:()=>jI,buffer:()=>xI,bufferCount:()=>OI,bufferTime:()=>bS,call:()=>Pg,catchError:()=>Pp,combineLatest:()=>Ug,concat:()=>CI,concatMap:()=>gS,concatMapTo:()=>ES,count:()=>JI,create:()=>ke,debounce:()=>nS,debounceTime:()=>aS,defer:()=>Vg,delay:()=>RS,deliver:()=>_e,dispose:()=>Kd,elementAt:()=>cS,empty:()=>za,every:()=>pS,exhaustMap:()=>IS,exhaustMapTo:()=>SS,filter:()=>zt,find:()=>dS,findIndex:()=>uS,first:()=>lS,fromAnimationFrame:()=>HI,fromArray:()=>LI,fromEvent:()=>Re,fromEventPattern:()=>UI,fromFetch:()=>VI,fromIterable:()=>FI,fromPromise:()=>Bg,fromReadableStream:()=>BI,fromReader:()=>$I,groupBy:()=>yS,identity:()=>RI,ignoreElements:()=>ZI,iif:()=>DI,inspect:()=>Lg,interval:()=>ap,last:()=>mS,map:()=>po,mapTo:()=>fS,max:()=>XI,merge:()=>Ga,mergeMap:()=>TS,mergeMapTo:()=>_S,min:()=>QI,never:()=>qI,nothing:()=>He,of:()=>PI,pairwise:()=>hS,pipe:()=>be,race:()=>np,range:()=>WI,reduce:()=>cp,retry:()=>NS,scan:()=>kp,share:()=>Oi,shareReplay:()=>NI,skip:()=>eS,skipUntil:()=>tS,skipWhile:()=>ou,startWith:()=>ja,subject:()=>Rt,subscribe:()=>Ue,sum:()=>YI,switchMap:()=>ho,switchMapTo:()=>xi,take:()=>Vr,takeLast:()=>KI,takeUntil:()=>qe,takeWhile:()=>Hg,tap:()=>Ja,throttle:()=>iS,throwError:()=>zI,timeInterval:()=>AS,timeout:()=>Vp,timer:()=>qa,toPromise:()=>vS,toReadableStream:()=>CS,withLatestFrom:()=>MI,zip:()=>wI});function He(...i){}var Pg=i=>i(),RI=i=>i;function Kd(){this.dispose()}var Lg=()=>typeof __FASTRX_DEVTOOLS__!="undefined",vI=1,hr=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(t){let e=new rp(t,this,this.streamId++);return ut.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},rs=class{constructor(){this.defers=new Set,this.disposed=!1}next(t){}complete(){this.dispose()}error(t){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=He,this.error=He,this.next=He,this.dispose=He,this.subscribe=He,this.doDefer()}subscribe(t){return t instanceof hr?t.subscribe(this):t(this),this}get bindSubscribe(){return t=>this.subscribe(t)}doDefer(){this.defers.forEach(Pg),this.defers.clear()}defer(t){this.defers.add(t)}removeDefer(t){this.defers.delete(t)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},fe=class extends rs{constructor(t){super(),this.sink=t,t.defer(this.bindDispose)}next(t){this.sink.next(t)}complete(){this.sink.complete()}error(t){this.sink.error(t)}},is=class extends rs{constructor(t,e=He,r=He,o=He){if(super(),this._next=e,this._error=r,this._complete=o,this.then=He,t instanceof hr){let s={toString:()=>"subscribe",id:0,source:t};this.defer(()=>{ut.defer(s,0)}),ut.create(s),ut.pipe(s),this.sourceId=s.id,this.subscribe(t),ut.subscribe({id:s.id,end:!0}),e==He?this._next=n=>ut.next(s,0,n):this.next=n=>{ut.next(s,0,n),e(n)},o==He?this._complete=()=>ut.complete(s,0):this.complete=()=>{this.dispose(),ut.complete(s,0),o()},r==He?this._error=n=>ut.complete(s,0,n):this.error=n=>{this.dispose(),ut.complete(s,0,n),r()}}else this.subscribe(t)}next(t){this._next(t)}complete(){this.dispose(),this._complete()}error(t){this.dispose(),this._error(t)}};function be(i,...t){return t.reduce((e,r)=>r(e),i)}function ke(i,t,e){if(Lg()){let r=Object.defineProperties(Object.setPrototypeOf(i,hr.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:t,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});ut.create(r);for(let o=0;o<e.length;o++){let s=e[o];typeof s=="function"&&s instanceof hr&&ut.addSource(r,s)}return r}return i}function _e(i,t){return function(...e){return r=>{if(r instanceof hr){let o=ke(s=>{let n=new i(s,...e);n.sourceId=o.id,n.subscribe(r)},t,arguments);return o.source=r,ut.pipe(o),o}else return o=>r(new i(o,...e))}}}function mo(i,t){window.postMessage({source:"fastrx-devtools-backend",payload:{event:i,payload:t}})}var rp=class extends fe{constructor(t,e,r){super(t),this.source=e,this.id=r,this.sourceId=t.sourceId,this.defer(()=>{ut.defer(this.source,this.id)})}next(t){ut.next(this.source,this.id,t),this.sink.next(t)}complete(){ut.complete(this.source,this.id),this.sink.complete()}error(t){ut.complete(this.source,this.id,t),this.sink.error(t)}},ut={addSource(i,t){mo("addSource",{id:i.id,name:i.toString(),source:{id:t.id,name:t.toString()}})},next(i,t,e){mo("next",{id:i.id,streamId:t,data:e&&e.toString()})},subscribe({id:i,end:t},e){mo("subscribe",{id:i,end:t,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(i,t,e){mo("complete",{id:i.id,streamId:t,err:e?e.toString():null})},defer(i,t){mo("defer",{id:i.id,streamId:t})},pipe(i){mo("pipe",{name:i.toString(),id:i.id,source:{id:i.source.id,name:i.source.toString()}})},update(i){mo("update",{id:i.id,name:i.toString()})},create(i){i.id||(i.id=vI++),mo("create",{name:i.toString(),id:i.id})}},Wa=class extends Error{constructor(t){super(`timeout after ${t}ms`),this.timeout=t}};var eu=class extends rs{constructor(t){super(),this.source=t,this.sinks=new Set}add(t){t.defer(()=>this.remove(t)),this.sinks.add(t).size===1&&(this.reset(),this.subscribe(this.source))}remove(t){this.sinks.delete(t),this.sinks.size===0&&this.dispose()}next(t){this.sinks.forEach(e=>e.next(t))}complete(){this.sinks.forEach(t=>t.complete()),this.sinks.clear()}error(t){this.sinks.forEach(e=>e.error(t)),this.sinks.clear()}};function Oi(){return i=>{let t=new eu(i);if(i instanceof hr){let e=ke(r=>{t.add(r)},"share",arguments);return t.sourceId=e.id,e.source=i,ut.pipe(e),e}return ke(t.add.bind(t),"share",arguments)}}function Ga(...i){return ke(t=>{let e=new fe(t),r=i.length;e.complete=()=>{--r===0&&t.complete()},i.forEach(e.bindSubscribe)},"merge",arguments)}function np(...i){return ke(t=>{let e=new Map;i.forEach(r=>{let o=new fe(t);e.set(r,o),o.complete=()=>{e.delete(r),e.size===0?t.complete():o.dispose()},o.next=s=>{e.delete(r),e.forEach(n=>n.dispose()),o.resetNext(),o.resetComplete(),o.next(s)}}),i.forEach(r=>e.get(r).subscribe(r))},"race",arguments)}function CI(...i){return ke(t=>{let e=0,r=i.length,o=new fe(t);o.complete=()=>{e<r&&!o.disposed?(o.doDefer(),o.subscribe(i[e++])):t.complete()},o.complete()},"concat",arguments)}function NI(i){return t=>{let e=new eu(t),r=[];return e.next=function(o){r.push(o),r.length>i&&r.shift(),this.sinks.forEach(s=>s.next(o))},ke(o=>{o.defer(()=>e.remove(o)),r.forEach(s=>o.next(s)),e.add(o)},"shareReplay",arguments)}}function DI(i,t,e){return ke(r=>i()?t(r):e(r),"iif",arguments)}function Ug(...i){return ke(t=>{let e=i.length,r=e,o=e,s=new Array(e),n=()=>{--o===0&&t.complete()},a=(u,m)=>{let h=new fe(t);h.next=f=>{--r===0?(h.next=T=>{s[m]=T,t.next(s)},h.next(f)):s[m]=f},h.complete=n,h.subscribe(u)};i.forEach(a)},"combineLatest",arguments)}function wI(...i){return ke(t=>{let e=i.length,r=e,o=new Array(e),s=()=>{--r===0&&t.complete()},n=(a,u)=>{let m=new fe(t),h=[];o[u]=h,m.next=f=>{h.push(f),o.every(T=>T.length)&&t.next(o.map(T=>T.shift()))},m.complete=s,m.subscribe(a)};i.forEach(n)},"zip",arguments)}function ja(...i){return t=>ke((e,r=0,o=i.length)=>{for(;r<o&&!e.disposed;)e.next(i[r++]);e.disposed||e.subscribe(t)},"startWith",arguments)}var ip=class extends fe{constructor(t,...e){super(t);let r=new fe(this.sink);r.next=o=>this.buffer=o,r.complete=He,r.subscribe(Ug(...e))}next(t){this.buffer&&this.sink.next([t,...this.buffer])}},MI=_e(ip,"withLatestFrom"),op=class extends fe{constructor(t,e,r){super(t),this.bufferSize=e,this.startBufferEvery=r,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(t){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(t)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(t),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(t=>this.sink.next(t)),super.complete()}},OI=_e(op,"bufferCount"),sp=class extends fe{constructor(t,e){super(t),this.buffer=[];let r=new fe(t);r.next=o=>{t.next(this.buffer),this.buffer=[]},r.complete=He,r.subscribe(e)}next(t){this.buffer.push(t)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},xI=_e(sp,"buffer");var kI=function(i,t,e,r){function o(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function a(h){try{m(r.next(h))}catch(f){n(f)}}function u(h){try{m(r.throw(h))}catch(f){n(f)}}function m(h){h.done?s(h.value):o(h.value).then(a,u)}m((r=r.apply(i,t||[])).next())})};function Rt(i){let t=arguments,e=Oi()(ke(r=>{e.next=o=>r.next(o),e.complete=()=>r.complete(),e.error=o=>r.error(o),i&&r.subscribe(i)},"subject",t));return e.next=He,e.complete=He,e.error=He,e}function Vg(i){return ke(t=>t.subscribe(i()),"defer",arguments)}var Fg=i=>t=>{setTimeout(()=>i(t))},$g=i=>Fg(t=>{for(let e=0;!t.disposed&&e<i.length;e++)t.next(i[e]);t.complete()});function PI(...i){return ke($g(i),"of",arguments)}function LI(i){return ke($g(i),"fromArray",arguments)}function ap(i){return ke(t=>{let e=0,r=setInterval(()=>t.next(e++),i);return t.defer(()=>{clearInterval(r)}),"interval"},"interval",arguments)}function qa(i,t){return ke(e=>{let r=0,o=setTimeout(()=>{if(e.removeDefer(s),e.next(r++),t){let n=setInterval(()=>e.next(r++),t);e.defer(()=>{clearInterval(n)})}else e.complete()},i),s=()=>{clearTimeout(o)};e.defer(s)},"timer",arguments)}function tu(i,t){return e=>{let r=o=>e.next(o);e.defer(()=>t(r)),i(r)}}function UI(i,t){return ke(tu(i,t),"fromEventPattern",arguments)}function Re(i,t){if("on"in i&&"off"in i)return ke(tu(e=>i.on(t,e),e=>i.off(t,e)),"fromEvent",arguments);if("addListener"in i&&"removeListener"in i)return ke(tu(e=>i.addListener(t,e),e=>i.removeListener(t,e)),"fromEvent",arguments);if("addEventListener"in i)return ke(tu(e=>i.addEventListener(t,e),e=>i.removeEventListener(t,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function Bg(i){return ke(t=>{i.then(t.next.bind(t),t.error.bind(t))},"fromPromise",arguments)}function VI(i,t){return ke(Vg(()=>Bg(fetch(i,t))),"fromFetch",arguments)}function FI(i){return ke(Fg(t=>{try{for(let e of i){if(t.disposed)return;t.next(e)}t.complete()}catch(e){t.error(e)}}),"fromIterable",arguments)}function $I(i){let t=e=>kI(this,void 0,void 0,function*(){if(e.disposed)return;let{done:r,value:o}=yield i.read();if(r){e.complete();return}else e.next(o),t(e)});return ke(e=>{t(e)},"fromReader",arguments)}function BI(i){return ke(t=>{let e=new AbortController,r=e.signal;t.defer(()=>e.abort("cancelled")),i.pipeTo(new WritableStream({write(o){t.next(o)},close(){t.complete()},abort(o){t.error(o)}}),{signal:r}).then(()=>t.complete(),o=>t.error(o))},"fromReadableStream",arguments)}function HI(){return ke(i=>{let t=requestAnimationFrame(function e(r){i.disposed||(i.next(r),t=requestAnimationFrame(e))});i.defer(()=>cancelAnimationFrame(t))},"fromAnimationFrame",arguments)}function WI(i,t){return ke((e,r=i,o=t+i)=>{for(;r<o&&!e.disposed;)e.next(r++);return e.complete(),"range"},"range",arguments)}function GI(i,t,...e){return ke(r=>{let o=e.concat(s=>(r.next(s),r.complete()));i.apply(t,o)},"bindCallback",arguments)}function jI(i,t,...e){return ke(r=>{let o=e.concat((s,n)=>s?r.error(s):(r.next(n),r.complete()));i.apply(t,o)},"bindNodeCallback",arguments)}function qI(){return ke(()=>{},"never",arguments)}function zI(i){return ke(t=>t.error(i),"throwError",arguments)}function za(){return ke(i=>i.complete(),"empty",arguments)}var os=class extends fe{constructor(t,e,r){super(t),this.f=e;let o=()=>{this.sink.next(this.acc),this.sink.complete()};typeof r=="undefined"?this.next=s=>{this.acc=s,this.complete=o,this.resetNext()}:(this.acc=r,this.complete=o)}next(t){this.acc=this.f(this.acc,t)}},cp=_e(os,"reduce"),JI=i=>_e(os,"count")((t,e)=>i(e)?t+1:t,0),XI=()=>_e(os,"max")(Math.max),QI=()=>_e(os,"min")(Math.min),YI=()=>_e(os,"sum")((i,t)=>i+t,0);var dp=class extends fe{constructor(t,e,r){super(t),this.filter=e,this.thisArg=r}next(t){this.filter.call(this.thisArg,t)&&this.sink.next(t)}},zt=_e(dp,"filter"),up=class extends fe{next(t){}},ZI=_e(up,"ignoreElements"),lp=class extends fe{constructor(t,e){super(t),this.count=e}next(t){this.sink.next(t),--this.count===0&&this.complete()}},Vr=_e(lp,"take"),mp=class extends fe{constructor(t,e){super(t);let r=new fe(t);r.next=()=>t.complete(),r.complete=Kd,r.subscribe(e)}},qe=_e(mp,"takeUntil"),pp=class extends fe{constructor(t,e){super(t),this.f=e}next(t){this.f(t)?this.sink.next(t):this.complete()}},Hg=_e(pp,"takeWhile"),KI=i=>cp((t,e)=>(t.push(e),t.length>i&&t.shift(),t),[]),hp=class extends fe{constructor(t,e){super(t),this.count=e}next(t){--this.count===0&&(this.next=super.next)}},eS=_e(hp,"skip"),fp=class extends fe{constructor(t,e){super(t),t.next=He;let r=new fe(t);r.next=()=>{r.dispose(),t.resetNext()},r.complete=Kd,r.subscribe(e)}},tS=_e(fp,"skipUntil"),gp=class extends fe{constructor(t,e){super(t),this.f=e}next(t){this.f(t)||(this.next=super.next,this.next(t))}},ou=_e(gp,"skipWhile"),rS={leading:!0,trailing:!1},Ep=class extends fe{constructor(t,e,r){super(t),this.durationSelector=e,this.trailing=r}cacheValue(t){this.last=t,this.disposed&&this.throttle(t)}send(t){this.sink.next(t),this.throttle(t)}throttle(t){this.reset(),this.subscribe(this.durationSelector(t))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},ru=class extends fe{constructor(t,e,r=rS){super(t),this.durationSelector=e,this.config=r,this._throttle=new Ep(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(t){this._throttle.disposed&&this.config.leading?this._throttle.send(t):this._throttle.cacheValue(t)}complete(){this._throttle.throttle=He,this._throttle.complete(),super.complete()}},iS=_e(ru,"throttle"),oS={leading:!1,trailing:!0},sS=i=>_e(ru,"audit")(i,oS),Tp=class extends fe{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},iu=class extends fe{constructor(t,e){super(t),this.durationSelector=e,this._debounce=new Tp(this.sink),this._debounce.dispose()}next(t){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=t,this._debounce.subscribe(this.durationSelector(t))}complete(){this._debounce.complete(),super.complete()}},nS=_e(iu,"debounce"),aS=i=>_e(iu,"debounceTime")(t=>qa(i)),_p=class extends fe{constructor(t,e,r){super(t),this.count=e,this.defaultValue=r}next(t){this.count--===0&&(this.defaultValue=t,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},cS=_e(_p,"elementAt"),dS=i=>t=>Vr(1)(ou(e=>!i(e))(t)),Ip=class extends fe{constructor(t,e){super(t),this.f=e,this.i=0}next(t){this.f(t)?(this.sink.next(this.i++),this.complete()):++this.i}},uS=_e(Ip,"findIndex"),Sp=class extends fe{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},lS=_e(Sp,"first"),yp=class extends fe{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},mS=_e(yp,"last"),Ap=class extends fe{constructor(t,e){super(t),this.predicate=e,this.index=0}next(t){this.predicate(t,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},pS=_e(Ap,"every");var bp=class extends fe{constructor(t,e,r){super(t),this.f=e,typeof r=="undefined"?this.next=o=>{this.acc=o,this.resetNext(),this.sink.next(this.acc)}:this.acc=r}next(t){this.sink.next(this.acc=this.f(this.acc,t))}},kp=_e(bp,"scan"),Rp=class extends fe{constructor(){super(...arguments),this.hasLast=!1}next(t){this.hasLast?this.sink.next([this.last,t]):this.hasLast=!0,this.last=t}},hS=_e(Rp,"pairwise"),su=class extends fe{constructor(t,e,r){super(t),this.mapper=e,this.thisArg=r}next(t){super.next(this.mapper.call(this.thisArg,t))}},po=_e(su,"map"),fS=i=>_e(su,"mapTo")(t=>i),mn=class extends fe{constructor(t,e,r){super(t),this.data=e,this.context=r}next(t){let e=this.context.combineResults;e?this.sink.next(e(this.data,t)):this.sink.next(t)}tryComplete(){this.context.resetComplete(),this.dispose()}},pn=class extends fe{constructor(t,e,r){super(t),this.makeSource=e,this.combineResults=r,this.index=0}subInner(t,e){let r=this.currentSink=new e(this.sink,t,this);this.complete=this.tryComplete,r.complete=r.tryComplete,r.subscribe(this.makeSource(t,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},nu=class extends mn{},au=class extends pn{next(t){this.subInner(t,nu),this.next=e=>{this.currentSink.dispose(),this.subInner(e,nu)}}},ho=_e(au,"switchMap");function lu(i){return(t,e)=>i(()=>t,e)}var xi=lu(_e(au,"switchMapTo")),vp=class extends mn{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},cu=class extends pn{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(t){this.next2(t),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),vp),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},gS=_e(cu,"concatMap"),ES=lu(_e(cu,"concatMapTo")),Cp=class extends mn{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},du=class extends pn{constructor(){super(...arguments),this.inners=new Set}next(t){this.subInner(t,Cp),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(t=>t.resetComplete()):this.dispose()}},TS=_e(du,"mergeMap"),_S=lu(_e(du,"mergeMapTo")),Np=class extends mn{dispose(){this.context.resetNext(),super.dispose()}},uu=class extends pn{next(t){this.next=He,this.subInner(t,Np)}},IS=_e(uu,"exhaustMap"),SS=lu(_e(uu,"exhaustMapTo")),Dp=class extends fe{constructor(t,e){super(t),this.f=e,this.groups=new Map}next(t){let e=this.f(t),r=this.groups.get(e);typeof r=="undefined"&&(r=Rt(),r.key=e,this.groups.set(e,r),super.next(r)),r.next(t)}complete(){this.groups.forEach(t=>t.complete()),super.complete()}error(t){this.groups.forEach(e=>e.error(t)),super.error(t)}},yS=_e(Dp,"groupBy"),wp=class extends fe{constructor(){super(...arguments),this.start=new Date}next(t){this.sink.next({value:t,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},AS=_e(wp,"timeInterval"),Mp=class extends fe{constructor(t,e){super(t),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(t){this.buffer.push(t)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},bS=_e(Mp,"bufferTime"),Op=class extends fe{constructor(t,e){super(t),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(t){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:r,data:o}=e;super.next(o),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(r))}},t)}next(t){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:t})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},RS=_e(Op,"delay"),xp=class extends fe{constructor(t,e){super(t),this.selector=e}error(t){this.dispose(),this.selector(t)(this.sink)}},Pp=_e(xp,"catchError");var vS=()=>i=>new Promise((t,e)=>{let r;new is(i,o=>r=o,e,()=>t(r))}),CS=()=>i=>{let t;return new ReadableStream({start(e){t=new is(i,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){t.dispose()}})},Ue=(i=He,t=He,e=He)=>r=>new is(r,i,t,e),Lp=class extends fe{constructor(t,e){super(t),e instanceof Function?this.next=r=>{e(r),t.next(r)}:(e.next&&(this.next=r=>{e.next(r),t.next(r)}),e.complete&&(this.complete=()=>{e.complete(),t.complete()}),e.error&&(this.error=r=>{e.error(r),t.error(r)}))}},Ja=_e(Lp,"tap"),Up=class extends fe{constructor(t,e){super(t),this.timeout=e,this.id=setTimeout(()=>this.error(new Wa(this.timeout)),this.timeout)}next(t){super.next(t),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},Vp=_e(Up,"timeout"),NS=(i=1/0)=>t=>{if(t instanceof hr){let e=ke(r=>{let o=i,s=new fe(r);s.error=n=>{o-- >0?s.subscribe(t):r.error(n)},s.sourceId=e.id,s.subscribe(t)},"retry",[i]);return e.source=t,ut.pipe(e),e}else return e=>{let r=i,o=new fe(e);o.error=s=>{r-- >0?t(o):e.error(s)},t(o)}};var hn=(e=>(e[e.AUTO_SWITCH_NEW_DEVICE=0]="AUTO_SWITCH_NEW_DEVICE",e[e.WAIT_CURRENT_DEVICE=1]="WAIT_CURRENT_DEVICE",e))(hn||{}),ss=class ss extends ts{constructor(e,r){super({mediaType:e,PlayerClass:r});l(this,"isRemote",!1);l(this,"deviceId");l(this,"groupId","");l(this,"label","");l(this,"sourceTrack");l(this,"enableAutoSwitchWhenRecapturing",!0);l(this,"_isRecapturing",!1);l(this,"_lastRecaptureTime",0);l(this,"_onMuteTimeoutId",-1);l(this,"_encodeCheckTimeoutId",-1);l(this,"recaptureMode",0);l(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}get isUseCustomSource(){return this.sourceTrack&&this.mediaTrack&&this.sourceTrack!==this.mediaTrack}encodeFrame(e,r){throw new Error("Method not implemented.")}installTrackEvent(e){bt(e,e).add(M.MUTE,this.onTrackMuted).add(M.UNMUTE,this.onTrackUnmuted).add(M.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===M.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ct(e)}setStateToReady(){}capture(e){return y(this,null,function*(){var r;try{let o=Te();V.emit(F.LOCAL_TRACK_CAPTURE_START,{track:this});let s;e.customSource?(s=new MediaStream,s.addTrack(e.customSource)):((r=this.sourceTrack)==null||r.stop(),s=yield wg(e));let n=s.getTracks()[0];return yield this.setInputMediaStreamTrack(n),e.customSource||(this.sourceTrack=n,this.updateDeviceIdInUse(),this.listenDeviceChange()),V.emit(F.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:Te()-o}),s}catch(o){throw V.emit(F.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:o}),this.log.error(`getUserMedia error observed ${o}`),o}})}setOutputMediaStreamTrack(e){var r;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(r=this.room)==null?void 0:r.replaceTrack(this)}get hasFlag(){var r,o;let e=Ho(((r=this.room)==null?void 0:r.localPublishFlag)||0,((o=this.room)==null?void 0:o.userId)||"");return this.mediaType===4&&e.hasVideo||this.mediaType===1&&e.hasAudio||this.mediaType===2&&e.hasAuxiliary}publish(e,r){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),Promise.all([r,new Promise((o,s)=>y(this,null,function*(){var a,u;this.hasFlag?o():be(Re(e,"local-publish-flag-changed"),zt(()=>this.hasFlag),qe(Ga(Re(this,le.INIT),Re(this,"ready"))),Ue(o)),!((((u=(a=this.room)==null?void 0:a.networkQuality)==null?void 0:u.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var h,f,T,A,C,N;if(!((((f=(h=this.room)==null?void 0:h.networkQuality)==null?void 0:f.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let w=this.kind===M.AUDIO,x=this.stat.bytesSent>0;if(X[x?"addSuccessEvent":"addFailedEvent"]({key:w?503700:513702}),!w){let te=((A=(T=this.room)==null?void 0:T.videoCodec)==null?void 0:A.toUpperCase())||"H264",ue={H264:513704,H265:513705,VP8:513706}[te];ue&&X[x?"addSuccessEvent":"addFailedEvent"]({key:ue})}x||(X.addEnum({key:w?503701:513703,value:zo()}),je.uploadEvent({log:`stat-encode-failed-${this.kind}-${ga()||Jo()}`,userId:this.userId}),this.log.warn(w?"encode failed":`${(N=(C=this.room)==null?void 0:C.videoCodec)==null?void 0:N.toUpperCase()} encode failed`),this.emit("6",this),s(new de({message:`${this.strMediaType} encode failed`,code:w?q.AUDIO_ENCODE_FAILED:q.VIDEO_ENCODE_FAILED})))}},5e3))}))])}unpublish(){this.room&&this.room.localTracks.delete(this),V.emit(F.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return y(this,null,function*(){if(this.sourceTrack&&sn){let{deviceId:e,groupId:r}=this.sourceTrack.getSettings(),{label:o}=this.sourceTrack;(yield Ng({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=o,r&&(this.groupId=r),un().then(n=>{let a=n.find(u=>u.deviceId===e);a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.sourceTrack||this.kind===M.AUDIO&&!Cg(this.sourceTrack)||this.kind===M.VIDEO&&!vg(this.sourceTrack)||this._isRecapturing||e&&Mr&&_t)}onTrackMuted(){if(super.onTrackMuted(),Og(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<Os){setTimeout(()=>this.onTrackMuted(),Os);return}this._onMuteTimeoutId=setTimeout(()=>y(this,null,function*(){var e;if((e=this.sourceTrack)!=null&&e.muted){if((mt||pt)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return y(this,null,function*(){if(Gt(ss.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()&&this.recaptureMode===0){if(Date.now()-this._lastRecaptureTime<Os){setTimeout(()=>this.onTrackEnded(),Os);return}this.emit("7"),this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return y(this,null,function*(){var o;if(this._isRecapturing||!this.sourceTrack)return;this.log.warn("recapture trying"),(o=this.sourceTrack)==null||o.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let r={useExactDeviceId:!0};if(e==="user"||e==="environment")r.facingMode=e;else{let s;(this.kind==="audio"?yield Zt():yield Kt()).find(a=>a.deviceId===e)&&(s=e),r.deviceId=s}return this.capture(r).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),V.emit(F.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(s=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${s.message}`),this.emit("5",s),V.emit(F.LOCAL_TRACK_RECAPTURE,{track:this,error:s})})})}getRecoverCaptureDeviceId(){return y(this,null,function*(){let e=this instanceof ar;if(e&&this.facingMode)return this.facingMode;let{deviceId:r}=this;if(r){let o=(Xa.get(r)||0)+1;if(Xa.set(r,o),o>=3&&this.enableAutoSwitchWhenRecapturing){let s=e?(yield Kt()).find(n=>!Xa.has(n.deviceId)):(yield Zt()).find(n=>!Xa.has(n.deviceId));s&&(this.log.warn(`${r} capture fail ${o} times, change new ${s.deviceId}`),r=s.deviceId)}}return r})}stopCapture(){var e;this.sourceTrack&&(this.sourceTrack.stop(),this.uninstallTrackEvent(this.sourceTrack)),(e=this.manager)==null||e.removeInput(this)}close(){super.close(),this.stopCapture()}};K([Ze(le.INIT,"ready",{ignoreError:!0,sync:!0})],ss.prototype,"setStateToReady",1),K([Qd()],ss.prototype,"capture",1),K([Ze("ready","publish",{ignoreError:!0,success(){this.room.localTracks.add(this),V.emit(F.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"})},fail(e){let r="error";if(e.cause instanceof de){let o=e.cause;o.message.includes("timeout")?r="timeout":o.code===q.API_CALL_ABORTED&&(r="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:r,error:e.cause||e})}}),Zd(521714,!1)],ss.prototype,"publish",1),K([xe(e=>function(){return y(this,null,function*(){let r=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:r,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),Ze([],"ready",{sync:!0})],ss.prototype,"unpublish",1);var Ur=ss,Xa=new Map;V.on(F.SWITCH_DEVICE_SUCCESS,i=>{i.track.deviceId&&Xa.delete(i.track.deviceId)});var ei=class i extends Ur{constructor(e){super(1,zd);l(this,"mediaType",1);l(this,"volume",0);l(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});l(this,"playerMuted",!0);l(this,"pipeline");l(this,"earMonitorGainNode",new gt);l(this,"_output",new gt);l(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});l(this,"mixedAudioReferenceMap",new Map);l(this,"isAudioContextLongSuspended",!1);this.manager=e,this.pipeline=new dn(e),this.pipeline.source.pipeTo(this.player.pipeline.volumeMeter),this.pipeline.gain.pipeTo(this.earMonitorGainNode).pipeTo(this._output),this.pipeline.gain.pipeTo(this.player.pipeline.volumeMeterAfter3A),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this),V.on(F.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this)}get dbVolume(){return Gd.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}getInternalAudioLevelAfter3A(){if(this.pipeline.aec.node||this.pipeline.denoiser.node)return this.player.getInternalAudioLevelAfter3A()}setInputMediaStreamTrack(e){return y(this,null,function*(){let r=this.trackSettings||{};X.addEnum({key:501701,value:r.channelCount||0,useUV:!1}),X.addEnum({key:501702,value:r.sampleRate||0,useUV:!1}),X.addEnum({key:502700,value:0});let{sampleRate:o,channelCount:s}=r;this._log.info(`local audio track input ${JSON.stringify({sampleRate:o,channelCount:s})}`),this.pipeline.source.channelCount=s||1,this.pipeline.replaceSource(e),yield Gt(i.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:r,useExactDeviceId:o=!0,retryWhenExactFailed:s=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:o,retryWhenExactFailed:s,customSource:r})}switchDevice(e){return y(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e&&!this.isUseCustomSource)if(e===Vo){if(yield ep(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.sourceTrack&&this.sourceTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),V.emit(F.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(r){throw this.log.error(`switch microphone failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}}})}listenDeviceChange(){dt&&!dt.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&dt.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return y(this,null,function*(){if(e.deviceId===this.deviceId){let r=this.recaptureMode===1;if(this.log.warn(`RecaptureMode: ${hn[this.recaptureMode]}. Current microphone is lost: ${JSON.stringify(e)}`),this.recaptureMode===0){st(this.userId,{eventId:2003,param1:6,streamType:1});let o=yield Zt();o[0]?this.recapture(o[0].deviceId):r=!0}r&&dt.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.recaptureMode===1&&e.deviceId!==this.deviceId||(dt.off("audioInputAdded",this.handleMicrophoneAdded,this),this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId))}update3A(s){return y(this,arguments,function*({echoCancellation:e,noiseSuppression:r,autoGainControl:o}){let n=this.sourceTrack||this.mediaTrack;if(!n)return;let a=n.getConstraints(),u=!1;!O(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a.echoCancellation=e,u=!0),!O(r)&&r!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=r,a.noiseSuppression=r,u=!0),!O(o)&&o!==this.profile.autoGainControl&&(this.profile.autoGainControl=o,a.autoGainControl=o,u=!0),u&&($t||_t?yield n.applyConstraints(a).catch(m=>this._log.warn("update3A failed: ",m)):this.deviceId&&(yield this.recapture(this.deviceId)))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&X.addEnum({key:502700,value:2})}setAudioVolume(e){super.setAudioVolume(0),mt&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(Ye().createGain()),this._output.setNode(Ye().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this.sourceTrack&&!(_t||mt))return this.update3A({echoCancellation:e})}addDenoiser(e){var r;if(Qr<=92&&((r=this.trackSettings)==null?void 0:r.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}X.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1)}mixAudioReference(e,r){if(this.mixedAudioReferenceMap.has(r))return;this.log.info(`mixAudioReference() => ${r}`);let o=Fa(e),s=new gt,n=Ye().createGain();n.gain.value=1;let a=new gt;s.pipeTo(a).pipeTo(this.pipeline.mixNode),s.setNode(o),a.setNode(n),this.mixedAudioReferenceMap.set(r,[s,a])}unMixAudioReference(e){let[r,o]=this.mixedAudioReferenceMap.get(e)||[];r&&(this.log.info(`unMixAudioReference() => ${e}`),r.deleteNode(),o==null||o.deleteNode(),this.mixedAudioReferenceMap.delete(e))}setAudioReferenceVolume(e,r){let[o,s]=this.mixedAudioReferenceMap.get(e)||[];s!=null&&s.node&&(s.node.gain.value=r/100,this.log.info(`setAudioReferenceVolume() => ${e} ${s.node.gain.value}`))}addAudioProcessor(e,r,o,s){this.pipeline.silentNode.setNode(o),this.pipeline.mixNode.setNode(r),this.pipeline.aec.setNode(e),this.enableTrackAEC(!1)}removeDenoiser(e){if(this.pipeline.denoiser.node===e)return this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0)}removeAudioProcessor(e,r,o,s){this.pipeline.aec.node===e&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}close(){this.mixedAudioReferenceMap.forEach(([e,r])=>{e.deleteNode(),r.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),dt.off("audioInputAdded",this.handleMicrophoneAdded,this),dt.off("audioInputRemoved",this.handleMicrophoneRemoved,this),V.off(F.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this),super.close()}recapture(e){return y(this,null,function*(){try{yield Gt(i.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield Zt()).find(s=>s.deviceId!==e);if(o)yield Gt(i.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((r,o)=>o?o({frame:r}):r,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}handleAudioContextLongSuspended({isSuspended:e}){if(this.pipeline.isProcessEnabled)if(e){this.isAudioContextLongSuspended=!0,this.log.warn(`context has suspended for ${Ym/1e3} seconds, change to source audio${mr?"":", non-Safari"}`);let r=this.sourceTrack||this.mediaTrack;r&&this.setOutputMediaStreamTrack(r)}else this.isAudioContextLongSuspended=!1,this.log.warn("context has resumed, change to processed audio"),this.pipeline.track&&this.setOutputMediaStreamTrack(this.pipeline.track)}setOutputMediaStreamTrack(e){if(this.isAudioContextLongSuspended){let r=this.sourceTrack||this.mediaTrack;r&&(e=r)}super.setOutputMediaStreamTrack(e)}};var ns=class{constructor(t,e=!1){this.dataView=t;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,r=[],o=0;for(let n=t;n<=e;n++){let a=this.dataView.getInt8(n);switch(a){case 0:case 1:case 2:case 3:o===2&&(r.push(3),o=0),a==0?o++:o=0,r.push(a);break;default:o=0,r.push(a);break}}r.push(this.dataView.getInt8(this.dataView.byteLength-1));let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}removePreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,r=[],o=0;for(let n=t;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:o++,r.push(this.dataView.getInt8(n));break;case 3:o!==2&&r.push(this.dataView.getInt8(n)),o=0;break;default:r.push(this.dataView.getInt8(n)),o=0;break}let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let t=6;for(let e=6;e<this.dataView.buffer.byteLength&&(t++,this.dataView.getUint8(e)===255);e++);return t}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let t=0,e=6;for(let s=6;s<this.dataView.buffer.byteLength;s++){let n=this.dataView.getUint8(s);if(e++,n===255)t+=255;else{t+=n;break}}let r=new ArrayBuffer(t),o=new DataView(r);for(let s=0;s<r.byteLength;s++,e++)o.setInt8(s,this.dataView.getInt8(e));return o}};var mu=class{constructor(){l(this,"_seiMessageList",[]);l(this,"_smallSeiMessageList",[]);l(this,"_seiPayloadType",243)}encodeSEINalu(t){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,this._seiPayloadType);for(let a=0;a<r;a++)s.push(255);s.push(o);let n=new DataView(t);return s.push(...new Uint8Array(n.buffer)),s.push(128),new ns(new DataView(new Uint8Array(s).buffer),!0)}sendSEI(t,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(t),e!=null&&e.small&&this._smallSeiMessageList.push(t)}isEmpty(){return!this._seiMessageList.length}getNaluCount(t){let e=0,r=0,o=new DataView(t);for(let s=0;s<t.byteLength;s++)switch(o.getUint8(s)){case 0:e++;break;case 1:(e===2||e===3)&&r++,e=0;break;default:e=0;break}return r}encode(t,e){let r=e?this._smallSeiMessageList:this._seiMessageList;if(r.length>0&&t.data.byteLength>0){let s=9-this.getNaluCount(t.data);if(s<=0)return 0;let n=r.splice(0,s).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((T,A)=>T+A.dataView.byteLength,0),u=new ArrayBuffer(a+t.data.byteLength),m=new DataView(u),h=new DataView(t.data),f=0;for(let T=0;T<n.length;T++)for(let A=0;A<n[T].dataView.byteLength;A++)m.setInt8(f++,n[T].dataView.getInt8(A));for(let T=0;T<t.data.byteLength;T++)m.setInt8(f++,h.getInt8(T));return t.data=u,n.length}return 0}};var as=class as extends Ur{constructor(e,r=4){super(r,qt);l(this,"profile",j({},qn));l(this,"avoidCropping",!1);l(this,"_scaleResolutionDownBy");l(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});l(this,"small");l(this,"isNeedToSetBandwidth");l(this,"muteImage");l(this,"manager");l(this,"_seiCodec",new mu);this.manager=e;let o=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(pe(j({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",o),this.on("publish",o),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!sn||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return y(this,null,function*(){var r,o,s;if(De(e)){if(this.muteImage===e)return;yield(r=this.manager)==null?void 0:r.deleteWatermark("mute"),yield(o=this.manager)==null?void 0:o.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,Gt(as.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(s=this.manager)==null?void 0:s.deleteWatermark("mute"),this.muteImage=void 0),Gt(as.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:r,useExactDeviceId:o=!0,customSource:s,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:r||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:o,retryWhenExactFailed:n,customSource:s})}setProfile(e){let r=this.fallbackProfile(e);r.bitrate&&(this.isNeedToSetBandwidth=r.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(r):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(pe(j({},this.profile),{width:1920,height:1080})))}applyProfile(){return y(this,null,function*(){var a;if(!this.mediaTrack)return;let{width:e=0,height:r=0}=(this.sourceTrack||this.mediaTrack).getSettings(),o=e*r,s=this.settings,n=s.height!==this.profile.height||s.width!==this.profile.width||s.frameRate!==this.profile.frameRate;if(n&&(Mt===16&&this.deviceId?yield this.recapture(this.deviceId):(yield(a=this.sourceTrack||this.mediaTrack)==null?void 0:a.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;let{width:u=0,height:m=0}=(this.sourceTrack||this.mediaTrack).getSettings(),h=u*m;if(n&&h&&o&&h===o){this.log.warn("set bandwidth failed: resolution is not changed");return}return this.room.setBandWidth({bandwidth:this.profile.bitrate,type:M.VIDEO,videoType:M.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},r=this.sourceTrack||this.mediaTrack;return sn&&r&&Object.assign(e,r.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:Kc(this.settings,this.profile)}isAllowed2k4k(e){var r;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((r=this.room.scheduleResult.trtcAutoConf)==null?void 0:r["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return y(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e)&&!this.isUseCustomSource)return;let r={useExactDeviceId:!0,retryWhenExactFailed:!1};if(e==="user"||e==="environment"){r.facingMode=e;try{if((ma||Qs)&&e==="environment"&&km){let s=(yield Kt(!0)).map(a=>{var u;return pe(j({},a),{capabilities:(u=a.getCapabilities)==null?void 0:u.call(a)})}).filter(a=>{var u,m;return(m=(u=a.capabilities)==null?void 0:u.facingMode)==null?void 0:m.includes("environment")}),n=s[0];s.forEach(a=>{var f,T,A,C;let{capabilities:u}=a,m=(f=u.width)!=null&&f.max&&((T=u.height)!=null&&T.max)?u.width.max*u.height.max:0,h=(A=n.capabilities.width)!=null&&A.max&&((C=n.capabilities.height)!=null&&C.max)?n.capabilities.width.max*n.capabilities.height.max:0;m>h&&(n=a)}),n!=null&&n.capabilities&&(delete r.facingMode,this._log.info("switch to max res camera",n),r.deviceId=n.deviceId)}}catch(o){this._log.warn("get max res camera failed",o)}}else r.deviceId=e;this.sourceTrack&&this.sourceTrack.stop(),yield this.capture(r),V.emit(F.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(r){throw this.log.error(`switch camera failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}})}updateSmallConfig(e){var o,s;this._log.info(`update small stream config: ${JSON.stringify(e)}`);let r=!this.small;this.small=this.fallbackProfile(e,!0),(o=this.manager)==null||o.update(),r&&((s=this.room)==null||s.enableSmall(!0)),this.log.info("update small stream config success")}fallbackProfile(e,r=!1){let o=e.width>e.height,s=j({},e);return e.width*e.height<=160*120&&pt&&Xr&&(this.log.warn(`${r?"small ":""}resolution is ${e.width}*${e.height}, fallback to 240*180 for android chrome`),s.width=o?240:180,s.height=o?180:240,s.bitrate=Math.max(e.bitrate,150)),e.width*e.height>1280*720&&em&&(s.width=o?1280:720,s.height=o?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),Yl(Or,"14.3")&&Zl(Or,"14.0",!0)&&this.on("7",()=>{let n=this.profile.width>this.profile.height;this.profile.width*this.profile.height>640*480?(this.profile.width=n?640:480,this.profile.height=n?480:640,this.log.warn("reduce the resolution to 480p on iOS 14.0 ~ 14.2")):this.profile.width*this.profile.height>640*360&&(this.profile.width=n?640:360,this.profile.height=n?360:640,this.log.warn("reduce the resolution to 360p on iOS 14.0 ~ 14.2"))}),!r&&this.avoidCropping&&(Xr||$t)&&!rm()&&e.width*e.height<=640*360&&e.width/e.height===16/9&&(this._scaleResolutionDownBy=1280/e.width,e.width=1280,e.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),s}stopSmall(){var e,r;this.small&&(delete this.small,(e=this.manager)==null||e.update(),(r=this.room)==null||r.enableSmall(!1))}listenDeviceChange(){dt&&!dt.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&dt.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return y(this,null,function*(){if(e.deviceId===this.deviceId){let r=this.recaptureMode===1;if(this.log.warn(`RecaptureMode: ${hn[this.recaptureMode]}. Current camera is lost: ${JSON.stringify(e)}`),this.recaptureMode===0){st(this.userId,{eventId:2003,param1:7,streamType:2});let o=yield Kt();o[0]?this.recapture(o[0].deviceId):r=!0}r&&dt.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return y(this,null,function*(){this.recaptureMode===1&&e.deviceId!==this.deviceId||(dt.off("videoInputAdded",this.handleCameraAdded,this),this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId))})}encodeFrame(e,r){if(!this.manager)return e;let o=r?8:this.mediaType;return this.manager.encodePipeline.reduceRight((s,n)=>n?n({frame:s,mediaType:o}):s,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,r){return O(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,r)}close(){dt.off("videoInputAdded",this.handleCameraAdded,this),dt.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return y(this,null,function*(){try{yield Gt(as.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield Kt()).find(s=>s.deviceId!==e);if(o)yield Gt(as.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}setRotation(e){this.manager&&(this.isScreen||O(e)||e!==this.rotation&&(this.rotation=e,this.manager.rotation=e))}};K([lo(function(e){this.setContentHint(e.contentHint||"motion")})],as.prototype,"capture",1);var ar=as;var Hp={};li(Hp,{REPORT_TYPE:()=>Bs,buildSSOPackage:()=>Ti,bytes2ms:()=>Xh,calculateScaleResolutionDownNumber:()=>Kc,convertObjectNumberToInt:()=>ra,copyProperties:()=>Jh,deepClone:()=>Fo,deepCloneBasic:()=>zc,deepMerge:()=>Nr,delay:()=>ia,fibonacci:()=>$o,formatedTime:()=>Xc,getConstructorName:()=>Ls,getContainerFromElement:()=>sf,getEnv:()=>jh,getInternalVersion:()=>rf,getLoggerUrl:()=>Ei,getMediaStreamTrackInfo:()=>Zc,getMuteStateFromFlag:()=>Ho,getNetworkType:()=>Zn,getNumNetworkType:()=>Jc,getReconnectionTimeout:()=>Yh,getStringByteLength:()=>nf,getTurnServer:()=>of,getUint32Version:()=>Qc,getValueType:()=>at,getViewListFromView:()=>Fs,glog:()=>Kn,ipv4ToUint32:()=>Vs,isArray:()=>ot,isAudioWorkletSupported:()=>ef,isBoolean:()=>Xe,isConstructor:()=>Bo,isEmpty:()=>Us,isFunction:()=>We,isLangChinese:()=>Cr,isMediaStreamTrack:()=>Zh,isNumber:()=>Le,isObject:()=>ir,isOverseaSdkAppId:()=>gi,isPlainObject:()=>Ft,isPortrait:()=>Vl,isPromise:()=>ro,isRemoteTrack:()=>Kh,isRotate90Or270:()=>or,isSetSinkIdSupported:()=>tf,isString:()=>De,isUndefined:()=>O,loadImage:()=>$s,loadVideo:()=>af,ms2bytes:()=>Qh,ms2samples:()=>Ul,normalizeUrl:()=>Wo,performanceNow:()=>Te,promiseAny:()=>ea,samples2ms:()=>Ll,setNetworkType:()=>zh,stringify:()=>lr,stringifyIncludeValue:()=>ta,throttlePromise:()=>Yc});var wS=[-1,-1,1,-1,-1,1,1,1],MS=[0,0,1,0,0,1,1,1];var Ht=class extends le{constructor(e,r){super();this.context=e;l(this,"name");l(this,"input");l(this,"output");l(this,"texture");l(this,"ctx2d",null);l(this,"fbo");l(this,"width",0);l(this,"height",0);l(this,"x",0);l(this,"y",0);l(this,"program");l(this,"vertexShader");l(this,"fragmentShader");l(this,"totalFrames",0);l(this,"dropFrames",0);l(this,"matchInputSize",!0);l(this,"texCoordBuffer");l(this,"positionBuffer");l(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});l(this,"cost",0);l(this,"_canvas",null);l(this,"_image");l(this,"log");if(this.context.on("disconnect",this.close,this),this.name=r.name,this.log=r.logger,this.matchInputSize=r.matchInputSize!==!1,this.width=r.width||e.width,this.height=r.height||e.height,this._image=r.image,e instanceof Nt){e.ctx&&r.create2d&&(typeof OffscreenCanvas=="function"&&Mt!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let o=e.ctx;this.texCoordBuffer=this.createBuffer(MS),this.positionBuffer=this.createBuffer(wS),r.createTexture!==!1&&(this.texture=o.createTexture(),this.useTexture(),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.pixelStorei(o.PACK_ALIGNMENT,1),o.pixelStorei(o.UNPACK_ALIGNMENT,1)),r.useFbo&&(this.fbo=o.createFramebuffer(),this.useBufferFrame(),this.useTexture(),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,this.width,this.height,0,o.RGBA,o.UNSIGNED_BYTE,null),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.texture,0)),r.useDefaultProgram?this.program=e.defaultProgam:(r.vertexShaderSource||r.fragmentShaderSource)&&(this.vertexShader=r.vertexShaderSource?e.createShader(o.VERTEX_SHADER,r.vertexShaderSource):e.defaultVShader,this.fragmentShader=r.fragmentShaderSource?e.createShader(o.FRAGMENT_SHADER,r.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(o){this.context.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${o.message||o}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let r=this.context.ctx,o=r.createFramebuffer();return r.bindFramebuffer(r.FRAMEBUFFER,o),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0),o}connect(e,...r){return e.addInput(this,...r),this.output=e,e}addInput(e,...r){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let r=Date.now();if(this.context instanceof St&&this.render(e)||this.context instanceof Nt&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-r,!0}render2d(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var r;(r=this.output)==null||r.update(e)}disconnect(...e){var r;(r=this.output)==null||r.removeInput(this,...e),delete this.output}removeInput(e,...r){delete this.input}close(){var e,r;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(r=this.input)==null||r.disconnect(),this.context instanceof St){let o=this.context.ctx;o.deleteBuffer(this.texCoordBuffer),o.deleteBuffer(this.positionBuffer),this.fbo&&o.deleteFramebuffer(this.fbo),this.texture&&o.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&o.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&o.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&o.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let r=this.context.ctx;e.forEach((o,s)=>{o&&(r.activeTexture(r.TEXTURE0+s),r.bindTexture(r.TEXTURE_2D,o))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let r=this.context.ctx,o=r.createBuffer();return r.bindBuffer(r.ARRAY_BUFFER,o),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW),o}setTexBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.texCoordBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}setPosBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.positionBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}changeBufferData(e,r){let o=this.context.ctx;o.bindBuffer(o.ARRAY_BUFFER,e),o.bufferData(o.ARRAY_BUFFER,new Float32Array(r),o.STATIC_DRAW)}setAttributes(...e){let r=this.context.ctx;e.forEach((o,s)=>{r.enableVertexAttribArray(s),r.bindBuffer(r.ARRAY_BUFFER,o),r.vertexAttribPointer(s,2,r.FLOAT,!1,0,0)})}getVertexPoint(e,r){return[e/this.width*2-1,r/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,r){if(!(this.width===e&&this.height===r)){if(this.width=e,this.height=r,this._canvas&&(this._canvas.width=e,this._canvas.height=r),this.texture&&this.fbo){this.useTexture();let o=this.context.ctx;o.texImage2D(o.TEXTURE_2D,0,o.RGBA,e,r,0,o.RGBA,o.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,r)}}draw(e,r){this.setAttributes(e||this.positionBuffer,r||this.texCoordBuffer);let o=this.context.ctx;o.drawArrays(o.TRIANGLE_STRIP,0,4)}draw2d(e,r,o,s,n,a,u,m,h){let f=!O(a)&&!O(u)&&!O(m)&&!O(h);return this.ctx2d&&e?(e instanceof ImageData?f?this.ctx2d.putImageData(e,r,o,a,u,m,h):this.ctx2d.putImageData(e,r,o):f?this.ctx2d.drawImage(e,a,u,m,h,r,o,s,n):this.ctx2d.drawImage(e,r,o,s,n),this.emit("render",e),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close(),!0):!1}drawBackGround2d(e){this.ctx2d&&(this.ctx2d.save(),this.ctx2d.fillStyle=e,this.ctx2d.fillRect(0,0,this.width,this.height),this.ctx2d.restore())}getInfo(){var f;let{totalFrames:e,x:r,y:o,width:s,height:n,name:a,cost:u}=this,m=Date.now(),h=(e-this.lastInfo.totalFrames)/((m-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:m,fps:h,name:a,cost:u},j({parent:(f=this.input)==null?void 0:f.getInfo()},this.lastInfo)}createTexture(e){let r=this.context.ctx,o=r.createTexture();return this.useTextures(o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),o}};K([Ze(le.INIT,"connected",{sync:!0})],Ht.prototype,"connect",1),K([Ze("connected",le.INIT,{ignoreError:!0,sync:!0})],Ht.prototype,"disconnect",1),K([Ze([],"closed",{sync:!0})],Ht.prototype,"close",1);var Gg=be(ap(250),po(()=>performance.now()),Oi()),jg=i=>t=>{let e=0,r=performance.now();be(Gg,po(o=>(o-r)/i>>0),zt(o=>o!=e?(e=o,!0):!1))(t)},pu=i=>t=>{let e=performance.now();be(Gg,ou(r=>r-e<i),Vr(1))(t)};var xS=[0,1,1,1,0,0,1,0],cs=class extends Ht{constructor(e,r){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},r));l(this,"_intervalId",0);l(this,"_sequence",0);l(this,"checkGLError",!1);l(this,"checkVisibilityChange");e instanceof Nt?this.ctx2d=e.ctx||null:e.available&&(r!=null&&r.mirrorUpAndDown)&&this.setTexBuffer(xS)}start(e){this.log.info(`${this.name} start render ${e} fps`),ft.clearTask(this._intervalId),this._intervalId=ft.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(ft.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof St){let o=this.context.ctx.getError();o&&this.context.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${o}`}))}},{fps:this.context.frameRate})}render(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),this.emit("render",this.context._canvas),!0):!1}addInput(e,...r){super.addInput(e,...r),this.start(this.context.frameRate)}update(e=0){this._intervalId&&(ft.clearTask(this._intervalId),this._intervalId=0,e===1&&(this.log.info(`${this.name} use requestVideoFrameCallback`),this.checkVisibilityChange=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",this.checkVisibilityChange))},document.addEventListener("visibilitychange",this.checkVisibilityChange))),this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),ft.clearTask(this._intervalId)}resize(e,r){super.resize(e,r),this.context.setSize(e,r)}close(){super.close(),ft.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},fn=class extends cs{constructor(e,r){super(e,r);l(this,"_videoTrack");l(this,"_muteOb");l(this,"_closedOb",Re(this,"closed"));l(this,"_subscription");l(this,"_canvasContainer");Number(Ii)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=Re(this._videoTrack,"mute"),be(Re(this._videoTrack,"ended"),qe(this._closedOb),Ue(()=>{this.context.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=be(this._muteOb,qe(this._closedOb),xi(pu(5e3)),zt(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),Ue(()=>{this.context.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,r;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(r=this._canvasContainer)==null||r.remove()}},hu=class extends fn{render(t){var e;return!!((e=this.input)!=null&&e.requestFrame(t))}};var fu=class extends fn{constructor(e,r,o){super(e,{name:"smallDestination",logger:o});this.resolution=r}resize(e,r){let o,s=e*r,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${r} small res: ${this.resolution.width}*${this.resolution.height} `),s>n?o=s/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${r} small: ${this.resolution.width} * ${this.resolution.height}`),o=s/(160*120)),super.resize(e/Math.sqrt(o),r/Math.sqrt(o))}};var Qa=class extends Ht{constructor(e,r){super(e,j({name:"imageSource"},r));l(this,"_lastImage");l(this,"_totalFrames",0);l(this,"_autoResize",!1);l(this,"_canvasRendered");l(this,"videoCallbackId",0);l(this,"waitingFirstFrame",!0);l(this,"shouldUpdate",!0);this._autoResize=(r==null?void 0:r.autoResize)!==!1,Mt===16&&(this._canvasRendered=Rt(),be(this._canvasRendered,ja(this._image),ho(o=>o instanceof HTMLCanvasElement?Re(o,"rendered"):za()),qe(Re(this,"closed")),Ue(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;let e=this.image;this.videoCallbackId&&e.cancelVideoFrameCallback(this.videoCallbackId),Di()&&!document.hidden&&(this.videoCallbackId=e.requestVideoFrameCallback((r,o)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=o.presentedFrames,this.update(1))}))}_render(e,r){var a;let{width:o,height:s}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:o,videoHeight:s}=n,!o||!s)return!1;n.width=o,n.height=s}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:o,height:s}=n,n!==this._lastImage)this._lastImage=n;else if(o===this.width&&s===this.height)return!0}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:o,height:s}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:o,displayHeight:s}=n,(a=this._lastImage)==null||a.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===o&&this.height===s&&this.totalFrames){if(r){this.useTexture();let u=this.context.ctx;u.texSubImage2D(u.TEXTURE_2D,0,0,0,u.RGBA,u.UNSIGNED_BYTE,n)}}else{if(r){this.useTexture();let u=this.context.ctx;u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,n)}this.resize(o,s)}return!0}get image(){return this._image}set image(e){var r;(r=this._canvasRendered)==null||r.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},Ya=class extends Qa{constructor(e,r,o){super(e,o);this._player=r;this.name="videoPlayerSource",be(Re(this._player,Qe.PLAYER_STATE_CHANGED),qe(Re(this,"closed")),zt(({state:s})=>s==="PLAYING"),Ue(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},fr=class extends Ya{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(t,e,r){super(t,new qt({id:r.name,track:e,muted:!0,container:null,objectFit:"contain",log:r.logger}),r),this.name="videoTrackSource",this._player.play()}replaceTrack(t){this.waitingFirstFrame=!0,this._player.setTrack(t),this._player.play()}close(){super.close(),this._player.stop()}},gu=class extends Ht{constructor(e,r,o){super(e,pe(j({name:"textSource"},o),{create2d:!0}));l(this,"hasChange",!0);l(this,"content","");this.ctx2d.textBaseline="top",this.content=r.content||"",r.font&&(this.font=r.font),r.color&&(this.color=r.color)}set font(e){this.ctx2d&&(this.ctx2d.font=e,this.hasChange=!0)}get font(){var e;return((e=this.ctx2d)==null?void 0:e.font)||""}set color(e){this.ctx2d&&(this.ctx2d.fillStyle=e,this.hasChange=!0)}get color(){var e;return((e=this.ctx2d)==null?void 0:e.fillStyle)||""}render2d(e){return this.ctx2d&&this.hasChange?(this.ctx2d.clearRect(0,0,this.width,this.height),this.drawMultilineText(0,0),this.hasChange=!1,!0):!1}render(e){return!1}resize(e,r){if(!this.ctx2d)return;let{color:o,font:s}=this;super.resize(e,r),this.color=o,this.font=s}drawMultilineText(e=0,r=0,o=1.2){if(!this.ctx2d)return;let s=this.ctx2d.measureText(this.content);r+=s.fontBoundingBoxAscent||s.actualBoundingBoxAscent||0;let n=this.font.match(/(\d+)px/),u=(n?parseInt(n[1],10):16)*o,m=this.content.split(`
|
|
32
|
+
`);for(let h=0;h<m.length;h++)this.ctx2d.fillText(m[h],e,r+h*u)}};var PS=`
|
|
35
33
|
// \u9876\u70B9\u7740\u8272\u5668
|
|
36
34
|
attribute vec4 a_position;
|
|
37
35
|
attribute vec2 a_texCoord;
|
|
@@ -41,7 +39,7 @@ void main() {
|
|
|
41
39
|
gl_Position = a_position;
|
|
42
40
|
v_texCoord = a_texCoord;
|
|
43
41
|
}
|
|
44
|
-
`,
|
|
42
|
+
`,LS=`
|
|
45
43
|
// \u7247\u5143\u7740\u8272\u5668
|
|
46
44
|
precision mediump float;
|
|
47
45
|
varying vec2 v_texCoord;
|
|
@@ -49,32 +47,66 @@ uniform sampler2D u_texture;
|
|
|
49
47
|
|
|
50
48
|
void main() {
|
|
51
49
|
gl_FragColor = texture2D(u_texture, v_texCoord);
|
|
52
|
-
} `;var eo=class extends G{constructor(e){super();d(this,"frameRate");d(this,"_canvas");d(this,"log");d(this,"hasAlpha",!1);d(this,"name");d(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,t){this._canvas&&(this._canvas.width=e,this._canvas.height=t)}createVideoTrackSource(e,t){return new kt(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new is(this,e)}createVideoImageSource(e,t){return new yn(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new bn(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}createTextSource(e,t){return new bc(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};d(eo,"_ids",0);var PE={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},rs=class rs extends eo{constructor(){super(...arguments);d(this,"defaultProgam");d(this,"defaultVShader");d(this,"defaultFShader");d(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${eo._ids++}`),this.ctx=this._canvas.getContext("webgl2",PE),!this.ctx)throw new N({code:I.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,xE),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,LE),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new N({code:I.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let t="";return e&&(t=e.message,this.error=e,v.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${t}`?`: ${t}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var t;(t=this.ctx)==null||t.viewport(0,0,e,this.height),super.width=e}set height(e){var t;(t=this.ctx)==null||t.viewport(0,0,this.width,e),super.height=e}setSize(e,t){var r;(r=this.ctx)==null||r.viewport(0,0,e,t),super.setSize(e,t)}createShader(e,t){let r=this.ctx,s=r.createShader(e);return r.shaderSource(s,t),r.compileShader(s),s}createProgram(e,t){let r=this.ctx,s=r.createProgram();return r.attachShader(s,e),r.attachShader(s,t),r.linkProgram(s),r.getProgramParameter(s,r.LINK_STATUS)||this.log.error(r.getProgramInfoLog(s)),s}};d(rs,"UNAVAILABLE","unavailable"),O([Te(G.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),v.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),v.addSuccessEvent({key:512700})}})],rs.prototype,"create",1),O([Te("created",G.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(rs.UNAVAILABLE,e),this.removeAllListeners()}})],rs.prototype,"destroy",1);var Pe=rs,We=class extends eo{constructor(){super(...arguments);d(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${eo._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new N({code:I.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(e){let t="";e&&(t=e.message,this.error=e,v.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${t?`: ${t}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),v.addSuccessEvent({key:512703})}};O([Te(G.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),v.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),v.addSuccessEvent({key:512701})}})],We.prototype,"create",1),O([Te("created",G.INIT,{ignoreError:!0,sync:!0})],We.prototype,"destroy",1);function VE(o,i,e,t,r,s=!1){s&&([e,t]=[t,e]);let n={sWidth:o,sHeight:i,dWidth:e,dHeight:t,sx:0,sy:0,dx:0,dy:0};if(o===0||i===0)return n;switch(r){case void 0:case"fill":break;case"contain":{let a=Math.min(e/o,t/i);n.dWidth=o*a,n.dHeight=i*a,n.dx=(e-n.dWidth)/2,n.dy=(t-n.dHeight)/2;break}case"cover":{let a=Math.max(e/o,t/i),c=e/a,l=t/a;n.sx=(o-c)/2,n.sy=(i-l)/2,n.sWidth=c,n.sHeight=l;break}}return n}var Ju=class{constructor(i,e){this.node=i;this.layout=e;d(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get fillMode(){return this.layout.fillMode}get rotation(){return this.layout.rotation}get hidden(){return!!this.layout.hidden}},os=class extends Be{constructor(e,t){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:t});d(this,"inputs",[]);d(this,"backgroundColor","black")}addInput(e,t){let r=0,s=this.inputs.length;for(;r<s;){let a=Math.floor((r+s)/2);if(this.inputs[a].layout.zIndex<t.zIndex)r=a+1;else if(this.inputs[a].layout.zIndex>t.zIndex)s=a;else throw new Error(`input already exists at zIndex ${t.zIndex}`)}let n=new Ju(e,t);this.inputs.splice(r,0,n)}changeInputLayout(e,t){let r=this.inputs.findIndex(T=>T.node===e);if(r<0)return;let{x:s,y:n,width:a,height:c,zIndex:l,fillMode:u,rotation:h,hidden:m}=t;if(!E(l)&&this.inputs.some(T=>T.layout.zIndex===l&&T.node!==e))throw new Error(`input already exists at zIndex ${t.zIndex}`);let g=this.inputs[r];E(s)||(g.layout.x=s),E(n)||(g.layout.y=n),E(a)||(g.layout.width=a),E(c)||(g.layout.height=c),E(h)||(g.layout.rotation=h),E(m)||(g.layout.hidden=m),u&&(g.layout.fillMode=u),!E(l)&&l!==g.layout.zIndex&&(g.layout.zIndex=l,this.inputs.sort((T,_)=>T.layout.zIndex-_.layout.zIndex))}hasInput(e){return this.inputs.some(t=>t.node===e)}hasNoInput(){return this.inputs.length===0}resize(e,t){if(!this.matchInputSize){super.resize(e,t);return}let r=this.inputs.reduce((s,n)=>n?Object.assign(s,{width:Math.max(s.width,n.right),height:Math.max(s.height,n.bottom)}):s,{width:0,height:0});super.resize(r.width,r.height),this.context instanceof Pe&&this.inputs.forEach(s=>{if(s){let n=this.layout2texCoords(s);s.positionBuffer?this.changeBufferData(s.positionBuffer,n):s.positionBuffer=this.createBuffer(n)}})}connect(e,...t){return super.connect(e,...t),this.drawBackGround2d(this.backgroundColor),this.matchInputSize&&this.resize(0,0),e}removeInput(e){this.inputs=this.inputs.filter(t=>t.node!==e),this.inputs.length===0&&this.drawBackGround2d(this.backgroundColor)}render(e){let t=this.context.ctx;if(t.clearColor(0,0,0,0),this.inputs.reduce((s,n)=>n.node.requestFrame(e)||s,!1)&&t){this.useProgram(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let s=0;s<this.inputs.length;s++){let n=this.inputs[s];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(this.inputs.forEach(t=>t.node.requestFrame(e)),this.ctx2d){this.drawBackGround2d(this.backgroundColor);for(let t=0;t<this.inputs.length;t++){let r=this.inputs[t];if(r.hidden)continue;let s=VE(r.node.width,r.node.height,r.width,r.height,r.fillMode,_t(r.rotation));this.draw2d(r.node.image,r.x+s.dx,r.y+s.dy,s.dWidth,s.dHeight,s.sx,s.sy,s.sWidth,s.sHeight)}return!0}return!1}debugLayout(e,t,r,s,n=!1){this.ctx2d&&(n&&([r,s]=[s,r]),this.ctx2d.save(),this.ctx2d.strokeStyle="red",this.ctx2d.lineWidth=2,this.ctx2d.strokeRect(e,t,r,s),this.ctx2d.restore())}getInfo(){let{totalFrames:e,x:t,y:r,width:s,height:n,name:a}=this,c=Date.now(),l=(e-this.lastInfo.totalFrames)/((c-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:s,height:n,timestamp:c,fps:l,name:a},D({parent:this.inputs.filter(u=>u).map(u=>u.node.getInfo())},this.lastInfo)}removeAllInputs(){this.inputs.forEach(e=>{var t;if(e.node.disconnect(),e.positionBuffer&&this.context instanceof Pe)try{(t=this.context.ctx)==null||t.deleteBuffer(e.positionBuffer)}catch(r){}})}close(){super.close(),this.removeAllInputs()}};var UE=[1,0,0,0,1,1,0,1],wt=class extends Be{constructor(e,t,r,s){super(e,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"transform",logger:t});d(this,"mirror",!1);d(this,"rotation",0);if(r&&(this.mirror=r),s&&(this.rotation=s),e instanceof Pe)try{this.setTexBuffer(UE)}catch(n){e.destroy(new N({code:I.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${n.message||n}`}))}}draw2d(e,t,r,s,n){if(this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height),this.ctx2d.save(),this.mirror&&(this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0)),this.rotation===90?(this.ctx2d.translate(s,0),this.ctx2d.rotate(Math.PI/2),this.ctx2d.scale(n/s,s/n)):this.rotation===180?(this.ctx2d.translate(this.width,this.height),this.ctx2d.rotate(Math.PI)):this.rotation===270&&(this.ctx2d.translate(0,n),this.ctx2d.rotate(3*Math.PI/2),this.ctx2d.scale(n/s,s/n));let a=super.draw2d(e,t,r,s,n);return this.ctx2d.restore(),a}return!1}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}resize(e,t){_t(this.rotation)&&([e,t]=[t,e]),super.resize(e,t)}};var to=class extends ri{constructor(e,t=4){super(t,ot);d(this,"inputLocalVideoTracks",new Map);d(this,"inputLocalScreenTracks",new Map);d(this,"cameraNodeMap",new Map);d(this,"screenNodeMap",new Map);d(this,"textNodeMap",new Map);d(this,"imageNodeMap",new Map);d(this,"videoNodeMap",new Map);d(this,"endedIds",new Set);d(this,"videoContext");d(this,"mixNode");d(this,"destination");d(this,"manager");d(this,"stat");d(this,"_checkId",0);d(this,"autoSetFps",!0);this.manager=e,this.log.id+="mix",this.create2dVideoContext(),this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.destination.on(Be.RENDER,r=>{this.emit("render",r)}),this.mixNode=new os(this.videoContext,this.log),this.mixNode.matchInputSize=!1}listenDeviceChange(){throw new Error("Method not implemented.")}enablePrintDetail(e=2e3){this._checkId=re.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}create2dVideoContext(){this.videoContext?this.videoContext.destroy():this.videoContext=new We({frameRate:15,logger:this.log,name:"mix-ctx"}),this.videoContext.create({alpha:!1})}setFps(e){this.autoSetFps=!1,this.videoContext.frameRate=e;for(let t of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])t.shouldUpdate=!1;setTimeout(()=>{var t;return(t=this.destination)==null?void 0:t.start(this.videoContext.frameRate)},500)}setFpsAuto(){var s;if(!this.autoSetFps)return;for(let n of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])n.shouldUpdate=!1;let e=null,t=0,r=!0;for(let[n,a]of this.inputLocalVideoTracks)if(a.profile.frameRate>t){if(this.endedIds.has(n)){let c=this.cameraNodeMap.get(n);c&&c.image.cancelVideoFrameCallback(c.videoCallbackId);continue}t=a.profile.frameRate,e=n}for(let[n,a]of this.inputLocalScreenTracks)if(a.profile.frameRate>t){if(this.endedIds.has(n)){let c=this.screenNodeMap.get(n);c&&c.image.cancelVideoFrameCallback(c.videoCallbackId);continue}t=a.profile.frameRate,e=n,r=!1}if(e!==null){let n=r?this.cameraNodeMap.get(e):this.screenNodeMap.get(e);n&&(n.shouldUpdate=!0,n.tryVideoFrameCallback()),this.log.info("set mix fps: ",t)}else(s=this.destination)==null||s.start(this.videoContext.frameRate),this.log.info("fallback to timer, fps: ",this.videoContext.frameRate)}setMixBackground(e){this.mixNode&&(this.mixNode.backgroundColor=e)}resizeMixCanvas(e,t){var r;(r=this.mixNode)==null||r.resize(e,t)}startMix(){return f(this,null,function*(){var e;if(!this.mixNode||!this.destination)throw new Error("can't mix without necessary conditions");this.mixNode.disconnect(),this.mixNode.connect(this.destination),vt&&this.player.setCanvas(this.videoContext._canvas),this.setOutputMediaStreamTrack(this.destination.videoTrack),(e=this.manager)==null||e.changeInput(this)})}addCameraSource(e,t,r){if(this.inputLocalVideoTracks.has(e)||this.cameraNodeMap.has(e))throw new Error(`There is already a cameraSource with the same ID: ${e}`);let{mediaTrack:s}=t;if(!s)throw new Error("no mediaTrack, add cameraSource failed");t.recaptureMode=1,Ue(this,ve).add("videoInputRemoved",a=>{a.deviceId===t.deviceId&&(this.endedIds.add(e),this.setFpsAuto())}),t.on("output-media-track-changed",()=>{this.endedIds.delete(e),this.updateCameraSource(e,r,t.mediaTrack)});let n;je===16&&s instanceof CanvasCaptureMediaStreamTrack?n=this.videoContext.createVideoImageSource(s.canvas,{name:"cameraCanvasSource",logger:this.log}):n=this.videoContext.createVideoTrackSource(s,"cameraNodeSource"),n.resize(t.settings.width,t.settings.height),n.shouldUpdate=!1,this._connectMix(n,r,"cover"),this.inputLocalVideoTracks.set(e,t),this.cameraNodeMap.set(e,n),this.setFpsAuto()}addScreenSource(e,t,r){if(this.inputLocalScreenTracks.has(e)||this.screenNodeMap.has(e))throw new Error(`There is already a screenSource with the same ID: ${e}`);let{mediaTrack:s}=t;if(!s)throw new Error("no mediaTrack, add cameraSource failed");let n=this.videoContext.createVideoTrackSource(s,"screenNodeSource");n.resize(t.settings.width,t.settings.height),n.shouldUpdate=!1,this._connectMix(n,r),this.inputLocalScreenTracks.set(e,t),this.screenNodeMap.set(e,n),this.setFpsAuto()}addTextSource(e){let{id:t,content:r="",font:s,color:n,layout:a}=e;if(this.textNodeMap.has(t))throw new Error(`There is already a textSource with the same ID: ${t}`);let c=this.videoContext.createTextSource({content:r,font:s,color:n});c.resize(a.width,a.height),this._connectMix(c,a),this.textNodeMap.set(t,c)}addImageSource(e,t,r){if(this.imageNodeMap.has(e))throw new Error(`There is already a imageSource with the same ID: ${e}`);let s=this.videoContext.createVideoImageSource(t,{autoResize:!1,logger:this.log});s.resize(t.width,t.height),this._connectMix(s,r),this.imageNodeMap.set(e,s)}addVideoSource(e,t,r){if(this.videoNodeMap.has(e))throw new Error(`There is already a videoSource with the same ID: ${e}`);let s=this.videoContext.createVideoImageSource(t,{autoResize:!1,logger:this.log});s.resize(t.videoWidth,t.videoHeight),s.shouldUpdate=!1,this._connectMix(s,r),this.videoNodeMap.set(e,s)}updateCameraSource(e,t,r=null,s){let n=this.cameraNodeMap.get(e);if(n){if(r){if(je===16&&r instanceof CanvasCaptureMediaStreamTrack)if(n instanceof kt){let l=n.output;n.close(),n=this.videoContext.createVideoImageSource(r.canvas,{name:"cameraCanvasSource",logger:this.log}),n.connect(l),this.cameraNodeMap.set(e,n)}else n.image=r.canvas;else if(n instanceof kt)n.replaceTrack(r);else{let l=n.output;n.close(),n=this.videoContext.createVideoTrackSource(r,"cameraNodeSource"),n.connect(l),this.cameraNodeMap.set(e,n)}let{width:a,height:c}=r.getSettings();a&&c&&n.resize(a,c)}s&&n.resize(s.width,s.height),(s||r)&&this.setFpsAuto(),this._changeMixLayout(n,t)}}updateScreenSource(e,t){let r=this.screenNodeMap.get(e);r&&this._changeMixLayout(r,t)}updateTextSource(e){let{id:t,content:r,font:s,color:n,layout:a}=e,c=this.textNodeMap.get(t);c&&(E(r)||(c.content=r),E(s)||(c.font=s),E(n)||(c.color=n),c.resize(a.width,a.height),this._changeMixLayout(c,a))}updateImageSource(e,t,r){let s=this.imageNodeMap.get(e);s&&(r&&(s.image=r,s.resize(r.width,r.height)),this._changeMixLayout(s,t))}updateVideoSource(e,t,r){let s=this.videoNodeMap.get(e);if(s){if(r){let n=s.image;n instanceof HTMLVideoElement&&this.stopVideoElement(n),s.image=r,s.resize(r.videoWidth,r.videoHeight)}this._changeMixLayout(s,t)}}_connectMix(e,t,r="contain"){if(!this.mixNode)return;let{mirror:s,rotation:n}=t;e.disconnect();let a=new wt(this.videoContext,this.log,s,n);a=e.connect(a),t.fillMode||(t.fillMode=r),a.connect(this.mixNode,t)}_changeMixLayout(e,t){if(!this.mixNode)return;let{mirror:r,rotation:s}=t,n=e.output||e;n instanceof wt&&(E(r)||(n.mirror=r),E(s)||(n.rotation=s),n.resize(e.width,e.height)),this.mixNode.changeInputLayout(n,t)}removeCameraSource(e){let t=this.inputLocalVideoTracks.get(e);if(!t)return;t.close(),this.inputLocalVideoTracks.delete(e);let r=this.cameraNodeMap.get(e);r&&(r.output instanceof wt&&r.output.close(),r.close(),this.cameraNodeMap.delete(e)),this.checkAfterRemove(!0)}removeScreenSource(e){let t=this.inputLocalScreenTracks.get(e);if(!t)return;t.close(),this.inputLocalScreenTracks.delete(e);let r=this.screenNodeMap.get(e);r&&(r.output instanceof wt&&r.output.close(),r.close(),this.screenNodeMap.delete(e)),this.checkAfterRemove(!0)}removeTextSource(e){let t=this.textNodeMap.get(e);t&&(t.output instanceof wt&&t.output.close(),t.close(),this.textNodeMap.delete(e)),this.checkAfterRemove()}removeImageSource(e){let t=this.imageNodeMap.get(e);t&&(t.output instanceof wt&&t.output.close(),t.close(),this.imageNodeMap.delete(e)),this.checkAfterRemove()}removeVideoSource(e){let t=this.videoNodeMap.get(e);t&&(t.output instanceof wt&&t.output.close(),t.image instanceof HTMLVideoElement&&this.stopVideoElement(t.image),t.close(),this.videoNodeMap.delete(e)),this.checkAfterRemove()}checkAfterRemove(e=!1){e&&this.setFpsAuto()}stopVideoElement(e){e.pause(),e.src="",e.srcObject=null,e.remove()}close(){var e;super.close(),re.clearTask(this._checkId),(e=this.videoContext)==null||e.destroy(),delete this.mixNode,delete this.destination;for(let t of[...this.inputLocalVideoTracks.values(),...this.inputLocalScreenTracks.values()])t.close();this.inputLocalVideoTracks.clear(),this.inputLocalScreenTracks.clear(),this.cameraNodeMap.clear(),this.screenNodeMap.clear(),this.textNodeMap.clear(),this.imageNodeMap.clear(),be(this);for(let t of this.videoNodeMap.values())t.image instanceof HTMLVideoElement&&this.stopVideoElement(t.image);this.videoNodeMap.clear(),this.log.info("localMixVideoTrack close, stop mix")}};var vc=zs();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:vc,exposeOrigin:!0,permittedOrigins:["*"]})}catch(o){}var BE=function(o){return f(this,null,function*(){let i=null,e=$E(o);y.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);o.systemAudio&&t.getAudioTracks().length===0&&(Vo&&dt<74||ke||ne)&&y.warn("Your browser not support capture system audio");let r=t.getVideoTracks()[0];if(r){if(o.frameRate)try{yield r.applyConstraints({frameRate:{min:o.frameRate,ideal:o.frameRate},width:o.width,height:o.height})}catch(s){y.warn(`screen applyConstraints failed: ${s}`)}o.captureElement&&(yield FE(r,o.captureElement))}if(o.audio){let s=HE(o);y.info(`getUserMedia with constraints: ${JSON.stringify(s)}`),i=yield navigator.mediaDevices.getUserMedia(s),t.addTrack(i.getAudioTracks()[0])}return t})};function FE(o,i){return f(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&ae(o.cropTo))try{if(!(((e=o.getCaptureHandle())==null?void 0:e.handle)===vc))return;let r=yield CropTarget.fromElement(i);yield o.cropTo(r)}catch(t){y.warn(`cropTo target failed ${t}`)}})}function HE(o){let i={echoCancellation:o.echoCancellation,autoGainControl:o.autoGainControl,noiseSuppression:o.noiseSuppression,sampleRate:o.sampleRate,channelCount:o.channelCount};return E(o.microphoneId)||(i.deviceId=o.microphoneId),{audio:i,video:!1}}function $E(o){let i={preferCurrentTab:o.preferDisplaySurface==="current-tab"||!!o.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:ke?{max:o.width}:{ideal:o.width,max:o.width},height:ke?{max:o.height}:{ideal:o.height,max:o.height},frameRate:o.frameRate,displaySurface:o.preferDisplaySurface||"monitor"};if(i.video=e,o.systemAudio){let{echoCancellation:t=!0,noiseSuppression:r=!1,autoGainControl:s=!1}=o;i.audio={echoCancellation:t,noiseSuppression:r,autoGainControl:s,sampleRate:48e3}}return i}var Vp=BE;var et=class extends Ge{constructor(e){super(e,2);d(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});d(this,"objectFit","contain");d(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}get isShareCurrentTab(){var e,t;try{return vc===((t=(e=this.mediaTrack)==null?void 0:e.getCaptureHandle())==null?void 0:t.handle)}catch(r){return}}capture(u){return f(this,arguments,function*({systemAudio:e=!1,autoGainControl:t,echoCancellation:r,noiseSuppression:s,audioTrack:n,videoTrack:a,captureElement:c,preferDisplaySurface:l}){try{let h;return a||n?(h=new MediaStream,a&&h.addTrack(a),n&&h.addTrack(n)):(h=yield Vp({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:t,echoCancellation:r,noiseSuppression:s,captureElement:c,preferDisplaySurface:l}),this.sourceTrack=h.getVideoTracks()[0]),yield this.setInputMediaStreamTrack(h.getVideoTracks()[0]),h}catch(h){throw this.log.error(`getDisplayMedia error observed ${h}`),h instanceof N?h:new N({code:I.INITIALIZE_FAILED,name:h.name,message:h.message})}})}switchDevice(e){return f(this,null,function*(){throw new Error("Method not implemented.")})}};O([st(function(e){this.setContentHint(e.contentHint||"detail")})],et.prototype,"capture",1);var Ci=class extends Rt{constructor(i){super(i),this._log.id=`s-${this._log.id}`}addAudioProcessor(i,e,t){this.pipeline.silentNode.setNode(t),this.pipeline.mixNode.setNode(e),this.pipeline.aec.setNode(i),this.enableTrackAEC(!1)}removeAudioProcessor(i){this.pipeline.aec.node===i&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}};var GE='registerProcessor("dumper",class extends AudioWorkletProcessor{constructor(e){super(),this.sourceSampleRate=e.processorOptions.sourceSampleRate||48e3,this.targetSampleRate=e.processorOptions.targetSampleRate||48e3,this.port.onmessage=e=>{this.port2=e.data.port}}process(e){return(this.port2||this.port).postMessage(this.resampleAll(e,this.sourceSampleRate,this.targetSampleRate)),!0}resampleAll(r,s,a){if(s===a)return r;var o=[];for(let t=0;t<r.length;t++){o[t]=[];for(let e=0;e<r[t].length;e++)o[t][e]=this.resample(r[t][e],s,a)}return o}resample(t,e,r){if(e===r)return t;var s=Math.round(t.length*(this.targetSampleRate/this.sourceSampleRate)),a=new Float32Array(s),o=(t.length-1)/(s-1);a[0]=t[0];for(let e=1;e<s-1;e++){var l=e*o,p=Math.floor(l),h=Math.ceil(l);a[e]=t[p]+(t[h]-t[p])*(l-p)}return a[s-1]=t[t.length-1],a}});',qu;function vn(o,i=48e3,e=1,t){return f(this,null,function*(){let r=Ee("dump");qu||(qu=Xi(r,URL.createObjectURL(new Blob([GE],{type:"application/javascript"})))),yield qu;let s=r.sampleRate,n=new AudioWorkletNode(r,"dumper",{numberOfInputs:o.length,numberOfOutputs:0,processorOptions:{sourceSampleRate:s,targetSampleRate:i}});return n.channelCountMode="explicit",n.channelCount=e,t&&n.port.postMessage({port:t},[t]),o.forEach((a,c)=>a.connect(n,0,c)),new ReadableStream({start(a){n.port.onmessage=c=>{a.enqueue(c.data)}},cancel(){o.forEach(a=>a.disconnect(n)),n.port.close()}})})}var Nc=class extends Ka{constructor(e){super();this.room=e;d(this,"_localAudioTrack");d(this,"_localScreenAudioTrack");d(this,"log",y.createLogger({id:"am"}));d(this,"denoiser");d(this,"voiceChanger");d(this,"mixChangedDebounce");d(this,"audioProcessor");d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);d(this,"getPCMAbortCtrlMap",new Map);d(this,"audioFrameEventConfigMap",new Map);d(this,"audioReferenceMap",new Map);d(this,"isLocalAudioNeedAudioProcess",!1);d(this,"isScreenAudioNeedAudioProcess",!1);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.installEvent()}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}get _localScreenAudioPipeline(){var e;return(e=this._localScreenAudioTrack)==null?void 0:e.pipeline}dump(e){var u,h;if(!this._localAudioTrack)return;let t=[],r=[];(u=this._localAudioPipline)!=null&&u.source.node&&(t.push(this._localAudioPipline.source.node),r.push("mic")),(h=this._localAudioPipline)!=null&&h.denoiser.node&&(t.push(this._localAudioPipline.denoiser.node),r.push("mic-processed")),this.mixWeight>1&&(t.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),r.push("mix")),this.log.info(`dump audio track ${r}, duration: ${e}`);let s=new AbortController,n=[],a=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),s.abort("timeout")},e*1e3),c=()=>{for(let m=0;m<r.length;m++){let g=URL.createObjectURL(new Blob(n[m])),T=document.createElement("a");T.href=g,T.download=`${r[m]}.pcm`,T.style.display="none",document.body.appendChild(T),T.click(),URL.revokeObjectURL(g),T.remove()}clearTimeout(a),s.abort("download")},l=vn(t).then(m=>m.pipeTo(new WritableStream({write(g){g.forEach((T,_)=>n[_]=n[_]?n[_].concat(T[0]):[T[0]])}}),s).catch(g=>c));return{then:l.then.bind(l),download:c}}getPCM(e,t){var R,X,$;if(typeof WritableStream=="undefined"){this.log.warn("getPCM failed: browser not support WritableStream");return}let{enable:r,sampleRate:s=48e3,channelCount:n=1,port:a}=(t===""?this.audioFrameEventConfigMap.get(""):this.audioFrameEventConfigMap.get(t)||this.audioFrameEventConfigMap.get("*"))||{};if(!r)return;this.log.info(`getPCM ${t||"local"}`);let c=Math.floor(s*.04),l=new Float32Array(c),u=new Float32Array(c),h,m,g=0,T=new AbortController,_=t===""?(R=this._localAudioTrack)==null?void 0:R.mediaTrack:($=(X=this.room)==null?void 0:X.remotePublishedUserMap.get(t))==null?void 0:$.remoteAudioTrack.mediaTrack;if(!_){this.log.info(`getPCM failed: ${t||"local"} has no audio track`);return}let S=Ee().createMediaStreamSource(new MediaStream([_]));return vn([S],s,n,a).then(De=>De.pipeTo(new WritableStream({write(Q){Q[0][0]&&(g+Q[0][0].length>c?(l.set(Q[0][0].subarray(0,c-g),g),h=Q[0][0].subarray(c-g),Q[0][1]&&(u.set(Q[0][1].subarray(0,c-g),g),m=Q[0][1].subarray(c-g)),g+=c-g):(h&&(l.set(h,g),g+=h.length,h=void 0),m&&(u.set(m,g),m=void 0),l.set(Q[0][0],g),Q[0][1]&&u.set(Q[0][1],g),g+=Q[0][0].length),g>=c&&(g=0,e({userId:t,sampleRate:s,channelCount:n,data:n===1?l:[l,u]}),l=new Float32Array(c),u=new Float32Array(c)))}}),T).catch(Q=>this.log.warn(`stop getPCM reason:${Q}`))),T}get hasScreenAudioTrack(){return!E(this._localScreenAudioTrack)}get hasAudioTrack(){return!E(this._localAudioTrack)}changeInput(e){var t,r;if(e instanceof Ci)return this._localScreenAudioTrack=e,this.isScreenAudioNeedAudioProcess&&((t=this.audioProcessor)!=null&&t.screenAudioWorkletNode)&&(e.addAudioProcessor(this.audioProcessor.screenAudioWorkletNode,this.audioProcessor.mixNode,this.audioProcessor.silentNode),this.audioReferenceMap.forEach((s,n)=>{e.mixAudioReference(s,n)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof Rt)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),this.isLocalAudioNeedAudioProcess&&((r=this.audioProcessor)!=null&&r.localAudioWorkletNode)&&(e.addAudioProcessor(this.audioProcessor.localAudioWorkletNode,this.audioProcessor.mixNode,this.audioProcessor.silentNode),this.audioReferenceMap.forEach((s,n)=>{e.mixAudioReference(s,n)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof oi)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixAudioReference(e,t){var r;(r=this._localAudioTrack)==null||r.mixAudioReference(e,t)}unMixAudioReference(e){var t;(t=this._localAudioTrack)==null||t.unMixAudioReference(e)}setAudioReferenceVolume(e,t){var r;(r=this._localAudioTrack)==null||r.setAudioReferenceVolume(e,t)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,t;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(t=this._localScreenAudioTrack)==null?void 0:t.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof Ci?delete this._localScreenAudioTrack:e instanceof Rt?delete this._localAudioTrack:e instanceof oi}addDenoiser(e){var t;this.denoiser=e,(t=this._localAudioTrack)==null||t.addDenoiser(e)}addAudioProcessor(e,t,r,s){var n;this.audioProcessor={localAudioWorkletNode:r,mixNode:e,silentNode:t,screenAudioWorkletNode:s},this.isLocalAudioNeedAudioProcess&&this._localAudioTrack&&r&&(this._localAudioTrack.addAudioProcessor(r,e,t),this.audioReferenceMap.forEach((a,c)=>{var l;(l=this._localAudioTrack)==null||l.mixAudioReference(a,c)})),this.isScreenAudioNeedAudioProcess&&this._localScreenAudioTrack&&s&&((n=this._localScreenAudioTrack)==null||n.addAudioProcessor(s,e,t),this.audioReferenceMap.forEach((a,c)=>{var l;(l=this._localScreenAudioTrack)==null||l.mixAudioReference(a,c)}))}removeDenoiser(e){var t;return delete this.denoiser,(t=this._localAudioTrack)==null?void 0:t.removeDenoiser(e)}addVoiceChanger(e,t){var r;this.voiceChanger=[e,t],(r=this._localAudioTrack)==null||r.pipeline.voiceChanger.setNode(e,t)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}removeAudioProcessor(e,t){var r,s;delete this.audioProcessor,(r=this._localAudioTrack)==null||r.removeAudioProcessor(e),(s=this._localScreenAudioTrack)==null||s.removeAudioProcessor(t)}destroy(){this.close(),this.audioReferenceMap.clear(),this.getPCMAbortCtrlMap.forEach(e=>e==null?void 0:e.abort("destroy")),this.getPCMAbortCtrlMap.clear(),this.audioFrameEventConfigMap.clear(),this.uninstallEvent()}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}handleLocalTrackStarted({room:e,userId:t}){var s;if(e!==this.room||this.getPCMAbortCtrlMap.get(t))return;let r=this.getPCM(n=>{var a;(a=this.room)==null||a.emit("audio-frame",n)},"");this.getPCMAbortCtrlMap.set(t,r),this.getPCMAbortCtrlMap.get(t)&&((s=this._localAudioTrack)==null||s.on("input-media-track-changed",()=>{let n=this.getPCMAbortCtrlMap.get(t);n&&(n.abort("inputMediaTrackChanged"),n=this.getPCM(a=>{var c;(c=this.room)==null||c.emit("audio-frame",a)},""),this.getPCMAbortCtrlMap.set(t,n))}))}handleLocalTrackStopped({room:e,userId:t}){if(e!==this.room)return;let r=this.getPCMAbortCtrlMap.get(t);r&&(r.abort("stopLocalAudio"),this.getPCMAbortCtrlMap.delete(t))}handleRemoteTrackStarted({room:e,userId:t}){if(e===this.room&&!this.getPCMAbortCtrlMap.get(t)){let r=this.room.audioManager.getPCM(s=>{var n;(n=this.room)==null||n.emit("audio-frame",s)},t);this.getPCMAbortCtrlMap.set(t,r)}}handleRemoteTrackStopped({room:e,userId:t}){if(e!==this.room)return;let r=this.getPCMAbortCtrlMap.get(t);r&&(r.abort("stopRemoteAudio"),this.getPCMAbortCtrlMap.delete(t))}installEvent(){A.on("113",this.handleLocalTrackStarted,this),A.on("114",this.handleLocalTrackStopped,this),A.on("115",this.handleRemoteTrackStarted,this),A.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){A.off("113",this.handleLocalTrackStarted),A.off("114",this.handleLocalTrackStopped),A.off("115",this.handleRemoteTrackStarted),A.off("116",this.handleRemoteTrackStopped)}updateAudioReference({type:e,audioReference:t,refId:r,volume:s}){if(e==="add"){if(this.audioReferenceMap.get(r)||!t||(this.audioReferenceMap.set(r,t),!this.audioProcessor))return;this.mixAudioReference(t,r)}else if(e==="remove")this.audioReferenceMap.get(r)&&(this.audioReferenceMap.delete(r),this.unMixAudioReference(r));else if(e==="updateVolume"){if(!this.audioProcessor||E(s))return;this.setAudioReferenceVolume(r,s)}}};function Dc(o=30,i=2){return K((e,t)=>function(...r){return new Promise((s,n)=>{let a=setTimeout(()=>{let c=new N({code:I.API_CALL_TIMEOUT,message:`checkPendingPromise ${t}() timeout ${o}s`});y.warn(c),i===2?n(c):i===1&&s()},o*1e3);e.apply(this,r).then(s,n).finally(()=>{clearTimeout(a)})})})}var Ri=class Ri extends qr{constructor(e,t,r){super({userId:t.userId,sdkAppId:e.sdkAppId,mediaType:r,room:e});this.room=e;this.user=t;d(this,"tinyId");d(this,"isRemote",!0);d(this,"jitterBufferDelay",0);d(this,"availableState");d(this,"remotePublishState");d(this,"_triggerCheckDecodeSubject",nt(ue(this,Ri.STATE_SUBSCRIBE)));this.tinyId=t.tinyId,this.availableState=new G(`${t.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new G(`${t.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),le(En(ue(this,G.STATECHANGED),ue(this.remotePublishState,G.STATECHANGED)),Cn(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),Ae(c=>{this.availableState.state!==(c?G.ON:G.OFF)&&(this.availableState.state=c?G.ON:G.OFF),this.updatePlayingState(c)}));let s=le(ue(this.player,he.ERROR),Mt(c=>c.code===MediaError.MEDIA_ERR_DECODE)),n=le(In(5e3),Mt(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived?!1:this.player.isPlaying||(this.kind===p.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),a=le(cu(s,n),Le(ue(this,G.INIT)));le(this._triggerCheckDecodeSubject,Mt(()=>!this.ignoreDecodeError),Qr(a),Ae(c=>{this.reportDecodeResult(!1,c)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var t,r;return(((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===Ri.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===G.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,t){var s,n;let r=this.kind===p.AUDIO;if(v[e?"addSuccessEvent":"addFailedEvent"]({key:r?504700:514702}),!r){let a=((s=this.room)==null?void 0:s.downlinkVideoCodec.toUpperCase())||"H264";v[e?"addSuccessEvent":"addFailedEvent"]({key:Go[`DECODE_${a}_RESULT`]}),e||this.log.warn(`${(n=this.room)==null?void 0:n.downlinkVideoCodec} decode failed`)}e||(v.addEnum({key:r?504701:514703,value:Ur()}),se.uploadEvent({log:`stat-decode-failed-${this.kind}-${Vr()||$i()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===p.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:t}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?G.ON:G.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};d(Ri,"STATE_SUBSCRIBE","subscribe"),O([Dc(5,1)],Ri.prototype,"waitHasMediaTrack",1),O([Te(G.INIT,Ri.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),A.emit(C.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),pt(521716,!1)],Ri.prototype,"subscribe",1),O([Te(Ri.STATE_SUBSCRIBE,G.INIT,{sync:!0,success(){this.log.info("unsubscribed"),A.emit(C.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],Ri.prototype,"unsubscribe",1);var ss=Ri;var oi=class extends ss{constructor(e,t){super(e,t,1);d(this,"volume",0);d(this,"mediaType",1);d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return Jr.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}decodeFrame(e){if(!this.manager)return e;let t=e;for(let r of this.manager.decodePipeline)if(r&&(t=r({frame:t,track:this}),!t))return;return t}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isRemotePublished(){return this.user.muteState.audioAvailable}};function JE(o){return[15,30,45,60].reduce((e,t)=>Math.abs(t-o)<Math.abs(e-o)?t:e)}var yi=class extends ss{constructor(e,t,r=4){super(e,t,r);d(this,"mediaType",4);d(this,"source");d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",s=>{this.room.emit("first-video-frame",s)})}play(e,t){return(de(t==null?void 0:t.canvasRender)?t.canvasRender:je===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,t).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new We({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let t=new Kr(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(t),this.player.setCanvas(e._canvas),Wr()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,r=JE(t);if(!q(t)||t<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${t} `);return}if(r===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${r} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${t}, closest: ${r}, current: ${e.frameRate}`),e.frameRate=r}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(a=>a.msg_user_info.str_identifier===this.userId))||{},t=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let r=e.find(a=>a.uint32_video_stream_type===t);return(r==null?void 0:r.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let t of this.manager.decodePipeline)if(t&&(e=t({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},ns=class extends yi{constructor(e,t){super(e,t,2);d(this,"mediaType",2);d(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var as=new Map;A.on(C.JOIN_SUCCESS,({room:o})=>{Ce(o.userId,{eventId:32788})});A.on(C.LEAVE_START,({room:o})=>{Ce(o.userId,{eventId:32789})});A.on(C.LOCAL_TRACK_PUBLISHED,({track:o})=>{if(o.room){let i=32769;o.mediaType===4?i=32768:o.mediaType===2&&(i=32805),Ce(o.room.userId,{eventId:i})}});A.on(C.LOCAL_TRACK_UNPUBLISHED,({track:o})=>{if(o.room){let i=32771;o.mediaType===4?i=32770:o.mediaType===2&&(i=32806),Ce(o.room.userId,{eventId:i})}});A.on(C.TRACK_MUTED,({track:o})=>{o.room&&(o.kind===p.AUDIO?Ce(o.room.userId,{eventId:o.isRemote?32785:32772,remoteUserId:o.isRemote?o.userId:void 0}):Ce(o.room.userId,{eventId:o.isRemote?32784:32773,remoteUserId:o.isRemote?o.userId:void 0}))});A.on(C.TRACK_UNMUTED,({track:o})=>{o.room&&(o.kind===p.AUDIO?Ce(o.room.userId,{eventId:o.isRemote?32787:32774,remoteUserId:o.isRemote?o.userId:void 0}):Ce(o.room.userId,{eventId:o.isRemote?32786:32775,remoteUserId:o.isRemote?o.userId:void 0}))});A.on(C.REMOTE_TRACK_SUBSCRIBED,({track:o})=>{o.room&&(o.mediaType===1&&Ce(o.room.userId,{eventId:32777,remoteUserId:o.userId}),o.mediaType===4&&Ce(o.room.userId,{eventId:32776,remoteUserId:o.userId}),o.mediaType===8&&Ce(o.room.userId,{eventId:32803,remoteUserId:o.userId}))});A.on(C.REMOTE_TRACK_UNSUBSCRIBED,({track:o})=>{o.room&&(o.mediaType===1&&Ce(o.room.userId,{eventId:32779,remoteUserId:o.userId}),o.mediaType===4&&Ce(o.room.userId,{eventId:32778,remoteUserId:o.userId}),o.mediaType===8&&Ce(o.room.userId,{eventId:32804,remoteUserId:o.userId}))});A.on(C.SWITCH_DEVICE_SUCCESS,({track:o})=>{o.room&&Ce(o.room.userId,{eventId:o.kind===p.VIDEO?32780:32781})});A.on(C.LOCAL_TRACK_REPLACED,({track:o})=>{o.room&&Ce(o.room.userId,{eventId:o.kind===p.VIDEO?32782:32783})});A.on(C.SIGNAL_CONNECTION_STATE_CHANGED,({room:o,prevState:i,state:e})=>{let t;switch(e){case"CONNECTED":i==="RECONNECTING"?t=32795:t=32791;break;case"DISCONNECTED":i==="RECONNECTING"?t=32796:t=32790;break;case"RECONNECTING":t=32794;break}t&&Ce(o.userId,{eventId:t})});A.on(C.PEER_CONNECTION_STATE_CHANGED,({room:o,prevState:i,state:e,remoteUserId:t})=>{let r=!!t,s;switch(e){case"CONNECTED":i==="RECONNECTING"?s=r?32801:32798:s=r?32793:32792;break;case"DISCONNECTED":i==="RECONNECTING"&&(s=r?32802:32799);break;case"RECONNECTING":s=r?32800:32797;break}s&&Ce(o.userId,{eventId:s,remoteUserId:t})});A.on(C.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:o,userId:i,remoteUserId:e,codec:t,isHWCodec:r,prevImplementation:s,streamType:n})=>{let a=r?1:0;s||(a=r?3:2);let c={H264:0,H265:1,VP8:2}[t.toUpperCase()],l={eventId:4004,param1:a,param2:c,streamType:n||2};e&&(l.remoteUserId=e,l.eventId=4005),Ce(i,l),v.addEnum({key:e?514701:513701,value:a}),v.addEnum({key:e?514700:513700,value:c})});A.on(C.LOCAL_TRACK_RECAPTURE,({track:o,error:i})=>{if(o.userId){let e={eventId:2003,param1:0};o.kind===p.AUDIO?(e.streamType=1,i&&(e.param1=2)):(e.streamType=o.streamType==="auxiliary"?7:2,i&&(e.param1=8)),Ce(o.userId,e)}});function Ce(o,i){let e=w(D({},i),{timestamp:As()});as.has(o)?as.get(o).push(e):as.set(o,[e])}function Up(o){if(as.has(o)){let i=as.get(o).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return as.delete(o),i}return[]}function Bp(...o){return K((i,e)=>function(...t){return qE.call(this,o,t,e,this._name),i.apply(this,t)})}function qE(o,i,e,t){try{if(Se(o))for(let r=0;r<o.length;r++)Oc.call(this,{rule:o[r],value:i[r],key:o[r].name,fnName:e,className:t});else Oc.call(this,{rule:o,value:i[0],key:o.name,fnName:e,className:t})}catch(r){throw y.error(r),r}}function Oc({rule:o,value:i,key:e,fnName:t,className:r}){if(E(i)){if(o.required)throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_REQUIRED,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(E(o.defaultValue))return;i=o.defaultValue}if(Array.isArray(o.type)){let a=!1;for(let c=0;c<o.type.length;c++)o.type[c]===null&&i===null&&(a=!0),ae(o.type[c])&&i instanceof o.type[c]&&(a=!0),te(o.type[c])&&ye(i)===o.type[c].toLowerCase()&&(a=!0);if(!a)throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_TYPE,data:{key:e,rule:{type:o.type.map(c=>kr(c)?Eo(c):te(c)?c:ye(c))},fnName:t,value:i},link:{className:r,fnName:t}})})}else if(!E(o.type)&&ye(i)!==o.type)throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_TYPE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(o.allowEmpty===!1){let a=q(i)&&(i===0||Number.isNaN(i)),c=te(i)&&i.trim()==="";if(a||c)throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_EMPTY,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})})}if(o.notLessThanZero&&q(i)&&i<0)throw new N({code:I.INVALID_PARAMETER,message:V({key:L.CANNOT_LESS_THAN_ZERO,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(!E(o.min)&&q(i)&&i<o.min)throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_MIN,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(!E(o.max)&&q(i)&&i>o.max)throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_MAX,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(te(o.instanceOf)){if(!i||i._name!==o.instanceOf)throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})})}else if(ae(o.instanceOf)&&!(i instanceof o.instanceOf))throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(o.values&&!o.values.includes(i))throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_RANGE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});let{properties:s}=o;Ze(s)&&ft(i)&&Object.keys(s).forEach(a=>{Oc.call(this,{rule:s[a],value:i&&i[a],key:`${e}.${a}`,fnName:t,className:r})});let{arrayItem:n}=o;Ze(n)&&Se(i)&&i.forEach((a,c)=>{Oc.call(this,{rule:n,value:a,key:`${e}[${c}]`,fnName:t,className:r})}),ae(o.validate)&&o.validate.call(this,i,e,t,r,this)}var Fp=He(Qe(),1);var Mc=class extends Fp.EventEmitter{constructor(e,t,r="userId"){super();this.mySelfId=e;this._log=t;this.key=r;d(this,"userMap",new Map);d(this,"remotePublishedUserMap",new Map)}get hasRobotUser(){return!![...this.remotePublishedUserMap.values()].find(e=>e.isRobot)}getPublishedUser(e){return this.remotePublishedUserMap.get(e)}addUser(e){let t=e[this.key],{userId:r,tinyId:s,role:n}=e;if(this.userMap.has(t))return;let a={userId:r,tinyId:s,role:n===20?"anchor":"audience"};this.userMap.set(t,a),this.emit("1",a)}deleteUser(e,t){let r=this.userMap.get(e);if(!r)return;let s=`peer leave [${e}]`;E(t)||(s+=`:${bd[t]}`),this._log.info(s);let n=this.remotePublishedUserMap.get(e);if(n){let a=n.muteState;n.flag=0,this.emit("5",n.userId),this.deleteRemotePublishedUser(e),this.emit("6",{prevMuteState:a,muteState:n.muteState,flag:0})}this.userMap.delete(e),this.emit("2",r.userId)}setUserList(e){this.userMap.forEach(t=>{e.findIndex(r=>r[this.key]===t[this.key])<0&&this.deleteUser(t[this.key],0)}),e.forEach(t=>{!this.userMap.has(t[this.key])&&t[this.key]!==this.mySelfId&&this.addUser(t)})}addRemotePublishedUser(e){this.remotePublishedUserMap.has(e[this.key])||this.remotePublishedUserMap.set(e[this.key],e)}deleteRemotePublishedUser(e){this.remotePublishedUserMap.has(e)&&this.remotePublishedUserMap.delete(e)}setRemotePublishedUserList(e){this.remotePublishedUserMap.forEach(t=>{let r=t[this.key];if(e.findIndex(s=>s[this.key]===t[this.key])<0){this._log.info(`remote [${r}] unpublish`);let s=t.muteState;t.flag=0,this.emit("5",t.userId),this.deleteRemotePublishedUser(r),this.emit("6",{prevMuteState:s,muteState:t.muteState,flag:0})}}),e.forEach(t=>{var u;let r=t[this.key];if(r===this.mySelfId)return;let{flag:s,userId:n,tinyId:a}=t,c=$t(s,n),l=(u=this.remotePublishedUserMap.get(r))==null?void 0:u.muteState;if(l){let h=this.remotePublishedUserMap.get(r);h&&h.flag!==s&&(h.flag=s,this._log.info(`remote publish updated: ${JSON.stringify(h.muteState)}`),this.emit("6",{prevMuteState:l,muteState:c,flag:s}))}else this._log.info(`remote publish. state: ${JSON.stringify(c)}`),this.addUser({userId:n,tinyId:a,role:20}),this.emit("3",t),this.emit("6",{prevMuteState:$t(0,n),muteState:c,flag:s})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};function ju({timesInSecond:o,maxSizeInSecond:i,getSize:e}){return K((t,r)=>{let s=new WeakMap;return A.on(C.ROOM_DESTROY,({room:n})=>s.delete(n)),function(...n){let a=s.get(this);if(a||(a={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},s.set(this,a)),a.timestamp===0?a.timestamp=Date.now():Date.now()-a.timestamp>1e3&&(a.timestamp=Date.now(),a.callCountInSecond=0,a.totalSizeInSecond=0),e&&(a.totalSizeInSecond+=e(...n)),a.timestamp!==0&&Date.now()-a.timestamp<1e3&&(a.callCountInSecond>=o||a.totalSizeInSecond>i))throw new N({code:I.INVALID_OPERATION,message:V({key:L.CALL_FREQUENCY_LIMIT,data:{isTimes:a.callCountInSecond>=o,isSize:a.totalSizeInSecond>i,name:r,timesInSecond:o,maxSizeInSecond:i}})});a.callCountInSecond++,t.call(this,...n)}})}var jE="2025-08-25 16:21:27",Hp=!0,$p=function(){var o;if(Hp){Hp=!1,y.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${di}/en/index.html`),console.info(`* Changelog: ${di}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),y.info("TRTC Web SDK Version:",Ve),zt||y.debug("Build Time:",jE);let i=`UA: ${navigator.userAgent}
|
|
53
|
-
CPU core: ${navigator.hardwareConcurrency}, GPU: ${sl()}`,e=navigator.deviceMemory;e&&(i+=`, minRAM: ${e}GB`),y.info(i),y.info(`URL: ${location.href}${((o=self.frameElement)==null?void 0:o.tagName)==="IFRAME"?" in iframe":""}`),Pr().then(t=>{t&&y.info(Jt)})}};var xt={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var U={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},Lt=(b=>(b[b.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",b[b.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",b[b.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",b[b.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",b[b.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",b[b.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",b[b.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",b[b.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",b[b.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",b[b.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",b[b.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",b[b.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",b[b.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",b[b.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",b[b.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",b[b.INVALID_ROOM_ID_REQUIRED=5015]="INVALID_ROOM_ID_REQUIRED",b[b.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",b[b.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",b[b.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",b[b.INVALID_ROOM_ID_TYPE_MISMATCH=5019]="INVALID_ROOM_ID_TYPE_MISMATCH",b[b.INVALID_ROOM_ID_DUPLICATE=5020]="INVALID_ROOM_ID_DUPLICATE",b[b.INVALID_OPERATION=5100]="INVALID_OPERATION",b[b.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",b[b.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",b[b.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",b[b.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",b[b.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",b[b.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",b[b.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",b[b.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",b[b.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",b[b.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",b[b.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",b[b.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",b[b.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",b[b.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",b[b.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",b[b.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",b[b.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",b[b.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",b[b.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",b[b.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",b[b.DEVICE_ERROR=5300]="DEVICE_ERROR",b[b.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",b[b.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",b[b.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",b[b.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",b[b.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",b[b.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",b[b.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",b[b.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",b[b.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",b[b.SERVER_ERROR=5400]="SERVER_ERROR",b[b.NEED_TO_BUY=5401]="NEED_TO_BUY",b[b.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",b[b.OPERATION_FAILED=5500]="OPERATION_FAILED",b[b.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",b[b.REJOIN_FAILED=5502]="REJOIN_FAILED",b[b.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",b[b.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",b[b.VIDEO_ENCODE_FAILED=5505]="VIDEO_ENCODE_FAILED",b[b.AUDIO_ENCODE_FAILED=5506]="AUDIO_ENCODE_FAILED",b[b.VIDEO_DECODE_FAILED=5507]="VIDEO_DECODE_FAILED",b[b.AUDIO_DECODE_FAILED=5508]="AUDIO_DECODE_FAILED",b[b.OPERATION_ABORT=5998]="OPERATION_ABORT",b[b.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",b))(Lt||{});function Wp({code:o,params:i,enableDocLink:e=!1}){let t="",r,s=Lt[o];try{r=Gp[s]}catch(n){r=Gp.UNKNOWN_ERROR}return ae(r)?t=r(i):te(r)&&(t=r),i.fnName&&!t.includes(i.fnName)&&(t[t.length-1]!=="."&&(t+="."),t+=` thrown from ${i.fnName}()`),e&&(t+=" doc:"),t}var Gp=w(D({},$e),{INVALID_PARAMETER({fnName:o}){return`the parameters of the '${o}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s="";return Array.isArray(i.type)?s=i.type.join("|"):s=i.type,`'${r}' must be type of ${s} when calling ${e}(), received type: ${ye(t)}.`},INVALID_PARAMETER_EMPTY({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${s} when calling ${e}(), received type: ${ye(t)}.`},INVALID_PARAMETER_RANGE({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:o,rule:i,fnName:e}){return`'${o||i.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:o,rule:i,value:e}){return`the min value of ${o||i.name} is ${i.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:o,rule:i,value:e}){return`the max value of ${o||i.name} is ${i.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:o,fnName:i}){return`'${o}' is not found in the document object when calling ${i}().`},INVALID_ELEMENT_ID_TYPE({key:o,fnName:i,type:e}){return`the element corresponding to '${o}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`},INVALID_STREAM_ID({key:o}){return`'${o}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:o}){return`'${o}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:o}){return`'${o}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:o}){return`'${o}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIRED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_ROOM_ID_TYPE_MISMATCH({key:o}){return`The type of target roomId must match the current roomId. Current room is using '${o}', but received '${o==="strRoomId"?"roomId":"strRoomId"}'.`},INVALID_ROOM_ID_DUPLICATE({key:o}){return`the target '${o}' must not be the same as the current '${o}'.`},INVALID_STREAM_TYPE:({fnName:o})=>`'streamType' is required when 'userId' is not '*', calling ${o}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:o}){return`the API '${o}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:o}){return`cannot ${o} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:o,value:i}){return`cannot ${o} because remote user(userId: ${i.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:o,value:i}){return`cannot ${o} because remote user(userId: ${i.userId}) does not publishing ${i.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:o}){return`you are already ${o}(), cannot repeated call '${o}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:o}){return`cannot call '${o}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:o}){return`cannot call '${o}' because the microphone or screen share is not turned on.`},INVALID_BUFFER_EMPTY:({key:o})=>`the buffer size of paramerter '${o}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:o})=>`you need to call ${o}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:o}){return`the current browser does not support the capability of the function '${o}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:o}){return`cannot call ${o} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:o,error:i}){return`'${o}' got device exception${i?`, error: ${i.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:o,deviceType:i=io(o),error:e}){return`NotFoundError, no ${i} detected, please check your device and the configuration on '${o}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:o,deviceType:i=io(o),error:e}){return`NotAllowedError, you have disabled ${i} access, please allow the current application to use the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:o,deviceType:i=io(o),error:e}){return`NotReadableError, the ${i} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:o,deviceType:i=io(o),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:o,deviceType:i=io(o),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:o,deviceType:i=io(o),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${i}, and it is recommended to turn on the ${i} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:o,deviceType:i=io(o),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:o}){return`camera recover capture failed ${(o==null?void 0:o.name)||""}: ${(o==null?void 0:o.originMessage)||(o==null?void 0:o.message)}`},MICROPHONE_RECOVER_FAILED({error:o}){return`microphone recover capture failed ${(o==null?void 0:o.name)||""}: ${(o==null?void 0:o.originMessage)||(o==null?void 0:o.message)}`},OPERATION_FAILED({fnName:o,error:i}){return`'${o}' failed, reason: ${i==null?void 0:i.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:o}){return`an error was caught on trtc.on('${o}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:o,error:i}){return`video context error ${o} ${(i==null?void 0:i.name)||""} ${(i==null?void 0:i.message)||""}`},SERVER_ERROR({fnName:o,error:i}){return`'${o}' got server error: ${i==null?void 0:i.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:o,url:i}){return`You need to buy packages for ${o}. Refer to: ${i}`},ACCOUNT_NO_MONEY:({fnParams:o})=>`your TRTC account run out of credit, please recharge.${o.sdkAppId?` SDKAppId: ${o.sdkAppId}`:""}`,OPERATION_ABORT({fnName:o}){return`'${o}' abort`},UNKNOWN_ERROR({fnName:o,error:i}){return`'${o}' throw unknown exception${i?`, error: ${i.toString()}.`:"."}`}});function io(o){if(!o)return"camera";let i=o.toLowerCase();return i.includes("screen")?"screen share":i.includes("audio")?"microphone":"camera"}var Xu=class o extends Error{constructor({code:e,extraCode:t,message:r="",messageParams:s,fnName:n="",originError:a,data:c}){var u;let l;r?l=r:l=Wp({code:e===U.SERVER_ERROR?e:t||e,params:D({fnName:n,error:a},s)});super(l);d(this,"name","RtcError");d(this,"code");d(this,"extraCode");d(this,"functionName");d(this,"message");d(this,"data");d(this,"handler");d(this,"originError");this.name=Lt[e],this.code=e,this.extraCode=t,this.functionName=n,this.originError=a,this.message=l,this.data=c,this.extraCode===5302&&((u=this.originError)!=null&&u.message.includes("system"))&&(this.handler=()=>{let h={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},m={startLocalVideo:"webcam",startLocalAudio:"microphone"},g=document.createElement("a");Lr?g.href=`ms-settings:privacy-${m[this.functionName]}`:Xt&&(g.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${h[this.functionName]}`),g.href.length>0&&g.click()})}static convertFrom(e,t,r){let s=e;if(e instanceof N){let{stack:n}=e,a={code:U.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case I.INVALID_PARAMETER:a.code=U.INVALID_PARAMETER,a.message=e.message;break;case I.INVALID_OPERATION:a.code=U.INVALID_OPERATION;break;case I.NOT_SUPPORTED:case I.NOT_SUPPORTED_H264:a.code=U.ENV_NOT_SUPPORTED,e.getCode()===I.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes($e.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case I.JOIN_ROOM_FAILED:a.messageParams={fnParams:r};case I.SERVER_TIMEOUT:case I.SWITCH_ROLE_FAILED:case I.SWITCH_ROOM_FAILED:a.code=U.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case I.API_CALL_ABORTED:a.code=U.OPERATION_ABORT;break;case I.DEVICE_NOT_FOUND:case I.DEVICE_AUTO_RECOVER_FAILED:case I.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=XE(e.name));break;case I.VIDEO_ENCODE_FAILED:a.extraCode=5505;case I.AUDIO_ENCODE_FAILED:a.extraCode=5506,a.code=U.OPERATION_FAILED;break;case I.UNKNOWN:break;default:a.code=U.OPERATION_FAILED}s=new o(a),n&&(s.stack+=n.substr(n.indexOf(`
|
|
54
|
-
`)))}else{if(e instanceof o)return e;s=new o({code:U.UNKNOWN_ERROR,fnName:t,originError:e})}return s}};function XE(o){let i;switch(o){case"NotFoundError":i=5301;break;case"NotAllowedError":i=5302;break;case"NotReadableError":i=5303;break;case"OverconstrainedError":i=5304;break;case"InvalidStateError":i=5305;break;case"SecurityError":i=5306;break;case"AbortError":i=5307;break;default:i=5300}return i}var x=Xu;function bi(o){return o==="sub"?"auxiliary":o==="auxiliary"?"sub":"main"}function Nn(o){return o===xt.QOS_PREFERENCE_CLEAR?"detail":o===xt.QOS_PREFERENCE_SMOOTH?"motion":""}function cs(o,i){let e=i?Td:ar;return Jd(o)?D(D({},e),o):Ut[o]?Ut[o]:e}var Jp={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{type:["string","object","boolean"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},qp={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},ds={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(o,i,e){if(te(o)&&!document.getElementById(o))throw new x({code:U.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:i}})}},jp={name:"userId",required:!0,type:"string"},Xp={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[xt.AUDIO_PROFILE_STANDARD,xt.AUDIO_PROFILE_STANDARD_STEREO,xt.AUDIO_PROFILE_HIGH,xt.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function ls(o,i){if(!o)throw new x({code:U.INVALID_OPERATION,extraCode:5101,fnName:i})}function zp(o,i,e){if(!o)throw new x({code:U.INVALID_OPERATION,extraCode:5102,fnName:i,messageParams:{value:e}})}function Qp(o,i,e){if(!(/^[1-9]\d*$/.test(String(o))&&o<4294967295))throw new x({code:U.INVALID_PARAMETER,extraCode:5013,fnName:i,messageParams:{key:e}})}function Yp(o,i,e){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(o))throw new x({code:U.INVALID_PARAMETER,extraCode:5012,fnName:i,messageParams:{key:e}})}var Aw={type:"number",notLessThanZero:!0},zE=(o,i)=>o.width*o.height>=i.width*i.height&&o.frameRate>=i.frameRate&&o.bitrate>=i.bitrate;function Zp(o){var t;if(!((t=o==null?void 0:o.option)!=null&&t.small))return;if(!qa()){y.warn("small stream is not supported"),delete o.option.small;return}let i=cs(o.option.profile),e=cs(o.option.small,!0);if(!zE(i,e)){y.warn(`small stream profile must be less than big stream profile. Big: ${JSON.stringify(i)}, Small: ${JSON.stringify(e)}`),delete o.option.small;return}}var QE={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(o,i,e){if(this._room.isJoined)throw new x({code:U.INVALID_OPERATION,extraCode:5104,fnName:e});if(o.roomId){if(te(o.roomId))throw new x({code:U.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:i}});Qp(o.roomId,e,i)}else if(o.strRoomId)Yp(o.strRoomId,e,i);else throw new x({code:U.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:ds,mute:{type:["boolean","string"]},publish:{type:"boolean"},capture:{required:!1,type:"boolean"},option:Jp},validate(o){var i,e;if(!((i=o==null?void 0:o.option)!=null&&i.videoTrack)&&Ji())throw new x({code:U.ENV_NOT_SUPPORTED,extraCode:5201});(e=o==null?void 0:o.option)!=null&&e.small&&Zp(o)}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:w(D({},ds),{required:!1}),publish:{type:"boolean"},capture:{required:!1,type:"boolean"},mute:{type:["boolean","string"]},option:Jp},validate(o){var i;(i=o==null?void 0:o.option)!=null&&i.small&&Zp(o)}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:Xp},validate(o){var i;if(!((i=o==null?void 0:o.option)!=null&&i.audioTrack)&&Ji())throw new x({code:U.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:Xp}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:ds,publish:{type:"boolean"},option:qp},validate(o,i,e,t,r){var s;if(!((s=o==null?void 0:o.option)!=null&&s.videoTrack)){if(Ji())throw new x({code:U.ENV_NOT_SUPPORTED,extraCode:5201});if(!en())throw new x({code:U.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:ds,publish:{type:"boolean"},option:qp}},muteRemoteAudio:[jp,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[jp,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:ds,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(o,i,e){ls(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(o.userId);if(zp(!!t,e,o),t&&(o.streamType==="main"&&!t.muteState.videoAvailable||o.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new x({code:U.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:o}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:w(D({},ds),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(o,i,e){ls(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(o.userId);if(zp(!!t,e,o),t&&(o.streamType==="main"&&!t.muteState.videoAvailable||o.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new x({code:U.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:o}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(o,i,e){if(o.userId!=="*"&&E(o.streamType))throw new x({code:U.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(o,i,e){ls(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(o,i,e,t){if(!on)throw new x({code:U.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new x({code:U.INVALID_OPERATION,fnName:e,extraCode:5108});if(o.byteLength>1e3)throw new x({code:U.INVALID_PARAMETER,extraCode:5018,fnName:e});if(o.byteLength===0)throw new x({code:U.INVALID_PARAMETER,extraCode:5017,messageParams:{key:i},fnName:e});ls(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(o,i,e){if(!o&&!this._room.isMainStreamPublished||o&&!this._room.isAuxStreamPublished)throw new x({code:U.INVALID_OPERATION,extraCode:5109,messageParams:{key:i},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(o,i,e,t){if(o.byteLength>1e3)throw new x({code:U.INVALID_PARAMETER,extraCode:5018,fnName:e});if(o.byteLength===0)throw new x({code:U.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:i}})}}},validate(o,i,e){if(ls(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new x({code:U.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:i}})}},switchRoom:{name:"switchRoomConfig",type:"object",required:!0,validate(o,i,e){if(ls(this._room.isJoined,e),this._room.useStringRoomId&&o.strRoomId===this._room.roomId||!this._room.useStringRoomId&&o.roomId===Number(this._room.roomId))throw new x({code:U.INVALID_PARAMETER,extraCode:5020,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(o.roomId&&this._room.useStringRoomId||!o.roomId&&o.strRoomId&&!this._room.useStringRoomId)throw new x({code:U.INVALID_PARAMETER,extraCode:5019,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(o.roomId)Qp(o.roomId,e,i);else if(o.strRoomId)Yp(o.strRoomId,e,i);else throw new x({code:U.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{roomId:{type:"number"},strRoomId:{type:"string"},privateMapKey:{type:"string"},userSig:{type:"string",required:!0},autoSubscribeCount:{type:"number",min:0,max:50}}}},Fe={TRTC:QE};var tt=class extends Error{};function YE(o,i){let e=Dr(o);for(let t=0;t<i.length;t++)Gt(e[t],i[t]);return e}function ZE(o){this._resolve=Promise.resolve(o)}function KE(o){this._reject=Promise.reject(o)}var Sr=class Sr{constructor(i,e){this.instance=i;this.group=e;d(this,"started",!1);d(this,"ops",[]);d(this,"startSame",()=>!0);d(this,"mergeUpdate",YE);let t=Sr.instances.get(i);t?t.set(e,this):Sr.instances.set(i,new Map([[e,this]]))}static get(i,e){if(!e)return;let t=Sr.instances.get(i);return t&&t.get(e)||new Sr(i,e)}static gets(i,e){let t=Sr.instances.get(i),r=[];return t&&t.forEach((s,n)=>{e.test(n)&&r.push(s)}),r}action(i,e,t){let r=a=>{var c;return i===0?this.started=!0:i===3&&(this.started=!1),this.ops.shift(),(c=this.currentOp)==null||c.action(),a},s=a=>{var c,l;throw this.ops.shift(),i===0&&((c=this.currentOp)==null?void 0:c.type)===2&&this.ops.shift().reject(new tt("start failed")),(l=this.currentOp)==null||l.action(),a},n={type:i,action:()=>e(...n.args).then(r,s),args:t,resolve:ZE,reject:KE};try{switch(this.state){case 1:if(i===0)throw new tt("already started");break;case 4:if(i===2)throw new tt("not started");break;default:return this.cacheOp(n)}}catch(a){return Promise.reject(a)}return this.ops.push(n),n.promise=e(...n.args).then(r,s)}cacheOp(i){if(this.ops.length===1)switch(this.state){case 0:case 2:if(i.type===0)throw new tt("already start");break;case 3:switch(i.type){case 2:throw new tt("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new tt("unknown state")}else switch(i.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new tt("keep stop");if(this.ops.slice(1).forEach(r=>r.reject(t)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,i.args),this.lastOp.promise;case 3:throw new tt("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new tt("start not allowed after update");case 0:throw new tt("duplicate start");case 3:if(this.startSame(this.currentOp.args,i.args))throw this.ops.pop().reject(new tt("keep start")),new tt("already start")}}i.promise=new Promise((t,r)=>{i._resolve?i._resolve.then(t):i.resolve=t,i._reject?i._reject.catch(r):i.reject=r});let{action:e}=i;return i.action=()=>e().then(i.resolve,i.reject),this.ops.push(i),i.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};d(Sr,"instances",new WeakMap);var Ki=Sr;var kc=new WeakMap,wc=(o,i)=>{if(i instanceof tt){let{stack:e}=i;i=new x({code:U.OPERATION_ABORT,message:`${o} abort: ${i.message}`,fnName:o}),e&&(i.stack+=e.substr(e.indexOf(`
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
} `;var ds=class extends le{constructor(e){super();l(this,"frameRate");l(this,"_canvas");l(this,"log");l(this,"hasAlpha",!1);l(this,"name");l(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,r){this._canvas&&(this._canvas.width=e,this._canvas.height=r)}createVideoTrackSource(e,r){return new fr(this,e,{logger:this.log,name:r})}createVideoTrackDestination(e){return new fn(this,e)}createVideoImageSource(e,r){return new Qa(this,r?Object.assign(r,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,r){return new Ya(this,e,r?Object.assign(r,{logger:this.log}):{logger:this.log})}createTextSource(e,r){return new gu(this,e,r?Object.assign(r,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};l(ds,"_ids",0);var US={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},gn=class gn extends ds{constructor(){super(...arguments);l(this,"defaultProgam");l(this,"defaultVShader");l(this,"defaultFShader");l(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${ds._ids++}`),this.ctx=this._canvas.getContext("webgl2",US),!this.ctx)throw new de({code:q.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,PS),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,LS),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let r="";return e&&(r=e.message,this.error=e,X.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${r}`?`: ${r}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var r;(r=this.ctx)==null||r.viewport(0,0,e,this.height),super.width=e}set height(e){var r;(r=this.ctx)==null||r.viewport(0,0,this.width,e),super.height=e}setSize(e,r){var o;(o=this.ctx)==null||o.viewport(0,0,e,r),super.setSize(e,r)}createShader(e,r){let o=this.ctx,s=o.createShader(e);return o.shaderSource(s,r),o.compileShader(s),s}createProgram(e,r){let o=this.ctx,s=o.createProgram();return o.attachShader(s,e),o.attachShader(s,r),o.linkProgram(s),o.getProgramParameter(s,o.LINK_STATUS)||this.log.error(o.getProgramInfoLog(s)),s}};l(gn,"UNAVAILABLE","unavailable"),K([Ze(le.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),X.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),X.addSuccessEvent({key:512700})}})],gn.prototype,"create",1),K([Ze("created",le.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(gn.UNAVAILABLE,e),this.removeAllListeners()}})],gn.prototype,"destroy",1);var St=gn,Nt=class extends ds{constructor(){super(...arguments);l(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${ds._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new de({code:q.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(e){let r="";e&&(r=e.message,this.error=e,X.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${r?`: ${r}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),X.addSuccessEvent({key:512703})}};K([Ze(le.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),X.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),X.addSuccessEvent({key:512701})}})],Nt.prototype,"create",1),K([Ze("created",le.INIT,{ignoreError:!0,sync:!0})],Nt.prototype,"destroy",1);function VS(i,t,e,r,o,s=!1){s&&([e,r]=[r,e]);let n={sWidth:i,sHeight:t,dWidth:e,dHeight:r,sx:0,sy:0,dx:0,dy:0};if(i===0||t===0)return n;switch(o){case void 0:case"fill":break;case"contain":{let a=Math.min(e/i,r/t);n.dWidth=i*a,n.dHeight=t*a,n.dx=(e-n.dWidth)/2,n.dy=(r-n.dHeight)/2;break}case"cover":{let a=Math.max(e/i,r/t),u=e/a,m=r/a;n.sx=(i-u)/2,n.sy=(t-m)/2,n.sWidth=u,n.sHeight=m;break}}return n}var Gp=class{constructor(t,e){this.node=t;this.layout=e;l(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get fillMode(){return this.layout.fillMode}get rotation(){return this.layout.rotation}get hidden(){return!!this.layout.hidden}},En=class extends Ht{constructor(e,r){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:r});l(this,"inputs",[]);l(this,"backgroundColor","black")}addInput(e,r){let o=0,s=this.inputs.length;for(;o<s;){let a=Math.floor((o+s)/2);if(this.inputs[a].layout.zIndex<r.zIndex)o=a+1;else if(this.inputs[a].layout.zIndex>r.zIndex)s=a;else throw new Error(`input already exists at zIndex ${r.zIndex}`)}let n=new Gp(e,r);this.inputs.splice(o,0,n)}changeInputLayout(e,r){let o=this.inputs.findIndex(C=>C.node===e);if(o<0)return;let{x:s,y:n,width:a,height:u,zIndex:m,fillMode:h,rotation:f,hidden:T}=r;if(!O(m)&&this.inputs.some(C=>C.layout.zIndex===m&&C.node!==e))throw new Error(`input already exists at zIndex ${r.zIndex}`);let A=this.inputs[o];O(s)||(A.layout.x=s),O(n)||(A.layout.y=n),O(a)||(A.layout.width=a),O(u)||(A.layout.height=u),O(f)||(A.layout.rotation=f),O(T)||(A.layout.hidden=T),h&&(A.layout.fillMode=h),!O(m)&&m!==A.layout.zIndex&&(A.layout.zIndex=m,this.inputs.sort((C,N)=>C.layout.zIndex-N.layout.zIndex))}hasInput(e){return this.inputs.some(r=>r.node===e)}hasNoInput(){return this.inputs.length===0}resize(e,r){if(!this.matchInputSize){super.resize(e,r);return}let o=this.inputs.reduce((s,n)=>n?Object.assign(s,{width:Math.max(s.width,n.right),height:Math.max(s.height,n.bottom)}):s,{width:0,height:0});super.resize(o.width,o.height),this.context instanceof St&&this.inputs.forEach(s=>{if(s){let n=this.layout2texCoords(s);s.positionBuffer?this.changeBufferData(s.positionBuffer,n):s.positionBuffer=this.createBuffer(n)}})}connect(e,...r){return super.connect(e,...r),this.drawBackGround2d(this.backgroundColor),this.matchInputSize&&this.resize(0,0),e}removeInput(e){this.inputs=this.inputs.filter(r=>r.node!==e),this.inputs.length===0&&this.drawBackGround2d(this.backgroundColor)}render(e){let r=this.context.ctx;if(r.clearColor(0,0,0,0),this.inputs.reduce((s,n)=>n.node.requestFrame(e)||s,!1)&&r){this.useProgram(),r.enable(r.BLEND),r.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let s=0;s<this.inputs.length;s++){let n=this.inputs[s];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(this.inputs.forEach(r=>r.node.requestFrame(e)),this.ctx2d){this.drawBackGround2d(this.backgroundColor);for(let r=0;r<this.inputs.length;r++){let o=this.inputs[r];if(o.hidden)continue;let s=VS(o.node.width,o.node.height,o.width,o.height,o.fillMode,or(o.rotation));this.draw2d(o.node.image,o.x+s.dx,o.y+s.dy,s.dWidth,s.dHeight,s.sx,s.sy,s.sWidth,s.sHeight)}return!0}return!1}debugLayout(e,r,o,s,n=!1){this.ctx2d&&(n&&([o,s]=[s,o]),this.ctx2d.save(),this.ctx2d.strokeStyle="red",this.ctx2d.lineWidth=2,this.ctx2d.strokeRect(e,r,o,s),this.ctx2d.restore())}getInfo(){let{totalFrames:e,x:r,y:o,width:s,height:n,name:a}=this,u=Date.now(),m=(e-this.lastInfo.totalFrames)/((u-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:u,fps:m,name:a},j({parent:this.inputs.filter(h=>h).map(h=>h.node.getInfo())},this.lastInfo)}removeAllInputs(){this.inputs.forEach(e=>{var r;if(e.node.disconnect(),e.positionBuffer&&this.context instanceof St)try{(r=this.context.ctx)==null||r.deleteBuffer(e.positionBuffer)}catch(o){}})}close(){super.close(),this.removeAllInputs()}};var FS=[1,0,0,0,1,1,0,1],gr=class extends Ht{constructor(e,r,o,s){super(e,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"transform",logger:r});l(this,"mirror",!1);l(this,"rotation",0);if(o&&(this.mirror=o),s&&(this.rotation=s),e instanceof St)try{this.setTexBuffer(FS)}catch(n){e.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${n.message||n}`}))}}draw2d(e,r,o,s,n){if(this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height),this.ctx2d.save(),this.mirror&&(this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0)),this.rotation===90?(this.ctx2d.translate(s,0),this.ctx2d.rotate(Math.PI/2),this.ctx2d.scale(n/s,s/n)):this.rotation===180?(this.ctx2d.translate(this.width,this.height),this.ctx2d.rotate(Math.PI)):this.rotation===270&&(this.ctx2d.translate(0,n),this.ctx2d.rotate(3*Math.PI/2),this.ctx2d.scale(n/s,s/n));let a=super.draw2d(e,r,o,s,n);return this.ctx2d.restore(),a}return!1}render(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}resize(e,r){or(this.rotation)&&([e,r]=[r,e]),super.resize(e,r)}};var us=class extends Ur{constructor(e,r=4){super(r,qt);l(this,"inputLocalVideoTracks",new Map);l(this,"inputLocalScreenTracks",new Map);l(this,"cameraNodeMap",new Map);l(this,"screenNodeMap",new Map);l(this,"textNodeMap",new Map);l(this,"imageNodeMap",new Map);l(this,"videoNodeMap",new Map);l(this,"endedIds",new Set);l(this,"videoContext");l(this,"mixNode");l(this,"destination");l(this,"manager");l(this,"stat");l(this,"_checkId",0);l(this,"autoSetFps",!0);this.manager=e,this.log.id+="mix",this.create2dVideoContext(),this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.destination.on("render",o=>{this.emit("render",o)}),this.mixNode=new En(this.videoContext,this.log),this.mixNode.matchInputSize=!1}listenDeviceChange(){throw new Error("Method not implemented.")}enablePrintDetail(e=2e3){this._checkId=ft.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}create2dVideoContext(){this.videoContext?this.videoContext.destroy():this.videoContext=new Nt({frameRate:15,logger:this.log,name:"mix-ctx"}),this.videoContext.create({alpha:!1})}setFps(e){this.autoSetFps=!1,this.videoContext.frameRate=e;for(let r of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])r.shouldUpdate=!1;setTimeout(()=>{var r;return(r=this.destination)==null?void 0:r.start(this.videoContext.frameRate)},500)}setFpsAuto(){var s;if(!this.autoSetFps)return;for(let n of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])n.shouldUpdate=!1;let e=null,r=0,o=!0;for(let[n,a]of this.inputLocalVideoTracks)if(a.profile.frameRate>r){if(this.endedIds.has(n)){let u=this.cameraNodeMap.get(n);u&&u.image.cancelVideoFrameCallback(u.videoCallbackId);continue}r=a.profile.frameRate,e=n}for(let[n,a]of this.inputLocalScreenTracks)if(a.profile.frameRate>r){if(this.endedIds.has(n)){let u=this.screenNodeMap.get(n);u&&u.image.cancelVideoFrameCallback(u.videoCallbackId);continue}r=a.profile.frameRate,e=n,o=!1}if(e!==null){let n=o?this.cameraNodeMap.get(e):this.screenNodeMap.get(e);n&&(n.shouldUpdate=!0,n.tryVideoFrameCallback()),this.log.info("set mix fps: ",r)}else(s=this.destination)==null||s.start(this.videoContext.frameRate),this.log.info("fallback to timer, fps: ",this.videoContext.frameRate)}setMixBackground(e){this.mixNode&&(this.mixNode.backgroundColor=e)}resizeMixCanvas(e,r){var o;(o=this.mixNode)==null||o.resize(e,r)}startMix(){return y(this,null,function*(){var e;if(!this.mixNode||!this.destination)throw new Error("can't mix without necessary conditions");this.mixNode.disconnect(),this.mixNode.connect(this.destination),mr&&this.player.setCanvas(this.videoContext._canvas),this.setOutputMediaStreamTrack(this.destination.videoTrack),(e=this.manager)==null||e.changeInput(this)})}addCameraSource(e,r,o){if(this.inputLocalVideoTracks.has(e)||this.cameraNodeMap.has(e))throw new Error(`There is already a cameraSource with the same ID: ${e}`);let{mediaTrack:s}=r;if(!s)throw new Error("no mediaTrack, add cameraSource failed");r.recaptureMode=1,bt(this,dt).add("videoInputRemoved",a=>{a.deviceId===r.deviceId&&(this.endedIds.add(e),this.setFpsAuto())}),r.on("output-media-track-changed",()=>{this.endedIds.delete(e),this.updateCameraSource(e,o,r.mediaTrack)});let n;Mt===16&&s instanceof CanvasCaptureMediaStreamTrack?n=this.videoContext.createVideoImageSource(s.canvas,{name:"cameraCanvasSource",logger:this.log}):n=this.videoContext.createVideoTrackSource(s,"cameraNodeSource"),n.resize(r.settings.width,r.settings.height),n.shouldUpdate=!1,this._connectMix(n,o,"cover"),this.inputLocalVideoTracks.set(e,r),this.cameraNodeMap.set(e,n),this.setFpsAuto()}addScreenSource(e,r,o){if(this.inputLocalScreenTracks.has(e)||this.screenNodeMap.has(e))throw new Error(`There is already a screenSource with the same ID: ${e}`);let{mediaTrack:s}=r;if(!s)throw new Error("no mediaTrack, add cameraSource failed");let n=this.videoContext.createVideoTrackSource(s,"screenNodeSource");n.resize(r.settings.width,r.settings.height),n.shouldUpdate=!1,this._connectMix(n,o),this.inputLocalScreenTracks.set(e,r),this.screenNodeMap.set(e,n),this.setFpsAuto()}addTextSource(e){let{id:r,content:o="",font:s,color:n,layout:a}=e;if(this.textNodeMap.has(r))throw new Error(`There is already a textSource with the same ID: ${r}`);let u=this.videoContext.createTextSource({content:o,font:s,color:n});u.resize(a.width,a.height),this._connectMix(u,a),this.textNodeMap.set(r,u)}addImageSource(e,r,o){if(this.imageNodeMap.has(e))throw new Error(`There is already a imageSource with the same ID: ${e}`);let s=this.videoContext.createVideoImageSource(r,{autoResize:!1,logger:this.log});s.resize(r.width,r.height),this._connectMix(s,o),this.imageNodeMap.set(e,s)}addVideoSource(e,r,o){if(this.videoNodeMap.has(e))throw new Error(`There is already a videoSource with the same ID: ${e}`);let s=this.videoContext.createVideoImageSource(r,{autoResize:!1,logger:this.log});s.resize(r.videoWidth,r.videoHeight),s.shouldUpdate=!1,this._connectMix(s,o),this.videoNodeMap.set(e,s)}updateCameraSource(e,r,o=null,s){let n=this.cameraNodeMap.get(e);if(n){if(o){if(Mt===16&&o instanceof CanvasCaptureMediaStreamTrack)if(n instanceof fr){let m=n.output;n.close(),n=this.videoContext.createVideoImageSource(o.canvas,{name:"cameraCanvasSource",logger:this.log}),n.connect(m),this.cameraNodeMap.set(e,n)}else n.image=o.canvas;else if(n instanceof fr)n.replaceTrack(o);else{let m=n.output;n.close(),n=this.videoContext.createVideoTrackSource(o,"cameraNodeSource"),n.connect(m),this.cameraNodeMap.set(e,n)}let{width:a,height:u}=o.getSettings();a&&u&&n.resize(a,u)}s&&n.resize(s.width,s.height),(s||o)&&this.setFpsAuto(),this._changeMixLayout(n,r)}}updateScreenSource(e,r){let o=this.screenNodeMap.get(e);o&&this._changeMixLayout(o,r)}updateTextSource(e){let{id:r,content:o,font:s,color:n,layout:a}=e,u=this.textNodeMap.get(r);u&&(O(o)||(u.content=o),O(s)||(u.font=s),O(n)||(u.color=n),u.resize(a.width,a.height),this._changeMixLayout(u,a))}updateImageSource(e,r,o){let s=this.imageNodeMap.get(e);s&&(o&&(s.image=o,s.resize(o.width,o.height)),this._changeMixLayout(s,r))}updateVideoSource(e,r,o){let s=this.videoNodeMap.get(e);if(s){if(o){let n=s.image;n instanceof HTMLVideoElement&&this.stopVideoElement(n),s.image=o,s.resize(o.videoWidth,o.videoHeight)}this._changeMixLayout(s,r)}}_connectMix(e,r,o="contain"){if(!this.mixNode)return;let{mirror:s,rotation:n}=r;e.disconnect();let a=new gr(this.videoContext,this.log,s,n);a=e.connect(a),r.fillMode||(r.fillMode=o),a.connect(this.mixNode,r)}_changeMixLayout(e,r){if(!this.mixNode)return;let{mirror:o,rotation:s}=r,n=e.output||e;n instanceof gr&&(O(o)||(n.mirror=o),O(s)||(n.rotation=s),n.resize(e.width,e.height)),this.mixNode.changeInputLayout(n,r)}removeCameraSource(e){let r=this.inputLocalVideoTracks.get(e);if(!r)return;r.close(),this.inputLocalVideoTracks.delete(e);let o=this.cameraNodeMap.get(e);o&&(o.output instanceof gr&&o.output.close(),o.close(),this.cameraNodeMap.delete(e)),this.checkAfterRemove(!0)}removeScreenSource(e){let r=this.inputLocalScreenTracks.get(e);if(!r)return;r.close(),this.inputLocalScreenTracks.delete(e);let o=this.screenNodeMap.get(e);o&&(o.output instanceof gr&&o.output.close(),o.close(),this.screenNodeMap.delete(e)),this.checkAfterRemove(!0)}removeTextSource(e){let r=this.textNodeMap.get(e);r&&(r.output instanceof gr&&r.output.close(),r.close(),this.textNodeMap.delete(e)),this.checkAfterRemove()}removeImageSource(e){let r=this.imageNodeMap.get(e);r&&(r.output instanceof gr&&r.output.close(),r.close(),this.imageNodeMap.delete(e)),this.checkAfterRemove()}removeVideoSource(e){let r=this.videoNodeMap.get(e);r&&(r.output instanceof gr&&r.output.close(),r.image instanceof HTMLVideoElement&&this.stopVideoElement(r.image),r.close(),this.videoNodeMap.delete(e)),this.checkAfterRemove()}checkAfterRemove(e=!1){e&&this.setFpsAuto()}stopVideoElement(e){e.pause(),e.src="",e.srcObject=null,e.remove()}close(){var e;super.close(),ft.clearTask(this._checkId),(e=this.videoContext)==null||e.destroy(),delete this.mixNode,delete this.destination;for(let r of[...this.inputLocalVideoTracks.values(),...this.inputLocalScreenTracks.values()])r.close();this.inputLocalVideoTracks.clear(),this.inputLocalScreenTracks.clear(),this.cameraNodeMap.clear(),this.screenNodeMap.clear(),this.textNodeMap.clear(),this.imageNodeMap.clear(),ct(this);for(let r of this.videoNodeMap.values())r.image instanceof HTMLVideoElement&&this.stopVideoElement(r.image);this.videoNodeMap.clear(),this.log.info("localMixVideoTrack close, stop mix")}};var Eu=Ta();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:Eu,exposeOrigin:!0,permittedOrigins:["*"]})}catch(i){}var $S=function(i){return y(this,null,function*(){let t=null,e=WS(i);$.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let r=yield navigator.mediaDevices.getDisplayMedia(e);i.systemAudio&&r.getAudioTracks().length===0&&(Ys&&Qr<74||_t||$t)&&$.warn("Your browser not support capture system audio");let o=r.getVideoTracks()[0];if(o){if(i.frameRate)try{yield o.applyConstraints({frameRate:{min:i.frameRate,ideal:i.frameRate},width:i.width,height:i.height})}catch(s){$.warn(`screen applyConstraints failed: ${s}`)}i.captureElement&&(yield BS(o,i.captureElement))}if(i.audio){let s=HS(i);$.info(`getUserMedia with constraints: ${JSON.stringify(s)}`),t=yield navigator.mediaDevices.getUserMedia(s),r.addTrack(t.getAudioTracks()[0])}return r})};function BS(i,t){return y(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&We(i.cropTo))try{if(!(((e=i.getCaptureHandle())==null?void 0:e.handle)===Eu))return;let o=yield CropTarget.fromElement(t);yield i.cropTo(o)}catch(r){$.warn(`cropTo target failed ${r}`)}})}function HS(i){let t={echoCancellation:i.echoCancellation,autoGainControl:i.autoGainControl,noiseSuppression:i.noiseSuppression,sampleRate:i.sampleRate,channelCount:i.channelCount};return O(i.microphoneId)||(t.deviceId=i.microphoneId),{audio:t,video:!1}}function WS(i){let t={preferCurrentTab:i.preferDisplaySurface==="current-tab"||!!i.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:_t?{max:i.width}:{ideal:i.width,max:i.width},height:_t?{max:i.height}:{ideal:i.height,max:i.height},frameRate:i.frameRate,displaySurface:i.preferDisplaySurface||"monitor"};if(t.video=e,i.systemAudio){let{echoCancellation:r=!0,noiseSuppression:o=!1,autoGainControl:s=!1}=i;t.audio={echoCancellation:r,noiseSuppression:o,autoGainControl:s,sampleRate:48e3}}return t}var qg=$S;var ti=class extends ar{constructor(e){super(e,2);l(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});l(this,"objectFit","contain");l(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}get isShareCurrentTab(){var e,r;try{return Eu===((r=(e=this.mediaTrack)==null?void 0:e.getCaptureHandle())==null?void 0:r.handle)}catch(o){return}}capture(h){return y(this,arguments,function*({systemAudio:e=!1,autoGainControl:r,echoCancellation:o,noiseSuppression:s,audioTrack:n,videoTrack:a,captureElement:u,preferDisplaySurface:m}){try{let f;return a||n?(f=new MediaStream,a&&f.addTrack(a),n&&f.addTrack(n)):(f=yield qg({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:r,echoCancellation:o,noiseSuppression:s,captureElement:u,preferDisplaySurface:m}),this.sourceTrack=f.getVideoTracks()[0]),yield this.setInputMediaStreamTrack(f.getVideoTracks()[0]),f}catch(f){throw this.log.error(`getDisplayMedia error observed ${f}`),f instanceof de?f:new de({code:q.INITIALIZE_FAILED,name:f.name,message:f.message})}})}switchDevice(e){return y(this,null,function*(){throw new Error("Method not implemented.")})}};K([lo(function(e){this.setContentHint(e.contentHint||"detail")})],ti.prototype,"capture",1);var ls=class extends ei{constructor(t){super(t),this._log.id=`s-${this._log.id}`}addAudioProcessor(t,e,r,o){this.pipeline.silentNode.setNode(r),this.pipeline.mixNode.setNode(e),this.pipeline.aec.setNode(o),this.enableTrackAEC(!1)}removeAudioProcessor(t,e,r,o){this.pipeline.aec.node===o&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}};var GS='registerProcessor("dumper",class extends AudioWorkletProcessor{constructor(e){super(),this.sourceSampleRate=e.processorOptions.sourceSampleRate||48e3,this.targetSampleRate=e.processorOptions.targetSampleRate||48e3,this.port.onmessage=e=>{this.port2=e.data.port}}process(e){return(this.port2||this.port).postMessage(this.resampleAll(e,this.sourceSampleRate,this.targetSampleRate)),!0}resampleAll(r,s,a){if(s===a)return r;var o=[];for(let t=0;t<r.length;t++){o[t]=[];for(let e=0;e<r[t].length;e++)o[t][e]=this.resample(r[t][e],s,a)}return o}resample(t,e,r){if(e===r)return t;var s=Math.round(t.length*(this.targetSampleRate/this.sourceSampleRate)),a=new Float32Array(s),o=(t.length-1)/(s-1);a[0]=t[0];for(let e=1;e<s-1;e++){var l=e*o,p=Math.floor(l),h=Math.ceil(l);a[e]=t[p]+(t[h]-t[p])*(l-p)}return a[s-1]=t[t.length-1],a}});',jp;function Za(i,t=48e3,e=1,r){return y(this,null,function*(){let o=Ye("dump");jp||(jp=Mi(o,URL.createObjectURL(new Blob([GS],{type:"application/javascript"})))),yield jp;let s=o.sampleRate,n=new AudioWorkletNode(o,"dumper",{numberOfInputs:i.length,numberOfOutputs:0,processorOptions:{sourceSampleRate:s,targetSampleRate:t}});return n.channelCountMode="explicit",n.channelCount=e,r&&n.port.postMessage({port:r},[r]),i.forEach((a,u)=>a.connect(n,0,u)),new ReadableStream({start(a){n.port.onmessage=u=>{a.enqueue(u.data)}},cancel(){i.forEach(a=>a.disconnect(n)),n.port.close()}})})}var Tu=class extends Hd{constructor(e){super();this.room=e;l(this,"_localAudioTrack");l(this,"_localScreenAudioTrack");l(this,"log",$.createLogger({id:"am"}));l(this,"denoiser");l(this,"voiceChanger");l(this,"mixChangedDebounce");l(this,"audioProcessor");l(this,"encodePipeline",[]);l(this,"decodePipeline",[]);l(this,"getPCMAbortCtrlMap",new Map);l(this,"audioFrameEventConfigMap",new Map);l(this,"audioReferenceMap",new Map);l(this,"isLocalAudioNeedAudioProcess",!1);l(this,"isScreenAudioNeedAudioProcess",!1);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.installEvent()}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}get _localScreenAudioPipeline(){var e;return(e=this._localScreenAudioTrack)==null?void 0:e.pipeline}dump(e){var h,f;if(!this._localAudioTrack)return;let r=[],o=[];(h=this._localAudioPipline)!=null&&h.source.node&&(r.push(this._localAudioPipline.source.node),o.push("mic")),(f=this._localAudioPipline)!=null&&f.denoiser.node&&(r.push(this._localAudioPipline.denoiser.node),o.push("mic-processed")),this.mixWeight>1&&(r.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),o.push("mix")),this.log.info(`dump audio track ${o}, duration: ${e}`);let s=new AbortController,n=[],a=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),s.abort("timeout")},e*1e3),u=()=>{for(let T=0;T<o.length;T++){let A=URL.createObjectURL(new Blob(n[T])),C=document.createElement("a");C.href=A,C.download=`${o[T]}.pcm`,C.style.display="none",document.body.appendChild(C),C.click(),URL.revokeObjectURL(A),C.remove()}clearTimeout(a),s.abort("download")},m=Za(r).then(T=>T.pipeTo(new WritableStream({write(A){A.forEach((C,N)=>n[N]=n[N]?n[N].concat(C[0]):[C[0]])}}),s).catch(A=>u));return{then:m.then.bind(m),download:u}}getPCM(e,r){var x,te,ue;if(typeof WritableStream=="undefined"){this.log.warn("getPCM failed: browser not support WritableStream");return}let{enable:o,sampleRate:s=48e3,channelCount:n=1,port:a}=(r===""?this.audioFrameEventConfigMap.get(""):this.audioFrameEventConfigMap.get(r)||this.audioFrameEventConfigMap.get("*"))||{};if(!o)return;this.log.info(`getPCM ${r||"local"}`);let u=Math.floor(s*.04),m=new Float32Array(u),h=new Float32Array(u),f,T,A=0,C=new AbortController,N=r===""?(x=this._localAudioTrack)==null?void 0:x.mediaTrack:(ue=(te=this.room)==null?void 0:te.remotePublishedUserMap.get(r))==null?void 0:ue.remoteAudioTrack.mediaTrack;if(!N){this.log.info(`getPCM failed: ${r||"local"} has no audio track`);return}let w=Ye().createMediaStreamSource(new MediaStream([N]));return Za([w],s,n,a).then(ye=>ye.pipeTo(new WritableStream({write(Ie){Ie[0][0]&&(A+Ie[0][0].length>u?(m.set(Ie[0][0].subarray(0,u-A),A),f=Ie[0][0].subarray(u-A),Ie[0][1]&&(h.set(Ie[0][1].subarray(0,u-A),A),T=Ie[0][1].subarray(u-A)),A+=u-A):(f&&(m.set(f,A),A+=f.length,f=void 0),T&&(h.set(T,A),T=void 0),m.set(Ie[0][0],A),Ie[0][1]&&h.set(Ie[0][1],A),A+=Ie[0][0].length),A>=u&&(A=0,e({userId:r,sampleRate:s,channelCount:n,data:n===1?m:[m,h]}),m=new Float32Array(u),h=new Float32Array(u)))}}),C).catch(Ie=>this.log.warn(`stop getPCM reason:${Ie}`))),C}get hasScreenAudioTrack(){return!O(this._localScreenAudioTrack)}get hasAudioTrack(){return!O(this._localAudioTrack)}changeInput(e){if(e instanceof ls)return this._localScreenAudioTrack=e,this.isScreenAudioNeedAudioProcess&&this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((r,o)=>{e.mixAudioReference(r,o)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof ei)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),this.isLocalAudioNeedAudioProcess&&this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((r,o)=>{e.mixAudioReference(r,o)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof ki)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixAudioReference(e,r){var o;(o=this._localAudioTrack)==null||o.mixAudioReference(e,r)}unMixAudioReference(e){var r;(r=this._localAudioTrack)==null||r.unMixAudioReference(e)}setAudioReferenceVolume(e,r){var o;(o=this._localAudioTrack)==null||o.setAudioReferenceVolume(e,r)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,r;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(r=this._localScreenAudioTrack)==null?void 0:r.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof ls?delete this._localScreenAudioTrack:e instanceof ei?delete this._localAudioTrack:e instanceof ki}addDenoiser(e){var r;this.denoiser=e,(r=this._localAudioTrack)==null||r.addDenoiser(e)}addAudioProcessor(e,r,o,s){var n;this.audioProcessor=[e,r,o,s],this.isLocalAudioNeedAudioProcess&&this._localAudioTrack&&(this._localAudioTrack.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((a,u)=>{var m;(m=this._localAudioTrack)==null||m.mixAudioReference(a,u)})),this.isScreenAudioNeedAudioProcess&&this._localScreenAudioTrack&&((n=this._localScreenAudioTrack)==null||n.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((a,u)=>{var m;(m=this._localScreenAudioTrack)==null||m.mixAudioReference(a,u)}))}removeDenoiser(e){var r;return delete this.denoiser,(r=this._localAudioTrack)==null?void 0:r.removeDenoiser(e)}addVoiceChanger(e,r){var o;this.voiceChanger=[e,r],(o=this._localAudioTrack)==null||o.pipeline.voiceChanger.setNode(e,r)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}removeAudioProcessor(e,r,o,s){var n;delete this.audioProcessor,(n=this._localAudioTrack)==null||n.removeAudioProcessor(e,r,o,s)}destroy(){this.close(),this.audioReferenceMap.clear(),this.getPCMAbortCtrlMap.forEach(e=>e==null?void 0:e.abort("destroy")),this.getPCMAbortCtrlMap.clear(),this.audioFrameEventConfigMap.clear(),this.uninstallEvent()}addEncodeProcessor({processor:e,type:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}handleLocalTrackStarted({room:e,userId:r}){var s;if(e!==this.room||this.getPCMAbortCtrlMap.get(r))return;let o=this.getPCM(n=>{var a;(a=this.room)==null||a.emit("audio-frame",n)},"");this.getPCMAbortCtrlMap.set(r,o),this.getPCMAbortCtrlMap.get(r)&&((s=this._localAudioTrack)==null||s.on("input-media-track-changed",()=>{let n=this.getPCMAbortCtrlMap.get(r);n&&(n.abort("inputMediaTrackChanged"),n=this.getPCM(a=>{var u;(u=this.room)==null||u.emit("audio-frame",a)},""),this.getPCMAbortCtrlMap.set(r,n))}))}handleLocalTrackStopped({room:e,userId:r}){if(e!==this.room)return;let o=this.getPCMAbortCtrlMap.get(r);o&&(o.abort("stopLocalAudio"),this.getPCMAbortCtrlMap.delete(r))}handleRemoteTrackStarted({room:e,userId:r}){if(e===this.room&&!this.getPCMAbortCtrlMap.get(r)){let o=this.room.audioManager.getPCM(s=>{var n;(n=this.room)==null||n.emit("audio-frame",s)},r);this.getPCMAbortCtrlMap.set(r,o)}}handleRemoteTrackStopped({room:e,userId:r}){if(e!==this.room)return;let o=this.getPCMAbortCtrlMap.get(r);o&&(o.abort("stopRemoteAudio"),this.getPCMAbortCtrlMap.delete(r))}installEvent(){V.on("113",this.handleLocalTrackStarted,this),V.on("114",this.handleLocalTrackStopped,this),V.on("115",this.handleRemoteTrackStarted,this),V.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){V.off("113",this.handleLocalTrackStarted),V.off("114",this.handleLocalTrackStopped),V.off("115",this.handleRemoteTrackStarted),V.off("116",this.handleRemoteTrackStopped)}updateAudioReference({type:e,audioReference:r,refId:o,volume:s}){if(e==="add"){if(this.audioReferenceMap.get(o)||!r||(this.audioReferenceMap.set(o,r),!this.audioProcessor))return;this.mixAudioReference(r,o)}else if(e==="remove")this.audioReferenceMap.get(o)&&(this.audioReferenceMap.delete(o),this.unMixAudioReference(o));else if(e==="updateVolume"){if(!this.audioProcessor||O(s))return;this.setAudioReferenceVolume(o,s)}}};function zg(i=30,t=2){return xe((e,r)=>function(...o){return new Promise((s,n)=>{let a=setTimeout(()=>{let u=new de({code:q.API_CALL_TIMEOUT,message:`checkPendingPromise ${r}() timeout ${i}s`});$.warn(u),t===2?n(u):t===1&&s()},i*1e3);e.apply(this,o).then(s,n).finally(()=>{clearTimeout(a)})})})}var ri=class ri extends ts{constructor(e,r,o){super({userId:r.userId,sdkAppId:e.sdkAppId,mediaType:o,room:e});this.room=e;this.user=r;l(this,"tinyId");l(this,"isRemote",!0);l(this,"jitterBufferDelay",0);l(this,"availableState");l(this,"remotePublishState");l(this,"_triggerCheckDecodeSubject",Rt(Re(this,ri.STATE_SUBSCRIBE)));this.tinyId=r.tinyId,this.availableState=new le(`${r.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new le(`${r.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),be(Ga(Re(this,le.STATECHANGED),Re(this.remotePublishState,le.STATECHANGED)),po(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),Ue(u=>{this.availableState.state!==(u?le.ON:le.OFF)&&(this.availableState.state=u?le.ON:le.OFF),this.updatePlayingState(u)}));let s=be(Re(this.player,Qe.ERROR),zt(u=>u.code===MediaError.MEDIA_ERR_DECODE)),n=be(qa(5e3),zt(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived?!1:this.player.isPlaying||(this.kind===M.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),a=be(np(s,n),qe(Re(this,le.INIT)));be(this._triggerCheckDecodeSubject,zt(()=>!this.ignoreDecodeError),xi(a),Ue(u=>{this.reportDecodeResult(!1,u)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var r,o;return(((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===ri.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===le.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,r){var s,n;let o=this.kind===M.AUDIO;if(X[e?"addSuccessEvent":"addFailedEvent"]({key:o?504700:514702}),!o){let a=((s=this.room)==null?void 0:s.downlinkVideoCodec.toUpperCase())||"H264";X[e?"addSuccessEvent":"addFailedEvent"]({key:on[`DECODE_${a}_RESULT`]}),e||this.log.warn(`${(n=this.room)==null?void 0:n.downlinkVideoCodec} decode failed`)}e||(X.addEnum({key:o?504701:514703,value:zo()}),je.uploadEvent({log:`stat-decode-failed-${this.kind}-${ga()||Jo()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===M.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:r}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?le.ON:le.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};l(ri,"STATE_SUBSCRIBE","subscribe"),K([zg(5,1)],ri.prototype,"waitHasMediaTrack",1),K([Ze(le.INIT,ri.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),V.emit(F.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),Zd(521716,!1)],ri.prototype,"subscribe",1),K([Ze(ri.STATE_SUBSCRIBE,le.INIT,{sync:!0,success(){this.log.info("unsubscribed"),V.emit(F.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],ri.prototype,"unsubscribe",1);var Tn=ri;var ki=class extends Tn{constructor(e,r){super(e,r,1);l(this,"volume",0);l(this,"mediaType",1);l(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return Gd.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}decodeFrame(e){if(!this.manager)return e;let r=e;for(let o of this.manager.decodePipeline)if(o&&(r=o({frame:r,track:this}),!r))return;return r}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isRemotePublished(){return this.user.muteState.audioAvailable}};function qS(i){return[15,30,45,60].reduce((e,r)=>Math.abs(r-i)<Math.abs(e-i)?r:e)}var fo=class extends Tn{constructor(e,r,o=4){super(e,r,o);l(this,"mediaType",4);l(this,"source");l(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",s=>{this.room.emit("first-video-frame",s)})}play(e,r){return(Xe(r==null?void 0:r.canvasRender)?r.canvasRender:Mt===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,r).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new Nt({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let r=new cs(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(r),this.player.setCanvas(e._canvas),Di()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let r=this.decodeFPS,o=qS(r);if(!Le(r)||r<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${r} `);return}if(o===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${o} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${r}, closest: ${o}, current: ${e.frameRate}`),e.frameRate=o}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(a=>a.msg_user_info.str_identifier===this.userId))||{},r=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let o=e.find(a=>a.uint32_video_stream_type===r);return(o==null?void 0:o.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let r of this.manager.decodePipeline)if(r&&(e=r({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},_u=class extends fo{constructor(e,r){super(e,r,2);l(this,"mediaType",2);l(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var _n=new Map;V.on(F.JOIN_SUCCESS,({room:i})=>{st(i.userId,{eventId:32788})});V.on(F.LEAVE_START,({room:i})=>{st(i.userId,{eventId:32789})});V.on(F.LOCAL_TRACK_PUBLISHED,({track:i})=>{if(i.room){let t=32769;i.mediaType===4?t=32768:i.mediaType===2&&(t=32805),st(i.room.userId,{eventId:t})}});V.on(F.LOCAL_TRACK_UNPUBLISHED,({track:i})=>{if(i.room){let t=32771;i.mediaType===4?t=32770:i.mediaType===2&&(t=32806),st(i.room.userId,{eventId:t})}});V.on(F.TRACK_MUTED,({track:i})=>{i.room&&(i.kind===M.AUDIO?st(i.room.userId,{eventId:i.isRemote?32785:32772,remoteUserId:i.isRemote?i.userId:void 0}):st(i.room.userId,{eventId:i.isRemote?32784:32773,remoteUserId:i.isRemote?i.userId:void 0}))});V.on(F.TRACK_UNMUTED,({track:i})=>{i.room&&(i.kind===M.AUDIO?st(i.room.userId,{eventId:i.isRemote?32787:32774,remoteUserId:i.isRemote?i.userId:void 0}):st(i.room.userId,{eventId:i.isRemote?32786:32775,remoteUserId:i.isRemote?i.userId:void 0}))});V.on(F.REMOTE_TRACK_SUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&st(i.room.userId,{eventId:32777,remoteUserId:i.userId}),i.mediaType===4&&st(i.room.userId,{eventId:32776,remoteUserId:i.userId}),i.mediaType===8&&st(i.room.userId,{eventId:32803,remoteUserId:i.userId}))});V.on(F.REMOTE_TRACK_UNSUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&st(i.room.userId,{eventId:32779,remoteUserId:i.userId}),i.mediaType===4&&st(i.room.userId,{eventId:32778,remoteUserId:i.userId}),i.mediaType===8&&st(i.room.userId,{eventId:32804,remoteUserId:i.userId}))});V.on(F.SWITCH_DEVICE_SUCCESS,({track:i})=>{i.room&&st(i.room.userId,{eventId:i.kind===M.VIDEO?32780:32781})});V.on(F.LOCAL_TRACK_REPLACED,({track:i})=>{i.room&&st(i.room.userId,{eventId:i.kind===M.VIDEO?32782:32783})});V.on(F.SIGNAL_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e})=>{let r;switch(e){case"CONNECTED":t==="RECONNECTING"?r=32795:r=32791;break;case"DISCONNECTED":t==="RECONNECTING"?r=32796:r=32790;break;case"RECONNECTING":r=32794;break}r&&st(i.userId,{eventId:r})});V.on(F.PEER_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e,remoteUserId:r})=>{let o=!!r,s;switch(e){case"CONNECTED":t==="RECONNECTING"?s=o?32801:32798:s=o?32793:32792;break;case"DISCONNECTED":t==="RECONNECTING"&&(s=o?32802:32799);break;case"RECONNECTING":s=o?32800:32797;break}s&&st(i.userId,{eventId:s,remoteUserId:r})});V.on(F.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:i,userId:t,remoteUserId:e,codec:r,isHWCodec:o,prevImplementation:s,streamType:n})=>{let a=o?1:0;s||(a=o?3:2);let u={H264:0,H265:1,VP8:2}[r.toUpperCase()],m={eventId:4004,param1:a,param2:u,streamType:n||2};e&&(m.remoteUserId=e,m.eventId=4005),st(t,m),X.addEnum({key:e?514701:513701,value:a}),X.addEnum({key:e?514700:513700,value:u})});V.on(F.LOCAL_TRACK_RECAPTURE,({track:i,error:t})=>{if(i.userId){let e={eventId:2003,param1:0};i.kind===M.AUDIO?(e.streamType=1,t&&(e.param1=2)):(e.streamType=i.streamType==="auxiliary"?7:2,t&&(e.param1=8)),st(i.userId,e)}});function st(i,t){let e=pe(j({},t),{timestamp:Wn()});_n.has(i)?_n.get(i).push(e):_n.set(i,[e])}function Jg(i){if(_n.has(i)){let t=_n.get(i).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return _n.delete(i),t}return[]}function Xg(...i){return xe((t,e)=>function(...r){return zS.call(this,i,r,e,this._name),t.apply(this,r)})}function zS(i,t,e,r){try{if(ot(i))for(let o=0;o<i.length;o++)Iu.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else Iu.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}catch(o){throw $.error(o),o}}function Iu({rule:i,value:t,key:e,fnName:r,className:o}){if(O(t)){if(i.required)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_REQUIRED,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(O(i.defaultValue))return;t=i.defaultValue}if(Array.isArray(i.type)){let a=!1;for(let u=0;u<i.type.length;u++)i.type[u]===null&&t===null&&(a=!0),We(i.type[u])&&t instanceof i.type[u]&&(a=!0),De(i.type[u])&&at(t)===i.type[u].toLowerCase()&&(a=!0);if(!a)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_TYPE,data:{key:e,rule:{type:i.type.map(u=>Bo(u)?Ls(u):De(u)?u:at(u))},fnName:r,value:t},link:{className:o,fnName:r}})})}else if(!O(i.type)&&at(t)!==i.type)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_TYPE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(i.allowEmpty===!1){let a=Le(t)&&(t===0||Number.isNaN(t)),u=De(t)&&t.trim()==="";if(a||u)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_EMPTY,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})})}if(i.notLessThanZero&&Le(t)&&t<0)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.CANNOT_LESS_THAN_ZERO,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(!O(i.min)&&Le(t)&&t<i.min)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_MIN,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(!O(i.max)&&Le(t)&&t>i.max)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_MAX,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(De(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})})}else if(We(i.instanceOf)&&!(t instanceof i.instanceOf))throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(i.values&&!i.values.includes(t))throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_RANGE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});let{properties:s}=i;Ft(s)&&ir(t)&&Object.keys(s).forEach(a=>{Iu.call(this,{rule:s[a],value:t&&t[a],key:`${e}.${a}`,fnName:r,className:o})});let{arrayItem:n}=i;Ft(n)&&ot(t)&&t.forEach((a,u)=>{Iu.call(this,{rule:n,value:a,key:`${e}[${u}]`,fnName:r,className:o})}),We(i.validate)&&i.validate.call(this,t,e,r,o,this)}var JS=mi(yi(),1);var XS=Object.create,Yp=Object.defineProperty,Zg=Object.getOwnPropertyDescriptor,Kg=Object.getOwnPropertyNames,QS=Object.getPrototypeOf,YS=Object.prototype.hasOwnProperty,ZS=(i,t)=>function(){return t||(0,i[Kg(i)[0]])((t={exports:{}}).exports,t),t.exports},KS=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Kg(t))YS.call(i,o)||o===e||Yp(i,o,{get:()=>t[o],enumerable:!(r=Zg(t,o))||r.enumerable});return i},ey=(i,t,e)=>(e=i!=null?XS(QS(i)):{},KS(!t&&i&&i.__esModule?e:Yp(e,"default",{value:i,enumerable:!0}),i)),Pi=(i,t,e,r)=>{for(var o,s=r>1?void 0:r?Zg(t,e):t,n=i.length-1;n>=0;n--)(o=i[n])&&(s=(r?o(t,e,s):o(s))||s);return r&&s&&Yp(t,e,s),s},ty=ZS({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(i,t){"use strict";var e=Object.prototype.hasOwnProperty,r="~";function o(){}function s(m,h,f){this.fn=m,this.context=h,this.once=f||!1}function n(m,h,f,T,A){if(typeof f!="function")throw new TypeError("The listener must be a function");var C=new s(f,T||m,A),N=r?r+h:h;return m._events[N]?m._events[N].fn?m._events[N]=[m._events[N],C]:m._events[N].push(C):(m._events[N]=C,m._eventsCount++),m}function a(m,h){--m._eventsCount==0?m._events=new o:delete m._events[h]}function u(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),new o().__proto__||(r=!1)),u.prototype.eventNames=function(){var m,h,f=[];if(this._eventsCount===0)return f;for(h in m=this._events)e.call(m,h)&&f.push(r?h.slice(1):h);return Object.getOwnPropertySymbols?f.concat(Object.getOwnPropertySymbols(m)):f},u.prototype.listeners=function(m){var h=r?r+m:m,f=this._events[h];if(!f)return[];if(f.fn)return[f.fn];for(var T=0,A=f.length,C=new Array(A);T<A;T++)C[T]=f[T].fn;return C},u.prototype.listenerCount=function(m){var h=r?r+m:m,f=this._events[h];return f?f.fn?1:f.length:0},u.prototype.emit=function(m,h,f,T,A,C){var N=r?r+m:m;if(!this._events[N])return!1;var w,x,te=this._events[N],ue=arguments.length;if(te.fn){switch(te.once&&this.removeListener(m,te.fn,void 0,!0),ue){case 1:return te.fn.call(te.context),!0;case 2:return te.fn.call(te.context,h),!0;case 3:return te.fn.call(te.context,h,f),!0;case 4:return te.fn.call(te.context,h,f,T),!0;case 5:return te.fn.call(te.context,h,f,T,A),!0;case 6:return te.fn.call(te.context,h,f,T,A,C),!0}for(x=1,w=new Array(ue-1);x<ue;x++)w[x-1]=arguments[x];te.fn.apply(te.context,w)}else{var ye,Ie=te.length;for(x=0;x<Ie;x++)switch(te[x].once&&this.removeListener(m,te[x].fn,void 0,!0),ue){case 1:te[x].fn.call(te[x].context);break;case 2:te[x].fn.call(te[x].context,h);break;case 3:te[x].fn.call(te[x].context,h,f);break;case 4:te[x].fn.call(te[x].context,h,f,T);break;default:if(!w)for(ye=1,w=new Array(ue-1);ye<ue;ye++)w[ye-1]=arguments[ye];te[x].fn.apply(te[x].context,w)}}return!0},u.prototype.on=function(m,h,f){return n(this,m,h,f,!1)},u.prototype.once=function(m,h,f){return n(this,m,h,f,!0)},u.prototype.removeListener=function(m,h,f,T){var A=r?r+m:m;if(!this._events[A])return this;if(!h)return a(this,A),this;var C=this._events[A];if(C.fn)C.fn!==h||T&&!C.once||f&&C.context!==f||a(this,A);else{for(var N=0,w=[],x=C.length;N<x;N++)(C[N].fn!==h||T&&!C[N].once||f&&C[N].context!==f)&&w.push(C[N]);w.length?this._events[A]=w.length===1?w[0]:w:a(this,A)}return this},u.prototype.removeAllListeners=function(m){var h;return m?(h=r?r+m:m,this._events[h]&&a(this,h)):(this._events=new o,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=r,u.EventEmitter=u,t!==void 0&&(t.exports=u)}}),ry=ey(ty(),1),Qg=Symbol("instance"),Mx=Symbol("abortCtrl"),Su=Symbol("cacheResult"),qp=class{constructor(i,t,e){this.oldState=i,this.newState=t,this.action=e,this.aborted=!1}abort(i){this.aborted=!0,tc.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},yu=class extends Error{constructor(i,t,e){super(t),this.state=i,this.message=t,this.cause=e}};function iy(i){return typeof i=="object"&&i&&"then"in i}var ec=new Map;function go(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let u=ec.get(r)||[];ec.has(r)||ec.set(r,u),u.push({from:i,to:t,action:n})}let a=s.value;s.value=function(...u){let m=this;if(e.context&&(m=Jt.get(typeof e.context=="function"?e.context.call(this,...u):e.context)),m.state===t)return e.sync?m[Su]:Promise.resolve(m[Su]);m.state instanceof qp&&m.state.action==e.abortAction&&m.state.abort(m);let h=null;Array.isArray(i)?i.length==0?m.state instanceof qp&&m.state.abort(m):typeof m.state=="string"&&i.includes(m.state)||(h=new yu(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(h=new yu(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i}`));let f=w=>{if(e.fail&&e.fail.call(this,w),e.sync){if(e.ignoreError)return w;throw w}return e.ignoreError?Promise.resolve(w):Promise.reject(w)};if(h)return f(h);let T=m.state,A=new qp(T,t,n);tc.call(m,A);let C=w=>{var x;return m[Su]=w,A.aborted||(tc.call(m,t),(x=e.success)===null||x===void 0||x.call(this,m[Su])),w},N=w=>(tc.call(m,T,w),f(w));try{let w=a.apply(this,u);return iy(w)?w.then(C).catch(N):e.sync?C(w):Promise.resolve(C(w))}catch(w){return N(new yu(m._state,`${m.name} ${n} from ${i} to ${t} failed: ${w}`,w instanceof Error?w:new Error(String(w))))}}}}function oy(...i){return(t,e,r)=>{let o=r.value,s=e;r.value=function(...n){if(!i.includes(this.state.toString()))throw new yu(this.state,`${this.name} ${s} failed: current state ${this.state} not in ${i}`);return o.apply(this,n)}}}var sy=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function tc(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(Jt.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var Jt=class Er extends ry.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=Er.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[Qg];o?this.name=o.name+"-"+o.count++:r[Qg]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=ec.get(t)||[],r=new Set,o=[],s=[],n=new Set,a=Object.getPrototypeOf(t);ec.has(a)&&(a.stateDiagram.forEach(m=>r.add(m)),a.allStates.forEach(m=>n.add(m))),e.forEach(({from:m,to:h,action:f})=>{typeof m=="string"?o.push({from:m,to:h,action:f}):m.length?m.forEach(T=>{o.push({from:T,to:h,action:f})}):s.push({to:h,action:f})}),o.forEach(({from:m,to:h,action:f})=>{n.add(m),n.add(h),n.add(f+"ing"),r.add(`${m} --> ${f}ing : ${f}`),r.add(`${f}ing --> ${h} : ${f} \u{1F7E2}`),r.add(`${f}ing --> ${m} : ${f} \u{1F534}`)}),s.forEach(({to:m,action:h})=>{r.add(`${h}ing --> ${m} : ${h} \u{1F7E2}`),n.forEach(f=>{f!==m&&r.add(`${f} --> ${h}ing : ${h}`)})});let u=[...r];return Object.defineProperties(t,{stateDiagram:{value:u},allStates:{value:n}}),u}static get(t){let e;return typeof t=="string"?(e=Er.instances.get(t),e||Er.instances.set(t,e=new Er(t,void 0,Object.create(Er.prototype)))):(e=Er.instances2.get(t),e||Er.instances2.set(t,e=new Er(t.constructor.name,void 0,Object.create(Er.prototype)))),e}static getState(t){var e;return(e=Er.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){sy(Er.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){tc.call(this,t)}};Jt.STATECHANGED="stateChanged",Jt.UPDATEAFSM="updateAFSM",Jt.INIT="[*]",Jt.ON="on",Jt.OFF="off",Jt.instances=new Map,Jt.instances2=new WeakMap;var In=class extends Jt{constructor(){super(...arguments);l(this,"decoder");l(this,"config")}initialize(){return y(this,null,function*(){this.decoder=new VideoDecoder({output:t=>{this.emit("videoFrame",t)},error:t=>{this.close(),this.emit("error",t)}})})}configure(t){this.config=t,this.decoder.configure(pe(j({},t),{codec:this.getCodec(t)}))}getCodec(t){switch(t.codec){case"hevc":return"hvc1.1.6.L0.12.34.56.78.9A.BC";case"av1":return"av01.0.05M.08";case"avc":return"avc1.420028";default:return t.codec}}decode(t){this.decoder.state==="configured"&&this.decoder.decode(new EncodedVideoChunk(t))}flush(){this.decoder.flush()}reset(){this.decoder.reset()}close(){this.decoder.state!=="closed"&&this.decoder.close()}};function ny(){var i;self.onmessage=t=>{if(t.data.type==="init"){let{canvas:e,wasmScript:r,wasmBinary:o}=t.data,s=e==null?void 0:e.getContext("2d"),n=0,a=0,u={wasmBinary:o,postRun:()=>{i=new u.VideoDecoder({videoInfo(m,h){n=m,a=h,console.log("video info",m,h)},yuvData(m,h){let f=n*a,T=f>>2,A=u.HEAPU32[m>>2],C=u.HEAPU32[1+(m>>2)],N=u.HEAPU32[2+(m>>2)],w=u.HEAPU8.subarray(A,A+f),x=u.HEAPU8.subarray(C,C+T),te=u.HEAPU8.subarray(N,N+T),ue=new Uint8Array(f+T+T);ue.set(w),ue.set(x,f),ue.set(te,f+T);let ye=new VideoFrame(ue,{codedWidth:n,codedHeight:a,format:"I420",timestamp:h});e?(s==null||s.drawImage(ye,0,0,e.width,e.height),s==null||s.commit()):self.postMessage({type:"yuvData",videoFrame:ye},[ye])}}),self.postMessage({type:"ready"})}};Function("var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;return "+r)()(u)}else if(t.data.type==="decode"){let{packet:e}=t.data;i==null||i.decode(e.data,e.type=="key",e.timestamp)}else if(t.data.type==="setCodec"){let{codec:e,format:r,description:o}=t.data;i==null||i.setCodec(e,r,o!=null?o:"")}}}Pi([go([Jt.INIT,"closed"],"initialized")],In.prototype,"initialize",1),Pi([go("initialized","configured",{sync:!0})],In.prototype,"configure",1),Pi([oy("configured")],In.prototype,"decode",1),Pi([go([],Jt.INIT,{sync:!0})],In.prototype,"reset",1),Pi([go([],"closed",{ignoreError:!0,sync:!0})],In.prototype,"close",1);var Ka=class extends Jt{constructor(t,e,r=!1,o,s=!1){super();l(this,"worker");l(this,"decoder");l(this,"config");l(this,"module",{});l(this,"width",0);l(this,"height",0);this.createModule=t,this.wasmBinary=e,this.workerMode=r,this.canvas=o,this.yuvMode=s}initialize(t){return y(this,null,function*(){var r;if(this.workerMode){let o=new RegExp("\\{(.+)\\}","s").exec(ny.toString())[1];this.worker=new Worker(URL.createObjectURL(new Blob([o],{type:"text/javascript"})));let s=(r=this.canvas)==null?void 0:r.transferControlToOffscreen(),n=yield this.wasmBinary;return console.warn("worker mode",n),this.worker.postMessage({type:"init",canvas:s,wasmScript:this.createModule.toString(),wasmBinary:n},s?[s,n]:[n]),new Promise(a=>{this.worker.onmessage=u=>{if(u.data.type==="ready")delete this.wasmBinary,a(),console.warn("worker mode initialize success");else if(u.data.type==="yuvData"){let{videoFrame:m}=u.data;this.emit("videoFrame",m)}}})}let e=this.module;return this.wasmBinary&&(e.wasmBinary=yield this.wasmBinary),e.print=o=>console.log(o),e.printErr=o=>console.log(`[JS] ERROR: ${o}`),e.onAbort=()=>console.log("[JS] FATAL: WASM ABORTED"),new Promise(o=>{e.postRun=s=>{this.decoder=new this.module.VideoDecoder(this),console.log("video soft decoder initialize success"),o()},t&&Object.assign(e,t),this.createModule(e)})})}configure(t){var o,s,n;this.config=t;let e=this.config.codec.startsWith("avc")?"avc":"hevc",r=this.config.description?e=="avc"?"avcc":"hvcc":"annexb";(s=this.decoder)==null||s.setCodec(e,r,(o=this.config.description)!=null?o:""),(n=this.worker)==null||n.postMessage({type:"setCodec",codec:e,format:r,description:this.config.description})}decode(t){var e,r;(e=this.decoder)==null||e.decode(t.data,t.type=="key",t.timestamp),this.state==="configured"&&((r=this.worker)==null||r.postMessage({type:"decode",packet:t}))}flush(){}reset(){this.config=void 0,this.decoder&&this.decoder.clear()}close(){this.removeAllListeners(),this.decoder&&(this.decoder.clear(),this.decoder.delete())}videoInfo(t,e){this.width=t,this.height=e;let r={width:t,height:e};this.emit("videoCodecInfo",r)}yuvData(t,e){if(!this.module)return;let r=this.width*this.height,o=r>>2,s=this.module.HEAPU32[t>>2],n=this.module.HEAPU32[1+(t>>2)],a=this.module.HEAPU32[2+(t>>2)],u=this.module.HEAPU8.subarray(s,s+r),m=this.module.HEAPU8.subarray(n,n+o),h=this.module.HEAPU8.subarray(a,a+o);if(this.yuvMode)return void this.emit("videoFrame",{y:u,u:m,v:h,timestamp:e});let f=new Uint8Array(r+o+o);f.set(u),f.set(m,r),f.set(h,r+o),this.emit("videoFrame",new VideoFrame(f,{codedWidth:this.width,codedHeight:this.height,format:"I420",timestamp:e}))}errorInfo(t){let e={errMsg:t};this.emit("error",e)}};Pi([go([Jt.INIT,"closed"],"initialized")],Ka.prototype,"initialize",1),Pi([go("initialized","configured",{sync:!0})],Ka.prototype,"configure",1),Pi([go([],Jt.INIT,{sync:!0})],Ka.prototype,"reset",1),Pi([go([],"closed",{sync:!0})],Ka.prototype,"close",1);var ay=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((c,d)=>{e=c,r=d});var s,n,a,u=Object.assign({},o),m="./this.program",h=typeof window=="object",f=typeof importScripts=="function",T=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(h||f)&&(f?T=self.location.href:typeof document!="undefined"&&document.currentScript&&(T=document.currentScript.src),i&&(T=i),T=T.indexOf("blob:")!==0?T.substr(0,T.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=c=>{var d=new XMLHttpRequest;return d.open("GET",c,!1),d.send(null),d.responseText},f&&(a=c=>{var d=new XMLHttpRequest;return d.open("GET",c,!1),d.responseType="arraybuffer",d.send(null),new Uint8Array(d.response)}),n=(c,d,p)=>{var g=new XMLHttpRequest;g.open("GET",c,!0),g.responseType="arraybuffer",g.onload=()=>{g.status==200||g.status==0&&g.response?d(g.response):p()},g.onerror=p,g.send(null)});var A,C=o.print||console.log.bind(console),N=o.printErr||console.error.bind(console);Object.assign(o,u),u=null,o.arguments&&o.arguments,o.thisProgram&&(m=o.thisProgram),o.quit&&o.quit,o.wasmBinary&&(A=o.wasmBinary);var w,x;o.noExitRuntime,typeof WebAssembly!="object"&&$r("no native wasm support detected");var te,ue,ye,Ie,Y,Pe,Cn,Nn,Dn,wn=!1,Fr=[],Ts=[],$i=[],cr=0,ni=null,ai=null;function ie(c){cr++,o.monitorRunDependencies&&o.monitorRunDependencies(cr)}function bo(c){if(cr--,o.monitorRunDependencies&&o.monitorRunDependencies(cr),cr==0&&(ni!==null&&(clearInterval(ni),ni=null),ai)){var d=ai;ai=null,d()}}function $r(c){o.onAbort&&o.onAbort(c),N(c="Aborted("+c+")"),wn=!0,c+=". Build with -sASSERTIONS for more info.";var d=new WebAssembly.RuntimeError(c);throw r(d),d}var ci,Mn,Ee,Ke;function kt(c){return c.startsWith("data:application/octet-stream;base64,")}function J(c){if(c==ci&&A)return new Uint8Array(A);if(a)return a(c);throw"both async and sync fetching of the wasm failed"}function Br(c,d,p){return function(g){return A||!h&&!f||typeof fetch!="function"?Promise.resolve().then(()=>J(g)):fetch(g,{credentials:"same-origin"}).then(I=>{if(!I.ok)throw"failed to load wasm binary file at '"+g+"'";return I.arrayBuffer()}).catch(()=>J(g))}(c).then(g=>WebAssembly.instantiate(g,d)).then(g=>g).then(p,g=>{N("failed to asynchronously prepare wasm: "+g),$r(g)})}kt(ci="videodec.wasm")||(Mn=ci,ci=o.locateFile?o.locateFile(Mn,T):T+Mn);var Bi=c=>{for(;c.length>0;)c.shift()(o)};function Hi(c){this.excPtr=c,this.ptr=c-24,this.set_type=function(d){Pe[this.ptr+4>>2]=d},this.get_type=function(){return Pe[this.ptr+4>>2]},this.set_destructor=function(d){Pe[this.ptr+8>>2]=d},this.get_destructor=function(){return Pe[this.ptr+8>>2]},this.set_caught=function(d){d=d?1:0,te[this.ptr+12|0]=d},this.get_caught=function(){return te[this.ptr+12|0]!=0},this.set_rethrown=function(d){d=d?1:0,te[this.ptr+13|0]=d},this.get_rethrown=function(){return te[this.ptr+13|0]!=0},this.init=function(d,p){this.set_adjusted_ptr(0),this.set_type(d),this.set_destructor(p)},this.set_adjusted_ptr=function(d){Pe[this.ptr+16>>2]=d},this.get_adjusted_ptr=function(){return Pe[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Fn(this.get_type()))return Pe[this.excPtr>>2];var d=this.get_adjusted_ptr();return d!==0?d:this.excPtr}}var me={isAbs:c=>c.charAt(0)==="/",splitPath:c=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(c).slice(1),normalizeArray:(c,d)=>{for(var p=0,g=c.length-1;g>=0;g--){var I=c[g];I==="."?c.splice(g,1):I===".."?(c.splice(g,1),p++):p&&(c.splice(g,1),p--)}if(d)for(;p;p--)c.unshift("..");return c},normalize:c=>{var d=me.isAbs(c),p=c.substr(-1)==="/";return(c=me.normalizeArray(c.split("/").filter(g=>!!g),!d).join("/"))||d||(c="."),c&&p&&(c+="/"),(d?"/":"")+c},dirname:c=>{var d=me.splitPath(c),p=d[0],g=d[1];return p||g?(g&&(g=g.substr(0,g.length-1)),p+g):"."},basename:c=>{if(c==="/")return"/";var d=(c=(c=me.normalize(c)).replace(/\/$/,"")).lastIndexOf("/");return d===-1?c:c.substr(d+1)},join:function(){var c=Array.prototype.slice.call(arguments);return me.normalize(c.join("/"))},join2:(c,d)=>me.normalize(c+"/"+d)},On=c=>(On=(()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return d=>crypto.getRandomValues(d);$r("initRandomDevice")})())(c),Xt={resolve:function(){for(var c="",d=!1,p=arguments.length-1;p>=-1&&!d;p--){var g=p>=0?arguments[p]:E.cwd();if(typeof g!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!g)return"";c=g+"/"+c,d=me.isAbs(g)}return(d?"/":"")+(c=me.normalizeArray(c.split("/").filter(I=>!!I),!d).join("/"))||"."},relative:(c,d)=>{function p(L){for(var Z=0;Z<L.length&&L[Z]==="";Z++);for(var ae=L.length-1;ae>=0&&L[ae]==="";ae--);return Z>ae?[]:L.slice(Z,ae-Z+1)}c=Xt.resolve(c).substr(1),d=Xt.resolve(d).substr(1);for(var g=p(c.split("/")),I=p(d.split("/")),b=Math.min(g.length,I.length),R=b,v=0;v<b;v++)if(g[v]!==I[v]){R=v;break}var U=[];for(v=R;v<g.length;v++)U.push("..");return(U=U.concat(I.slice(R))).join("/")}},Wi=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Pt=(c,d,p)=>{for(var g=d+p,I=d;c[I]&&!(I>=g);)++I;if(I-d>16&&c.buffer&&Wi)return Wi.decode(c.subarray(d,I));for(var b="";d<I;){var R=c[d++];if(128&R){var v=63&c[d++];if((224&R)!=192){var U=63&c[d++];if((R=(240&R)==224?(15&R)<<12|v<<6|U:(7&R)<<18|v<<12|U<<6|63&c[d++])<65536)b+=String.fromCharCode(R);else{var L=R-65536;b+=String.fromCharCode(55296|L>>10,56320|1023&L)}}else b+=String.fromCharCode((31&R)<<6|v)}else b+=String.fromCharCode(R)}return b},xn=[],Ro=c=>{for(var d=0,p=0;p<c.length;++p){var g=c.charCodeAt(p);g<=127?d++:g<=2047?d+=2:g>=55296&&g<=57343?(d+=4,++p):d+=3}return d},vo=(c,d,p,g)=>{if(!(g>0))return 0;for(var I=p,b=p+g-1,R=0;R<c.length;++R){var v=c.charCodeAt(R);if(v>=55296&&v<=57343&&(v=65536+((1023&v)<<10)|1023&c.charCodeAt(++R)),v<=127){if(p>=b)break;d[p++]=v}else if(v<=2047){if(p+1>=b)break;d[p++]=192|v>>6,d[p++]=128|63&v}else if(v<=65535){if(p+2>=b)break;d[p++]=224|v>>12,d[p++]=128|v>>6&63,d[p++]=128|63&v}else{if(p+3>=b)break;d[p++]=240|v>>18,d[p++]=128|v>>12&63,d[p++]=128|v>>6&63,d[p++]=128|63&v}}return d[p]=0,p-I};function _s(c,d,p){var g=p>0?p:Ro(c)+1,I=new Array(g),b=vo(c,I,0,I.length);return d&&(I.length=b),I}var Ir={ttys:[],init:function(){},shutdown:function(){},register:function(c,d){Ir.ttys[c]={input:[],output:[],ops:d},E.registerDevice(c,Ir.stream_ops)},stream_ops:{open:function(c){var d=Ir.ttys[c.node.rdev];if(!d)throw new E.ErrnoError(43);c.tty=d,c.seekable=!1},close:function(c){c.tty.ops.fsync(c.tty)},fsync:function(c){c.tty.ops.fsync(c.tty)},read:function(c,d,p,g,I){if(!c.tty||!c.tty.ops.get_char)throw new E.ErrnoError(60);for(var b=0,R=0;R<g;R++){var v;try{v=c.tty.ops.get_char(c.tty)}catch(U){throw new E.ErrnoError(29)}if(v===void 0&&b===0)throw new E.ErrnoError(6);if(v==null)break;b++,d[p+R]=v}return b&&(c.node.timestamp=Date.now()),b},write:function(c,d,p,g,I){if(!c.tty||!c.tty.ops.put_char)throw new E.ErrnoError(60);try{for(var b=0;b<g;b++)c.tty.ops.put_char(c.tty,d[p+b])}catch(R){throw new E.ErrnoError(29)}return g&&(c.node.timestamp=Date.now()),b}},default_tty_ops:{get_char:function(c){return(()=>{if(!xn.length){var d=null;if(typeof window!="undefined"&&typeof window.prompt=="function"?(d=window.prompt("Input: "))!==null&&(d+=`
|
|
51
|
+
`):typeof readline=="function"&&(d=readline())!==null&&(d+=`
|
|
52
|
+
`),!d)return null;xn=_s(d,!0)}return xn.shift()})()},put_char:function(c,d){d===null||d===10?(C(Pt(c.output,0)),c.output=[]):d!=0&&c.output.push(d)},fsync:function(c){c.output&&c.output.length>0&&(C(Pt(c.output,0)),c.output=[])},ioctl_tcgets:function(c){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(c,d,p){return 0},ioctl_tiocgwinsz:function(c){return[24,80]}},default_tty1_ops:{put_char:function(c,d){d===null||d===10?(N(Pt(c.output,0)),c.output=[]):d!=0&&c.output.push(d)},fsync:function(c){c.output&&c.output.length>0&&(N(Pt(c.output,0)),c.output=[])}}},kn=c=>{$r()},G={ops_table:null,mount:c=>G.createNode(null,"/",16895,0),createNode(c,d,p,g){if(E.isBlkdev(p)||E.isFIFO(p))throw new E.ErrnoError(63);G.ops_table||(G.ops_table={dir:{node:{getattr:G.node_ops.getattr,setattr:G.node_ops.setattr,lookup:G.node_ops.lookup,mknod:G.node_ops.mknod,rename:G.node_ops.rename,unlink:G.node_ops.unlink,rmdir:G.node_ops.rmdir,readdir:G.node_ops.readdir,symlink:G.node_ops.symlink},stream:{llseek:G.stream_ops.llseek}},file:{node:{getattr:G.node_ops.getattr,setattr:G.node_ops.setattr},stream:{llseek:G.stream_ops.llseek,read:G.stream_ops.read,write:G.stream_ops.write,allocate:G.stream_ops.allocate,mmap:G.stream_ops.mmap,msync:G.stream_ops.msync}},link:{node:{getattr:G.node_ops.getattr,setattr:G.node_ops.setattr,readlink:G.node_ops.readlink},stream:{}},chrdev:{node:{getattr:G.node_ops.getattr,setattr:G.node_ops.setattr},stream:E.chrdev_stream_ops}});var I=E.createNode(c,d,p,g);return E.isDir(I.mode)?(I.node_ops=G.ops_table.dir.node,I.stream_ops=G.ops_table.dir.stream,I.contents={}):E.isFile(I.mode)?(I.node_ops=G.ops_table.file.node,I.stream_ops=G.ops_table.file.stream,I.usedBytes=0,I.contents=null):E.isLink(I.mode)?(I.node_ops=G.ops_table.link.node,I.stream_ops=G.ops_table.link.stream):E.isChrdev(I.mode)&&(I.node_ops=G.ops_table.chrdev.node,I.stream_ops=G.ops_table.chrdev.stream),I.timestamp=Date.now(),c&&(c.contents[d]=I,c.timestamp=I.timestamp),I},getFileDataAsTypedArray:c=>c.contents?c.contents.subarray?c.contents.subarray(0,c.usedBytes):new Uint8Array(c.contents):new Uint8Array(0),expandFileStorage(c,d){var p=c.contents?c.contents.length:0;if(!(p>=d)){d=Math.max(d,p*(p<1048576?2:1.125)>>>0),p!=0&&(d=Math.max(d,256));var g=c.contents;c.contents=new Uint8Array(d),c.usedBytes>0&&c.contents.set(g.subarray(0,c.usedBytes),0)}},resizeFileStorage(c,d){if(c.usedBytes!=d)if(d==0)c.contents=null,c.usedBytes=0;else{var p=c.contents;c.contents=new Uint8Array(d),p&&c.contents.set(p.subarray(0,Math.min(d,c.usedBytes))),c.usedBytes=d}},node_ops:{getattr(c){var d={};return d.dev=E.isChrdev(c.mode)?c.id:1,d.ino=c.id,d.mode=c.mode,d.nlink=1,d.uid=0,d.gid=0,d.rdev=c.rdev,E.isDir(c.mode)?d.size=4096:E.isFile(c.mode)?d.size=c.usedBytes:E.isLink(c.mode)?d.size=c.link.length:d.size=0,d.atime=new Date(c.timestamp),d.mtime=new Date(c.timestamp),d.ctime=new Date(c.timestamp),d.blksize=4096,d.blocks=Math.ceil(d.size/d.blksize),d},setattr(c,d){d.mode!==void 0&&(c.mode=d.mode),d.timestamp!==void 0&&(c.timestamp=d.timestamp),d.size!==void 0&&G.resizeFileStorage(c,d.size)},lookup(c,d){throw E.genericErrors[44]},mknod:(c,d,p,g)=>G.createNode(c,d,p,g),rename(c,d,p){if(E.isDir(c.mode)){var g;try{g=E.lookupNode(d,p)}catch(b){}if(g)for(var I in g.contents)throw new E.ErrnoError(55)}delete c.parent.contents[c.name],c.parent.timestamp=Date.now(),c.name=p,d.contents[p]=c,d.timestamp=c.parent.timestamp,c.parent=d},unlink(c,d){delete c.contents[d],c.timestamp=Date.now()},rmdir(c,d){var p=E.lookupNode(c,d);for(var g in p.contents)throw new E.ErrnoError(55);delete c.contents[d],c.timestamp=Date.now()},readdir(c){var d=[".",".."];for(var p in c.contents)c.contents.hasOwnProperty(p)&&d.push(p);return d},symlink(c,d,p){var g=G.createNode(c,d,41471,0);return g.link=p,g},readlink(c){if(!E.isLink(c.mode))throw new E.ErrnoError(28);return c.link}},stream_ops:{read(c,d,p,g,I){var b=c.node.contents;if(I>=c.node.usedBytes)return 0;var R=Math.min(c.node.usedBytes-I,g);if(R>8&&b.subarray)d.set(b.subarray(I,I+R),p);else for(var v=0;v<R;v++)d[p+v]=b[I+v];return R},write(c,d,p,g,I,b){if(!g)return 0;var R=c.node;if(R.timestamp=Date.now(),d.subarray&&(!R.contents||R.contents.subarray)){if(b)return R.contents=d.subarray(p,p+g),R.usedBytes=g,g;if(R.usedBytes===0&&I===0)return R.contents=d.slice(p,p+g),R.usedBytes=g,g;if(I+g<=R.usedBytes)return R.contents.set(d.subarray(p,p+g),I),g}if(G.expandFileStorage(R,I+g),R.contents.subarray&&d.subarray)R.contents.set(d.subarray(p,p+g),I);else for(var v=0;v<g;v++)R.contents[I+v]=d[p+v];return R.usedBytes=Math.max(R.usedBytes,I+g),g},llseek(c,d,p){var g=d;if(p===1?g+=c.position:p===2&&E.isFile(c.node.mode)&&(g+=c.node.usedBytes),g<0)throw new E.ErrnoError(28);return g},allocate(c,d,p){G.expandFileStorage(c.node,d+p),c.node.usedBytes=Math.max(c.node.usedBytes,d+p)},mmap(c,d,p,g,I){if(!E.isFile(c.node.mode))throw new E.ErrnoError(43);var b,R,v=c.node.contents;if(2&I||v.buffer!==te.buffer){if((p>0||p+d<v.length)&&(v=v.subarray?v.subarray(p,p+d):Array.prototype.slice.call(v,p,p+d)),R=!0,!(b=kn()))throw new E.ErrnoError(48);te.set(v,b)}else R=!1,b=v.byteOffset;return{ptr:b,allocated:R}},msync:(c,d,p,g,I)=>(G.stream_ops.write(c,d,0,g,p,!1),0)}},sl=(c,d,p,g)=>{var I=g?"":`al ${c}`;n(c,b=>{var R;R=`Loading data file "${c}" failed (no arrayBuffer).`,b||$r(R),d(new Uint8Array(b)),I&&bo()},b=>{if(!p)throw`Loading data file "${c}" failed.`;p()}),I&&ie()},nl=o.preloadPlugins||[];function di(c,d){var p=0;return c&&(p|=365),d&&(p|=146),p}var E={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(c,d={})=>{if(!(c=Xt.resolve(c)))return{path:"",node:null};if((d=Object.assign({follow_mount:!0,recurse_count:0},d)).recurse_count>8)throw new E.ErrnoError(32);for(var p=c.split("/").filter(L=>!!L),g=E.root,I="/",b=0;b<p.length;b++){var R=b===p.length-1;if(R&&d.parent)break;if(g=E.lookupNode(g,p[b]),I=me.join2(I,p[b]),E.isMountpoint(g)&&(!R||R&&d.follow_mount)&&(g=g.mounted.root),!R||d.follow)for(var v=0;E.isLink(g.mode);){var U=E.readlink(I);if(I=Xt.resolve(me.dirname(I),U),g=E.lookupPath(I,{recurse_count:d.recurse_count+1}).node,v++>40)throw new E.ErrnoError(32)}}return{path:I,node:g}},getPath:c=>{for(var d;;){if(E.isRoot(c)){var p=c.mount.mountpoint;return d?p[p.length-1]!=="/"?`${p}/${d}`:p+d:p}d=d?`${c.name}/${d}`:c.name,c=c.parent}},hashName:(c,d)=>{for(var p=0,g=0;g<d.length;g++)p=(p<<5)-p+d.charCodeAt(g)|0;return(c+p>>>0)%E.nameTable.length},hashAddNode:c=>{var d=E.hashName(c.parent.id,c.name);c.name_next=E.nameTable[d],E.nameTable[d]=c},hashRemoveNode:c=>{var d=E.hashName(c.parent.id,c.name);if(E.nameTable[d]===c)E.nameTable[d]=c.name_next;else for(var p=E.nameTable[d];p;){if(p.name_next===c){p.name_next=c.name_next;break}p=p.name_next}},lookupNode:(c,d)=>{var p=E.mayLookup(c);if(p)throw new E.ErrnoError(p,c);for(var g=E.hashName(c.id,d),I=E.nameTable[g];I;I=I.name_next){var b=I.name;if(I.parent.id===c.id&&b===d)return I}return E.lookup(c,d)},createNode:(c,d,p,g)=>{var I=new E.FSNode(c,d,p,g);return E.hashAddNode(I),I},destroyNode:c=>{E.hashRemoveNode(c)},isRoot:c=>c===c.parent,isMountpoint:c=>!!c.mounted,isFile:c=>(61440&c)==32768,isDir:c=>(61440&c)==16384,isLink:c=>(61440&c)==40960,isChrdev:c=>(61440&c)==8192,isBlkdev:c=>(61440&c)==24576,isFIFO:c=>(61440&c)==4096,isSocket:c=>!(49152&~c),flagsToPermissionString:c=>{var d=["r","w","rw"][3&c];return 512&c&&(d+="w"),d},nodePermissions:(c,d)=>E.ignorePermissions||(!d.includes("r")||292&c.mode)&&(!d.includes("w")||146&c.mode)&&(!d.includes("x")||73&c.mode)?0:2,mayLookup:c=>{var d=E.nodePermissions(c,"x");return d||(c.node_ops.lookup?0:2)},mayCreate:(c,d)=>{try{return E.lookupNode(c,d),20}catch(p){}return E.nodePermissions(c,"wx")},mayDelete:(c,d,p)=>{var g;try{g=E.lookupNode(c,d)}catch(b){return b.errno}var I=E.nodePermissions(c,"wx");if(I)return I;if(p){if(!E.isDir(g.mode))return 54;if(E.isRoot(g)||E.getPath(g)===E.cwd())return 10}else if(E.isDir(g.mode))return 31;return 0},mayOpen:(c,d)=>c?E.isLink(c.mode)?32:E.isDir(c.mode)&&(E.flagsToPermissionString(d)!=="r"||512&d)?31:E.nodePermissions(c,E.flagsToPermissionString(d)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var c=0;c<=E.MAX_OPEN_FDS;c++)if(!E.streams[c])return c;throw new E.ErrnoError(33)},getStreamChecked:c=>{var d=E.getStream(c);if(!d)throw new E.ErrnoError(8);return d},getStream:c=>E.streams[c],createStream:(c,d=-1)=>(E.FSStream||(E.FSStream=function(){this.shared={}},E.FSStream.prototype={},Object.defineProperties(E.FSStream.prototype,{object:{get(){return this.node},set(p){this.node=p}},isRead:{get(){return(2097155&this.flags)!=1}},isWrite:{get(){return!!(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(p){this.shared.flags=p}},position:{get(){return this.shared.position},set(p){this.shared.position=p}}})),c=Object.assign(new E.FSStream,c),d==-1&&(d=E.nextfd()),c.fd=d,E.streams[d]=c,c),closeStream:c=>{E.streams[c]=null},chrdev_stream_ops:{open:c=>{var d=E.getDevice(c.node.rdev);c.stream_ops=d.stream_ops,c.stream_ops.open&&c.stream_ops.open(c)},llseek:()=>{throw new E.ErrnoError(70)}},major:c=>c>>8,minor:c=>255&c,makedev:(c,d)=>c<<8|d,registerDevice:(c,d)=>{E.devices[c]={stream_ops:d}},getDevice:c=>E.devices[c],getMounts:c=>{for(var d=[],p=[c];p.length;){var g=p.pop();d.push(g),p.push.apply(p,g.mounts)}return d},syncfs:(c,d)=>{typeof c=="function"&&(d=c,c=!1),E.syncFSRequests++,E.syncFSRequests>1&&N(`warning: ${E.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var p=E.getMounts(E.root.mount),g=0;function I(R){return E.syncFSRequests--,d(R)}function b(R){if(R)return b.errored?void 0:(b.errored=!0,I(R));++g>=p.length&&I(null)}p.forEach(R=>{if(!R.type.syncfs)return b(null);R.type.syncfs(R,c,b)})},mount:(c,d,p)=>{var g,I=p==="/",b=!p;if(I&&E.root)throw new E.ErrnoError(10);if(!I&&!b){var R=E.lookupPath(p,{follow_mount:!1});if(p=R.path,g=R.node,E.isMountpoint(g))throw new E.ErrnoError(10);if(!E.isDir(g.mode))throw new E.ErrnoError(54)}var v={type:c,opts:d,mountpoint:p,mounts:[]},U=c.mount(v);return U.mount=v,v.root=U,I?E.root=U:g&&(g.mounted=v,g.mount&&g.mount.mounts.push(v)),U},unmount:c=>{var d=E.lookupPath(c,{follow_mount:!1});if(!E.isMountpoint(d.node))throw new E.ErrnoError(28);var p=d.node,g=p.mounted,I=E.getMounts(g);Object.keys(E.nameTable).forEach(R=>{for(var v=E.nameTable[R];v;){var U=v.name_next;I.includes(v.mount)&&E.destroyNode(v),v=U}}),p.mounted=null;var b=p.mount.mounts.indexOf(g);p.mount.mounts.splice(b,1)},lookup:(c,d)=>c.node_ops.lookup(c,d),mknod:(c,d,p)=>{var g=E.lookupPath(c,{parent:!0}).node,I=me.basename(c);if(!I||I==="."||I==="..")throw new E.ErrnoError(28);var b=E.mayCreate(g,I);if(b)throw new E.ErrnoError(b);if(!g.node_ops.mknod)throw new E.ErrnoError(63);return g.node_ops.mknod(g,I,d,p)},create:(c,d)=>(d=d!==void 0?d:438,d&=4095,d|=32768,E.mknod(c,d,0)),mkdir:(c,d)=>(d=d!==void 0?d:511,d&=1023,d|=16384,E.mknod(c,d,0)),mkdirTree:(c,d)=>{for(var p=c.split("/"),g="",I=0;I<p.length;++I)if(p[I]){g+="/"+p[I];try{E.mkdir(g,d)}catch(b){if(b.errno!=20)throw b}}},mkdev:(c,d,p)=>(p===void 0&&(p=d,d=438),d|=8192,E.mknod(c,d,p)),symlink:(c,d)=>{if(!Xt.resolve(c))throw new E.ErrnoError(44);var p=E.lookupPath(d,{parent:!0}).node;if(!p)throw new E.ErrnoError(44);var g=me.basename(d),I=E.mayCreate(p,g);if(I)throw new E.ErrnoError(I);if(!p.node_ops.symlink)throw new E.ErrnoError(63);return p.node_ops.symlink(p,g,c)},rename:(c,d)=>{var p,g,I=me.dirname(c),b=me.dirname(d),R=me.basename(c),v=me.basename(d);if(p=E.lookupPath(c,{parent:!0}).node,g=E.lookupPath(d,{parent:!0}).node,!p||!g)throw new E.ErrnoError(44);if(p.mount!==g.mount)throw new E.ErrnoError(75);var U,L=E.lookupNode(p,R),Z=Xt.relative(c,b);if(Z.charAt(0)!==".")throw new E.ErrnoError(28);if((Z=Xt.relative(d,I)).charAt(0)!==".")throw new E.ErrnoError(55);try{U=E.lookupNode(g,v)}catch(se){}if(L!==U){var ae=E.isDir(L.mode),ce=E.mayDelete(p,R,ae);if(ce)throw new E.ErrnoError(ce);if(ce=U?E.mayDelete(g,v,ae):E.mayCreate(g,v))throw new E.ErrnoError(ce);if(!p.node_ops.rename)throw new E.ErrnoError(63);if(E.isMountpoint(L)||U&&E.isMountpoint(U))throw new E.ErrnoError(10);if(g!==p&&(ce=E.nodePermissions(p,"w")))throw new E.ErrnoError(ce);E.hashRemoveNode(L);try{p.node_ops.rename(L,g,v)}catch(se){throw se}finally{E.hashAddNode(L)}}},rmdir:c=>{var d=E.lookupPath(c,{parent:!0}).node,p=me.basename(c),g=E.lookupNode(d,p),I=E.mayDelete(d,p,!0);if(I)throw new E.ErrnoError(I);if(!d.node_ops.rmdir)throw new E.ErrnoError(63);if(E.isMountpoint(g))throw new E.ErrnoError(10);d.node_ops.rmdir(d,p),E.destroyNode(g)},readdir:c=>{var d=E.lookupPath(c,{follow:!0}).node;if(!d.node_ops.readdir)throw new E.ErrnoError(54);return d.node_ops.readdir(d)},unlink:c=>{var d=E.lookupPath(c,{parent:!0}).node;if(!d)throw new E.ErrnoError(44);var p=me.basename(c),g=E.lookupNode(d,p),I=E.mayDelete(d,p,!1);if(I)throw new E.ErrnoError(I);if(!d.node_ops.unlink)throw new E.ErrnoError(63);if(E.isMountpoint(g))throw new E.ErrnoError(10);d.node_ops.unlink(d,p),E.destroyNode(g)},readlink:c=>{var d=E.lookupPath(c).node;if(!d)throw new E.ErrnoError(44);if(!d.node_ops.readlink)throw new E.ErrnoError(28);return Xt.resolve(E.getPath(d.parent),d.node_ops.readlink(d))},stat:(c,d)=>{var p=E.lookupPath(c,{follow:!d}).node;if(!p)throw new E.ErrnoError(44);if(!p.node_ops.getattr)throw new E.ErrnoError(63);return p.node_ops.getattr(p)},lstat:c=>E.stat(c,!0),chmod:(c,d,p)=>{var g;if(typeof c=="string"?g=E.lookupPath(c,{follow:!p}).node:g=c,!g.node_ops.setattr)throw new E.ErrnoError(63);g.node_ops.setattr(g,{mode:4095&d|-4096&g.mode,timestamp:Date.now()})},lchmod:(c,d)=>{E.chmod(c,d,!0)},fchmod:(c,d)=>{var p=E.getStreamChecked(c);E.chmod(p.node,d)},chown:(c,d,p,g)=>{var I;if(typeof c=="string"?I=E.lookupPath(c,{follow:!g}).node:I=c,!I.node_ops.setattr)throw new E.ErrnoError(63);I.node_ops.setattr(I,{timestamp:Date.now()})},lchown:(c,d,p)=>{E.chown(c,d,p,!0)},fchown:(c,d,p)=>{var g=E.getStreamChecked(c);E.chown(g.node,d,p)},truncate:(c,d)=>{if(d<0)throw new E.ErrnoError(28);var p;if(typeof c=="string"?p=E.lookupPath(c,{follow:!0}).node:p=c,!p.node_ops.setattr)throw new E.ErrnoError(63);if(E.isDir(p.mode))throw new E.ErrnoError(31);if(!E.isFile(p.mode))throw new E.ErrnoError(28);var g=E.nodePermissions(p,"w");if(g)throw new E.ErrnoError(g);p.node_ops.setattr(p,{size:d,timestamp:Date.now()})},ftruncate:(c,d)=>{var p=E.getStreamChecked(c);if(!(2097155&p.flags))throw new E.ErrnoError(28);E.truncate(p.node,d)},utime:(c,d,p)=>{var g=E.lookupPath(c,{follow:!0}).node;g.node_ops.setattr(g,{timestamp:Math.max(d,p)})},open:(c,d,p)=>{if(c==="")throw new E.ErrnoError(44);var g;if(p=p===void 0?438:p,p=64&(d=typeof d=="string"?function(v){var U={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[v];if(U===void 0)throw new Error(`Unknown file open mode: ${v}`);return U}(d):d)?4095&p|32768:0,typeof c=="object")g=c;else{c=me.normalize(c);try{g=E.lookupPath(c,{follow:!(131072&d)}).node}catch(v){}}var I=!1;if(64&d)if(g){if(128&d)throw new E.ErrnoError(20)}else g=E.mknod(c,p,0),I=!0;if(!g)throw new E.ErrnoError(44);if(E.isChrdev(g.mode)&&(d&=-513),65536&d&&!E.isDir(g.mode))throw new E.ErrnoError(54);if(!I){var b=E.mayOpen(g,d);if(b)throw new E.ErrnoError(b)}512&d&&!I&&E.truncate(g,0),d&=-131713;var R=E.createStream({node:g,path:E.getPath(g),flags:d,seekable:!0,position:0,stream_ops:g.stream_ops,ungotten:[],error:!1});return R.stream_ops.open&&R.stream_ops.open(R),!o.logReadFiles||1&d||(E.readFiles||(E.readFiles={}),c in E.readFiles||(E.readFiles[c]=1)),R},close:c=>{if(E.isClosed(c))throw new E.ErrnoError(8);c.getdents&&(c.getdents=null);try{c.stream_ops.close&&c.stream_ops.close(c)}catch(d){throw d}finally{E.closeStream(c.fd)}c.fd=null},isClosed:c=>c.fd===null,llseek:(c,d,p)=>{if(E.isClosed(c))throw new E.ErrnoError(8);if(!c.seekable||!c.stream_ops.llseek)throw new E.ErrnoError(70);if(p!=0&&p!=1&&p!=2)throw new E.ErrnoError(28);return c.position=c.stream_ops.llseek(c,d,p),c.ungotten=[],c.position},read:(c,d,p,g,I)=>{if(g<0||I<0)throw new E.ErrnoError(28);if(E.isClosed(c))throw new E.ErrnoError(8);if((2097155&c.flags)==1)throw new E.ErrnoError(8);if(E.isDir(c.node.mode))throw new E.ErrnoError(31);if(!c.stream_ops.read)throw new E.ErrnoError(28);var b=I!==void 0;if(b){if(!c.seekable)throw new E.ErrnoError(70)}else I=c.position;var R=c.stream_ops.read(c,d,p,g,I);return b||(c.position+=R),R},write:(c,d,p,g,I,b)=>{if(g<0||I<0)throw new E.ErrnoError(28);if(E.isClosed(c))throw new E.ErrnoError(8);if(!(2097155&c.flags))throw new E.ErrnoError(8);if(E.isDir(c.node.mode))throw new E.ErrnoError(31);if(!c.stream_ops.write)throw new E.ErrnoError(28);c.seekable&&1024&c.flags&&E.llseek(c,0,2);var R=I!==void 0;if(R){if(!c.seekable)throw new E.ErrnoError(70)}else I=c.position;var v=c.stream_ops.write(c,d,p,g,I,b);return R||(c.position+=v),v},allocate:(c,d,p)=>{if(E.isClosed(c))throw new E.ErrnoError(8);if(d<0||p<=0)throw new E.ErrnoError(28);if(!(2097155&c.flags))throw new E.ErrnoError(8);if(!E.isFile(c.node.mode)&&!E.isDir(c.node.mode))throw new E.ErrnoError(43);if(!c.stream_ops.allocate)throw new E.ErrnoError(138);c.stream_ops.allocate(c,d,p)},mmap:(c,d,p,g,I)=>{if(2&g&&!(2&I)&&(2097155&c.flags)!=2)throw new E.ErrnoError(2);if((2097155&c.flags)==1)throw new E.ErrnoError(2);if(!c.stream_ops.mmap)throw new E.ErrnoError(43);return c.stream_ops.mmap(c,d,p,g,I)},msync:(c,d,p,g,I)=>c.stream_ops.msync?c.stream_ops.msync(c,d,p,g,I):0,munmap:c=>0,ioctl:(c,d,p)=>{if(!c.stream_ops.ioctl)throw new E.ErrnoError(59);return c.stream_ops.ioctl(c,d,p)},readFile:(c,d={})=>{if(d.flags=d.flags||0,d.encoding=d.encoding||"binary",d.encoding!=="utf8"&&d.encoding!=="binary")throw new Error(`Invalid encoding type "${d.encoding}"`);var p,g=E.open(c,d.flags),I=E.stat(c).size,b=new Uint8Array(I);return E.read(g,b,0,I,0),d.encoding==="utf8"?p=Pt(b,0):d.encoding==="binary"&&(p=b),E.close(g),p},writeFile:(c,d,p={})=>{p.flags=p.flags||577;var g=E.open(c,p.flags,p.mode);if(typeof d=="string"){var I=new Uint8Array(Ro(d)+1),b=vo(d,I,0,I.length);E.write(g,I,0,b,void 0,p.canOwn)}else{if(!ArrayBuffer.isView(d))throw new Error("Unsupported data type");E.write(g,d,0,d.byteLength,void 0,p.canOwn)}E.close(g)},cwd:()=>E.currentPath,chdir:c=>{var d=E.lookupPath(c,{follow:!0});if(d.node===null)throw new E.ErrnoError(44);if(!E.isDir(d.node.mode))throw new E.ErrnoError(54);var p=E.nodePermissions(d.node,"x");if(p)throw new E.ErrnoError(p);E.currentPath=d.path},createDefaultDirectories:()=>{E.mkdir("/tmp"),E.mkdir("/home"),E.mkdir("/home/web_user")},createDefaultDevices:()=>{E.mkdir("/dev"),E.registerDevice(E.makedev(1,3),{read:()=>0,write:(g,I,b,R,v)=>R}),E.mkdev("/dev/null",E.makedev(1,3)),Ir.register(E.makedev(5,0),Ir.default_tty_ops),Ir.register(E.makedev(6,0),Ir.default_tty1_ops),E.mkdev("/dev/tty",E.makedev(5,0)),E.mkdev("/dev/tty1",E.makedev(6,0));var c=new Uint8Array(1024),d=0,p=()=>(d===0&&(d=On(c).byteLength),c[--d]);E.createDevice("/dev","random",p),E.createDevice("/dev","urandom",p),E.mkdir("/dev/shm"),E.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{E.mkdir("/proc");var c=E.mkdir("/proc/self");E.mkdir("/proc/self/fd"),E.mount({mount:()=>{var d=E.createNode(c,"fd",16895,73);return d.node_ops={lookup:(p,g)=>{var I=+g,b=E.getStreamChecked(I),R={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>b.path}};return R.parent=R,R}},d}},{},"/proc/self/fd")},createStandardStreams:()=>{o.stdin?E.createDevice("/dev","stdin",o.stdin):E.symlink("/dev/tty","/dev/stdin"),o.stdout?E.createDevice("/dev","stdout",null,o.stdout):E.symlink("/dev/tty","/dev/stdout"),o.stderr?E.createDevice("/dev","stderr",null,o.stderr):E.symlink("/dev/tty1","/dev/stderr"),E.open("/dev/stdin",0),E.open("/dev/stdout",1),E.open("/dev/stderr",1)},ensureErrnoError:()=>{E.ErrnoError||(E.ErrnoError=function(c,d){this.name="ErrnoError",this.node=d,this.setErrno=function(p){this.errno=p},this.setErrno(c),this.message="FS error"},E.ErrnoError.prototype=new Error,E.ErrnoError.prototype.constructor=E.ErrnoError,[44].forEach(c=>{E.genericErrors[c]=new E.ErrnoError(c),E.genericErrors[c].stack="<generic error, no stack>"}))},staticInit:()=>{E.ensureErrnoError(),E.nameTable=new Array(4096),E.mount(G,{},"/"),E.createDefaultDirectories(),E.createDefaultDevices(),E.createSpecialDirectories(),E.filesystems={MEMFS:G}},init:(c,d,p)=>{E.init.initialized=!0,E.ensureErrnoError(),o.stdin=c||o.stdin,o.stdout=d||o.stdout,o.stderr=p||o.stderr,E.createStandardStreams()},quit:()=>{E.init.initialized=!1;for(var c=0;c<E.streams.length;c++){var d=E.streams[c];d&&E.close(d)}},findObject:(c,d)=>{var p=E.analyzePath(c,d);return p.exists?p.object:null},analyzePath:(c,d)=>{try{c=(g=E.lookupPath(c,{follow:!d})).path}catch(I){}var p={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var g=E.lookupPath(c,{parent:!0});p.parentExists=!0,p.parentPath=g.path,p.parentObject=g.node,p.name=me.basename(c),g=E.lookupPath(c,{follow:!d}),p.exists=!0,p.path=g.path,p.object=g.node,p.name=g.node.name,p.isRoot=g.path==="/"}catch(I){p.error=I.errno}return p},createPath:(c,d,p,g)=>{c=typeof c=="string"?c:E.getPath(c);for(var I=d.split("/").reverse();I.length;){var b=I.pop();if(b){var R=me.join2(c,b);try{E.mkdir(R)}catch(v){}c=R}}return R},createFile:(c,d,p,g,I)=>{var b=me.join2(typeof c=="string"?c:E.getPath(c),d),R=di(g,I);return E.create(b,R)},createDataFile:(c,d,p,g,I,b)=>{var R=d;c&&(c=typeof c=="string"?c:E.getPath(c),R=d?me.join2(c,d):c);var v=di(g,I),U=E.create(R,v);if(p){if(typeof p=="string"){for(var L=new Array(p.length),Z=0,ae=p.length;Z<ae;++Z)L[Z]=p.charCodeAt(Z);p=L}E.chmod(U,146|v);var ce=E.open(U,577);E.write(ce,p,0,p.length,0,b),E.close(ce),E.chmod(U,v)}return U},createDevice:(c,d,p,g)=>{var I=me.join2(typeof c=="string"?c:E.getPath(c),d),b=di(!!p,!!g);E.createDevice.major||(E.createDevice.major=64);var R=E.makedev(E.createDevice.major++,0);return E.registerDevice(R,{open:v=>{v.seekable=!1},close:v=>{g&&g.buffer&&g.buffer.length&&g(10)},read:(v,U,L,Z,ae)=>{for(var ce=0,se=0;se<Z;se++){var Ne;try{Ne=p()}catch(Fe){throw new E.ErrnoError(29)}if(Ne===void 0&&ce===0)throw new E.ErrnoError(6);if(Ne==null)break;ce++,U[L+se]=Ne}return ce&&(v.node.timestamp=Date.now()),ce},write:(v,U,L,Z,ae)=>{for(var ce=0;ce<Z;ce++)try{g(U[L+ce])}catch(se){throw new E.ErrnoError(29)}return Z&&(v.node.timestamp=Date.now()),ce}}),E.mkdev(I,b,R)},forceLoadFile:c=>{if(c.isDevice||c.isFolder||c.link||c.contents)return!0;if(typeof XMLHttpRequest!="undefined")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{c.contents=_s(s(c.url),!0),c.usedBytes=c.contents.length}catch(d){throw new E.ErrnoError(29)}},createLazyFile:(c,d,p,g,I)=>{function b(){this.lengthKnown=!1,this.chunks=[]}if(b.prototype.get=function(ae){if(!(ae>this.length-1||ae<0)){var ce=ae%this.chunkSize,se=ae/this.chunkSize|0;return this.getter(se)[ce]}},b.prototype.setDataGetter=function(ae){this.getter=ae},b.prototype.cacheLength=function(){var ae=new XMLHttpRequest;if(ae.open("HEAD",p,!1),ae.send(null),!(ae.status>=200&&ae.status<300||ae.status===304))throw new Error("Couldn't load "+p+". Status: "+ae.status);var ce,se=Number(ae.getResponseHeader("Content-length")),Ne=(ce=ae.getResponseHeader("Accept-Ranges"))&&ce==="bytes",Fe=(ce=ae.getResponseHeader("Content-Encoding"))&&ce==="gzip",Oe=1048576;Ne||(Oe=se);var it=this;it.setDataGetter(et=>{var Et=et*Oe,Ki=(et+1)*Oe-1;if(Ki=Math.min(Ki,se-1),it.chunks[et]===void 0&&(it.chunks[et]=((ur,ko)=>{if(ur>ko)throw new Error("invalid range ("+ur+", "+ko+") or no bytes requested!");if(ko>se-1)throw new Error("only "+se+" bytes available! programmer error!");var lt=new XMLHttpRequest;if(lt.open("GET",p,!1),se!==Oe&<.setRequestHeader("Range","bytes="+ur+"-"+ko),lt.responseType="arraybuffer",lt.overrideMimeType&<.overrideMimeType("text/plain; charset=x-user-defined"),lt.send(null),!(lt.status>=200&<.status<300||lt.status===304))throw new Error("Couldn't load "+p+". Status: "+lt.status);return lt.response!==void 0?new Uint8Array(lt.response||[]):_s(lt.responseText||"",!0)})(Et,Ki)),it.chunks[et]===void 0)throw new Error("doXHR failed!");return it.chunks[et]}),!Fe&&se||(Oe=se=1,se=this.getter(0).length,Oe=se,C("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=se,this._chunkSize=Oe,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var R=new b;Object.defineProperties(R,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var v={isDevice:!1,contents:R}}else v={isDevice:!1,url:p};var U=E.createFile(c,d,v,g,I);v.contents?U.contents=v.contents:v.url&&(U.contents=null,U.url=v.url),Object.defineProperties(U,{usedBytes:{get:function(){return this.contents.length}}});var L={};function Z(ae,ce,se,Ne,Fe){var Oe=ae.node.contents;if(Fe>=Oe.length)return 0;var it=Math.min(Oe.length-Fe,Ne);if(Oe.slice)for(var et=0;et<it;et++)ce[se+et]=Oe[Fe+et];else for(et=0;et<it;et++)ce[se+et]=Oe.get(Fe+et);return it}return Object.keys(U.stream_ops).forEach(ae=>{var ce=U.stream_ops[ae];L[ae]=function(){return E.forceLoadFile(U),ce.apply(null,arguments)}}),L.read=(ae,ce,se,Ne,Fe)=>(E.forceLoadFile(U),Z(ae,ce,se,Ne,Fe)),L.mmap=(ae,ce,se,Ne,Fe)=>{E.forceLoadFile(U);var Oe=kn();if(!Oe)throw new E.ErrnoError(48);return Z(ae,te,Oe,ce,se),{ptr:Oe,allocated:!0}},U.stream_ops=L,U}},Gi=(c,d)=>c?Pt(ue,c,d):"",yt={DEFAULT_POLLMASK:5,calculateAt:function(c,d,p){if(me.isAbs(d))return d;var g;if(c===-100?g=E.cwd():g=yt.getStreamFromFD(c).path,d.length==0){if(!p)throw new E.ErrnoError(44);return g}return me.join2(g,d)},doStat:function(c,d,p){try{var g=c(d)}catch(v){if(v&&v.node&&me.normalize(d)!==me.normalize(E.getPath(v.node)))return-54;throw v}Y[p>>2]=g.dev,Y[p+4>>2]=g.mode,Pe[p+8>>2]=g.nlink,Y[p+12>>2]=g.uid,Y[p+16>>2]=g.gid,Y[p+20>>2]=g.rdev,Ke=[g.size>>>0,(Ee=g.size,+Math.abs(Ee)>=1?Ee>0?+Math.floor(Ee/4294967296)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],Y[p+24>>2]=Ke[0],Y[p+28>>2]=Ke[1],Y[p+32>>2]=4096,Y[p+36>>2]=g.blocks;var I=g.atime.getTime(),b=g.mtime.getTime(),R=g.ctime.getTime();return Ke=[Math.floor(I/1e3)>>>0,(Ee=Math.floor(I/1e3),+Math.abs(Ee)>=1?Ee>0?+Math.floor(Ee/4294967296)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],Y[p+40>>2]=Ke[0],Y[p+44>>2]=Ke[1],Pe[p+48>>2]=I%1e3*1e3,Ke=[Math.floor(b/1e3)>>>0,(Ee=Math.floor(b/1e3),+Math.abs(Ee)>=1?Ee>0?+Math.floor(Ee/4294967296)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],Y[p+56>>2]=Ke[0],Y[p+60>>2]=Ke[1],Pe[p+64>>2]=b%1e3*1e3,Ke=[Math.floor(R/1e3)>>>0,(Ee=Math.floor(R/1e3),+Math.abs(Ee)>=1?Ee>0?+Math.floor(Ee/4294967296)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],Y[p+72>>2]=Ke[0],Y[p+76>>2]=Ke[1],Pe[p+80>>2]=R%1e3*1e3,Ke=[g.ino>>>0,(Ee=g.ino,+Math.abs(Ee)>=1?Ee>0?+Math.floor(Ee/4294967296)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],Y[p+88>>2]=Ke[0],Y[p+92>>2]=Ke[1],0},doMsync:function(c,d,p,g,I){if(!E.isFile(d.node.mode))throw new E.ErrnoError(43);if(2&g)return 0;var b=ue.slice(c,c+p);E.msync(d,b,I,p,g)},varargs:void 0,get:()=>(yt.varargs+=4,Y[yt.varargs-4>>2]),getStr:c=>Gi(c),getStreamFromFD:function(c){return E.getStreamChecked(c)}};function ui(c){switch(c){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${c}`)}}var hc=void 0;function P(c){for(var d="",p=c;ue[p];)d+=hc[ue[p++]];return d}var ji={},dr={},Is={},qi=void 0;function Ve(c){throw new qi(c)}var fc=void 0;function er(c){throw new fc(c)}function Hr(c,d,p){function g(v){var U=p(v);U.length!==c.length&&er("Mismatched type converter count");for(var L=0;L<c.length;++L)tr(c[L],U[L])}c.forEach(function(v){Is[v]=d});var I=new Array(d.length),b=[],R=0;d.forEach((v,U)=>{dr.hasOwnProperty(v)?I[U]=dr[v]:(b.push(v),ji.hasOwnProperty(v)||(ji[v]=[]),ji[v].push(()=>{I[U]=dr[v],++R===b.length&&g(I)}))}),b.length===0&&g(I)}function tr(c,d,p={}){if(!("argPackAdvance"in d))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(g,I,b={}){var R=I.name;if(g||Ve(`type "${R}" must have a positive integer typeid pointer`),dr.hasOwnProperty(g)){if(b.ignoreDuplicateRegistrations)return;Ve(`Cannot register type '${R}' twice`)}if(dr[g]=I,delete Is[g],ji.hasOwnProperty(g)){var v=ji[g];delete ji[g],v.forEach(U=>U())}}(c,d,p)}function gc(c){if(!(this instanceof Sr)||!(c instanceof Sr))return!1;for(var d=this.$$.ptrType.registeredClass,p=this.$$.ptr,g=c.$$.ptrType.registeredClass,I=c.$$.ptr;d.baseClass;)p=d.upcast(p),d=d.baseClass;for(;g.baseClass;)I=g.upcast(I),g=g.baseClass;return d===g&&p===I}function Pn(c){Ve(c.$$.ptrType.registeredClass.name+" instance already deleted")}var Co=!1;function Ec(c){}function Tc(c){c.count.value-=1,c.count.value===0&&function(d){d.smartPtr?d.smartPtrType.rawDestructor(d.smartPtr):d.ptrType.registeredClass.rawDestructor(d.ptr)}(c)}function _c(c,d,p){if(d===p)return c;if(p.baseClass===void 0)return null;var g=_c(c,d,p.baseClass);return g===null?null:p.downcast(g)}var No={};function al(){return Object.keys(wo).length}function cl(){var c=[];for(var d in wo)wo.hasOwnProperty(d)&&c.push(wo[d]);return c}var Do=[];function rr(){for(;Do.length;){var c=Do.pop();c.$$.deleteScheduled=!1,c.delete()}}var Wr=void 0;function Ic(c){Wr=c,Do.length&&Wr&&Wr(rr)}var wo={};function zi(c,d){return d=function(p,g){for(g===void 0&&Ve("ptr should not be undefined");p.baseClass;)g=p.upcast(g),p=p.baseClass;return g}(c,d),wo[d]}function Mo(c,d){return d.ptrType&&d.ptr||er("makeClassHandle requires ptr and ptrType"),!!d.smartPtrType!=!!d.smartPtr&&er("Both smartPtrType and smartPtr must be specified"),d.count={value:1},Ji(Object.create(c,{$$:{value:d}}))}function Sc(c){var d=this.getPointee(c);if(!d)return this.destructor(c),null;var p=zi(this.registeredClass,d);if(p!==void 0){if(p.$$.count.value===0)return p.$$.ptr=d,p.$$.smartPtr=c,p.clone();var g=p.clone();return this.destructor(c),g}function I(){return this.isSmartPointer?Mo(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:d,smartPtrType:this,smartPtr:c}):Mo(this.registeredClass.instancePrototype,{ptrType:this,ptr:c})}var b,R=this.registeredClass.getActualType(d),v=No[R];if(!v)return I.call(this);b=this.isConst?v.constPointerType:v.pointerType;var U=_c(d,this.registeredClass,b.registeredClass);return U===null?I.call(this):this.isSmartPointer?Mo(b.registeredClass.instancePrototype,{ptrType:b,ptr:U,smartPtrType:this,smartPtr:c}):Mo(b.registeredClass.instancePrototype,{ptrType:b,ptr:U})}var Ji=function(c){return typeof FinalizationRegistry=="undefined"?(Ji=d=>d,c):(Co=new FinalizationRegistry(d=>{Tc(d.$$)}),Ec=d=>Co.unregister(d),(Ji=d=>{var p=d.$$;if(p.smartPtr){var g={$$:p};Co.register(d,g,d)}return d})(c))};function yc(){if(this.$$.ptr||Pn(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var c,d=Ji(Object.create(Object.getPrototypeOf(this),{$$:{value:(c=this.$$,{count:c.count,deleteScheduled:c.deleteScheduled,preservePointerOnDelete:c.preservePointerOnDelete,ptr:c.ptr,ptrType:c.ptrType,smartPtr:c.smartPtr,smartPtrType:c.smartPtrType})}}));return d.$$.count.value+=1,d.$$.deleteScheduled=!1,d}function dl(){this.$$.ptr||Pn(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ve("Object already scheduled for deletion"),Ec(this),Tc(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ac(){return!this.$$.ptr}function bc(){return this.$$.ptr||Pn(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ve("Object already scheduled for deletion"),Do.push(this),Do.length===1&&Wr&&Wr(rr),this.$$.deleteScheduled=!0,this}function Sr(){}function Lt(c){if(c===void 0)return"_unknown";var d=(c=c.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return d>=48&&d<=57?`_${c}`:c}function Ss(c,d){return c=Lt(c),{[c]:function(){return d.apply(this,arguments)}}[c]}function Rc(c,d,p){if(c[d].overloadTable===void 0){var g=c[d];c[d]=function(){return c[d].overloadTable.hasOwnProperty(arguments.length)||Ve(`Function '${p}' called with an invalid number of arguments (${arguments.length}) - expects one of (${c[d].overloadTable})!`),c[d].overloadTable[arguments.length].apply(this,arguments)},c[d].overloadTable=[],c[d].overloadTable[g.argCount]=g}}function ys(c,d,p,g,I,b,R,v){this.name=c,this.constructor=d,this.instancePrototype=p,this.rawDestructor=g,this.baseClass=I,this.getActualType=b,this.upcast=R,this.downcast=v,this.pureVirtualFunctions=[]}function Oo(c,d,p){for(;d!==p;)d.upcast||Ve(`Expected null or instance of ${p.name}, got an instance of ${d.name}`),c=d.upcast(c),d=d.baseClass;return c}function ul(c,d){if(d===null)return this.isReference&&Ve(`null is not a valid ${this.name}`),0;d.$$||Ve(`Cannot pass "${vs(d)}" as a ${this.name}`),d.$$.ptr||Ve(`Cannot pass deleted object as a pointer of type ${this.name}`);var p=d.$$.ptrType.registeredClass;return Oo(d.$$.ptr,p,this.registeredClass)}function ll(c,d){var p;if(d===null)return this.isReference&&Ve(`null is not a valid ${this.name}`),this.isSmartPointer?(p=this.rawConstructor(),c!==null&&c.push(this.rawDestructor,p),p):0;d.$$||Ve(`Cannot pass "${vs(d)}" as a ${this.name}`),d.$$.ptr||Ve(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&d.$$.ptrType.isConst&&Ve(`Cannot convert argument of type ${d.$$.smartPtrType?d.$$.smartPtrType.name:d.$$.ptrType.name} to parameter type ${this.name}`);var g=d.$$.ptrType.registeredClass;if(p=Oo(d.$$.ptr,g,this.registeredClass),this.isSmartPointer)switch(d.$$.smartPtr===void 0&&Ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:d.$$.smartPtrType===this?p=d.$$.smartPtr:Ve(`Cannot convert argument of type ${d.$$.smartPtrType?d.$$.smartPtrType.name:d.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:p=d.$$.smartPtr;break;case 2:if(d.$$.smartPtrType===this)p=d.$$.smartPtr;else{var I=d.clone();p=this.rawShare(p,Yi.toHandle(function(){I.delete()})),c!==null&&c.push(this.rawDestructor,p)}break;default:Ve("Unsupporting sharing policy")}return p}function vc(c,d){if(d===null)return this.isReference&&Ve(`null is not a valid ${this.name}`),0;d.$$||Ve(`Cannot pass "${vs(d)}" as a ${this.name}`),d.$$.ptr||Ve(`Cannot pass deleted object as a pointer of type ${this.name}`),d.$$.ptrType.isConst&&Ve(`Cannot convert argument of type ${d.$$.ptrType.name} to parameter type ${this.name}`);var p=d.$$.ptrType.registeredClass;return Oo(d.$$.ptr,p,this.registeredClass)}function xo(c){return this.fromWireType(Y[c>>2])}function ml(c){return this.rawGetPointee&&(c=this.rawGetPointee(c)),c}function Cc(c){this.rawDestructor&&this.rawDestructor(c)}function pl(c){c!==null&&c.delete()}function yr(c,d,p,g,I,b,R,v,U,L,Z){this.name=c,this.registeredClass=d,this.isReference=p,this.isConst=g,this.isSmartPointer=I,this.pointeeType=b,this.sharingPolicy=R,this.rawGetPointee=v,this.rawConstructor=U,this.rawShare=L,this.rawDestructor=Z,I||d.baseClass!==void 0?this.toWireType=ll:g?(this.toWireType=ul,this.destructorFunction=null):(this.toWireType=vc,this.destructorFunction=null)}var As=[],Nc=c=>{var d=As[c];return d||(c>=As.length&&(As.length=c+1),As[c]=d=Dn.get(c)),d},hl=(c,d,p)=>c.includes("j")?((g,I,b)=>{var R=o["dynCall_"+g];return b&&b.length?R.apply(null,[I].concat(b)):R.call(null,I)})(c,d,p):Nc(d).apply(null,p);function Xi(c,d){var p,g,I,b=(c=P(c)).includes("j")?(p=c,g=d,I=[],function(){return I.length=0,Object.assign(I,arguments),hl(p,g,I)}):Nc(d);return typeof b!="function"&&Ve(`unknown function pointer with signature ${c}: ${d}`),b}var Dc=void 0;function bs(c){var d=br(c),p=P(d);return Ct(d),p}function Rs(c,d){var p=[],g={};throw d.forEach(function I(b){g[b]||dr[b]||(Is[b]?Is[b].forEach(I):(p.push(b),g[b]=!0))}),new Dc(`${c}: `+p.map(bs).join([", "]))}function Ln(c,d){for(var p=[],g=0;g<c;g++)p.push(Pe[d+4*g>>2]);return p}function wc(c){for(;c.length;){var d=c.pop();c.pop()(d)}}function Un(c,d){if(!(c instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof c} which is not a function`);var p=Ss(c.name||"unknownFunctionName",function(){});p.prototype=c.prototype;var g=new p,I=c.apply(g,d);return I instanceof Object?I:g}function Qi(c,d,p,g,I,b){var R=d.length;R<2&&Ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var v=d[1]!==null&&p!==null,U=!1,L=1;L<d.length;++L)if(d[L]!==null&&d[L].destructorFunction===void 0){U=!0;break}var Z=d[0].name!=="void",ae="",ce="";for(L=0;L<R-2;++L)ae+=(L!==0?", ":"")+"arg"+L,ce+=(L!==0?", ":"")+"arg"+L+"Wired";var se=`
|
|
53
|
+
return function ${Lt(c)}(${ae}) {
|
|
54
|
+
if (arguments.length !== ${R-2}) {
|
|
55
|
+
throwBindingError('function ${c} called with ${arguments.length} arguments, expected ${R-2} args!');
|
|
56
|
+
}`;U&&(se+=`var destructors = [];
|
|
57
|
+
`);var Ne=U?"destructors":"null",Fe=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],Oe=[Ve,g,I,wc,d[0],d[1]];for(v&&(se+="var thisWired = classParam.toWireType("+Ne+`, this);
|
|
58
|
+
`),L=0;L<R-2;++L)se+="var arg"+L+"Wired = argType"+L+".toWireType("+Ne+", arg"+L+"); // "+d[L+2].name+`
|
|
59
|
+
`,Fe.push("argType"+L),Oe.push(d[L+2]);if(v&&(ce="thisWired"+(ce.length>0?", ":"")+ce),se+=(Z||b?"var rv = ":"")+"invoker(fn"+(ce.length>0?", ":"")+ce+`);
|
|
60
|
+
`,U)se+=`runDestructors(destructors);
|
|
61
|
+
`;else for(L=v?1:2;L<d.length;++L){var it=L===1?"thisWired":"arg"+(L-2)+"Wired";d[L].destructorFunction!==null&&(se+=it+"_dtor("+it+"); // "+d[L].name+`
|
|
62
|
+
`,Fe.push(it+"_dtor"),Oe.push(d[L].destructorFunction))}return Z&&(se+=`var ret = retType.fromWireType(rv);
|
|
63
|
+
return ret;
|
|
64
|
+
`),se+=`}
|
|
65
|
+
`,Fe.push(se),Un(Function,Fe).apply(null,Oe)}function Mc(){this.allocated=[void 0],this.freelist=[]}var Ut=new Mc;function Oc(c){c>=Ut.reserved&&--Ut.get(c).refcount==0&&Ut.free(c)}function Ar(){for(var c=0,d=Ut.reserved;d<Ut.allocated.length;++d)Ut.allocated[d]!==void 0&&++c;return c}var Yi={toValue:c=>(c||Ve("Cannot use deleted val. handle = "+c),Ut.get(c).value),toHandle:c=>{switch(c){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Ut.allocate({refcount:1,value:c})}}};function vs(c){if(c===null)return"null";var d=typeof c;return d==="object"||d==="array"||d==="function"?c.toString():""+c}function xc(c,d){switch(d){case 2:return function(p){return this.fromWireType(Cn[p>>2])};case 3:return function(p){return this.fromWireType(Nn[p>>3])};default:throw new TypeError("Unknown float type: "+c)}}function kc(c,d,p){switch(d){case 0:return p?function(g){return te[g]}:function(g){return ue[g]};case 1:return p?function(g){return ye[g>>1]}:function(g){return Ie[g>>1]};case 2:return p?function(g){return Y[g>>2]}:function(g){return Pe[g>>2]};default:throw new TypeError("Unknown integer type: "+c)}}var S=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,_=(c,d)=>{for(var p=c,g=p>>1,I=g+d/2;!(g>=I)&&Ie[g];)++g;if((p=g<<1)-c>32&&S)return S.decode(ue.subarray(c,p));for(var b="",R=0;!(R>=d/2);++R){var v=ye[c+2*R>>1];if(v==0)break;b+=String.fromCharCode(v)}return b},D=(c,d,p)=>{if(p===void 0&&(p=2147483647),p<2)return 0;for(var g=d,I=(p-=2)<2*c.length?p/2:c.length,b=0;b<I;++b){var R=c.charCodeAt(b);ye[d>>1]=R,d+=2}return ye[d>>1]=0,d-g},k=c=>2*c.length,B=(c,d)=>{for(var p=0,g="";!(p>=d/4);){var I=Y[c+4*p>>2];if(I==0)break;if(++p,I>=65536){var b=I-65536;g+=String.fromCharCode(55296|b>>10,56320|1023&b)}else g+=String.fromCharCode(I)}return g},H=(c,d,p)=>{if(p===void 0&&(p=2147483647),p<4)return 0;for(var g=d,I=g+p-4,b=0;b<c.length;++b){var R=c.charCodeAt(b);if(R>=55296&&R<=57343&&(R=65536+((1023&R)<<10)|1023&c.charCodeAt(++b)),Y[d>>2]=R,(d+=4)+4>I)break}return Y[d>>2]=0,d-g},z=c=>{for(var d=0,p=0;p<c.length;++p){var g=c.charCodeAt(p);g>=55296&&g<=57343&&++p,d+=4}return d},Q={},re=[],W=[],he={},we=()=>{if(!we.strings){var c={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:m||"./this.program"};for(var d in he)he[d]===void 0?delete c[d]:c[d]=he[d];var p=[];for(var d in c)p.push(`${d}=${c[d]}`);we.strings=p}return we.strings},Ce,ge,Me,rt=function(c,d,p,g){c||(c=this),this.parent=c,this.mount=c.mount,this.mounted=null,this.id=E.nextInode++,this.name=d,this.mode=p,this.node_ops={},this.stream_ops={},this.rdev=g},ze=365,ht=146;Object.defineProperties(rt.prototype,{read:{get:function(){return(this.mode&ze)===ze},set:function(c){c?this.mode|=ze:this.mode&=-366}},write:{get:function(){return(this.mode&ht)===ht},set:function(c){c?this.mode|=ht:this.mode&=-147}},isFolder:{get:function(){return E.isDir(this.mode)}},isDevice:{get:function(){return E.isChrdev(this.mode)}}}),E.FSNode=rt,E.createPreloadedFile=function(c,d,p,g,I,b,R,v,U,L){var Z=d?Xt.resolve(me.join2(c,d)):c;function ae(ce){function se(Ne){L&&L(),v||E.createDataFile(c,d,Ne,g,I,U),b&&b(),bo()}(function(Ne,Fe,Oe,it){typeof Browser!="undefined"&&Browser.init();var et=!1;return nl.forEach(function(Et){et||Et.canHandle(Fe)&&(Et.handle(Ne,Fe,Oe,it),et=!0)}),et})(ce,Z,se,()=>{R&&R(),bo()})||se(ce)}ie(),typeof p=="string"?sl(p,ce=>ae(ce),R):ae(p)},E.staticInit(),function(){for(var c=new Array(256),d=0;d<256;++d)c[d]=String.fromCharCode(d);hc=c}(),qi=o.BindingError=class extends Error{constructor(c){super(c),this.name="BindingError"}},fc=o.InternalError=class extends Error{constructor(c){super(c),this.name="InternalError"}},Sr.prototype.isAliasOf=gc,Sr.prototype.clone=yc,Sr.prototype.delete=dl,Sr.prototype.isDeleted=Ac,Sr.prototype.deleteLater=bc,o.getInheritedInstanceCount=al,o.getLiveInheritedInstances=cl,o.flushPendingDeletes=rr,o.setDelayFunction=Ic,yr.prototype.getPointee=ml,yr.prototype.destructor=Cc,yr.prototype.argPackAdvance=8,yr.prototype.readValueFromPointer=xo,yr.prototype.deleteObject=pl,yr.prototype.fromWireType=Sc,Dc=o.UnboundTypeError=(Ce=Error,(Me=Ss(ge="UnboundTypeError",function(c){this.name=ge,this.message=c;var d=new Error(c).stack;d!==void 0&&(this.stack=this.toString()+`
|
|
66
|
+
`+d.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(Ce.prototype),Me.prototype.constructor=Me,Me.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},Me),Object.assign(Mc.prototype,{get(c){return this.allocated[c]},has(c){return this.allocated[c]!==void 0},allocate(c){var d=this.freelist.pop()||this.allocated.length;return this.allocated[d]=c,d},free(c){this.allocated[c]=void 0,this.freelist.push(c)}}),Ut.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Ut.reserved=Ut.allocated.length,o.count_emval_handles=Ar;var Je,wt={p:function(c,d,p){throw new Hi(c).init(d,p),c},C:function(c,d,p){yt.varargs=p;try{var g=yt.getStreamFromFD(c);switch(d){case 0:return(I=yt.get())<0?-28:E.createStream(g,I).fd;case 1:case 2:case 6:case 7:return 0;case 3:return g.flags;case 4:var I=yt.get();return g.flags|=I,0;case 5:return I=yt.get(),ye[I+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return b=28,Y[Vn()>>2]=b,-1}}catch(R){if(E===void 0||R.name!=="ErrnoError")throw R;return-R.errno}var b},w:function(c,d,p,g){yt.varargs=g;try{d=yt.getStr(d),d=yt.calculateAt(c,d);var I=g?yt.get():0;return E.open(d,p,I).fd}catch(b){if(E===void 0||b.name!=="ErrnoError")throw b;return-b.errno}},t:function(c,d,p,g,I){},n:function(c,d,p,g,I){var b=ui(p);tr(c,{name:d=P(d),fromWireType:function(R){return!!R},toWireType:function(R,v){return v?g:I},argPackAdvance:8,readValueFromPointer:function(R){var v;if(p===1)v=te;else if(p===2)v=ye;else{if(p!==4)throw new TypeError("Unknown boolean type size: "+d);v=Y}return this.fromWireType(v[R>>b])},destructorFunction:null})},r:function(c,d,p,g,I,b,R,v,U,L,Z,ae,ce){Z=P(Z),b=Xi(I,b),v&&(v=Xi(R,v)),L&&(L=Xi(U,L)),ce=Xi(ae,ce);var se=Lt(Z);(function(Ne,Fe,Oe){o.hasOwnProperty(Ne)?((Oe===void 0||o[Ne].overloadTable!==void 0&&o[Ne].overloadTable[Oe]!==void 0)&&Ve(`Cannot register public name '${Ne}' twice`),Rc(o,Ne,Ne),o.hasOwnProperty(Oe)&&Ve(`Cannot register multiple overloads of a function with the same number of arguments (${Oe})!`),o[Ne].overloadTable[Oe]=Fe):(o[Ne]=Fe,Oe!==void 0&&(o[Ne].numArguments=Oe))})(se,function(){Rs(`Cannot construct ${Z} due to unbound types`,[g])}),Hr([c,d,p],g?[g]:[],function(Ne){var Fe,Oe;Ne=Ne[0],Oe=g?(Fe=Ne.registeredClass).instancePrototype:Sr.prototype;var it=Ss(se,function(){if(Object.getPrototypeOf(this)!==et)throw new qi("Use 'new' to construct "+Z);if(Et.constructor_body===void 0)throw new qi(Z+" has no accessible constructor");var lt=Et.constructor_body[arguments.length];if(lt===void 0)throw new qi(`Tried to invoke ctor of ${Z} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Et.constructor_body).toString()}) parameters instead!`);return lt.apply(this,arguments)}),et=Object.create(Oe,{constructor:{value:it}});it.prototype=et;var Et=new ys(Z,it,et,ce,Fe,b,v,L);Et.baseClass&&(Et.baseClass.__derivedClasses===void 0&&(Et.baseClass.__derivedClasses=[]),Et.baseClass.__derivedClasses.push(Et));var Ki=new yr(Z,Et,!0,!1,!1),ur=new yr(Z+"*",Et,!1,!1,!1),ko=new yr(Z+" const*",Et,!1,!0,!1);return No[c]={pointerType:ur,constPointerType:ko},function(lt,xh,fl){o.hasOwnProperty(lt)||er("Replacing nonexistant public symbol"),o[lt].overloadTable!==void 0&&fl!==void 0?o[lt].overloadTable[fl]=xh:(o[lt]=xh,o[lt].argCount=fl)}(se,it),[Ki,ur,ko]})},q:function(c,d,p,g,I,b){var R=Ln(d,p);I=Xi(g,I),Hr([],[c],function(v){var U=`constructor ${(v=v[0]).name}`;if(v.registeredClass.constructor_body===void 0&&(v.registeredClass.constructor_body=[]),v.registeredClass.constructor_body[d-1]!==void 0)throw new qi(`Cannot register multiple constructors with identical number of parameters (${d-1}) for class '${v.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return v.registeredClass.constructor_body[d-1]=()=>{Rs(`Cannot construct ${v.name} due to unbound types`,R)},Hr([],R,function(L){return L.splice(1,0,null),v.registeredClass.constructor_body[d-1]=Qi(U,L,null,I,b),[]}),[]})},d:function(c,d,p,g,I,b,R,v,U){var L=Ln(p,g);d=P(d),b=Xi(I,b),Hr([],[c],function(Z){var ae=`${(Z=Z[0]).name}.${d}`;function ce(){Rs(`Cannot call ${ae} due to unbound types`,L)}d.startsWith("@@")&&(d=Symbol[d.substring(2)]),v&&Z.registeredClass.pureVirtualFunctions.push(d);var se=Z.registeredClass.instancePrototype,Ne=se[d];return Ne===void 0||Ne.overloadTable===void 0&&Ne.className!==Z.name&&Ne.argCount===p-2?(ce.argCount=p-2,ce.className=Z.name,se[d]=ce):(Rc(se,d,ae),se[d].overloadTable[p-2]=ce),Hr([],L,function(Fe){var Oe=Qi(ae,Fe,Z,b,R,U);return se[d].overloadTable===void 0?(Oe.argCount=p-2,se[d]=Oe):se[d].overloadTable[p-2]=Oe,[]}),[]})},D:function(c,d){tr(c,{name:d=P(d),fromWireType:function(p){var g=Yi.toValue(p);return Oc(p),g},toWireType:function(p,g){return Yi.toHandle(g)},argPackAdvance:8,readValueFromPointer:xo,destructorFunction:null})},k:function(c,d,p){var g=ui(p);tr(c,{name:d=P(d),fromWireType:function(I){return I},toWireType:function(I,b){return b},argPackAdvance:8,readValueFromPointer:xc(d,g),destructorFunction:null})},c:function(c,d,p,g,I){d=P(d),I===-1&&(I=4294967295);var b=ui(p),R=L=>L;if(g===0){var v=32-8*p;R=L=>L<<v>>>v}var U=d.includes("unsigned");tr(c,{name:d,fromWireType:R,toWireType:U?function(L,Z){return this.name,Z>>>0}:function(L,Z){return this.name,Z},argPackAdvance:8,readValueFromPointer:kc(d,b,g!==0),destructorFunction:null})},b:function(c,d,p){var g=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][d];function I(b){var R=Pe,v=R[b>>=2],U=R[b+1];return new g(R.buffer,U,v)}tr(c,{name:p=P(p),fromWireType:I,argPackAdvance:8,readValueFromPointer:I},{ignoreDuplicateRegistrations:!0})},j:function(c,d){var p=(d=P(d))==="std::string";tr(c,{name:d,fromWireType:function(g){var I,b=Pe[g>>2],R=g+4;if(p)for(var v=R,U=0;U<=b;++U){var L=R+U;if(U==b||ue[L]==0){var Z=Gi(v,L-v);I===void 0?I=Z:(I+="\0",I+=Z),v=L+1}}else{var ae=new Array(b);for(U=0;U<b;++U)ae[U]=String.fromCharCode(ue[R+U]);I=ae.join("")}return Ct(g),I},toWireType:function(g,I){var b;I instanceof ArrayBuffer&&(I=new Uint8Array(I));var R=typeof I=="string";R||I instanceof Uint8Array||I instanceof Uint8ClampedArray||I instanceof Int8Array||Ve("Cannot pass non-string to std::string"),b=p&&R?Ro(I):I.length;var v=Zi(4+b+1),U=v+4;if(Pe[v>>2]=b,p&&R)vo(I,ue,U,b+1);else if(R)for(var L=0;L<b;++L){var Z=I.charCodeAt(L);Z>255&&(Ct(U),Ve("String has UTF-16 code units that do not fit in 8 bits")),ue[U+L]=Z}else for(L=0;L<b;++L)ue[U+L]=I[L];return g!==null&&g.push(Ct,v),v},argPackAdvance:8,readValueFromPointer:xo,destructorFunction:function(g){Ct(g)}})},f:function(c,d,p){var g,I,b,R,v;p=P(p),d===2?(g=_,I=D,R=k,b=()=>Ie,v=1):d===4&&(g=B,I=H,R=z,b=()=>Pe,v=2),tr(c,{name:p,fromWireType:function(U){for(var L,Z=Pe[U>>2],ae=b(),ce=U+4,se=0;se<=Z;++se){var Ne=U+4+se*d;if(se==Z||ae[Ne>>v]==0){var Fe=g(ce,Ne-ce);L===void 0?L=Fe:(L+="\0",L+=Fe),ce=Ne+d}}return Ct(U),L},toWireType:function(U,L){typeof L!="string"&&Ve(`Cannot pass non-string to C++ string type ${p}`);var Z=R(L),ae=Zi(4+Z+d);return Pe[ae>>2]=Z>>v,I(L,ae+4,Z+d),U!==null&&U.push(Ct,ae),ae},argPackAdvance:8,readValueFromPointer:xo,destructorFunction:function(U){Ct(U)}})},o:function(c,d){tr(c,{isVoid:!0,name:d=P(d),argPackAdvance:0,fromWireType:function(){},toWireType:function(p,g){}})},g:function(c,d,p,g){var I,b;(c=re[c])(d=Yi.toValue(d),p=(b=Q[I=p])===void 0?P(I):b,null,g)},m:Oc,l:function(c,d){var p=function(Fe,Oe){for(var it,et,Et,Ki=new Array(Fe),ur=0;ur<Fe;++ur)Ki[ur]=(it=Pe[Oe+4*ur>>2],et="parameter "+ur,Et=void 0,(Et=dr[it])===void 0&&Ve(et+" has unknown type "+bs(it)),Et);return Ki}(c,d),g=p[0],I=g.name+"_$"+p.slice(1).map(function(Fe){return Fe.name}).join("_")+"$",b=W[I];if(b!==void 0)return b;for(var R=["retType"],v=[g],U="",L=0;L<c-1;++L)U+=(L!==0?", ":"")+"arg"+L,R.push("argType"+L),v.push(p[1+L]);var Z="return function "+Lt("methodCaller_"+I)+`(handle, name, destructors, args) {
|
|
67
|
+
`,ae=0;for(L=0;L<c-1;++L)Z+=" var arg"+L+" = argType"+L+".readValueFromPointer(args"+(ae?"+"+ae:"")+`);
|
|
68
|
+
`,ae+=p[L+1].argPackAdvance;for(Z+=" var rv = handle[name]("+U+`);
|
|
69
|
+
`,L=0;L<c-1;++L)p[L+1].deleteObject&&(Z+=" argType"+L+".deleteObject(arg"+L+`);
|
|
70
|
+
`);g.isVoid||(Z+=` return retType.toWireType(destructors, rv);
|
|
71
|
+
`),Z+=`};
|
|
72
|
+
`,R.push(Z);var ce,se,Ne=Un(Function,R).apply(null,v);return ce=Ne,se=re.length,re.push(ce),b=se,W[I]=b,b},a:()=>{$r("")},e:function(){return Date.now()},v:()=>ue.length,A:(c,d,p)=>ue.copyWithin(c,d,d+p),u:c=>{ue.length,$r("OOM")},y:(c,d)=>{var p=0;return we().forEach(function(g,I){var b=d+p;Pe[c+4*I>>2]=b,((R,v)=>{for(var U=0;U<R.length;++U)te[0|v++]=R.charCodeAt(U);te[0|v]=0})(g,b),p+=g.length+1}),0},z:(c,d)=>{var p=we();Pe[c>>2]=p.length;var g=0;return p.forEach(function(I){g+=I.length+1}),Pe[d>>2]=g,0},i:function(c){try{var d=yt.getStreamFromFD(c);return E.close(d),0}catch(p){if(E===void 0||p.name!=="ErrnoError")throw p;return p.errno}},x:function(c,d){try{var p=yt.getStreamFromFD(c),g=p.tty?2:E.isDir(p.mode)?3:E.isLink(p.mode)?7:4;return te[d|0]=g,ye[d+2>>1]=0,Ke=[0,(Ee=0,+Math.abs(Ee)>=1?Ee>0?+Math.floor(Ee/4294967296)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],Y[d+8>>2]=Ke[0],Y[d+12>>2]=Ke[1],Ke=[0,(Ee=0,+Math.abs(Ee)>=1?Ee>0?+Math.floor(Ee/4294967296)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],Y[d+16>>2]=Ke[0],Y[d+20>>2]=Ke[1],0}catch(I){if(E===void 0||I.name!=="ErrnoError")throw I;return I.errno}},B:function(c,d,p,g){try{var I=((b,R,v,U)=>{for(var L=0,Z=0;Z<v;Z++){var ae=Pe[R>>2],ce=Pe[R+4>>2];R+=8;var se=E.read(b,te,ae,ce,U);if(se<0)return-1;if(L+=se,se<ce)break;U!==void 0&&(U+=se)}return L})(yt.getStreamFromFD(c),d,p);return Pe[g>>2]=I,0}catch(b){if(E===void 0||b.name!=="ErrnoError")throw b;return b.errno}},s:function(c,d,p,g,I){var b,R,v=(R=p)+2097152>>>0<4194305-!!(b=d)?(b>>>0)+4294967296*R:NaN;try{if(isNaN(v))return 61;var U=yt.getStreamFromFD(c);return E.llseek(U,v,g),Ke=[U.position>>>0,(Ee=U.position,+Math.abs(Ee)>=1?Ee>0?+Math.floor(Ee/4294967296)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],Y[I>>2]=Ke[0],Y[I+4>>2]=Ke[1],U.getdents&&v===0&&g===0&&(U.getdents=null),0}catch(L){if(E===void 0||L.name!=="ErrnoError")throw L;return L.errno}},h:function(c,d,p,g){try{var I=((b,R,v,U)=>{for(var L=0,Z=0;Z<v;Z++){var ae=Pe[R>>2],ce=Pe[R+4>>2];R+=8;var se=E.write(b,te,ae,ce,U);if(se<0)return-1;L+=se,U!==void 0&&(U+=se)}return L})(yt.getStreamFromFD(c),d,p);return Pe[g>>2]=I,0}catch(b){if(E===void 0||b.name!=="ErrnoError")throw b;return b.errno}}},Zi=(function(){var c,d,p,g,I={a:wt};function b(R,v){var U,L,Z=R.exports;return w=(x=Z).E,U=w.buffer,o.HEAP8=te=new Int8Array(U),o.HEAP16=ye=new Int16Array(U),o.HEAP32=Y=new Int32Array(U),o.HEAPU8=ue=new Uint8Array(U),o.HEAPU16=Ie=new Uint16Array(U),o.HEAPU32=Pe=new Uint32Array(U),o.HEAPF32=Cn=new Float32Array(U),o.HEAPF64=Nn=new Float64Array(U),Dn=x.H,L=x.F,Ts.unshift(L),bo(),Z}if(ie(),o.instantiateWasm)try{return o.instantiateWasm(I,b)}catch(R){N("Module.instantiateWasm callback failed with error: "+R),r(R)}(c=A,d=ci,p=I,g=function(R){b(R.instance)},c||typeof WebAssembly.instantiateStreaming!="function"||kt(d)||typeof fetch!="function"?Br(d,p,g):fetch(d,{credentials:"same-origin"}).then(R=>WebAssembly.instantiateStreaming(R,p).then(g,function(v){return N("wasm streaming compile failed: "+v),N("falling back to ArrayBuffer instantiation"),Br(d,p,g)}))).catch(r)}(),c=>(Zi=x.G)(c)),Ct=c=>(Ct=x.I)(c),Vn=()=>(Vn=x.J)(),br=c=>(br=x.K)(c),Fn=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=x.L)(),c=>(Fn=x.M)(c));o.dynCall_jiji=(c,d,p,g,I)=>(o.dynCall_jiji=x.N)(c,d,p,g,I),o._ff_h264_cabac_tables=67061;function Cs(){function c(){Je||(Je=!0,o.calledRun=!0,wn||(o.noFSInit||E.init.initialized||E.init(),E.ignorePermissions=!1,Ir.init(),Bi(Ts),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)d=o.postRun.shift(),$i.unshift(d);var d;Bi($i)}()))}cr>0||(function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)d=o.preRun.shift(),Fr.unshift(d);var d;Bi(Fr)}(),cr>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),c()},1)):c()))}if(ai=function c(){Je||Cs(),Je||(ai=c)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Cs(),t.ready}})(),cy=ay,dy=class extends Ka{constructor(i){super(cy,i!=null&&i.wasmPath?fetch(i==null?void 0:i.wasmPath).then(t=>t.arrayBuffer()):void 0,i==null?void 0:i.workerMode,i==null?void 0:i.canvas,i==null?void 0:i.yuvMode)}},Ox=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((S,_)=>{e=S,r=_});var s,n=Object.assign({},o),a=typeof window=="object",u=typeof importScripts=="function",m=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(a||u)&&(u?m=self.location.href:typeof document!="undefined"&&document.currentScript&&(m=document.currentScript.src),i&&(m=i),m=m.indexOf("blob:")!==0?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",u&&(s=S=>{var _=new XMLHttpRequest;return _.open("GET",S,!1),_.responseType="arraybuffer",_.send(null),new Uint8Array(_.response)}));var h,f=o.print||console.log.bind(console),T=o.printErr||console.error.bind(console);Object.assign(o,n),n=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(h=o.wasmBinary);var A,C;o.noExitRuntime,typeof WebAssembly!="object"&&cr("no native wasm support detected");var N,w,x,te,ue,ye,Ie,Y,Pe,Cn=!1,Nn=[],Dn=[],wn=[],Fr=0,Ts=null,$i=null;function cr(S){o.onAbort&&o.onAbort(S),T(S="Aborted("+S+")"),Cn=!0,S+=". Build with -sASSERTIONS for more info.";var _=new WebAssembly.RuntimeError(S);throw r(_),_}var ni,ai;function ie(S){return S.startsWith("data:application/octet-stream;base64,")}function bo(S){if(S==ni&&h)return new Uint8Array(h);if(s)return s(S);throw"both async and sync fetching of the wasm failed"}function $r(S,_,D){return function(k){return h||!a&&!u||typeof fetch!="function"?Promise.resolve().then(()=>bo(k)):fetch(k,{credentials:"same-origin"}).then(B=>{if(!B.ok)throw"failed to load wasm binary file at '"+k+"'";return B.arrayBuffer()}).catch(()=>bo(k))}(S).then(k=>WebAssembly.instantiate(k,_)).then(k=>k).then(D,k=>{T("failed to asynchronously prepare wasm: "+k),cr(k)})}ie(ni="videodec_simd.wasm")||(ai=ni,ni=o.locateFile?o.locateFile(ai,m):m+ai);var ci=S=>{for(;S.length>0;)S.shift()(o)};function Mn(S){this.excPtr=S,this.ptr=S-24,this.set_type=function(_){ye[this.ptr+4>>2]=_},this.get_type=function(){return ye[this.ptr+4>>2]},this.set_destructor=function(_){ye[this.ptr+8>>2]=_},this.get_destructor=function(){return ye[this.ptr+8>>2]},this.set_caught=function(_){_=_?1:0,N[this.ptr+12|0]=_},this.get_caught=function(){return N[this.ptr+12|0]!=0},this.set_rethrown=function(_){_=_?1:0,N[this.ptr+13|0]=_},this.get_rethrown=function(){return N[this.ptr+13|0]!=0},this.init=function(_,D){this.set_adjusted_ptr(0),this.set_type(_),this.set_destructor(D)},this.set_adjusted_ptr=function(_){ye[this.ptr+16>>2]=_},this.get_adjusted_ptr=function(){return ye[this.ptr+16>>2]},this.get_exception_ptr=function(){if(xc(this.get_type()))return ye[this.excPtr>>2];var _=this.get_adjusted_ptr();return _!==0?_:this.excPtr}}function Ee(S){switch(S){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${S}`)}}var Ke=void 0;function kt(S){for(var _="",D=S;w[D];)_+=Ke[w[D++]];return _}var J={},Br={},Bi={},Hi=void 0;function me(S){throw new Hi(S)}var On=void 0;function Xt(S){throw new On(S)}function Wi(S,_,D){function k(Q){var re=D(Q);re.length!==S.length&&Xt("Mismatched type converter count");for(var W=0;W<S.length;++W)Pt(S[W],re[W])}S.forEach(function(Q){Bi[Q]=_});var B=new Array(_.length),H=[],z=0;_.forEach((Q,re)=>{Br.hasOwnProperty(Q)?B[re]=Br[Q]:(H.push(Q),J.hasOwnProperty(Q)||(J[Q]=[]),J[Q].push(()=>{B[re]=Br[Q],++z===H.length&&k(B)}))}),H.length===0&&k(B)}function Pt(S,_,D={}){if(!("argPackAdvance"in _))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(k,B,H={}){var z=B.name;if(k||me(`type "${z}" must have a positive integer typeid pointer`),Br.hasOwnProperty(k)){if(H.ignoreDuplicateRegistrations)return;me(`Cannot register type '${z}' twice`)}if(Br[k]=B,delete Bi[k],J.hasOwnProperty(k)){var Q=J[k];delete J[k],Q.forEach(re=>re())}}(S,_,D)}function xn(S){if(!(this instanceof er)||!(S instanceof er))return!1;for(var _=this.$$.ptrType.registeredClass,D=this.$$.ptr,k=S.$$.ptrType.registeredClass,B=S.$$.ptr;_.baseClass;)D=_.upcast(D),_=_.baseClass;for(;k.baseClass;)B=k.upcast(B),k=k.baseClass;return _===k&&D===B}function Ro(S){me(S.$$.ptrType.registeredClass.name+" instance already deleted")}var vo=!1;function _s(S){}function Ir(S){S.count.value-=1,S.count.value===0&&function(_){_.smartPtr?_.smartPtrType.rawDestructor(_.smartPtr):_.ptrType.registeredClass.rawDestructor(_.ptr)}(S)}function kn(S,_,D){if(_===D)return S;if(D.baseClass===void 0)return null;var k=kn(S,_,D.baseClass);return k===null?null:D.downcast(k)}var G={};function sl(){return Object.keys(ui).length}function nl(){var S=[];for(var _ in ui)ui.hasOwnProperty(_)&&S.push(ui[_]);return S}var di=[];function E(){for(;di.length;){var S=di.pop();S.$$.deleteScheduled=!1,S.delete()}}var Gi=void 0;function yt(S){Gi=S,di.length&&Gi&&Gi(E)}var ui={};function hc(S,_){return _=function(D,k){for(k===void 0&&me("ptr should not be undefined");D.baseClass;)k=D.upcast(k),D=D.baseClass;return k}(S,_),ui[_]}function P(S,_){return _.ptrType&&_.ptr||Xt("makeClassHandle requires ptr and ptrType"),!!_.smartPtrType!=!!_.smartPtr&&Xt("Both smartPtrType and smartPtr must be specified"),_.count={value:1},dr(Object.create(S,{$$:{value:_}}))}function ji(S){var _=this.getPointee(S);if(!_)return this.destructor(S),null;var D=hc(this.registeredClass,_);if(D!==void 0){if(D.$$.count.value===0)return D.$$.ptr=_,D.$$.smartPtr=S,D.clone();var k=D.clone();return this.destructor(S),k}function B(){return this.isSmartPointer?P(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:_,smartPtrType:this,smartPtr:S}):P(this.registeredClass.instancePrototype,{ptrType:this,ptr:S})}var H,z=this.registeredClass.getActualType(_),Q=G[z];if(!Q)return B.call(this);H=this.isConst?Q.constPointerType:Q.pointerType;var re=kn(_,this.registeredClass,H.registeredClass);return re===null?B.call(this):this.isSmartPointer?P(H.registeredClass.instancePrototype,{ptrType:H,ptr:re,smartPtrType:this,smartPtr:S}):P(H.registeredClass.instancePrototype,{ptrType:H,ptr:re})}var dr=function(S){return typeof FinalizationRegistry=="undefined"?(dr=_=>_,S):(vo=new FinalizationRegistry(_=>{Ir(_.$$)}),_s=_=>vo.unregister(_),(dr=_=>{var D=_.$$;if(D.smartPtr){var k={$$:D};vo.register(_,k,_)}return _})(S))};function Is(){if(this.$$.ptr||Ro(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var S,_=dr(Object.create(Object.getPrototypeOf(this),{$$:{value:(S=this.$$,{count:S.count,deleteScheduled:S.deleteScheduled,preservePointerOnDelete:S.preservePointerOnDelete,ptr:S.ptr,ptrType:S.ptrType,smartPtr:S.smartPtr,smartPtrType:S.smartPtrType})}}));return _.$$.count.value+=1,_.$$.deleteScheduled=!1,_}function qi(){this.$$.ptr||Ro(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&me("Object already scheduled for deletion"),_s(this),Ir(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ve(){return!this.$$.ptr}function fc(){return this.$$.ptr||Ro(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&me("Object already scheduled for deletion"),di.push(this),di.length===1&&Gi&&Gi(E),this.$$.deleteScheduled=!0,this}function er(){}function Hr(S){if(S===void 0)return"_unknown";var _=(S=S.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return _>=48&&_<=57?`_${S}`:S}function tr(S,_){return S=Hr(S),{[S]:function(){return _.apply(this,arguments)}}[S]}function gc(S,_,D){if(S[_].overloadTable===void 0){var k=S[_];S[_]=function(){return S[_].overloadTable.hasOwnProperty(arguments.length)||me(`Function '${D}' called with an invalid number of arguments (${arguments.length}) - expects one of (${S[_].overloadTable})!`),S[_].overloadTable[arguments.length].apply(this,arguments)},S[_].overloadTable=[],S[_].overloadTable[k.argCount]=k}}function Pn(S,_,D,k,B,H,z,Q){this.name=S,this.constructor=_,this.instancePrototype=D,this.rawDestructor=k,this.baseClass=B,this.getActualType=H,this.upcast=z,this.downcast=Q,this.pureVirtualFunctions=[]}function Co(S,_,D){for(;_!==D;)_.upcast||me(`Expected null or instance of ${D.name}, got an instance of ${_.name}`),S=_.upcast(S),_=_.baseClass;return S}function Ec(S,_){if(_===null)return this.isReference&&me(`null is not a valid ${this.name}`),0;_.$$||me(`Cannot pass "${Oo(_)}" as a ${this.name}`),_.$$.ptr||me(`Cannot pass deleted object as a pointer of type ${this.name}`);var D=_.$$.ptrType.registeredClass;return Co(_.$$.ptr,D,this.registeredClass)}function Tc(S,_){var D;if(_===null)return this.isReference&&me(`null is not a valid ${this.name}`),this.isSmartPointer?(D=this.rawConstructor(),S!==null&&S.push(this.rawDestructor,D),D):0;_.$$||me(`Cannot pass "${Oo(_)}" as a ${this.name}`),_.$$.ptr||me(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&_.$$.ptrType.isConst&&me(`Cannot convert argument of type ${_.$$.smartPtrType?_.$$.smartPtrType.name:_.$$.ptrType.name} to parameter type ${this.name}`);var k=_.$$.ptrType.registeredClass;if(D=Co(_.$$.ptr,k,this.registeredClass),this.isSmartPointer)switch(_.$$.smartPtr===void 0&&me("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:_.$$.smartPtrType===this?D=_.$$.smartPtr:me(`Cannot convert argument of type ${_.$$.smartPtrType?_.$$.smartPtrType.name:_.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:D=_.$$.smartPtr;break;case 2:if(_.$$.smartPtrType===this)D=_.$$.smartPtr;else{var B=_.clone();D=this.rawShare(D,ys.toHandle(function(){B.delete()})),S!==null&&S.push(this.rawDestructor,D)}break;default:me("Unsupporting sharing policy")}return D}function _c(S,_){if(_===null)return this.isReference&&me(`null is not a valid ${this.name}`),0;_.$$||me(`Cannot pass "${Oo(_)}" as a ${this.name}`),_.$$.ptr||me(`Cannot pass deleted object as a pointer of type ${this.name}`),_.$$.ptrType.isConst&&me(`Cannot convert argument of type ${_.$$.ptrType.name} to parameter type ${this.name}`);var D=_.$$.ptrType.registeredClass;return Co(_.$$.ptr,D,this.registeredClass)}function No(S){return this.fromWireType(ue[S>>2])}function al(S){return this.rawGetPointee&&(S=this.rawGetPointee(S)),S}function cl(S){this.rawDestructor&&this.rawDestructor(S)}function Do(S){S!==null&&S.delete()}function rr(S,_,D,k,B,H,z,Q,re,W,he){this.name=S,this.registeredClass=_,this.isReference=D,this.isConst=k,this.isSmartPointer=B,this.pointeeType=H,this.sharingPolicy=z,this.rawGetPointee=Q,this.rawConstructor=re,this.rawShare=W,this.rawDestructor=he,B||_.baseClass!==void 0?this.toWireType=Tc:k?(this.toWireType=Ec,this.destructorFunction=null):(this.toWireType=_c,this.destructorFunction=null)}var Wr=[],Ic=S=>{var _=Wr[S];return _||(S>=Wr.length&&(Wr.length=S+1),Wr[S]=_=Pe.get(S)),_},wo=(S,_,D)=>S.includes("j")?((k,B,H)=>{var z=o["dynCall_"+k];return H&&H.length?z.apply(null,[B].concat(H)):z.call(null,B)})(S,_,D):Ic(_).apply(null,D);function zi(S,_){var D,k,B,H=(S=kt(S)).includes("j")?(D=S,k=_,B=[],function(){return B.length=0,Object.assign(B,arguments),wo(D,k,B)}):Ic(_);return typeof H!="function"&&me(`unknown function pointer with signature ${S}: ${_}`),H}var Mo=void 0;function Sc(S){var _=vs(S),D=kt(_);return Ar(_),D}function Ji(S,_){var D=[],k={};throw _.forEach(function B(H){k[H]||Br[H]||(Bi[H]?Bi[H].forEach(B):(D.push(H),k[H]=!0))}),new Mo(`${S}: `+D.map(Sc).join([", "]))}function yc(S,_){for(var D=[],k=0;k<S;k++)D.push(ye[_+4*k>>2]);return D}function dl(S){for(;S.length;){var _=S.pop();S.pop()(_)}}function Ac(S,_){if(!(S instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof S} which is not a function`);var D=tr(S.name||"unknownFunctionName",function(){});D.prototype=S.prototype;var k=new D,B=S.apply(k,_);return B instanceof Object?B:k}function bc(S,_,D,k,B,H){var z=_.length;z<2&&me("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var Q=_[1]!==null&&D!==null,re=!1,W=1;W<_.length;++W)if(_[W]!==null&&_[W].destructorFunction===void 0){re=!0;break}var he=_[0].name!=="void",we="",Ce="";for(W=0;W<z-2;++W)we+=(W!==0?", ":"")+"arg"+W,Ce+=(W!==0?", ":"")+"arg"+W+"Wired";var ge=`
|
|
73
|
+
return function ${Hr(S)}(${we}) {
|
|
74
|
+
if (arguments.length !== ${z-2}) {
|
|
75
|
+
throwBindingError('function ${S} called with ${arguments.length} arguments, expected ${z-2} args!');
|
|
76
|
+
}`;re&&(ge+=`var destructors = [];
|
|
77
|
+
`);var Me=re?"destructors":"null",rt=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],ze=[me,k,B,dl,_[0],_[1]];for(Q&&(ge+="var thisWired = classParam.toWireType("+Me+`, this);
|
|
78
|
+
`),W=0;W<z-2;++W)ge+="var arg"+W+"Wired = argType"+W+".toWireType("+Me+", arg"+W+"); // "+_[W+2].name+`
|
|
79
|
+
`,rt.push("argType"+W),ze.push(_[W+2]);if(Q&&(Ce="thisWired"+(Ce.length>0?", ":"")+Ce),ge+=(he||H?"var rv = ":"")+"invoker(fn"+(Ce.length>0?", ":"")+Ce+`);
|
|
80
|
+
`,re)ge+=`runDestructors(destructors);
|
|
81
|
+
`;else for(W=Q?1:2;W<_.length;++W){var ht=W===1?"thisWired":"arg"+(W-2)+"Wired";_[W].destructorFunction!==null&&(ge+=ht+"_dtor("+ht+"); // "+_[W].name+`
|
|
82
|
+
`,rt.push(ht+"_dtor"),ze.push(_[W].destructorFunction))}return he&&(ge+=`var ret = retType.fromWireType(rv);
|
|
83
|
+
return ret;
|
|
84
|
+
`),ge+=`}
|
|
85
|
+
`,rt.push(ge),Ac(Function,rt).apply(null,ze)}function Sr(){this.allocated=[void 0],this.freelist=[]}var Lt=new Sr;function Ss(S){S>=Lt.reserved&&--Lt.get(S).refcount==0&&Lt.free(S)}function Rc(){for(var S=0,_=Lt.reserved;_<Lt.allocated.length;++_)Lt.allocated[_]!==void 0&&++S;return S}var ys={toValue:S=>(S||me("Cannot use deleted val. handle = "+S),Lt.get(S).value),toHandle:S=>{switch(S){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Lt.allocate({refcount:1,value:S})}}};function Oo(S){if(S===null)return"null";var _=typeof S;return _==="object"||_==="array"||_==="function"?S.toString():""+S}function ul(S,_){switch(_){case 2:return function(D){return this.fromWireType(Ie[D>>2])};case 3:return function(D){return this.fromWireType(Y[D>>3])};default:throw new TypeError("Unknown float type: "+S)}}function ll(S,_,D){switch(_){case 0:return D?function(k){return N[k]}:function(k){return w[k]};case 1:return D?function(k){return x[k>>1]}:function(k){return te[k>>1]};case 2:return D?function(k){return ue[k>>2]}:function(k){return ye[k>>2]};default:throw new TypeError("Unknown integer type: "+S)}}var vc=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,xo=(S,_,D)=>{for(var k=_+D,B=_;S[B]&&!(B>=k);)++B;if(B-_>16&&S.buffer&&vc)return vc.decode(S.subarray(_,B));for(var H="";_<B;){var z=S[_++];if(128&z){var Q=63&S[_++];if((224&z)!=192){var re=63&S[_++];if((z=(240&z)==224?(15&z)<<12|Q<<6|re:(7&z)<<18|Q<<12|re<<6|63&S[_++])<65536)H+=String.fromCharCode(z);else{var W=z-65536;H+=String.fromCharCode(55296|W>>10,56320|1023&W)}}else H+=String.fromCharCode((31&z)<<6|Q)}else H+=String.fromCharCode(z)}return H},ml=(S,_)=>S?xo(w,S,_):"",Cc=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,pl=(S,_)=>{for(var D=S,k=D>>1,B=k+_/2;!(k>=B)&&te[k];)++k;if((D=k<<1)-S>32&&Cc)return Cc.decode(w.subarray(S,D));for(var H="",z=0;!(z>=_/2);++z){var Q=x[S+2*z>>1];if(Q==0)break;H+=String.fromCharCode(Q)}return H},yr=(S,_,D)=>{if(D===void 0&&(D=2147483647),D<2)return 0;for(var k=_,B=(D-=2)<2*S.length?D/2:S.length,H=0;H<B;++H){var z=S.charCodeAt(H);x[_>>1]=z,_+=2}return x[_>>1]=0,_-k},As=S=>2*S.length,Nc=(S,_)=>{for(var D=0,k="";!(D>=_/4);){var B=ue[S+4*D>>2];if(B==0)break;if(++D,B>=65536){var H=B-65536;k+=String.fromCharCode(55296|H>>10,56320|1023&H)}else k+=String.fromCharCode(B)}return k},hl=(S,_,D)=>{if(D===void 0&&(D=2147483647),D<4)return 0;for(var k=_,B=k+D-4,H=0;H<S.length;++H){var z=S.charCodeAt(H);if(z>=55296&&z<=57343&&(z=65536+((1023&z)<<10)|1023&S.charCodeAt(++H)),ue[_>>2]=z,(_+=4)+4>B)break}return ue[_>>2]=0,_-k},Xi=S=>{for(var _=0,D=0;D<S.length;++D){var k=S.charCodeAt(D);k>=55296&&k<=57343&&++D,_+=4}return _},Dc={},bs=[],Rs=[],Ln;Ln=()=>performance.now();var wc,Un,Qi,Mc=[null,[],[]];(function(){for(var S=new Array(256),_=0;_<256;++_)S[_]=String.fromCharCode(_);Ke=S})(),Hi=o.BindingError=class extends Error{constructor(S){super(S),this.name="BindingError"}},On=o.InternalError=class extends Error{constructor(S){super(S),this.name="InternalError"}},er.prototype.isAliasOf=xn,er.prototype.clone=Is,er.prototype.delete=qi,er.prototype.isDeleted=Ve,er.prototype.deleteLater=fc,o.getInheritedInstanceCount=sl,o.getLiveInheritedInstances=nl,o.flushPendingDeletes=E,o.setDelayFunction=yt,rr.prototype.getPointee=al,rr.prototype.destructor=cl,rr.prototype.argPackAdvance=8,rr.prototype.readValueFromPointer=No,rr.prototype.deleteObject=Do,rr.prototype.fromWireType=ji,Mo=o.UnboundTypeError=(wc=Error,(Qi=tr(Un="UnboundTypeError",function(S){this.name=Un,this.message=S;var _=new Error(S).stack;_!==void 0&&(this.stack=this.toString()+`
|
|
86
|
+
`+_.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(wc.prototype),Qi.prototype.constructor=Qi,Qi.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},Qi),Object.assign(Sr.prototype,{get(S){return this.allocated[S]},has(S){return this.allocated[S]!==void 0},allocate(S){var _=this.freelist.pop()||this.allocated.length;return this.allocated[_]=S,_},free(S){this.allocated[S]=void 0,this.freelist.push(S)}}),Lt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Lt.reserved=Lt.allocated.length,o.count_emval_handles=Rc;var Ut,Oc={o:function(S,_,D){throw new Mn(S).init(_,D),S},r:function(S,_,D,k,B){},m:function(S,_,D,k,B){var H=Ee(D);Pt(S,{name:_=kt(_),fromWireType:function(z){return!!z},toWireType:function(z,Q){return Q?k:B},argPackAdvance:8,readValueFromPointer:function(z){var Q;if(D===1)Q=N;else if(D===2)Q=x;else{if(D!==4)throw new TypeError("Unknown boolean type size: "+_);Q=ue}return this.fromWireType(Q[z>>H])},destructorFunction:null})},q:function(S,_,D,k,B,H,z,Q,re,W,he,we,Ce){he=kt(he),H=zi(B,H),Q&&(Q=zi(z,Q)),W&&(W=zi(re,W)),Ce=zi(we,Ce);var ge=Hr(he);(function(Me,rt,ze){o.hasOwnProperty(Me)?((ze===void 0||o[Me].overloadTable!==void 0&&o[Me].overloadTable[ze]!==void 0)&&me(`Cannot register public name '${Me}' twice`),gc(o,Me,Me),o.hasOwnProperty(ze)&&me(`Cannot register multiple overloads of a function with the same number of arguments (${ze})!`),o[Me].overloadTable[ze]=rt):(o[Me]=rt,ze!==void 0&&(o[Me].numArguments=ze))})(ge,function(){Ji(`Cannot construct ${he} due to unbound types`,[k])}),Wi([S,_,D],k?[k]:[],function(Me){var rt,ze;Me=Me[0],ze=k?(rt=Me.registeredClass).instancePrototype:er.prototype;var ht=tr(ge,function(){if(Object.getPrototypeOf(this)!==Je)throw new Hi("Use 'new' to construct "+he);if(wt.constructor_body===void 0)throw new Hi(he+" has no accessible constructor");var br=wt.constructor_body[arguments.length];if(br===void 0)throw new Hi(`Tried to invoke ctor of ${he} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(wt.constructor_body).toString()}) parameters instead!`);return br.apply(this,arguments)}),Je=Object.create(ze,{constructor:{value:ht}});ht.prototype=Je;var wt=new Pn(he,ht,Je,Ce,rt,H,Q,W);wt.baseClass&&(wt.baseClass.__derivedClasses===void 0&&(wt.baseClass.__derivedClasses=[]),wt.baseClass.__derivedClasses.push(wt));var Zi=new rr(he,wt,!0,!1,!1),Ct=new rr(he+"*",wt,!1,!1,!1),Vn=new rr(he+" const*",wt,!1,!0,!1);return G[S]={pointerType:Ct,constPointerType:Vn},function(br,Fn,Cs){o.hasOwnProperty(br)||Xt("Replacing nonexistant public symbol"),o[br].overloadTable!==void 0&&Cs!==void 0?o[br].overloadTable[Cs]=Fn:(o[br]=Fn,o[br].argCount=Cs)}(ge,ht),[Zi,Ct,Vn]})},p:function(S,_,D,k,B,H){var z=yc(_,D);B=zi(k,B),Wi([],[S],function(Q){var re=`constructor ${(Q=Q[0]).name}`;if(Q.registeredClass.constructor_body===void 0&&(Q.registeredClass.constructor_body=[]),Q.registeredClass.constructor_body[_-1]!==void 0)throw new Hi(`Cannot register multiple constructors with identical number of parameters (${_-1}) for class '${Q.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Q.registeredClass.constructor_body[_-1]=()=>{Ji(`Cannot construct ${Q.name} due to unbound types`,z)},Wi([],z,function(W){return W.splice(1,0,null),Q.registeredClass.constructor_body[_-1]=bc(re,W,null,B,H),[]}),[]})},d:function(S,_,D,k,B,H,z,Q,re){var W=yc(D,k);_=kt(_),H=zi(B,H),Wi([],[S],function(he){var we=`${(he=he[0]).name}.${_}`;function Ce(){Ji(`Cannot call ${we} due to unbound types`,W)}_.startsWith("@@")&&(_=Symbol[_.substring(2)]),Q&&he.registeredClass.pureVirtualFunctions.push(_);var ge=he.registeredClass.instancePrototype,Me=ge[_];return Me===void 0||Me.overloadTable===void 0&&Me.className!==he.name&&Me.argCount===D-2?(Ce.argCount=D-2,Ce.className=he.name,ge[_]=Ce):(gc(ge,_,we),ge[_].overloadTable[D-2]=Ce),Wi([],W,function(rt){var ze=bc(we,rt,he,H,z,re);return ge[_].overloadTable===void 0?(ze.argCount=D-2,ge[_]=ze):ge[_].overloadTable[D-2]=ze,[]}),[]})},u:function(S,_){Pt(S,{name:_=kt(_),fromWireType:function(D){var k=ys.toValue(D);return Ss(D),k},toWireType:function(D,k){return ys.toHandle(k)},argPackAdvance:8,readValueFromPointer:No,destructorFunction:null})},k:function(S,_,D){var k=Ee(D);Pt(S,{name:_=kt(_),fromWireType:function(B){return B},toWireType:function(B,H){return H},argPackAdvance:8,readValueFromPointer:ul(_,k),destructorFunction:null})},b:function(S,_,D,k,B){_=kt(_),B===-1&&(B=4294967295);var H=Ee(D),z=W=>W;if(k===0){var Q=32-8*D;z=W=>W<<Q>>>Q}var re=_.includes("unsigned");Pt(S,{name:_,fromWireType:z,toWireType:re?function(W,he){return this.name,he>>>0}:function(W,he){return this.name,he},argPackAdvance:8,readValueFromPointer:ll(_,H,k!==0),destructorFunction:null})},a:function(S,_,D){var k=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][_];function B(H){var z=ye,Q=z[H>>=2],re=z[H+1];return new k(z.buffer,re,Q)}Pt(S,{name:D=kt(D),fromWireType:B,argPackAdvance:8,readValueFromPointer:B},{ignoreDuplicateRegistrations:!0})},j:function(S,_){var D=(_=kt(_))==="std::string";Pt(S,{name:_,fromWireType:function(k){var B,H=ye[k>>2],z=k+4;if(D)for(var Q=z,re=0;re<=H;++re){var W=z+re;if(re==H||w[W]==0){var he=ml(Q,W-Q);B===void 0?B=he:(B+="\0",B+=he),Q=W+1}}else{var we=new Array(H);for(re=0;re<H;++re)we[re]=String.fromCharCode(w[z+re]);B=we.join("")}return Ar(k),B},toWireType:function(k,B){var H;B instanceof ArrayBuffer&&(B=new Uint8Array(B));var z=typeof B=="string";z||B instanceof Uint8Array||B instanceof Uint8ClampedArray||B instanceof Int8Array||me("Cannot pass non-string to std::string"),H=D&&z?(we=>{for(var Ce=0,ge=0;ge<we.length;++ge){var Me=we.charCodeAt(ge);Me<=127?Ce++:Me<=2047?Ce+=2:Me>=55296&&Me<=57343?(Ce+=4,++ge):Ce+=3}return Ce})(B):B.length;var Q=Yi(4+H+1),re=Q+4;if(ye[Q>>2]=H,D&&z)((we,Ce,ge,Me)=>{if(!(Me>0))return 0;for(var rt=ge,ze=ge+Me-1,ht=0;ht<we.length;++ht){var Je=we.charCodeAt(ht);if(Je>=55296&&Je<=57343&&(Je=65536+((1023&Je)<<10)|1023&we.charCodeAt(++ht)),Je<=127){if(ge>=ze)break;Ce[ge++]=Je}else if(Je<=2047){if(ge+1>=ze)break;Ce[ge++]=192|Je>>6,Ce[ge++]=128|63&Je}else if(Je<=65535){if(ge+2>=ze)break;Ce[ge++]=224|Je>>12,Ce[ge++]=128|Je>>6&63,Ce[ge++]=128|63&Je}else{if(ge+3>=ze)break;Ce[ge++]=240|Je>>18,Ce[ge++]=128|Je>>12&63,Ce[ge++]=128|Je>>6&63,Ce[ge++]=128|63&Je}}Ce[ge]=0})(B,w,re,H+1);else if(z)for(var W=0;W<H;++W){var he=B.charCodeAt(W);he>255&&(Ar(re),me("String has UTF-16 code units that do not fit in 8 bits")),w[re+W]=he}else for(W=0;W<H;++W)w[re+W]=B[W];return k!==null&&k.push(Ar,Q),Q},argPackAdvance:8,readValueFromPointer:No,destructorFunction:function(k){Ar(k)}})},g:function(S,_,D){var k,B,H,z,Q;D=kt(D),_===2?(k=pl,B=yr,z=As,H=()=>te,Q=1):_===4&&(k=Nc,B=hl,z=Xi,H=()=>ye,Q=2),Pt(S,{name:D,fromWireType:function(re){for(var W,he=ye[re>>2],we=H(),Ce=re+4,ge=0;ge<=he;++ge){var Me=re+4+ge*_;if(ge==he||we[Me>>Q]==0){var rt=k(Ce,Me-Ce);W===void 0?W=rt:(W+="\0",W+=rt),Ce=Me+_}}return Ar(re),W},toWireType:function(re,W){typeof W!="string"&&me(`Cannot pass non-string to C++ string type ${D}`);var he=z(W),we=Yi(4+he+_);return ye[we>>2]=he>>Q,B(W,we+4,he+_),re!==null&&re.push(Ar,we),we},argPackAdvance:8,readValueFromPointer:No,destructorFunction:function(re){Ar(re)}})},n:function(S,_){Pt(S,{isVoid:!0,name:_=kt(_),argPackAdvance:0,fromWireType:function(){},toWireType:function(D,k){}})},e:function(S,_,D,k){var B,H;(S=bs[S])(_=ys.toValue(_),D=(H=Dc[B=D])===void 0?kt(B):H,null,k)},l:Ss,h:function(S,_){var D=function(rt,ze){for(var ht,Je,wt,Zi=new Array(rt),Ct=0;Ct<rt;++Ct)Zi[Ct]=(ht=ye[ze+4*Ct>>2],Je="parameter "+Ct,wt=void 0,(wt=Br[ht])===void 0&&me(Je+" has unknown type "+Sc(ht)),wt);return Zi}(S,_),k=D[0],B=k.name+"_$"+D.slice(1).map(function(rt){return rt.name}).join("_")+"$",H=Rs[B];if(H!==void 0)return H;for(var z=["retType"],Q=[k],re="",W=0;W<S-1;++W)re+=(W!==0?", ":"")+"arg"+W,z.push("argType"+W),Q.push(D[1+W]);var he="return function "+Hr("methodCaller_"+B)+`(handle, name, destructors, args) {
|
|
87
|
+
`,we=0;for(W=0;W<S-1;++W)he+=" var arg"+W+" = argType"+W+".readValueFromPointer(args"+(we?"+"+we:"")+`);
|
|
88
|
+
`,we+=D[W+1].argPackAdvance;for(he+=" var rv = handle[name]("+re+`);
|
|
89
|
+
`,W=0;W<S-1;++W)D[W+1].deleteObject&&(he+=" argType"+W+".deleteObject(arg"+W+`);
|
|
90
|
+
`);k.isVoid||(he+=` return retType.toWireType(destructors, rv);
|
|
91
|
+
`),he+=`};
|
|
92
|
+
`,z.push(he);var Ce,ge,Me=Ac(Function,z).apply(null,Q);return Ce=Me,ge=bs.length,bs.push(Ce),H=ge,Rs[B]=H,H},f:()=>{cr("")},c:Ln,t:(S,_,D)=>w.copyWithin(S,_,_+D),s:S=>{w.length,cr("OOM")},i:(S,_,D,k)=>{for(var B,H,z,Q=0,re=0;re<D;re++){var W=ye[_>>2],he=ye[_+4>>2];_+=8;for(var we=0;we<he;we++)B=S,H=w[W+we],z=void 0,z=Mc[B],H===0||H===10?((B===1?f:T)(xo(z,0)),z.length=0):z.push(H);Q+=he}return ye[k>>2]=Q,0}},Ar=(function(){var S,_,D,k,B={a:Oc};function H(z,Q){var re,W,he=z.exports;return A=(C=he).v,re=A.buffer,o.HEAP8=N=new Int8Array(re),o.HEAP16=x=new Int16Array(re),o.HEAP32=ue=new Int32Array(re),o.HEAPU8=w=new Uint8Array(re),o.HEAPU16=te=new Uint16Array(re),o.HEAPU32=ye=new Uint32Array(re),o.HEAPF32=Ie=new Float32Array(re),o.HEAPF64=Y=new Float64Array(re),Pe=C.z,W=C.w,Dn.unshift(W),function(){if(Fr--,o.monitorRunDependencies&&o.monitorRunDependencies(Fr),Fr==0&&(Ts!==null&&(clearInterval(Ts),Ts=null),$i)){var we=$i;$i=null,we()}}(),he}if(Fr++,o.monitorRunDependencies&&o.monitorRunDependencies(Fr),o.instantiateWasm)try{return o.instantiateWasm(B,H)}catch(z){T("Module.instantiateWasm callback failed with error: "+z),r(z)}(S=h,_=ni,D=B,k=function(z){H(z.instance)},S||typeof WebAssembly.instantiateStreaming!="function"||ie(_)||typeof fetch!="function"?$r(_,D,k):fetch(_,{credentials:"same-origin"}).then(z=>WebAssembly.instantiateStreaming(z,D).then(k,function(Q){return T("wasm streaming compile failed: "+Q),T("falling back to ArrayBuffer instantiation"),$r(_,D,k)}))).catch(r)}(),S=>(Ar=C.x)(S)),Yi=S=>(Yi=C.y)(S),vs=S=>(vs=C.A)(S),xc=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=C.B)(),S=>(xc=C.C)(S));o.dynCall_jiji=(S,_,D,k,B)=>(o.dynCall_jiji=C.D)(S,_,D,k,B);function kc(){function S(){Ut||(Ut=!0,o.calledRun=!0,Cn||(ci(Dn),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)_=o.postRun.shift(),wn.unshift(_);var _;ci(wn)}()))}Fr>0||(function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)_=o.preRun.shift(),Nn.unshift(_);var _;ci(Nn)}(),Fr>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),S()},1)):S()))}if($i=function S(){Ut||kc(),Ut||($i=S)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return kc(),t.ready}})();var uy="web.sdk.qcloud.com",ly=`https://${uy}/trtc/webrtc/v5/doc`,xx=`${ly}/zh-cn/`,eE=(i=>(i[i.TRACE=0]="TRACE",i[i.DEBUG=1]="DEBUG",i[i.INFO=2]="INFO",i[i.WARN=3]="WARN",i[i.ERROR=4]="ERROR",i[i.NONE=5]="NONE",i))(eE||{});var tE={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},kx=tE["480p_2"],Px=tE["120p_2"],Au={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture",RESIZE:"resize"},Lx=Au.MAIN,Ux=Au.AUXILIARY,Vx=Au.BIG,Fx=Au.SMALL;var $x=Object.keys(eE);var my=function(i,t,e,r){return new(e||(e=Promise))(function(o,s){function n(m){try{u(r.next(m))}catch(h){s(h)}}function a(m){try{u(r.throw(m))}catch(h){s(h)}}function u(m){var h;m.done?o(m.value):(h=m.value,h instanceof e?h:new e(function(f){f(h)})).then(n,a)}u((r=r.apply(i,t||[])).next())})},Jp=Symbol(32),Xp=Symbol(16),Qp=Symbol(8),zp=class{constructor(i){this.g=i,this.consumed=0,i&&(this.need=i.next().value)}setG(i){this.g=i,this.demand(i.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(i,t){return t&&this.consume(),this.need=i,this.flush()}read(i){return my(this,void 0,void 0,function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise((t,e)=>{var r;this.reject=e,this.resolve=o=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(o)},this.demand(i,!0)||(r=this.pull)===null||r===void 0||r.call(this,i)})})}readU32(){return this.read(Jp)}readU16(){return this.read(Xp)}readU8(){return this.read(Qp)}close(){var i;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),(i=this.reject)===null||i===void 0||i.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let i=null,t=this.buffer.subarray(this.consumed),e=0,r=o=>t.length<(e=o);if(typeof this.need=="number"){if(r(this.need))return;i=t.subarray(0,e)}else if(this.need===Jp){if(r(4))return;i=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Xp){if(r(2))return;i=t[0]<<8|t[1]}else if(this.need===Qp){if(r(1))return;i=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(r(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,e)),i=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(r(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,e)),i=this.need}return this.consumed+=e,this.g?this.demand(this.g.next(i).value,!0):this.resolve&&this.resolve(i),i}write(i){if(i instanceof Uint8Array?this.malloc(i.length).set(i):"buffer"in i?this.malloc(i.byteLength).set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength)):this.malloc(i.byteLength).set(new Uint8Array(i)),!this.g&&!this.resolve)return new Promise(t=>this.pull=t);this.flush()}writeU32(i){this.malloc(4).set([i>>24&255,i>>16&255,i>>8&255,255&i]),this.flush()}writeU16(i){this.malloc(2).set([i>>8&255,255&i]),this.flush()}writeU8(i){this.malloc(1)[0]=i,this.flush()}malloc(i){if(this.buffer){let t=this.buffer.length,e=t+i;if(e<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,e);else{let r=new Uint8Array(e);r.set(this.buffer),this.buffer=r}return this.buffer.subarray(t,e)}return this.buffer=new Uint8Array(i),this.buffer}};zp.U32=Jp,zp.U16=Xp,zp.U8=Qp;var py=127,Bx=~py,Hx=Math.pow(2,31),Wx=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},Gx=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype;function Yg(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var{toString:jx}=Object.prototype,ms,Zp=(ms=class{constructor(t){l(this,"contextMap",new Map);l(this,"decodeProcessorMap",new WeakMap);this.core=t,this.addKVReportBeforeExitRoom=this.addKVReportBeforeExitRoom.bind(this),this.createDecoder=this.createDecoder.bind(this),this.core.innerEmitter.on("51",this.addKVReportBeforeExitRoom)}getAlias(){return"videoDecoder"}getGroup(t){return t!=null&&t.track?`${t.track.userId}${t.track.streamType}`:"*"}getName(){return ms.Name}getValidateRule(t){return{type:this.core.enums.BASIC_TYPE.Object}}createDecoder(t,e){switch(t){case"wasm":return new dy(pe(j({},e),{wasmPath:`${this.core.assetsPath||"."}/videodec.wasm`}));case"webCodecs":return new In;case"mse":throw new Error("mse decoder not supported yet");default:throw new Error("Unsupported decoder type")}}start(t){this.decodeProcessorMap.set(t.track,this.decode(t)),this.core.room.videoManager.addDecodeProcessor({processor:({frame:e,track:r})=>{var o;return((o=this.decodeProcessorMap.get(r))==null?void 0:o({frame:e,track:r}))||e},type:3})}decode(t){let{pipe:e,take:r,subscribe:o}=this.core.rx;return({frame:s,track:n})=>{if(n!==t.track||s.type==="empty")return s;if(this.contextMap.has(n))return this.contextMap.get(n).decode(s);let a=this.core.room.videoManager.createDecodeContext(pe(j({},t),{createDecoder:this.createDecoder}));return e(a.trackDoneOB,r(1),o(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:n})})),this.contextMap.set(n,a),a.decode(s)}}stop(t){if(t!=null&&t.track){let e=this.contextMap.get(t.track);e&&(e.close("stop"),this.report(e,t.track),this.contextMap.delete(t.track))}else this.contextMap.forEach((e,r)=>{e.close("stop"),this.contextMap.delete(r)});this.contextMap.size===0&&this.core.room.videoManager.removeDecodeProcessor({type:3})}report(t,e){if(t.isReported)return;t.isReported=!0;let r=Yg()-t.startPerformanceTime,{renderFreezeTotal:o,dataFreezeTotal:s}=this.getRemoteTrackFreezeDuration(e,t),n=`report health data: ${t.track.userId} ${t.track.streamType} ${t.type}+${t.renderer} goodType\uFF1A${t.goodType} ${t.failedReason?`failedReason: ${t.failedReason}`:""}`;r&&(this.core.kvStatManager.addNumber({key:514850,value:Math.floor(o/r*100),split:1,max:100}),n+=` RENDER_FREEZE_RATE: ${Math.floor(o/r*100)}%`),r&&(this.core.kvStatManager.addNumber({key:514851,value:Math.floor(s/r*100),split:1,max:100}),n+=` DATA_FREEZE_RATE: ${Math.floor(s/r*100)}%`),t.inputFrameCount&&(this.core.kvStatManager.addNumber({key:514852,value:Math.floor(t.decodedFrameCount/t.inputFrameCount*100),split:1,max:100}),n+=` VIDEO_CONSUME_RENDER_RATE: ${Math.floor(t.decodedFrameCount/t.inputFrameCount*100)}%`),this.core.log.info(n)}addKVReportBeforeExitRoom({room:t}){t===this.core.room&&this.contextMap.forEach((e,r)=>{this.report(e,r)})}update(t){let e=this.contextMap.get(t.track);e&&(t.type!=="mock"?(e.close("update"),this.contextMap.set(t.track,this.core.room.videoManager.createDecodeContext(pe(j({},t),{createDecoder:this.createDecoder})))):e.mock(this.core.enums.DECODE_FAILED_ERROR_CODE.TEST))}getRemoteTrackFreezeDuration(t,e){let r=this.core.room.badCaseDetector.getRenderFreezeMap().get(`${t.userId}_${t.streamType}`),o=this.core.room.badCaseDetector.getDataFreezeMap().get(`${t.userId}_${t.streamType}`),s=0;r&&r.freezeTimeline.forEach(({startTime:a,endTime:u})=>{a>e.startPerformanceTime&&(s+=u===0?Yg()-a:u-a)});let n=0;return o&&o.durationItemList.forEach(a=>{a.startTime>e.startPerformanceTime&&(n+=a.getDuration())}),{renderFreezeTotal:s,dataFreezeTotal:n}}destroy(){this.core.innerEmitter.off("51",this.addKVReportBeforeExitRoom)}},l(ms,"Name","TRTCVideoDecoder"),ms);var ME=mi(yi());function Kp({timesInSecond:i,maxSizeInSecond:t,getSize:e}){return xe((r,o)=>{let s=new WeakMap;return V.on(F.ROOM_DESTROY,({room:n})=>s.delete(n)),function(...n){let a=s.get(this);if(a||(a={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},s.set(this,a)),a.timestamp===0?a.timestamp=Date.now():Date.now()-a.timestamp>1e3&&(a.timestamp=Date.now(),a.callCountInSecond=0,a.totalSizeInSecond=0),e&&(a.totalSizeInSecond+=e(...n)),a.timestamp!==0&&Date.now()-a.timestamp<1e3&&(a.callCountInSecond>=i||a.totalSizeInSecond>t))throw new de({code:q.INVALID_OPERATION,message:Be({key:$e.CALL_FREQUENCY_LIMIT,data:{isTimes:a.callCountInSecond>=i,isSize:a.totalSizeInSecond>t,name:o,timesInSecond:i,maxSizeInSecond:t}})});a.callCountInSecond++,r.call(this,...n)}})}var hy="2025-08-22 11:10:30",rE=!0,iE=function(){var i;if(rE){rE=!1,$.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Gr}/en/index.html`),console.info(`* Changelog: ${Gr}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),$.info("TRTC Web SDK Version:",nt),xr||$.debug("Build Time:",hy);let t=`UA: ${navigator.userAgent}
|
|
93
|
+
CPU core: ${navigator.hardwareConcurrency}, GPU: ${im()}`,e=navigator.deviceMemory;e&&(t+=`, minRAM: ${e}GB`),$.info(t),$.info(`URL: ${location.href}${((i=self.frameElement)==null?void 0:i.tagName)==="IFRAME"?" in iframe":""}`),qo().then(r=>{r&&$.info(Dr)})}};var Tr={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var ne={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},_r=(P=>(P[P.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",P[P.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",P[P.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",P[P.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",P[P.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",P[P.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",P[P.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",P[P.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",P[P.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",P[P.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",P[P.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",P[P.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",P[P.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",P[P.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",P[P.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",P[P.INVALID_ROOM_ID_REQUIRED=5015]="INVALID_ROOM_ID_REQUIRED",P[P.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",P[P.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",P[P.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",P[P.INVALID_ROOM_ID_TYPE_MISMATCH=5019]="INVALID_ROOM_ID_TYPE_MISMATCH",P[P.INVALID_ROOM_ID_DUPLICATE=5020]="INVALID_ROOM_ID_DUPLICATE",P[P.INVALID_OPERATION=5100]="INVALID_OPERATION",P[P.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",P[P.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",P[P.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",P[P.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",P[P.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",P[P.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",P[P.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",P[P.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",P[P.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",P[P.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",P[P.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",P[P.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",P[P.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",P[P.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",P[P.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",P[P.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",P[P.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",P[P.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",P[P.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",P[P.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",P[P.DEVICE_ERROR=5300]="DEVICE_ERROR",P[P.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",P[P.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",P[P.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",P[P.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",P[P.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",P[P.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",P[P.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",P[P.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",P[P.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",P[P.SERVER_ERROR=5400]="SERVER_ERROR",P[P.NEED_TO_BUY=5401]="NEED_TO_BUY",P[P.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",P[P.OPERATION_FAILED=5500]="OPERATION_FAILED",P[P.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",P[P.REJOIN_FAILED=5502]="REJOIN_FAILED",P[P.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",P[P.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",P[P.VIDEO_ENCODE_FAILED=5505]="VIDEO_ENCODE_FAILED",P[P.AUDIO_ENCODE_FAILED=5506]="AUDIO_ENCODE_FAILED",P[P.VIDEO_DECODE_FAILED=5507]="VIDEO_DECODE_FAILED",P[P.AUDIO_DECODE_FAILED=5508]="AUDIO_DECODE_FAILED",P[P.OPERATION_ABORT=5998]="OPERATION_ABORT",P[P.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",P))(_r||{});function sE({code:i,params:t,enableDocLink:e=!1}){let r="",o,s=_r[i];try{o=oE[s]}catch(n){o=oE.UNKNOWN_ERROR}return We(o)?r=o(t):De(o)&&(r=o),t.fnName&&!r.includes(t.fnName)&&(r[r.length-1]!=="."&&(r+="."),r+=` thrown from ${t.fnName}()`),e&&(r+=" doc:"),r}var oE=pe(j({},Yt),{INVALID_PARAMETER({fnName:i}){return`the parameters of the '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${at(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${at(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:i,rule:t,fnName:e}){return`'${i||t.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:i,rule:t,value:e}){return`the min value of ${i||t.name} is ${t.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:i,rule:t,value:e}){return`the max value of ${i||t.name} is ${t.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:i,fnName:t}){return`'${i}' is not found in the document object when calling ${t}().`},INVALID_ELEMENT_ID_TYPE({key:i,fnName:t,type:e}){return`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`},INVALID_STREAM_ID({key:i}){return`'${i}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:i}){return`'${i}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:i}){return`'${i}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:i}){return`'${i}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIRED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_ROOM_ID_TYPE_MISMATCH({key:i}){return`The type of target roomId must match the current roomId. Current room is using '${i}', but received '${i==="strRoomId"?"roomId":"strRoomId"}'.`},INVALID_ROOM_ID_DUPLICATE({key:i}){return`the target '${i}' must not be the same as the current '${i}'.`},INVALID_STREAM_TYPE:({fnName:i})=>`'streamType' is required when 'userId' is not '*', calling ${i}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:i}){return`the API '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:i}){return`cannot ${i} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing ${t.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:i}){return`you are already ${i}(), cannot repeated call '${i}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:i}){return`cannot call '${i}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:i}){return`cannot call '${i}' because the microphone or screen share is not turned on.`},INVALID_BUFFER_EMPTY:({key:i})=>`the buffer size of paramerter '${i}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:i})=>`you need to call ${i}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:i}){return`the current browser does not support the capability of the function '${i}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:i}){return`cannot call ${i} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:i,error:t}){return`'${i}' got device exception${t?`, error: ${t.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`NotFoundError, no ${t} detected, please check your device and the configuration on '${i}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`NotAllowedError, you have disabled ${t} access, please allow the current application to use the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`NotReadableError, the ${t} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${t}, and it is recommended to turn on the ${t} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:i}){return`camera recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},MICROPHONE_RECOVER_FAILED({error:i}){return`microphone recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},OPERATION_FAILED({fnName:i,error:t}){return`'${i}' failed, reason: ${t==null?void 0:t.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:i}){return`an error was caught on trtc.on('${i}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:i,error:t}){return`video context error ${i} ${(t==null?void 0:t.name)||""} ${(t==null?void 0:t.message)||""}`},SERVER_ERROR({fnName:i,error:t}){return`'${i}' got server error: ${t==null?void 0:t.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:i,url:t}){return`You need to buy packages for ${i}. Refer to: ${t}`},ACCOUNT_NO_MONEY:({fnParams:i})=>`your TRTC account run out of credit, please recharge.${i.sdkAppId?` SDKAppId: ${i.sdkAppId}`:""}`,OPERATION_ABORT({fnName:i}){return`'${i}' abort`},UNKNOWN_ERROR({fnName:i,error:t}){return`'${i}' throw unknown exception${t?`, error: ${t.toString()}.`:"."}`}});function ps(i){if(!i)return"camera";let t=i.toLowerCase();return t.includes("screen")?"screen share":t.includes("audio")?"microphone":"camera"}var eh=class i extends Error{constructor({code:e,extraCode:r,message:o="",messageParams:s,fnName:n="",originError:a,data:u}){var h;let m;o?m=o:m=sE({code:e===ne.SERVER_ERROR?e:r||e,params:j({fnName:n,error:a},s)});super(m);l(this,"name","RtcError");l(this,"code");l(this,"extraCode");l(this,"functionName");l(this,"message");l(this,"data");l(this,"handler");l(this,"originError");this.name=_r[e],this.code=e,this.extraCode=r,this.functionName=n,this.originError=a,this.message=m,this.data=u,this.extraCode===5302&&((h=this.originError)!=null&&h.message.includes("system"))&&(this.handler=()=>{let f={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},T={startLocalVideo:"webcam",startLocalAudio:"microphone"},A=document.createElement("a");jo?A.href=`ms-settings:privacy-${T[this.functionName]}`:Mr&&(A.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${f[this.functionName]}`),A.href.length>0&&A.click()})}static convertFrom(e,r,o){let s=e;if(e instanceof de){let{stack:n}=e,a={code:ne.UNKNOWN_ERROR,fnName:r,originError:e};switch(e.getCode()){case q.INVALID_PARAMETER:a.code=ne.INVALID_PARAMETER,a.message=e.message;break;case q.INVALID_OPERATION:a.code=ne.INVALID_OPERATION;break;case q.NOT_SUPPORTED:case q.NOT_SUPPORTED_H264:a.code=ne.ENV_NOT_SUPPORTED,e.getCode()===q.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(Yt.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case q.JOIN_ROOM_FAILED:a.messageParams={fnParams:o};case q.SERVER_TIMEOUT:case q.SWITCH_ROLE_FAILED:case q.SWITCH_ROOM_FAILED:a.code=ne.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case q.API_CALL_ABORTED:a.code=ne.OPERATION_ABORT;break;case q.DEVICE_NOT_FOUND:case q.DEVICE_AUTO_RECOVER_FAILED:case q.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=fy(e.name));break;case q.VIDEO_ENCODE_FAILED:a.extraCode=5505;case q.AUDIO_ENCODE_FAILED:a.extraCode=5506,a.code=ne.OPERATION_FAILED;break;case q.UNKNOWN:break;default:a.code=ne.OPERATION_FAILED}s=new i(a),n&&(s.stack+=n.substr(n.indexOf(`
|
|
94
|
+
`)))}else{if(e instanceof i)return e;s=new i({code:ne.UNKNOWN_ERROR,fnName:r,originError:e})}return s}};function fy(i){let t;switch(i){case"NotFoundError":t=5301;break;case"NotAllowedError":t=5302;break;case"NotReadableError":t=5303;break;case"OverconstrainedError":t=5304;break;case"InvalidStateError":t=5305;break;case"SecurityError":t=5306;break;case"AbortError":t=5307;break;default:t=5300}return t}var oe=eh;function ii(i){return i==="sub"?"auxiliary":i==="auxiliary"?"sub":"main"}function rc(i){return i===Tr.QOS_PREFERENCE_CLEAR?"detail":i===Tr.QOS_PREFERENCE_SMOOTH?"motion":""}function Sn(i,t){let e=t?yl:qn;return Hl(i)?j(j({},e),i):vr[i]?vr[i]:e}var nE={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{type:["string","object","boolean"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},aE={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},yn={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(i,t,e){if(De(i)&&!document.getElementById(i))throw new oe({code:ne.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:t}})}},cE={name:"userId",required:!0,type:"string"},dE={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[Tr.AUDIO_PROFILE_STANDARD,Tr.AUDIO_PROFILE_STANDARD_STEREO,Tr.AUDIO_PROFILE_HIGH,Tr.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function An(i,t){if(!i)throw new oe({code:ne.INVALID_OPERATION,extraCode:5101,fnName:t})}function uE(i,t,e){if(!i)throw new oe({code:ne.INVALID_OPERATION,extraCode:5102,fnName:t,messageParams:{value:e}})}function lE(i,t,e){if(!(/^[1-9]\d*$/.test(String(i))&&i<4294967295))throw new oe({code:ne.INVALID_PARAMETER,extraCode:5013,fnName:t,messageParams:{key:e}})}function mE(i,t,e){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(i))throw new oe({code:ne.INVALID_PARAMETER,extraCode:5012,fnName:t,messageParams:{key:e}})}var hP={type:"number",notLessThanZero:!0},gy=(i,t)=>i.width*i.height>=t.width*t.height&&i.frameRate>=t.frameRate&&i.bitrate>=t.bitrate;function pE(i){var r;if(!((r=i==null?void 0:i.option)!=null&&r.small))return;if(!Pd()){$.warn("small stream is not supported"),delete i.option.small;return}let t=Sn(i.option.profile),e=Sn(i.option.small,!0);if(!gy(t,e)){$.warn(`small stream profile must be less than big stream profile. Big: ${JSON.stringify(t)}, Small: ${JSON.stringify(e)}`),delete i.option.small;return}}var Ey={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(i,t,e){if(this._room.isJoined)throw new oe({code:ne.INVALID_OPERATION,extraCode:5104,fnName:e});if(i.roomId){if(De(i.roomId))throw new oe({code:ne.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:t}});lE(i.roomId,e,t)}else if(i.strRoomId)mE(i.strRoomId,e,t);else throw new oe({code:ne.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:yn,mute:{type:["boolean","string"]},publish:{type:"boolean"},capture:{required:!1,type:"boolean"},option:nE},validate(i){var t,e;if(!((t=i==null?void 0:i.option)!=null&&t.videoTrack)&&Ni())throw new oe({code:ne.ENV_NOT_SUPPORTED,extraCode:5201});(e=i==null?void 0:i.option)!=null&&e.small&&pE(i)}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:pe(j({},yn),{required:!1}),publish:{type:"boolean"},capture:{required:!1,type:"boolean"},mute:{type:["boolean","string"]},option:nE},validate(i){var t;(t=i==null?void 0:i.option)!=null&&t.small&&pE(i)}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:dE},validate(i){var t;if(!((t=i==null?void 0:i.option)!=null&&t.audioTrack)&&Ni())throw new oe({code:ne.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:dE}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:yn,publish:{type:"boolean"},option:aE},validate(i,t,e,r,o){var s;if(!((s=i==null?void 0:i.option)!=null&&s.videoTrack)){if(Ni())throw new oe({code:ne.ENV_NOT_SUPPORTED,extraCode:5201});if(!Ca())throw new oe({code:ne.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:yn,publish:{type:"boolean"},option:aE}},muteRemoteAudio:[cE,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[cE,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:yn,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(i,t,e){An(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(uE(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new oe({code:ne.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:pe(j({},yn),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(i,t,e){An(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(uE(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new oe({code:ne.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(i,t,e){if(i.userId!=="*"&&O(i.streamType))throw new oe({code:ne.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(i,t,e){An(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(i,t,e,r){if(!wa)throw new oe({code:ne.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new oe({code:ne.INVALID_OPERATION,fnName:e,extraCode:5108});if(i.byteLength>1e3)throw new oe({code:ne.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new oe({code:ne.INVALID_PARAMETER,extraCode:5017,messageParams:{key:t},fnName:e});An(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(i,t,e){if(!i&&!this._room.isMainStreamPublished||i&&!this._room.isAuxStreamPublished)throw new oe({code:ne.INVALID_OPERATION,extraCode:5109,messageParams:{key:t},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(i,t,e,r){if(i.byteLength>1e3)throw new oe({code:ne.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new oe({code:ne.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:t}})}}},validate(i,t,e){if(An(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new oe({code:ne.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:t}})}},switchRoom:{name:"switchRoomConfig",type:"object",required:!0,validate(i,t,e){if(An(this._room.isJoined,e),this._room.useStringRoomId&&i.strRoomId===this._room.roomId||!this._room.useStringRoomId&&i.roomId===Number(this._room.roomId))throw new oe({code:ne.INVALID_PARAMETER,extraCode:5020,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(i.roomId&&this._room.useStringRoomId||!i.roomId&&i.strRoomId&&!this._room.useStringRoomId)throw new oe({code:ne.INVALID_PARAMETER,extraCode:5019,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(i.roomId)lE(i.roomId,e,t);else if(i.strRoomId)mE(i.strRoomId,e,t);else throw new oe({code:ne.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{roomId:{type:"number"},strRoomId:{type:"string"},privateMapKey:{type:"string"},userSig:{type:"string",required:!0},autoSubscribeCount:{type:"number",min:0,max:50}}}},vt={TRTC:Ey};var Wt=class extends Error{};function Ty(i,t){let e=Fo(i);for(let r=0;r<t.length;r++)Nr(e[r],t[r]);return e}function _y(i){this._resolve=Promise.resolve(i)}function Iy(i){this._reject=Promise.reject(i)}var Eo=class Eo{constructor(t,e){this.instance=t;this.group=e;l(this,"started",!1);l(this,"ops",[]);l(this,"startSame",()=>!0);l(this,"mergeUpdate",Ty);let r=Eo.instances.get(t);r?r.set(e,this):Eo.instances.set(t,new Map([[e,this]]))}static get(t,e){if(!e)return;let r=Eo.instances.get(t);return r&&r.get(e)||new Eo(t,e)}static gets(t,e){let r=Eo.instances.get(t),o=[];return r&&r.forEach((s,n)=>{e.test(n)&&o.push(s)}),o}action(t,e,r){let o=a=>{var u;return t===0?this.started=!0:t===3&&(this.started=!1),this.ops.shift(),(u=this.currentOp)==null||u.action(),a},s=a=>{var u,m;throw this.ops.shift(),t===0&&((u=this.currentOp)==null?void 0:u.type)===2&&this.ops.shift().reject(new Wt("start failed")),(m=this.currentOp)==null||m.action(),a},n={type:t,action:()=>e(...n.args).then(o,s),args:r,resolve:_y,reject:Iy};try{switch(this.state){case 1:if(t===0)throw new Wt("already started");break;case 4:if(t===2)throw new Wt("not started");break;default:return this.cacheOp(n)}}catch(a){return Promise.reject(a)}return this.ops.push(n),n.promise=e(...n.args).then(o,s)}cacheOp(t){if(this.ops.length===1)switch(this.state){case 0:case 2:if(t.type===0)throw new Wt("already start");break;case 3:switch(t.type){case 2:throw new Wt("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new Wt("unknown state")}else switch(t.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let r=new Wt("keep stop");if(this.ops.slice(1).forEach(o=>o.reject(r)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,t.args),this.lastOp.promise;case 3:throw new Wt("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new Wt("start not allowed after update");case 0:throw new Wt("duplicate start");case 3:if(this.startSame(this.currentOp.args,t.args))throw this.ops.pop().reject(new Wt("keep start")),new Wt("already start")}}t.promise=new Promise((r,o)=>{t._resolve?t._resolve.then(r):t.resolve=r,t._reject?t._reject.catch(o):t.reject=o});let{action:e}=t;return t.action=()=>e().then(t.resolve,t.reject),this.ops.push(t),t.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};l(Eo,"instances",new WeakMap);var Li=Eo;var bu=new WeakMap,Ru=(i,t)=>{if(t instanceof Wt){let{stack:e}=t;t=new oe({code:ne.OPERATION_ABORT,message:`${i} abort: ${t.message}`,fnName:i}),e&&(t.stack+=e.substr(e.indexOf(`
|
|
95
|
+
`)))}throw t};function To(i,t){return xe((e,r)=>function(...o){let s=Li.get(this,typeof i=="string"?i:i.call(this,...o));return s?(t&&(s.startSame=t.bind(this)),s.action(0,e.bind(this),o).catch(Ru.bind(null,r))):e.apply(this,o)})}function hs(i,t){let{merge:e,debounce:r}=t||{};return xe((o,s)=>function(...n){let a=Li.get(this,typeof i=="string"?i:i.call(this,...n));if(!a)return o.apply(this,n);if(e&&(a.mergeUpdate=e.bind(this)),r&&r.isNeedToDebounce.apply(this,n)){let{delay:u,getKey:m}=r;return new Promise((h,f)=>{var C,N;let T=(C=bu.get(this))==null?void 0:C.get(m(...n));if(T){let{timeoutId:w,resolve:x}=T;clearTimeout(w),x()}let A=setTimeout(()=>{if(a.state===3||a.state===4)return h();a.action(2,o.bind(this),n).catch(Ru.bind(null,s)).then(h,f)},u);bu.has(this)?(N=bu.get(this))==null||N.set(m(...n),{timeoutId:A,resolve:h}):bu.set(this,new Map([[m(...n),{timeoutId:A,resolve:h}]]))})}return a.action(2,o.bind(this),n).catch(Ru.bind(null,s))})}function _o(i){return xe((t,e)=>function(...r){let o=typeof i=="function"?i.call(this,...r):i;if(o instanceof RegExp)return Promise.all(Li.gets(this,o).map(n=>n.action(3,()=>Promise.resolve(),r))).then(()=>t.call(this,...r));let s=Li.get(this,o);return s?s.action(3,t.bind(this),r).catch(Ru.bind(null,e)):t.apply(this,r)})}var ee={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame",PERMISSION_STATE_CHANGE:"permission-state-change",VIDEO_SIZE_CHANGED:"video-size-changed"},hE=new Set([ee.ERROR,ee.AUTOPLAY_FAILED,ee.KICKED_OUT,ee.REMOTE_USER_ENTER,ee.REMOTE_USER_EXIT,ee.REMOTE_AUDIO_AVAILABLE,ee.REMOTE_AUDIO_UNAVAILABLE,ee.REMOTE_VIDEO_AVAILABLE,ee.REMOTE_VIDEO_UNAVAILABLE,ee.CONNECTION_STATE_CHANGED,ee.PUBLISH_STATE_CHANGED,ee.SCREEN_SHARE_STOPPED,ee.DEVICE_CHANGED,ee.FIRST_VIDEO_FRAME,ee.PERMISSION_STATE_CHANGE,ee.VIDEO_SIZE_CHANGED]);var oh={};li(oh,{ScheduleRequestType:()=>gE,getAbilityConfig:()=>yy,getScheduleDomain:()=>Nu,isNeedToSchedule:()=>vu,scheduleProxy:()=>oi,sendScheduleRequest:()=>ih,setIsNeedToSchedule:()=>fs,setScheduleProxy:()=>Cu});var rh=null,vu=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(fi).map(i=>`<link rel="dns-prefetch" href="https://${i}">`).join(`\r
|
|
96
|
+
`));function fs(i){Xe(i)&&i!==vu&&(vu=i,$.info(`setIsNeedToSchedule ${i}`))}V.on("28",()=>fs(!0));V.on("63",()=>fs(!0));V.on("84",()=>fs(!0));V.on("201",i=>{i.state==="RECONNECTING"&&fs(!0)});V.on("202",i=>{i.state==="RECONNECTING"&&fs(!0)});function Sy(i,t,e){let r={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let o=performance.getEntriesByType("resource"),s=Io(i,"config",M.MAIN),n=Io(i,"config",M.BACKUP);for(let a of o)if(a.startTime>=e&&(a.name===s||a.name===n)&&a.transferSize>0){let u=a.name===s?M.MAIN:M.BACKUP,m=Math.round(a.duration),h=Math.round(a.domainLookupStart-a.startTime),f=a.redirectStart>0?Math.round(a.redirectEnd-a.redirectStart):0,T=a.fetchStart>0?Math.round(a.domainLookupStart-a.fetchStart):0,A=Math.round(a.domainLookupEnd-a.domainLookupStart),C=Math.round(a.requestStart-a.secureConnectionStart),N=Math.round(a.secureConnectionStart-a.connectStart),w=Math.round(a.responseStart-a.requestStart),x=Math.round(a.responseEnd-a.responseStart),te=[A,C,N,w,x];je.uploadEvent({log:`stat-schedule-net:${m}(${h}(${f}->${T})->${te.join("->")}) ${u}`,userId:t}),r=pe(j({},r),{totalCost:m,local:h,dns:A,tcp:N,tls:C,request:w,response:x});break}}catch(o){$.error("getScheduleDetailCost error",o)}return r}function ih(m){return y(this,arguments,function*({userId:i,sdkAppId:t,useStringRoomId:e,roomId:r,userSig:o,version:s,frameWorkType:n,role:a,latencyLevel:u}){if(!vu&&rh)return{isCached:!0,result:rh};let h={delta:0,count:[1,1],msg:[],detail:[]};try{let f=new FormData;f.append("userId",String(i)),f.append("sdkAppId",String(t)),f.append("isStrGroupId",String(e)),f.append("groupId",String(r)),f.append("sdkVersion",s),f.append("userSig",String(o));let T=yield qo();T!=null&&T.model&&f.append("model",String(T==null?void 0:T.model)),a&&f.append("role",String(a)),u&&f.append("latencyLevel",String(u)),n&&f.append("frameWorkType",String(n));let A=Te(),C=yield by(f,h,t);C.config&&(C.config.loggerDomain&&Po(C.config.loggerDomain),Xe(C.config.scheduleCache)&&fs(!C.config.scheduleCache)),h.delta=Te()-A;let N=Sy(Number(t),i,A);return rh=C,{isCached:!1,result:C,detailCost:N}}catch(f){let T=ot(f)?f[0]:f,A=Le(T.code)?T.code:0,C=`schedule failed${T.message?`: ${T.message}`:""}`,N=new de({code:q.SCHEDULE_FAILED,extraCode:A,message:Be({key:$e.JOIN_ROOM_FAILED,data:{error:C,code:A}})});throw $.error(C,A),N}})}var oi={main:"",backup:""};function Cu(i){ot(i)?(oi.main=i[0],oi.backup=i[1]):oi.main=i}var gE=(r=>(r.CONFIG="config",r.TRTC_AUTO_CONF="trtcAutoConf",r.AUDIO_AI_AUTH="audioAiAuth",r))(gE||{});function Io(i,t,e=M.MAIN,r=!1){return`https://${oi[e]||Nu(i,e,r)}/api/v1/${t}`}function yy(i,t,e){let r=Io(i,t),o=Io(i,t,M.BACKUP),s=new URLSearchParams(e).toString(),n=fetch(`${r}?${s}`).then(u=>u.json()),a=fetch(`${o}?${s}`).then(u=>u.json());return ea([n,a])}function Nu(i,t=M.MAIN,e=!1){let r;return gi(i)?e?r=t===M.MAIN?fi.MAIN_OVERSEA_BACKUP:fi.BACKUP_OVERSEA:r=t===M.MAIN?fi.MAIN_OVERSEA:fi.BACKUP_OVERSEA:r=t===M.MAIN?fi.MAIN:fi.BACKUP,r}function Ay(i,t,e){return new Promise((r,o)=>{_i({url:i,body:t,timeout:e.timeout,priority:"high"}).then(s=>{s.data.code===0?r(s.data.data):o({code:s.data.code,message:s.data.msg})}).catch(o)})}var fE=(i,t)=>oo({retryFunction:Ay,settings:{retries:3,timeout:0},onError:t,onRetrying:i});function by(i,t,e){return new Promise((r,o)=>{let s=null;ea([fE(n=>t.count[0]=n+1,({error:n,retry:a,retriedCount:u,retryFuncArgs:m})=>{t.msg[0]=n.message,s||(u>=1&&(m[0]=Io(e,"config",M.MAIN,!0)),a())})(Io(e,"config",M.MAIN),i,{get timeout(){return $o(2+t.count[0])*1e3}}),fE(n=>t.count[1]=n+1,({error:n,retry:a,retriedCount:u,retryFuncArgs:m})=>{t.msg[1]=n.message,s||(u>=2&&(m[0]=Io(e,"config",M.BACKUP,!0)),a())})(Io(e,"config",M.BACKUP),i,{get timeout(){return $o(2+t.count[1])*1e3}})]).then(n=>{s=n,r(s)}).catch(o)})}var Ry=i=>i.startsWith("data:application/octet-stream;base64,"),vy=i=>i.startsWith("file://"),ic=class{constructor(){l(this,"_log");this._log=$.createLogger({id:"fd"})}download(t,e){return y(this,null,function*(){let{type:r="blob"}=e||{};t=Wo(t);try{let o=Te(),s;if(We(fetch)?s=yield this.downloadWithFetch(t,r):s=yield this.downloadWithXHR(t,r),!s||!s.data)throw new Error("data is empty");let n=Te()-o;return this._log.info(`downloaded: ${t}, return type: ${r}, cost: ${n}ms`),X.addSuccessEvent({key:522700,cost:Te()-o}),s.data}catch(o){throw this._log.error(`failed to download: ${t}, error: ${o}`),X.addFailedEvent({key:522700,error:o}),o}})}downloadWithFetch(t,e){return y(this,null,function*(){this._log.info(`download with fetch: ${t}, return type: ${e}`);try{let r=yield fetch(t);if(!r.ok){let s=new Error(`network response was not ok: ${r.status}`);throw s.status=r.status,s}let o;return e==="arraybuffer"?o=yield r.arrayBuffer():o=yield r.blob(),{data:o}}catch(r){throw r}})}downloadWithXHR(t,e){return this._log.info(`download with xhr: ${t}, return type: ${e}`),new Promise((r,o)=>{let s=new XMLHttpRequest;s.open("GET",t,!0),s.responseType=e,s.onload=()=>{if(s.status===200||s.status===0&&s.response)r({data:s.response});else{let n=new Error(`XHR failed, status: ${s.status}`);n.status=s.status,o(n)}},s.onerror=o,s.send(null)})}loadWasm(t,e){return y(this,null,function*(){this._log.info(`loadWasm ${t}, importObject: ${JSON.stringify(e)}`);let r=Te(),o=null,s=null;if(We(WebAssembly.instantiateStreaming)&&!Ry(t)&&!vy(t)&&We(fetch))try{let n=fetch(t);o=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){s=n}if(!o)try{let n=yield this.download(t,{type:"arraybuffer"});o=(yield WebAssembly.instantiate(n,e)).instance}catch(n){s=n}if(o){let n=Te()-r;return this._log.info(`loadedWasm ${t}, cost: ${n}ms`),X.addSuccessEvent({key:522701,cost:n}),o}throw this._log.error(`failed to loadWasm ${t}, error: ${s}`),X.addFailedEvent({key:522701,error:s}),s})}loadScript(t){this._log.info(`loadScript ${t}`);let e=Te();return new Promise((r,o)=>{let s=document.createElement("script");s.type="text/javascript",s.onload=()=>{this._log.info(`loadedScript ${t}, cost: ${Te()-e}ms`),X.addSuccessEvent({key:522702,cost:Te()-e,split:1e3}),r(s)},s.onerror=n=>{this._log.error(`failed to loadScript ${t}, error: ${(n==null?void 0:n.message)||JSON.stringify(n)}`),X.addFailedEvent({key:522702}),o(n)},s.crossOrigin="anonymous",s.src=t,document.head.append?document.head.append(s):document.getElementsByTagName("head")[0].appendChild(s)})}};K([es({settings:{timeout:0,retries:3},onError(t,e,r){var o;(t==null?void 0:t.status)===404||(o=t==null?void 0:t.message)!=null&&o.includes("404")?(this._log.warn("download 404, stop retry"),r(t)):e()},onRetrying(t){this._log.warn(`download retrying: ${t}`)}})],ic.prototype,"download",1),K([es({settings:{timeout:3e3,retries:3},onRetrying(t){this._log.warn(`loadScript retrying: ${t}`)}})],ic.prototype,"loadScript",1);var sh=new ic;function EE({TRTC:i,room:t,errorModule:e,assetsPath:r}){return{TRTC:i,LocalMixVideoTrack:us,LocalVideoTrack:ar,LocalScreenTrack:ti,room:t,assetsPath:r,fileDownloader:sh,innerEmitter:V,constants:vl,environment:Ks,utils:Hp,eventLogger:je,log:this.room.getLogger(),loggerManager:$,errorModule:e,kvStatManager:X,rtcDectection:co,trtc:this,rx:Fp,enums:Am,schedule:oh,getDevices:un,initVisionTaskRegistry:(o,s="/mediapipe/vision.js")=>y(this,null,function*(){window.VisionTaskRegistry||(yield sh.loadScript(`${o}/${s}`.replace(/([^:]\/)\/+/g,"$1"))),yield(yield window.VisionTaskRegistry.getInstance(o)).preloadModels([window.VisionTaskType.ImageSegmenter])}),clearStarted:(o,s)=>{let n=o.getAlias(),a=Li.instances.get(this);if(a)if(s){let u=a.get(n+s);if(!u)return;u.started=!1}else a.forEach((u,m)=>{m.startsWith(n)&&(u.started=!1)})},startGetPCM:Za,createAudioNode:Fa}}var TE=(i,t)=>{let{emit:e}=i;return i.emit=(...r)=>{try{return e.apply(i,r)}catch(o){let s=Be({key:$e.CATCH_HANDLER_ERROR,data:{name:t,event:r[0]},addDocLink:!1});return $.warn(`${s}
|
|
57
97
|
|
|
58
|
-
${r.stack}`),!1}},o};var us=new WeakMap;function sf(o){let i=us.get(o);i&&(i.forEach(e=>clearTimeout(e)),us.delete(o))}function nf(o,i){return K((e,t)=>function(...r){let s=us.get(this);s||(s=new Map,us.set(this,s));let n=i(...r),a=s.get(n);if(!a||a<=0){e.apply(this,r);let c=setTimeout(()=>{var l;(l=us.get(this))==null||l.delete(n)},o);s.set(n,c)}else{clearTimeout(a);let c=window.setTimeout(()=>{var l;e.apply(this,r),(l=us.get(this))==null||l.delete(n)},o);s.set(n,c)}})}var cf="trtc-sdk-v5",df="5.13.0-beta.16";function Xe(...o){return K((i,e)=>function(...t){try{Uc.call(this,o,t,e,this._name)}catch(r){return Promise.reject(r)}return i.apply(this,t)})}function eh(...o){return K((i,e)=>function(...t){try{Uc.call(this,o,t,e,this._name)}catch(r){throw r}return i.apply(this,t)})}function Uc(o,i,e,t){if(Se(o))for(let r=0;r<o.length;r++)Vc.call(this,{rule:o[r],value:i[r],key:o[r].name,fnName:e,className:t});else Vc.call(this,{rule:o,value:i[0],key:o.name,fnName:e,className:t})}function Vc({rule:o,value:i,key:e,fnName:t,className:r}){function s(c){return{code:U.INVALID_PARAMETER,extraCode:c,fnName:t,messageParams:{key:e,rule:o,value:i}}}if(E(i)){if(o.required)throw new x(s(5001));if(E(o.defaultValue)){ae(o.validate)&&o.validate.call(this,i,e,t,r,this);return}i=o.defaultValue}if(Array.isArray(o.type)){let c=!1;for(let l=0;l<o.type.length;l++)o.type[l]===null&&i===null&&(c=!0),ae(o.type[l])&&i instanceof o.type[l]&&(c=!0),te(o.type[l])&&ye(i)===o.type[l].toLowerCase()&&(c=!0);if(!c)throw new x({code:U.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:o.type.map(l=>kr(l)?Eo(l):te(l)?l:ye(l))},value:i}})}else if(!E(o.type)&&ye(i)!==o.type)throw new x(s(5002));if(o.allowEmpty===!1){let c=q(i)&&(i===0||Number.isNaN(i)),l=te(i)&&i.trim()==="";if(c||l)throw new x(s(5003))}if(o.notLessThanZero&&q(i)&&i<0)throw new x(s(5006));if(!E(o.min)&&q(i)&&i<o.min)throw new x(s(5007));if(!E(o.max)&&q(i)&&i>o.max)throw new x(s(5008));if(te(o.instanceOf)){if(!i||i._name!==o.instanceOf)throw new x(s(5004))}else if(ae(o.instanceOf)&&!(i instanceof o.instanceOf))throw new x(s(5004));if(Array.isArray(o.values)&&!o.values.includes(i))throw new x(s(5005));let{properties:n}=o;Ze(n)&&ft(i)&&Object.keys(n).forEach(c=>{Vc.call(this,{rule:n[c],value:i&&i[c],key:`${c}`,fnName:t,className:r})});let{arrayItem:a}=o;Ze(a)&&Se(i)&&i.forEach((c,l)=>{Vc.call(this,{rule:a,value:c,key:`${e}[${l}]`,fnName:t,className:r})}),ae(o.validate)&&o.validate.call(this,i,e,t,r,this)}function fe(o={}){let{getRemoteId:i=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:r,ignoreErrorLog:s}=o;return K((n,a)=>function(...c){var g,T,_;function l(S,R,X){if(X&&X.includes(S))return"hided";if(e){let $=e(...c);if(c[$.argIndex]===R)return $.value}if(R===c||S in c)return R;try{return R instanceof HTMLElement?`id: ${R.id} type:${ye(R)}`:R instanceof MediaStreamTrack?la(R):(JSON.stringify(R),R)}catch($){return`type:${ye(R)}`}}let u=this._log||y;if(r!=null&&r(...c))return n.apply(this,c);c.length>0?u.info(`${a}() ${JSON.stringify(c,(S,R)=>l(S,R,["userSig","privateMapKey"]))}`):u.info(`${a}()`);let h=t?t(...c):Ba[a],m=(s==null?void 0:s(...c))||!1;try{let S=n.apply(this,c),R=P();if(ur(S)){let X=`${a.includes("Plugin")?`${((T=(g=c[0]).getName)==null?void 0:T.call(g))||""} `:" "}`;return S.then($=>(u.info(`${a}() success ${X}${i.call(this,...c)}`),v.addSuccessEvent({key:h,cost:P()-R}),$)).catch($=>{var J;$=x.convertFrom.call(this,$,a,c.length===1?c[0]:c);let De=$.extraCode||$.code,Q=(J=$.message)!=null&&J.includes(De)?"":` code:${De}`;throw m||u.error(`${a}() failed ${X}${i.call(this,...c)} ${$}${Q} params: ${JSON.stringify(c,l)}`),v.addFailedEvent({key:h,error:$}),$})}return v.addSuccessEvent({key:h}),S}catch(S){S=x.convertFrom.call(this,S,a);let R=S.extraCode||S.code,X=(_=S.message)!=null&&_.includes(R)?"":` code:${R}`;throw m||u.error(`${a}() failed ${S}${X} params: ${JSON.stringify(c,l)}`),v.addFailedEvent({key:h,error:S}),S}})}var Bc=o=>K((i,e)=>function(t,r){return f(this,null,function*(){let s=this._plugins.get(t);if(!s)throw this._log.error(`plugin ${String(t)} is not found`),new x({code:U.OPERATION_ABORT,message:`plugin ${String(t)} is not found`,fnName:e});if(ae(s.constructor.isSupported)&&!s.constructor.isSupported())throw this._log.error(`plugin ${String(t)} is not supported`),new x({code:U.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return Uc.call(this,s.getValidateRule(o),[r],e,"TRTC"),i.call(this,s,r)})});var Fc=0,th,er=class er{constructor(i){this.core=i;d(this,"log");d(this,"customAudioReferenceMap",new Map);d(this,"audioRefId",0);d(this,"audioContext",Ee());d(this,"localAudioWorkletNode");d(this,"screenAudioWorkletNode");d(this,"mixNode");d(this,"silentNode");Fc=Fc+1,this.log=i.log.createChild({id:`${this.getAlias()}${Fc}`}),this.log.info(`created id=${this.getAlias()}${Fc}`),this.installEvent()}static getStartValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,s){if(!i.room.audioManager.hasAudioTrack&&!i.room.audioManager.hasScreenAudioTrack)throw new x({code:U.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return th||(th=this.doPreload(i)),th}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield Xi(this.audioContext,t)}catch(r){this.log.error(`preload audioProcessor failed. ${r}`)}finally{URL.revokeObjectURL(t)}})}getName(){return er.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(i){switch(i){case"start":return er.getStartValidateRule(this.core);case"update":return er.updateValidateRule;case"stop":return er.stopValidateRule}}start(i){return f(this,null,function*(){var m,g,T,_;let{room:e}=this.core,{sdkAppId:t,userId:r,userSig:s,assetsPath:n=this.core.assetsPath,audioReference:a,processLevel:c,enableDump:l,isLocalAudioNeedAudioProcess:u=!0,isScreenAudioNeedAudioProcess:h=!1}=i;if(this.core.room.audioManager.isLocalAudioNeedAudioProcess=u,this.core.room.audioManager.isScreenAudioNeedAudioProcess=h,!n)throw new x({code:U.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${n}/audioProcessor-wasm.js`),u&&!this.localAudioWorkletNode){let{sign:S,status:R,timestamp:X}=yield this.getAuthData(t,r,s);this.localAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.localAudioWorkletNode,"localAudio",t,r,X,S,R,e)}if(h&&!this.screenAudioWorkletNode){let{sign:S,status:R,timestamp:X}=yield this.getAuthData(t,r,s);this.screenAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.screenAudioWorkletNode,"screenAudio",t,r,X,S,R,e)}this.mixNode||(this.mixNode=this.audioContext.createGain(),this.mixNode.gain.value=1),this.silentNode||(this.silentNode=this.audioContext.createConstantSource(),this.silentNode.offset.setValueAtTime(0,this.audioContext.currentTime),this.silentNode.start()),(m=this.localAudioWorkletNode)==null||m.port.postMessage({type:"enable"}),(g=this.screenAudioWorkletNode)==null||g.port.postMessage({type:"enable"}),e.audioManager.addAudioProcessor(this.mixNode,this.silentNode,this.localAudioWorkletNode,this.screenAudioWorkletNode),E(a)||a.forEach(S=>{this.customAudioReferenceMap.set(S,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:S,refId:`o-${this.audioRefId++}`})}),E(c)||(T=this.localAudioWorkletNode)==null||T.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:c}}),E(l)||(_=this.localAudioWorkletNode)==null||_.port.postMessage({type:"dump",data:{enable:l}})})}update(i){return f(this,null,function*(){var s,n,a;let{audioReference:e,enableDump:t,processLevel:r}=i;E(e)||(this.customAudioReferenceMap.forEach((c,l)=>{this.customAudioReferenceMap.delete(l),this.core.room.audioManager.updateAudioReference({type:"remove",refId:c})}),e.forEach(c=>{this.customAudioReferenceMap.set(c,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:c,refId:`o-${this.audioRefId++}`})})),E(r)||(s=this.localAudioWorkletNode)==null||s.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:r}}),E(t)||((n=this.localAudioWorkletNode)==null||n.port.postMessage({type:"dump",data:{enable:t}}),(a=this.screenAudioWorkletNode)==null||a.port.postMessage({type:"dump",data:{enable:t}}))})}stop(){return f(this,null,function*(){var e,t;let{room:i}=this.core;(e=this.localAudioWorkletNode)==null||e.port.postMessage({type:"disable"}),(t=this.screenAudioWorkletNode)==null||t.port.postMessage({type:"disable"}),yield i.audioManager.removeAudioProcessor(this.localAudioWorkletNode,this.screenAudioWorkletNode)})}destroy(){this.localAudioWorkletNode&&(this.localAudioWorkletNode.port.onmessage=null),this.screenAudioWorkletNode&&(this.screenAudioWorkletNode.port.onmessage=null),this.uninstallEvent()}getAuthData(i,e,t){return f(this,null,function*(){let r=String(Date.now()).slice(0,-3),{auth:s,sign:n,status:a,message:c}=yield aS({sdkAppId:i,userSig:t,userId:e,timestamp:r});if(!s)throw this.log.info(`audioProcessor: ${e} auth result: ${s}. Message: ${c}`),new x({code:U.INVALID_PARAMETER,message:c});return{sign:n,status:a,timestamp:r}})}initWorkletNode(i,e,t,r,s,n,a,c){i.port.postMessage({type:"init",data:{sdkAppId:String(t),userId:r,timestamp:s,sign:n,status:a}}),i.port.onmessage=l=>{var h;let{data:u}=l;switch(u.type){case"cost":let m=(u==null?void 0:u.value)>10?"info":"debug";this.log[m](`${e==="localAudio"?"":`[${e}] `}avg cost: ${u.value} max: ${u==null?void 0:u.max}(${uo(new Date(u==null?void 0:u.maxCostTimestamp))}) hist: ${(h=u==null?void 0:u.hist)==null?void 0:h.join(" ")}`);return;case"log":this.log[u.logLevel](`${e==="localAudio"?"":`[${e}] `}${u.value}`);return;case"dump":A.emit("265",{room:c,data:u.value,type:e==="localAudio"?"dump":"dump-screen-audio"});return}}}handleLocalAudioStarted(i){return f(this,null,function*(){var e;if(!(!this.hitTest(i.room)||((e=this.core.room.scheduleResult.config)==null?void 0:e.audioProcessor)!==!0))try{yield this.core.trtc.startPlugin("AudioProcessor",{sdkAppId:this.core.room.sdkAppId,userId:this.core.room.userId,userSig:this.core.room.userSig}),this.log.warn("audio processor auto start success")}catch(t){this.log.warn(`audio processor auto start failed, error: ${t}`)}})}handleLocalAudioStopped(i){return f(this,null,function*(){var e;!this.hitTest(i.room)||((e=this.core.room.scheduleResult.config)==null?void 0:e.audioProcessor)!==!0||(yield this.core.trtc.stopPlugin("AudioProcessor"))})}installEvent(){this.core.innerEmitter.on("104",this.handleLocalAudioStarted,this),this.core.innerEmitter.on("114",this.handleLocalAudioStopped,this)}uninstallEvent(){this.core.innerEmitter.off("104",this.handleLocalAudioStarted,this),this.core.innerEmitter.off("114",this.handleLocalAudioStopped,this)}hitTest(i){return i===this.core.room}};d(er,"updateValidateRule",{type:"object"}),d(er,"stopValidateRule",{type:"object"}),d(er,"Name","AudioProcessor");var Hc=er;function nS(o,i=p.MAIN){return`https://${vi[i]||Pc(o,i)}/api/v1/audioAiAuth`}function aS(r){return f(this,arguments,function*({sdkAppId:o,userId:i,userSig:e,timestamp:t}){let n=`${nS(o)}?sdkAppId=${o}&userId=${i}&userSig=${e}×tamp=${t}`,a=yield fetch(n),{data:{errCode:c,errMsg:l,sign:u,status:h}}=yield a.json();if(h==="1")return{auth:!0,sign:u,status:h,message:l};let m=Li(o)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",g="Init RTCAudioProcessor failed.",T="";switch(c){case 1:T="Please check your params.";break;case 2:T=`You need to buy packages. Refer to: ${m}`;break;case 3:T="Server is invalid. Please contact our engineer. ";break;case 4:T=`Your packages is not active. Refer to: ${m}`;break;case 5:T=`Your packages is expired. Refer to: ${m}`;break;case 6:T="Your version is not supported.";break}return{auth:!1,status:h,message:l?`${g} Reason: ${l}. ${T}`:`${g}, ${T}`}})}var $c=0,ih=class{constructor(i,e){d(this,"player");d(this,"publisher");d(this,"mixInput");this.mixInput=new zo(e),i.url?(this.player=new Audio(i.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(i.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(i.track),this.mixInput.connect()}updateSettings(i){this.player&&(E(i.volume)||(this.volume=i.volume),E(i.loop)||(this.loop=i.loop),E(i.playbackRate)||(this.playbackRate=i.playbackRate))}updateListener(i){if(this.player){if(i.onDurationChange){let{onDurationChange:e}=i;this.player.ondurationchange=t=>{e(t.target.duration)}}if(i.onTimeUpdate){let e=i.onTimeUpdate,{player:t}=this;t.ontimeupdate=()=>{e(t.currentTime,t.duration)}}i.onEnded&&(this.player.onended=i.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(i){this.player&&(i<0&&i>this.player.duration||(this.player.currentTime=i,this.publisher.currentTime=i))}play(){var i,e;return(i=this.publisher)==null||i.play(),(e=this.player)==null?void 0:e.play()}pause(){var i,e;(i=this.player)==null||i.pause(),(e=this.publisher)==null||e.pause()}stop(){var i;(i=this.player)==null||i.pause(),this.mixInput.disconnect()}setOperation(i){i==="pause"&&this.pause(),i==="resume"&&(this.pause(),this.play()),i==="stop"&&(this.pause(),this.seek(0))}set volume(i){!this.player||!this.publisher||(this.player.volume=i,this.publisher.volume=i)}set loop(i){!this.player||!this.publisher||(this.player.loop=i,this.publisher.loop=i)}set playbackRate(i){!this.player||!this.publisher||(this.player.playbackRate=i,this.publisher.playbackRate=i)}};function hs(o,i){if(i&&typeof i!="function")throw new x({code:U.INVALID_PARAMETER,message:`start audioMixer plugin: param ${o} should be a function.`})}var Ni=class Ni{constructor(i){this.core=i;d(this,"log");d(this,"mixedMusicMap",new Map);d(this,"cacheMusicMap",new Map);$c=$c+1,this.log=i.log.createChild({id:`${this.getAlias()}${$c}`}),this.log.info(`created id=${this.getAlias()}${$c}`)}getName(){return Ni.Name}getAlias(){return"ax"}getGroup(i){return i==null?void 0:i.id}getValidateRule(i){switch(i){case"start":return Ni.startValidateRule;case"update":return Ni.updateValidateRule;case"stop":return Ni.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${i.id} url: ${i.url}, track: ${i.track}`);let{id:t,url:r}=i;if(this.mixedMusicMap.has(t))return;let s=this.cacheMusicMap.get(t);s?i.url?s.reset():(s.mixInput.replaceSource(i.track),s.mixInput.connect()):(s=new ih(i,e.audioManager),this.cacheMusicMap.set(t,s)),s.updateListener(i),s.updateSettings(i),yield s.play(),this.mixedMusicMap.set(t,s),s.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s.mixInput.source.node,refId:`ax-${t}`}),this.log.info(`start mix audio track ${t} success.`),v.addEnum({key:502700,value:3}),this.kvUpload(i)})}update(i){return f(this,null,function*(){let{id:e,operation:t,seekFrom:r,playbackRate:s}=i;this.log.info(`update music source, ${JSON.stringify(i)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(i),n.updateListener(i),E(t)||n.setOperation(t),E(r)||n.seek(r),this.kvUpload(i)})}stop(e){return f(this,arguments,function*({id:i}){if(this.mixedMusicMap.has(i)){this.log.info(`remove music source, music id: ${i}`);let t=this.mixedMusicMap.get(i);t!=null&&t.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:t.mixInput.source.node,refId:`ax-${i}`}),t==null||t.stop(),this.mixedMusicMap.delete(i)}i==="*"&&this.destroyAllMusic()})}kvUpload(i){let{track:e,loop:t,volume:r,playbackRate:s,operation:n,seekFrom:a,onTimeUpdate:c,onDurationChange:l,onEnded:u}=i;e&&v.addCount({key:502711}),t&&v.addCount({key:502703}),r&&v.addCount({key:502704}),s&&v.addCount({key:502705}),n&&v.addCount({key:502706}),a&&v.addCount({key:502707}),typeof c!="function"&&v.addCount({key:502709}),typeof u!="function"&&v.addCount({key:502710}),typeof l!="function"&&v.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((i,e)=>{i!=null&&i.mixInput.track&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:i.mixInput.track,refId:e}),this.stop({id:e})})}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};d(Ni,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(i,e,t){if(i.url&&i.url!=="*"){let r=i.url.split("?")[0],s=["mp3","ogg","wav","flac"],n=r.split(".").pop(),a=s.indexOf(n)>=0,c=r.startsWith("blob"),l=r.startsWith("data");if(!(a||c||l))throw new x({code:U.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:t})}if(!i.url&&!i.track)throw new x({code:U.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});hs("onTimeUpdate",i.onTimeUpdate),hs("onEnded",i.onEnded),hs("onDurationChange",i.onDurationChange)}}),d(Ni,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(i,e,t){hs("onTimeUpdate",i.onTimeUpdate),hs("onEnded",i.onEnded),hs("onDurationChange",i.onDurationChange)}}),d(Ni,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),d(Ni,"Name","AudioMixer");var Gc=Ni;var Wc=0,rh,tr=class tr{constructor(i){this.core=i;d(this,"log");d(this,"audioContext",Ee("denoiser"));d(this,"workletNode");Wc=Wc+1,this.log=i.log.createChild({id:`${this.getAlias()}${Wc}`}),this.log.info(`created id=${this.getAlias()}${Wc}`)}static startValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,s){if(!i.room.audioManager.hasAudioTrack)throw new x({code:U.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return rh||(rh=this.doPreload(i)),rh}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield Xi(this.audioContext,t)}catch(r){throw this.log.error("load worklet failed",r),r}finally{URL.revokeObjectURL(t)}})}getName(){return tr.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(i){switch(i){case"start":return tr.startValidateRule(this.core);case"update":return tr.updateValidateRule;case"stop":return tr.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e,schedule:t}=this.core,{assetsPath:r=this.core.assetsPath}=i;if(!r)throw new x({code:U.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${r}/denoiser-wasm.js`),!this.workletNode){let s=String(Date.now()).slice(0,-3),{auth:n,sign:a,status:c,message:l}=yield dS(t,w(D({},i),{timestamp:s}));if(!n)throw this.log.info(`RTCAIDenoiser: ${i.userId} auth result: ${n}. Message: ${l}`),new x({code:U.INVALID_PARAMETER,message:l});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(i.sdkAppId),userId:i.userId,timestamp:s,sign:a,status:c}}),this.workletNode.port.onmessage=u=>{var m;let{data:h}=u;if(h.type==="cost"){let g=(h==null?void 0:h.max)>20?"warn":(h==null?void 0:h.max)>10?"info":"debug";this.log[g](`avg cost: ${h.value} max: ${h==null?void 0:h.max}(${uo(new Date(h==null?void 0:h.maxCostTimestamp))}) hist: ${(m=h==null?void 0:h.hist)==null?void 0:m.join(" ")}`)}else h.type==="log"&&this.log[h.logLevel](`${h.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return f(this,null,function*(){})}stop(){return f(this,null,function*(){if(!this.workletNode)return;let{room:i}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield i.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};d(tr,"updateValidateRule",{type:"object"}),d(tr,"stopValidateRule",{type:"object"}),d(tr,"Name","AIDenoiser");var Jc=tr;function dS(s,n){return f(this,arguments,function*(o,{sdkAppId:i,userId:e,userSig:t,timestamp:r}){try{let{data:{errCode:a,errMsg:c,sign:l,status:u}}=yield o.getAbilityConfig(i,o.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:i,userId:e,userSig:t,timestamp:r});if(u==="1")return{auth:!0,sign:l,status:u,message:c};let h=Li(i)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",m="Init RTCAIDenoiser failed.",g="";switch(a){case 1:g="Please check your params.";break;case 2:g=`You need to buy packages. Refer to: ${h}`;break;case 3:g="Server is invalid. Please contact our engineer. ";break;case 4:g=`Your packages is not active. Refer to: ${h}`;break;case 5:g=`Your packages is expired. Refer to: ${h}`;break;case 6:g="Your version is not supported.";break}return{auth:!1,status:u,message:c?`${m} Reason: ${c}. ${g}`:`${m}, ${g}`}}catch(a){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${a}`}}})}var uf=He(Qe(),1);var oh=class extends uf.EventEmitter{constructor(){super();d(this,"observer");d(this,"state","nominal");this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return f(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!pe&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){se.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let t=this.stateNum,r=e[e.length-1];this.state=r.state,(this.stateNum>3||t>3)&&y.info(`${r.source}: ${r.state}`),this.emit("state-changed",{type:r.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(t){se.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:t})}}},lS=new oh,sh=lS;function nh([o,i]){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,s=[];s.push(0,0,0,1,6,o);for(let a=0;a<t;a++)s.push(255);s.push(r);let n=new DataView(i);return s.push(...new Uint8Array(n.buffer)),s.push(128),new Zi(new DataView(new Uint8Array(s).buffer),!0)}function ah(o){return o.type==="empty"||o.data.byteLength===0}function ch(o){return o.getInt32(0)===1&&o.getInt8(4)===6}function dh(o){let i=0,e=0,t=new DataView(o);for(let r=0;r<o.byteLength;r++)switch(t.getUint8(r)){case 0:i++;break;case 1:(i===2||i===3)&&e++,i=0;break;default:i=0;break}return e}function lh({frame:o,seiMessageList:i}){if(!i||i.length===0||o.data.byteLength===0)return o;let t=9-dh(o.data);if(t<=0)return o;let r=i.splice(0,t).reverse().map(nh),s=r.reduce((u,h)=>u+h.dataView.byteLength,0),n=new ArrayBuffer(s+o.data.byteLength),a=new DataView(n),c=new DataView(o.data),l=0;for(let u=0;u<r.length;u++)for(let h=0;h<r[u].dataView.byteLength;h++)a.setInt8(l++,r[u].dataView.getInt8(h));for(let u=0;u<o.data.byteLength;u++)a.setInt8(l++,c.getInt8(u));return o.data=n,o}function uh({frame:o,onSEI:i}){try{let e=new DataView(o.data);if(ah(o)||!ch(e))return o;let t=[],r=0,s=-1,n=-1;for(let a=0;a<o.data.byteLength;a++){let c=e.getUint8(a);if(c===0)r++;else if(c===1){if(r===2||r===3){let l=a-r;if(s===-1?s=l:n===-1&&(n=l,t.push(new Zi(new DataView(e.buffer.slice(s,n)))),s=l,n=-1),!(e.getUint8(a+1)===6)){o.data=e.buffer.slice(l);break}}r=0}else r=0}i==null||i(t.reverse())}catch(e){}return o}var hh=0,On=class On{constructor(i){this.core=i;d(this,"log");d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(this,"_subStreamSeiMessageList",[]);hh++,this.log=i.log.createChild({id:`${this.getAlias()}${hh}`}),this.log.info(`[sei] created id=${this.getAlias()}${hh}`),this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:i,mediaType:e}){try{let t=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return lh({frame:i,seiMessageList:t})}catch(t){this.log.warn(t)}return i}decode({frame:i,track:e}){return uh({frame:i,onSEI:t=>{t.forEach(r=>{this.core.trtc.emit(k.SEI_MESSAGE,{seiPayloadType:r.seiPayloadType,data:r.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(i){switch(i){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:qi?this.encode:lh,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:qi?this.decode:uh,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:i,options:e}){var s;let t=[e.seiPayloadType,i],r=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(t):(this._seiMessageList.push(t),r&&this._smallSeiMessageList.push(t)),(s=this.core.room.scriptTransformWorker)==null||s.postMessage({type:"sei",data:t,isMain:!e.toSubStream,small:r})}getName(){return On.Name}getAlias(){return"sei"}getGroup(){return"sei"}};d(On,"autoStart",!0),d(On,"Name","SEI");var qc=On;function mh({frame:o,onDump:i}){return i==null||i(),o}function ph({frame:o,onDump:i}){return i==null||i(),o}var hf={"play() error: NotAllowedError:":{tips:o=>o.includes("main <video>")||o.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:o=>o.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:o=>o.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
|
|
98
|
+
${o.stack}`),!1}},i};var bn=new WeakMap;function _E(i){let t=bn.get(i);t&&(t.forEach(e=>clearTimeout(e)),bn.delete(i))}function IE(i,t){return xe((e,r)=>function(...o){let s=bn.get(this);s||(s=new Map,bn.set(this,s));let n=t(...o),a=s.get(n);if(!a||a<=0){e.apply(this,o);let u=setTimeout(()=>{var m;(m=bn.get(this))==null||m.delete(n)},i);s.set(n,u)}else{clearTimeout(a);let u=window.setTimeout(()=>{var m;e.apply(this,o),(m=bn.get(this))==null||m.delete(n)},i);s.set(n,u)}})}var yE="trtc-sdk-v5",AE="5.13.0-wasm.2";function Ot(...i){return xe((t,e)=>function(...r){try{wu.call(this,i,r,e,this._name)}catch(o){return Promise.reject(o)}return t.apply(this,r)})}function nh(...i){return xe((t,e)=>function(...r){try{wu.call(this,i,r,e,this._name)}catch(o){throw o}return t.apply(this,r)})}function wu(i,t,e,r){if(ot(i))for(let o=0;o<i.length;o++)Du.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else Du.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}function Du({rule:i,value:t,key:e,fnName:r,className:o}){function s(u){return{code:ne.INVALID_PARAMETER,extraCode:u,fnName:r,messageParams:{key:e,rule:i,value:t}}}if(O(t)){if(i.required)throw new oe(s(5001));if(O(i.defaultValue)){We(i.validate)&&i.validate.call(this,t,e,r,o,this);return}t=i.defaultValue}if(Array.isArray(i.type)){let u=!1;for(let m=0;m<i.type.length;m++)i.type[m]===null&&t===null&&(u=!0),We(i.type[m])&&t instanceof i.type[m]&&(u=!0),De(i.type[m])&&at(t)===i.type[m].toLowerCase()&&(u=!0);if(!u)throw new oe({code:ne.INVALID_PARAMETER,extraCode:5002,fnName:r,messageParams:{key:e,rule:{type:i.type.map(m=>Bo(m)?Ls(m):De(m)?m:at(m))},value:t}})}else if(!O(i.type)&&at(t)!==i.type)throw new oe(s(5002));if(i.allowEmpty===!1){let u=Le(t)&&(t===0||Number.isNaN(t)),m=De(t)&&t.trim()==="";if(u||m)throw new oe(s(5003))}if(i.notLessThanZero&&Le(t)&&t<0)throw new oe(s(5006));if(!O(i.min)&&Le(t)&&t<i.min)throw new oe(s(5007));if(!O(i.max)&&Le(t)&&t>i.max)throw new oe(s(5008));if(De(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new oe(s(5004))}else if(We(i.instanceOf)&&!(t instanceof i.instanceOf))throw new oe(s(5004));if(Array.isArray(i.values)&&!i.values.includes(t))throw new oe(s(5005));let{properties:n}=i;Ft(n)&&ir(t)&&Object.keys(n).forEach(u=>{Du.call(this,{rule:n[u],value:t&&t[u],key:`${u}`,fnName:r,className:o})});let{arrayItem:a}=i;Ft(a)&&ot(t)&&t.forEach((u,m)=>{Du.call(this,{rule:a,value:u,key:`${e}[${m}]`,fnName:r,className:o})}),We(i.validate)&&i.validate.call(this,t,e,r,o,this)}function tt(i={}){let{getRemoteId:t=()=>"",replaceArg:e,getKVReportKey:r,ignoreLog:o,ignoreErrorLog:s}=i;return xe((n,a)=>function(...u){var A,C,N;function m(w,x,te){if(te&&te.includes(w))return"hided";if(e){let ue=e(...u);if(u[ue.argIndex]===x)return ue.value}if(x===u||w in u)return x;try{return x instanceof HTMLElement?`id: ${x.id} type:${at(x)}`:x instanceof MediaStreamTrack?Zc(x):(JSON.stringify(x),x)}catch(ue){return`type:${at(x)}`}}let h=this._log||$;if(o!=null&&o(...u))return n.apply(this,u);u.length>0?h.info(`${a}() ${JSON.stringify(u,(w,x)=>m(w,x,["userSig","privateMapKey"]))}`):h.info(`${a}()`);let f=r?r(...u):Dd[a],T=(s==null?void 0:s(...u))||!1;try{let w=n.apply(this,u),x=Te();if(ro(w)){let te=`${a.includes("Plugin")?`${((C=(A=u[0]).getName)==null?void 0:C.call(A))||""} `:" "}`;return w.then(ue=>(h.info(`${a}() success ${te}${t.call(this,...u)}`),X.addSuccessEvent({key:f,cost:Te()-x}),ue)).catch(ue=>{var Y;ue=oe.convertFrom.call(this,ue,a,u.length===1?u[0]:u);let ye=ue.extraCode||ue.code,Ie=(Y=ue.message)!=null&&Y.includes(ye)?"":` code:${ye}`;throw T||h.error(`${a}() failed ${te}${t.call(this,...u)} ${ue}${Ie} params: ${JSON.stringify(u,m)}`),X.addFailedEvent({key:f,error:ue}),ue})}return X.addSuccessEvent({key:f}),w}catch(w){w=oe.convertFrom.call(this,w,a);let x=w.extraCode||w.code,te=(N=w.message)!=null&&N.includes(x)?"":` code:${x}`;throw T||h.error(`${a}() failed ${w}${te} params: ${JSON.stringify(u,m)}`),X.addFailedEvent({key:f,error:w}),w}})}var Mu=i=>xe((t,e)=>function(r,o){return y(this,null,function*(){let s=this._plugins.get(r);if(!s)throw this._log.error(`plugin ${String(r)} is not found`),new oe({code:ne.OPERATION_ABORT,message:`plugin ${String(r)} is not found`,fnName:e});if(We(s.constructor.isSupported)&&!s.constructor.isSupported())throw this._log.error(`plugin ${String(r)} is not supported`),new oe({code:ne.ENV_NOT_SUPPORTED,message:`plugin ${String(r)} is not supported`,extraCode:5210,fnName:e});return wu.call(this,s.getValidateRule(i),[o],e,"TRTC"),t.call(this,s,o)})});var Ou=0,ah,Ui=class Ui{constructor(t){this.core=t;l(this,"log");l(this,"customAudioReferenceMap",new Map);l(this,"audioRefId",0);l(this,"audioContext",Ye());l(this,"localAudioWorkletNode");l(this,"screenAudioWorkletNode");l(this,"mixNode");l(this,"silentNode");Ou=Ou+1,this.log=t.log.createChild({id:`${this.getAlias()}${Ou}`}),this.log.info(`created id=${this.getAlias()}${Ou}`)}static getStartValidateRule(t){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,r,o,s){if(!t.room.audioManager.hasAudioTrack&&!t.room.audioManager.hasScreenAudioTrack)throw new oe({code:ne.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return ah||(ah=this.doPreload(t)),ah}doPreload(t){return y(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield Mi(this.audioContext,r)}catch(o){this.log.error(`preload audioProcessor failed. ${o}`)}finally{URL.revokeObjectURL(r)}})}getName(){return Ui.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(t){switch(t){case"start":return Ui.getStartValidateRule(this.core);case"update":return Ui.updateValidateRule;case"stop":return Ui.stopValidateRule}}start(t){return y(this,null,function*(){let{room:e}=this.core,{sdkAppId:r,userId:o,assetsPath:s=this.core.assetsPath,audioReference:n,processLevel:a,enableDump:u,isLocalAudioNeedAudioProcess:m=!0,isScreenAudioNeedAudioProcess:h=!0}=t;if(this.core.room.audioManager.isLocalAudioNeedAudioProcess=m,this.core.room.audioManager.isScreenAudioNeedAudioProcess=h,!s)throw new oe({code:ne.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${s}/audioProcessor-wasm.js`),!this.localAudioWorkletNode||!this.screenAudioWorkletNode){let f=String(Date.now()).slice(0,-3),{auth:T,sign:A,status:C,message:N}=yield Ny(pe(j({},t),{timestamp:f}));if(!T)throw this.log.info(`audioProcessor: ${o} auth result: ${T}. Message: ${N}`),new oe({code:ne.INVALID_PARAMETER,message:N});this.localAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.localAudioWorkletNode,"localAudio",r,o,f,A,C,e),this.screenAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.screenAudioWorkletNode,"screenAudio",r,o,f,A,C,e)}this.mixNode||(this.mixNode=this.audioContext.createGain(),this.mixNode.gain.value=1),this.silentNode||(this.silentNode=this.audioContext.createConstantSource(),this.silentNode.offset.setValueAtTime(0,this.audioContext.currentTime),this.silentNode.start()),this.localAudioWorkletNode.port.postMessage({type:"enable"}),this.screenAudioWorkletNode.port.postMessage({type:"enable"}),e.audioManager.addAudioProcessor(this.localAudioWorkletNode,this.mixNode,this.silentNode,this.screenAudioWorkletNode),O(n)||n.forEach(f=>{this.customAudioReferenceMap.set(f,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:f,refId:`o-${this.audioRefId++}`})}),O(a)||this.localAudioWorkletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:a}}),O(u)||this.localAudioWorkletNode.port.postMessage({type:"dump",data:{enable:u}})})}update(t){return y(this,null,function*(){if(!this.localAudioWorkletNode||!this.screenAudioWorkletNode)return;let{audioReference:e,enableDump:r,processLevel:o}=t;O(e)||(this.customAudioReferenceMap.forEach((s,n)=>{this.customAudioReferenceMap.delete(n),this.core.room.audioManager.updateAudioReference({type:"remove",refId:s})}),e.forEach(s=>{this.customAudioReferenceMap.set(s,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s,refId:`o-${this.audioRefId++}`})})),O(o)||this.localAudioWorkletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:o}}),O(r)||(this.localAudioWorkletNode.port.postMessage({type:"dump",data:{enable:r}}),this.screenAudioWorkletNode.port.postMessage({type:"dump",data:{enable:r}}))})}stop(){return y(this,null,function*(){if(!this.localAudioWorkletNode||!this.mixNode||!this.silentNode||!this.screenAudioWorkletNode)return;let{room:t}=this.core;this.localAudioWorkletNode.port.postMessage({type:"disable"}),this.screenAudioWorkletNode.port.postMessage({type:"disable"}),yield t.audioManager.removeAudioProcessor(this.localAudioWorkletNode,this.mixNode,this.silentNode,this.screenAudioWorkletNode)})}destroy(){this.localAudioWorkletNode&&(this.localAudioWorkletNode.port.onmessage=null),this.screenAudioWorkletNode&&(this.screenAudioWorkletNode.port.onmessage=null)}initWorkletNode(t,e,r,o,s,n,a,u){t.port.postMessage({type:"init",data:{sdkAppId:String(r),userId:o,timestamp:s,sign:n,status:a}}),t.port.onmessage=m=>{var f;let{data:h}=m;switch(h.type){case"cost":let T=(h==null?void 0:h.value)>10?"info":"debug";this.log[T](`[${e}] avg cost: ${h.value} max: ${h==null?void 0:h.max}(${Ns(new Date(h==null?void 0:h.maxCostTimestamp))}) hist: ${(f=h==null?void 0:h.hist)==null?void 0:f.join(" ")}`);return;case"log":this.log[h.logLevel](`[${e}] ${h.value}`);return;case"dump":V.emit("265",{room:u,data:h.value,type:e==="localAudio"?"dump":"dump-screen-audio"});return}}}};l(Ui,"updateValidateRule",{type:"object"}),l(Ui,"stopValidateRule",{type:"object"}),l(Ui,"Name","AudioProcessor");var xu=Ui;function Cy(i,t=M.MAIN){return`https://${oi[t]||Nu(i,t)}/api/v1/audioAiAuth`}function Ny(o){return y(this,arguments,function*({sdkAppId:i,userId:t,userSig:e,timestamp:r}){let n=`${Cy(i)}?sdkAppId=${i}&userId=${t}&userSig=${e}×tamp=${r}`,a=yield fetch(n),{data:{errCode:u,errMsg:m,sign:h,status:f}}=yield a.json();if(f==="1")return{auth:!0,sign:h,status:f,message:m};let T=gi(i)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",A="Init RTCAudioProcessor failed.",C="";switch(u){case 1:C="Please check your params.";break;case 2:C=`You need to buy packages. Refer to: ${T}`;break;case 3:C="Server is invalid. Please contact our engineer. ";break;case 4:C=`Your packages is not active. Refer to: ${T}`;break;case 5:C=`Your packages is expired. Refer to: ${T}`;break;case 6:C="Your version is not supported.";break}return{auth:!1,status:f,message:m?`${A} Reason: ${m}. ${C}`:`${A}, ${C}`}})}var ku=0,ch=class{constructor(t,e){l(this,"player");l(this,"publisher");l(this,"mixInput");this.mixInput=new dn(e),t.url?(this.player=new Audio(t.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(t.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(t.track),this.mixInput.connect()}updateSettings(t){this.player&&(O(t.volume)||(this.volume=t.volume),O(t.loop)||(this.loop=t.loop),O(t.playbackRate)||(this.playbackRate=t.playbackRate))}updateListener(t){if(this.player){if(t.onDurationChange){let{onDurationChange:e}=t;this.player.ondurationchange=r=>{e(r.target.duration)}}if(t.onTimeUpdate){let e=t.onTimeUpdate,{player:r}=this;r.ontimeupdate=()=>{e(r.currentTime,r.duration)}}t.onEnded&&(this.player.onended=t.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(t){this.player&&(t<0&&t>this.player.duration||(this.player.currentTime=t,this.publisher.currentTime=t))}play(){var t,e;return(t=this.publisher)==null||t.play(),(e=this.player)==null?void 0:e.play()}pause(){var t,e;(t=this.player)==null||t.pause(),(e=this.publisher)==null||e.pause()}stop(){var t;(t=this.player)==null||t.pause(),this.mixInput.disconnect()}setOperation(t){t==="pause"&&this.pause(),t==="resume"&&(this.pause(),this.play()),t==="stop"&&(this.pause(),this.seek(0))}set volume(t){!this.player||!this.publisher||(this.player.volume=t,this.publisher.volume=t)}set loop(t){!this.player||!this.publisher||(this.player.loop=t,this.publisher.loop=t)}set playbackRate(t){!this.player||!this.publisher||(this.player.playbackRate=t,this.publisher.playbackRate=t)}};function Rn(i,t){if(t&&typeof t!="function")throw new oe({code:ne.INVALID_PARAMETER,message:`start audioMixer plugin: param ${i} should be a function.`})}var si=class si{constructor(t){this.core=t;l(this,"log");l(this,"mixedMusicMap",new Map);l(this,"cacheMusicMap",new Map);ku=ku+1,this.log=t.log.createChild({id:`${this.getAlias()}${ku}`}),this.log.info(`created id=${this.getAlias()}${ku}`)}getName(){return si.Name}getAlias(){return"ax"}getGroup(t){return t==null?void 0:t.id}getValidateRule(t){switch(t){case"start":return si.startValidateRule;case"update":return si.updateValidateRule;case"stop":return si.stopValidateRule}}start(t){return y(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${t.id} url: ${t.url}, track: ${t.track}`);let{id:r,url:o}=t;if(this.mixedMusicMap.has(r))return;let s=this.cacheMusicMap.get(r);s?t.url?s.reset():(s.mixInput.replaceSource(t.track),s.mixInput.connect()):(s=new ch(t,e.audioManager),this.cacheMusicMap.set(r,s)),s.updateListener(t),s.updateSettings(t),yield s.play(),this.mixedMusicMap.set(r,s),s.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s.mixInput.source.node,refId:`ax-${r}`}),this.log.info(`start mix audio track ${r} success.`),X.addEnum({key:502700,value:3}),this.kvUpload(t)})}update(t){return y(this,null,function*(){let{id:e,operation:r,seekFrom:o,playbackRate:s}=t;this.log.info(`update music source, ${JSON.stringify(t)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(t),n.updateListener(t),O(r)||n.setOperation(r),O(o)||n.seek(o),this.kvUpload(t)})}stop(e){return y(this,arguments,function*({id:t}){if(this.mixedMusicMap.has(t)){this.log.info(`remove music source, music id: ${t}`);let r=this.mixedMusicMap.get(t);r!=null&&r.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:r.mixInput.source.node,refId:`ax-${t}`}),r==null||r.stop(),this.mixedMusicMap.delete(t)}t==="*"&&this.destroyAllMusic()})}kvUpload(t){let{track:e,loop:r,volume:o,playbackRate:s,operation:n,seekFrom:a,onTimeUpdate:u,onDurationChange:m,onEnded:h}=t;e&&X.addCount({key:502711}),r&&X.addCount({key:502703}),o&&X.addCount({key:502704}),s&&X.addCount({key:502705}),n&&X.addCount({key:502706}),a&&X.addCount({key:502707}),typeof u!="function"&&X.addCount({key:502709}),typeof h!="function"&&X.addCount({key:502710}),typeof m!="function"&&X.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((t,e)=>{t!=null&&t.mixInput.track&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:t.mixInput.track,refId:e}),this.stop({id:e})})}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};l(si,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(t,e,r){if(t.url&&t.url!=="*"){let o=t.url.split("?")[0],s=["mp3","ogg","wav","flac"],n=o.split(".").pop(),a=s.indexOf(n)>=0,u=o.startsWith("blob"),m=o.startsWith("data");if(!(a||u||m))throw new oe({code:ne.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:r})}if(!t.url&&!t.track)throw new oe({code:ne.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:r});Rn("onTimeUpdate",t.onTimeUpdate),Rn("onEnded",t.onEnded),Rn("onDurationChange",t.onDurationChange)}}),l(si,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(t,e,r){Rn("onTimeUpdate",t.onTimeUpdate),Rn("onEnded",t.onEnded),Rn("onDurationChange",t.onDurationChange)}}),l(si,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),l(si,"Name","AudioMixer");var Pu=si;var Lu=0,dh,Vi=class Vi{constructor(t){this.core=t;l(this,"log");l(this,"audioContext",Ye("denoiser"));l(this,"workletNode");Lu=Lu+1,this.log=t.log.createChild({id:`${this.getAlias()}${Lu}`}),this.log.info(`created id=${this.getAlias()}${Lu}`)}static startValidateRule(t){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,r,o,s){if(!t.room.audioManager.hasAudioTrack)throw new oe({code:ne.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return dh||(dh=this.doPreload(t)),dh}doPreload(t){return y(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield Mi(this.audioContext,r)}catch(o){throw this.log.error("load worklet failed",o),o}finally{URL.revokeObjectURL(r)}})}getName(){return Vi.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(t){switch(t){case"start":return Vi.startValidateRule(this.core);case"update":return Vi.updateValidateRule;case"stop":return Vi.stopValidateRule}}start(t){return y(this,null,function*(){let{room:e,schedule:r}=this.core,{assetsPath:o=this.core.assetsPath}=t;if(!o)throw new oe({code:ne.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${o}/denoiser-wasm.js`),!this.workletNode){let s=String(Date.now()).slice(0,-3),{auth:n,sign:a,status:u,message:m}=yield wy(r,pe(j({},t),{timestamp:s}));if(!n)throw this.log.info(`RTCAIDenoiser: ${t.userId} auth result: ${n}. Message: ${m}`),new oe({code:ne.INVALID_PARAMETER,message:m});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(t.sdkAppId),userId:t.userId,timestamp:s,sign:a,status:u}}),this.workletNode.port.onmessage=h=>{var T;let{data:f}=h;if(f.type==="cost"){let A=(f==null?void 0:f.max)>20?"warn":(f==null?void 0:f.max)>10?"info":"debug";this.log[A](`avg cost: ${f.value} max: ${f==null?void 0:f.max}(${Ns(new Date(f==null?void 0:f.maxCostTimestamp))}) hist: ${(T=f==null?void 0:f.hist)==null?void 0:T.join(" ")}`)}else f.type==="log"&&this.log[f.logLevel](`${f.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return y(this,null,function*(){})}stop(){return y(this,null,function*(){if(!this.workletNode)return;let{room:t}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield t.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};l(Vi,"updateValidateRule",{type:"object"}),l(Vi,"stopValidateRule",{type:"object"}),l(Vi,"Name","AIDenoiser");var Uu=Vi;function wy(s,n){return y(this,arguments,function*(i,{sdkAppId:t,userId:e,userSig:r,timestamp:o}){try{let{data:{errCode:a,errMsg:u,sign:m,status:h}}=yield i.getAbilityConfig(t,i.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:t,userId:e,userSig:r,timestamp:o});if(h==="1")return{auth:!0,sign:m,status:h,message:u};let f=gi(t)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",T="Init RTCAIDenoiser failed.",A="";switch(a){case 1:A="Please check your params.";break;case 2:A=`You need to buy packages. Refer to: ${f}`;break;case 3:A="Server is invalid. Please contact our engineer. ";break;case 4:A=`Your packages is not active. Refer to: ${f}`;break;case 5:A=`Your packages is expired. Refer to: ${f}`;break;case 6:A="Your version is not supported.";break}return{auth:!1,status:h,message:u?`${T} Reason: ${u}. ${A}`:`${T}, ${A}`}}catch(a){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${a}`}}})}var RE=mi(yi(),1);var uh=class extends RE.EventEmitter{constructor(){super();l(this,"observer");l(this,"state","nominal");this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return y(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!pt&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){je.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let r=this.stateNum,o=e[e.length-1];this.state=o.state,(this.stateNum>3||r>3)&&$.info(`${o.source}: ${o.state}`),this.emit("state-changed",{type:o.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(r){je.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:r})}}},My=new uh,lh=My;function Oy([i,t]){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,i);for(let a=0;a<r;a++)s.push(255);s.push(o);let n=new DataView(t);return s.push(...new Uint8Array(n.buffer)),s.push(128),new ns(new DataView(new Uint8Array(s).buffer),!0)}function xy(i){return i.type==="empty"||i.data.byteLength===0}function ky(i){return i.getInt32(0)===1&&i.getInt8(4)===6}function Py(i){let t=0,e=0,r=new DataView(i);for(let o=0;o<i.byteLength;o++)switch(r.getUint8(o)){case 0:t++;break;case 1:(t===2||t===3)&&e++,t=0;break;default:t=0;break}return e}function mh({frame:i,seiMessageList:t}){if(!t||t.length===0||i.data.byteLength===0)return i;let r=9-Py(i.data);if(r<=0)return i;let o=t.splice(0,r).reverse().map(Oy),s=o.reduce((h,f)=>h+f.dataView.byteLength,0),n=new ArrayBuffer(s+i.data.byteLength),a=new DataView(n),u=new DataView(i.data),m=0;for(let h=0;h<o.length;h++)for(let f=0;f<o[h].dataView.byteLength;f++)a.setInt8(m++,o[h].dataView.getInt8(f));for(let h=0;h<i.data.byteLength;h++)a.setInt8(m++,u.getInt8(h));return i.data=n,i}function ph({frame:i,onSEI:t}){try{let e=new DataView(i.data);if(xy(i)||!ky(e))return i;let r=[],o=0,s=-1,n=-1;for(let a=0;a<i.data.byteLength;a++){let u=e.getUint8(a);if(u===0)o++;else if(u===1){if(o===2||o===3){let m=a-o;if(s===-1?s=m:n===-1&&(n=m,r.push(new ns(new DataView(e.buffer.slice(s,n)))),s=m,n=-1),!(e.getUint8(a+1)===6)){i.data=e.buffer.slice(m);break}}o=0}else o=0}t==null||t(r.reverse())}catch(e){}return i}var hh=0,oc=class oc{constructor(t){this.core=t;l(this,"log");l(this,"_seiMessageList",[]);l(this,"_smallSeiMessageList",[]);l(this,"_subStreamSeiMessageList",[]);hh++,this.log=t.log.createChild({id:`${this.getAlias()}${hh}`}),this.log.info(`[sei] created id=${this.getAlias()}${hh}`),this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:t,mediaType:e}){try{let r=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return mh({frame:t,seiMessageList:r})}catch(r){this.log.warn(r)}return t}decode({frame:t,track:e}){return ph({frame:t,onSEI:r=>{r.forEach(o=>{this.core.trtc.emit(ee.SEI_MESSAGE,{seiPayloadType:o.seiPayloadType,data:o.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(t){switch(t){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:Da?this.encode:mh,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:Da?this.decode:ph,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:t,options:e}){var s;let r=[e.seiPayloadType,t],o=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(r):(this._seiMessageList.push(r),o&&this._smallSeiMessageList.push(r)),(s=this.core.room.scriptTransformWorker)==null||s.postMessage({type:"sei",data:r,isMain:!e.toSubStream,small:o})}getName(){return oc.Name}getAlias(){return"sei"}getGroup(){return"sei"}};l(oc,"autoStart",!0),l(oc,"Name","SEI");var Vu=oc;function fh({frame:i,onDump:t}){return t==null||t(),i}function gh({frame:i,onDump:t}){return t==null||t(),i}var vE={"play() error: NotAllowedError:":{tips:i=>i.includes("main <video>")||i.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:i=>i.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:i=>i.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
|
|
59
99
|
1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
|
|
60
100
|
2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},"main stream - video player is paused":{tips:`The remote stream video playback is paused, which usually has two possibilities:
|
|
61
101
|
1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
|
|
62
|
-
2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(o=>{hf[`${o}()`]={tips:`Call trtc.${o}`,color:"blue",class:"blue",textColor:"#fff"}});var tP=Object.keys(hf);var uS=0,jc,Mn=class Mn{constructor(i){this.core=i;d(this,"_core");d(this,"log");d(this,"dumpLocalVideoMap",{});d(this,"dumpRemoteVideoMap",{});d(this,"dialog");this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${++uS}`}),this.log.info("created")}getName(){return Mn.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(i){switch(i){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return f(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(e){return f(this,arguments,function*({visible:i}){i?(yield this.openDebugDiaLog(),this.addVideoProcessor()):(this.closeDebugDiaLog(),this.removeVideoProcessor())})}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return f(this,null,function*(){var i;if(!this.dialog)try{if(jc)yield jc;else{let e=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((i=window.sessionStorage)==null?void 0:i.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${cf}@${Ve}/assets/debug-dialog.js`;jc=this._core.fileDownloader.loadScript(e),yield jc}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(e){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(e))}})}closeDebugDiaLog(){this.dialog&&(this.dialog.closeDialog(),this.dialog=null)}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):mh,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):ph,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:i,mediaType:e}){return mh({frame:i,onDump:()=>{if(!e)return;let t=e===2?"sub":"main",r=this.dumpLocalVideoMap[t];r&&(r.data.push(i.data.slice(0)),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}decodeVideo({frame:i,track:e}){return ph({frame:i,onDump:()=>{if(!e)return;let t=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];t&&(t.data.push(i.data.slice(0)),t.duration>0&&Date.now()-t.startTimestamp>t.duration*1e3&&t.onDumpEnd())}})}};d(Mn,"Name","Debug"),d(Mn,"autoStart",!0);var Xc=Mn;var mf=o=>{switch(o){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},zc=class{constructor(i,e,t){d(this,"trackDoneOB");d(this,"startOB");d(this,"stopOB");d(this,"inputFrameCount",0);d(this,"decodedFrameCount",0);d(this,"type","auto");d(this,"config");d(this,"decoder");d(this,"_decodeSink");let{kvStatManager:r,trtc:s}=i;this.config=t.config,this.trackDoneOB=ue(e,G.INIT),this.stopOB=nt(),this.startOB=nt(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let n=nt(),a=c=>{let l=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),le(l,Le(this.stopOB),Ae(()=>{},u=>{e.log.error(u),r.addFailedEvent({key:mf(this.type),error:u}),c>4?this.startOB.error(u):this.startOB.next(c+1)})),le(l,Yi(1),Vu(An))};le(this.startOB,Sn(0),es(a),Le(this.stopOB),Ae(()=>{e.player.setOutput(),n.next("STARTED")},c=>{n.next("FAILED")},()=>{r.addSuccessEvent({key:mf(this.type)}),r.addSuccessEvent({key:504702})}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.startOB.next(0)}close(i){this.stopOB.next(i)}pipe(i){return Qi()(e=>f(this,null,function*(){this._decodeSink=e,e.defer(()=>{var r;(r=this.decoder)==null||r.close()});let{type:t}=this;try{switch(t){case"webCodecs":this.decoder=new AudioDecoder({error:r=>{i.log.error(r),e.error(4)},output:r=>{this.decodedFrameCount++,e.next(r),i.player.write(r)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(r){i.log.error(r),e.error(t==="webCodecs"?2:6)}}))}decodeFrame(i){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:i.data,timestamp:i.timestamp,type:"key"}))}},hS={type:"object"},kn=class kn{constructor(i){this.core=i;d(this,"log");d(this,"contextMap",new Map);d(this,"decodeProcessorMap",new WeakMap);this.log=i.log.createChild({id:`${this.getAlias()}`})}getAlias(){return kn.Name}getGroup(i){return i.track.userId+i.track.streamType}getName(){return kn.Name}getValidateRule(i){return hS}start(i){let{track:e}=i;this.decodeProcessorMap.set(e,this.decode(i)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:t,track:r})=>this.decodeProcessorMap.has(r)?this.decodeProcessorMap.get(r)({frame:t,track:r}):t,type:3})}decode(i){return({frame:e,track:t})=>{if(t!==i.track)return e;if(this.contextMap.has(t))return this.contextMap.get(t).decodeFrame(e);let r=new zc(this.core,t,i);return le(r.trackDoneOB,Yi(1),Ae(()=>{this.core.clearStarted(this,this.getGroup(i)),this.stop({track:t})})),this.contextMap.set(t,r),r.decodeFrame(e)}}stop({track:i}){let e=this.contextMap.get(i);e&&(e.close("stop"),this.contextMap.delete(i),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(i){let e=this.contextMap.get(i.track);if(e){if(i.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(i.track,new zc(this.core,i.track,i))}}};d(kn,"Name","TRTCAudioDecoder");var wn=kn;var Qc=class{constructor(){d(this,"log");this.log=y.createLogger({id:"exp"})}call(i,e){return f(this,null,function*(){return ae(this[i])?this[i](e):Promise.reject(new N({code:I.INVALID_PARAMETER,message:V({key:L.API_NOT_EXIST,data:{name:i}})}))})}enableAudioFrameEvent(i){return f(this,null,function*(){let{trtcInstance:e,enable:t,userId:r,sampleRate:s=48e3,channelCount:n=1,port:a}=i,{audioManager:c}=e.room,{getPCMAbortCtrlMap:l,audioFrameEventConfigMap:u}=c;if(u.set(r,{enable:t,sampleRate:s,channelCount:n,port:a}),t)if(r==="*")e.room.remotePublishedUserMap.forEach(h=>{if(h.remoteAudioTrack.isAvailable){if(l.get(h.userId))return;let m=c.getPCM(g=>{e.emit(k.AUDIO_FRAME,g)},h.userId);l.set(h.userId,m)}});else{if(l.get(r))return;let h=c.getPCM(m=>{e.emit(k.AUDIO_FRAME,m)},r);l.set(r,h)}else if(r==="*")e.room.remotePublishedUserMap.forEach(h=>{if(h.remoteAudioTrack.isSubscribed){let{userId:m}=h,g=l.get(m);g==null||g.abort("disable"),l.delete(m)}});else{let h=l.get(r);h==null||h.abort("disable"),l.delete(r)}})}};O([Bp({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!0,type:"string"},sampleRate:{type:"number",values:[8e3,16e3,32e3,44100,48e3]},channelCount:{type:"number",values:[1,2]},port:{type:"messageport"}}})],Qc.prototype,"enableAudioFrameEvent",1);var pf=new Qc;var ff=He(Qe(),1);var fh=class extends ff.EventEmitter{constructor(){super();d(this,"states",{});d(this,"permissionChangeHandler");d(this,"log");this.log=y.createLogger({id:"pm"}),this.permissionChangeHandler=()=>{var e,t;this.emit("permission-state-change",{camera:(e=this.states.camera)==null?void 0:e.state,microphone:(t=this.states.microphone)==null?void 0:t.state})}}request(e){return f(this,null,function*(){if(this.log.info(`request ${e.join(", ")}`),e.length===0)return Promise.resolve();(yield navigator.mediaDevices.getUserMedia({video:e.includes("camera"),audio:e.includes("microphone")})).getTracks().forEach(r=>r.stop())})}get(e){return f(this,null,function*(){try{return this.states[e]||(this.states[e]=yield navigator.permissions.query({name:e}),this.states[e].addEventListener("change",this.permissionChangeHandler)),this.log.info(`get ${e} permission state: ${this.states[e].state}`),this.states[e].state}catch(t){return this.log.error(`get ${e} permission failed, error: ${t instanceof Error?t.message:t}`),null}})}destroy(){Object.values(this.states).forEach(e=>{e==null||e.removeEventListener("change",this.permissionChangeHandler)}),this.states={}}},xn=new fh;var _f=0,Ln=new Set,Je=null;pd(df);Bo.checkStorage();var z=class z extends gf.EventEmitter{constructor(e,t){super();d(this,"_room");d(this,"_eventListened",new Set);d(this,"_localVideoTrack",null);d(this,"_localAudioTrack",null);d(this,"_localScreenTrack",null);d(this,"_localScreenAudioTrack",null);d(this,"_localVideoConfig",null);d(this,"_localScreenConfig",null);d(this,"_localAudioConfig",null);d(this,"_remoteVideoConfigMap",new Map);d(this,"_remoteAudioConfigMap",new Map);d(this,"_remoteAudioVolumeMap",new Map);d(this,"_remoteAudioMuteMap",new Map);d(this,"_mediaTrackMap",new WeakMap);d(this,"_log",y.createLogger({id:`t${++_f}`}));d(this,"_plugins",new Map);d(this,"_networkQuality",null);d(this,"_speakerId");d(this,"enterRoomParams");d(this,"_enableAutoSwitchWhenRecapturing",!0);this._room=new e(D({logger:this._log,frameWorkType:z.frameWorkType},t)),this._room.videoDecodeFallbackType=t.videoDecodeFallback,de(t.enableAutoSwitchWhenRecapturing)&&(this._enableAutoSwitchWhenRecapturing=t.enableAutoSwitchWhenRecapturing),this._log.info(`create() ${JSON.stringify(t,(r,s)=>r==="plugins"?s.map(n=>n.Name):s)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(r){return this._room.audioManager.dump(r)}}}),t.plugins&&t.plugins.forEach(r=>{this._use(r,t.assetsPath)}),this._use(Gc,t.assetsPath),this._use(Hc,t.assetsPath),this._use(Jc,t.assetsPath),this._use(wn,t.assetsPath),this._use(Xc),t.enableSEI&&on&&this._use(qc),this._room.on("audio-volume",r=>{var s,n;!r.find(a=>a.userId==="")&&this._localAudioTrack&&r.push({userId:"",volume:Math.floor(((s=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?s:this._localAudioTrack.getAudioLevel())*100),floatVolume:(n=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?n:this._localAudioTrack.getInternalAudioLevel()}),t.volumeType===1&&r.forEach(a=>{var l;let c=a.userId===""?this._localAudioTrack:(l=this.room.remotePublishedUserMap.get(a.userId))==null?void 0:l.remoteAudioTrack;c&&(a.volume=c.dbVolume)}),this.emit(k.AUDIO_VOLUME,{result:r.sort((a,c)=>c.volume-a.volume)})}),this._room.videoManager.on("error",r=>{this._log.error(new x({code:U.OPERATION_FAILED,extraCode:5504,message:r.message,originError:r}))}),this._listenEvents(),this._initActiveSpeaker(),of(this,"trtc")}static create(e){}static _create(e,t){$p();let r=new z(e,t||{});return Ln.add(r),r.__v_skip=!0,r}get room(){return this._room}_listenEvents(){Ue(this,this._room).add("peer-join",e=>{let{userId:t}=e;this.emit(k.REMOTE_USER_ENTER,{userId:t})}).add("peer-leave",e=>{this.emit(k.REMOTE_USER_EXIT,{userId:e})}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(k.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(k.ERROR,x.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(k.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=w(D({},e),{uplinkRTT:Math.min(e.uplinkRTT,Os),downlinkRTT:Math.min(e.downlinkRTT,Os)});this.emit(k.NETWORK_QUALITY,t)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{Ue(r,r).add("player-state-changed",s=>{let n=w(D({},s),{userId:e.userId});r.kind===p.VIDEO&&(n.streamType=bi(r.streamType)),this.emit(r.kind===p.AUDIO?k.AUDIO_PLAY_STATE_CHANGED:k.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",s=>{s.getCode()===I.PLAY_NOT_ALLOWED&&this.emit(k.AUTOPLAY_FAILED,{userId:r.userId,mediaType:r.strMediaType,resume:()=>r.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{be(r)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:t})=>{let{userId:r}=t,s=e.audioAvailable,n=e.videoAvailable,{audioAvailable:a,videoAvailable:c}=t;a||this._remoteAudioConfigMap.delete(r),c||this._removeRemoteVideoConfig(r,"main"),t.hasAuxiliary||this._removeRemoteVideoConfig(r,"sub"),n!==c&&(c?this._onVideoAvailable({userId:r,streamType:"main"}):this._onVideoUnavailable({userId:r,streamType:"main"}),this.emit(c?k.REMOTE_VIDEO_AVAILABLE:k.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"main"})),s!==a&&(a?this._onAudioAvailable({userId:r}):this._onAudioUnavailable({userId:r,muteState:t}),this.emit(a?k.REMOTE_AUDIO_AVAILABLE:k.REMOTE_AUDIO_UNAVAILABLE,{userId:r})),e.hasAuxiliary!==t.hasAuxiliary&&(t.hasAuxiliary?this._onVideoAvailable({userId:r,streamType:"sub"}):this._onVideoUnavailable({userId:r,streamType:"sub"}),this.emit(t.hasAuxiliary?k.REMOTE_VIDEO_AVAILABLE:k.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"sub"}))}).add("sei-message",e=>{this.emit(k.SEI_MESSAGE,w(D({},e),{streamType:bi(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(k.ERROR,new x({code:U.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var s,n,a,c,l,u,h;let t={2:"big",3:"small",7:"sub"},r={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((s=e.msg_down_stream_info[0])==null?void 0:s.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((a=this._networkQuality)==null?void 0:a.downlinkRTT)||0,Os),upLoss:((c=this._networkQuality)==null?void 0:c.uplinkLoss)||0,downLoss:((l=this._networkQuality)==null?void 0:l.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((u=e.msg_up_stream_info.msg_audio_status)==null?void 0:u.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((h=e.msg_up_stream_info.msg_audio_status)==null?void 0:h.uint32_audio_level)||0)/It},video:e.msg_up_stream_info.msg_video_status.filter(m=>t[m.uint32_video_stream_type]).map(m=>({bitrate:(m.uint32_video_codec_bitrate||0)/1e3,width:m.uint32_video_width,height:m.uint32_video_height,frameRate:m.uint32_video_enc_fps,videoType:t[m.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(m=>({userId:m.msg_user_info.str_identifier,audio:{bitrate:(m.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(m.msg_audio_status.uint32_audio_level||0)/It,point2pointDelay:(m.msg_audio_status.uint32_audio_p2p_delay||0)+(m.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:m.msg_audio_status.uint32_audio_cache_ms||0},video:m.msg_video_status.map(g=>({bitrate:(g.uint32_video_codec_bitrate||0)/1e3,width:g.uint32_video_width,height:g.uint32_video_height,frameRate:g.uint32_video_dec_fps,videoType:t[g.uint32_video_stream_type],point2pointDelay:(g.uint32_video_p2p_delay||0)+(g.uint32_video_cache_ms||0),jitterBufferDelay:g.uint32_video_cache_ms||0,codec:g.uint32_video_codec}))}))};this.emit(k.STATISTICS,r)}).add("custom-message",e=>{this.emit(k.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(k.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(k.FIRST_VIDEO_FRAME,w(D({},e),{streamType:bi(e.streamType)}))}).add("audio-frame",e=>{this.emit(k.AUDIO_FRAME,e)}),Ue(this,ve).add("audioInputAdded",e=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>f(this,null,function*(){if(this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Je&&Je.deviceId===Ds){let t=(yield gr()).find(r=>r.deviceId===Ds);t&&Je.groupId!==t.groupId&&(Je=t,this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>f(this,null,function*(){this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield gr())[0];if(!t||!Je||Je.groupId===t.groupId)return;let r=Je.deviceId===e.deviceId,s=Je.deviceId===Ds&&Je.deviceId===t.deviceId;(r||s)&&(Je=t,this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))})),Ue(this,xn).add("permission-state-change",e=>{this.emit(k.PERMISSION_STATE_CHANGE,e)})}use(e){let t,r;"plugin"in e?(t=e.plugin,r=e.assetsPath):t=e,this._use(t,r)}_use(e,t){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let s=new e(rf.call(this,{TRTC:z,room:this._room,assetsPath:t,errorModule:{RtcError:x,ErrorCode:U,CoreErrorCode:I,ErrorCodeDictionary:Lt}}));this._plugins.set(e.Name,s),s.__v_skip=!0,e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return f(this,null,function*(){var c,l;this.enterRoomParams=e;let{scene:t="rtc",enableAutoPlayDialog:r=!0,autoReceiveAudio:s=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!te(e.proxy)&&e.proxy.turnServer&&((l=(c=this._room).setTurnServer)==null||l.call(c,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=r,this._room.autoReceiveAudio=s,this._room.autoReceiveVideo=n,de(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let a={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,useH265:e.useH265,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,t,z.frameWorkType),this._checkTrackToPublish(),sh.start()})}exitRoom(){return f(this,null,function*(){return yield this._exitRoom()})}switchRoom(e){return f(this,null,function*(){if(this.room.isSwitchRoomSupported())try{yield this._room.switchRoom(e)}catch(t){if(t instanceof Is&&(t.code===I.API_CALL_TIMEOUT||t.code===I.SWITCH_ROOM_FAILED))this._log.warn(`switchRoom ${t.code===I.API_CALL_TIMEOUT?"timeout":"failed"}, fallback to exitRoom() and enterRoom()`),yield this._rejoinRoom(e);else throw t}else yield this._rejoinRoom(e)})}_rejoinRoom(e){return f(this,null,function*(){yield this.exitRoom();let t=D(D({},this.enterRoomParams),e);yield this.enterRoom(t)})}switchRole(e,t){return f(this,null,function*(){t!=null&&t.privateMapKey&&(this._room.privateMapKey=t.privateMapKey),t!=null&&t.latencyLevel&&(this._room.latencyLevel=t.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){be(this),this.removeAllListeners(),this._room.destroy(),Ln.delete(this),Ln.size===0&&sh.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var t;return(t=e.destroy)==null?void 0:t.call(e)}),this._plugins.clear(),A.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return f(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:t=!0,mute:r,option:s}=e,n=new Rt(this._room.audioManager),a={},c={muted:!0};s&&(E(s.microphoneId)?E(s.audioTrack)||(a.customSource=s.audioTrack):a.deviceId=s.microphoneId,s&&q(s.captureVolume)&&n.setCaptureVolume(s.captureVolume),E(s.profile)||(te(s.profile)?zn[s.profile]&&n.setProfile(zn[s.profile]):n.setProfile(s.profile)),q(s.earMonitorVolume)&&(c.muted=!(s.earMonitorVolume>0),c.volume=s.earMonitorVolume),E(s.echoCancellation)||(n.profile.echoCancellation=s.echoCancellation),E(s.noiseSuppression)||(n.profile.noiseSuppression=s.noiseSuppression),E(s.autoGainControl)||(n.profile.autoGainControl=s.autoGainControl),de(this._enableAutoSwitchWhenRecapturing)&&(n.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),n.on("5",l=>{this.emit(k.ERROR,new x({code:U.DEVICE_ERROR,extraCode:5309,messageParams:{error:l}}))}),n.on("2",l=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"active",device:l})}),n.on("4",l=>{let u;l.error&&(u=x.convertFrom(l.error)),this.emit(k.PUBLISH_STATE_CHANGED,w(D({},l),{error:u}))}),n.on("6",()=>{this.emit(k.ERROR,new x({code:U.OPERATION_FAILED,extraCode:5506,message:"audio encode failed"}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),E(r)||n.setMute(r),Ue(n,n).add("player-state-changed",l=>{this.emit(k.AUDIO_PLAY_STATE_CHANGED,w(D({},l),{userId:""}))}),t&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=w(D({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:c,track:n}),A.emit("113",{userId:"",room:this.room})})}updateLocalAudio(e){return f(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:t,mute:r,option:s}=e,n={};s&&(s.microphoneId?yield this._localAudioTrack.switchDevice(s.microphoneId):E(s.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(s.audioTrack)),E(s.captureVolume)||this._localAudioTrack.setCaptureVolume(s.captureVolume),E(s.earMonitorVolume)||(n.muted=!(s.earMonitorVolume>0),n.volume=s.earMonitorVolume),yield this._localAudioTrack.update3A(s)),this._room.isJoined&&!E(t)&&(t&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!t&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),E(r)||this._localAudioTrack.setMute(r),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),Gt(this._localAudioConfig,e)})}stopLocalAudio(){return f(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),A.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),be(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null)})}startLocalVideo(){return f(this,arguments,function*(e={publish:!0,view:null,capture:!0}){var h;if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:t,publish:r=!0,capture:s=!0,mute:n,option:a}=e,c=new Ge(this._room.videoManager),l={},u={};a&&(de(a.avoidCropping)&&(c.avoidCropping=a.avoidCropping),a.cameraId?l.deviceId=a.cameraId:E(a.useFrontCamera)?E(a.videoTrack)||(l.customSource=a.videoTrack):l.facingMode=a.useFrontCamera?p.FACING_MODE_USER:p.FACING_MODE_ENVIRONMENT,E(a.retryWhenExactFailed)||(l.retryWhenExactFailed=a.retryWhenExactFailed),a.qosPreference&&(l.contentHint=Nn(a.qosPreference)),E(a.profile)||(te(a.profile)?Ut[a.profile]&&c.setProfile(Ut[a.profile]):c.setProfile(a.profile)),E(a.fillMode)||(u.objectFit=a.fillMode),E(a.mirror)||(u.mirror=a.mirror),E(a.small)||(E(a.smallMode)||(this._room.smallMode=a.smallMode),de(a.small)&&a.small===!1?c.stopSmall():c.updateSmallConfig(cs(a.small,!0))),E(a.rotation)||c.setRotation(a.rotation),de(this._enableAutoSwitchWhenRecapturing)&&(c.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),c.once("first-video-frame",m=>{this.emit(k.FIRST_VIDEO_FRAME,w(D({},m),{streamType:bi(m.streamType)}))}),c.on("5",m=>{this.emit(k.ERROR,new x({code:U.DEVICE_ERROR,extraCode:5308,messageParams:{error:m}}))}),c.on("2",m=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"active",device:m})}),c.on("4",m=>{let g;m.error&&(g=x.convertFrom(m.error)),this.emit(k.PUBLISH_STATE_CHANGED,w(D({},m),{error:g}))}),c.on("6",()=>{this.emit(k.ERROR,new x({code:U.OPERATION_FAILED,extraCode:5505,message:"video encode failed"}))}),this._listenOutputTrackChanged(c),s?yield c.capture(l):(h=c.manager)==null||h.changeInput(c),E(n)||(yield c.setMute(n)),Ue(c,c).add("player-state-changed",m=>{this.emit(k.VIDEO_PLAY_STATE_CHANGED,w(D({},m),{userId:"",streamType:"main"}))}).add("video-size-changed",m=>{this.emit(k.VIDEO_SIZE_CHANGED,w(D({},m),{streamType:bi(m.streamType)}))}),r&&this._room.isJoined&&this._room.publish(c).catch(()=>{}),this._localVideoTrack=c,this._localVideoConfig=w(D({},e),{view:t,publish:r,capture:s}),yield this._updateVideoPlayOption({view:t,playOption:u,track:c})})}updateLocalVideo(e){return f(this,null,function*(){var l,u,h;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:t,publish:r,mute:s,capture:n,option:a}=e,c={};if(this._localVideoConfig.capture)n!==!1?a!=null&&a.cameraId?yield this._localVideoTrack.switchDevice(a==null?void 0:a.cameraId):E(a==null?void 0:a.useFrontCamera)?E(a==null?void 0:a.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(a==null?void 0:a.videoTrack)):yield this._localVideoTrack.switchDevice(a!=null&&a.useFrontCamera?p.FACING_MODE_USER:p.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(n){let m={};m.deviceId=(a==null?void 0:a.cameraId)||((l=this._localVideoConfig.option)==null?void 0:l.cameraId),m.facingMode=a!=null&&a.useFrontCamera||(u=this._localVideoConfig.option)!=null&&u.useFrontCamera?p.FACING_MODE_USER:p.FACING_MODE_ENVIRONMENT,m.customSource=(a==null?void 0:a.videoTrack)||((h=this._localVideoConfig.option)==null?void 0:h.videoTrack),yield this._localVideoTrack.capture(m)}a&&(E(a.profile)||(te(a.profile)?Ut[a.profile]&&this._localVideoTrack.setProfile(Ut[a.profile]):this._localVideoTrack.setProfile(a.profile),(!a.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(a.cameraId))&&E(a.useFrontCamera)&&(yield this._localVideoTrack.applyProfile())),E(a.fillMode)||(c.objectFit=a.fillMode),E(a.mirror)||(c.mirror=a.mirror),E(a.rotation)||this._localVideoTrack.setRotation(a.rotation),a.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(Nn(a.qosPreference)),E(a.small)||(de(a.small)&&!a.small?this._localVideoTrack.stopSmall():this._localVideoTrack.updateSmallConfig(cs(a.small,!0)))),this._room.isJoined&&E(r)&&this._localVideoConfig.publish&&n&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&((r!=null?r:this._localVideoConfig.publish)?this._room.publish(this._localVideoTrack).catch(()=>{}):this._room.unpublish(this._localVideoTrack).catch(()=>{})),E(s)||(yield this._localVideoTrack.setMute(s)),yield this._updateVideoPlayOption({view:t,playOption:c,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),Gt(this._localVideoConfig,e)})}stopLocalVideo(){return f(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),be(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return f(this,arguments,function*(e={publish:!0,view:null}){var m,g;if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:t=null,publish:r=!0,muteSystemAudio:s,option:n}=e,a=new et(this._room.videoManager);a.on("4",T=>{let _;T.error&&(_=x.convertFrom(T.error)),this.emit(k.PUBLISH_STATE_CHANGED,w(D({},T),{error:_}))}),a.once("first-video-frame",T=>{this.emit(k.FIRST_VIDEO_FRAME,w(D({},T),{streamType:bi(T.streamType)}))}),this._listenOutputTrackChanged(a),e.streamType==="main"&&(a.mediaType=4);let c=null,l={},u={};n&&(E(n.profile)||(te(n.profile)?Qn[n.profile]&&a.setProfile(Qn[n.profile]):a.setProfile(n.profile)),n.systemAudio&&(l.systemAudio=!0,l.echoCancellation=n.echoCancellation,l.noiseSuppression=n.noiseSuppression,l.autoGainControl=n.autoGainControl),E(n.fillMode)||(u.objectFit=n.fillMode),n.videoTrack&&(l.videoTrack=n.videoTrack),n.audioTrack&&(l.audioTrack=n.audioTrack),n.captureElement&&(l.captureElement=n.captureElement),n.preferDisplaySurface&&(l.preferDisplaySurface=n.preferDisplaySurface),n.qosPreference&&(l.contentHint=Nn(n.qosPreference)));let h=yield a.capture(l);if(a.mediaTrack.addEventListener(p.ENDED,()=>{this._stopScreenShare(),this.emit(k.SCREEN_SHARE_STOPPED)}),h.getAudioTracks()[0]){c=new Ci(this._room.audioManager);let T=h.getAudioTracks()[0];(m=e.option)!=null&&m.systemAudio&&!((g=e.option)!=null&&g.audioTrack)&&(c.sourceTrack=T),yield c.setInputMediaStreamTrack(T),de(s)&&c.mediaTrack&&(c.mediaTrack.enabled=!s),this._speakerId&&c.setAudioOutput(this._speakerId)}if(Ue(a,a).add("player-state-changed",T=>{this.emit(k.VIDEO_PLAY_STATE_CHANGED,w(D({},T),{userId:"",streamType:"sub"}))}),r&&this._room.isJoined){let T=[a];c&&(T.push(c),this._checkScreenAudioEchoCancellation(a,c)),this._room.publish(...T).catch(()=>{})}this._localScreenTrack=a,this._localScreenAudioTrack=c,this._localScreenConfig=w(D({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:u,track:a})})}updateScreenShare(e){return f(this,null,function*(){var c;if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:t,publish:r,muteSystemAudio:s,option:n}=e,a={};if(n&&(E(n.fillMode)||(a.objectFit=n.fillMode),n.qosPreference)){let l=Nn(n.qosPreference);this._localScreenTrack.setContentHint(l)}if(this._room.isJoined&&!E(r)){if(r&&!this._localScreenConfig.publish){let l=[this._localScreenTrack];this._localScreenAudioTrack&&l.push(this._localScreenAudioTrack),this._room.publish(...l).catch(()=>{})}if(this._localScreenConfig.publish&&!r){let l=[this._localScreenTrack];this._localScreenAudioTrack&&l.push(this._localScreenAudioTrack),this._room.unpublish(...l).catch(()=>{})}}(c=this._localScreenAudioTrack)!=null&&c.mediaTrack&&de(s)&&(this._localScreenAudioTrack.mediaTrack.enabled=!s),yield this._updateVideoPlayOption({view:t,playOption:a,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),Gt(this._localScreenConfig,e)})}stopScreenShare(){return f(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return f(this,null,function*(){let{view:t,userId:r,streamType:s,option:n}=e,a=`${r}_${s}`;if(this._remoteVideoConfigMap.has(a)){this._log.warn(`remote video has already started. userId:${r}, streamType:${s}`);return}let c=this._room.remotePublishedUserMap.get(r);if(!c)return;let l={},u=s==="main"?c.remoteVideoTrack:c.remoteAuxiliaryTrack;u.on("decode-failed",h=>{this.emit(k.ERROR,new x({code:U.OPERATION_FAILED,extraCode:5507,message:"video decode failed"}))}),u.on("video-size-changed",h=>{this.emit(k.VIDEO_SIZE_CHANGED,w(D({},h),{streamType:bi(h.streamType)}))}),this._listenOutputTrackChanged(u),n&&(E(n.fillMode)||(l.objectFit=n.fillMode),E(n.mirror)||(l.mirror=n.mirror),E(n.poster)||(l.poster=n.poster),l.canvasRender=n.canvasRender,s==="main"&&!E(n.small)&&(!c.remoteVideoTrack.isSubscribing&&!c.remoteVideoTrack.isSubscribed&&c.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,u.user))),yield this._room.subscribe(u),yield this._enableVideoDecodeFallback(u,s),yield this._updateVideoPlayOption({view:t,playOption:l,track:u}),this._emitTrackEvent(u),this._remoteVideoConfigMap.set(a,{config:e}),n&&!E(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:u,view:t,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return f(this,null,function*(){var S,R;let{view:t,userId:r,streamType:s,option:n}=e,a=`${r}_${s}`,c=this._remoteVideoConfigMap.get(a);if(!c||!this._room.remotePublishedUserMap.has(r))return;let l={};n&&(E(n.fillMode)||(l.objectFit=n.fillMode),E(n.mirror)||(l.mirror=n.mirror));let u=null,h=this._room.remotePublishedUserMap.get(r);if(s==="main"&&(h!=null&&h.muteState.hasVideo)&&(u=h.remoteVideoTrack),s==="sub"&&(h!=null&&h.muteState.hasAuxiliary)&&(u=h.remoteAuxiliaryTrack),!u)return;let{config:m}=c;s==="main"&&n&&!E(n.small)&&this._room.changeType(n.small,u.user),yield this._updateVideoPlayOption({view:t,playOption:l,track:u,prevConfig:m}),Gt(m,e);let g=E(n==null?void 0:n.receiveWhenViewVisible)?(S=m.option)==null?void 0:S.receiveWhenViewVisible:n.receiveWhenViewVisible,T=E(t)?m.view:t,_=E(n==null?void 0:n.viewRoot)?(R=m.option)==null?void 0:R.viewRoot:n.viewRoot;this._observeView({remoteTrack:u,view:T,receiveWhenViewVisible:g,viewRoot:_})})}stopRemoteVideo(e){return f(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return f(this,null,function*(){let r=[],s=this._room.remotePublishedUserMap.get(e.userId);if(s){let{muteState:n,remoteVideoTrack:a,remoteAuxiliaryTrack:c}=s;e.streamType==="main"&&(a.stop(),n.hasVideo&&r.push(a)),e.streamType==="sub"&&(c.stop(),n.hasAuxiliary&&r.push(c))}for(let n of r)t&&(yield this._room.unsubscribe(n),this._mediaTrackMap.delete(n.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,t){let r=`${e}_${t}`,s=this._remoteVideoConfigMap.get(r);s&&s.observer&&s.observer.disconnect(),this._remoteVideoConfigMap.delete(r)}muteRemoteAudio(e,t){return f(this,null,function*(){this._remoteAudioMuteMap.set(e,t);try{if(e==="*")if(t)yield this._stopRemoteAudio({userId:e});else{let r=[...this._room.remotePublishedUserMap.values()];for(let s of r)s.muteState.hasAudio&&!this._remoteAudioConfigMap.has(s.userId)&&(yield this._startRemoteAudio({userId:s.userId}))}else t?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(r){throw r.code!==U.OPERATION_ABORT&&this._remoteAudioMuteMap.delete(e),r}})}setRemoteAudioVolume(e,t){if(e==="*"){this._remoteAudioVolumeMap.set("*",t),this._remoteAudioVolumeMap.forEach((s,n)=>this._remoteAudioVolumeMap.set(n,t));let r=[...this._room.remotePublishedUserMap.values()];for(let s of r)this._remoteAudioVolumeMap.set(s.userId,t),s.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:s.remoteAudioTrack})}else if(e){let r=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,t),r&&r.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:r.remoteAudioTrack})}}startPlugin(e,t){return f(this,null,function*(){return e.start(t)})}updatePlugin(e,t){return f(this,null,function*(){return e.update(t)})}stopPlugin(e,t){return f(this,null,function*(){return e.stop(t)})}enableAudioVolumeEvaluation(e=2e3,t=!1){this._room.enableAudioVolumeEvaluation(e,t)}on(e,t,r){if(this.listeners(e).includes(t))return this;if(this._log.debug("on",e),super.on(e,t,r),this._eventListened.add(e),this.listeners(k.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:s}=this.room.audioManager;s.get("")||s.set("",{enable:!0}),this._localAudioTrack&&this.room.audioManager.handleLocalTrackStarted({userId:"",room:this.room})}return this}emit(e,...t){try{Kp.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(t)}`)}catch(r){}return super.emit(e,...t)}off(e,t,r){if(this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners()):super.off(e,t,r),(e===z.EVENT.AUDIO_FRAME||e==="*")&&this.listeners(z.EVENT.AUDIO_FRAME).length===0){let{getPCMAbortCtrlMap:s}=this.room.audioManager;s.forEach(n=>{n==null||n.abort("off")}),s.clear()}return this}getAudioTrack(e={userId:"",streamType:"main"}){let t,r=null,s="main",n=!1;if(te(e)?t=e:(t=e.userId,n=e.processed===!0,e.streamType&&(s=e.streamType)),t){let a=this._room.remotePublishedUserMap.get(t);a&&(r=a.remoteAudioTrack)}else r=s==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return r?n&&r.outMediaTrack&&r.outMediaTrack!==r.mediaTrack?r.outMediaTrack.clone():r.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:t="",streamType:r="main",processed:s=!1}=e,n=null;if(t==="")r==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),r==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let a=this._room.remotePublishedUserMap.get(t);a&&(n=r==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack)}return n?s&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:t,streamType:r="main"}=e;if(t){let s=this._room.remotePublishedUserMap.get(t);if(r==="main"&&(s!=null&&s.muteState.hasVideo))return s.remoteVideoTrack.getVideoFrame();if(r==="sub"&&(s!=null&&s.muteState.hasAuxiliary))return s.remoteAuxiliaryTrack.getVideoFrame()}else{if(r==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(r==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var t,r;this._speakerId=e,(t=this._localAudioTrack)==null||t.setAudioOutput(e),(r=this._localScreenAudioTrack)==null||r.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(s=>s.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return f(this,null,function*(){(yield gr()).forEach(r=>{r.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}),Je=r)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return f(this,null,function*(){var a;let{userId:t}=e;if(this._remoteAudioConfigMap.has(t)){this._log.warn(`remote audio has already started. userId:${t}`);return}let r=this._room.remotePublishedUserMap.get(t);if(!r)return;let s={},n=r.remoteAudioTrack;n.on("decode-failed",c=>{this.emit(k.ERROR,new x({code:U.OPERATION_FAILED,extraCode:5506,message:"audio decode failed"}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let c=(a=this._remoteAudioVolumeMap.get(t))!=null?a:this._remoteAudioVolumeMap.get("*"),l=q(c)?c:100;s.volume=l,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(n),le(ue(n,"decode-failed"),Le(ue(n,G.INIT)),Ae(()=>{this.startPlugin(wn.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:s,track:n}),A.emit("115",{userId:t,room:this.room}),n.outMediaTrack&&this.room.audioManager.updateAudioReference({type:"add",audioReference:n.outMediaTrack,refId:`ra-${t}`})}catch(c){throw this._remoteAudioConfigMap.delete(t),c}this._emitTrackEvent(n)})}_stopRemoteAudio(e,t=!0){return f(this,null,function*(){let r=this._room.remotePublishedUserMap.get(e.userId);r&&(r.remoteAudioTrack.stop(),r.muteState.hasAudio&&t&&(yield this._room.unsubscribe(r.remoteAudioTrack)),this._mediaTrackMap.delete(r.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`),A.emit("116",{userId:e.userId,room:this.room}),this.room.audioManager.updateAudioReference({type:"remove",refId:`ra-${e.userId}`})})}_enableVideoDecodeFallback(e,t){let r=this._room.videoDecodeFallbackType;if(!r||!this._plugins.has("TRTCVideoDecoder"))return;e.log.debug("remote video will fall back when decode failed",e.id);let s;le(ue(e,"decode-failed"),Le(ue(e,G.INIT)),Fu(()=>{this._room.downlinkVideoCodec!=="h265"&&this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:r})}),Qr(ue(e,"decode-downgrade-state-changed")),Ae(n=>{s=n.state,this.emit(k.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,w(D({},n),{streamType:t,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{s==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return f(this,arguments,function*({view:e,playOption:t,track:r,prevConfig:s}){if(r.setMirror(t.mirror),E(e)&&s&&s.view&&!So(t)){let a=Ao(s.view);a.length>0&&(yield r.play(a,t))}if(!E(e)){let a=Ao(e);a.length>0?yield r.play(a,t):r.stop()}})}_updateAudioPlayOption(s){return f(this,arguments,function*({playOption:e={},track:t,prevConfig:r}){if(!t.isPlayCalled)try{yield t.play(null,e)}catch(n){}if(E(e.muted)||t.setPlayerMute(e.muted),E(e.volume)||t.setAudioVolume(e.volume/100),t instanceof Rt&&t.mediaTrack){let n=e.muted===!1&&!E(e.volume)&&e.volume>0?"add":"remove";this.room.audioManager.updateAudioReference({type:n,audioReference:t.mediaTrack,refId:"em"})}else if(t instanceof oi){let n=e.muted?0:e.volume;if(E(n))return;this.room.audioManager.updateAudioReference({type:"updateVolume",refId:`ra-${t.userId}`,volume:e.volume})}})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,t=!0){let r=e.isRemote?e.userId:"";e.outMediaTrack&&(t&&this._mediaTrackMap.get(e.outMediaTrack)===r||(this._mediaTrackMap.set(e.outMediaTrack,r),this.emit(k.TRACK,{userId:r,streamType:bi(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var t,r,s;let e=[];if((t=this._localAudioConfig)!=null&&t.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(r=this._localVideoConfig)!=null&&r.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(s=this._localScreenConfig)!=null&&s.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack),this._checkScreenAudioEchoCancellation(this._localScreenTrack,this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:t,receiveWhenViewVisible:r=!1,viewRoot:s}){if(E(t))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${bi(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(t===null||Se(t)&&t.length===0||!r){a==null||a.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let l=n.visibleViewMap||new Map,u=-1;(!a||a.root!==s)&&(a==null||a.disconnect(),l.clear(),a=new IntersectionObserver(m=>{m.forEach(g=>{l.set(g.target,g.isIntersecting),e.log.info(`view ${g.target.id} is${g.isIntersecting?"":" not"} visible`)}),clearTimeout(u),u=window.setTimeout(()=>{[...l.values()].find(T=>T)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:s}));let h=new Set(Ao(t));l.forEach((m,g)=>{h.has(g)||(a.unobserve(g),l.delete(g))}),h.forEach(m=>{l.set(m,!0),a.observe(m)}),a.takeRecords().forEach(m=>{l.set(m.target,m.isIntersecting)}),n.visibleViewMap=l,n.observer=a}_exitRoom(){return f(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let t=e.includes("main")?"main":"sub",r=e.split(`_${t}`)[0];r&&this._stopRemoteVideo({userId:r,streamType:t}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),sf(this),this._room.remotePublishedUserMap.forEach(e=>{be(e.remoteAudioTrack),be(e.remoteVideoTrack),be(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return f(this,null,function*(){var e,t;if(this._localScreenTrack){if(this._room.isJoined){let r=[this._localScreenTrack];this._localScreenAudioTrack&&r.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...r).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(((t=this._localScreenAudioTrack.trackSettings)==null?void 0:t.echoCancellation)===!1&&this.stopPlugin("AudioProcessor"),this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),be(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_checkScreenAudioEchoCancellation(e,t){return f(this,null,function*(){var s,n;if(!e||!t)return;let r=(s=e.trackSettings)==null?void 0:s.displaySurface;if(((n=t.trackSettings)==null?void 0:n.echoCancellation)===!1&&(r==="monitor"||r==="browser"&&e.isShareCurrentTab)){this._log.warn("echoCancellation of screen audio track is disable. Try starting audioProcessor plugin");try{yield this.startPlugin("AudioProcessor",{sdkAppId:Number(this.room.sdkAppId),userId:this._room.userId,userSig:this.room.userSig,isScreenAudioNeedAudioProcess:!0,isLocalAudioNeedAudioProcess:!1})}catch(a){this._log.warn("start audioProcessor plugin failed: ",a)}}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!Je||Yo(Je))&&(this._initActiveSpeaker(),A.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return f(this,null,function*(){if(Je&&!Yo(Je))this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:Je});else{let e=yield gr();e[0]&&!Yo(e[0])?(Je=e[0],this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):A.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let t=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(t===!1||this._room.autoReceiveAudio&&!t)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:t}){if(!this._room.autoReceiveVideo)return;let r=this._room.remotePublishedUserMap.get(e);if(r){let s=t==="main"?r.remoteVideoTrack:r.remoteAuxiliaryTrack,n=[s];this._room.autoReceiveAudio&&r.remoteAudioTrack.isAvailable&&n.push(r.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(s)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:t}){t.hasAudio&&t.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:t}){this._stopRemoteVideo({userId:e,streamType:t},!1).catch(()=>{})}sendSEIMessage(e,t){var s;let r=this._plugins.get("SEI");r&&(r.update({buffer:e,options:w(D({seiPayloadType:243},t),{small:!!((s=this._localVideoTrack)!=null&&s.small)})}),v.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var t,r;(r=(t=this._room).sendCustomMessage)==null||r.call(t,e),v.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,t){return f(this,null,function*(){return this._log.info(`callExperimentalAPI(${e}, ${JSON.stringify(t)})`),pf.call(e,D({trtcInstance:this},t))})}static setLogLevel(e,t){y.setLogLevel(e),E(t)||(t?y.enableUploadLog():y.disableUploadLog())}static isSupported(){return Wa(z.frameWorkType)}static getPermissions(r){return f(this,arguments,function*({request:e=!0,types:t=["camera","microphone"]}){e&&(yield xn.request(t).catch(a=>{var c;return y.error(`getPermissions request failed, error: ${(c=a==null?void 0:a.message)!=null?c:a}`)}));let[s,n]=yield Promise.all([xn.get("camera"),xn.get("microphone")]);return{camera:s,microphone:n}})}static getCameraList(e=!0){return mt(e)}static getMicrophoneList(e=!0){return ht(e)}static getSpeakerList(e=!0){return gr(e)}static setCurrentSpeaker(e){return f(this,null,function*(){if(pe&&(e===xt.SPEAKER||e===xt.HEADSET)){let r=yield z.getMicrophoneList(),s="";if(r.forEach(n=>{n.label===e&&(s=n.deviceId)}),!s)return;Ln.forEach(n=>f(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:s}}))}));return}(yield gr()).forEach(r=>{r.deviceId===e&&(Ln.forEach(s=>{s._setCurrentSpeaker(e),s.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:r})}),Je=r)})})}static _addKVStat({type:e,key:t,value:r,base:s,useUV:n,version:a,max:c}){switch(a&&($r.version=a),e){case"count":$r.addCount({key:t,useUV:n});break;case"enum":$r.addEnum({key:t,value:r,useUV:n});break;case"number":$r.addNumber({key:t,value:r,split:s,max:c});break}}};d(z,"_loggerManager",y),d(z,"EVENT",k),d(z,"ERROR_CODE",U),d(z,"TYPE",xt),d(z,"frameWorkType",30),O([fe({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],z.prototype,"use",1),O([Xe(Fe.TRTC.enterRoom),Ir("room",([e],[t])=>(e.roomId||e.strRoomId)===(t.roomId||t.strRoomId)&&e.userId===t.userId&&e.sdkAppId===t.sdkAppId),K(e=>function(t){return this._log.setUserId(t.userId),this._log.setSdkAppId(t.sdkAppId),e.call(this,t)}),fe()],z.prototype,"enterRoom",1),O([fe()],z.prototype,"exitRoom",1),O([Xe(Fe.TRTC.switchRoom),fe(),Dt()],z.prototype,"switchRoom",1),O([Xe(Fe.TRTC.switchRole),ro("room",{merge:(e,t)=>t}),fe()],z.prototype,"switchRole",1),O([fe()],z.prototype,"destroy",1),O([Xe(Fe.TRTC.startLocalAudio),Ir("audio",([e],[t])=>{var r,s;return((r=e==null?void 0:e.option)==null?void 0:r.microphoneId)===((s=t==null?void 0:t.option)==null?void 0:s.microphoneId)}),fe()],z.prototype,"startLocalAudio",1),O([Xe(Fe.TRTC.updateLocalAudio),ro("audio",{debounce:{delay:200,getKey:()=>`${_f}-localAudio`,isNeedToDebounce:e=>{var t;return!E((t=e.option)==null?void 0:t.captureVolume)}}}),fe()],z.prototype,"updateLocalAudio",1),O([Ar("audio"),fe()],z.prototype,"stopLocalAudio",1),O([Xe(Fe.TRTC.startLocalVideo),Ir("video",([e],[t])=>{var r,s;return((r=e==null?void 0:e.option)==null?void 0:r.cameraId)===((s=t==null?void 0:t.option)==null?void 0:s.cameraId)}),fe()],z.prototype,"startLocalVideo",1),O([Xe(Fe.TRTC.updateLocalVideo),ro("video"),fe()],z.prototype,"updateLocalVideo",1),O([Ar("video"),fe()],z.prototype,"stopLocalVideo",1),O([Xe(Fe.TRTC.startScreenShare),Ir("screen",()=>!0),fe()],z.prototype,"startScreenShare",1),O([Xe(Fe.TRTC.updateScreenShare),ro("screen"),fe()],z.prototype,"updateScreenShare",1),O([fe()],z.prototype,"stopScreenShare",1),O([Xe(Fe.TRTC.startRemoteVideo),Ir(e=>`v${e.userId}${e.streamType}`,()=>!0),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],z.prototype,"startRemoteVideo",1),O([Xe(Fe.TRTC.updateRemoteVideo),ro(e=>`v${e.userId}${e.streamType}`),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],z.prototype,"updateRemoteVideo",1),O([Xe(Fe.TRTC.stopRemoteVideo),K(e=>function(t){return f(this,null,function*(){if(t.userId==="*"){let r=[];return this._room.remotePublishedUserMap.forEach(s=>{this._remoteVideoConfigMap.has(`${s.userId}_main`)&&r.push(this.stopRemoteVideo({streamType:"main",userId:s.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${s.userId}_sub`)&&r.push(this.stopRemoteVideo({streamType:"sub",userId:s.userId}).catch(()=>{}))}),Promise.all(r)}return e.call(this,t)})}),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],z.prototype,"stopRemoteVideo",1),O([Ar(e=>`v${e.userId}${e.streamType}`)],z.prototype,"_stopRemoteVideo",1),O([Xe(...Fe.TRTC.muteRemoteAudio),fe({getRemoteId:e=>e})],z.prototype,"muteRemoteAudio",1),O([eh(...Fe.TRTC.setRemoteAudioVolume),nf(200,e=>e),fe({getRemoteId:e=>e})],z.prototype,"setRemoteAudioVolume",1),O([Bc("start"),st(e=>{var t;return(t=e.afterStart)==null?void 0:t.call(e)}),Ir((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>yl[e.getName()],ignoreLog:e=>e.getName()==="Debug",ignoreErrorLog:e=>e.getName()==="AudioProcessor"})],z.prototype,"startPlugin",1),O([Bc("update"),ro((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t),{merge:(e,t)=>(Gt(e[1],t[1]),e)}),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>bl[e.getName()]})],z.prototype,"updatePlugin",1),O([Bc("stop"),Ar((e,t)=>{if(e.disableRandomCall)return null;let r=e.getGroup(t),s=e.getAlias();return r==="*"?new RegExp(`${s}.*`):s+r}),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>vl[e.getName()]})],z.prototype,"stopPlugin",1),O([eh(...Fe.TRTC.enableAudioVolumeEvaluation)],z.prototype,"enableAudioVolumeEvaluation",1),O([fe()],z.prototype,"getVideoSnapshot",1),O([fe()],z.prototype,"_setCurrentSpeaker",1),O([Ir(e=>`a${e.userId}`,()=>!0)],z.prototype,"_startRemoteAudio",1),O([K(e=>function(t){return f(this,null,function*(){return t.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(r=>this._stopRemoteAudio(w(D({},t),{userId:r.userId})).catch(()=>{}))):e.call(this,t)})}),Ar(e=>`a${e.userId}`)],z.prototype,"_stopRemoteAudio",1),O([Ar("room")],z.prototype,"_exitRoom",1),O([Ar("screen")],z.prototype,"_stopScreenShare",1),O([Xe(...Fe.TRTC.sendSEIMessage),ju({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],z.prototype,"sendSEIMessage",1),O([Xe(Fe.TRTC.sendCustomMessage),ju({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],z.prototype,"sendCustomMessage",1),O([Xe(Fe.TRTC.create)],z,"_create",1);var _h=z,Pn=_h;var gh=class{constructor(){d(this,"_set",new Set);A.on(C.LEAVE_SUCCESS,this.delete,this),A.on(C.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess,this)}add({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,e||i.roomId,i.sdkAppId,i.useStringRoomId);this._set.add(t)}delete({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,i.roomId||e,i.sdkAppId,i.useStringRoomId);this._set.delete(t)}getKey(i,e,t,r){return`${t}_${e}_${i}_${r}`}isJoined({userId:i,roomId:e,sdkAppId:t,room:r}){return r.scene==="rtc"?!1:this._set.has(this.getKey(i,e,t,r.useStringRoomId))}handleSwitchRoomSuccess({room:i,currentRoomId:e,targetRoomId:t}){i.scene!=="rtc"&&(this._set.delete(this.getKey(i.userId,e,i.sdkAppId,i.useStringRoomId)),this._set.add(this.getKey(i.userId,t,i.sdkAppId,i.useStringRoomId)))}};function mS(){return f(this,null,function*(){let o,i;try{let g=yield ht();o=g&&g.length}catch(g){}try{let g=yield mt();i=g&&g.length}catch(g){}let e={microphone:o,camera:i},{isH264EncodeSupported:t,isVp8EncodeSupported:r,isH264DecodeSupported:s,isVp8DecodeSupported:n,isH265EncodeSupported:a,isH265DecodeSupported:c}=this.checkSystemResult.detail,l=Ti.basis(),u={webRTC:l.isWebRTCSupported,getUserMedia:l.isGetUserMediaSupported,webSocket:l.isWebSocketsSupported,screenShare:l.isScreenShareSupported,webAudio:l.isWebAudioSupported,h264Encode:t,h264Decode:s,vp8Encode:r,vp8Decode:n,h265Encode:a,h265Decode:c},h={browser:l.browser,os:l.os,trtc:u,devices:e},m={isWebCodecSupported:l.isWebCodecSupported,isMediaSessionSupported:l.isMediaSessionSupported,isWebTransportSupported:l.isWebTransportSupported};se.uploadEvent({log:`trtcstats-${JSON.stringify(h)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(h)}`),se.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(m)}`,userId:this.userId}),Bl()})}function Tf(){return K(o=>{let i=new gh;return function(e,t,r){return f(this,null,function*(){let s=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=t,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new N({code:I.INVALID_OPERATION,message:V({key:L.INVALID_JOIN})});if(this.checkDestroy(),i.isJoined({userId:this.userId,roomId:s,sdkAppId:this.sdkAppId,room:this}))throw new N({code:I.INVALID_OPERATION,message:V({key:L.REPEAT_JOIN,data:this.userId})});i.add({room:this,roomId:s}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${s} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),A.emit(C.JOIN_START,{room:this,roomId:s,params:e});let n=gt.getEnv();n||(n=ki.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(Yn.OLD_CLOUD_LADDER)?n=ki.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(Yn.WEBRTC)&&(n=ki.WEBRTC))),se.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:s}),Ti.checkSystemRequirementsInternal(r).then(a=>{this.checkSystemResult=a,mS.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!gt.getEnv()&&(yield this.schedule(e,r));let a=yield o.call(this,e,t,r);return this.roomId=s,this._joinedTimestamp=gt.performanceNow(),A.emit(C.JOIN_SUCCESS,{room:this}),r===30&&!e.component&&se.uploadEvent({log:`stat-conv-${Number(zt)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw i.delete({room:this,roomId:s}),A.emit(C.JOIN_FAILED,{room:this,error:a}),a}})}})}var Ef=()=>K(o=>function(...i){return f(this,null,function*(){A.emit(C.LEAVE_START,{room:this}),yield o.call(this,...i),A.emit(C.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function Sf(){return K(o=>function(...i){let e=o.apply(this,i);return i.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var Af=He(Qe());var _e={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6",CLOSE:"7"};var ni={CLIENT_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,PUBLISH_STATE_CHANGE_RESULT:4112,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,START_PUBLISH_CDN_STREAM_RES:8196,UPDATE_PUBLISH_CDN_STREAM_RES:8198,STOP_PUBLISH_CDN_STREAM_RES:8200,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110,UPDATE_CONSTRAINT_CONFIG_RES:772,REBUILD_PEER_CONNECTION_RES:4150,SPC_PUBLISH_RESULT:4146,SPC_SUBSCRIBE_RESULT:4156,ABILITY_STATUS_REPORT_RESULT:4158,SERVER_FIRST_PACKAGE_RECEIVED:5e3,RECEIVE_CUSTOM_MSG:4140,FALLBACK_CODEC:66,SEND_SWITCH_ROOM_RES:4160,SEND_SWITCH_ROOM_SUBED_REQ:4161},If=[ni.UPDATE_REMOTE_MUTE_STAT,ni.UPLINK_NETWORK_STATS,ni.USER_LIST_RES,ni.MUTE_RESULT,ni.SERVER_FIRST_PACKAGE_RECEIVED,ni.RECEIVE_CUSTOM_MSG],F={CLIENT_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",PUBLISH_STATE_CHANGE_RESULT:"publish-state-change-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",START_PUBLISH_CDN_STREAM_RES:"start-publish-cdn-stream-res",UPDATE_PUBLISH_CDN_STREAM_RES:"update-publish-cdn-stream-res",STOP_PUBLISH_CDN_STREAM_RES:"stop-publish-cdn-stream-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result",UPDATE_CONSTRAINT_CONFIG_RES:"update-contraint-config-res",REBUILD_PEER_CONNECTION_RES:"rebuild-pc-res",SPC_PUBLISH_RESULT:"spc-publish-result",SPC_SUBSCRIBE_RESULT:"spc-subscribe-result",ABILITY_STATUS_REPORT_RESULT:"ability-status-report",SERVER_FIRST_PACKAGE_RECEIVED:"first-pkg-received",RECEIVE_CUSTOM_MSG:"receive-custom-msg",FALLBACK_CODEC:"fallback-codec",SEND_SWITCH_ROOM_RES:"send-switch-room-res",SEND_SWITCH_ROOM_SUBED_REQ:"send-switch-room-subed-res"},Y={PUBLISH_CHANGE:"publish_change",JOIN_ROOM:"join",LEAVE_ROOM:"leave",ON_QUALITY_REPORT:"quality_report",UPDATE_MUTE_STAT:"mute_uplink",PUBLISH:"publish",PUBLISH_STATE_CHANGE:"publish_state_change",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",RECEIVE_DATA_USER_LIST:"receive_data_userlist",UNSUBSCRIBE:"unsubscribe",SUBSCRIBE_CHANGE:"subscribe_change",START_PUBLISH_TENCENT_CDN:"start_publishing",STOP_PUBLISH_TENCENT_CDN:"stop_publishing",START_PUBLISH_GIVEN_CDN:"start_push_user_cdn",STOP_PUBLISH_GIVEN_CDN:"stop_push_user_cdn",START_MIX_TRANSCODE:"start_mcu_mix",STOP_MIX_TRANSCODE:"stop_mcu_mix",START_PUBLISH_CDN_STREAM:"start_publish_cdn_stream",UPDATE_PUBLISH_CDN_STREAM:"update_publish_cdn_stream",STOP_PUBLISH_CDN_STREAM:"stop_publish_cdn_stream",GET_USER_LIST:"get_user_list",SWITCH_ROLE:"change_role",UPDATE_CONSTRAINT_CONFIG:"update_constraint_config",REBUILD_PEER_CONNECTION:"rebuild_pc",READY_TO_RECEIVE_DATA:"ready_to_receive",SPC_JOIN_ROOM:"join/v2",SPC_PUBLISH:"publish/v2",SPC_SUBSCRIBE:"subscribe/v3",ABILITY_STATUS_REPORT:"ability_status_report",RECONNECT_WS:"reconnect",SEND_CUSTOM_MSG:"channel_msg",SWITCH_ROOM:"switch_room"};var Yc=new Set;function Cf(o){let i=[...Yc.values()].find(e=>e.room.userId===o&&!e.room.isJoined);return i||null}var fS=["autoTest","relayInnerIp","relayOuterIp","mcd","newRelay","clientIp"],ms=class extends Af.default{constructor(e){var r,s,n;super();d(this,"room");d(this,"sdkAppId");d(this,"userId");d(this,"userSig");d(this,"url");d(this,"backupUrl");d(this,"destroyed",!1);d(this,"_socketInUse");d(this,"_socket");d(this,"_backupSocket");d(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,bakRelayIps:[]});d(this,"_currentState","DISCONNECTED");d(this,"_isReconnecting",!1);d(this,"_seq",0);d(this,"_log");d(this,"_lastMessageTime",-1);d(this,"_connectStartTime",-1);d(this,"_stopConnectRetry");d(this,"bytesSent",0);d(this,"bytesReceived",0);d(this,"keepAlive",!1);d(this,"signalDomainWhenUnifiedProxy");d(this,"stopKeepAliveTimeout");d(this,"rtt",0);this.room=e.room,this.sdkAppId=e.sdkAppId,this.userId=e.userId,this.userSig=e.userSig,this.signalDomainWhenUnifiedProxy=e.signalDomainWhenUnifiedProxy;let t=((s=(r=this.room.scheduleResult)==null?void 0:r.config)==null?void 0:s.keepAliveClient)||0;(n=this.room.joinParams)!=null&&n.keepAlive&&!t&&(t=1),t-Yc.size>0&&this.room.enableSPC&&(this.keepAlive=!0,Yc.add(this)),this.url=e.url,this.backupUrl=e.backupUrl,this._seq=0,this._log=y.createLogger({id:"ws",userId:this.userId,sdkAppId:this.sdkAppId}),this.onmessage=this.onmessage.bind(this),this.onerror=this.onerror.bind(this),this.onclose=this.onclose.bind(this)}get race(){return this.room.enableSPC&&!this.room.proxy_ws}get urlParam(){let e=`?sdkAppId=${encodeURIComponent(this.sdkAppId)}&userId=${encodeURIComponent(this.userId)}&userSig=${encodeURIComponent(this.userSig)}&keepAlive=${encodeURIComponent(Number(this.keepAlive))}`;this.signalDomainWhenUnifiedProxy&&(e+=`&signalDomain=${encodeURIComponent(this.signalDomainWhenUnifiedProxy)}`);let t=new URLSearchParams(location.search);return fS.forEach(r=>{let s=t.get(`trtc_${r}`);s&&(e+=`&${r}=${encodeURIComponent(s)}`)}),this.race?`${e}&race=1`:e}get _urlWithParam(){return`${this.url}${this.race?"/v2/ws":""}${this.urlParam}`}get _backupUrlWithParam(){return`${this.backupUrl}${this.race?"/v2/ws":""}${this.urlParam}`}get isConnected(){return this._currentState==="CONNECTED"}get isConnecting(){return this._currentState==="CONNECTING"}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12*1e3}connect(){return f(this,arguments,function*(e=10*1e3){if(this.isConnected)return Promise.resolve();this._log.info(`connect to [${this.url}, ${this.backupUrl}] ${this.race?"race":""}${e?` timeout: ${e}`:""} keepAlive: ${Number(this.keepAlive)}`),this.emitConnectionStateChanged("CONNECTING"),this._connectStartTime=P();let t=[this.connectWS({url:this._urlWithParam,isMain:!0,timeout:e})];this.race&&this._backupUrlWithParam!==this._urlWithParam&&t.push(this.connectWS({url:this._backupUrlWithParam,isMain:!1,timeout:e})),this._socketInUse=yield wr(t),this.unbindAndCloseSocket(this._socketInUse===this._socket?p.BACKUP:p.MAIN),this.emitConnectionStateChanged("CONNECTED")})}connectWS({url:e,timeout:t,isMain:r}){let s=new WebSocket(e);this.bindSocket(s),r?this._socket=s:this._backupSocket=s;let n=-1;return new Promise((a,c)=>{s.onclose=c,s.onerror=c,s.onopen=()=>a(s),t&&(n=setTimeout(()=>{this.unbindAndCloseSocket(r?p.MAIN:p.BACKUP),c(new N({code:I.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},t))}).finally(()=>{s.onclose=null,s.onerror=null,s.onopen=null,clearTimeout(n)})}bindSocket(e){e.addEventListener("close",this.onclose),e.addEventListener("error",this.onerror),e.addEventListener("message",this.onmessage)}unbindSocket(e){e.removeEventListener("close",this.onclose),e.removeEventListener("error",this.onerror),e.removeEventListener("message",this.onmessage)}unbindAndCloseSocket(e){if(e===p.MAIN){if(this._socket){this.unbindSocket(this._socket);try{this._socket.close(1e3)}catch(t){}this._socket=null}}else if(this._backupSocket){this.unbindSocket(this._backupSocket);try{this._backupSocket.close(1e3)}catch(t){}this._backupSocket=null}}onclose(e){e.target===this._socketInUse&&(this._log.warn(`${e.target===this._socket?"main":"backup"} is closed code:${e.code} ${e.reason}`),this.emitConnectionStateChanged("DISCONNECTED"),(!e.wasClean||e.code!==1e3)&&this.startReconnection(),this.room.isJoining&&this.emit(_e.SETUP_FAILED,new N({code:I.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onclose"})))}onerror(e){this._log.error(`${e.target===this._socket?"main":"backup"} error observed`),this.emitConnectionStateChanged("DISCONNECTED"),e.target===this._socketInUse&&(this.unbindAndCloseSocket(p.MAIN),this.unbindAndCloseSocket(p.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(_e.SETUP_FAILED,new N({code:I.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(e){if(!this.isConnected)return;this._lastMessageTime=Date.now(),this.bytesReceived+=xs(e.data);let t=JSON.parse(e.data),{cmd:r,data:s}=t,n=Object.values(ni),c=Object.keys(ni)[n.indexOf(r)],l=F[c]||r;switch(If.includes(r)||(this._log.debug(`received ${r} msg: ${e.data}`),l&&this._log.info(`Received event: [ ${l} ]`)),r){case ni.CHANNEL_SETUP_RESULT:{if(t.code===0)this._signalInfo.clientIp=s.clientIp,this._signalInfo.signalIp=s.signalInnerIp,s.svrTime&&Jh(s.svrTime),this._log.info(`ChannelSetup Success ${P()-this._connectStartTime}`),v.addSuccessEvent({key:521701,cost:P()-this._connectStartTime}),this._connectStartTime=-1,this.emit(_e.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let u=new N({code:I.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:V({key:L.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:t.code,errorMsg:t.message}})});this._log.error(`${t.code}, ${t.message}`),this.close(),v.addFailedEvent({key:521701,error:u}),this.emit(_e.SETUP_FAILED,u)}break}case ni.JOIN_ROOM_RESULT:{t.code===0&&(this._signalInfo.relayIp=s.relayOuterIp,this._signalInfo.relayInnerIp=s.relayInnerIp,this._signalInfo.bakRelayIps=s.bakRelayIps,this._signalInfo.relayPort=s.relayPort,this._signalInfo.tinyId=t.tinyId,this._signalInfo.endReportExtend=s.endReportExtend,this._log.info(`signalIp:${this._signalInfo.signalIp} clientIp:${this._signalInfo.clientIp} relayIp: ${this._signalInfo.relayIp}`)),this.emit(l,{data:t});break}default:this.emit(String(l),{data:t});break}}reGetSignalChannelUrl(){return f(this,null,function*(){try{if(!this.room.joinParams)return;si(!0),yield this.room.schedule(this.room.joinParams);let{mainUrl:e,backupUrl:t}=this.room.getSignalChannelUrl();this.url=e,this.backupUrl=t}catch(e){}})}startReconnection(){if(!this._socketInUse)return;this._socketInUse.onclose=null,this._socketInUse.close(4011);let e=this._socketInUse===this._socket;this.unbindAndCloseSocket(e?p.MAIN:p.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return f(this,null,function*(){if(!this._isReconnecting){if(!this.room.isJoined&&this.keepAlive){this.close();return}this._isReconnecting=!0;try{this._log.warn("reconnect"),yield this.connect();let{roomId:e,useStringRoomId:t}=this.room,{relayIp:r,relayInnerIp:s,relayPort:n}=this._signalInfo,{data:a}=yield this.sendWaitForResponse({command:Y.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:s,relayOuterIp:r,relayPort:n},responseCommand:F.CHANNEL_RECONNECT_RESULT});a.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),v.addSuccessEvent({key:521702,cost:P()-this._connectStartTime}),this._connectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(v.addFailedEvent({key:521702,error:a.code}),this._log.warn(`reconnect failed, ${a.code} ${a.message}`),this.room.reJoin())}catch(e){this._log.error(e),this.room.reJoin()}}})}send(e,t={}){if(this.isConnected&&!this.room.isLeft){let r={cmd:e,data:t,userId:this.userId,tinyId:this._signalInfo.tinyId,seq:++this._seq},s=JSON.stringify(r);return this._socketInUse.send(s),this.bytesSent+=xs(s),r.seq}}sendWaitForResponse({command:e,data:t,timeout:r=5e3,responseCommand:s,commandDesc:n,enableLog:a=!0,addReceiveTime:c=!1}){return new Promise((l,u)=>{let h=()=>{clearTimeout(m),u(new N({code:I.API_CALL_ABORTED,message:`${e} aborted due to connection closed`}))};this.once(_e.CLOSE,h);let m=setTimeout(()=>{this.off(s,g),this.off(_e.CLOSE,h);let _=new N({code:I.API_CALL_TIMEOUT,message:V({key:L.API_CALL_TIMEOUT,data:{commandDesc:n,command:e}})});a&&this._log.warn(_),u(_)},r),g=_=>{_.data.seq===T&&(clearTimeout(m),this.off(s,g),this.off(_e.CLOSE,h),c&&(_.data.receiveTime=Date.now()),l(_))};this.on(s,g);let T=this.send(e,t)})}sendWaitForResponseWithRetry(e){let{commandDesc:t,command:r,retries:s=0,retryTimeout:n=0}=e;return mi({retryFunction:this.sendWaitForResponse,onError:({retry:a,reject:c,error:l})=>{!this.room.isJoined||this.destroyed||l.code===I.API_CALL_ABORTED?c(l):this.isOnline?a():(this._log.warn(`retry ${r} when connected`),this.once(_e.CONNECTED,a))},onRetrying:a=>{this._log.warn(`${t||r} timeout observed, retrying [${a}/${s}]`)},settings:{retries:s,timeout:n},context:this})(e)}getCurrentState(){return this._currentState}getSignalInfo(){return this._signalInfo}stopReconnection(){this._isReconnecting=!1,this._stopConnectRetry&&this._stopConnectRetry()}close(){this._log.info("closed"),clearTimeout(this.stopKeepAliveTimeout),Yc.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,bakRelayIps:[],endReportExtend:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(p.MAIN),this.unbindAndCloseSocket(p.BACKUP),this.emitConnectionStateChanged("DISCONNECTED"),this.emit(_e.CLOSE)}destroy(){this.close(),this.destroyed=!0}getBackupRelayIpPair(){var t;let e=(t=this._signalInfo.bakRelayIps)==null?void 0:t.shift();return e&&(e.relayPort=e.relayPort||this._signalInfo.relayPort),e}clearBakRelayIps(){this._signalInfo.bakRelayIps=[]}stopKeepAliveIn(e=3600){if(this.keepAlive){this._log.info(`stopKeepAlive in ${e}s`),this.stopKeepAliveTimeout=setTimeout(()=>{this.keepAlive=!1,this._log.info(`close due to not used ${e}s`),this.close(),this.off(F.JOIN_ROOM_RESULT,t)},e*1e3);let t=r=>{r.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(F.JOIN_ROOM_RESULT,t))};this.on(F.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){e!==this._currentState&&(this._log.info(`${this._currentState} -> ${e}`),this.emit(_e.CONNECTION_STATE_CHANGED,{prevState:this._currentState,state:e}),this._currentState=e,e==="CONNECTED"?this.emit(_e.CONNECTED):e==="DISCONNECTED"&&this.emit(_e.DISCONNECTED))}};O([At({settings:{retries:1/0,timeout:2e3},onError(e,t){!this.room.isDestroyed&&!this.destroyed&&t()},onRetrying(e,t){this._log.warn(`retrying to connect ${e}`),e>=3&&e%3===0&&this.reGetSignalChannelUrl(),t&&(this._stopConnectRetry=t,(this.room.isDestroyed||this.destroyed)&&t())}})],ms.prototype,"connect",1);var Rf=He(Qe());var Th=0,Eh=!1,Zc=new Set,_S=o=>Th>2&&!Eh&&Zc.size===0&&o,Sh=!1,at=class{constructor(i){d(this,"userId");d(this,"tinyId");d(this,"_sdpSemantics");d(this,"_isUplink");d(this,"_room");d(this,"_log");d(this,"_signalChannel");d(this,"_isErrorObserved",!1);d(this,"_waitForPeerConnectionConnectedPromise");d(this,"_waitForPeerConnectionConnectedPromiseReject",null);d(this,"_peerConnection",null);d(this,"_emitter",new Rf.default);d(this,"_currentState","DISCONNECTED");d(this,"_isReconnecting",!1);d(this,"_reconnectionCount",0);d(this,"_reconnectionTimer",-1);d(this,"_isFirstConnection",!0);d(this,"_prevTime",-1);d(this,"_localAddress");d(this,"_remoteAddress");this.userId=i.userId,this.tinyId=i.tinyId,this._room=i.room,this._sdpSemantics=i.room.sdpSemantics,this._isUplink=i.isUplink,this._log=y.createLogger({id:"n-mpc",userId:this._room.userId,remoteUserId:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink}),this._signalChannel=i.signalChannel}beforeConnect(){this._prevTime<0&&(this._prevTime=P())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,v.addSuccessEvent({key:521705,cost:Math.min(P()-this._prevTime,30*1e3)})):this._isReconnecting&&v.addSuccessEvent({key:521706,cost:P()-this._prevTime}),this._prevTime=-1}catch(i){throw this._isFirstConnection?(this._isFirstConnection=!1,v.addFailedEvent({key:521705,error:i})):this._isReconnecting&&this._reconnectionCount>=3&&v.addFailedEvent({key:521706,error:i}),i}}initialize(){let i={iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this._peerConnection=new RTCPeerConnection(i),this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this)}close(i){this._log.info("close connection"),this._emitter.emit("closed",i),this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),Zc.delete(this)}closePeerConnection(i=!1){this._peerConnection&&(this._log.info("close pc"),this._peerConnection.onconnectionstatechange=null,this._peerConnection.close(),this._peerConnection=null,i&&this.emitConnectionStateChangedEvent("DISCONNECTED")),this._waitForPeerConnectionConnectedPromiseReject&&this._waitForPeerConnectionConnectedPromiseReject(new N({code:I.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return Bt;let i=null;if(this._isUplink){if(!_r()||this._peerConnection.getSenders().length===0)return Bt;i=this._peerConnection.getSenders()[0].transport}else{if(!Gr()||this._peerConnection.getReceivers().length===0)return Bt;i=this._peerConnection.getReceivers()[0].transport}return i?i.state:Bt}onConnectionStateChange(i){let e=this._peerConnection.iceConnectionState,t=this.getDTLSTransportState();if(this._log.info(`connectionState: ${i.target.connectionState}, ICE: ${e}, DTLS: ${t}`),i.target.connectionState===ge.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),i.target.connectionState===ge.FAILED||i.target.connectionState===ge.CLOSED){let r=`connection ${i.target.connectionState}. ICE Transport state: ${e}, DTLS Transport state: ${t}`,s=new N({message:r,code:I.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",s)}(i.target.connectionState===ge.CONNECTED||i.target.connectionState===ge.COMPLETED)&&(this.logSelectedCandidate(),se.logSuccessEvent({userId:this._room.userId,eventType:ct.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(i){return i===this._currentState?!1:(i==="CONNECTED"?(Th=0,Eh=!1,Sh=!0,Zc.add(this)):Zc.delete(this),A.emit(C.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:i,remoteUserId:this._isUplink?void 0:this.userId}),this._emitter.emit("connection-state-changed",{prevState:this._currentState,state:i}),this._currentState=i,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let i=yield this._peerConnection.getStats();for(let[,e]of i)if(fr(e)){let t=i.get(e.localCandidateId),r=i.get(e.remoteCandidateId);t&&(this._log.info(`local candidate: ${t.candidateType} ${t.protocol}:${t.ip||t.address}:${t.port} ${t.networkType||""} ${t.candidateType==="relay"?`relayProtocol:${t.relayProtocol}`:""}`),this._localAddress=`${t.ip||t.address}:${t.port}`),r&&(this._log.info(`remote candidate: ${r.candidateType} ${r.protocol}:${r.ip||r.address}:${r.port}`),this._remoteAddress=`${r.protocol}:${r.ip||r.address}`);break}})}getCurrentState(){return this._currentState}waitForPeerConnectionConnected(){return this._waitForPeerConnectionConnectedPromise?this._waitForPeerConnectionConnectedPromise:(this._waitForPeerConnectionConnectedPromise=new Promise((i,e)=>{if(this._currentState==="CONNECTED")return i();this._waitForPeerConnectionConnectedPromiseReject=e;let t=a=>{a.state==="CONNECTED"&&(clearTimeout(n),s(),i())},r=({room:a})=>{a===this._room&&(clearTimeout(n),s(),e(new N({code:I.API_CALL_ABORTED,message:V({key:L.CONNECTION_ABORTED,data:"leave room"})})))},s=()=>{A.off(C.LEAVE_SUCCESS,r,this),this._emitter.off("connection-state-changed",t,this)},n=setTimeout(()=>{s();let a=new N({code:I.API_CALL_TIMEOUT,message:"connection timeout"});Th+=1,_S(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),Eh=!0,this._emitter.emit("firewall-restriction")),e(a)},Ns);A.on(C.LEAVE_SUCCESS,r,this),this._emitter.on("connection-state-changed",t,this)}),this._waitForPeerConnectionConnectedPromise=this._waitForPeerConnectionConnectedPromise.finally(()=>{this._waitForPeerConnectionConnectedPromise=null,this._waitForPeerConnectionConnectedPromiseReject=null}),this._waitForPeerConnectionConnectedPromise)}getReconnectionCount(){return this._reconnectionCount}startReconnection(){this._isReconnecting=!0,this.reconnect()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}stopReconnection(){this._log.info("stop reconnection"),this._isReconnecting=!1,this._reconnectionCount=0,this.clearReconnectionTimer(),this._signalChannel.off(_e.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=wi()){this._log.warn(`SDK has tried reconnect for ${this._reconnectionCount} times, but all failed, please check your network`),this.stopReconnection();let i=new N({code:this._isUplink?I.UPLINK_RECONNECTION_FAILED:I.DOWNLINK_RECONNECTION_FAILED,message:V({key:this._isUplink?L.UPLINK_RECONNECTION_FAILED:L.DOWNLINK_RECONNECTION_FAILED})});return this.emitConnectionStateChangedEvent("DISCONNECTED"),this._emitter.emit("error",i),-1}return this._signalChannel.isConnected?(this._reconnectionCount+=1,this._log.warn(`reconnect() trying [${this._reconnectionCount}]`),1):(this._log.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this._signalChannel.once(_e.CONNECTED,this.reconnect,this),-1)}on(i,e,t){this._emitter.on(i,e,t)}off(i,e,t){this._emitter.off(i,e,t)}getIsReconnecting(){return this._isReconnecting}get isH264(){var i,e;return!!((e=(i=this._peerConnection)==null?void 0:i.remoteDescription)!=null&&e.sdp.includes("H264"))}setOffer(i){var e;return(e=this._peerConnection)==null?void 0:e.setLocalDescription(i)}setAnswer(i){var e;return(e=this._peerConnection)==null?void 0:e.setRemoteDescription(i)}};O([pt(521712,!1)],at.prototype,"setOffer",1),O([pt(521713,!1)],at.prototype,"setAnswer",1);var Rh=He(Ch());var Re=function(o){return Rh.default.parse(o)},Pt=function(o){return Rh.default.write(o)},kf=function(o){let i=Re(o);return i.media.forEach(e=>{e.type===p.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),Pt(i)};function wf(o){let i=Re(o);return i.media.forEach(e=>{var t,r;if(e.type===p.VIDEO){let s=new Set;e.rtp.forEach(({payload:a,codec:c})=>c==="H264"&&s.add(a)),e.fmtp.forEach(({payload:a,config:c})=>{let l=c.match(/apt=(\d+)/);l&&l[1]&&s.has(Number(l[1]))&&s.add(a)});let n=({payload:a})=>!s.has(a);e.rtp=e.rtp.filter(n),e.rtcpFb=(t=e.rtcpFb)==null?void 0:t.filter(n),e.fmtp=e.fmtp.filter(n),e.payloads=(r=e.payloads)==null?void 0:r.split(" ").filter(a=>!s.has(Number(a))).join(" ")}}),Pt(i)}function Kc(o){return Object.keys(o).filter(i=>o[i])}var fs=class fs extends at{constructor(e){super(w(D({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"remoteAudioTrack");d(this,"remoteVideoTrack");d(this,"remoteAuxiliaryTrack");d(this,"ssrc",{audio:0,video:0,auxiliary:0});d(this,"_isSDPExchanging",!1);d(this,"_videoCodec");this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new oi(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new yi(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new ns(this._room,this)}get videoCodec(){var t,r;let e=(r=(t=this._peerConnection)==null?void 0:t.remoteDescription)==null?void 0:r.sdp;return e?e.includes("H264")?"h264":"vp8":this._videoCodec||"h264"}set videoCodec(e){this._videoCodec=e}get subscribeState(){let e={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?e.smallVideo=!0:e.video=!0),this.remoteAudioTrack.isSubscribed&&(e.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(e.auxiliary=!0),e}get muteState(){return $t(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,s;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(s=this.remoteAuxiliaryTrack)==null||s.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===p.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){super.initialize(),this.installEvents(),this._peerConnection.ontrack=this.onTrack.bind(this)}close(e){super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var s,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((s=this.remoteVideoTrack)==null||s.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){let t=e.streams[0],{track:r}=e,s=t.id===vs?p.MAIN:p.AUXILIARY;this._log.debug(`ontrack ${s} ${r.kind}`);let n=p.AUDIO;r.kind===p.VIDEO&&(n=s===p.MAIN?p.VIDEO:p.AUXILIARY);let a=this.remoteAudioTrack;n===p.VIDEO?a=this.remoteVideoTrack:n===p.AUXILIARY&&(a=this.remoteAuxiliaryTrack),a.setInputMediaStreamTrack(r)}addRRTRLine(e){let t=e.split(`\r
|
|
63
|
-
`),r=new Map;t.forEach((n,a)=>{/^a=rtcp-fb:/.test(n)&&t[a+1]&&!/^a=rtcp-fb:/.test(t[a+1])&&r.set(a+1,`${n.match(/^a=rtcp-fb:\d+/)[0]} rrtr`)});let s=[...r];for(let n=0;n<s.length;n++){let[a,c]=s[n];t.splice(a+n,0,c)}return t.join(`\r
|
|
64
|
-
`)}addSPSDescription(e){let t=Re(e);return t.media.forEach(r=>{r.type===p.VIDEO&&r.fmtp.forEach(s=>{s.config+=";sps-pps-idr-in-keyframe=1"})}),Pt(t)}removeSDESDescription(e){let t=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],r=Re(e);return r.media.forEach(s=>{s.ext&&(s.ext=s.ext.filter(n=>!t.includes(n.uri)))}),Pt(r)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return f(this,null,function*(){var r,s;try{if((((r=this._peerConnection)==null?void 0:r.connectionState)===ge.NEW||((s=this._peerConnection)==null?void 0:s.connectionState)===ge.CONNECTING)&&(yield this.waitForPeerConnectionConnected()),this.isSubscriptionStateNotChanged(e)){this._peerConnection||(this.initialize(),yield this.connect(e));return}if(this._log.info(`subscribe ${t} ${JSON.stringify(e)}`),this._peerConnection||this._isSDPExchanging){let n="subscribe_change";Object.values(e).find(a=>a===!0)||(n="unsubscribe"),yield this.sendSubscription(n,e)}else this.initialize(),yield this.connect(e)}catch(n){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${n.message} ${JSON.stringify(this.muteState)}`),new N({code:I.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}unsubscribe(r){return f(this,arguments,function*({remoteTracks:e,streamType:t}){if(this._currentState==="CONNECTED"&&(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed)){this._log.info(`${t} stream already unsubscribed`);return}let s=D({},this.subscribeState);e.forEach(a=>{switch(a.mediaType){case 1:s.audio=!1;break;case 4:s.video=!1;break;case 8:s.smallVideo=!1;break;case 2:s.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(s).find(a=>a===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${Kc(s)}]`),yield this.sendSubscription(n,s),n==="unsubscribe"&&(this.closePeerConnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"))})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},s=Y.UNSUBSCRIBE,n=F.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},s=Y.SUBSCRIBE_CHANGE,n=F.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:s,data:r,responseCommand:n,timeout:1e4}).then(({data:a})=>{if(a.code!==0){let c=new N({code:a.code,message:V({key:L.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}connect(){return f(this,arguments,function*(e=this.subscribeState){try{yield this.exchangeSDP(e),yield this.waitForPeerConnectionConnected()}catch(t){throw this.closePeerConnection(!0),t}})}exchangeSDP(e){return f(this,null,function*(){try{this._isSDPExchanging=!0,yield this.createOffer(),this._log.info("createOffer success, sending offer");let{type:t,sdp:r}=this._peerConnection.localDescription,s={type:t,sdp:r,srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo},n=yield this._signalChannel.sendWaitForResponse({command:Y.SUBSCRIBE,commandDesc:"exchange sdp",data:s,responseCommand:F.SUBSCRIBE_RESULT,timeout:yd});if(!this._peerConnection){let a=new N({code:I.INVALID_OPERATION,message:V({key:L.CONNECTION_CLOSED})});throw this._log.warn(a),a}yield this.onSubscribeResult(n),this._isSDPExchanging=!1}catch(t){throw this._isSDPExchanging=!1,t}})}createOffer(){return f(this,null,function*(){let e={voiceActivityDetection:!1};ut()&&this._sdpSemantics===lr?(this._peerConnection.addTransceiver(p.AUDIO,{direction:ie.RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:ie.RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:ie.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:r}=yield Ga();r||(this._log.warn("remove h264 desc from sdp"),t.sdp=wf(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=kf(t.sdp),this._sdpSemantics===lr&&(t.sdp=this.removeSDESDescription(t.sdp))}yield this.setOffer(t)})}onSubscribeResult(e){return f(this,null,function*(){let{code:t,message:r=""}=e&&e.data||{},{type:s,sdp:n}=e&&e.data&&e.data.data||{};if(t===br)throw new N({code:I.NOT_SUPPORTED_H264,message:V({key:L.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new N({code:t,message:V({key:L.EXCHANGE_SDP_FAILED,data:{errMsg:r}})});this._log.debug(`accept remote answer: ${n}`),yield this.setAnswer({type:s,sdp:n}),this.updateSSRC(n)}catch(a){throw this._log.error(a),a}})}updateSSRC(e){try{Re(e).media.forEach(r=>{if(r.ssrcs)if(r.type===p.AUDIO){let s=r.ssrcs.find(n=>{var a;return(a=n.value)==null?void 0:a.includes(vs)});s&&(this.ssrc.audio=Number(s.id))}else{let s=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(vs)}),n=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(Sd)});s&&(this.ssrc.video=Number(s.id)),n&&(this.ssrc.auxiliary=Number(n.id))}})}catch(t){}}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}reconnect(){return f(this,null,function*(){if(!(qe(fs.prototype,this,"beforeReconnect").call(this)<0))try{this.closePeerConnection(),this.initialize(),yield this.connect(),this.stopReconnection(),this._log.warn("reconnect() success")}catch(t){let r=Ht(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}getIsReconnecting(){return this._isReconnecting}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}getCurrentState(){return this._currentState}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}get audioReceiver(){var e;return((e=this._peerConnection)==null?void 0:e.getReceivers()[0])||null}};O([K(e=>function(...t){return new Promise((r,s)=>{let n=a=>{this._emitter.off("closed",n),s(new N({code:I.API_CALL_ABORTED,message:V({key:L.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,s).finally(()=>{this._emitter.off("closed",n)})})})],fs.prototype,"subscribe",1),O([pt(521717,!1)],fs.prototype,"unsubscribe",1),O([st(at.prototype.afterConnect),sc(at.prototype.beforeConnect)],fs.prototype,"connect",1);var yh=fs,bh=yh;var Lf={voiceActivityDetection:!1},_s=class _s extends at{constructor(e){super(w(D({},e),{isUplink:!0}));d(this,"localMainAudioTrack",null);d(this,"localMainVideoTrack",null);d(this,"localAuxAudioTrack",null);d(this,"localAuxVideoTrack",null);d(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0});d(this,"_isPublishingAux",!1);d(this,"_publishingLocalAudioTrack");d(this,"_publishingLocalVideoTrack");d(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});d(this,"flag",0)}get videoCodec(){return this._mediaSettings.videoCodec.toLowerCase()||"h264"}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,s,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(_i()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((s=a[2])!=null&&s.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(c=>{c.track&&(c.track.kind===p.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}initialize(){super.initialize(),this.installEvents()}reset(){this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),this.uninstallEvents()}close(e){super.close(e),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this._emitter.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this._emitter.on("connection-state-changed",this.handleConnectionStateChange,this)}uninstallEvents(){this._emitter.off("connection-state-changed",this.handleConnectionStateChange,this)}emitConnectionStateChangedEvent(e,t){var n,a,c;let r=this._currentState,s=super.emitConnectionStateChangedEvent(e);return s&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:r,state:e}))),s}publish(s){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){this._peerConnection||this.initialize(),e&&(this._publishingLocalAudioTrack=e),t&&(this._publishingLocalVideoTrack=t),this._isPublishingAux=r;let n;t&&!r&&t.small&&(n=this._room.videoManager.smallTrack),this.sendMediaSettings(),ut()?yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:n,isAuxiliary:r}):yield this.publishByAddTrack({localAudioTrack:e,localVideoTrack:t,smallTrack:n}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,r?(t&&(this.localAuxVideoTrack=t),e&&(this.localAuxAudioTrack=e)):(t&&(this.localMainVideoTrack=t),e&&(this.localMainAudioTrack=e)),this.installTrackMuteEvents(e,t),this.sendMutedFlag()})}publishByTransceiver(n){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:s}){this._log.info("publish by transceiver");let a=new MediaStream,c=t==null?void 0:t.outMediaTrack,l=e==null?void 0:e.outMediaTrack;l&&a.addTrack(l),c&&a.addTrack(c);let u=this._peerConnection.getTransceivers();if(u.length===0)this._peerConnection.addTransceiver(l||p.AUDIO,{direction:ie.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(s?p.VIDEO:c||p.VIDEO,{direction:ie.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(r||p.VIDEO,{direction:ie.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(s?c||p.VIDEO:p.VIDEO,{direction:ie.SENDONLY,streams:[a]}),yield this.connect();else{let h=[];if(l&&(u[0].sender.track||h.push(0),yield u[0].sender.replaceTrack(l),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:p.AUDIO})),c){let m=s?3:1;yield u[m].sender.replaceTrack(c),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:p.VIDEO,videoType:s?p.AUXILIARY:p.BIG}),h.push(m),r&&(yield u[2].sender.replaceTrack(r),yield this.setBandwidth({bandwidth:t.small.bitrate,type:p.VIDEO,videoType:p.SMALL}),h.push(2))}yield this.setTransceiverDirection(ie.SENDONLY,h),yield this.doPublishChange(),t==null||t.emit("connection-state-changed",{prevState:"DISCONNECTED",state:"CONNECTING"}),t==null||t.emit("connection-state-changed",{prevState:"CONNECTING",state:"CONNECTED"})}})}publishByAddTrack(s){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r}){this._log.info("publish by addtrack");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack;if(this._peerConnection&&this._peerConnection.connectionState!=="new"){e&&a&&(yield this.addTrack(e)),n&&(yield this.addTrack(t));return}let c=new MediaStream;if(a&&c.addTrack(a),n&&c.addTrack(n),a&&this._peerConnection.addTrack(a,c),n&&(this._peerConnection.addTrack(n,c),r)){let l=new MediaStream;l.addTrack(r),this._peerConnection.addTrack(r,l)}yield this.connect()})}enableSmall(e){return f(this,null,function*(){let t=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield t[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.setTransceiverDirection(ie.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.setTransceiverDirection(ie.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){if(!_i()){if(e&&e.outMediaTrack&&!t&&this.localMainVideoTrack){yield this.removeTrack(e),this.localMainAudioTrack=null;return}if(t&&t.outMediaTrack&&!e&&this.localMainAudioTrack){yield this.removeTrack(t),this.localMainVideoTrack=null;return}yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),this.emitConnectionStateChangedEvent("DISCONNECTED",t);return}let s=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(s?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localAuxAudioTrack&&!this.localMainAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(s?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=w(D({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),c.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=w(D({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),c.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.setTransceiverDirection(ie.INACTIVE,c),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return f(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponse({command:Y.PUBLISH_STATE_CHANGE,data:t,responseCommand:F.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,commandDesc:"unpublish",responseCommand:F.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===I.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let r=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:s,localAuxVideoTrack:n}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?n=this._publishingLocalVideoTrack:s=this._publishingLocalVideoTrack),gi){if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(s&&s.outMediaTrack){let a=s.outMediaTrack.getSettings();this._mediaSettings.videoWidth=a.width||0,this._mediaSettings.videoHeight=a.height||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=s.profile.bitrate*1e3,s.small&&(this._mediaSettings.smallVideoWidth=s.small.width,this._mediaSettings.smallVideoHeight=s.small.height,this._mediaSettings.smallVideoFps=s.small.frameRate,this._mediaSettings.smallVideoBps=s.small.bitrate*1e3)}if(n&&n.outMediaTrack){let a=n.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=a.width||0,this._mediaSettings.auxVideoHeight=a.height||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=n.profile.bitrate*1e3}}else r&&r.outMediaTrack&&(this._mediaSettings.audioChannel=r.profile.channelCount,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=r.profile.sampleRate),s&&s.outMediaTrack&&(this._mediaSettings.videoWidth=s.profile.width,this._mediaSettings.videoHeight=s.profile.height,this._mediaSettings.videoFps=s.profile.frameRate,this._mediaSettings.videoBps=s.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Y.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:F.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?p.AUXILIARY:p.MAIN} stream`),ut()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return f(this,null,function*(){var s;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((s=this.localMainVideoTrack)!=null&&s.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===ie.INACTIVE&&(yield this.setTransceiverDirection(ie.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;_i()&&this._peerConnection.getTransceivers().findIndex(s=>s.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",t));let r=this._peerConnection.getSenders().find(s=>s.track&&s.track.kind===t.kind);if(r&&r.track){this._log.warn("sender already exists, remove sender first");let s=r.track;this.removeSender(r),yield this.updateOffer("remove",s)}if(t&&this._peerConnection.addTrack(t,new MediaStream([t])),t.kind===p.VIDEO&&e instanceof Ge&&e.small){let s=new MediaStream,{smallTrack:n}=this._room.videoManager;s.addTrack(n),this._peerConnection.addTrack(n,s)}yield this.updateOffer("add",t)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===mo||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=Re(e);for(let r=0;r<t.media.length;r++)if(Number(t.media[r].mid)===0&&t.media[r].type===p.VIDEO)return!0;return!1}removeSender(e){let t=null;_i()&&(t=this._peerConnection.getTransceivers().find(r=>r.sender&&r.sender.track===e.track)),this._peerConnection.removeTrack(e),t&&ae(t.stop)&&(this._log.info("stop transceiver"),t.stop())}removeTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?p.AUXILIARY:p.MAIN} stream`),ut()?yield this.removeTrackByTransceiver(e,t):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.outMediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(null);else{let s=t?3:1;yield r[s].sender.replaceTrack(null),s===1&&e.small&&(yield r[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(ie.INACTIVE,[s])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,t){return f(this,null,function*(){if(!ne)return;let r=!1,s=!1;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let n=this._peerConnection.getTransceivers();if(t.forEach(l=>{n[l].direction!==e&&(n[l].direction=e,r=!0)}),r){this._log.info("updating offer");let l=yield this._peerConnection.createOffer();yield this.setOffer(l)}let a=-1,c=this._peerConnection.remoteDescription.sdp.split(`\r
|
|
65
|
-
`).map(l=>{if(l.match(new RegExp(`a=(${ie.INACTIVE}|${ie.RECVONLY}|${ie.SENDONLY})`))&&a++,t.includes(a)){if(e===ie.INACTIVE&&l.includes(`a=${ie.RECVONLY}`))return s=!0,`a=${e}`;if(e===ie.SENDONLY&&l.includes(`a=${ie.INACTIVE}`))return s=!0,`a=${ie.RECVONLY}`}return l}).join(`\r
|
|
66
|
-
`);s&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:c}))})}removeTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===p.VIDEO&&this.isNeedToResetOfferOrder()&&this.localMainAudioTrack){this.reset(),this.initialize(),yield this.publish({localAudioTrack:this.localMainAudioTrack,isAuxiliary:!1});return}let t=this._peerConnection.getSenders().find(r=>r.track===e.outMediaTrack);t&&(this.removeSender(t),e.kind===p.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(r=>{r.track&&r.track.kind===p.VIDEO&&this.removeSender(r)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return f(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders();if(!t||t.length===0||!e.mediaTrack)return!1;let r;if(ut()?r=e.kind===p.AUDIO?t[0]:t[1]:r=t.find(a=>a.track&&a.track.kind===e.kind),!r)return!1;let s=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${e.kind} track on ${s?p.AUXILIARY:p.MAIN} stream`),e.kind===p.AUDIO?yield r.replaceTrack(e.outMediaTrack):e.kind===p.VIDEO&&(s?t[3]&&(yield t[3].replaceTrack(e.outMediaTrack)):yield r.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,t){return f(this,null,function*(){try{let r=yield this._peerConnection.createOffer(Lf);ne&&r.sdp&&(r.sdp=this.setSDPDirection(r.sdp,"sendrecv")),yield this.setOffer(r);let s=this.updateMediaSettings(),n={action:e,trackId:t.id,kind:t.kind===p.VIDEO?"bigVideo":t.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:s,state:this.publishState};this._log.info("createOffer success, sending updated offer to remote server"),this._log.debug(`updatedOffer: ${n.sdp}`);let a=yield this._signalChannel.sendWaitForResponse({command:Y.PUBLISH_CHANGE,data:n,responseCommand:F.UPDATE_OFFER_RESULT,timeout:Rd,commandDesc:"update offer"}),{code:c,message:l}=a.data;c!==0&&this.checkPublishResultCode(c,l),yield this.acceptAnswer(a.data.data),r.sdp&&this.updateSSRC(r.sdp)}catch(r){throw this._log.error(r),r}})}setBandwidth(n){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r,sdp:s}){if(!rn())return s?t===p.VIDEO?this.updateVideoBandwidthRestriction(s,e,r):this.updateAudioBandwidthRestriction(s,e):void 0;let a,c=this._peerConnection.getSenders();if(ut()){let l=0;t===p.VIDEO&&(r===p.SMALL?l=2:r===p.AUXILIARY?l=3:l=1),a=c[l]}else a=c.find(l=>l.track&&l.track.kind===t);if(a){let l=a.getParameters();(!l.encodings||l.encodings.length===0)&&(l.encodings=[{}]),l.encodings[0].maxBitrate=e*1e3;try{return yield a.setParameters(l),this._log.info(`${r||""}${t} bandwidth ${e} kbps`),s}catch(u){if(this._log.info(`failed to set bandwidth by setting maxBitrate: ${u}`),s)return t===p.VIDEO?this.updateVideoBandwidthRestriction(s,e,r):this.updateAudioBandwidthRestriction(s,e)}}return s})}updateVideoBandwidthRestriction(e,t,r){let s="AS";ne&&(s="TIAS",t=t*1e3);let n=0,a=-1;return r===p.SMALL?n=1:r===p.AUXILIARY&&(n=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,c=>(a+=1,a===n?`${c}b=${s}:${t}\r
|
|
67
|
-
`:c)),e}updateAudioBandwidthRestriction(e,t){let r="AS";return ne&&(r="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
|
|
68
|
-
c=IN $2\r
|
|
69
|
-
b=${r}:${t}\r
|
|
70
|
-
`),e}removeBandwidthRestriction(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}removeVideoOrientation(e){return e.replace(/urn:3gpp:video-orientation/,"")}connect(){return f(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return f(this,null,function*(){try{yield this.createOffer(),this._log.info("createOffer success, sending offer to remote server"),yield this.doExchangeSDP()}catch(e){throw e}})}createOffer(){return f(this,null,function*(){try{let e=yield this._peerConnection.createOffer(Lf);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:Y.PUBLISH,responseCommand:F.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof et||this.localAuxVideoTrack instanceof et,state:this.publishState,constraintConfig:this._mediaSettings},enableLog:!1};return this._log.debug(`sending sdp offer: ${e.data.sdp}`),this._signalChannel.sendWaitForResponse(e).then(t=>{let{code:r,message:s,data:n}=t.data;return r===0?this.acceptAnswer(n):this.checkPublishResultCode(r,s)})}setSDPDirection(e,t,r="all"){let s=Re(e);return s.media.forEach(n=>{(r==="all"||n.type===r)&&(n.direction=t)}),Pt(s)}acceptAnswer(e){return f(this,null,function*(){var t,r,s,n,a;try{let c;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let h=((t=this._publishingLocalVideoTrack)==null?void 0:t.profile.bitrate)||((r=this.localMainVideoTrack)==null?void 0:r.profile.bitrate),m=((s=this._publishingLocalAudioTrack)==null?void 0:s.profile.bitrate)||((n=this.localMainAudioTrack)==null?void 0:n.profile.bitrate);if(h){let g=this._isPublishingAux?p.AUXILIARY:p.BIG;c=yield this.setBandwidth({bandwidth:h,type:p.VIDEO,sdp:c,videoType:g})}m&&(c=yield this.setBandwidth({bandwidth:m,type:p.AUDIO,sdp:c}))}if(c=this.removeVideoOrientation(e.sdp),(a=this._publishingLocalVideoTrack)!=null&&a.small){let{smallStreamConfig:h}=this._room;c=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||h.bitrate,type:p.VIDEO,videoType:p.SMALL,sdp:c})}let u={type:e.type,sdp:c};yield this.setAnswer(u),this._log.debug(`accepted answer: ${c}`)}catch(c){throw this._log.error(`failed to accept remote answer ${c}`),c}})}sendMutedFlag(e){var s,n,a;if(e===this.localAuxAudioTrack||e===this.localAuxVideoTrack)return;let r={audio:!!((s=this.localMainAudioTrack)!=null&&s.muted),bigVideo:!!((n=this.localMainVideoTrack)!=null&&n.muted),auxVideo:!!((a=this.localAuxVideoTrack)!=null&&a.muted)};this._log.info(`send muted state: ${JSON.stringify(r)}`),this._signalChannel.send(Y.UPDATE_MUTE_STAT,r)}getIsReconnecting(){return this._isReconnecting}reconnect(){return f(this,null,function*(){if(!(qe(_s.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,responseCommand:F.UNPUBLISH_RESULT,enableLog:!1}),this.closePeerConnection(),this.initialize(),this.isMainStreamPublished&&(yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0})),this._log.warn("reconnect() uplink reconnect successfully"),this.stopReconnection()}catch(t){let r=Ht(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&A.emit(C.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{Re(e).media.forEach((r,s)=>{if(r.type===p.AUDIO){let n=r.ssrcs&&r.ssrcs[0];n&&(this.ssrc.audio=Number(n.id))}else{if(this._sdpSemantics===mo&&r.ssrcGroups){r.ssrcGroups.forEach((a,c)=>{let l=Number(a.ssrcs.split(" ")[0]);c===0?this.ssrc.video=l:c===1&&(this.ssrc.small=l)});return}let n=r.ssrcs&&r.ssrcs[0];if(!n)return;switch(s){case 1:this.ssrc.video=Number(n.id);break;case 2:this.ssrc.small=Number(n.id);break;case 3:this.ssrc.auxiliary=Number(n.id);break;default:break}}})}catch(t){}}getVideoTrackId(e=p.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===p.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===p.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===p.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===p.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===br?(this._log.error($e.NOT_SUPPORTED_H264ENCODE),new N({code:I.NOT_SUPPORTED_H264,message:V({key:L.NOT_SUPPORTED_H264ENCODE})})):new N({code:I.UNKNOWN,message:V({key:L.SIGNAL_RESPONSE_FAILED,data:{signalResponse:F.PUBLISH_RESULT,code:e,message:t}})})}};O([K(e=>function(...t){return new Promise((r,s)=>{let n=a=>{this._emitter.off("closed",n),s(new N({code:I.API_CALL_ABORTED,message:V({key:L.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,s).finally(()=>{this._emitter.off("closed",n)})})})],_s.prototype,"publish",1),O([pt(521715,!1)],_s.prototype,"unpublish",1),O([st(at.prototype.afterConnect),sc(at.prototype.beforeConnect)],_s.prototype,"connect",1);var vh=_s,Un=vh;var Bn=class{constructor(i,e){this.room=i;d(this,"_log");d(this,"_prevReportTime",0);d(this,"_prevReport",{});d(this,"_prevStats",null);d(this,"_prevEncoderImplementation","");d(this,"_prevAuxEncoderImpl","");d(this,"_prevQualityLimitationReason","");d(this,"_prevAuxQualityLimitationReason","");d(this,"_prevDecoderImplementationMap",new Map);d(this,"_decodeMap",new Map);d(this,"totalBytesSent",0);d(this,"totalBytesReceived",0);d(this,"_spcStats",null);this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(i){return f(this,null,function*(){var s;let e={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},small:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},auxiliary:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},rtt:0},t=i.getPeerConnection(),r=i.getSSRC();if(t)try{if((this._spcStats||(yield t.getStats())).forEach(a=>{var u,h,m;let c,l;if(a.type==="outbound-rtp")if((a.mediaType||a.kind)===p.VIDEO){if(a.ssrc===r.video?(c=p.VIDEO,l=i.localMainVideoTrack):a.ssrc===r.small?c=p.SMALL:a.ssrc===r.auxiliary&&(l=i.localAuxVideoTrack,c=p.AUXILIARY),!c)return;if(e[c].bytesSent=a.bytesSent,e[c].packetsSent=a.packetsSent,e[c].framesEncoded=a.framesEncoded,E(a.keyFramesEncoded)||(e[c].keyFramesEncoded=a.keyFramesEncoded),E(a.nackCount)||(e[c].nackCount=a.nackCount),E(a.pliCount)||(e[c].pliCount=a.pliCount),E(a.retransmittedPacketsSent)||(e[c].retransmittedPacketsSent=a.retransmittedPacketsSent),E(a.totalEncodeTime)||(e[c].totalEncodeTime=a.totalEncodeTime),E(a.totalPacketSendDelay)||(e[c].totalPacketSendDelay=a.totalPacketSendDelay),!E(a.encoderImplementation)&&(c===p.VIDEO&&this._prevEncoderImplementation!==a.encoderImplementation||c===p.AUXILIARY&&this._prevAuxEncoderImpl!==a.encoderImplementation)){let T=2,_=this._prevEncoderImplementation;c===p.AUXILIARY&&(T=7,_=this._prevAuxEncoderImpl),A.emit("262",{userId:i.userId,streamType:T,prevImplementation:_,implementation:a.encoderImplementation,codec:i.videoCodec,isHWCodec:a.powerEfficientEncoder}),this[c===p.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=a.encoderImplementation,this._log.info(`${c===p.AUXILIARY?"aux ":""}encoderImplementation change to ${a.encoderImplementation}(${i.videoCodec}) HWEncoder: ${a.powerEfficientEncoder}`)}a.ssrc===r.video?!E(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`qualityLimitationReason change to ${a.qualityLimitationReason}`),A.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(u=i.localMainVideoTrack)==null?void 0:u.isQosClearFirst}),this._prevQualityLimitationReason=a.qualityLimitationReason):a.ssrc===r.auxiliary&&!E(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevAuxQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`aux qualityLimitationReason change to ${a.qualityLimitationReason}`),A.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(h=i.localAuxVideoTrack)==null?void 0:h.isQosClearFirst}),this._prevAuxQualityLimitationReason=a.qualityLimitationReason)}else e.audio.bytesSent=a.bytesSent,e.audio.packetsSent=a.packetsSent;else a.type==="candidate-pair"?fr(a)&&(this.totalBytesSent=a.bytesSent,q(a.currentRoundTripTime)&&(e.rtt=Math.floor(a.currentRoundTripTime*1e3))):a.type==="media-source"&&(a.kind===p.AUDIO?(e.audio.audioLevel=a.audioLevel||0,e.audio.totalAudioEnergy=a.totalAudioEnergy||0,a.echoReturnLoss,a.totalSamplesDuration&&(e.audio.totalSamplesDuration=a.totalSamplesDuration)):a.kind===p.VIDEO&&(a.trackIdentifier===i.getVideoTrackId(p.VIDEO)?e.video.fpsCapture=a.framesPerSecond:a.trackIdentifier===i.getVideoTrackId(p.AUXILIARY)?e.auxiliary.fpsCapture=a.framesPerSecond:e.small.fpsCapture=a.framesPerSecond));if(!E(a.audioLevel)&&((m=i.localMainAudioTrack)!=null&&m.mediaTrack)&&a.trackIdentifier===i.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=a.audioLevel||0),!E(a.frameWidth)){let g=p.SMALL;a.trackIdentifier===i.getVideoTrackId(p.VIDEO)||a.ssrc===r.video?g=p.VIDEO:(a.trackIdentifier===i.getVideoTrackId(p.AUXILIARY)||a.ssrc===r.auxiliary)&&(g=p.AUXILIARY),e[g].frameWidth=a.frameWidth,e[g].frameHeight=a.frameHeight,e[g].framesSent=a.framesSent}}),i.localMainAudioTrack){let a=i.localMainAudioTrack.getInternalAudioLevel(),c=i.localMainAudioTrack.getInternalAudioLevelAfter3A();e.audio.audioCaptureEnergyAfter3a=c,e.audio.micAudioLevel=a,e.audio.audioLevel===0&&(e.audio.audioLevel=a)}this.totalBytesSent||(this.totalBytesSent+=e.audio.bytesSent+e.video.bytesSent+e.auxiliary.bytesSent),Object.keys(e).forEach(a=>{a===p.AUDIO?(i.localMainAudioTrack&&(i.localMainAudioTrack.stat=e[a]),i.localAuxAudioTrack&&(i.localAuxAudioTrack.stat=e[a])):a===p.VIDEO?i.localMainVideoTrack&&(i.localMainVideoTrack.stat=e[a]):a===p.AUXILIARY&&i.localAuxVideoTrack&&(i.localAuxVideoTrack.stat=e[a])})}catch(n){this._log.warn(`failed to getStats on sender connection ${n}`)}return e.rtt===0&&(e.rtt=((s=this.room.networkQuality)==null?void 0:s.uplinkRTT)||0),e})}getReceiverStats(i){return f(this,null,function*(){var r,s,n;let e={tinyId:i.tinyId,userId:i.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,p2pDelay:0,totalJitter:0,totalJitterCount:0,audioLevel:0,totalAudioEnergy:0,insertedSamplesForDeceleration:0,removedSamplesForAcceleration:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,freezeCount:0,totalFreezesDuration:0,totalJitter:0,totalJitterCount:0,p2pDelay:0,codec:""},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,totalJitter:0,totalJitterCount:0,p2pDelay:0,codec:""}},t=i.getPeerConnection();if(t)try{let{ssrc:a}=i,{muteState:c,subscribeState:l}=i;(this._spcStats||(yield t.getStats())).forEach(h=>{var m,g;if(h.type==="codec"&&this._decodeMap.set(h.id,h),h.type==="inbound-rtp"){let T=(h.mediaType||h.kind)===p.AUDIO;if(T){if(h.ssrc!==a.audio||!c.hasAudio)return;e.audio.packetsReceived=h.packetsReceived,e.audio.bytesReceived=h.bytesReceived,e.audio.packetsLost=h.packetsLost,h.insertedSamplesForDeceleration&&(e.audio.insertedSamplesForDeceleration=h.insertedSamplesForDeceleration),h.removedSamplesForAcceleration&&(e.audio.removedSamplesForAcceleration=h.removedSamplesForAcceleration),h.totalSamplesDuration&&(e.audio.totalSamplesDuration=h.totalSamplesDuration),h.totalSamplesReceived&&(e.audio.totalSamplesReceived=h.totalSamplesReceived),h.concealedSamples&&(e.audio.concealedSamples=h.concealedSamples),h.silentConcealedSamples&&(e.audio.silentConcealedSamples=h.silentConcealedSamples);let{remoteAudioTrack:_}=i;_.stat.packetsReceived=h.packetsReceived,_.stat.bytesReceived=h.bytesReceived,_.stat.packetsLost=h.packetsLost,e.audio.p2pDelay=_.stat.end2EndDelay,e.hasAudio=!0}else{if(ne&&h.bytesReceived===0)return;let _;h.ssrc===a.video&&c.hasVideo&&(e.video.packetsReceived=h.packetsReceived,e.video.bytesReceived=h.bytesReceived,e.video.packetsLost=h.packetsLost,e.video.framesReceived=h.framesReceived,e.video.framesDecoded=h.framesDecoded,e.video.fpsDecoded=h.framesPerSecond,e.hasVideo=!0,i.videoCodec=ei[(m=this._decodeMap.get(h.codecId))==null?void 0:m.mimeType.split("/")[1]]||"h264",e.video.codec=i.videoCodec,_=i.remoteVideoTrack,c.hasSmall&&l.smallVideo&&(e.isSmallSubscribed=!0),h.decoderImplementation&&(!this._prevDecoderImplementationMap.has(e.userId)||this._prevDecoderImplementationMap.get(e.userId)!==h.decoderImplementation)&&(this._log.info(`${e.userId} decoderImplementation change to ${h.decoderImplementation}(${i.videoCodec}) HWDecoder: ${h.powerEfficientDecoder}`),A.emit("262",{userId:this.room.userId,remoteUserId:e.userId,prevImplementation:this._prevDecoderImplementationMap.get(e.userId),implementation:h.decoderImplementation,codec:i.videoCodec,isHWCodec:h.powerEfficientDecoder}),this._prevDecoderImplementationMap.set(e.userId,h.decoderImplementation))),h.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.packetsReceived=h.packetsReceived,e.auxiliary.bytesReceived=h.bytesReceived,e.auxiliary.packetsLost=h.packetsLost,e.auxiliary.framesReceived=h.framesReceived,e.auxiliary.framesDecoded=h.framesDecoded,e.auxiliary.fpsDecoded=h.framesPerSecond,_=i.remoteAuxiliaryTrack,e.auxiliary.p2pDelay=_.stat.end2EndDelay,e.hasAuxiliary=!0,e.video.codec=((g=this._decodeMap.get(h.codecId))==null?void 0:g.mimeType.split("/")[1].toLowerCase())||"h264"),_&&(_.stat.packetsReceived=h.packetsReceived,_.stat.bytesReceived=h.bytesReceived,_.stat.packetsLost=h.packetsLost,_.stat.framesReceived=h.framesReceived,_.stat.framesDecoded=h.framesDecoded,h.jitterBufferDelay&&(_.stat.jitterBufferDelay=Math.floor(h.jitterBufferDelay/h.jitterBufferEmittedCount*1e3)),e.video.p2pDelay=_.stat.end2EndDelay)}h.jitterBufferDelay&&(T?(e.audio.totalJitter=h.jitterBufferDelay,e.audio.totalJitterCount=h.jitterBufferEmittedCount):h.ssrc===a.video&&c.hasVideo?(e.video.totalJitter=h.jitterBufferDelay,e.video.totalJitterCount=h.jitterBufferEmittedCount):h.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.totalJitter=h.jitterBufferDelay,e.auxiliary.totalJitterCount=h.jitterBufferEmittedCount))}else h.type==="candidate-pair"&&fr(h)&&(this.totalBytesReceived=h.bytesReceived,q(h.currentRoundTripTime)&&(e.rtt=Math.floor(h.currentRoundTripTime*1e3)));E(h.frameWidth)||((h.trackIdentifier===i.getMainStreamVideoTrackId()||h.ssrc===a.video)&&(e.video.frameWidth=h.frameWidth,e.video.frameHeight=h.frameHeight,i.remoteVideoTrack.stat.frameWidth=h.frameWidth,i.remoteVideoTrack.stat.frameHeight=h.frameHeight),(h.trackIdentifier===i.getAuxStreamVideoTrackId()||h.ssrc===a.auxiliary)&&(e.auxiliary.frameWidth=h.frameWidth,e.auxiliary.frameHeight=h.frameHeight,i.remoteAuxiliaryTrack.stat.frameWidth=h.frameWidth,i.remoteAuxiliaryTrack.stat.frameHeight=h.frameHeight)),!E(h.audioLevel)&&i.muteState.audioAvailable&&i.remoteAudioTrack.mediaTrack&&h.trackIdentifier===i.remoteAudioTrack.mediaTrack.id&&(e.audio.audioLevel=h.audioLevel||0,e.audio.totalAudioEnergy=h.totalAudioEnergy||0)}),e.audio.audioLevel===0&&i.muteState.audioAvailable&&(e.audio.audioLevel=i.remoteAudioTrack.getInternalAudioLevel()||0),this.totalBytesReceived||(this.totalBytesReceived+=e.audio.bytesReceived+e.video.bytesReceived+e.auxiliary.bytesReceived),E((r=i.remoteVideoTrack.player.stat)==null?void 0:r.fps)||(e.video.fpsRender=i.remoteVideoTrack.player.stat.fps),E((s=i.remoteAuxiliaryTrack.player.stat)==null?void 0:s.fps)||(e.auxiliary.fpsRender=i.remoteAuxiliaryTrack.player.stat.fps)}catch(a){this._log.warn(`failed to getStats on receiver connection ${a}`)}return e.rtt===0&&(e.rtt=((n=this.room.networkQuality)==null?void 0:n.uplinkRTT)||0),e})}getStats(i,e){return f(this,null,function*(){let t={},r=[];if(this.room.singlePC){let s=this.room.singlePC.getPeerConnection();if(!s)return{senderStats:t,receiverStats:r};let n=P(),a=yield s.getStats(),c=P();c-n>2e3&&this._log.warn(`getStats cost ${c-n}ms`);let l=[],u=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source","codec"]);a.forEach(h=>u.has(h.type)&&l.push(h)),this._spcStats=l}i&&(t=yield this.getSenderStats(i));for(let[s,n]of e){let a=yield this.getReceiverStats(n);r.push(a)}return{senderStats:t,receiverStats:r}})}getDifferenceValue(i,e){if(Ii(i))return e;let t=e-i;return t<0?0:t}prepareReport({stats:i,report:e,freezeMap:t}){var m,g,T;if(!Ii(i.senderStats)){let _={uint32_audio_level:i.senderStats.audio.audioLevel*It,uint32_audio_energy:(i.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent};i.senderStats.audio.micAudioLevel&&(_.uint32_mic_audio_level=i.senderStats.audio.micAudioLevel*It),i.senderStats.audio.audioCaptureEnergyAfter3a&&(_.uint32_audio_capture_energy_after3a=i.senderStats.audio.audioCaptureEnergyAfter3a*It),i.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=i.senderStats.audio.totalSamplesDuration);let S=[];if(i.senderStats.video.bytesSent){let X={uint32_video_stream_type:2,uint32_video_codec_fps:i.senderStats.video.framesSent,uint32_video_capture_fps:i.senderStats.video.fpsCapture,uint32_video_width:i.senderStats.video.frameWidth,uint32_video_height:i.senderStats.video.frameHeight,uint32_video_codec_bitrate:i.senderStats.video.bytesSent,uint32_video_enc_fps:i.senderStats.video.framesEncoded,uint32_key_frame_count:i.senderStats.video.keyFramesEncoded,uint32_nack_count:i.senderStats.video.nackCount,uint32_pli_count:i.senderStats.video.pliCount,uint32_encode_cost:(i.senderStats.video.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.video.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.video.retransmittedPacketsSent};S.push(X)}if(i.senderStats.small.bytesSent){let X={uint32_video_stream_type:3,uint32_video_codec_fps:i.senderStats.small.framesSent||0,uint32_video_capture_fps:i.senderStats.small.fpsCapture||0,uint32_video_width:i.senderStats.small.frameWidth||0,uint32_video_height:i.senderStats.small.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.small.bytesSent,uint32_video_enc_fps:i.senderStats.small.framesEncoded||0,uint32_key_frame_count:i.senderStats.small.keyFramesEncoded,uint32_nack_count:i.senderStats.small.nackCount,uint32_pli_count:i.senderStats.small.pliCount,uint32_encode_cost:(i.senderStats.small.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.small.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.small.retransmittedPacketsSent};S.push(X)}if(i.senderStats.auxiliary.bytesSent){let X={uint32_video_stream_type:7,uint32_video_codec_fps:i.senderStats.auxiliary.framesSent||0,uint32_video_capture_fps:i.senderStats.auxiliary.fpsCapture||0,uint32_video_width:i.senderStats.auxiliary.frameWidth||0,uint32_video_height:i.senderStats.auxiliary.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.auxiliary.bytesSent,uint32_video_enc_fps:i.senderStats.auxiliary.framesEncoded||0,uint32_key_frame_count:i.senderStats.auxiliary.keyFramesEncoded,uint32_nack_count:i.senderStats.auxiliary.nackCount,uint32_pli_count:i.senderStats.auxiliary.pliCount,uint32_encode_cost:(i.senderStats.auxiliary.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.auxiliary.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.auxiliary.retransmittedPacketsSent};S.push(X)}let R={uint32_bitrate:0,uint32_lost:0,uint32_rtt:i.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:_,msg_video_status:S,msg_network_status:R}}let r=(m=Ee())==null?void 0:m.playoutStats;r&&(e.msg_device_info.uint32_audio_play_cost=r.totalFramesDuration);let{statInterval:s}=this;e.msg_down_stream_info=[],i.receiverStats.forEach(_=>{let S={msg_user_info:{str_identifier:_.userId,uint64_tinyid:_.tinyId},msg_network_status:{uint32_rtt:_.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(_.hasAudio){let R={uint32_audio_p2p_delay:_.audio.p2pDelay,uint32_audio_cache_ms:_.audio.totalJitter,uint32_audio_cache_ms_count:_.audio.totalJitterCount,uint32_audio_codec_bitrate:_.audio.bytesReceived,uint32_audio_total_bitrate:_.audio.bytesReceived,uint32_audio_level:_.audio.audioLevel*1e8,uint32_audio_energy:_.audio.totalAudioEnergy*1e6,uint32_audio_receive:_.audio.packetsReceived,uint32_audio_origin_lost:_.audio.packetsLost};S.msg_audio_status=R}if(_.hasVideo){let R=t.get(`${_.userId}_${Id}`),X=R?R.duration:0,$={uint32_video_stream_type:_.isSmallSubscribed?3:2,uint32_video_receive_fps:_.video.framesReceived,uint32_video_width:_.video.frameWidth,uint32_video_height:_.video.frameHeight,uint32_video_codec_bitrate:_.video.bytesReceived,uint32_video_receive:_.video.packetsReceived,uint32_video_origin_lost:_.video.packetsLost,uint32_video_block_time:X,uint32_video_dec_fps:_.video.framesDecoded,uint32_video_codec_fps:_.video.fpsRender,uint32_video_cache_ms:_.video.totalJitter,uint32_video_cache_ms_count:_.video.totalJitterCount,uint32_video_p2p_delay:_.video.p2pDelay,uint32_video_codec:_.video.codec};S.msg_video_status.push($)}if(_.hasAuxiliary){let R=t.get(`${_.userId}_${Ad}`),X=R?R.duration:0,$={uint32_video_stream_type:7,uint32_video_receive_fps:_.auxiliary.framesReceived,uint32_video_width:_.auxiliary.frameWidth,uint32_video_height:_.auxiliary.frameHeight,uint32_video_codec_bitrate:_.auxiliary.bytesReceived,uint32_video_receive:_.auxiliary.packetsReceived+_.auxiliary.packetsLost,uint32_video_origin_lost:_.auxiliary.packetsLost,uint32_video_block_time:X,uint32_video_dec_fps:_.auxiliary.framesDecoded,uint32_video_codec_fps:_.video.fpsRender,uint32_video_cache_ms:_.auxiliary.totalJitter,uint32_video_cache_ms_count:_.auxiliary.totalJitterCount,uint32_video_p2p_delay:_.auxiliary.p2pDelay,uint32_video_codec:_.video.codec};S.msg_video_status.push($)}e.msg_down_stream_info.push(S)});let n=this._prevReport,a=this._prevStats;if(this._prevReport=JSON.parse(JSON.stringify(e)),this._prevStats=JSON.parse(JSON.stringify(i)),e.msg_up_stream_info.msg_audio_status&&n.msg_up_stream_info.msg_audio_status){let _=n.msg_up_stream_info.msg_audio_status,S=e.msg_up_stream_info.msg_audio_status;if(_.uint32_audio_codec_bitrate===0)S.uint32_audio_codec_bitrate=0;else{let R=this.getDifferenceValue(_.uint32_audio_codec_bitrate,S.uint32_audio_codec_bitrate);S.uint32_audio_codec_bitrate=Math.round(R*8/s),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=S.uint32_audio_codec_bitrate}(g=n.msg_device_info)!=null&&g.uint32_audio_capture_cost?e.msg_device_info.uint32_audio_capture_cost=2*Math.floor(this.getDifferenceValue(n.msg_device_info.uint32_audio_capture_cost,e.msg_device_info.uint32_audio_capture_cost)*1e3/s):delete e.msg_device_info.uint32_audio_capture_cost}let c=n.msg_up_stream_info.msg_video_status;e.msg_up_stream_info.msg_video_status.forEach(_=>{let S=c.find(Q=>Q.uint32_video_stream_type===_.uint32_video_stream_type);if(!S||S.uint32_video_codec_bitrate===0){_.uint32_video_codec_bitrate=0,_.uint32_video_enc_fps=0,_.uint32_video_codec_fps=0;return}let R=0,X=0,$=0;S&&_.uint32_video_codec_bitrate>=S.uint32_video_codec_bitrate&&(R=S.uint32_video_codec_bitrate,X=S.uint32_video_enc_fps,$=S.uint32_video_codec_fps);let De=this.getDifferenceValue(R,_.uint32_video_codec_bitrate);_.uint32_video_codec_bitrate=Math.round(De*8/s),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=_.uint32_video_codec_bitrate,_.uint32_video_enc_fps=Math.round(this.getDifferenceValue(X,_.uint32_video_enc_fps)/s),_.uint32_video_codec_fps=Math.round(this.getDifferenceValue($,_.uint32_video_codec_fps)/s),S.uint32_video_width===0&&S.uint32_video_height===0&&S.uint32_video_codec_fps===0&&(_.uint32_video_codec_fps=_.uint32_video_enc_fps),E(S.uint32_key_frame_count)||(_.uint32_key_frame_count=Math.round(this.getDifferenceValue(S.uint32_key_frame_count,_.uint32_key_frame_count))),E(S.uint32_nack_count)||(_.uint32_nack_count=Math.round(this.getDifferenceValue(S.uint32_nack_count,_.uint32_nack_count))),E(S.uint32_pli_count)||(_.uint32_pli_count=Math.round(this.getDifferenceValue(S.uint32_pli_count,_.uint32_pli_count))),E(S.uint32_video_arq_packets)||(_.uint32_video_arq_packets=Math.round(this.getDifferenceValue(S.uint32_video_arq_packets,_.uint32_video_arq_packets))),E(S.uint32_encode_cost)||(_.uint32_encode_cost=Math.round(this.getDifferenceValue(S.uint32_encode_cost,_.uint32_encode_cost)/s)),E(S.uint32_send_packet_cost)||(_.uint32_send_packet_cost=Math.round(this.getDifferenceValue(S.uint32_send_packet_cost,_.uint32_send_packet_cost)/s))});let u=n.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(_=>u.find(S=>S.msg_user_info.uint64_tinyid===_.msg_user_info.uint64_tinyid));let h=e.msg_down_stream_info;return h.forEach(_=>{let S=u.find(R=>R.msg_user_info.uint64_tinyid===_.msg_user_info.uint64_tinyid);if(!Ii(_.msg_audio_status)&&!Ii(S.msg_audio_status)){let R=_.msg_audio_status,X=S.msg_audio_status,$=this.getDifferenceValue(X.uint32_audio_cache_ms_count,R.uint32_audio_cache_ms_count);delete R.uint32_audio_cache_ms_count,R.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(X.uint32_audio_cache_ms,R.uint32_audio_cache_ms)/$)||0;let De=this.room.remotePublishedUserMap.get(_.msg_user_info.str_identifier);De&&(De.remoteAudioTrack.stat.jitterBufferDelay=R.uint32_audio_cache_ms),R.uint32_audio_origin_lost=this.getDifferenceValue(X.uint32_audio_origin_lost,R.uint32_audio_origin_lost),R.uint32_audio_receive=this.getDifferenceValue(X.uint32_audio_receive,R.uint32_audio_receive),R.uint32_audio_receive+=R.uint32_audio_origin_lost;let Q=this.getDifferenceValue(X.uint32_audio_codec_bitrate,R.uint32_audio_codec_bitrate);R.uint32_audio_codec_bitrate=Math.round(Q*8/s),R.uint32_audio_total_bitrate=Math.round(Q*8/s)}else _.msg_audio_status={};if(_.msg_video_status&&S.msg_video_status){let R=S.msg_video_status;_.msg_video_status=_.msg_video_status.filter($=>R.find(De=>De.uint32_video_stream_type===$.uint32_video_stream_type)),_.msg_video_status.forEach($=>{let De=R.find(T_=>T_.uint32_video_stream_type===$.uint32_video_stream_type),Q=De.uint32_video_receive,J=De.uint32_video_origin_lost,h_=De.uint32_video_codec_bitrate,m_=De.uint32_video_receive_fps,p_=De.uint32_video_dec_fps;$.uint32_video_origin_lost=this.getDifferenceValue(J,$.uint32_video_origin_lost),$.uint32_video_receive=this.getDifferenceValue(Q,$.uint32_video_receive)+$.uint32_video_origin_lost;let f_=this.getDifferenceValue(h_,$.uint32_video_codec_bitrate);$.uint32_video_codec_bitrate=Math.round(f_*8/s);let __=this.getDifferenceValue(m_,$.uint32_video_receive_fps);$.uint32_video_receive_fps=Math.round(__/s),$.uint32_video_dec_fps=Math.round(this.getDifferenceValue(p_,$.uint32_video_dec_fps)/s);let g_=this.getDifferenceValue(De.uint32_video_cache_ms_count,$.uint32_video_cache_ms_count);delete $.uint32_video_cache_ms_count,$.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(De.uint32_video_cache_ms,$.uint32_video_cache_ms)/g_)||0})}}),(T=n.msg_device_info)!=null&&T.uint32_audio_play_cost?e.msg_device_info.uint32_audio_play_cost=2*Math.floor(this.getDifferenceValue(n.msg_device_info.uint32_audio_play_cost,e.msg_device_info.uint32_audio_play_cost)/s):delete e.msg_device_info.uint32_audio_play_cost,a&&i.receiverStats.forEach(_=>{if(_.audio.concealedSamples&&_.audio.totalSamplesReceived){let S=a.receiverStats.find(R=>R.userId===_.userId);if(S&&S.audio.concealedSamples&&S.audio.totalSamplesReceived){let R=(_.audio.silentConcealedSamples||0)-(S.audio.silentConcealedSamples||0),X=_.audio.concealedSamples-S.audio.concealedSamples,$=_.audio.totalSamplesReceived-S.audio.totalSamplesReceived,De=Math.floor((X-R)/$*1e3*s);if(De>s*1e3/5){let Q=h.find(J=>J.msg_user_info.str_identifier===_.userId);Q&&(Q.msg_audio_status.uint32_audio_block_time=De)}}}}),e}getStatsReport(r){return f(this,arguments,function*({uplinkConnection:i,downlinkConnections:e,freezeMap:t}){let s={msg_device_info:{},msg_up_stream_info:{msg_audio_status:{uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_capture_energy_after3a:0},msg_video_status:[],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:0},msg_audio_status:{uint32_audio_cache_ms:0,uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0},msg_video_status:[{uint32_video_cache_ms:0,uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}}]},n=yield this.getStats(i,e);return JSON.stringify(this._prevReport)==="{}"&&(this._prevReport=JSON.parse(JSON.stringify(s))),this.prepareReport({stats:n,report:s,freezeMap:t}),this._prevReportTime=Date.now(),s})}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map}};var Uf=He(Qe());function Pf(o){let i={totalCost:0,local:0,redirect:0,httpCache:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let e=performance.getEntriesByType("resource").reverse();for(let t of e)if(t.name===o){let r=Math.round(t.duration),s=Math.max(Math.round(t.domainLookupStart-t.startTime),0),n=t.redirectStart>0?Math.max(Math.round(t.redirectEnd-t.redirectStart),0):0,a=t.fetchStart>0?Math.max(Math.round(t.domainLookupStart-t.fetchStart),0):0,c=Math.round(t.domainLookupEnd-t.domainLookupStart),l=Math.round(t.requestStart-t.secureConnectionStart),u=Math.round(t.secureConnectionStart-t.connectStart),h=Math.round(t.responseStart-t.requestStart),m=Math.round(t.responseEnd-(t.responseStart||t.startTime));i=w(D({},i),{totalCost:r,local:s,redirect:n,httpCache:a,dns:c,tcp:u,tls:l,request:h,response:m});break}}catch(e){}return i}function Vf(o){return new Promise(i=>f(this,null,function*(){let e=setTimeout(()=>{i({totalCost:1e4,local:0,dns:0,tcp:0,tls:0,request:0,response:0})},1e4),t=Date.now(),r=`https://${o}/?t=${t}`;try{yield fetch(r)}catch(n){}clearTimeout(e);let s=Pf(r);s.totalCost===0&&(s.totalCost=Date.now()-t),i(s)}))}var bS=700,so=class so extends Uf.default{constructor({signalChannel:e,room:t}){super();d(this,"_room");d(this,"_signalChannel");d(this,"_log");d(this,"uplinkRTT",0);d(this,"uplinkLoss",0);d(this,"downlinkRTT",0);d(this,"downlinkLoss",0);d(this,"pingResults",{});d(this,"_downlinkPrevStatMap",new Map);d(this,"_downlinkLossAndRTTMap",new Map);d(this,"_interval",-1);d(this,"_uplinkNetworkQuality",0);d(this,"_downlinkNetworkQuality",0);this._room=t,this._signalChannel=e,this._log=y.createLogger({id:"q",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this.initialize()}get uplinkNetworkQuality(){return this._uplinkNetworkQuality}set uplinkNetworkQuality(e){e!==this._uplinkNetworkQuality&&this._log.info(`uplink ${this.uplinkNetworkQuality} -> ${e}, rtt: ${this.uplinkRTT}, loss: ${this.uplinkLoss} ws-rtt: ${this._signalChannel.rtt}`),this._uplinkNetworkQuality=e}get downlinkNetworkQuality(){return this._downlinkNetworkQuality}set downlinkNetworkQuality(e){if(e!==this._downlinkNetworkQuality){let{rtt:t,loss:r}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this._log.info(`downlink ${this.downlinkNetworkQuality} -> ${e}, rtt: ${t}, loss: ${r} ws-rtt: ${this._signalChannel.rtt}`)}this._downlinkNetworkQuality=e}initialize(){this._signalChannel.on(F.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(_e.CONNECTION_STATE_CHANGED,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var c,l;if(e.data.code!==0)return;let t=e.data.data;if(t.delay&&this.updateDelay(t.delay),this._room.signalChannel&&t.wsRtt&&(this._room.signalChannel.rtt=t.wsRtt),!this._room.uplinkConnection){this.uplinkNetworkQuality=0,this.uplinkLoss=0,this.uplinkRTT=0;return}let r=(l=(c=this._room)==null?void 0:c.uplinkConnection)==null?void 0:l.getPeerConnection();if(r&&this.isPeerConnectionDisconnected(r)){this.uplinkNetworkQuality=6,this.uplinkLoss=0,this.uplinkRTT=0;return}let s=t.expectAudPkg+t.expectVidPkg,n=t.recvAudPkg+t.recvVidPkg,a=s-n;s===0&&n===0||(a<=0?this.uplinkLoss=0:this.uplinkLoss=Math.round(a/s*100),this.uplinkRTT=t.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss,this.uplinkRTT))}handleDownlinkNetworkQuality(){return f(this,null,function*(){if(this._room.remotePublishedUserMap.size===0){this.downlinkNetworkQuality=0;return}let e=[...this._room.remotePublishedUserMap.values()],t=e.filter(a=>{var c;return((c=a.getPeerConnection())==null?void 0:c.connectionState)===ge.CONNECTED});if(e.filter(a=>this.isPeerConnectionDisconnected(a.getPeerConnection())).length===e.length){this.downlinkNetworkQuality=6;return}for(let a=0;a<t.length;a++){let c=t[a].getPeerConnection();if(!c)return;let{rtt:l,totalPacketsLost:u,totalPacketsReceived:h}=yield this.getStat(c);if(!this._downlinkPrevStatMap.has(c)){this._downlinkPrevStatMap.set(c,{totalPacketsLost:u,totalPacketsReceived:h});continue}let m=0,g=this._downlinkPrevStatMap.get(c),T=u-g.totalPacketsLost,_=h-g.totalPacketsReceived;T<=0||_<0?m=0:m=Math.round(T/(T+_)*100),this._downlinkPrevStatMap.set(c,{totalPacketsLost:u,totalPacketsReceived:h}),this._downlinkLossAndRTTMap.set(c,{rtt:l,loss:m,userId:t[a].getUserId(),audioDelay:t[a].remoteAudioTrack.stat.end2EndDelay,videoDelay:t[a].remoteVideoTrack.stat.end2EndDelay})}if([...this._downlinkPrevStatMap.keys()].forEach(a=>{this.isPeerConnectionDisconnected(a)&&(this._downlinkPrevStatMap.delete(a),this._downlinkLossAndRTTMap.delete(a))}),this._downlinkLossAndRTTMap.size===0){this.downlinkRTT=0,this.downlinkLoss=0,this.downlinkNetworkQuality=0;return}let{rtt:s,loss:n}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=s,this.downlinkLoss=n,this.downlinkNetworkQuality=this.getNetworkQuality(n,s)})}getStat(e){return f(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!Gr())return t;let r=e.getReceivers();try{for(let s=0;s<r.length;s++)(yield r[s].getStats()).forEach(c=>{c.type==="candidate-pair"&&q(c.currentRoundTripTime)&&(t.rtt=Math.round(c.currentRoundTripTime*1e3)),c.type==="inbound-rtp"&&(c.mediaType===p.AUDIO||c.mediaType===p.VIDEO)&&(t.totalPacketsLost+=c.packetsLost,t.totalPacketsReceived+=c.packetsReceived)});return t.rtt===0&&(t.rtt=this.uplinkRTT),t}catch(s){return t}})}getAverageLossAndRTT(e){let t={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach(r=>{t.rtt+=r.rtt,t.loss+=r.loss}),Object.keys(t).forEach(r=>{t[r]=Math.round(t[r]/e.length)})),t}getNetworkQuality(e,t){return e>50||t>500?5:e>30||t>350?4:e>20||t>200?3:e>10||t>100?2:e>=0||t>=0?1:0}handleSignalConnectionStateChange(e){e.state==="DISCONNECTED"?(this.uplinkRTT=0,this.uplinkLoss=0,this.uplinkNetworkQuality=6):e.state==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}handleUplinkConnectionStateChange({state:e}){e==="DISCONNECTED"?(this.uplinkLoss=0,this.uplinkRTT=0,this.uplinkNetworkQuality=6):e==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}isPeerConnectionDisconnected(e){return!!(e&&(e.connectionState===ge.DISCONNECTED||e.connectionState===ge.FAILED||e.connectionState===ge.CLOSED))}setUplinkConnection(e){this._room.uplinkConnection=e,this._room.uplinkConnection?this._room.uplinkConnection.on("connection-state-changed",this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT=0,this.uplinkLoss=0)}start(){if(this._interval!==-1){this._log.info("network quality calculating is already started");return}this._log.debug("start network quality calculating"),this._interval=re.run("ric",()=>{var n;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];A.emit(C.NETWORK_QUALITY,{room:this._room,uplink:{rtt:this.uplinkRTT,loss:this.uplinkLoss},downlinks:e});let t=(n=this._room.scheduleResult.config)==null?void 0:n.pingDomainInfo,r={uplinkNetworkQuality:this.uplinkNetworkQuality,downlinkNetworkQuality:this.downlinkNetworkQuality,uplinkRTT:this.uplinkRTT,uplinkLoss:this.uplinkLoss,downlinkRTT:this.downlinkRTT,downlinkLoss:this.downlinkLoss};t&&(r=w(D({},r),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit(so.EVENT_NETWORK_QUALITY,r);let s=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&s-so.lastPingTime>t.interval*1e3){so.lastPingTime=Date.now();let a=t.domain.map(c=>Vf(c).then(l=>({domain:c,cost:l.totalCost})));Promise.all(a).then(c=>{this.pingResults.isPoorNetwork=c.some(l=>l.cost>bS),this.pingResults.timestamp=s,this.pingResults.data=c,c.forEach(l=>{v.addSuccessEvent({key:521718,cost:l.cost})}),this._log.warn(`All ping results: ${JSON.stringify(c)}`)}).catch(c=>{this._log.warn(`Error during pinging domains: ${c}`)})}},{delay:2e3})}stop(){this._log.debug("stopped"),this._interval!==-1&&(re.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:t}=this._room;e.forEach(({srcTinyId:r,videoDelay:s,audioDelay:n})=>{let a=t.get(r);if(a){let c=this._room.remotePublishedUserMap.get(a);c==null||c.setDelay({videoDelay:s,audioDelay:n})}})}};d(so,"EVENT_NETWORK_QUALITY","0"),d(so,"lastPingTime",0);var gs=so;function vS({fn:o,context:i}){return function(...e){try{let t=o.apply(i,e);return ur(t)?t.catch(r=>y.error(`${o.name}() error observed ${r}`)):t}catch(t){y.error(`${o.name}() error observed ${t}`)}}}var ed=class{constructor(i){d(this,"_frameWorkType");d(this,"_component");d(this,"_language");d(this,"connectionType");d(this,"_room");d(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});d(this,"_keyPrefix");d(this,"_log");d(this,"_intervalId");d(this,"_firstPublishedUserList");d(this,"_networkQuality");d(this,"_basicInfo");d(this,"_pathJoinRoom");d(this,"_pathLeaveRoom");d(this,"_pathMainVideoMap");d(this,"_pathMainAudioMap");d(this,"_pathAuxiliaryMap");d(this,"_remoteStreamStatMap");d(this,"_localStreamStat");d(this,"_eventMap",new Map);d(this,"_captureCostSum",0);d(this,"_captureCostCount",0);d(this,"isDestroyed",!1);this._frameWorkType=i.frameWorkType||30,this._component=i.component||0,this.connectionType=i.connectionType||1,this._language=i.language||0,this._room=i.room,this._keyPrefix="key_point",this._log=y.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&ae(this[e])&&(this[e]=vS({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:Ve,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,Pr().then(i=>{this._basicInfo.string_os_version=$i(),i?this._basicInfo.string_device_name=i.mobile?i.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(i,e){return this._eventMap.set(i,e),A.on(i,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(C.JOIN_START,this.handleJoinStart).addEvent(C.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(C.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(C.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(C.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(C.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(C.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(C.JOIN_FAILED,this.handleJoinFailed).addEvent(C.LEAVE_START,this.handleLeaveStart).addEvent(C.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(C.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(C.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(C.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(C.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(C.PUBLISH_START,this.handlePublishStart).addEvent(C.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(C.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(C.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(C.PLAY_TRACK_START,this.handlePlayStart).addEvent(C.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(C.PLAYER_STATE_CHANGED,({track:i,state:e,type:t})=>{!i.isRemote||!this.hitTest(i.room)||e==="PLAYING"&&(t===p.AUDIO?this.handleAudioPlaying(i):this.handleVideoPlaying(i))}).addEvent(C.SWITCH_ROOM_START,this.handleSwitchRoomStart).addEvent(C.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess).addEvent(C.SWITCH_ROOM_FAILED,this.handleSwitchRoomFailed).addEvent(C.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(C.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(C.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(C.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let r=e.hasAudio||e.hasVideo||e.hasSmall,s=e.hasAuxiliary,n=t.hasAudio||t.hasVideo||t.hasSmall,a=t.hasAuxiliary;!r&&n&&this.handleRemoteStreamAdded(t.userId,"main"),!s&&a&&this.handleRemoteStreamAdded(t.userId,"auxiliary")}).addEvent(C.SINGLE_CONNECTION_STAT,({room:i,stat:e})=>{this.hitTest(i)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((i,e)=>A.off(e,i)),this._eventMap.clear()}destroy(){this.uninstallEvents(),re.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(i){this.hitTest(i.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),i.params&&(E(i.params.frameWorkType)||(this._frameWorkType=i.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),E(i.params.component)||(this._component=i.params.component,this._basicInfo.uint32_component=this._component),E(i.params.language)||(this._language=i.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:i,detailCost:e}){if(this.hitTest(i)&&e){let{totalCost:t,local:r,dns:s,tcp:n,tls:a,request:c,response:l}=e;this._pathJoinRoom.int32_schedule_cost=t,this._pathJoinRoom.int32_schedule_local=r,this._pathJoinRoom.int32_schedule_dns=s,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=a,this._pathJoinRoom.int32_schedule_request=c,this._pathJoinRoom.int32_schedule_response=l}}handleSignalConnectionStart({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:i,error:e}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof N?Number(e.getExtraCode()||e.getCode()):I.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=i.code,i.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=i.room.getSignalInfo())}handleJoinFailed({room:i,error:e}){this.hitTest(i)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=i.publishedUserList||[])}handleSendFirstVideoFrame({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(i){this.hitTest(i.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleSwitchRoomStart(i){if(this.hitTest(i.room)){let e=Date.now();this.report().then(()=>{this._pathJoinRoom.uint64_start_time=e,this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=e})}}handleSwitchRoomSuccess({room:i}){if(this.hitTest(i)&&this._pathJoinRoom.uint64_end_time===0){let e=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=e,this._pathJoinRoom.uint64_end_time=e,this._pathJoinRoom.int32_end_ret}}handleSwitchRoomFailed({room:i,error:e}){if(this.hitTest(i)){let t=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=t,this._pathJoinRoom.uint64_end_time=t,e&&(this._pathJoinRoom.int32_end_ret=e instanceof N?Number(e.getExtraCode()||e.getCode()):I.UNKNOWN)}}handleRemoteStreamAdded(i,e){var r;let t=`${i}_${e}`;if(!this._remoteStreamStatMap.has(t)){let s={userId:i,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:w(D({},NS),{msg_user_info:new Fn({userId:i,tinyId:(r=this._room.remotePublishedUserMap.get(i))==null?void 0:r.tinyId,role:20})})};s.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(t,s)}}handleSubscribeStart({room:i,remotePublishedUser:e,streamType:t,subscribeState:r}){if(!this.hitTest(i))return;let{userId:s,tinyId:n,role:a}=e,c=new Fn({userId:s,tinyId:n,role:a==="anchor"?20:21}),l=Date.now(),u=`${s}_${t}`,h=this._remoteStreamStatMap.get(u);h&&h.subscribeStartTime===0&&(h.subscribeStartTime=l),t==="main"?(e.muteState.hasVideo&&(r.video||r.smallVideo)&&!this._pathMainVideoMap.has(u)&&this._pathMainVideoMap.set(u,{statsToReport:{msg_user_info:c,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:s,sendSubscribeCMDTime:l}),e.muteState.hasAudio&&r.audio&&!this._pathMainAudioMap.has(u)&&this._pathMainAudioMap.set(u,{statsToReport:{msg_user_info:c,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:s,sendSubscribeCMDTime:l})):e.muteState.hasAuxiliary&&r.auxiliary&&!this._pathAuxiliaryMap.has(u)&&this._pathAuxiliaryMap.set(u,{sendSubscribeCMDTime:l})}handleSubscribed({room:i,remotePublishedUser:e,streamType:t}){if(this.hitTest(i)){let r=`${e.userId}_${t}`,s=this._remoteStreamStatMap.get(r);s&&s.subscribedTime===0&&(s.subscribedTime=Date.now())}}handlePlayStart({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._remoteStreamStatMap.get(e);(t==null?void 0:t.playStreamTime)===0&&(t.playStreamTime=Date.now())}handleVideoLoadedData({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._pathMainVideoMap.get(e);t&&t.statsToReport.uint64_combine_first_frame_time===0&&(t.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(i){let e=`${i.userId}_${i.streamType}`,t=Date.now(),r=this._pathMainVideoMap.get(e),s=this._remoteStreamStatMap.get(e);if(s){let{statsToReport:n}=s;if(!n.uint32_video_render_first&&i.streamType==="main"?this.hasVideoFlag(i.userId):this.hasAuxFlag(i.userId)){let a=t-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=a,v.addNumber({key:516820,value:a})}}(r==null?void 0:r.statsToReport.uint64_render_first_frame_time)===0&&(r.statsToReport.uint64_render_first_frame_time=t)}handleAudioPlaying(i){let e=`${i.userId}_${i.streamType}`,t=this._pathMainAudioMap.get(e);t&&t.statsToReport.uint64_play_first_frame_time===0&&(t.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(i){this.hitTest(i.room)&&(this._networkQuality.totalUplinkLoss+=i.uplink.loss,this._networkQuality.totalUplinkRTT+=i.uplink.rtt,this._networkQuality.count++,i.downlinks.forEach(({rtt:e,loss:t,userId:r,videoDelay:s,audioDelay:n})=>{let a=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(a)a.totalRTT+=e,a.totalLoss+=t,s&&(a.totalVideoDelay=(a.totalVideoDelay||0)+s,a.videoDelayCount=(a.videoDelayCount||0)+1),n&&(a.totalAudioDelay=(a.totalAudioDelay||0)+n,a.audioDelayCount=(a.audioDelayCount||0)+1),a.count++;else{let c,l,u,h;s&&(l=s,u=1),n&&(c=n,h=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(r,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:c,totalVideoDelay:l,audioDelayCount:h,videoDelayCount:u})}}))}handleHeartbeatStats(i){if(this.hitTest(i.room)){let{msg_device_info:e,msg_up_stream_info:t,msg_down_stream_info:r}=i.report;if(t.msg_video_status[0]){let{uint32_video_codec_bitrate:s,uint32_video_enc_fps:n,uint32_video_width:a,uint32_video_height:c}=t.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=s,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=a,this._localStreamStat.totalVideoHeight+=c,this._localStreamStat.videoCount++}if(t.msg_audio_status){let{uint32_audio_level:s}=t.msg_audio_status;Math.floor(s/It*100)>0&&(this._localStreamStat.totalAudioLevel+=s/It,this._localStreamStat.audioLevelCount++)}r.forEach(s=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:c}=s,l=n.str_identifier,u=this._room.remotePublishedUserMap.get(l);if(c.forEach(h=>{let m=h.uint32_video_stream_type===2,g=h.uint32_video_stream_type===7,T=`${l}_${m?"main":"auxiliary"}`,_=this._remoteStreamStatMap.get(T);if(_&&(m&&(u!=null&&u.remoteVideoTrack.isSubscribed)||g&&(u!=null&&u.remoteAuxiliaryTrack))){_.totalVideoFPS+=h.uint32_video_receive_fps,_.totalVideoBitrate+=h.uint32_video_codec_bitrate,_.videoCount++,_.statsToReport.uint32_video_width===0&&(_.statsToReport.uint32_video_width=h.uint32_video_width),_.statsToReport.uint32_video_height===0&&(_.statsToReport.uint32_video_height=h.uint32_video_height);let S=m?u.remoteVideoTrack:u.remoteAuxiliaryTrack;S.stat.jitterBufferDelay&&(_.videoJitterBufferDelay=S.stat.jitterBufferDelay),S.stat.framesReceived&&(_.statsToReport.uint32_video_consume_render_rate=Math.floor(S.stat.framesDecoded/S.stat.framesReceived*sr(10,6)))}}),!So(a)){let h=`${l}_main`,m=this._remoteStreamStatMap.get(h);this._remoteStreamStatMap.has(h)&&m&&u!=null&&u.remoteAudioTrack.isSubscribed&&(m.totalAudioBitrate+=a.uint32_audio_codec_bitrate,m.audioCount++,u.remoteAudioTrack.stat.jitterBufferDelay&&(m.audioJitterBufferDelay=u.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/It*100)>0&&(m.totalAudioLevel+=a.uint32_audio_level/It,m.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:i}){this.hitTest(i)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:i,error:e}){let r={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof N?e.getExtraCode()||e.getCode():I.UNKNOWN);i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=r,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=r,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&cr)>=0}hasAudioFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&dr)>=0}hasAuxFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&yr)>=0}hitTest(i){return i===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let i=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=i<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((i,e)=>{let{userId:t}=i,r=this._networkQuality.totalDownlinkRTTAndLossMap.get(t);if(r){let{totalLoss:u,count:h,audioDelayCount:m,videoDelayCount:g,totalAudioDelay:T,totalVideoDelay:_}=r;i.statsToReport.uint32_avg_down_loss=Math.floor(u/h),m&&T&&(i.statsToReport.uint32_audio_network_p2p_delay=Math.floor(T/m),i.audioJitterBufferDelay&&(i.statsToReport.uint32_p2p_delay=Math.floor(i.statsToReport.uint32_audio_network_p2p_delay+i.audioJitterBufferDelay))),g&&_&&(i.statsToReport.uint32_video_network_p2p_delay=Math.floor(_/g))}i.videoCount>0&&(i.statsToReport.uint32_video_avg_fps=Math.floor(i.totalVideoFPS/i.videoCount),i.statsToReport.uint32_video_avg_bitrate=Math.floor(i.totalVideoBitrate/i.videoCount)),i.audioCount>0&&(i.statsToReport.uint32_audio_recv_bitrate=i.statsToReport.uint32_audio_bitrate=Math.floor(i.totalAudioBitrate/i.audioCount)),i.audioLevelCount>0&&(i.statsToReport.uint32_audio_play_db=Math.floor(i.totalAudioLevel/i.audioLevelCount*100));let{callDurationCalculator:s}=this._room;s&&(i.statsToReport.uint32_audio_play_time=s.getDuration(e,p.AUDIO),i.statsToReport.uint32_video_play_time=s.getDuration(e,p.VIDEO)),i.statsToReport.uint32_video_render_first&&(i.statsToReport.uint32_video_render_first=Math.min(i.statsToReport.uint32_video_render_first,no));let{badCaseDetector:n}=this._room,{dataFreeze:a,count:c}=n.getDataFreezeDuration(e),{renderFreeze:l}=n.getRenderFreezeDuration(e);i.statsToReport.uint32_video_block_count=c,i.statsToReport.uint32_video_block_time=Math.min(a,i.statsToReport.uint32_video_play_time),i.statsToReport.uint32_video_external_block_time=Math.min(l,i.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&i.statsToReport.uint32_video_avg_fps===0?i.statsToReport.uint32_video_black_screen_subjective=1:i.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((i,e)=>{if(!this.hasAudioFlag(i.userId)){this._pathMainAudioMap.delete(e);return}i.statsToReport.uint64_play_first_frame_time-i.statsToReport.uint64_start_enter_time>no&&(i.statsToReport.uint64_play_first_frame_time=i.statsToReport.uint64_start_enter_time+no)}),this._pathMainVideoMap.forEach((i,e)=>{if(!this.hasVideoFlag(i.userId)){this._pathMainVideoMap.delete(e);return}i.statsToReport.uint64_render_first_frame_time-i.statsToReport.uint64_start_enter_time>no&&(i.statsToReport.uint64_render_first_frame_time=i.statsToReport.uint64_start_enter_time+no)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>no&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+no)}getReportData(){this._basicInfo.uint32_networkType=Or();let i={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new Fn({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Io(this._signalInfo.relayIp),uint32_client_ip:Io(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*sr(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:Io(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return Ls(i),i}report(){return f(this,null,function*(){try{this.prepareReport();let i=this.getReportData();yield this.upload(i),this.initData()}catch(i){this._log.warn(i)}finally{this.isDestroyed&&(this._room=null)}})}upload(i){return f(this,null,function*(){if(i.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=mr.enable?Vi(i,2001,e):yield Gd(i),r=t instanceof ArrayBuffer,s=`${Pi(e,nr.KEY_POINT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,t));let a=[this.uploadKVStat(v),this.uploadKVStat($r)];n||a.push(Ui({url:s,body:t,priority:"low"})),yield Promise.all(a)})}setConnectionType(i){this.connectionType=i,this._basicInfo.uint32_connection_type=i}uploadKVStat(i){return f(this,null,function*(){let e=i.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=w(D({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let t=mr.enable?Vi(e,2003,this._room.sdkAppId):yield Gd(e),r=t instanceof ArrayBuffer,s=`${Pi(+this._room.sdkAppId,nr.KV_STAT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,t)),n||Ui({url:s,body:t})})}};O([At({settings:{timeout:500,retries:3}})],ed.prototype,"upload",1);var no=5e3,NS={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},Fn=class{constructor(i){d(this,"str_identifier");d(this,"str_tinyid");d(this,"uint32_role");this.str_identifier=String(i.userId),this.str_tinyid=String(i.tinyId||0),this.uint32_role=i.role}},Bf=ed;var Nh=class{constructor(){d(this,"_startTime");d(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=P())}stop(){this._endTime===0&&(this._endTime=P())}getDuration(){return this._endTime===0?P()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},td=Nh;var Dh=class{constructor(i){d(this,"_room",null);d(this,"_durationMap");d(this,"_eventMap",new Map);this._room=i.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(C.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(C.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(C.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{var n;let{userId:r}=t;if(!this.hitTest(i))return;e.hasAudio&&!t.hasAudio&&this.stopDurationItem(`${r}_main`,p.AUDIO),e.hasVideo&&!t.hasVideo&&this.stopDurationItem(`${r}_main`,p.VIDEO),e.hasAuxiliary&&!t.hasAuxiliary&&this.stopDurationItem(`${r}_auxiliary`,p.VIDEO);let s=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(r);s&&(!e.hasAudio&&t.hasAudio&&s.remoteAudioTrack.isSubscribed&&this.addDuractionItem(r,p.AUDIO,"main"),!e.hasVideo&&t.hasVideo&&s.remoteVideoTrack.isSubscribed&&this.addDuractionItem(r,p.VIDEO,"main"),!e.hasAuxiliary&&t.hasAuxiliary&&s.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(r,p.VIDEO,"auxiliary"))}),this._eventMap.forEach((i,e)=>A.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>A.off(e,i,this)),this._eventMap.clear()}handleSubscribed({track:i}){if(!this.hitTest(i.room))return;let{userId:e,streamType:t,kind:r}=i;i.isSubscribed?this.addDuractionItem(e,r,t):this.stopDurationItem(`${e}_${t}`,r)}handleUnsubscribed({track:i}){this.hitTest(i.room)&&this.stopDurationItem(`${i.userId}_${i.streamType}`,i.kind)}isRecording(i){return i.findIndex(e=>e.endTime===0)>=0}addDuractionItem(i,e,t){let r=`${i}_${t}`,s=new td,n=this._durationMap.get(r);n?this.isRecording(n[e])||n[e].push(s):this._durationMap.set(r,{userId:i,type:t,audio:e===p.AUDIO?[s]:[],video:e===p.AUDIO?[]:[s]})}stopDurationItem(i,e){if(this._durationMap.has(i)){let r=this._durationMap.get(i)[e].find(s=>s.endTime===0);r&&r.stop()}}hitTest(i){return this._room===i}getDuration(i,e){return this._durationMap.has(i)?this._durationMap.get(i)[e].reduce((r,s)=>r+s.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},Ff=Dh;var Oh=class{constructor(i){d(this,"_room");d(this,"_renderFreezeMap",new Map);d(this,"_isVideoPlayingEventFiredMap",new Map);d(this,"_dataFreezeMap",new Map);d(this,"_monitorFreezeData",new Map);d(this,"_eventMap",new Map);this._room=i.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(C.LEAVE_SUCCESS,({room:i})=>{this.hitTest(i)&&this.stop()}).set(C.PLAY_TRACK_START,this.onPlayTrackStart).set(C.UNSUBSCRIBE_SUCCESS,({room:i,streamType:e,remotePublishedUser:t})=>{if(!this.hitTest(i))return;let{userId:r}=t,s=`${r}_${e}`;this.stopDataFreeze({key:s,userId:r,type:e})}).set(C.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let{userId:r}=t;if(e.hasVideo&&!t.hasVideo){let s="main",n=`${t.userId}_${s}`;this.stopDataFreeze({key:n,userId:r,type:s})}if(e.hasAuxiliary&&!t.hasAuxiliary){let s="auxiliary",n=`${t.userId}_${s}`;this.stopDataFreeze({key:n,userId:r,type:s})}}).set(C.PLAYER_STATE_CHANGED,({track:i,state:e,reason:t,type:r})=>{if(!(!i.isRemote||!i.room||!this.hitTest(i.room)||r!==p.VIDEO)){if(e==="PLAYING"){let s=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.set(s,!0)}t===p.MUTE?this.onVideoTrackMuted(i):t===p.UNMUTE&&this.onVideoTrackUnmuted(i)}}).set(C.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((i,e)=>A.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>A.off(e,i,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`,s=this._dataFreezeMap.get(r),n=new td;s?s.durationItemList.push(n):this._dataFreezeMap.set(r,{userId:e,type:t,durationItemList:[n],isFreezing(){let a=this.durationItemList[this.durationItemList.length-1];return a&&a.endTime===0}})}onVideoTrackUnmuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`;this.stopDataFreeze({key:r,userId:e,type:t})}onHearBeatReport({room:i,report:e}){this.hitTest(i)&&e.msg_down_stream_info.forEach(t=>{let r=this._room.remotePublishedUserMap.get(t.msg_user_info.str_identifier);if(!r)return;let{userId:s,muteState:n}=r;t.msg_video_status.forEach(a=>{a.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&r.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:a.uint32_video_dec_fps,type:"main"}),a.uint32_video_stream_type===7&&n.hasAuxiliary&&r.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:a.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:i,userId:e,type:t}){let r=this._dataFreezeMap.get(i);if(!r||!r.isFreezing())return;let s=r.durationItemList[r.durationItemList.length-1];s.stop();let n=s.getDuration();n>ea?this._monitorFreezeData.set(i,{userId:e,type:t,duration:n}):r.durationItemList.pop()}getTotalDuration(i){return i.reduce((e,t)=>{let r=t.getDuration();return e+Math.min(r,5e3)},0)}handleRenderFreeze(r){return f(this,arguments,function*({userId:i,fps:e,type:t}){let s=`${i}_${t}`,n=this._renderFreezeMap.get(s);if(e<=2){let a=P();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:a,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(s,{userId:i,type:t,isFreeze:!0,freezeTimeline:[{startTime:a,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let a=n.freezeTimeline.pop();if(a){a.endTime=P();let c=a.endTime-a.startTime;n.freezeTimeline.push(a),n.renderFreezeTotal+=Math.min(5e3,c)}}})}onPlayTrackStart({track:i}){if(!i.isRemote||!this.hitTest(i.room)||i.kind!==p.VIDEO||!i.isRemotePublished)return;let e=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(i){let e={dataFreeze:0,count:0},t=this._dataFreezeMap.get(i);if(t){if(t.isFreezing()){let r=t.durationItemList[t.durationItemList.length-1];r.stop(),r.getDuration()<ea&&t.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(t.durationItemList),e.count=t.durationItemList.length}return e}getRenderFreezeDuration(i){let e=this._renderFreezeMap.get(i),t=0,r=0;if(e)if(!e.isFreeze)t=e.renderFreezeTotal;else{let s=P(),n=e.freezeTimeline[e.freezeTimeline.length-1],a=s-n.startTime;t=e.renderFreezeTotal+Math.min(a,5e3),r=e.freezeTimeline.length}return{renderFreeze:t,count:r}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(i){return this._isVideoPlayingEventFiredMap.has(i)?!this._isVideoPlayingEventFiredMap.get(i):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(i){return i===this._room}destroy(){this.uninstallEvents()}},Hf=Oh;var Gf=He(Qe(),1);var id=class{constructor(i,e,t,r,s=4/3){this.vbMode=i;this.faceDetectorHash=e;this.visionTaskRegistry=t;this.logger=r;d(this,"animationState");d(this,"originalAspect");d(this,"totalOffsetX",0);d(this,"totalOffsetY",0);d(this,"defaultScaleRatio",.1);d(this,"isRecovering",!1);d(this,"boundaryY",280);d(this,"lastActionTime",0);d(this,"restTime",400);this.animationState={current:null,target:null,animating:!1,debounceTimer:null,startTime:0,duration:3e3,debounceTime:150,movementThreshold:30,debounceThreshold:15},this.addEvent(this.vbMode,!!this.faceDetectorHash),this.originalAspect=s||4/3}addEvent(i,e,t){let s=[{key:570704,error:t!=null?t:e?void 0:11},{key:570705,error:t!=null?t:e?void 0:22}][i-1];s&&(e?v.addSuccessEvent({key:s.key}):v.addFailedEvent({key:s.key,error:s.error}))}actionCentering(i){let e=Date.now();if(this.animation(),!this.faceDetectorHash||e-this.lastActionTime<this.restTime||this.animationState.animating)return;let{videoWidth:t,videoHeight:r}=i;this.animationState.debounceThreshold=t/30,this.animationState.movementThreshold=t/20,this.boundaryY=r*.6;try{let s=this.visionTaskRegistry.getResult(this.faceDetectorHash);if(s.detections.length<=0){this.vbMode===1&&this.recoverOriginal(t,r);return}let n=s.detections[0].boundingBox,a=n.originX,c=n.originY,l=n.width,u=n.height;this.vbMode===1?this.dualStageCropping(t,r,a,c,l,u):this.vbMode===2&&this.movingPortrait(t,r,a,c,l,u)}catch(s){this.logger.error(s)}this.lastActionTime=e}calculateBoundary(i,e,t,r){let s,n;return i>e/2?(s=e-t-r,n=t-s):(s=t,n=0),{min:s,offset:n}}calculateTargetPosition(i,e,t,r,s,n,a=.4){let c=i+t/2,l=e+r/2,u,h,{min:m,offset:g}=this.calculateBoundary(c,s,i,t),{min:T,offset:_}=this.calculateBoundary(l,n,e,r);return u=2*m+t,h=2*T+r,u/h>this.originalAspect?(u=h*this.originalAspect,g=c-u/2):(h=u/this.originalAspect,_=l-h/2),t/s>a&&(g=0,_=0,u=s,h=n),g=Math.max(0,Math.min(g,s-u)),_=Math.max(0,Math.min(_,n-h)),{sx:g,sy:_,cropWidth:u,cropHeight:h,timestamp:Date.now()}}processFacePositionCrop(i,e,t){if(!this.animationState.current||!this.animationState.target){let a={sx:0,sy:0,cropWidth:e,cropHeight:t,timestamp:Date.now()};this.animationState.current=a,this.animationState.target=a;return}let r=this.positionDistance(this.animationState.target,i),s=this.positionDistance(this.animationState.current,i),n=this.animationState.current.cropWidth/e;r>this.animationState.debounceThreshold*n&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&s>this.animationState.movementThreshold*n&&(this.animationState.target=i,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}processFacePositionPortrait(i){if(!this.animationState.current||!this.animationState.target){this.animationState.current=D({},i),this.animationState.target=D({},i);return}let e=this.positionDistance(this.animationState.current,i),t=this.positionDistance(this.animationState.target,i);e>this.animationState.debounceThreshold&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&t>this.animationState.movementThreshold&&(this.animationState.current=i,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}animation(){if(!this.animationState.animating)return;let i=Date.now()-this.animationState.startTime,e=Math.min(i/this.animationState.duration,1),t=r=>r<.5?2*r*r:-1+(4-2*r)*r;if(this.animationState.current&&this.animationState.target){let r=(this.animationState.target.sx-this.animationState.current.sx)*t(e);this.animationState.current.sx+=r,this.totalOffsetX+=r;let s=(this.animationState.target.sy-this.animationState.current.sy)*t(e);if(this.animationState.current.sy+=s,this.totalOffsetY+=s,this.animationState.current.cropWidth+=(this.animationState.target.cropWidth-this.animationState.current.cropWidth)*t(e),this.animationState.current.cropHeight+=(this.animationState.target.cropHeight-this.animationState.current.cropHeight)*t(e),this.animationState.current.scaleRatio&&this.animationState.target.scaleRatio&&(this.animationState.current.scaleRatio+=(this.animationState.target.scaleRatio-this.animationState.current.scaleRatio)*t(e)),q(this.animationState.current.scaleOffsetX)&&q(this.animationState.target.scaleOffsetX)&&q(this.animationState.current.scaleOffsetY)&&q(this.animationState.target.scaleOffsetY)){let n=(this.animationState.target.scaleOffsetX-this.animationState.current.scaleOffsetX)*t(e);this.animationState.current.scaleOffsetX+=n;let a=(this.animationState.target.scaleOffsetY-this.animationState.current.scaleOffsetY)*t(e);this.animationState.current.scaleOffsetY+=a}}e>=1&&(this.animationState.animating=!1,this.animationState.current=this.animationState.target,this.isRecovering=!1)}positionDistance(i,e){return Math.sqrt(sr(i.sx-e.sx,2)+sr(i.sy-e.sy,2))}recoverOriginal(i,e){this.animationState.target={sx:0,sy:0,cropWidth:i,cropHeight:e,timestamp:Date.now()},this.animationState.animating=!0,this.animationState.startTime=Date.now(),this.isRecovering=!0}dualStageCropping(i,e,t,r,s,n,a=.3){if(this.isRecovering)return;let c=this.calculateTargetPosition(t,r,s,n,i,e);this.processFacePositionCrop(c,i,e),s*n/c.cropWidth/c.cropHeight>a&&this.recoverOriginal(i,e)}movingPortrait(i,e,t,r,s,n){var c,l,u,h,m,g,T,_,S,R,X,$;let a={sx:t+s/2+this.totalOffsetX,sy:r+n/2+this.totalOffsetY,cropWidth:i,cropHeight:e,scaleRatio:(l=(c=this.animationState.current)==null?void 0:c.scaleRatio)!=null?l:1,scaleOffsetX:(h=(u=this.animationState.current)==null?void 0:u.scaleOffsetX)!=null?h:0,scaleOffsetY:(g=(m=this.animationState.current)==null?void 0:m.scaleOffsetY)!=null?g:0,timestamp:Date.now()};this.animationState.target={sx:i/2,sy:r+n/2,cropWidth:i,cropHeight:e,scaleRatio:(_=(T=this.animationState.target)==null?void 0:T.scaleRatio)!=null?_:1,scaleOffsetX:(R=(S=this.animationState.target)==null?void 0:S.scaleOffsetX)!=null?R:0,scaleOffsetY:($=(X=this.animationState.target)==null?void 0:X.scaleOffsetY)!=null?$:0,timestamp:Date.now()},this.animationState.animating||(this.animationState.target.scaleRatio=Math.sqrt(s*n/i/e/this.defaultScaleRatio),this.animationState.target.scaleOffsetX=-this.animationState.target.scaleRatio/2+.5,this.animationState.target.scaleOffsetY=-this.animationState.target.scaleRatio+1,(this.animationState.target.sy-this.animationState.target.scaleOffsetY*this.animationState.target.cropHeight)/this.animationState.target.scaleRatio<this.boundaryY&&(this.animationState.target.scaleOffsetY=(this.animationState.target.sy-this.boundaryY*this.animationState.target.scaleRatio)/this.animationState.target.cropHeight)),this.processFacePositionPortrait(a)}set aspectRatio(i){this.originalAspect=i}get current(){return this.animationState.current}get offset(){return{offsetX:this.totalOffsetX,offsetY:this.totalOffsetY}}get targetCrop(){return this.animationState.target}};var DS=`#version 300 es
|
|
102
|
+
2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(i=>{vE[`${i}()`]={tips:`Call trtc.${i}`,color:"blue",class:"blue",textColor:"#fff"}});var zU=Object.keys(vE);var Ly=0,Fu,sc=class sc{constructor(t){this.core=t;l(this,"_core");l(this,"log");l(this,"dumpLocalVideoMap",{});l(this,"dumpRemoteVideoMap",{});l(this,"dialog");this._core=t,this.log=t.log.createChild({id:`${this.getAlias()}${++Ly}`}),this.log.info("created")}getName(){return sc.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(t){switch(t){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return y(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(e){return y(this,arguments,function*({forceOpen:t}){O(t)&&(t?(yield this.openDebugDiaLog(),this.addVideoProcessor()):(this.closeDebugDiaLog(),this.removeVideoProcessor()))})}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return y(this,null,function*(){var t;if(!this.dialog)try{if(Fu)yield Fu;else{let e=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((t=window.sessionStorage)==null?void 0:t.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${yE}@${nt}/assets/debug-dialog.js`;Fu=this._core.fileDownloader.loadScript(e),yield Fu}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(e){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(e))}})}closeDebugDiaLog(){this.dialog&&(this.dialog.closeDialog(),this.dialog=null)}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):fh,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):gh,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:t,mediaType:e}){return fh({frame:t,onDump:()=>{if(!e)return;let r=e===2?"sub":"main",o=this.dumpLocalVideoMap[r];o&&(o.data.push(t.data.slice(0)),o.duration>0&&Date.now()-o.startTimestamp>o.duration*1e3&&o.onDumpEnd())}})}decodeVideo({frame:t,track:e}){return gh({frame:t,onDump:()=>{if(!e)return;let r=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];r&&(r.data.push(t.data.slice(0)),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}};l(sc,"Name","Debug"),l(sc,"autoStart",!0);var $u=sc;var CE=i=>{switch(i){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},Bu=class{constructor(t,e,r){l(this,"trackDoneOB");l(this,"startOB");l(this,"stopOB");l(this,"inputFrameCount",0);l(this,"decodedFrameCount",0);l(this,"type","auto");l(this,"config");l(this,"decoder");l(this,"_decodeSink");let{kvStatManager:o,trtc:s}=t;this.config=r.config,this.trackDoneOB=Re(e,le.INIT),this.stopOB=Rt(),this.startOB=Rt(),r.type==="auto"?this.type="webCodecs":this.type=r.type;let n=Rt(),a=u=>{let m=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),be(m,qe(this.stopOB),Ue(()=>{},h=>{e.log.error(h),o.addFailedEvent({key:CE(this.type),error:h}),u>4?this.startOB.error(h):this.startOB.next(u+1)})),be(m,Vr(1),Pp(za))};be(this.startOB,ja(0),ho(a),qe(this.stopOB),Ue(()=>{e.player.setOutput(),n.next("STARTED")},u=>{n.next("FAILED")},()=>{o.addSuccessEvent({key:CE(this.type)}),o.addSuccessEvent({key:504702})}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.startOB.next(0)}close(t){this.stopOB.next(t)}pipe(t){return Oi()(e=>y(this,null,function*(){this._decodeSink=e,e.defer(()=>{var o;(o=this.decoder)==null||o.close()});let{type:r}=this;try{switch(r){case"webCodecs":this.decoder=new AudioDecoder({error:o=>{t.log.error(o),e.error(4)},output:o=>{this.decodedFrameCount++,e.next(o),t.player.write(o)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(o){t.log.error(o),e.error(r==="webCodecs"?2:6)}}))}decodeFrame(t){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:t.data,timestamp:t.timestamp,type:"key"}))}},Uy={type:"object"},nc=class nc{constructor(t){this.core=t;l(this,"log");l(this,"contextMap",new Map);l(this,"decodeProcessorMap",new WeakMap);this.log=t.log.createChild({id:`${this.getAlias()}`})}getAlias(){return nc.Name}getGroup(t){return t.track.userId+t.track.streamType}getName(){return nc.Name}getValidateRule(t){return Uy}start(t){let{track:e}=t;this.decodeProcessorMap.set(e,this.decode(t)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:r,track:o})=>this.decodeProcessorMap.has(o)?this.decodeProcessorMap.get(o)({frame:r,track:o}):r,type:3})}decode(t){return({frame:e,track:r})=>{if(r!==t.track)return e;if(this.contextMap.has(r))return this.contextMap.get(r).decodeFrame(e);let o=new Bu(this.core,r,t);return be(o.trackDoneOB,Vr(1),Ue(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:r})})),this.contextMap.set(r,o),o.decodeFrame(e)}}stop({track:t}){let e=this.contextMap.get(t);e&&(e.close("stop"),this.contextMap.delete(t),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(t){let e=this.contextMap.get(t.track);if(e){if(t.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(t.track,new Bu(this.core,t.track,t))}}};l(nc,"Name","TRTCAudioDecoder");var ac=nc;var Hu=class{constructor(){l(this,"log");this.log=$.createLogger({id:"exp"})}call(t,e){return y(this,null,function*(){return We(this[t])?this[t](e):Promise.reject(new de({code:q.INVALID_PARAMETER,message:Be({key:$e.API_NOT_EXIST,data:{name:t}})}))})}enableAudioFrameEvent(t){return y(this,null,function*(){let{trtcInstance:e,enable:r,userId:o,sampleRate:s=48e3,channelCount:n=1,port:a}=t,{audioManager:u}=e.room,{getPCMAbortCtrlMap:m,audioFrameEventConfigMap:h}=u;if(h.set(o,{enable:r,sampleRate:s,channelCount:n,port:a}),r)if(o==="*")e.room.remotePublishedUserMap.forEach(f=>{if(f.remoteAudioTrack.isAvailable){if(m.get(f.userId))return;let T=u.getPCM(A=>{e.emit(ee.AUDIO_FRAME,A)},f.userId);m.set(f.userId,T)}});else{if(m.get(o))return;let f=u.getPCM(T=>{e.emit(ee.AUDIO_FRAME,T)},o);m.set(o,f)}else if(o==="*")e.room.remotePublishedUserMap.forEach(f=>{if(f.remoteAudioTrack.isSubscribed){let{userId:T}=f,A=m.get(T);A==null||A.abort("disable"),m.delete(T)}});else{let f=m.get(o);f==null||f.abort("disable"),m.delete(o)}})}};K([Xg({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!0,type:"string"},sampleRate:{type:"number",values:[8e3,16e3,32e3,44100,48e3]},channelCount:{type:"number",values:[1,2]},port:{type:"messageport"}}})],Hu.prototype,"enableAudioFrameEvent",1);var NE=new Hu;var DE=mi(yi(),1);var Eh=class extends DE.EventEmitter{constructor(){super();l(this,"states",{});l(this,"permissionChangeHandler");l(this,"log");this.log=$.createLogger({id:"pm"}),this.permissionChangeHandler=()=>{var e,r;this.emit("permission-state-change",{camera:(e=this.states.camera)==null?void 0:e.state,microphone:(r=this.states.microphone)==null?void 0:r.state})}}request(e){return y(this,null,function*(){if(this.log.info(`request ${e.join(", ")}`),e.length===0)return Promise.resolve();(yield navigator.mediaDevices.getUserMedia({video:e.includes("camera"),audio:e.includes("microphone")})).getTracks().forEach(o=>o.stop())})}get(e){return y(this,null,function*(){try{return this.states[e]||(this.states[e]=yield navigator.permissions.query({name:e}),this.states[e].addEventListener("change",this.permissionChangeHandler)),this.log.info(`get ${e} permission state: ${this.states[e].state}`),this.states[e].state}catch(r){return this.log.error(`get ${e} permission failed, error: ${r instanceof Error?r.message:r}`),null}})}destroy(){Object.values(this.states).forEach(e=>{e==null||e.removeEventListener("change",this.permissionChangeHandler)}),this.states={}}},cc=new Eh;var wE=0,dc=new Set,Dt=null;Tl(AE);en.checkStorage();var Se=class Se extends ME.EventEmitter{constructor(e,r){super();l(this,"_room");l(this,"_eventListened",new Set);l(this,"_localVideoTrack",null);l(this,"_localAudioTrack",null);l(this,"_localScreenTrack",null);l(this,"_localScreenAudioTrack",null);l(this,"_localVideoConfig",null);l(this,"_localScreenConfig",null);l(this,"_localAudioConfig",null);l(this,"_remoteVideoConfigMap",new Map);l(this,"_remoteAudioConfigMap",new Map);l(this,"_remoteAudioVolumeMap",new Map);l(this,"_remoteAudioMuteMap",new Map);l(this,"_mediaTrackMap",new WeakMap);l(this,"_log",$.createLogger({id:`t${++wE}`}));l(this,"_plugins",new Map);l(this,"_networkQuality",null);l(this,"_speakerId");l(this,"enterRoomParams");l(this,"_enableAutoSwitchWhenRecapturing",!0);this._room=new e(j({logger:this._log,frameWorkType:Se.frameWorkType},r)),this._room.videoDecodeFallbackType=r.videoDecodeFallback,Xe(r.enableAutoSwitchWhenRecapturing)&&(this._enableAutoSwitchWhenRecapturing=r.enableAutoSwitchWhenRecapturing),this._log.info(`create() ${JSON.stringify(r,(o,s)=>o==="plugins"?s.map(n=>n.Name):s)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(o){return this._room.audioManager.dump(o)}}}),r.plugins&&r.plugins.forEach(o=>{this._use(o,r.assetsPath)}),this._use(Pu,r.assetsPath),this._use(xu,r.assetsPath),this._use(Uu,r.assetsPath),this._use(ac,r.assetsPath),this._use($u),r.enableSEI&&wa&&this._use(Vu),this._room.on("audio-volume",o=>{var s,n;!o.find(a=>a.userId==="")&&this._localAudioTrack&&o.push({userId:"",volume:Math.floor(((s=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?s:this._localAudioTrack.getAudioLevel())*100),floatVolume:(n=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?n:this._localAudioTrack.getInternalAudioLevel()}),r.volumeType===1&&o.forEach(a=>{var m;let u=a.userId===""?this._localAudioTrack:(m=this.room.remotePublishedUserMap.get(a.userId))==null?void 0:m.remoteAudioTrack;u&&(a.volume=u.dbVolume)}),this.emit(ee.AUDIO_VOLUME,{result:o.sort((a,u)=>u.volume-a.volume)})}),this._room.videoManager.on("error",o=>{this._log.error(new oe({code:ne.OPERATION_FAILED,extraCode:5504,message:o.message,originError:o}))}),this._listenEvents(),this._initActiveSpeaker(),TE(this,"trtc")}static create(e){}static _create(e,r){iE();let o=new Se(e,r||{});return dc.add(o),o.__v_skip=!0,o}get room(){return this._room}_listenEvents(){bt(this,this._room).add("peer-join",e=>{let{userId:r}=e;this.emit(ee.REMOTE_USER_ENTER,{userId:r})}).add("peer-leave",e=>{this.emit(ee.REMOTE_USER_EXIT,{userId:e})}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(ee.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(ee.ERROR,oe.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(ee.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let r=pe(j({},e),{uplinkRTT:Math.min(e.uplinkRTT,Xn),downlinkRTT:Math.min(e.downlinkRTT,Xn)});this.emit(ee.NETWORK_QUALITY,r)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{bt(o,o).add("player-state-changed",s=>{let n=pe(j({},s),{userId:e.userId});o.kind===M.VIDEO&&(n.streamType=ii(o.streamType)),this.emit(o.kind===M.AUDIO?ee.AUDIO_PLAY_STATE_CHANGED:ee.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",s=>{s.getCode()===q.PLAY_NOT_ALLOWED&&this.emit(ee.AUTOPLAY_FAILED,{userId:o.userId,mediaType:o.strMediaType,resume:()=>o.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{ct(o)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:r})=>{let{userId:o}=r,s=e.audioAvailable,n=e.videoAvailable,{audioAvailable:a,videoAvailable:u}=r;a||this._remoteAudioConfigMap.delete(o),u||this._removeRemoteVideoConfig(o,"main"),r.hasAuxiliary||this._removeRemoteVideoConfig(o,"sub"),n!==u&&(u?this._onVideoAvailable({userId:o,streamType:"main"}):this._onVideoUnavailable({userId:o,streamType:"main"}),this.emit(u?ee.REMOTE_VIDEO_AVAILABLE:ee.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"main"})),s!==a&&(a?this._onAudioAvailable({userId:o}):this._onAudioUnavailable({userId:o,muteState:r}),this.emit(a?ee.REMOTE_AUDIO_AVAILABLE:ee.REMOTE_AUDIO_UNAVAILABLE,{userId:o})),e.hasAuxiliary!==r.hasAuxiliary&&(r.hasAuxiliary?this._onVideoAvailable({userId:o,streamType:"sub"}):this._onVideoUnavailable({userId:o,streamType:"sub"}),this.emit(r.hasAuxiliary?ee.REMOTE_VIDEO_AVAILABLE:ee.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"sub"}))}).add("sei-message",e=>{this.emit(ee.SEI_MESSAGE,pe(j({},e),{streamType:ii(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(ee.ERROR,new oe({code:ne.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var s,n,a,u,m,h,f;let r={2:"big",3:"small",7:"sub"},o={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((s=e.msg_down_stream_info[0])==null?void 0:s.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((a=this._networkQuality)==null?void 0:a.downlinkRTT)||0,Xn),upLoss:((u=this._networkQuality)==null?void 0:u.uplinkLoss)||0,downLoss:((m=this._networkQuality)==null?void 0:m.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((h=e.msg_up_stream_info.msg_audio_status)==null?void 0:h.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((f=e.msg_up_stream_info.msg_audio_status)==null?void 0:f.uint32_audio_level)||0)/Ri},video:e.msg_up_stream_info.msg_video_status.filter(T=>r[T.uint32_video_stream_type]).map(T=>({bitrate:(T.uint32_video_codec_bitrate||0)/1e3,width:T.uint32_video_width,height:T.uint32_video_height,frameRate:T.uint32_video_enc_fps,videoType:r[T.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(T=>({userId:T.msg_user_info.str_identifier,audio:{bitrate:(T.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(T.msg_audio_status.uint32_audio_level||0)/Ri,point2pointDelay:(T.msg_audio_status.uint32_audio_p2p_delay||0)+(T.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:T.msg_audio_status.uint32_audio_cache_ms||0},video:T.msg_video_status.map(A=>({bitrate:(A.uint32_video_codec_bitrate||0)/1e3,width:A.uint32_video_width,height:A.uint32_video_height,frameRate:A.uint32_video_dec_fps,videoType:r[A.uint32_video_stream_type],point2pointDelay:(A.uint32_video_p2p_delay||0)+(A.uint32_video_cache_ms||0),jitterBufferDelay:A.uint32_video_cache_ms||0,codec:A.uint32_video_codec}))}))};this.emit(ee.STATISTICS,o)}).add("custom-message",e=>{this.emit(ee.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(ee.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(ee.FIRST_VIDEO_FRAME,pe(j({},e),{streamType:ii(e.streamType)}))}).add("audio-frame",e=>{this.emit(ee.AUDIO_FRAME,e)}),bt(this,dt).add("audioInputAdded",e=>{this.emit(ee.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(ee.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(ee.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(ee.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>y(this,null,function*(){if(this.emit(ee.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Dt&&Dt.deviceId===Jn){let r=(yield uo()).find(o=>o.deviceId===Jn);r&&Dt.groupId!==r.groupId&&(Dt=r,this.emit(ee.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}})).add("audioOutputRemoved",e=>y(this,null,function*(){this.emit(ee.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let r=(yield uo())[0];if(!r||!Dt||Dt.groupId===r.groupId)return;let o=Dt.deviceId===e.deviceId,s=Dt.deviceId===Jn&&Dt.deviceId===r.deviceId;(o||s)&&(Dt=r,this.emit(ee.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))})),bt(this,cc).add("permission-state-change",e=>{this.emit(ee.PERMISSION_STATE_CHANGE,e)})}use(e){let r,o;"plugin"in e?(r=e.plugin,o=e.assetsPath):r=e,this._use(r,o)}_use(e,r){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let s=new e(EE.call(this,{TRTC:Se,room:this._room,assetsPath:r,errorModule:{RtcError:oe,ErrorCode:ne,CoreErrorCode:q,ErrorCodeDictionary:_r}}));this._plugins.set(e.Name,s),s.__v_skip=!0,e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return y(this,null,function*(){var u,m;this.enterRoomParams=e;let{scene:r="rtc",enableAutoPlayDialog:o=!0,autoReceiveAudio:s=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!De(e.proxy)&&e.proxy.turnServer&&((m=(u=this._room).setTurnServer)==null||m.call(u,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=o,this._room.autoReceiveAudio=s,this._room.autoReceiveVideo=n,Xe(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let a={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,useH265:e.useH265,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,r,Se.frameWorkType),this._checkTrackToPublish(),lh.start()})}exitRoom(){return y(this,null,function*(){return yield this._exitRoom()})}switchRoom(e){return y(this,null,function*(){if(this.room.isSwitchRoomSupported())try{yield this._room.switchRoom(e)}catch(r){if(r instanceof Hn&&(r.code===q.API_CALL_TIMEOUT||r.code===q.SWITCH_ROOM_FAILED))this._log.warn(`switchRoom ${r.code===q.API_CALL_TIMEOUT?"timeout":"failed"}, fallback to exitRoom() and enterRoom()`),yield this._rejoinRoom(e);else throw r}else yield this._rejoinRoom(e)})}_rejoinRoom(e){return y(this,null,function*(){yield this.exitRoom();let r=j(j({},this.enterRoomParams),e);yield this.enterRoom(r)})}switchRole(e,r){return y(this,null,function*(){r!=null&&r.privateMapKey&&(this._room.privateMapKey=r.privateMapKey),r!=null&&r.latencyLevel&&(this._room.latencyLevel=r.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){ct(this),this.removeAllListeners(),this._room.destroy(),dc.delete(this),dc.size===0&&lh.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var r;return(r=e.destroy)==null?void 0:r.call(e)}),this._plugins.clear(),V.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return y(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:r=!0,mute:o,option:s}=e,n=new ei(this._room.audioManager),a={},u={muted:!0};s&&(O(s.microphoneId)?O(s.audioTrack)||(a.customSource=s.audioTrack):a.deviceId=s.microphoneId,s&&Le(s.captureVolume)&&n.setCaptureVolume(s.captureVolume),O(s.profile)||(De(s.profile)?Uc[s.profile]&&n.setProfile(Uc[s.profile]):n.setProfile(s.profile)),Le(s.earMonitorVolume)&&(u.muted=!(s.earMonitorVolume>0),u.volume=s.earMonitorVolume),O(s.echoCancellation)||(n.profile.echoCancellation=s.echoCancellation),O(s.noiseSuppression)||(n.profile.noiseSuppression=s.noiseSuppression),O(s.autoGainControl)||(n.profile.autoGainControl=s.autoGainControl),Xe(this._enableAutoSwitchWhenRecapturing)&&(n.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),n.on("5",m=>{this.emit(ee.ERROR,new oe({code:ne.DEVICE_ERROR,extraCode:5309,messageParams:{error:m}}))}),n.on("2",m=>{this.emit(ee.DEVICE_CHANGED,{type:"microphone",action:"active",device:m})}),n.on("4",m=>{let h;m.error&&(h=oe.convertFrom(m.error)),this.emit(ee.PUBLISH_STATE_CHANGED,pe(j({},m),{error:h}))}),n.on("6",()=>{this.emit(ee.ERROR,new oe({code:ne.OPERATION_FAILED,extraCode:5506,message:"audio encode failed"}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),O(o)||n.setMute(o),bt(n,n).add("player-state-changed",m=>{this.emit(ee.AUDIO_PLAY_STATE_CHANGED,pe(j({},m),{userId:""}))}),r&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=pe(j({},e),{publish:r}),yield this._updateAudioPlayOption({playOption:u,track:n}),V.emit("113",{userId:"",room:this.room})})}updateLocalAudio(e){return y(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:r,mute:o,option:s}=e,n={};s&&(s.microphoneId?yield this._localAudioTrack.switchDevice(s.microphoneId):O(s.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(s.audioTrack)),O(s.captureVolume)||this._localAudioTrack.setCaptureVolume(s.captureVolume),O(s.earMonitorVolume)||(n.muted=!(s.earMonitorVolume>0),n.volume=s.earMonitorVolume),yield this._localAudioTrack.update3A(s)),this._room.isJoined&&!O(r)&&(r&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!r&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),O(o)||this._localAudioTrack.setMute(o),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),Nr(this._localAudioConfig,e)})}stopLocalAudio(){return y(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),V.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),ct(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null)})}startLocalVideo(){return y(this,arguments,function*(e={publish:!0,view:null,capture:!0}){var f;if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:r,publish:o=!0,capture:s=!0,mute:n,option:a}=e,u=new ar(this._room.videoManager),m={},h={};a&&(Xe(a.avoidCropping)&&(u.avoidCropping=a.avoidCropping),a.cameraId?m.deviceId=a.cameraId:O(a.useFrontCamera)?O(a.videoTrack)||(m.customSource=a.videoTrack):m.facingMode=a.useFrontCamera?M.FACING_MODE_USER:M.FACING_MODE_ENVIRONMENT,O(a.retryWhenExactFailed)||(m.retryWhenExactFailed=a.retryWhenExactFailed),a.qosPreference&&(m.contentHint=rc(a.qosPreference)),O(a.profile)||(De(a.profile)?vr[a.profile]&&u.setProfile(vr[a.profile]):u.setProfile(a.profile)),O(a.fillMode)||(h.objectFit=a.fillMode),O(a.mirror)||(h.mirror=a.mirror),O(a.small)||(O(a.smallMode)||(this._room.smallMode=a.smallMode),Xe(a.small)&&a.small===!1?u.stopSmall():u.updateSmallConfig(Sn(a.small,!0))),O(a.rotation)||u.setRotation(a.rotation),Xe(this._enableAutoSwitchWhenRecapturing)&&(u.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),u.once("first-video-frame",T=>{this.emit(ee.FIRST_VIDEO_FRAME,pe(j({},T),{streamType:ii(T.streamType)}))}),u.on("5",T=>{this.emit(ee.ERROR,new oe({code:ne.DEVICE_ERROR,extraCode:5308,messageParams:{error:T}}))}),u.on("2",T=>{this.emit(ee.DEVICE_CHANGED,{type:"camera",action:"active",device:T})}),u.on("4",T=>{let A;T.error&&(A=oe.convertFrom(T.error)),this.emit(ee.PUBLISH_STATE_CHANGED,pe(j({},T),{error:A}))}),u.on("6",()=>{this.emit(ee.ERROR,new oe({code:ne.OPERATION_FAILED,extraCode:5505,message:"video encode failed"}))}),this._listenOutputTrackChanged(u),s?yield u.capture(m):(f=u.manager)==null||f.changeInput(u),O(n)||(yield u.setMute(n)),bt(u,u).add("player-state-changed",T=>{this.emit(ee.VIDEO_PLAY_STATE_CHANGED,pe(j({},T),{userId:"",streamType:"main"}))}).add("video-size-changed",T=>{this.emit(ee.VIDEO_SIZE_CHANGED,pe(j({},T),{streamType:ii(T.streamType)}))}),o&&this._room.isJoined&&this._room.publish(u).catch(()=>{}),this._localVideoTrack=u,this._localVideoConfig=pe(j({},e),{view:r,publish:o,capture:s}),yield this._updateVideoPlayOption({view:r,playOption:h,track:u})})}updateLocalVideo(e){return y(this,null,function*(){var m,h,f;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:r,publish:o,mute:s,capture:n,option:a}=e,u={};if(this._localVideoConfig.capture)n!==!1?a!=null&&a.cameraId?yield this._localVideoTrack.switchDevice(a==null?void 0:a.cameraId):O(a==null?void 0:a.useFrontCamera)?O(a==null?void 0:a.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(a==null?void 0:a.videoTrack)):yield this._localVideoTrack.switchDevice(a!=null&&a.useFrontCamera?M.FACING_MODE_USER:M.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(n){let T={};T.deviceId=(a==null?void 0:a.cameraId)||((m=this._localVideoConfig.option)==null?void 0:m.cameraId),T.facingMode=a!=null&&a.useFrontCamera||(h=this._localVideoConfig.option)!=null&&h.useFrontCamera?M.FACING_MODE_USER:M.FACING_MODE_ENVIRONMENT,T.customSource=(a==null?void 0:a.videoTrack)||((f=this._localVideoConfig.option)==null?void 0:f.videoTrack),yield this._localVideoTrack.capture(T)}a&&(O(a.profile)||(De(a.profile)?vr[a.profile]&&this._localVideoTrack.setProfile(vr[a.profile]):this._localVideoTrack.setProfile(a.profile),(!a.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(a.cameraId))&&O(a.useFrontCamera)&&(yield this._localVideoTrack.applyProfile())),O(a.fillMode)||(u.objectFit=a.fillMode),O(a.mirror)||(u.mirror=a.mirror),O(a.rotation)||this._localVideoTrack.setRotation(a.rotation),a.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(rc(a.qosPreference)),O(a.small)||(Xe(a.small)&&!a.small?this._localVideoTrack.stopSmall():this._localVideoTrack.updateSmallConfig(Sn(a.small,!0)))),this._room.isJoined&&O(o)&&this._localVideoConfig.publish&&n&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&((o!=null?o:this._localVideoConfig.publish)?this._room.publish(this._localVideoTrack).catch(()=>{}):this._room.unpublish(this._localVideoTrack).catch(()=>{})),O(s)||(yield this._localVideoTrack.setMute(s)),yield this._updateVideoPlayOption({view:r,playOption:u,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),Nr(this._localVideoConfig,e)})}stopLocalVideo(){return y(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),ct(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return y(this,arguments,function*(e={publish:!0,view:null}){var T,A;if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:r=null,publish:o=!0,muteSystemAudio:s,option:n}=e,a=new ti(this._room.videoManager);a.on("4",C=>{let N;C.error&&(N=oe.convertFrom(C.error)),this.emit(ee.PUBLISH_STATE_CHANGED,pe(j({},C),{error:N}))}),a.once("first-video-frame",C=>{this.emit(ee.FIRST_VIDEO_FRAME,pe(j({},C),{streamType:ii(C.streamType)}))}),this._listenOutputTrackChanged(a),e.streamType==="main"&&(a.mediaType=4);let u=null,m={},h={};n&&(O(n.profile)||(De(n.profile)?Vc[n.profile]&&a.setProfile(Vc[n.profile]):a.setProfile(n.profile)),n.systemAudio&&(m.systemAudio=!0,m.echoCancellation=n.echoCancellation,m.noiseSuppression=n.noiseSuppression,m.autoGainControl=n.autoGainControl),O(n.fillMode)||(h.objectFit=n.fillMode),n.videoTrack&&(m.videoTrack=n.videoTrack),n.audioTrack&&(m.audioTrack=n.audioTrack),n.captureElement&&(m.captureElement=n.captureElement),n.preferDisplaySurface&&(m.preferDisplaySurface=n.preferDisplaySurface),n.qosPreference&&(m.contentHint=rc(n.qosPreference)));let f=yield a.capture(m);if(a.mediaTrack.addEventListener(M.ENDED,()=>{this._stopScreenShare(),this.emit(ee.SCREEN_SHARE_STOPPED)}),f.getAudioTracks()[0]){u=new ls(this._room.audioManager);let C=f.getAudioTracks()[0];(T=e.option)!=null&&T.systemAudio&&!((A=e.option)!=null&&A.audioTrack)&&(u.sourceTrack=C),yield u.setInputMediaStreamTrack(C),Xe(s)&&u.mediaTrack&&(u.mediaTrack.enabled=!s),this._speakerId&&u.setAudioOutput(this._speakerId)}if(bt(a,a).add("player-state-changed",C=>{this.emit(ee.VIDEO_PLAY_STATE_CHANGED,pe(j({},C),{userId:"",streamType:"sub"}))}),o&&this._room.isJoined){let C=[a];u&&(C.push(u),this._checkScreenAudioEchoCancellation(a,u)),this._room.publish(...C).catch(()=>{})}this._localScreenTrack=a,this._localScreenAudioTrack=u,this._localScreenConfig=pe(j({},e),{view:r,publish:o}),yield this._updateVideoPlayOption({view:r,playOption:h,track:a})})}updateScreenShare(e){return y(this,null,function*(){var u;if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:r,publish:o,muteSystemAudio:s,option:n}=e,a={};if(n&&(O(n.fillMode)||(a.objectFit=n.fillMode),n.qosPreference)){let m=rc(n.qosPreference);this._localScreenTrack.setContentHint(m)}if(this._room.isJoined&&!O(o)){if(o&&!this._localScreenConfig.publish){let m=[this._localScreenTrack];this._localScreenAudioTrack&&m.push(this._localScreenAudioTrack),this._room.publish(...m).catch(()=>{})}if(this._localScreenConfig.publish&&!o){let m=[this._localScreenTrack];this._localScreenAudioTrack&&m.push(this._localScreenAudioTrack),this._room.unpublish(...m).catch(()=>{})}}(u=this._localScreenAudioTrack)!=null&&u.mediaTrack&&Xe(s)&&(this._localScreenAudioTrack.mediaTrack.enabled=!s),yield this._updateVideoPlayOption({view:r,playOption:a,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),Nr(this._localScreenConfig,e)})}stopScreenShare(){return y(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return y(this,null,function*(){let{view:r,userId:o,streamType:s,option:n}=e,a=`${o}_${s}`;if(this._remoteVideoConfigMap.has(a)){this._log.warn(`remote video has already started. userId:${o}, streamType:${s}`);return}let u=this._room.remotePublishedUserMap.get(o);if(!u)return;let m={},h=s==="main"?u.remoteVideoTrack:u.remoteAuxiliaryTrack;h.on("decode-failed",f=>{this.emit(ee.ERROR,new oe({code:ne.OPERATION_FAILED,extraCode:5507,message:"video decode failed"}))}),h.on("video-size-changed",f=>{this.emit(ee.VIDEO_SIZE_CHANGED,pe(j({},f),{streamType:ii(f.streamType)}))}),this._listenOutputTrackChanged(h),n&&(O(n.fillMode)||(m.objectFit=n.fillMode),O(n.mirror)||(m.mirror=n.mirror),O(n.poster)||(m.poster=n.poster),m.canvasRender=n.canvasRender,s==="main"&&!O(n.small)&&(!u.remoteVideoTrack.isSubscribing&&!u.remoteVideoTrack.isSubscribed&&u.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,h.user))),yield this._room.subscribe(h),yield this._enableVideoDecodeFallback(h,s),yield this._updateVideoPlayOption({view:r,playOption:m,track:h}),this._emitTrackEvent(h),this._remoteVideoConfigMap.set(a,{config:e}),n&&!O(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:h,view:r,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return y(this,null,function*(){var w,x;let{view:r,userId:o,streamType:s,option:n}=e,a=`${o}_${s}`,u=this._remoteVideoConfigMap.get(a);if(!u||!this._room.remotePublishedUserMap.has(o))return;let m={};n&&(O(n.fillMode)||(m.objectFit=n.fillMode),O(n.mirror)||(m.mirror=n.mirror));let h=null,f=this._room.remotePublishedUserMap.get(o);if(s==="main"&&(f!=null&&f.muteState.hasVideo)&&(h=f.remoteVideoTrack),s==="sub"&&(f!=null&&f.muteState.hasAuxiliary)&&(h=f.remoteAuxiliaryTrack),!h)return;let{config:T}=u;s==="main"&&n&&!O(n.small)&&this._room.changeType(n.small,h.user),yield this._updateVideoPlayOption({view:r,playOption:m,track:h,prevConfig:T}),Nr(T,e);let A=O(n==null?void 0:n.receiveWhenViewVisible)?(w=T.option)==null?void 0:w.receiveWhenViewVisible:n.receiveWhenViewVisible,C=O(r)?T.view:r,N=O(n==null?void 0:n.viewRoot)?(x=T.option)==null?void 0:x.viewRoot:n.viewRoot;this._observeView({remoteTrack:h,view:C,receiveWhenViewVisible:A,viewRoot:N})})}stopRemoteVideo(e){return y(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,r=!0){return y(this,null,function*(){let o=[],s=this._room.remotePublishedUserMap.get(e.userId);if(s){let{muteState:n,remoteVideoTrack:a,remoteAuxiliaryTrack:u}=s;e.streamType==="main"&&(a.stop(),n.hasVideo&&o.push(a)),e.streamType==="sub"&&(u.stop(),n.hasAuxiliary&&o.push(u))}for(let n of o)r&&(yield this._room.unsubscribe(n),this._mediaTrackMap.delete(n.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,r){let o=`${e}_${r}`,s=this._remoteVideoConfigMap.get(o);s&&s.observer&&s.observer.disconnect(),this._remoteVideoConfigMap.delete(o)}muteRemoteAudio(e,r){return y(this,null,function*(){this._remoteAudioMuteMap.set(e,r);try{if(e==="*")if(r)yield this._stopRemoteAudio({userId:e});else{let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)s.muteState.hasAudio&&!this._remoteAudioConfigMap.has(s.userId)&&(yield this._startRemoteAudio({userId:s.userId}))}else r?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(o){throw this._remoteAudioMuteMap.delete(e),o}})}setRemoteAudioVolume(e,r){if(e==="*"){this._remoteAudioVolumeMap.set("*",r),this._remoteAudioVolumeMap.forEach((s,n)=>this._remoteAudioVolumeMap.set(n,r));let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)this._remoteAudioVolumeMap.set(s.userId,r),s.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:s.remoteAudioTrack})}else if(e){let o=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,r),o&&o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:o.remoteAudioTrack})}}startPlugin(e,r){return y(this,null,function*(){return e.start(r)})}updatePlugin(e,r){return y(this,null,function*(){return e.update(r)})}stopPlugin(e,r){return y(this,null,function*(){return e.stop(r)})}enableAudioVolumeEvaluation(e=2e3,r=!1){this._room.enableAudioVolumeEvaluation(e,r)}on(e,r,o){if(this.listeners(e).includes(r))return this;if(this._log.debug("on",e),super.on(e,r,o),this._eventListened.add(e),this.listeners(ee.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:s}=this.room.audioManager;s.get("")||s.set("",{enable:!0}),this._localAudioTrack&&this.room.audioManager.handleLocalTrackStarted({userId:"",room:this.room})}return this}emit(e,...r){try{hE.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(r)}`)}catch(o){}return super.emit(e,...r)}off(e,r,o){if(this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners()):super.off(e,r,o),(e===Se.EVENT.AUDIO_FRAME||e==="*")&&this.listeners(Se.EVENT.AUDIO_FRAME).length===0){let{getPCMAbortCtrlMap:s}=this.room.audioManager;s.forEach(n=>{n==null||n.abort("off")}),s.clear()}return this}getAudioTrack(e={userId:"",streamType:"main"}){let r,o=null,s="main",n=!1;if(De(e)?r=e:(r=e.userId,n=e.processed===!0,e.streamType&&(s=e.streamType)),r){let a=this._room.remotePublishedUserMap.get(r);a&&(o=a.remoteAudioTrack)}else o=s==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return o?n&&o.outMediaTrack&&o.outMediaTrack!==o.mediaTrack?o.outMediaTrack.clone():o.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:r="",streamType:o="main",processed:s=!1}=e,n=null;if(r==="")o==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),o==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let a=this._room.remotePublishedUserMap.get(r);a&&(n=o==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack)}return n?s&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:r,streamType:o="main"}=e;if(r){let s=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(s!=null&&s.muteState.hasVideo))return s.remoteVideoTrack.getVideoFrame();if(o==="sub"&&(s!=null&&s.muteState.hasAuxiliary))return s.remoteAuxiliaryTrack.getVideoFrame()}else{if(o==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(o==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var r,o;this._speakerId=e,(r=this._localAudioTrack)==null||r.setAudioOutput(e),(o=this._localScreenAudioTrack)==null||o.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(s=>s.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return y(this,null,function*(){(yield uo()).forEach(o=>{o.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(ee.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}),Dt=o)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return y(this,null,function*(){var a;let{userId:r}=e;if(this._remoteAudioConfigMap.has(r)){this._log.warn(`remote audio has already started. userId:${r}`);return}let o=this._room.remotePublishedUserMap.get(r);if(!o)return;let s={},n=o.remoteAudioTrack;n.on("decode-failed",u=>{this.emit(ee.ERROR,new oe({code:ne.OPERATION_FAILED,extraCode:5506,message:"audio decode failed"}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let u=(a=this._remoteAudioVolumeMap.get(r))!=null?a:this._remoteAudioVolumeMap.get("*"),m=Le(u)?u:100;s.volume=m,this._remoteAudioConfigMap.set(r,e),yield this._room.subscribe(n),be(Re(n,"decode-failed"),qe(Re(n,le.INIT)),Ue(()=>{this.startPlugin(ac.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:s,track:n}),V.emit("115",{userId:r,room:this.room}),n.outMediaTrack&&this.room.audioManager.updateAudioReference({type:"add",audioReference:n.outMediaTrack,refId:`ra-${r}`})}catch(u){throw this._remoteAudioConfigMap.delete(r),u}this._emitTrackEvent(n)})}_stopRemoteAudio(e,r=!0){return y(this,null,function*(){let o=this._room.remotePublishedUserMap.get(e.userId);o&&(o.remoteAudioTrack.stop(),o.muteState.hasAudio&&r&&(yield this._room.unsubscribe(o.remoteAudioTrack)),this._mediaTrackMap.delete(o.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`),V.emit("116",{userId:e.userId,room:this.room}),this.room.audioManager.updateAudioReference({type:"remove",refId:`ra-${e.userId}`})})}_enableVideoDecodeFallback(e,r){let o=this._room.videoDecodeFallbackType;if(!o||!this._plugins.has("TRTCVideoDecoder"))return;e.log.debug("remote video will fall back when decode failed",e.id);let s;be(Re(e,"decode-failed"),qe(Re(e,le.INIT)),Ja(()=>{this._room.downlinkVideoCodec!=="h265"&&this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:o})}),xi(Re(e,"decode-downgrade-state-changed")),Ue(n=>{s=n.state,this.emit(ee.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,pe(j({},n),{streamType:r,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{s==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return y(this,arguments,function*({view:e,playOption:r,track:o,prevConfig:s}){if(o.setMirror(r.mirror),O(e)&&s&&s.view&&!Us(r)){let a=Fs(s.view);a.length>0&&(yield o.play(a,r))}if(!O(e)){let a=Fs(e);a.length>0?yield o.play(a,r):o.stop()}})}_updateAudioPlayOption(s){return y(this,arguments,function*({playOption:e={},track:r,prevConfig:o}){if(!r.isPlayCalled)try{yield r.play(null,e)}catch(n){}if(O(e.muted)||r.setPlayerMute(e.muted),O(e.volume)||r.setAudioVolume(e.volume/100),r instanceof ei&&r.mediaTrack){let n=e.muted===!1&&!O(e.volume)&&e.volume>0?"add":"remove";this.room.audioManager.updateAudioReference({type:n,audioReference:r.mediaTrack,refId:"em"})}else if(r instanceof ki){let n=e.muted?0:e.volume;if(O(n))return;this.room.audioManager.updateAudioReference({type:"updateVolume",refId:`ra-${r.userId}`,volume:e.volume})}})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,r=!0){let o=e.isRemote?e.userId:"";e.outMediaTrack&&(r&&this._mediaTrackMap.get(e.outMediaTrack)===o||(this._mediaTrackMap.set(e.outMediaTrack,o),this.emit(ee.TRACK,{userId:o,streamType:ii(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var r,o,s;let e=[];if((r=this._localAudioConfig)!=null&&r.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(o=this._localVideoConfig)!=null&&o.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(s=this._localScreenConfig)!=null&&s.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack),this._checkScreenAudioEchoCancellation(this._localScreenTrack,this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:r,receiveWhenViewVisible:o=!1,viewRoot:s}){if(O(r))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${ii(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(r===null||ot(r)&&r.length===0||!o){a==null||a.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let m=n.visibleViewMap||new Map,h=-1;(!a||a.root!==s)&&(a==null||a.disconnect(),m.clear(),a=new IntersectionObserver(T=>{T.forEach(A=>{m.set(A.target,A.isIntersecting),e.log.info(`view ${A.target.id} is${A.isIntersecting?"":" not"} visible`)}),clearTimeout(h),h=window.setTimeout(()=>{[...m.values()].find(C=>C)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:s}));let f=new Set(Fs(r));m.forEach((T,A)=>{f.has(A)||(a.unobserve(A),m.delete(A))}),f.forEach(T=>{m.set(T,!0),a.observe(T)}),a.takeRecords().forEach(T=>{m.set(T.target,T.isIntersecting)}),n.visibleViewMap=m,n.observer=a}_exitRoom(){return y(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let r=e.includes("main")?"main":"sub",o=e.split(`_${r}`)[0];o&&this._stopRemoteVideo({userId:o,streamType:r}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),_E(this),this._room.remotePublishedUserMap.forEach(e=>{ct(e.remoteAudioTrack),ct(e.remoteVideoTrack),ct(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return y(this,null,function*(){var e,r;if(this._localScreenTrack){if(this._room.isJoined){let o=[this._localScreenTrack];this._localScreenAudioTrack&&o.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...o).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(((r=this._localScreenAudioTrack.trackSettings)==null?void 0:r.echoCancellation)===!1&&this.stopPlugin("AudioProcessor"),this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),ct(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_checkScreenAudioEchoCancellation(e,r){return y(this,null,function*(){var s,n;if(!e||!r)return;let o=(s=e.trackSettings)==null?void 0:s.displaySurface;if(((n=r.trackSettings)==null?void 0:n.echoCancellation)===!1&&(o==="monitor"||o==="browser"&&e.isShareCurrentTab)){this._log.warn("echoCancellation of screen audio track is disable. Try starting audioProcessor plugin");try{yield this.startPlugin("AudioProcessor",{sdkAppId:Number(this.room.sdkAppId),userId:this._room.userId,userSig:this.room.userSig,isScreenAudioNeedAudioProcess:!0,isLocalAudioNeedAudioProcess:!1})}catch(a){this._log.warn("start audioProcessor plugin failed: ",a)}}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!Dt||ln(Dt))&&(this._initActiveSpeaker(),V.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return y(this,null,function*(){if(Dt&&!ln(Dt))this.emit(ee.DEVICE_CHANGED,{type:"speaker",action:"active",device:Dt});else{let e=yield uo();e[0]&&!ln(e[0])?(Dt=e[0],this.emit(ee.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):V.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let r=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(r===!1||this._room.autoReceiveAudio&&!r)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:r}){if(!this._room.autoReceiveVideo)return;let o=this._room.remotePublishedUserMap.get(e);if(o){let s=r==="main"?o.remoteVideoTrack:o.remoteAuxiliaryTrack,n=[s];this._room.autoReceiveAudio&&o.remoteAudioTrack.isAvailable&&n.push(o.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(s)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:r}){r.hasAudio&&r.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:r}){this._stopRemoteVideo({userId:e,streamType:r},!1).catch(()=>{})}sendSEIMessage(e,r){var s;let o=this._plugins.get("SEI");o&&(o.update({buffer:e,options:pe(j({seiPayloadType:243},r),{small:!!((s=this._localVideoTrack)!=null&&s.small)})}),X.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var r,o;(o=(r=this._room).sendCustomMessage)==null||o.call(r,e),X.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,r){return y(this,null,function*(){return this._log.info(`callExperimentalAPI(${e}, ${JSON.stringify(r)})`),NE.call(e,j({trtcInstance:this},r))})}static setLogLevel(e,r){$.setLogLevel(e),O(r)||(r?$.enableUploadLog():$.disableUploadLog())}static isSupported(){return kd(Se.frameWorkType)}static getPermissions(o){return y(this,arguments,function*({request:e=!0,types:r=["camera","microphone"]}){e&&(yield cc.request(r).catch(a=>{var u;return $.error(`getPermissions request failed, error: ${(u=a==null?void 0:a.message)!=null?u:a}`)}));let[s,n]=yield Promise.all([cc.get("camera"),cc.get("microphone")]);return{camera:s,microphone:n}})}static getCameraList(e=!0){return Kt(e)}static getMicrophoneList(e=!0){return Zt(e)}static getSpeakerList(e=!0){return uo(e)}static setCurrentSpeaker(e){return y(this,null,function*(){if(pt&&(e===Tr.SPEAKER||e===Tr.HEADSET)){let o=yield Se.getMicrophoneList(),s="";if(o.forEach(n=>{n.label===e&&(s=n.deviceId)}),!s)return;dc.forEach(n=>y(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:s}}))}));return}(yield uo()).forEach(o=>{o.deviceId===e&&(dc.forEach(s=>{s._setCurrentSpeaker(e),s.emit(ee.DEVICE_CHANGED,{type:"speaker",action:"active",device:o})}),Dt=o)})})}static _addKVStat({type:e,key:r,value:o,base:s,useUV:n,version:a,max:u}){switch(a&&(Zo.version=a),e){case"count":Zo.addCount({key:r,useUV:n});break;case"enum":Zo.addEnum({key:r,value:o,useUV:n});break;case"number":Zo.addNumber({key:r,value:o,split:s,max:u});break}}};l(Se,"_loggerManager",$),l(Se,"EVENT",ee),l(Se,"ERROR_CODE",ne),l(Se,"TYPE",Tr),l(Se,"frameWorkType",30),K([tt({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],Se.prototype,"use",1),K([Ot(vt.TRTC.enterRoom),To("room",([e],[r])=>(e.roomId||e.strRoomId)===(r.roomId||r.strRoomId)&&e.userId===r.userId&&e.sdkAppId===r.sdkAppId),xe(e=>function(r){return this._log.setUserId(r.userId),this._log.setSdkAppId(r.sdkAppId),e.call(this,r)}),tt()],Se.prototype,"enterRoom",1),K([tt()],Se.prototype,"exitRoom",1),K([Ot(vt.TRTC.switchRoom),tt(),Qd()],Se.prototype,"switchRoom",1),K([Ot(vt.TRTC.switchRole),hs("room",{merge:(e,r)=>r}),tt()],Se.prototype,"switchRole",1),K([tt()],Se.prototype,"destroy",1),K([Ot(vt.TRTC.startLocalAudio),To("audio",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.microphoneId)===((s=r==null?void 0:r.option)==null?void 0:s.microphoneId)}),tt()],Se.prototype,"startLocalAudio",1),K([Ot(vt.TRTC.updateLocalAudio),hs("audio",{debounce:{delay:200,getKey:()=>`${wE}-localAudio`,isNeedToDebounce:e=>{var r;return!O((r=e.option)==null?void 0:r.captureVolume)}}}),tt()],Se.prototype,"updateLocalAudio",1),K([_o("audio"),tt()],Se.prototype,"stopLocalAudio",1),K([Ot(vt.TRTC.startLocalVideo),To("video",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.cameraId)===((s=r==null?void 0:r.option)==null?void 0:s.cameraId)}),tt()],Se.prototype,"startLocalVideo",1),K([Ot(vt.TRTC.updateLocalVideo),hs("video"),tt()],Se.prototype,"updateLocalVideo",1),K([_o("video"),tt()],Se.prototype,"stopLocalVideo",1),K([Ot(vt.TRTC.startScreenShare),To("screen",()=>!0),tt()],Se.prototype,"startScreenShare",1),K([Ot(vt.TRTC.updateScreenShare),hs("screen"),tt()],Se.prototype,"updateScreenShare",1),K([tt()],Se.prototype,"stopScreenShare",1),K([Ot(vt.TRTC.startRemoteVideo),To(e=>`v${e.userId}${e.streamType}`,()=>!0),tt({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Se.prototype,"startRemoteVideo",1),K([Ot(vt.TRTC.updateRemoteVideo),hs(e=>`v${e.userId}${e.streamType}`),tt({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Se.prototype,"updateRemoteVideo",1),K([Ot(vt.TRTC.stopRemoteVideo),xe(e=>function(r){return y(this,null,function*(){if(r.userId==="*"){let o=[];return this._room.remotePublishedUserMap.forEach(s=>{this._remoteVideoConfigMap.has(`${s.userId}_main`)&&o.push(this.stopRemoteVideo({streamType:"main",userId:s.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${s.userId}_sub`)&&o.push(this.stopRemoteVideo({streamType:"sub",userId:s.userId}).catch(()=>{}))}),Promise.all(o)}return e.call(this,r)})}),tt({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Se.prototype,"stopRemoteVideo",1),K([_o(e=>`v${e.userId}${e.streamType}`)],Se.prototype,"_stopRemoteVideo",1),K([Ot(...vt.TRTC.muteRemoteAudio),tt({getRemoteId:e=>e})],Se.prototype,"muteRemoteAudio",1),K([nh(...vt.TRTC.setRemoteAudioVolume),IE(200,e=>e),tt({getRemoteId:e=>e})],Se.prototype,"setRemoteAudioVolume",1),K([Mu("start"),lo(e=>{var r;return(r=e.afterStart)==null?void 0:r.call(e)}),To((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),tt({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Rm[e.getName()],ignoreLog:e=>e.getName()==="Debug",ignoreErrorLog:e=>e.getName()==="AudioProcessor"})],Se.prototype,"startPlugin",1),K([Mu("update"),hs((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r),{merge:(e,r)=>(Nr(e[1],r[1]),e)}),tt({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>vm[e.getName()]})],Se.prototype,"updatePlugin",1),K([Mu("stop"),_o((e,r)=>{if(e.disableRandomCall)return null;let o=e.getGroup(r),s=e.getAlias();return o==="*"?new RegExp(`${s}.*`):s+o}),tt({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Cm[e.getName()]})],Se.prototype,"stopPlugin",1),K([nh(...vt.TRTC.enableAudioVolumeEvaluation)],Se.prototype,"enableAudioVolumeEvaluation",1),K([tt()],Se.prototype,"getVideoSnapshot",1),K([tt()],Se.prototype,"_setCurrentSpeaker",1),K([To(e=>`a${e.userId}`,()=>!0)],Se.prototype,"_startRemoteAudio",1),K([xe(e=>function(r){return y(this,null,function*(){return r.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(o=>this._stopRemoteAudio(pe(j({},r),{userId:o.userId})).catch(()=>{}))):e.call(this,r)})}),_o(e=>`a${e.userId}`)],Se.prototype,"_stopRemoteAudio",1),K([_o("room")],Se.prototype,"_exitRoom",1),K([_o("screen")],Se.prototype,"_stopScreenShare",1),K([Ot(...vt.TRTC.sendSEIMessage),Kp({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],Se.prototype,"sendSEIMessage",1),K([Ot(vt.TRTC.sendCustomMessage),Kp({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],Se.prototype,"sendCustomMessage",1),K([Ot(vt.TRTC.create)],Se,"_create",1);var Th=Se,vn=Th;var Wu=class{constructor(t,e){l(this,"_flag");l(this,"terminalType");l(this,"userId");l(this,"tinyId");l(this,"role");l(this,"remoteAudioTrack");l(this,"remoteVideoTrack");l(this,"remoteAuxiliaryTrack");this.userId=e.userId||"",this.tinyId=e.tinyId||"",this.role=e.role||"audience",this.terminalType=e.terminalType,this.remoteAudioTrack=new ki(t,this),this.remoteVideoTrack=new fo(t,this),this.remoteAuxiliaryTrack=new _u(t,this),this.flag=e.flag||0}get subscribeState(){let t={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?t.smallVideo=!0:t.video=!0),this.remoteAudioTrack.isSubscribed&&(t.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(t.auxiliary=!0),t}get muteState(){return Ho(this.flag,this.userId)}get flag(){return this._flag}set flag(t){if(t===this._flag)return;let e,r=this.muteState;this._flag=t;let o=this.muteState;for(e in o)r[e]!=o[e]&&console.log(this.userId,e,r[e],"->",o[e]);this.remoteAudioTrack.onFlagChanged(),this.remoteVideoTrack.onFlagChanged(),this.remoteAuxiliaryTrack.onFlagChanged()}};var _h=class{constructor(){l(this,"_set",new Set);V.on(F.LEAVE_SUCCESS,this.delete,this),V.on(F.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess,this)}add({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,e||t.roomId,t.sdkAppId,t.useStringRoomId);this._set.add(r)}delete({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,t.roomId||e,t.sdkAppId,t.useStringRoomId);this._set.delete(r)}getKey(t,e,r,o){return`${r}_${e}_${t}_${o}`}isJoined({userId:t,roomId:e,sdkAppId:r,room:o}){return o.scene==="rtc"?!1:this._set.has(this.getKey(t,e,r,o.useStringRoomId))}handleSwitchRoomSuccess({room:t,currentRoomId:e,targetRoomId:r}){t.scene!=="rtc"&&(this._set.delete(this.getKey(t.userId,e,t.sdkAppId,t.useStringRoomId)),this._set.add(this.getKey(t.userId,r,t.sdkAppId,t.useStringRoomId)))}};function Vy(){return y(this,null,function*(){let i,t;try{let A=yield Zt();i=A&&A.length}catch(A){}try{let A=yield Kt();t=A&&A.length}catch(A){}let e={microphone:i,camera:t},{isH264EncodeSupported:r,isVp8EncodeSupported:o,isH264DecodeSupported:s,isVp8DecodeSupported:n,isH265EncodeSupported:a,isH265DecodeSupported:u}=this.checkSystemResult.detail,m=co.basis(),h={webRTC:m.isWebRTCSupported,getUserMedia:m.isGetUserMediaSupported,webSocket:m.isWebSocketsSupported,screenShare:m.isScreenShareSupported,webAudio:m.isWebAudioSupported,h264Encode:r,h264Decode:s,vp8Encode:o,vp8Decode:n,h265Encode:a,h265Decode:u},f={browser:m.browser,os:m.os,trtc:h,devices:e},T={isWebCodecSupported:m.isWebCodecSupported,isMediaSessionSupported:m.isMediaSessionSupported,isWebTransportSupported:m.isWebTransportSupported};je.uploadEvent({log:`trtcstats-${JSON.stringify(f)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(f)}`),je.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(T)}`,userId:this.userId}),Um()})}function OE(){return xe(i=>{let t=new _h;return function(e,r,o){return y(this,null,function*(){let s=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=r,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new de({code:q.INVALID_OPERATION,message:Be({key:$e.INVALID_JOIN})});if(this.checkDestroy(),t.isJoined({userId:this.userId,roomId:s,sdkAppId:this.sdkAppId,room:this}))throw new de({code:q.INVALID_OPERATION,message:Be({key:$e.REPEAT_JOIN,data:this.userId})});t.add({room:this,roomId:s}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${s} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),V.emit(F.JOIN_START,{room:this,roomId:s,params:e});let n=zr.getEnv();n||(n=pi.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(Fc.OLD_CLOUD_LADDER)?n=pi.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(Fc.WEBRTC)&&(n=pi.WEBRTC))),je.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:s}),co.checkSystemRequirementsInternal(o).then(a=>{this.checkSystemResult=a,Vy.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!zr.getEnv()&&(yield this.schedule(e,o));let a=yield i.call(this,e,r,o);return this.roomId=s,this._joinedTimestamp=zr.performanceNow(),V.emit(F.JOIN_SUCCESS,{room:this}),o===30&&!e.component&&je.uploadEvent({log:`stat-conv-${Number(xr)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw t.delete({room:this,roomId:s}),V.emit(F.JOIN_FAILED,{room:this,error:a}),a}})}})}var xE=()=>xe(i=>function(...t){return y(this,null,function*(){V.emit(F.LEAVE_START,{room:this}),yield i.call(this,...t),V.emit(F.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function kE(){return xe(i=>function(...t){return y(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(t=t.filter(r=>r.outMediaTrack&&r.state==="ready"),!t.length))return;V.emit("61",{room:this});let e=i.apply(this,t);return Promise.all(t.map(r=>r.publish(this,e)))})})}function PE(){return xe(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>r.unpublish()),e})}function LE(){return xe(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>!r.isSubscribed&&r.subscribe(e)),e})}function Fy({fn:i,context:t}){return function(...e){try{let r=i.apply(t,e);return ro(r)?r.catch(o=>$.error(`${i.name}() error observed ${o}`)):r}catch(r){$.error(`${i.name}() error observed ${r}`)}}}var Gu=class{constructor(t){l(this,"_frameWorkType");l(this,"_component");l(this,"_language");l(this,"connectionType");l(this,"_room");l(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});l(this,"_keyPrefix");l(this,"_log");l(this,"_intervalId");l(this,"_firstPublishedUserList");l(this,"_networkQuality");l(this,"_basicInfo");l(this,"_pathJoinRoom");l(this,"_pathLeaveRoom");l(this,"_pathMainVideoMap");l(this,"_pathMainAudioMap");l(this,"_pathAuxiliaryMap");l(this,"_remoteStreamStatMap");l(this,"_localStreamStat");l(this,"_eventMap",new Map);l(this,"_captureCostSum",0);l(this,"_captureCostCount",0);l(this,"isDestroyed",!1);this._frameWorkType=t.frameWorkType||30,this._component=t.component||0,this.connectionType=t.connectionType||1,this._language=t.language||0,this._room=t.room,this._keyPrefix="key_point",this._log=$.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&We(this[e])&&(this[e]=Fy({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:nt,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,qo().then(t=>{this._basicInfo.string_os_version=Jo(),t?this._basicInfo.string_device_name=t.mobile?t.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(t,e){return this._eventMap.set(t,e),V.on(t,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(F.JOIN_START,this.handleJoinStart).addEvent(F.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(F.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(F.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(F.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(F.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(F.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(F.JOIN_FAILED,this.handleJoinFailed).addEvent(F.LEAVE_START,this.handleLeaveStart).addEvent(F.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(F.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(F.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(F.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(F.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(F.PUBLISH_START,this.handlePublishStart).addEvent(F.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(F.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(F.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(F.PLAY_TRACK_START,this.handlePlayStart).addEvent(F.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(F.PLAYER_STATE_CHANGED,({track:t,state:e,type:r})=>{!t.isRemote||!this.hitTest(t.room)||e==="PLAYING"&&(r===M.AUDIO?this.handleAudioPlaying(t):this.handleVideoPlaying(t))}).addEvent(F.SWITCH_ROOM_START,this.handleSwitchRoomStart).addEvent(F.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess).addEvent(F.SWITCH_ROOM_FAILED,this.handleSwitchRoomFailed).addEvent(F.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(F.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(F.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(F.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let o=e.hasAudio||e.hasVideo||e.hasSmall,s=e.hasAuxiliary,n=r.hasAudio||r.hasVideo||r.hasSmall,a=r.hasAuxiliary;!o&&n&&this.handleRemoteStreamAdded(r.userId,"main"),!s&&a&&this.handleRemoteStreamAdded(r.userId,"auxiliary")}).addEvent(F.SINGLE_CONNECTION_STAT,({room:t,stat:e})=>{this.hitTest(t)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((t,e)=>V.off(e,t)),this._eventMap.clear()}destroy(){this.uninstallEvents(),ft.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(t){this.hitTest(t.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),t.params&&(O(t.params.frameWorkType)||(this._frameWorkType=t.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),O(t.params.component)||(this._component=t.params.component,this._basicInfo.uint32_component=this._component),O(t.params.language)||(this._language=t.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:t,detailCost:e}){if(this.hitTest(t)&&e){let{totalCost:r,local:o,dns:s,tcp:n,tls:a,request:u,response:m}=e;this._pathJoinRoom.int32_schedule_cost=r,this._pathJoinRoom.int32_schedule_local=o,this._pathJoinRoom.int32_schedule_dns=s,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=a,this._pathJoinRoom.int32_schedule_request=u,this._pathJoinRoom.int32_schedule_response=m}}handleSignalConnectionStart({room:t}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:t,error:e}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof de?Number(e.getExtraCode()||e.getCode()):q.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=t.code,t.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=t.room.getSignalInfo())}handleJoinFailed({room:t,error:e}){this.hitTest(t)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=t.publishedUserList||[])}handleSendFirstVideoFrame({room:t}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(t){this.hitTest(t.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(t){this.hitTest(t.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(t){this.hitTest(t.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleSwitchRoomStart(t){if(this.hitTest(t.room)){let e=Date.now();this.report().then(()=>{this._pathJoinRoom.uint64_start_time=e,this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=e})}}handleSwitchRoomSuccess({room:t}){if(this.hitTest(t)&&this._pathJoinRoom.uint64_end_time===0){let e=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=e,this._pathJoinRoom.uint64_end_time=e,this._pathJoinRoom.int32_end_ret}}handleSwitchRoomFailed({room:t,error:e}){if(this.hitTest(t)){let r=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=r,this._pathJoinRoom.uint64_end_time=r,e&&(this._pathJoinRoom.int32_end_ret=e instanceof de?Number(e.getExtraCode()||e.getCode()):q.UNKNOWN)}}handleRemoteStreamAdded(t,e){var o;let r=`${t}_${e}`;if(!this._remoteStreamStatMap.has(r)){let s={userId:t,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:pe(j({},$y),{msg_user_info:new uc({userId:t,tinyId:(o=this._room.remotePublishedUserMap.get(t))==null?void 0:o.tinyId,role:20})})};s.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(r,s)}}handleSubscribeStart({room:t,remotePublishedUser:e,streamType:r,subscribeState:o}){if(!this.hitTest(t))return;let{userId:s,tinyId:n,role:a}=e,u=new uc({userId:s,tinyId:n,role:a==="anchor"?20:21}),m=Date.now(),h=`${s}_${r}`,f=this._remoteStreamStatMap.get(h);f&&f.subscribeStartTime===0&&(f.subscribeStartTime=m),r==="main"?(e.muteState.hasVideo&&(o.video||o.smallVideo)&&!this._pathMainVideoMap.has(h)&&this._pathMainVideoMap.set(h,{statsToReport:{msg_user_info:u,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:s,sendSubscribeCMDTime:m}),e.muteState.hasAudio&&o.audio&&!this._pathMainAudioMap.has(h)&&this._pathMainAudioMap.set(h,{statsToReport:{msg_user_info:u,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:s,sendSubscribeCMDTime:m})):e.muteState.hasAuxiliary&&o.auxiliary&&!this._pathAuxiliaryMap.has(h)&&this._pathAuxiliaryMap.set(h,{sendSubscribeCMDTime:m})}handleSubscribed({room:t,remotePublishedUser:e,streamType:r}){if(this.hitTest(t)){let o=`${e.userId}_${r}`,s=this._remoteStreamStatMap.get(o);s&&s.subscribedTime===0&&(s.subscribedTime=Date.now())}}handlePlayStart({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._remoteStreamStatMap.get(e);(r==null?void 0:r.playStreamTime)===0&&(r.playStreamTime=Date.now())}handleVideoLoadedData({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._pathMainVideoMap.get(e);r&&r.statsToReport.uint64_combine_first_frame_time===0&&(r.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(t){let e=`${t.userId}_${t.streamType}`,r=Date.now(),o=this._pathMainVideoMap.get(e),s=this._remoteStreamStatMap.get(e);if(s){let{statsToReport:n}=s;if(!n.uint32_video_render_first&&t.streamType==="main"?this.hasVideoFlag(t.userId):this.hasAuxFlag(t.userId)){let a=r-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=a,X.addNumber({key:516820,value:a})}}(o==null?void 0:o.statsToReport.uint64_render_first_frame_time)===0&&(o.statsToReport.uint64_render_first_frame_time=r)}handleAudioPlaying(t){let e=`${t.userId}_${t.streamType}`,r=this._pathMainAudioMap.get(e);r&&r.statsToReport.uint64_play_first_frame_time===0&&(r.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(t){this.hitTest(t.room)&&(this._networkQuality.totalUplinkLoss+=t.uplink.loss,this._networkQuality.totalUplinkRTT+=t.uplink.rtt,this._networkQuality.count++,t.downlinks.forEach(({rtt:e,loss:r,userId:o,videoDelay:s,audioDelay:n})=>{let a=this._networkQuality.totalDownlinkRTTAndLossMap.get(o);if(a)a.totalRTT+=e,a.totalLoss+=r,s&&(a.totalVideoDelay=(a.totalVideoDelay||0)+s,a.videoDelayCount=(a.videoDelayCount||0)+1),n&&(a.totalAudioDelay=(a.totalAudioDelay||0)+n,a.audioDelayCount=(a.audioDelayCount||0)+1),a.count++;else{let u,m,h,f;s&&(m=s,h=1),n&&(u=n,f=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(o,{totalRTT:e,totalLoss:r,count:1,totalAudioDelay:u,totalVideoDelay:m,audioDelayCount:f,videoDelayCount:h})}}))}handleHeartbeatStats(t){if(this.hitTest(t.room)){let{msg_device_info:e,msg_up_stream_info:r,msg_down_stream_info:o}=t.report;if(r.msg_video_status[0]){let{uint32_video_codec_bitrate:s,uint32_video_enc_fps:n,uint32_video_width:a,uint32_video_height:u}=r.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=s,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=a,this._localStreamStat.totalVideoHeight+=u,this._localStreamStat.videoCount++}if(r.msg_audio_status){let{uint32_audio_level:s}=r.msg_audio_status;Math.floor(s/Ri*100)>0&&(this._localStreamStat.totalAudioLevel+=s/Ri,this._localStreamStat.audioLevelCount++)}o.forEach(s=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:u}=s,m=n.str_identifier,h=this._room.remotePublishedUserMap.get(m);if(u.forEach(f=>{let T=f.uint32_video_stream_type===2,A=f.uint32_video_stream_type===7,C=`${m}_${T?"main":"auxiliary"}`,N=this._remoteStreamStatMap.get(C);if(N&&(T&&(h!=null&&h.remoteVideoTrack.isSubscribed)||A&&(h!=null&&h.remoteAuxiliaryTrack))){N.totalVideoFPS+=f.uint32_video_receive_fps,N.totalVideoBitrate+=f.uint32_video_codec_bitrate,N.videoCount++,N.statsToReport.uint32_video_width===0&&(N.statsToReport.uint32_video_width=f.uint32_video_width),N.statsToReport.uint32_video_height===0&&(N.statsToReport.uint32_video_height=f.uint32_video_height);let w=T?h.remoteVideoTrack:h.remoteAuxiliaryTrack;w.stat.jitterBufferDelay&&(N.videoJitterBufferDelay=w.stat.jitterBufferDelay),w.stat.framesReceived&&(N.statsToReport.uint32_video_consume_render_rate=Math.floor(w.stat.framesDecoded/w.stat.framesReceived*eo(10,6)))}}),!Us(a)){let f=`${m}_main`,T=this._remoteStreamStatMap.get(f);this._remoteStreamStatMap.has(f)&&T&&h!=null&&h.remoteAudioTrack.isSubscribed&&(T.totalAudioBitrate+=a.uint32_audio_codec_bitrate,T.audioCount++,h.remoteAudioTrack.stat.jitterBufferDelay&&(T.audioJitterBufferDelay=h.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/Ri*100)>0&&(T.totalAudioLevel+=a.uint32_audio_level/Ri,T.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:t}){this.hitTest(t)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:t}){t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:t}){t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:t,error:e}){let o={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof de?e.getExtraCode()||e.getCode():q.UNKNOWN);t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=o,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=o,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&ws)>=0}hasAudioFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&Ms)>=0}hasAuxFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&zn)>=0}hitTest(t){return t===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let t=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=t<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((t,e)=>{let{userId:r}=t,o=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(o){let{totalLoss:h,count:f,audioDelayCount:T,videoDelayCount:A,totalAudioDelay:C,totalVideoDelay:N}=o;t.statsToReport.uint32_avg_down_loss=Math.floor(h/f),T&&C&&(t.statsToReport.uint32_audio_network_p2p_delay=Math.floor(C/T),t.audioJitterBufferDelay&&(t.statsToReport.uint32_p2p_delay=Math.floor(t.statsToReport.uint32_audio_network_p2p_delay+t.audioJitterBufferDelay))),A&&N&&(t.statsToReport.uint32_video_network_p2p_delay=Math.floor(N/A))}t.videoCount>0&&(t.statsToReport.uint32_video_avg_fps=Math.floor(t.totalVideoFPS/t.videoCount),t.statsToReport.uint32_video_avg_bitrate=Math.floor(t.totalVideoBitrate/t.videoCount)),t.audioCount>0&&(t.statsToReport.uint32_audio_recv_bitrate=t.statsToReport.uint32_audio_bitrate=Math.floor(t.totalAudioBitrate/t.audioCount)),t.audioLevelCount>0&&(t.statsToReport.uint32_audio_play_db=Math.floor(t.totalAudioLevel/t.audioLevelCount*100));let{callDurationCalculator:s}=this._room;s&&(t.statsToReport.uint32_audio_play_time=s.getDuration(e,M.AUDIO),t.statsToReport.uint32_video_play_time=s.getDuration(e,M.VIDEO)),t.statsToReport.uint32_video_render_first&&(t.statsToReport.uint32_video_render_first=Math.min(t.statsToReport.uint32_video_render_first,gs));let{badCaseDetector:n}=this._room,{dataFreeze:a,count:u}=n.getDataFreezeDuration(e),{renderFreeze:m}=n.getRenderFreezeDuration(e);t.statsToReport.uint32_video_block_count=u,t.statsToReport.uint32_video_block_time=Math.min(a,t.statsToReport.uint32_video_play_time),t.statsToReport.uint32_video_external_block_time=Math.min(m,t.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&t.statsToReport.uint32_video_avg_fps===0?t.statsToReport.uint32_video_black_screen_subjective=1:t.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((t,e)=>{if(!this.hasAudioFlag(t.userId)){this._pathMainAudioMap.delete(e);return}t.statsToReport.uint64_play_first_frame_time-t.statsToReport.uint64_start_enter_time>gs&&(t.statsToReport.uint64_play_first_frame_time=t.statsToReport.uint64_start_enter_time+gs)}),this._pathMainVideoMap.forEach((t,e)=>{if(!this.hasVideoFlag(t.userId)){this._pathMainVideoMap.delete(e);return}t.statsToReport.uint64_render_first_frame_time-t.statsToReport.uint64_start_enter_time>gs&&(t.statsToReport.uint64_render_first_frame_time=t.statsToReport.uint64_start_enter_time+gs)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>gs&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+gs)}getReportData(){this._basicInfo.uint32_networkType=Jc();let t={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new uc({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Vs(this._signalInfo.relayIp),uint32_client_ip:Vs(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*eo(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:Vs(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return ra(t),t}report(){return y(this,null,function*(){try{this.prepareReport();let t=this.getReportData();yield this.upload(t),this.initData()}catch(t){this._log.warn(t)}finally{this.isDestroyed&&(this._room=null)}})}upload(t){return y(this,null,function*(){if(t.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),r=no.enable?Ti(t,2001,e):yield $l(t),o=r instanceof ArrayBuffer,s=`${Ei(e,to.KEY_POINT)}&gzip=${+o}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,r));let a=[this.uploadKVStat(X),this.uploadKVStat(Zo)];n||a.push(_i({url:s,body:r,priority:"low"})),yield Promise.all(a)})}setConnectionType(t){this.connectionType=t,this._basicInfo.uint32_connection_type=t}uploadKVStat(t){return y(this,null,function*(){let e=t.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=pe(j({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let r=no.enable?Ti(e,2003,this._room.sdkAppId):yield $l(e),o=r instanceof ArrayBuffer,s=`${Ei(+this._room.sdkAppId,to.KV_STAT)}&gzip=${+o}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,r)),n||_i({url:s,body:r})})}};K([es({settings:{timeout:500,retries:3}})],Gu.prototype,"upload",1);var gs=5e3,$y={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},uc=class{constructor(t){l(this,"str_identifier");l(this,"str_tinyid");l(this,"uint32_role");this.str_identifier=String(t.userId),this.str_tinyid=String(t.tinyId||0),this.uint32_role=t.role}},UE=Gu;var Ih=class{constructor(){l(this,"_startTime");l(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=Te())}stop(){this._endTime===0&&(this._endTime=Te())}getDuration(){return this._endTime===0?Te()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},ju=Ih;var Sh=class{constructor(t){l(this,"_room",null);l(this,"_durationMap");l(this,"_eventMap",new Map);this._room=t.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(F.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(F.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(F.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{var n;let{userId:o}=r;if(!this.hitTest(t))return;e.hasAudio&&!r.hasAudio&&this.stopDurationItem(`${o}_main`,M.AUDIO),e.hasVideo&&!r.hasVideo&&this.stopDurationItem(`${o}_main`,M.VIDEO),e.hasAuxiliary&&!r.hasAuxiliary&&this.stopDurationItem(`${o}_auxiliary`,M.VIDEO);let s=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(o);s&&(!e.hasAudio&&r.hasAudio&&s.remoteAudioTrack.isSubscribed&&this.addDuractionItem(o,M.AUDIO,"main"),!e.hasVideo&&r.hasVideo&&s.remoteVideoTrack.isSubscribed&&this.addDuractionItem(o,M.VIDEO,"main"),!e.hasAuxiliary&&r.hasAuxiliary&&s.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(o,M.VIDEO,"auxiliary"))}),this._eventMap.forEach((t,e)=>V.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>V.off(e,t,this)),this._eventMap.clear()}handleSubscribed({track:t}){if(!this.hitTest(t.room))return;let{userId:e,streamType:r,kind:o}=t;t.isSubscribed?this.addDuractionItem(e,o,r):this.stopDurationItem(`${e}_${r}`,o)}handleUnsubscribed({track:t}){this.hitTest(t.room)&&this.stopDurationItem(`${t.userId}_${t.streamType}`,t.kind)}isRecording(t){return t.findIndex(e=>e.endTime===0)>=0}addDuractionItem(t,e,r){let o=`${t}_${r}`,s=new ju,n=this._durationMap.get(o);n?this.isRecording(n[e])||n[e].push(s):this._durationMap.set(o,{userId:t,type:r,audio:e===M.AUDIO?[s]:[],video:e===M.AUDIO?[]:[s]})}stopDurationItem(t,e){if(this._durationMap.has(t)){let o=this._durationMap.get(t)[e].find(s=>s.endTime===0);o&&o.stop()}}hitTest(t){return this._room===t}getDuration(t,e){return this._durationMap.has(t)?this._durationMap.get(t)[e].reduce((o,s)=>o+s.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},VE=Sh;var yh=class{constructor(t){l(this,"_room");l(this,"_renderFreezeMap",new Map);l(this,"_isVideoPlayingEventFiredMap",new Map);l(this,"_dataFreezeMap",new Map);l(this,"_monitorFreezeData",new Map);l(this,"_eventMap",new Map);this._room=t.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(F.LEAVE_SUCCESS,({room:t})=>{this.hitTest(t)&&this.stop()}).set(F.PLAY_TRACK_START,this.onPlayTrackStart).set(F.UNSUBSCRIBE_SUCCESS,({room:t,streamType:e,remotePublishedUser:r})=>{if(!this.hitTest(t))return;let{userId:o}=r,s=`${o}_${e}`;this.stopDataFreeze({key:s,userId:o,type:e})}).set(F.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let{userId:o}=r;if(e.hasVideo&&!r.hasVideo){let s="main",n=`${r.userId}_${s}`;this.stopDataFreeze({key:n,userId:o,type:s})}if(e.hasAuxiliary&&!r.hasAuxiliary){let s="auxiliary",n=`${r.userId}_${s}`;this.stopDataFreeze({key:n,userId:o,type:s})}}).set(F.PLAYER_STATE_CHANGED,({track:t,state:e,reason:r,type:o})=>{if(!(!t.isRemote||!t.room||!this.hitTest(t.room)||o!==M.VIDEO)){if(e==="PLAYING"){let s=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.set(s,!0)}r===M.MUTE?this.onVideoTrackMuted(t):r===M.UNMUTE&&this.onVideoTrackUnmuted(t)}}).set(F.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((t,e)=>V.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>V.off(e,t,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`,s=this._dataFreezeMap.get(o),n=new ju;s?s.durationItemList.push(n):this._dataFreezeMap.set(o,{userId:e,type:r,durationItemList:[n],isFreezing(){let a=this.durationItemList[this.durationItemList.length-1];return a&&a.endTime===0}})}onVideoTrackUnmuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`;this.stopDataFreeze({key:o,userId:e,type:r})}onHearBeatReport({room:t,report:e}){this.hitTest(t)&&e.msg_down_stream_info.forEach(r=>{let o=this._room.remotePublishedUserMap.get(r.msg_user_info.str_identifier);if(!o)return;let{userId:s,muteState:n}=o;r.msg_video_status.forEach(a=>{a.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&o.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:a.uint32_video_dec_fps,type:"main"}),a.uint32_video_stream_type===7&&n.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:a.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:t,userId:e,type:r}){let o=this._dataFreezeMap.get(t);if(!o||!o.isFreezing())return;let s=o.durationItemList[o.durationItemList.length-1];s.stop();let n=s.getDuration();n>Hc?this._monitorFreezeData.set(t,{userId:e,type:r,duration:n}):o.durationItemList.pop()}getTotalDuration(t){return t.reduce((e,r)=>{let o=r.getDuration();return e+Math.min(o,5e3)},0)}handleRenderFreeze(o){return y(this,arguments,function*({userId:t,fps:e,type:r}){let s=`${t}_${r}`,n=this._renderFreezeMap.get(s);if(e<=2){let a=Te();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:a,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(s,{userId:t,type:r,isFreeze:!0,freezeTimeline:[{startTime:a,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let a=n.freezeTimeline.pop();if(a){a.endTime=Te();let u=a.endTime-a.startTime;n.freezeTimeline.push(a),n.renderFreezeTotal+=Math.min(5e3,u)}}})}onPlayTrackStart({track:t}){if(!t.isRemote||!this.hitTest(t.room)||t.kind!==M.VIDEO||!t.isRemotePublished)return;let e=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(t){let e={dataFreeze:0,count:0},r=this._dataFreezeMap.get(t);if(r){if(r.isFreezing()){let o=r.durationItemList[r.durationItemList.length-1];o.stop(),o.getDuration()<Hc&&r.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(r.durationItemList),e.count=r.durationItemList.length}return e}getRenderFreezeDuration(t){let e=this._renderFreezeMap.get(t),r=0,o=0;if(e)if(!e.isFreeze)r=e.renderFreezeTotal;else{let s=Te(),n=e.freezeTimeline[e.freezeTimeline.length-1],a=s-n.startTime;r=e.renderFreezeTotal+Math.min(a,5e3),o=e.freezeTimeline.length}return{renderFreeze:r,count:o}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(t){return this._isVideoPlayingEventFiredMap.has(t)?!this._isVideoPlayingEventFiredMap.get(t):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(t){return t===this._room}destroy(){this.uninstallEvents()}},FE=yh;var BE=mi(yi(),1);var qu=class{constructor(t,e,r,o,s=4/3){this.vbMode=t;this.faceDetectorHash=e;this.visionTaskRegistry=r;this.logger=o;l(this,"animationState");l(this,"originalAspect");l(this,"totalOffsetX",0);l(this,"totalOffsetY",0);l(this,"defaultScaleRatio",.1);l(this,"isRecovering",!1);l(this,"boundaryY",280);l(this,"lastActionTime",0);l(this,"restTime",400);this.animationState={current:null,target:null,animating:!1,debounceTimer:null,startTime:0,duration:3e3,debounceTime:150,movementThreshold:30,debounceThreshold:15},this.addEvent(this.vbMode,!!this.faceDetectorHash),this.originalAspect=s||4/3}addEvent(t,e,r){let s=[{key:570704,error:r!=null?r:e?void 0:11},{key:570705,error:r!=null?r:e?void 0:22}][t-1];s&&(e?X.addSuccessEvent({key:s.key}):X.addFailedEvent({key:s.key,error:s.error}))}actionCentering(t){let e=Date.now();if(this.animation(),!this.faceDetectorHash||e-this.lastActionTime<this.restTime||this.animationState.animating)return;let{videoWidth:r,videoHeight:o}=t;this.animationState.debounceThreshold=r/30,this.animationState.movementThreshold=r/20,this.boundaryY=o*.6;try{let s=this.visionTaskRegistry.getResult(this.faceDetectorHash);if(s.detections.length<=0){this.vbMode===1&&this.recoverOriginal(r,o);return}let n=s.detections[0].boundingBox,a=n.originX,u=n.originY,m=n.width,h=n.height;this.vbMode===1?this.dualStageCropping(r,o,a,u,m,h):this.vbMode===2&&this.movingPortrait(r,o,a,u,m,h)}catch(s){this.logger.error(s)}this.lastActionTime=e}calculateBoundary(t,e,r,o){let s,n;return t>e/2?(s=e-r-o,n=r-s):(s=r,n=0),{min:s,offset:n}}calculateTargetPosition(t,e,r,o,s,n,a=.4){let u=t+r/2,m=e+o/2,h,f,{min:T,offset:A}=this.calculateBoundary(u,s,t,r),{min:C,offset:N}=this.calculateBoundary(m,n,e,o);return h=2*T+r,f=2*C+o,h/f>this.originalAspect?(h=f*this.originalAspect,A=u-h/2):(f=h/this.originalAspect,N=m-f/2),r/s>a&&(A=0,N=0,h=s,f=n),A=Math.max(0,Math.min(A,s-h)),N=Math.max(0,Math.min(N,n-f)),{sx:A,sy:N,cropWidth:h,cropHeight:f,timestamp:Date.now()}}processFacePositionCrop(t,e,r){if(!this.animationState.current||!this.animationState.target){let a={sx:0,sy:0,cropWidth:e,cropHeight:r,timestamp:Date.now()};this.animationState.current=a,this.animationState.target=a;return}let o=this.positionDistance(this.animationState.target,t),s=this.positionDistance(this.animationState.current,t),n=this.animationState.current.cropWidth/e;o>this.animationState.debounceThreshold*n&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&s>this.animationState.movementThreshold*n&&(this.animationState.target=t,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}processFacePositionPortrait(t){if(!this.animationState.current||!this.animationState.target){this.animationState.current=j({},t),this.animationState.target=j({},t);return}let e=this.positionDistance(this.animationState.current,t),r=this.positionDistance(this.animationState.target,t);e>this.animationState.debounceThreshold&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&r>this.animationState.movementThreshold&&(this.animationState.current=t,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}animation(){if(!this.animationState.animating)return;let t=Date.now()-this.animationState.startTime,e=Math.min(t/this.animationState.duration,1),r=o=>o<.5?2*o*o:-1+(4-2*o)*o;if(this.animationState.current&&this.animationState.target){let o=(this.animationState.target.sx-this.animationState.current.sx)*r(e);this.animationState.current.sx+=o,this.totalOffsetX+=o;let s=(this.animationState.target.sy-this.animationState.current.sy)*r(e);if(this.animationState.current.sy+=s,this.totalOffsetY+=s,this.animationState.current.cropWidth+=(this.animationState.target.cropWidth-this.animationState.current.cropWidth)*r(e),this.animationState.current.cropHeight+=(this.animationState.target.cropHeight-this.animationState.current.cropHeight)*r(e),this.animationState.current.scaleRatio&&this.animationState.target.scaleRatio&&(this.animationState.current.scaleRatio+=(this.animationState.target.scaleRatio-this.animationState.current.scaleRatio)*r(e)),Le(this.animationState.current.scaleOffsetX)&&Le(this.animationState.target.scaleOffsetX)&&Le(this.animationState.current.scaleOffsetY)&&Le(this.animationState.target.scaleOffsetY)){let n=(this.animationState.target.scaleOffsetX-this.animationState.current.scaleOffsetX)*r(e);this.animationState.current.scaleOffsetX+=n;let a=(this.animationState.target.scaleOffsetY-this.animationState.current.scaleOffsetY)*r(e);this.animationState.current.scaleOffsetY+=a}}e>=1&&(this.animationState.animating=!1,this.animationState.current=this.animationState.target,this.isRecovering=!1)}positionDistance(t,e){return Math.sqrt(eo(t.sx-e.sx,2)+eo(t.sy-e.sy,2))}recoverOriginal(t,e){this.animationState.target={sx:0,sy:0,cropWidth:t,cropHeight:e,timestamp:Date.now()},this.animationState.animating=!0,this.animationState.startTime=Date.now(),this.isRecovering=!0}dualStageCropping(t,e,r,o,s,n,a=.3){if(this.isRecovering)return;let u=this.calculateTargetPosition(r,o,s,n,t,e);this.processFacePositionCrop(u,t,e),s*n/u.cropWidth/u.cropHeight>a&&this.recoverOriginal(t,e)}movingPortrait(t,e,r,o,s,n){var u,m,h,f,T,A,C,N,w,x,te,ue;let a={sx:r+s/2+this.totalOffsetX,sy:o+n/2+this.totalOffsetY,cropWidth:t,cropHeight:e,scaleRatio:(m=(u=this.animationState.current)==null?void 0:u.scaleRatio)!=null?m:1,scaleOffsetX:(f=(h=this.animationState.current)==null?void 0:h.scaleOffsetX)!=null?f:0,scaleOffsetY:(A=(T=this.animationState.current)==null?void 0:T.scaleOffsetY)!=null?A:0,timestamp:Date.now()};this.animationState.target={sx:t/2,sy:o+n/2,cropWidth:t,cropHeight:e,scaleRatio:(N=(C=this.animationState.target)==null?void 0:C.scaleRatio)!=null?N:1,scaleOffsetX:(x=(w=this.animationState.target)==null?void 0:w.scaleOffsetX)!=null?x:0,scaleOffsetY:(ue=(te=this.animationState.target)==null?void 0:te.scaleOffsetY)!=null?ue:0,timestamp:Date.now()},this.animationState.animating||(this.animationState.target.scaleRatio=Math.sqrt(s*n/t/e/this.defaultScaleRatio),this.animationState.target.scaleOffsetX=-this.animationState.target.scaleRatio/2+.5,this.animationState.target.scaleOffsetY=-this.animationState.target.scaleRatio+1,(this.animationState.target.sy-this.animationState.target.scaleOffsetY*this.animationState.target.cropHeight)/this.animationState.target.scaleRatio<this.boundaryY&&(this.animationState.target.scaleOffsetY=(this.animationState.target.sy-this.boundaryY*this.animationState.target.scaleRatio)/this.animationState.target.cropHeight)),this.processFacePositionPortrait(a)}set aspectRatio(t){this.originalAspect=t}get current(){return this.animationState.current}get offset(){return{offsetX:this.totalOffsetX,offsetY:this.totalOffsetY}}get targetCrop(){return this.animationState.target}};var By=`#version 300 es
|
|
71
103
|
in vec2 a_position;
|
|
72
104
|
in vec2 a_texCoord;
|
|
73
105
|
out vec2 v_texCoord;
|
|
74
106
|
void main() {
|
|
75
107
|
gl_Position = vec4(a_position.x, a_position.y, 0, 1);
|
|
76
108
|
v_texCoord = a_texCoord;
|
|
77
|
-
}`,
|
|
109
|
+
}`,Hy=`#version 300 es
|
|
78
110
|
precision highp float;
|
|
79
111
|
uniform sampler2D u_texture;
|
|
80
112
|
uniform sampler2D mask;
|
|
@@ -83,7 +115,7 @@ in vec2 v_texCoord;
|
|
|
83
115
|
out vec4 outColor;
|
|
84
116
|
void main() {
|
|
85
117
|
outColor = vec4(texture(u_texture, v_texCoord).rgb, texture(mask, v_texCoord).a);
|
|
86
|
-
}`,
|
|
118
|
+
}`,zu=class extends fr{constructor(e,r){super(e,r.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,width:r.width,height:r.height,logger:e.log});l(this,"_bgTexture");l(this,"_waterMarkTexture");l(this,"_lastMaskTexture");l(this,"_lastMaskFbo");l(this,"_textureValid",!1);l(this,"_selfieTextureValid",!1);l(this,"_selfieSegmentationHash");l(this,"wasm");l(this,"predictReady");l(this,"_color");l(this,"_prePrograme");l(this,"_segmentationMask");l(this,"_weixin",!1);l(this,"_centerFace");l(this,"_textureMatrixLocation");l(this,"_offsetMatrixLocation");l(this,"_colorLocation");l(this,"_enableFaceCentering",!1);l(this,"_enableEffectOptimization",!1);l(this,"_mat4");l(this,"_postProcessing");l(this,"_onAbort");l(this,"_visionTaskRegistry");l(this,"resolvePreditReady");this.init(r).catch(o=>{e.log.error(o),e.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${o.message||o}`})),this.resolvePreditReady()})}init(e){return y(this,null,function*(){var n,a,u;this.predictReady=new Promise(m=>{this.resolvePreditReady=m});let r=e.Wasm,o=this.context.ctx;if(e.color&&(this._color=e.color),e.mat4&&(this._mat4=e.mat4),e.postProcessing&&(this._postProcessing=e.postProcessing),this._enableFaceCentering=(n=e.enableFaceCentering)!=null?n:!1,this._enableEffectOptimization=(a=e.enableEffectOptimization)!=null?a:!1,this.wasm=new r.AllIn1(o),this.wasm.blurRadius=e.blurRadius||3,this.wasm.mirror=!!e.mirror,this.wasm.rotation=e.rotation||0,this.wasm.vbMode=e.bg==="blur"?1:e.bg instanceof HTMLImageElement?2:e.bg==="color"?3:0,this._onAbort=e.onAbort,e.bg||this.resolvePreditReady(),e.waterMark){let{x:m,y:h,width:f,height:T}=e.waterMark;this.wasm.setWaterMark(m,h,f,T)}if(e.beautyParams){let{beauty:m,brightness:h,ruddy:f}=e.beautyParams;this.wasm.setBeauty(m,h,f,e==null?void 0:e.width,e==null?void 0:e.height)}this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),o.uniform1i(o.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(o.uniform1i(o.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(o.uniform1i(o.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image));let s=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);if(this._textureMatrixLocation=o.getUniformLocation(this.program,"u_textureMatrix"),o.uniformMatrix4fv(this._textureMatrixLocation,!1,s),this._offsetMatrixLocation=o.getUniformLocation(this.program,"u_offsetMatrix"),o.uniformMatrix4fv(this._offsetMatrixLocation,!1,s),this._colorLocation=o.getUniformLocation(this.program,"u_color"),o.uniform1i(o.getUniformLocation(this.program,"lastMask"),4),this._weixin){let m=this.context.createShader(o.FRAGMENT_SHADER,Hy),h=this.context.createShader(o.VERTEX_SHADER,By);this._prePrograme=this.context.createProgram(h,m),o.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),o.uniform1i(o.getUniformLocation(this._prePrograme,"mask"),1)}this._enableEffectOptimization&&(this.wasm.vbMode===2||this.wasm.vbMode===3)&&((u=this._postProcessing)==null||u.init(o,this.positionBuffer,this.texCoordBuffer,4/3)),yield this.initVisionTasks(e)})}initVisionTasks(e){return y(this,null,function*(){if(e.bg){if(this._visionTaskRegistry=yield window.VisionTaskRegistry.getInstance(),!window.VisionTaskRegistry||!this._visionTaskRegistry||!this._visionTaskRegistry.visionWasm)throw new Error("Virtual background assets not found. Please redeploy the assets of the npm package.");if(this._visionTaskRegistry.video=this.image,this._selfieSegmentationHash=yield this._visionTaskRegistry.register(window.VisionTaskType.ImageSegmenter,{canvas:this.context._canvas}),this._enableFaceCentering)try{this._visionTaskRegistry.models.has(window.VisionTaskType.FaceDetector)||(yield this._visionTaskRegistry.preloadModels([window.VisionTaskType.FaceDetector]));let r=yield this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);if(!r)return;this._centerFace=new qu(this.wasm.vbMode,r,this._visionTaskRegistry,this.context.log)}catch(r){this.log.error("Face detector model not found. Please redeploy the assets of the npm package.")}}})}onPredict(e){let r=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture)));let o=this.getMaskTexture(e);if(!o)return;let s=o;this._enableEffectOptimization&&this._postProcessing&&(this.wasm.vbMode===2||this.wasm.vbMode===3)&&(this._postProcessing.ratio=this.image.videoWidth/this.image.videoHeight,s=this._postProcessing.postProcessing(o)),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),this.useTexture(),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,s||null),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this._bgTexture||null),r.activeTexture(r.TEXTURE3),r.bindTexture(r.TEXTURE_2D,this._waterMarkTexture||null),this.wasm.vbMode===3&&r.uniform3fv(this._colorLocation,this._color),this.useBufferFrame(),this._segmentationMask=e,this.totalFrames++,this.centerFace(),or(this.wasm.rotation)&&this.resize(this.image.height,this.image.width),r.viewport(0,0,r.canvas.width,r.canvas.height),r.drawArrays(r.TRIANGLE_STRIP,0,4),e.close()}getMaskTexture(e){return e.confidenceMasks?e.confidenceMasks[0].getAsWebGLTexture():void 0}onFirstFrame(){this.waitingFirstFrame=!1;let e=this.context.ctx;this.useTexture(),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image)}render(e){let r=this.context.ctx,{image:o}=this;this.tryVideoFrameCallback();let{videoWidth:s,videoHeight:n}=o;if(or(this.wasm.rotation)&&!this._visionTaskRegistry&&([s,n]=[n,s]),s===0||n===0||!this.available)return!1;o.width=s,o.height=n;let a=!1;if(this.totalFrames)this.useTexture(),a=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;a=this._textureValid,this._textureValid=!0}if(this.width!==s||this.height!==n||!a?(this.resize(s,n),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,o)):r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,o),this._weixin){if(r.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask){let u=this.getMaskTexture(this._segmentationMask);r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,u||null),r.bindFramebuffer(r.FRAMEBUFFER,this._lastMaskFbo||null)}r.drawArrays(r.TRIANGLE_STRIP,0,4),this.useTexture(),this._segmentationMask?r.copyTexSubImage2D(r.TEXTURE_2D,0,0,0,0,0,s,n):r.copyTexImage2D(r.TEXTURE_2D,0,r.RGBA,0,0,s,n,0)}try{if(this._selfieSegmentationHash&&this._visionTaskRegistry){let u=this._visionTaskRegistry.getResult(this._selfieSegmentationHash);this.totalFrames===1&&this.context._canvas&&this.resolvePreditReady(),this.onPredict(u)}}catch(u){this._onAbort&&this._onAbort(u)}return this.totalFrames||(r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this._bgTexture||null),r.activeTexture(r.TEXTURE3),r.bindTexture(r.TEXTURE_2D,this._waterMarkTexture||null),r.drawArrays(r.TRIANGLE_STRIP,0,4)),this._visionTaskRegistry&&this._visionTaskRegistry.resetHashResults(),!1}centerFace(){if(!this._centerFace||!this._enableFaceCentering)return;let e=this.context.ctx;this._centerFace.aspectRatio=e.canvas.width/e.canvas.height,this._centerFace.actionCentering(this.image);let{current:r,offset:o}=this._centerFace;if(r&&(this.wasm.vbMode===1&&this.drawImage(r.sx,r.sy,r.cropWidth,r.cropHeight),o&&this.wasm.vbMode===2)){if(!this._mat4)return;let s=this._mat4.create(),{scaleRatio:n=1,scaleOffsetX:a=0,scaleOffsetY:u=0}=r;this._mat4.fromTranslation(s,[-o.offsetX/e.canvas.width+a,u,0]),this._mat4.scale(s,s,[n,n,1]),e.uniformMatrix4fv(this._offsetMatrixLocation,!1,s)}}drawImage(e,r,o,s){let n=this.context.ctx;if(!this._mat4)return;let{width:a,height:u}=n.canvas,m=this._mat4.create();this._mat4.fromTranslation(m,[e/a,1-(r+s)/u,0]),this._mat4.scale(m,m,[o/a,s/u,1]),n.uniformMatrix4fv(this._textureMatrixLocation,!1,m)}close(){var r;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),this._postProcessing&&this._postProcessing.close(),(r=this.wasm)==null||r.close()}};var Ju=class extends Ht{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
|
|
87
119
|
precision highp float;
|
|
88
120
|
uniform sampler2D ySampler;
|
|
89
121
|
uniform sampler2D uSampler;
|
|
@@ -108,15 +140,4 @@ void main() {
|
|
|
108
140
|
void main() {
|
|
109
141
|
gl_Position = vertexPos;
|
|
110
142
|
textureCoord = texturePos;
|
|
111
|
-
}`});d(this,"yTextureRef");d(this,"uTextureRef");d(this,"vTextureRef");d(this,"Y");d(this,"U");d(this,"V");this.useProgram();let t=this.context.ctx;t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,t){let r=this.context.ctx,s=r.createTexture();return r.bindTexture(r.TEXTURE_2D,s),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),r.uniform1i(r.getUniformLocation(this.program,e),t),s}render(e){let t=this.context.ctx,r=this.width,s=this.height;return this.useProgram(),t.viewport(0,0,r,s),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.yTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r,s,t.LUMINANCE,t.UNSIGNED_BYTE,this.Y),t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this.uTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,s/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.U),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this.vTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,s/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,t){super.resize(e,t);let r=this.context.ctx;r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e,t,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null)}};var Mh=[o=>{o.codec="avc1.42e01f"},o=>{delete o.hardwareAcceleration}],$f=(o,i)=>{switch(o){case"webCodecs":return i==="videoFrame"?514705:514706;case"wasm":return i==="webgl"?514707:i==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};function MS(o){return o[0]===0&&o[1]===0&&o[2]===0&&o[3]===1}var kS=0,sd=class{constructor(i){d(this,"id",kS++);d(this,"trackDoneOB");d(this,"startOB");d(this,"stopOB");d(this,"decoder");d(this,"videoContext");d(this,"gop",0);d(this,"gop_helper",0);d(this,"waitFirstKeyFrame",!0);d(this,"startTimestamp",0);d(this,"startTime",0);d(this,"startPerformanceTime",0);d(this,"inputFrameCount",0);d(this,"decodedFrameCount",0);d(this,"decodeFrameCount",0);d(this,"downgradeLevel",0);d(this,"lastDowngradeTime",0);d(this,"lastFrameDiff",0);d(this,"lastDecodeFrameTimestamp",0);d(this,"config");d(this,"gop_before_configure",[]);d(this,"videoElement");d(this,"type","wasm");d(this,"goodType");d(this,"renderer","2d");d(this,"wasmOption");d(this,"createDecoder");d(this,"_decodeSink");d(this,"isReported",!1);d(this,"track");d(this,"stateChangeOB");d(this,"failedReason");let{track:e,createDecoder:t}=i;if(this.stateChangeOB=nt(),this.track=e,this.createDecoder=t,this.wasmOption={yuvMode:i.renderer==="webgl",wasmPath:i.wasmPath,workerMode:i.workerMode,canvas:i.canvas},this.config=i.config,this.videoElement=i.videoElement,this.renderer=i.renderer,this.trackDoneOB=ue(e.availableState,G.OFF),this.stopOB=nt(),i.type==="auto"){switch(i.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=i.type;this.changeRenderer(this.renderer),le(this.stateChangeOB,Pu((r,s)=>(r!==s&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:r,state:s}),s),"INITIALIZED"),Le(this.stopOB),Ae()),this.start()}start(i=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=le(this.pipe(this.track),Le(this.stopOB),Qi());le(e,Ae(()=>{this.track.stat.framesDecoded++},t=>{if(this.track.log.error(`${this.id} play failed: ${t} retryCount: ${i}`),v.addFailedEvent({key:$f(this.type,this.renderer),error:t}),i>4)this.failedReason=t,this.stateChangeOB.next("FAILED"),v.addFailedEvent({key:514704});else{if(this.goodType){this.start(i);return}switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.start(i+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),v.addSuccessEvent({key:$f(this.type,this.renderer)}),v.addSuccessEvent({key:514704})})),le(e,Yi(1),Ae(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.start()}close(i){this.stopOB.next(i)}changeRenderer(i){this.renderer=i,this.renderer==="videoFrame"&&!Ks()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(i,e=!1){var a,c;if(this.failedReason)return;this.inputFrameCount++;let t=new Uint8Array(i.data);if(!MS(t)||t.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${t.subarray(0,5)}`),i;let r=t[4]&31,s=!1;switch(r){case 5:case 7:s=!0;break}if(((a=this.decoder)==null?void 0:a.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),s&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:i.data,timestamp:i.timestamp,type:i.type}),i;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(l=>this.decode(l,!0)),this.gop_before_configure=[]);let{timestamp:n}=i;if(s?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(s)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=P();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount} ${t.subarray(0,5).join(" ")}`);return}switch(this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}(this.decodeFrameCount<10||this.decodeFrameCount%500===0)&&this.track.log.debug(`decode ${this.decodeFrameCount} gop: ${this.gop} ${n} ${(c=i.getMetadata)==null?void 0:c.call(i).rtpTimestamp}`),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=n,this.decoder.decode({data:i.data,type:i.type,timestamp:this.lastDecodeFrameTimestamp});return}return i}checkDowngradeByFrameDiff(){let i=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==i&&this.track.log.debug(`downgrade level ${i} to ${this.downgradeLevel} ${this.decodeFrameCount} frameDiff: ${e}, lastFrameDiff: ${this.lastFrameDiff}`),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(i){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-i>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug(`downgrade level ${e} to ${this.downgradeLevel}`)}pipe(i){return e=>f(this,null,function*(){this._decodeSink=e;let t,r=i.mediaTrack;e.defer(()=>{var a;r&&(i.player.setCanvas(),i.setInputMediaStreamTrack(r)),t==null||t.close(),(a=this.videoContext)==null||a.destroy(),delete this._decodeSink});let{renderer:s,type:n}=this;i.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(n){case"wasm":t=this.createDecoder(n,this.wasmOption);break;case"webCodecs":for(let c=0;c<=Mh.length;c++){let{supported:l}=yield VideoDecoder.isConfigSupported(this.config);if(l)break;if(c===Mh.length){e.error(3);return}Mh[c](this.config)}t=this.createDecoder(n);break;default:throw new Error("not supported yet")}let a=0;if(t.on("videoFrame",c=>{this.decodedFrameCount++,a++,(a<=10||a%500===0)&&i.log.debug(`frame ${a} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${c.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(c.timestamp)),e.next(c)}),t.on("error",c=>{i.log.error(c),e.error(n==="webCodecs"?4:8)}),yield t.initialize(this.videoElement),!this._decodeSink)return;if(t.configure(this.config),n==="wasm"&&s==="webgl"){this.videoContext=new Pe({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create(),this.videoContext.on(Pe.UNAVAILABLE,l=>{i.log.error(l),e.error(7)});let c=new od(this.videoContext);t.on("videoCodecInfo",l=>c.resize(l.width,l.height)),t.on("videoFrame",l=>{({y:c.Y,u:c.U,v:c.V}=l),this.downgradeLevel===1?this.decodedFrameCount%2===0&&c.render(this.decodedFrameCount):c.render(this.decodedFrameCount)}),i.source=c,i.player.setCanvas(this.videoContext._canvas,2)}else if(s==="videoFrame"){i.player.setCanvas();let c=new MediaStreamTrackGenerator({kind:"video"}),l=c.writable.getWriter();i.setInputMediaStreamTrack(c),t.on("videoFrame",u=>l.write(u))}else{this.videoContext=new We({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create({alpha:!1});let c=this.videoContext.createVideoImageSource();t.on("videoFrame",u=>{try{c.image=u,c.update()}catch(h){delete this.goodType,i.log.error(h),e.error(11)}});let l=new Kr(this.videoContext,{name:"remotePlayer",logger:i.log});c.connect(l),i.source=c,i.player.setCanvas(this.videoContext._canvas,2)}this.decoder=t}catch(a){i.log.error(a),e.error(n==="webCodecs"?2:6)}})}};var Hn=class extends Gf.EventEmitter{constructor(e){super();this.room=e;d(this,"videoContext");d(this,"_glVideoContext");d(this,"_2dVideoContext");d(this,"destination");d(this,"smallVideoContext");d(this,"smallDestination");d(this,"smallTrackSource");d(this,"smallImageSource");d(this,"_isMirror",!1);d(this,"_rotation",0);d(this,"cameraTrack");d(this,"cameraNode");d(this,"transformNode");d(this,"mixNode");d(this,"screenTrack");d(this,"screenNode");d(this,"selfModel",!1);d(this,"blurRadius",3);d(this,"arTrack");d(this,"_enableFaceCentering",!1);d(this,"_enableEffectOptimization",!1);d(this,"onAbort");d(this,"_color");d(this,"Wasm");d(this,"waterMarkNode");d(this,"_waterMarkOption");d(this,"watermarkImageList",[]);d(this,"_beautyParams");d(this,"isUsingArTrack",!1);d(this,"mixTrack");d(this,"_isMixScreen",!1);d(this,"_virtualBackground");d(this,"_virtualBackgroundAbortCallback");d(this,"virtualBackgroundInstance");d(this,"_bgAssetPath");d(this,"log",y.createLogger({id:"vm"}));d(this,"_mat4");d(this,"_postProcessing");d(this,"_checkId",0);d(this,"_use2d",!1);d(this,"_autoSwitchRenderMode",!0);d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new We({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get smallMode(){var e;return((e=this.room)==null?void 0:e.smallMode)||"canvas"}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get _isRotate(){return this._rotation!==0}get _isTransform(){return this._isMirror||this._isRotate}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let t=e==="2d";this._use2d!==t&&(this._use2d=t,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get cameraResolution(){var r;let{width:e,height:t}=((r=this.cameraTrack)==null?void 0:r.settings)||{};return _t(this._rotation)?{width:t,height:e}:{width:e,height:t}}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new We({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new Pe({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on(Pe.UNAVAILABLE,e=>{var t;this.emit("error",e),this.log.warn("video context unavailable",e),(t=this._virtualBackgroundAbortCallback)==null||t.call(this,e),this.update().catch(r=>{this.log.error(r)})})}catch(e){this.emit("error",e)}}initVirtualBackground(e,t,r){this.onAbort=e,this._mat4=t,this._postProcessing=r}enablePrintDetail(e=2e3){this._checkId=re.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,t;(e=this._2dVideoContext)==null||e.destroy(),(t=this._glVideoContext)==null||t.destroy(),this.smallVideoContext.destroy(),re.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(vt||this._isMixScreen||this._isTransform||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",t){let r=e==="videoCtxGl"?512700:512701;t?v.addFailedEvent({key:r,error:t}):v.addSuccessEvent({key:r})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let t=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(t)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new Pe({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}setSmallVideo(e,t){if(this.smallMode!=="api")if(e){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new yc(this.smallVideoContext,e,this.log),this.smallVideoContext.on(Pe.UNAVAILABLE,r=>{this.log.warn("small video context lost",r)})}if(this.smallVideoContext.frameRate=e.frameRate,this.smallDestination.resolution=e,t)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=t:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(t),this.smallImageSource.resize(t.width,t.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:r,height:s}=this.cameraTrack.settings;this.smallTrackSource.resize(r,s),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(e){var t;try{let r=this.cameraTrack,{small:s,player:n}=r;vt&&n.setCanvas(e);let a=e&&((t=this.destination)==null?void 0:t.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),a=this.arTrack),this.log.info(`set main output ${a?a.label:"no output track"}`),this.setSmallVideo(s,e),r.setOutputMediaStreamTrack(a)}catch(r){this.log.error("set main output failed",r)}}update(e=!1){return f(this,null,function*(){var s;if(!this.cameraTrack||!this.initialTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:t,profile:r}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams)this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.destination.on(Be.RENDER,n=>{var a;(a=this.cameraTrack)==null||a.emit("render",n)})),je===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof kt?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof kt?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(t.width,t.height);else if(e&&this.cameraNode&&this.destination)this.cameraNode.replaceTrack(this.initialTrack);else{this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():(this.destination=new Rc(this.videoContext,{name:"mainDestination",logger:this.log}),this.destination.on(Be.RENDER,l=>{var u;(u=this.cameraTrack)==null||u.emit("render",l)}));let{width:n,height:a}=this.cameraResolution,c=yield this.getWatermarkImage(n,a);this._waterMarkOption={x:0,y:0,width:c.width,height:c.height,image:c},this.cameraNode=new rd(this.videoContext,{input:this.initialTrack,width:n,height:a,mirror:this._isMirror,rotation:this._rotation,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,Wasm:this.Wasm,enableFaceCentering:this._enableFaceCentering,enableEffectOptimization:this._enableEffectOptimization,onAbort:this.onAbort,mat4:this._mat4,postProcessing:this._postProcessing,color:this._color}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute(),yield this.cameraNode.predictReady}if(this.videoContext.frameRate=r.frameRate,this._use2d){let n=this.cameraNode;if(n.disconnect(),this._isTransform&&(this.transformNode?(this.transformNode.mirror=this._isMirror,this.transformNode.rotation=this._rotation):this.transformNode=new wt(this.videoContext,this.log,this._isMirror,this._rotation),n=n.connect(this.transformNode),n.disconnect(),this.log.info(`start mirror ${this._isMirror} rotate ${this.rotation}`)),this.mixNode&&this.mixNode.close(),delete this.mixNode,this._isMixScreen||this._hasWaterMark){if(this.mixNode=new os(this.videoContext,this.log),n.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption)this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y;else if(this.waterMarkNode){let{width:c,height:l}=this.cameraResolution;this.waterMarkNode.image=yield this.getWatermarkImage(c,l),c&&l&&this.waterMarkNode.resize(c,l)}(s=this.waterMarkNode)==null||s.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&(this.screenNode||(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.resize(this.screenTrack.settings.width,this.screenTrack.settings.height)),this.screenNode.shouldUpdate=!1,this.screenNode.connect(this.mixNode,{zIndex:0})),n=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)}n.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}clearLastFrame(){var e;this.destination&&((e=this.destination.ctx2d)==null||e.clearRect(0,0,this.destination.width,this.destination.height))}changeInput(e){var t,r,s,n,a;if(e instanceof et)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof Ge)return this.log.info("change video input",(r=e.mediaTrack)==null?void 0:r.label),this.setCameraTrack(e);if(e instanceof yi){this.log.info("change remote input",(s=e.mediaTrack)==null?void 0:s.label);let c=e.mediaTrack;return e.setOutputMediaStreamTrack(c)}if(e instanceof to)return this.log.info("change mix input",(n=e.outMediaTrack)==null?void 0:n.label),this.setMixTrack(e);this.log.warn("change unknown input",(a=e.mediaTrack)==null?void 0:a.label)}removeInput(e){var t;e instanceof et?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Ge?this._isMixScreen?(delete this.cameraNode,this.cameraTrack._inputTrack=null,this.update()):(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof yi?e.source&&e.source.context.destroy():e instanceof to&&(delete this.mixTrack,this.update())}setMixTrack(e){this.mixTrack=e}setCameraTrack(e){return this.cameraTrack=e,this.update(!0)}setScreenTrack(e){return f(this,null,function*(){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):yield this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)})}getWatermarkImage(e,t){return f(this,null,function*(){let r=document.createElement("canvas");t&&e&&(r.height=t,r.width=e);let s=r.getContext("2d");if(!s)throw new N({code:I.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,a)=>n.zIndex-a.zIndex),this.watermarkImageList.forEach(({image:n,x:a,y:c,width:l,height:u})=>{s.drawImage(n,a,c,l,u)}),Co(r.toDataURL())})}pushWaterMarkImageList(e){let{type:t}=e;this.watermarkImageList.some(s=>s.imageUrl===e.imageUrl&&s.height===e.height&&s.width===e.width&&s.x===e.x&&s.y===e.y&&s.type===e.type&&s.zIndex===e.zIndex)||((t==="mute"||t==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(s=>s.type!==t)),this.watermarkImageList.push(e))}setBeautyParams(e){return f(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return f(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return f(this,null,function*(){let t;try{t=yield Co((e==null?void 0:e.imageElement)||e.imageUrl)}catch(h){throw new N({code:I.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:r=0,y:s=0,width:n=t.width,height:a=t.height,type:c="watermark",zIndex:l=2}=e;this.watermarkImageList.some(h=>h.type===c)?(this.watermarkImageList=this.watermarkImageList.filter(h=>h.type!==c),this.pushWaterMarkImageList({x:r,y:s,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl}),t=yield this.getWatermarkImage(this.cameraResolution.width,this.cameraResolution.height),this._waterMarkOption={x:0,y:0,width:t.width,height:t.height,image:t},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(t.width,t.height),this.waterMarkNode.image=t):this.update()):(this.pushWaterMarkImageList({x:r,y:s,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(h,m)=>h==="imageUrl"?void 0:m))})}deleteWatermark(e="watermark"){return f(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(t=>t.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(t,r)=>t==="imageUrl"?void 0:r)),yield this.freshWatermark()})}freshWatermark(){return f(this,null,function*(){var s;(s=this.waterMarkNode)==null||s.close(),delete this.waterMarkNode,delete this._waterMarkOption;let{width:e,height:t}=this.cameraResolution,r=yield this.getWatermarkImage(e,t);this._waterMarkOption={x:0,y:0,width:r.width,height:r.height,image:r},this.update()})}setVirtualBackground(e){return f(this,null,function*(){var t,r,s;if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield Co(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type),this._enableFaceCentering=(t=e.enableFaceCentering)!=null?t:this._enableFaceCentering,this._enableEffectOptimization=(r=e.enableEffectOptimization)!=null?r:this._enableEffectOptimization,this._color=(s=e.color)!=null?s:[0,1,0]}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new N({code:I.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var t;this._isMixScreen=e,this._isMixScreen||((t=this.screenNode)==null||t.close(),delete this.screenNode),this.update()}set mirror(e){var t;this._isMirror!==e&&(this._isMirror=e,this._isTransform||((t=this.transformNode)==null||t.close(),delete this.transformNode),this.update())}get mirror(){return this._isMirror}set rotation(e){var t;this._rotation!==e&&(this._rotation=e,this._isTransform||((t=this.transformNode)==null||t.close(),delete this.transformNode),this.update())}get rotation(){return this._rotation}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return f(this,null,function*(){var e;(e=this.cameraTrack)!=null&&e.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}createDecodeContext(e){return new sd(e)}clear(){var e,t;(e=this.videoContext)==null||e.disconnect(),(t=this.destination)==null||t.removeAllListeners(),delete this.destination,delete this.cameraNode,delete this.transformNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};O([nc(function(e){this.log.error("update failed",e)})],Hn.prototype,"update",1);var wS=0;var nd=class extends G{constructor(e){super("room");d(this,"seq",++wS);d(this,"sdkAppId");d(this,"userId");d(this,"userSig");d(this,"privateMapKey");d(this,"latencyLevel");d(this,"tinyId");d(this,"scene");d(this,"roomId");d(this,"useStringRoomId");d(this,"role","anchor");d(this,"joinParams",null);d(this,"localPublishFlag",0);d(this,"localTracks",new Set);d(this,"enableAutoPlayDialog",!0);d(this,"autoReceiveAudio",!0);d(this,"autoReceiveVideo",!0);d(this,"proxy_ws");d(this,"proxy_wt");d(this,"proxy_unified");d(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0,isH265EncodeSupported:!0,isH265DecodeSupported:!0}});d(this,"keyPointManager");d(this,"audioManager");d(this,"videoManager");d(this,"callDurationCalculator");d(this,"badCaseDetector");d(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});d(this,"videoDecodeFallbackType");d(this,"smallMode","canvas");d(this,"_isUsingCachedSchedule",!1);d(this,"_log",y.createLogger({id:`r${this.seq}`}));d(this,"_joinedTimestamp",0);d(this,"_sdkType");d(this,"heartbeatReport");d(this,"quality");d(this,"enableSEI");d(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,de(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),de(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),de(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new Bf({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new Ff({room:this}),this.badCaseDetector=new Hf({room:this}),this.audioManager=new Nc(this),this.videoManager=new Hn(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return f(this,null,function*(){return this.publish(e)})}removeTrack(e){return f(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return f(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(te(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Ze(e)){let{websocketProxy:t,webtransportProxy:r,loggerProxy:s,scheduleProxy:n,unifiedProxy:a}=e;this.proxy_ws=t,this.proxy_wt=r,this.proxy_unified=a,a?(Lc([a,a]),Rr(`https://${a}`)):(s&&Rr(s),n&&Lc(n))}A.once(C.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:vi.main,sched_back_domain:vi.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return f(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(t=>{e[t.userId]=t.remoteAudioTrack.stat}),e})}getTransportStats(){return f(this,null,function*(){var t;let e={rtt:((t=this.quality)==null?void 0:t.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let r of this.quality.downlinkInfo)e.downlinksRTT[r.userId]=r.rtt;return e})}getRemoteVideoStats(){return f(this,arguments,function*(e="main"){let t={};return this.remotePublishedUserMap.forEach(r=>{let s=e==="auxiliary"?r.remoteAuxiliaryTrack:r.remoteVideoTrack;t[r.userId]=s.stat}),t})}checkDestroy(){if(this.isDestroyed)throw new N({code:I.INVALID_OPERATION,message:V({key:L.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn($e.INVALID_DESTROY),new N({code:I.INVALID_OPERATION,message:V({key:L.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,A.emit(C.ROOM_DESTROY,{room:this})}schedule(e,t){return f(this,null,function*(){var s,n,a,c;let r=P();try{let{isCached:l,result:u,detailCost:h}=yield Yu({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:Ve,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:t,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=l,this._log.info(`schedule cache:${+l} ${bt(u,{keysToExclude:["username","credential"]})}`),l&&A.once(C.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=D(D({},this.scheduleResult),u),q((s=u.config)==null?void 0:s.retryCount)&&Cd(u.config.retryCount),te((n=u.config)==null?void 0:n.loggerDomain)&&Rr(u.config.loggerDomain),this.videoDecodeFallbackType=((a=u.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,this.smallMode=((c=u.config)==null?void 0:c.smallMode)||this.smallMode,A.emit(C.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:h}),v.addSuccessEvent({key:521700,cost:P()-r})}catch(l){throw v.addFailedEvent({key:521700,error:l}),l}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}switchRoom(e){return Promise.reject()}isSwitchRoomSupported(){return!1}};var t_=He(Qe());var kh=He(Ch());var Wf=o=>{let i=Re(o),e={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return i.media.forEach((t,r)=>{var s;if(t.ssrcs&&!E(t.ssrcs[0].id)){let n=Number(t.ssrcs[0].id),a=Number((s=t.ssrcs.filter(c=>c.attribute==="cname")[1])==null?void 0:s.id);switch(r){case 0:e.audioSsrc=n;break;case 1:e.bigVideoSsrc=n,e.bigVideoRtxSsrc=a;break;case 2:e.smallVideoSsrc=n,e.smallVideoRtxSsrc=a;break;case 3:e.auxVideoSsrc=n,e.auxVideoRtxSsrc=a;break}}}),e};function Jf(o){var e;let i=[];for(let t=0;t<o.rtp.length;t++){if(["rtx","red","ulpfec"].includes(o.rtp[t].codec))continue;let r=o.fmtp.filter(s=>s.payload===o.rtp[t].payload)[0];i.push({payload:o.rtp[t].payload,codec:o.rtp[t].codec,fmtp:r?r.config:"",rate:o.rtp[t].rate,rtx:((e=o.rtp[t+1])==null?void 0:e.codec)==="rtx"?o.rtp[t+1].payload:0,rtcpfb:((o==null?void 0:o.rtcpFb)||[]).filter(s=>s.payload===o.rtp[t].payload).map(({type:s,subtype:n})=>({id:s,params:n?[n]:[]}))})}return i}function xS(){return f(this,null,function*(){let o=new RTCPeerConnection;o.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY});let i=yield o.createOffer();if(!i.sdp)return[];let e=Re(i.sdp),t=Jf(e.media[0]);return o.close(),t})}var qf=(o,i,e)=>f(void 0,null,function*(){var l;let t=Re(o),r={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:!1};r.ice.ufrag=String(t.media[0].iceUfrag),r.ice.password=t.media[0].icePwd||"",t.fingerprint&&(r.dtls.hash=t.fingerprint.type,r.dtls.fingerprint=t.fingerprint.hash,r.dtls.setup=t.setup||""),t.media[0].fingerprint&&(r.dtls.hash=t.media[0].fingerprint.type,r.dtls.fingerprint=t.media[0].fingerprint.hash),r.dtls.setup=t.media[0].setup||"";let s=t.media[0],n=t.media[1];s.ext&&(r.audio.extensions=s.ext.map(u=>({id:u.value,uri:u.uri}))),n.ext&&(r.video.extensions=n.ext.map(u=>({id:u.value,uri:u.uri})));let a={codec:s.rtp[0].codec,fmtp:s.fmtp[0].config,payload:s.fmtp[0].payload,rate:s.rtp[0].rate,channels:s.rtp[0].encoding,rtcpfb:[],rtx:0};(l=s.rtcpFb)==null||l.forEach(({payload:u,type:h,subtype:m})=>{if(u===a.payload){let g={id:h,params:[]};m&&g.params.push(m),a.rtcpfb.push(g)}}),r.audio.codecs.push(a);let c=["h264","vp8","h265"];return i&&c.shift(),e&&c.pop(),r.video.codecs=[...Jf(n)].filter(u=>c.includes(u.codec.toLocaleLowerCase())),r.video.decoders=(yield xS()).filter(u=>["h264","vp8","h265"].includes(u.codec.toLocaleLowerCase())),r}),jf=({serverAbility:o,clientAbility:i,offerSDP:e,enableCustomMessage:t})=>{let r=Re(e),s={extmapAllowMixed:"extmap-allow-mixed",groups:r.groups,icelite:"ice-lite",media:[],msidSemantic:{semantic:"",token:"WMS"},name:"-",origin:{address:"127.0.0.1",username:"-",sessionId:String(Date.now()),sessionVersion:1,netType:"IN",ipVer:4},timing:{start:0,stop:0},version:0},n={candidates:o.candidates.map(a=>({component:1,foundation:"1",generation:0,ip:a.ip,port:a.port,priority:a.priority,transport:a.foundation,type:a.type})),connection:{version:4,ip:"0.0.0.0"},direction:p.TRANSCEIVER_DIRECTION_RECVONLY,ext:o.audio.extensions.map(a=>({value:a.id,uri:a.uri})),fingerprint:{type:o.dtls.hash,hash:o.dtls.fingerprint},fmtp:[{payload:o.audio.codecs[0].payload,config:o.audio.codecs[0].fmtp}],icePwd:o.ice.password,iceUfrag:o.ice.ufrag,mid:"0",payloads:String(o.audio.codecs[0].payload),port:r.media[0].port,protocol:r.media[0].protocol,type:p.AUDIO,setup:o.dtls.setup,rtcpFb:o.audio.codecs[0].rtcpfb.map(a=>({payload:o.audio.codecs[0].payload,type:a.id,subtype:a.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:o.audio.codecs[0].payload,codec:o.audio.codecs[0].codec,rate:o.audio.codecs[0].rate,encoding:o.audio.codecs[0].channels}]};return s.media.push(n),[1,2,3].forEach(a=>{s.media.push(wh({mid:a,serverAbility:o,clientAbility:i,parsedOffer:r}))}),t&&s.media.push(r.media.find(a=>a.mid==="dc")),Pt(s)},wh=({mid:o,serverAbility:i,clientAbility:e,parsedOffer:t,isDownlink:r=!1})=>{let s={candidates:i.candidates.map(n=>({component:1,foundation:"1",generation:0,ip:n.ip,port:n.port,priority:n.priority,transport:n.foundation,type:n.type})),connection:{version:4,ip:"0.0.0.0"},direction:p.TRANSCEIVER_DIRECTION_RECVONLY,ext:i.video.extensions.map(n=>({value:n.id,uri:n.uri})),fingerprint:{type:i.dtls.hash,hash:i.dtls.fingerprint},fmtp:[],icePwd:i.ice.password,iceUfrag:i.ice.ufrag,mid:String(o),payloads:"",port:t.media[0].port,protocol:t.media[0].protocol,type:p.VIDEO,setup:i.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(r){let n=i.video.decoders;(!n||n.length===0)&&(n=i.video.codecs),(!n||n.length===0)&&(n=e.video.decoders),n.forEach(a=>{ao(s,a)})}else{let n;i.useH265?n=i.video.codecs.findIndex(c=>c.codec.toLowerCase()==="h265"):n=i.video.codecs.findIndex(c=>c.codec.toLowerCase()===(i.useVp8?"vp8":"h264"));let a=i.video.codecs[n]||e.video.codecs[0];ao(s,a)}return s},ao=(o,i)=>{o.payloads=`${o.payloads} ${i.payload}`.trim(),o.fmtp.push({payload:i.payload,config:i.fmtp}),o.rtcpFb=[...o.rtcpFb||[],...i.rtcpfb.map(e=>({payload:i.payload,type:e.id,subtype:e.params[0]}))],o.rtp.push({payload:i.payload,codec:i.codec.toUpperCase(),rate:i.rate}),i.rtx&&(o.payloads=`${o.payloads} ${i.rtx}`,o.fmtp.push({payload:i.rtx,config:`apt=${i.payload}`}),o.rtp.push({payload:i.rtx,codec:"rtx",rate:i.rate}))};function LS(o){let i=new Set(["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"]);o.ext&&(o.ext=o.ext.filter(e=>!i.has(e.uri)))}function PS(o){if(!o.rtcpFb)return;let i=[];o.rtcpFb.forEach((e,t)=>{var r;i.push(e),o.rtcpFb&&((r=o.rtcpFb[t+1])==null?void 0:r.payload)!==e.payload&&e.type!=="rrtr"&&i.push({payload:e.payload,type:"rrtr"})}),o.rtcpFb=i}function VS(o){o.type===p.VIDEO&&o.fmtp&&o.fmtp.forEach(i=>{i.config.includes("apt")||(i.config+=";sps-pps-idr-in-keyframe=1")})}function US(o){o.type===p.AUDIO&&o.fmtp&&o.fmtp.forEach(i=>{i.config+=";sprop-stereo=1;stereo=1"})}var Xf=(o,i,e)=>{let t=kh.default.parse(o);return t.media.forEach((r,s)=>{var n;if((r.type===p.AUDIO||r.type===p.VIDEO)&&(PS(r),VS(r),US(r),LS(r),r.type===p.VIDEO)){if(s<4)r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],i.video.codecs.forEach(a=>ao(r,a));else if(e){r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[];let a=e.video.decoders;(!a||a.length===0)&&(a=e.video.codecs),(!a||a.length===0)&&(a=i.video.decoders),a.forEach(c=>ao(r,c))}}(n=r.payloads)!=null&&n.includes("datachannel")&&t.groups&&r.mid&&(t.groups[0].mids=t.groups[0].mids.replace(r.mid,"dc"),r.mid="dc")}),kh.default.write(t)};var zf=He(Qe());var ad=class extends zf.EventEmitter{constructor(e){super();this.room=e;d(this,"mainFpsHealth",1);d(this,"mainBitrateHealth",1);d(this,"badMainBitrateHealthCount",0);d(this,"lastEmitBadHealthTime",0);d(this,"log");!pe&&Ke&&A.on("262",this.onVideoCodecChanged,this),this.log=e.getLogger().createChild({id:"h-d"})}onVideoCodecChanged({remoteUserId:e,streamType:t,isHWCodec:r,codec:s}){if(!(e||t===7||s!=="h264")){if(!r){this.room.off("heartbeat-report",this.onHeartbeatReport,this);return}this.room.listeners("heartbeat-report").includes(this.onHeartbeatReport)||this.room.on("heartbeat-report",this.onHeartbeatReport,this)}}onHeartbeatReport(e){Date.now()-this.lastEmitBadHealthTime<30*1e3||(e.msg_up_stream_info.msg_video_status.forEach(t=>{if(t.uint32_video_enc_fps&&t.uint32_video_capture_fps){let r=t.uint32_video_enc_fps/t.uint32_video_capture_fps;t.uint32_video_stream_type===2&&(this.mainFpsHealth=r)}if(t.uint32_video_codec_bitrate&&t.uint32_video_stream_type===2){let{localMainVideoTrack:r}=this.room;r&&(this.mainBitrateHealth=t.uint32_video_codec_bitrate/1e3/r.profile.bitrate)}}),this.log.debug(`mainBitrateHealth: ${this.mainBitrateHealth} mainFpsHealth: ${this.mainFpsHealth}`),this.mainBitrateHealth>.5&&(this.badMainBitrateHealthCount=0),this.mainFpsHealth>.9&&this.mainBitrateHealth<.5&&(this.badMainBitrateHealthCount++,this.badMainBitrateHealthCount>3&&(this.badMainBitrateHealthCount=0,this.lastEmitBadHealthTime=Date.now(),this.log.warn(`bad main bitrate health: ${this.mainBitrateHealth}`),this.emit("1",{isAux:!1}))))}destroy(){A.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};d(ad,"EVENT_BAD_HEALTH","bad_health");var Qf=ad;function Yf({seiMessageList:o,isAudio:i,isMain:e}){return new TransformStream({transform(t,r){let s=t;i?audioEncodePipeline.forEach(n=>{s=n({frame:s})}):videoEncodePipeline.forEach(n=>{s=n({frame:s,seiMessageList:o,onDump:()=>{self.postMessage({type:"dump",isAudio:i,data:s.data,userId:"",streamType:e?"main":"auxiliary"})}})}),r.enqueue(s)}})}function Zf(o,i,e){return new TransformStream({transform(t,r){let s=t;videoDecodePipeline.forEach(n=>{s=n({frame:s,onSEI:a=>{a.forEach(c=>{self.postMessage({type:"sei",seiPayloadType:c.seiPayloadType,data:c.seiPayload.buffer,userId:o,streamType:i})})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:s.data,userId:o,streamType:i})}})}),r.enqueue(s)}})}function Kf(o){let i=[Zi],e=[dh,ah,ch,nh,Yf,Zf],t=()=>{let l=[],u=[],h=[];self.onmessage=m=>{m.data.type==="sei"&&(m.data.isMain?(l.push(m.data.data),m.data.small&&h.push(m.data.data)):u.push(m.data.data))},self.onrtctransform=m=>{let{options:g}=m.transformer,T=g.isReceiver?Zf(g.userId,g.streamType,g.isAudio):Yf({isAudio:g.isAudio,seiMessageList:g.isMain?g.small?h:l:u,isMain:g.isMain});m.transformer.readable.pipeThrough(T).pipeTo(m.transformer.writable)}},r=`const videoEncodePipeline=[${o.videoEncodePipeline.toString()}];
|
|
112
|
-
const videoDecodePipeline=[${o.videoDecodePipeline.toString()}];
|
|
113
|
-
const audioEncodePipeline = [${o.audioEncodePipeline.toString()}];
|
|
114
|
-
const audioDecodePipeline = [${o.audioDecodePipeline.toString()}];`,s=`(()=>{${i.map(l=>`const ${l.name}=(()=>${l.toString()})()`).join(`
|
|
115
|
-
`)}
|
|
116
|
-
${e.map(l=>l.toString()).join(`
|
|
117
|
-
`)};(${t})();${r}})()`,n=new Blob([s],{type:"text/javascript"}),a=URL.createObjectURL(n),c=new Worker(a);return URL.revokeObjectURL(a),c}var Di=(l=>(l.TRACK="track",l.DATA_CHANNEL_MESSAGE="data_channel_msg",l[l.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",l[l.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",l.RECONNECTED="spc-reconnected",l.RECONNECT_FAILED="spc-reconnect-failed",l.ERROR="error",l.SEI_MESSAGE="sei-message",l.DUMP="dump",l))(Di||{}),i_=0,r_=!1,BS=new Set,FS=o=>i_>2&&!r_&&BS.size===0&&o,HS=1,ai=class extends t_.default{constructor({signalChannel:e,room:t,enableCustomMessage:r}){super();d(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});d(this,"currentState","DISCONNECTED");d(this,"_room");d(this,"_signalChannel");d(this,"_peerConnection",null);d(this,"_datachannel",null);d(this,"_enableCustomMessage");d(this,"_log");d(this,"_downlinkMIDMap",new Map);d(this,"_downlinkMIDUserIDMap",new Map);d(this,"_reconnectionTimer",-1);d(this,"reconnectionCount",0);d(this,"clientAbility");d(this,"_serverAbility",null);d(this,"addDownlinkQueue",new Set);d(this,"removeDownlinkQueue",new Set);d(this,"_parsedAnswer",null);d(this,"_updateSDPPromise",null);d(this,"_waitForPCConnectedPromise");d(this,"clearWaitForConnectedPromise");d(this,"clearConnectTimeout");d(this,"_isSDPLogged",!1);d(this,"enableInsertableStreams",!1);d(this,"insertableStreamsAbortMap",new Map);d(this,"receiverRemoteTrackMap",new WeakMap);d(this,"scriptTransformWorker");d(this,"_isRelayTried",!1);d(this,"_rttOverCount",0);d(this,"originOffer",null);d(this,"autoSubscribedSsrcGroups",new Map);d(this,"autoSubscribedUserMap",new Map);d(this,"_h265DecodeFailed",!1);this._room=t,this._enableCustomMessage=r,this._signalChannel=e,this._log=y.createLogger({id:`spc${HS++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(qi?this.enableInsertableStreams=!0:this.initScriptTransformWorker()),this._room.healthDetector.on("1",this.onBadHealth,this)}get isH264EncodeSupported(){let e=this._room.checkSystemResult.detail.isH264EncodeSupported;return this._serverAbility&&(e=e&&!!this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="h264")),e}addAbortController(e,t){var r;(r=this.insertableStreamsAbortMap.get(e))==null||r.abort("destory"),this.insertableStreamsAbortMap.set(e,t)}get isVP8EncodeSupported(){let e=this._room.checkSystemResult.detail.isVp8EncodeSupported;return this._serverAbility&&(e=e&&this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="vp8")),e}get isH265EncodeSupported(){let e=this._room.checkSystemResult.detail.isH265EncodeSupported;return this._serverAbility&&(e=e&&!!this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="h265")),e}get videoCodec(){var t,r,s;let e=(t=this._parsedAnswer)==null?void 0:t.media[1].rtp.find(n=>["h264","vp8","h265"].includes(n.codec.toLowerCase()));return e?e.codec.toLowerCase():(r=this._serverAbility)!=null&&r.useH265?"h265":(s=this._serverAbility)!=null&&s.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var e,t,r;return(e=this._serverAbility)!=null&&e.useH265&&((t=this._serverAbility)!=null&&t.video.decoders.find(s=>s.codec.toLowerCase()==="h265"))&&!this._h265DecodeFailed?"h265":(r=this._serverAbility)!=null&&r.video.decoders.find(s=>s.codec.toLowerCase()==="h264")?"h264":"vp8"}get isUsingH264(){return this.videoCodec==="h264"}get isUsingH265(){return this.videoCodec==="h265"}get isUsingVP8(){return this.videoCodec==="vp8"}get is42001fSupported(){return this.clientAbility?!!this.clientAbility.video.codecs.find(e=>e.fmtp.includes("42001f")):!1}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?Wf(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth({isAux:e}){this.useHWEncoder(!1,e?7:2)}initScriptTransformWorker(){Jo&&(this.scriptTransformWorker=Kf({videoEncodePipeline:this._room.videoManager.encodePipeline,videoDecodePipeline:this._room.videoManager.decodePipeline,audioEncodePipeline:this._room.audioManager.encodePipeline,audioDecodePipeline:this._room.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=e=>{e.data.type==="sei"&&this.emit("sei-message",e.data),e.data.type==="dump"&&this.emit("dump",e.data)},this.scriptTransformWorker.onerror=e=>{this._log.error("scriptTransformWorker error: ",e)})}get isReconnecting(){return this.currentState==="RECONNECTING"||this._reconnectionTimer>0||this.reconnectionCount>0}get dtlsTransport(){if(!this._peerConnection)return null;let e=this._peerConnection.getSenders();return e.length===0?null:e[0].transport}getPeerConnectionConfig(e){var s;let t={encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:e,iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},r=(s=this._peerConnection)==null?void 0:s.getConfiguration().encodedInsertableStreams;return ua(r)&&(t.encodedInsertableStreams=r),this._log.debug("getPeerConnectionConfig",JSON.stringify(t)),t}initialize(e){return f(this,null,function*(){var r,s;let t;try{return this._peerConnection=new RTCPeerConnection(this.getPeerConnectionConfig(e)),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let n=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${n}`),n==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():n==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),this._signalChannel.clearBakRelayIps(),v.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):n==="failed"&&v.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var a;let n=((a=this._peerConnection)==null?void 0:a.signalingState)||"";this._log[n==="closed"?"debug":"info"](`signaling state: ${n}`)},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=n=>this.emit("track",n),this._enableCustomMessage&&(this._datachannel=this._peerConnection.createDataChannel(`${this._room.userId}dc`),this._datachannel.binaryType="arraybuffer",this._datachannel.onopen=()=>{this._log.info("datachannel open")},this._datachannel.onclose=()=>{this._log.warn("datachannel close")},this._datachannel.onmessage=n=>{let a=new Lh(n.data);this.emit("data_channel_msg",{data:a})},this._datachannel.onerror=n=>{this._log.warn("datachannel error",n)}),this._peerConnection.addTransceiver(p.AUDIO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),t=yield this._peerConnection.createOffer(),this.clientAbility=yield qf(t.sdp,((r=this._room.scheduleResult.config)==null?void 0:r.remove264FromSDP)||!1,((s=this._room.scheduleResult.config)==null?void 0:s.remove265FromSDP)||!1),this.originOffer=t,this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:n}=this;n&&(this._log.debug(`dtls state: ${n.state}`),n.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():n.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),v.addSuccessEvent({key:521707}),this.clientAbility}catch(n){throw v.addFailedEvent({key:521707,error:n}),this._log.error(`initialize failed ${n}
|
|
118
|
-
offer: ${t==null?void 0:t.sdp}`),n}})}setIceServers(e){return f(this,null,function*(){var t;if(!(!this._peerConnection||e.length===0))try{if(this._log.info("setIceServers",JSON.stringify(e,(r,s)=>r==="username"||r==="credential"?"hided":s)),this._peerConnection.setConfiguration(this.getPeerConnectionConfig(e)),(t=this._peerConnection)!=null&&t.localDescription||!this.originOffer){this._log.warn("setIceServers already has localDescription or no origin Offer");return}yield this.setOffer(this.originOffer)}catch(r){this._log.warn("setIceServers error ",r)}})}setPriority(e="high"){if(this._peerConnection)try{this._peerConnection.getSenders().forEach(r=>{let s=r.getParameters();s.encodings[0]&&(s.encodings[0].priority=e,s.encodings[0].networkPriority=e,r.setParameters(s).catch(n=>{this._log.warn("setPriority error ",n)}))})}catch(t){this._log.warn("setPriority error ",t)}}connect(e,t=!1){return f(this,null,function*(){var r,s,n;try{if(this.currentState==="CONNECTED")return;!((r=this._peerConnection)!=null&&r.localDescription)&&this.originOffer&&(yield this.setOffer(this.originOffer));let a=P(),c={type:"answer",sdp:jf({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableCustomMessage})};this._serverAbility=e,yield this.setAnswer(c),yield this.waitForPeerConnectionConnected();let l=((s=this._room.scheduleResult.config)==null?void 0:s.priority)||((n=this._room.joinParams)==null?void 0:n.priority)||new URLSearchParams(location.search).get("priority");l&&this.setPriority(l),t||v.addSuccessEvent({key:521703,cost:P()-a})}catch(a){let c=a instanceof N&&a.code===I.API_CALL_ABORTED;throw c||this._log.error(`connect failed: ${a}`,e),this.reset(),!c&&!this.isReconnecting&&(v.addFailedEvent({key:521703,error:a}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),a}})}reconnect(){return f(this,null,function*(){if(this._reconnectionTimer!==-1){this._log.warn("reconnect() is reconnecting, ignore current reconnection");return}if(!this._signalChannel.isConnected){this._log.warn("reconnect() wait signal channel is connected"),this._signalChannel.once(_e.CONNECTED,this.reconnect,this);return}try{this.reconnectionCount+=1,this._log.warn(`reconnect() trying [${this.reconnectionCount}]`),this.reset();let e=this._signalChannel.getBackupRelayIpPair(),t=yield this.initialize(this._room.getIceServers(e!=null&&e.iceServer?[e.iceServer]:[])),r=D({ability:t},e),s=yield this._signalChannel.sendWaitForResponse({command:Y.REBUILD_PEER_CONNECTION,responseCommand:F.REBUILD_PEER_CONNECTION_RES,data:r,enableLog:!1});if(s.data.code!==0)throw new N({code:s.data.code,message:s.data.message});yield this.connect(s.data.data.ability,!0),v.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),A.emit(C.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting)return;if(e!=null&&e.message.includes("timeout")){let t=Ht(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield Wt(t,r=>{this._reconnectionTimer=r}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error(`reconnect() failed ${e==null?void 0:e.code} ${e}`),v.addFailedEvent({key:521704,error:e}),this.reconnectionCount>=wi()&&this._log.warn(`SDK has tried reconnect for ${wi()} times, but all failed, please check your network`),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}})}getPeerConnection(){return this._peerConnection}startReconnection(){return f(this,null,function*(){this.isReconnecting||(this._log.warn("start reconnect"),this._updateSDPPromise=null,this.emitConnectionStateChangedEvent("RECONNECTING"),yield this.reconnect())})}stopReconnection(){var e;this.isReconnecting&&(this._log.info("stop reconnect"),this.reconnectionCount=0,this.clearReconnectionTimer(),(e=this.clearConnectTimeout)==null||e.call(this),this._signalChannel.off(_e.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===ge.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(e){var s;let t=((s=this._peerConnection)==null?void 0:s.iceConnectionState)||"closed",r=this.getDTLSTransportState();this._log.info(`connectionState: ${e.target.connectionState} ICE: ${t} DTLS: ${r}`),e.target.connectionState===ge.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===ge.FAILED||e.target.connectionState===ge.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===ge.CONNECTED||e.target.connectionState===ge.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),A.emit(C.SINGLE_CONNECTION_STAT,{room:this._room,stat:{ice:this.stat.iceEndTime-this.stat.iceStartTime,dtls:this.stat.dtlsEndTime-this.stat.dtlsStartTime,peerConnection:this.stat.peerConnectionEndTime-this.stat.peerConnectionStartTime}}),this.logSelectedCandidate(),this.emitConnectionStateChangedEvent("CONNECTED"))}getDTLSTransportState(){if(!this._peerConnection)return Bt;let e=null;return!_r()||this._peerConnection.getSenders().length===0?Bt:(e=this._peerConnection.getSenders()[0].transport,!Gr()||this._peerConnection.getReceivers().length===0?Bt:e?e.state:Bt)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(Di.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:e}),this.currentState=e))}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let e=yield this._peerConnection.getStats();for(let[t,r]of e)if(fr(r)){let s=e.get(r.localCandidateId),n=e.get(r.remoteCandidateId);s&&(this._log.info(`local candidate: ${s.candidateType} ${s.protocol}:${s.ip||s.address}:${s.port} ${s.networkType||""} ${s.candidateType==="relay"?`relayProtocol:${s.relayProtocol}`:""}`),s.networkType&&na(s.networkType)),n&&this._log.info(`remote candidate: ${n.candidateType} ${n.protocol}:${n.ip||n.address}:${n.port}`);break}})}waitForPeerConnectionConnected(){return this._waitForPCConnectedPromise?this._waitForPCConnectedPromise:(this._waitForPCConnectedPromise=new Promise((e,t)=>{if(this.currentState==="CONNECTED")return e();let r=c=>{c.state==="CONNECTED"&&(clearTimeout(a),n(),e())},s=({room:c})=>{c===this._room&&(clearTimeout(a),n(),t(new N({code:I.API_CALL_ABORTED,message:V({key:L.CONNECTION_ABORTED,data:"leave room"})})))},n=()=>{A.off(C.LEAVE_SUCCESS,s,this),this.off(Di.CONNECTION_STATE_CHANGED,r,this)},a=setTimeout(()=>{n();let c=new N({code:I.API_CALL_TIMEOUT,message:"connection timeout"});i_+=1,FS(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),r_=!0,this.emit(Di.FIREWALL_RESTRICTION)),t(c)},Ns);this.clearConnectTimeout=()=>{n(),clearTimeout(a),delete this.clearConnectTimeout},this.clearWaitForConnectedPromise=()=>{this._waitForPCConnectedPromise=null,t(new N({code:I.API_CALL_TIMEOUT,message:"connection timeout"}))},A.on(C.LEAVE_SUCCESS,s,this),this.on(Di.CONNECTION_STATE_CHANGED,r,this)}),this._waitForPCConnectedPromise=this._waitForPCConnectedPromise.finally(()=>{this._waitForPCConnectedPromise=null,delete this.clearConnectTimeout}),this._waitForPCConnectedPromise)}waitForReconnected(){return this.isReconnecting?new Promise((e,t)=>{this.once("spc-reconnected",e),this.once("error",t)}):Promise.resolve()}addDownlink(e){return f(this,null,function*(){if(this._log.info(`addDownlink(${e.userId}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise),this.updateLocalAndRemoteSDPConfig(e),this.addDownlinkQueue.size===0)try{yield this.updateSDP(),this._log.info(`addDownlink(${e.userId}) done`)}catch(t){this._log.error(`addDownlink(${e.userId}) failed ${t}`),yield this.startReconnection()}})}updateLocalAndRemoteSDPConfig({ssrc:e,userId:t,tinyId:r}){if(!this._peerConnection)return;this._log.info(`updateLocalAndRemoteSDPConfig ${t} ${JSON.stringify(e)}`);let s=this._peerConnection.getTransceivers().slice(4).filter(m=>m.direction==="inactive").slice(0,3).map(m=>(m.direction=p.TRANSCEIVER_DIRECTION_RECVONLY,Number(m.mid)));this._parsedAnswer||(this._parsedAnswer=Re(this._peerConnection.remoteDescription.sdp));let n=this._parsedAnswer.media.filter(m=>{var g;return(g=m.ssrcs)==null?void 0:g.find(T=>{var _;return(_=T.value)==null?void 0:_.includes(r)})}),a,c,l;if(n.length===3)a=n[0],c=n[1],l=n[2];else if(s.length===3)a=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(s[0])),c=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(s[1])),l=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(s[2]));else if(s.length===0){this._peerConnection.addTransceiver(p.AUDIO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY}),a=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let m=wh({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:Re(this._peerConnection.localDescription.sdp),isDownlink:!0});c=JSON.parse(JSON.stringify(m)),l=JSON.parse(JSON.stringify(m)),a.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(a),c.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(c),l.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(l)}a.direction=p.TRANSCEIVER_DIRECTION_SENDONLY;let u=`${r}-${e.audio}`;a.ssrcs=[{id:e.audio,attribute:"cname",value:`${u}`},{id:e.audio,attribute:"msid",value:`${u}-${p.MAIN} ${u}-audio`}],c.direction=p.TRANSCEIVER_DIRECTION_SENDONLY,c.ssrcs=[{id:e.video,attribute:"cname",value:`${u}`},{id:e.video,attribute:"msid",value:`${u}-${p.MAIN} ${u}-bigvideo`},{id:e.videoRtx,attribute:"cname",value:`${u}`},{id:e.videoRtx,attribute:"msid",value:`${u}-${p.MAIN} ${u}-bigvideo`}],c.ssrcGroups=[{semantics:"FID",ssrcs:`${e.video} ${e.videoRtx}`}],l.direction=p.TRANSCEIVER_DIRECTION_SENDONLY;let h=`${u}-aux`;l.ssrcs=[{id:e.auxiliary,attribute:"cname",value:h},{id:e.auxiliary,attribute:"msid",value:`${h} ${u}-aux${p.VIDEO}`},{id:e.auxiliaryRtx,attribute:"cname",value:`${h} ${u}-aux${p.VIDEO}`},{id:e.auxiliaryRtx,attribute:"msid",value:`${h} ${u}-aux${p.VIDEO}`}],l.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(m=>m.mid).join(" ")),this._downlinkMIDMap.set(t,[a.mid,c.mid,l.mid]),this._downlinkMIDUserIDMap.set(a.mid,t),this._downlinkMIDUserIDMap.set(c.mid,t),this._downlinkMIDUserIDMap.set(l.mid,t)}removeDownlink(e){return f(this,null,function*(){if(!this._downlinkMIDMap.has(e)||!this._peerConnection)return;this._log.info(`removeDownlink(${e}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise);let t=this._downlinkMIDMap.get(e),r=!1;this._peerConnection.getTransceivers().forEach(s=>{t!=null&&t.includes(Number(s.mid))&&(r=!0,s.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=Re(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(s=>{t!=null&&t.includes(Number(s.mid))&&(r=!0,s.direction="inactive",s.ssrcs=[],s.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&r&&(yield this.updateSDP()),this._downlinkMIDMap.delete(e),t==null||t.forEach(s=>this._downlinkMIDUserIDMap.delete(s)),this._log.info(`removeDownlink(${e}) done`)})}setBandwidth(e){return f(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:r,smallVideo:s,auxVideo:n}=e;try{if(rn()){let a=this._peerConnection.getSenders().slice(0,4);for(let l=0;l<a.length;l++){let u=a[l],h;l===0&&t?h=t:l===1&&r?h=r:l===2&&s?h=s:l===3&&n&&(h=n),h&&(yield this.setSenderMaxBitrate(u,h))}let c=!1;r&&a[1].track&&(c=this.setStartBitrate(1,r)),n&&a[3].track&&(c=this.setStartBitrate(3,n)||c),c&&(yield this.updateSDP())}else yield this.setBandwidthBySDP(e);this._log.info(`setBandwidth ${JSON.stringify(e)}`)}catch(a){this._log.error(`failed to set bandwidth: ${a}`)}})}setStartBitrate(e,t){var r,s;return(r=this._peerConnection)!=null&&r.remoteDescription&&(this._parsedAnswer||(this._parsedAnswer=Re(this._peerConnection.remoteDescription.sdp)),(s=this._parsedAnswer.media[e])!=null&&s.fmtp[0])?(this._parsedAnswer.media[e].fmtp[0].config+=`;x-google-start-bitrate=${t>5e3?5e3:t}`,!0):!1}setSenderMaxBitrate(e,t){let r=e.getParameters();return(!r.encodings||r.encodings.length===0)&&(r.encodings=[{}]),t==="unlimited"?delete r.encodings[0].maxBitrate:r.encodings[0].maxBitrate=t*1e3,e.setParameters(r)}setBandwidthBySDP({audio:e,bigVideo:t,smallVideo:r,auxVideo:s}){if(!this._peerConnection||!this._peerConnection.localDescription)return;let n=Re(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=Re(this._peerConnection.remoteDescription.sdp));let a=ne?"TIAS":"AS";e&&(n.media[0].bandwidth=[{type:a,limit:ne?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:a,limit:ne?e*1e3:e}]),t&&(n.media[1].bandwidth=[{type:a,limit:ne?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:a,limit:ne?t*1e3:t}]),r&&(n.media[2].bandwidth=[{type:a,limit:ne?r*1e3:r}],this._parsedAnswer.media[2].bandwidth=[{type:a,limit:ne?r*1e3:r}]),s&&(n.media[3].bandwidth=[{type:a,limit:ne?s*1e3:s}],this._parsedAnswer.media[3].bandwidth=[{type:a,limit:ne?s*1e3:s}]);let c={type:"offer",sdp:Pt(n)};return this.updateSDP({localDescription:c})}setScaleResolutionDownBy(e,t,r){let s=e.getParameters();(!s.encodings||s.encodings.length===0)&&(s.encodings=[{}]);let n=s.encodings[0].scaleResolutionDownBy;if(E(n)?t===1:t===n)return;let a=`setScaleResolutionDownBy ${r} ${t}`;return n&&(a+=` prevScale: ${n}`),this._log.warn(a),s.encodings[0].scaleResolutionDownBy=t,e.setParameters(s)}setDegradationPreference(e,t,r){if(Ke&&dt<83||Ie&&Xs(Tt,"12.1")||ne&&Do<138)return;let s=e.getParameters(),n="balanced";if(t==="motion"?n="maintain-framerate":t==="detail"&&(n="maintain-resolution"),s.degradationPreference===n)return;let a=`setDegradationPreference ${r} ${n}`;return this._log.info(a),s.degradationPreference=n,e.setParameters(s).catch(c=>this._log.warn(`${a} failed: ${c}`))}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=Pt(this._parsedAnswer);return this._updateSDPPromise=new Promise((r,s)=>f(this,null,function*(){var n,a;try{!e&&this._peerConnection&&(this._log.info("creating offer"),e=yield this._peerConnection.createOffer()),e&&(yield this.setOffer(e)),yield this.setAnswer({type:"answer",sdp:t}),this._updateSDPPromise=null,r()}catch(c){this._log.error(c),!this._isSDPLogged&&this._peerConnection&&(this._log.warn(`current offer: ${this.filterSDPDirection((n=this._peerConnection.localDescription)==null?void 0:n.sdp)}
|
|
119
|
-
next offer: ${this.filterSDPDirection(e==null?void 0:e.sdp)}`),this._log.warn(`current answer: ${this.filterSDPDirection((a=this._peerConnection.remoteDescription)==null?void 0:a.sdp)}
|
|
120
|
-
next answer: ${this.filterSDPDirection(t)}`),this._log.warn(`offer: ${e==null?void 0:e.sdp}`),this._log.warn(`answer: ${t}`),this._log.warn(`transceivers: ${JSON.stringify(this._peerConnection.getTransceivers().map(({mid:l,currentDirection:u,direction:h,stopped:m})=>({mid:l,currentDirection:u,direction:h,stopped:m})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,s(c)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return f(this,null,function*(){if(!ne||!this._peerConnection||!this._parsedAnswer)return;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let r=this._peerConnection.getTransceivers();t.forEach(s=>{r[s].direction!==e&&(r[s].direction=e)});for(let s of t){let n=this._parsedAnswer.media[s].direction;e===ie.INACTIVE&&n===ie.RECVONLY&&(this._parsedAnswer.media[s].direction=e),e===ie.SENDONLY&&n===ie.INACTIVE&&(this._parsedAnswer.media[s].direction=ie.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(e=""){return Re(e).media.map(r=>r.direction)}setOffer(e){this._log.info("setting offer");let t=Xf(e.sdp,this.clientAbility,this._serverAbility);return this._log.debug(t),this._peerConnection.setLocalDescription({type:"offer",sdp:t})}setAnswer(e){return this._log.info("setting answer"),this._log.debug(e.sdp),this._peerConnection.setRemoteDescription(e)}switchVideoEncoder(e){return f(this,null,function*(){if(e==="h265"&&!this._parsedAnswer&&(this._parsedAnswer=Re(this._peerConnection.remoteDescription.sdp)),!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let t=!1;this._parsedAnswer.media.forEach(r=>{var s;if(r.type===p.VIDEO){let n=this._serverAbility.video.codecs.find(a=>a.codec.toLowerCase()===e);n&&!((s=r.payloads)!=null&&s.includes(String(n.payload)))&&(r.fmtp=[],r.payloads="",r.rtp=[],r.rtcpFb=[],ao(r,n),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}useHWEncoder(e=!0,t){return f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let r=!1,s=[];E(t)?s=this._parsedAnswer.media.slice(1,4):t===2?s.push(this._parsedAnswer.media[1]):t===3?s.push(this._parsedAnswer.media[2]):t===7&&s.push(this._parsedAnswer.media[3]),s.forEach(n=>{var a;if(n.type===p.VIDEO){let c;e&&this.is42001fSupported?c=this.clientAbility.video.codecs.find(l=>l.fmtp.includes("42001f")):e||(c=this._serverAbility.video.codecs.find(l=>l.codec.toLowerCase()===(this._serverAbility.useVp8?"vp8":"h264"))),c&&!((a=n.payloads)!=null&&a.includes(String(c.payload)))&&(n.fmtp=[],n.payloads="",n.rtp=[],n.rtcpFb=[],ao(n,c),r=!0)}}),r&&(this._log.warn(`use ${e?"hw":"sw"} encoder`),yield this.updateSDP())})}sendDataChannelMessage(e){var t;(t=this._datachannel)==null||t.send(e)}reset(){var e;this._peerConnection&&(this._peerConnection.close(),this._peerConnection.removeEventListener("track",this._peerConnection._onaddstreampoly,this),this._peerConnection._onaddstreampoly=null,this._peerConnection=null),(e=this.clearWaitForConnectedPromise)==null||e.call(this),this._parsedAnswer=null,this.originOffer=null}close(){this._log.info("close pc"),this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>hi(e.abort)&&e.abort("destroy")),this.insertableStreamsAbortMap.clear(),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this._downlinkMIDMap.clear(),this.stopReconnection(),this.removeAllListeners(),this._room.healthDetector.off("1",this.onBadHealth,this)}getReceiversByUserId(e){if(!this._peerConnection)return[];let t=this._peerConnection.getReceivers();return(this._downlinkMIDMap.get(e)||[]).map(r=>t[r])}get isUsingRelay(){return this._room.getIceTransportPolicy()==="relay"}detectTCPAndUDP({uplinkRTT:e,downlinkRTT:t}){var u;if(this.currentState!=="CONNECTED"||this._isRelayTried&&!this._room.forceRelay||this._room.getIceServers().length===0)return;let r=this._signalChannel.rtt,s=Math.max(e,t),{rttRatioThreshold:n,rttThreshold:a}=((u=this._room.scheduleResult.config)==null?void 0:u.useTurnTcpInfo)||{};if(!n||!a||!r||!s)return;let c=Math.floor(s/r),l=(this._isRelayTried||c>n)&&s>a;if(!l){this._rttOverCount=0;return}++this._rttOverCount<5||(this._log.warn(`detectTCPAndUDP ws-rtt: ${r} upRTT: ${e} downRTT: ${t} ratio: ${c} over-count: ${this._rttOverCount} isOver: ${l} isRelayTried: ${this._isRelayTried} force-relay: ${this._room.forceRelay}`),!this.isUsingRelay&&!this._isRelayTried?(this._isRelayTried=!0,this._rttOverCount=0,this.switchRelay(!0)):this._room.forceRelay&&this.switchRelay(!1))}switchRelay(e,t=!1){return f(this,null,function*(){if(this.isUsingRelay===e)return;let r=e?"relay":"udp",s=e?521709:521710;try{this._room.forceRelay=e,this._log.warn(`switchRelay ${r}`);let n=Date.now();yield this.doSwitchRelay(r),this._log.warn(`switchRelay ${r} success`),v.addSuccessEvent({key:s,cost:Date.now()-n})}catch(n){this._log.warn(`switchRelay ${r} failed`,n),v.addFailedEvent({key:s,error:n}),t?this._room.reJoin():yield this.switchRelay(!e,!0)}})}doSwitchRelay(e){return new Promise((t,r)=>{let s=setTimeout(()=>{this.stopReconnection(),r(new Error(`switch ${e} timeout`))},1e4);this.startReconnection().then(t,r).finally(()=>clearTimeout(s))})}removeRTCListener(){this._peerConnection&&(this._peerConnection.oniceconnectionstatechange=null,this._peerConnection.onconnectionstatechange=null,this._peerConnection.onsignalingstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}requestRemoteFallbackToH264(){this._log.warn("H265 decode failed, remote need to fallback h264"),this._h265DecodeFailed=!0,this._signalChannel.sendWaitForResponse({command:Y.UPDATE_CONSTRAINT_CONFIG,data:{videoDecCodec:"h264"},responseCommand:F.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)})}};O([dc("reconnect")],ai.prototype,"startReconnection",1),O([zi(e=>e.userId)],ai.prototype,"addDownlink",1),O([zi(e=>e)],ai.prototype,"removeDownlink",1),O([Dt(!0)],ai.prototype,"updateSDP",1),O([pt(521712,!1)],ai.prototype,"setOffer",1),O([pt(521713,!1)],ai.prototype,"setAnswer",1);var xh=class{constructor(i){d(this,"tag");d(this,"len");d(this,"data");let e=new DataView(i);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(i).slice(4,4+this.len).buffer}},Lh=class{constructor(i){d(this,"tinyId");d(this,"data");let e=new DataView(i),t=0,r=[];for(;t<e.byteLength;){let s=e.getUint16(t+2),n=new xh(new Uint8Array(i).slice(t,t+2+2+s).buffer);r.push(n),t+=4+s}r.forEach(s=>{s.tag===1?this.tinyId=new TextDecoder().decode(s.data):s.tag===2&&(this.data=s.data)})}},e_=new Set;function yt(){let o=Math.floor(Math.random()*4294967296);return e_.has(o)?yt():(e_.add(o),o)}var o_=He(Qe());var co=class extends o_.default{constructor(e){super();d(this,"userId");d(this,"tinyId");d(this,"_sdpSemantics");d(this,"_isUplink");d(this,"_room");d(this,"_log");d(this,"_currentState","DISCONNECTED");d(this,"_prevTime",-1);d(this,"_blackSmallVideoDetectionId");this.userId=e.userId,this.tinyId=e.tinyId,this._room=e.room,this._sdpSemantics=e.room.sdpSemantics,this._isUplink=e.isUplink,this._log=y.createLogger({id:"n",userId:this._room.userId,remoteUserId:this._isUplink?void 0:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink})}get _peerConnection(){var e;return((e=this.singlePC)==null?void 0:e.getPeerConnection())||null}get singlePC(){return this._room.singlePC}get _signalChannel(){return this._room.signalChannel}close(e){this._log.info("close connection"),this.emit("closed",e)}emitConnectionStateChangedEvent(e){return e===this._currentState?!1:(A.emit(C.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:e,remoteUserId:this._isUplink?void 0:this.userId}),this.emit("connection-state-changed",{prevState:this._currentState,state:e}),this._currentState=e,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}getCurrentState(){return this._currentState}get isH264(){var e,t;return!!((t=(e=this._peerConnection)==null?void 0:e.remoteDescription)!=null&&t.sdp.includes("H264"))}};var Ph=class{constructor(){d(this,"worker");d(this,"callbacks",new Map);d(this,"_log");d(this,"sleep",{});d(this,"heartbeatListenerCleaner",new Map);d(this,"userIdMap",new Map);this._log=y.createLogger({id:"bvd"})}getWorker(){if(!this.worker){let i=`
|
|
121
|
-
const tracks=new Map;let canvas,ctx;const log=(...t)=>postMessage({type:"log",message:"[worker] "+t.join(" ")});function startDetection(e,t,a){if(!tracks.has(e)){const c={reader:a.getReader(),blackCount:0,timeoutId:null,intervalId:null};tracks.set(e,c),c.timeoutId=setTimeout(()=>stopDetection(e,"timeout"),t),c.intervalId=setInterval(async()=>{try{await isFrameBlack(e)?(c.blackCount++,postMessage({type:"blackCount",trackId:e,count:c.blackCount}),3<=c.blackCount&&(postMessage({type:"black",trackId:e}),stopDetection(e,"black"))):c.blackCount=0}catch(t){log("check black video error:",t.message),stopDetection(e,"error")}},1e3)}}function stopDetection(t,e){var a=tracks.get(t);a&&(a.timeoutId&&clearTimeout(a.timeoutId),a.intervalId&&clearInterval(a.intervalId),a.reader&&a.reader.cancel(),tracks.delete(t),postMessage({type:e,trackId:t}))}async function isFrameBlack(t){t=tracks.get(t);if(!t)return!1;var t=t.reader,{done:t,value:e}=await t.read();if(!e||t)return!1;canvas||(canvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),ctx=canvas.getContext("2d",{willReadFrequently:!0})),canvas.width===e.codedWidth&&canvas.height===e.codedHeight||(canvas.width=e.codedWidth,canvas.height=e.codedHeight,ctx=canvas.getContext("2d",{willReadFrequently:!0})),ctx.drawImage(e,0,0,canvas.width,canvas.height);t=getFrameBlackRatio(ctx.getImageData(0,0,canvas.width,canvas.height));return e.close(),1===t}function getFrameBlackRatio(t){var e=t.data;let a=0;for(let t=0;t<100;t++){var c=4*Math.floor(Math.random()*(e.length/4)),[c,r,n,o]=[e[c],e[1+c],e[2+c],e[3+c]];0<o&&0===c&&0===r&&0===n&&a++}return a/100}self.onmessage=t=>{var{type:t,trackId:e,timeout:a,readable:c}=t.data;"addTrack"===t&&startDetection(e,a,c),"removeTrack"===t&&stopDetection(e)};
|
|
122
|
-
`,e=new Blob([i],{type:"application/javascript"}),t=URL.createObjectURL(e);this.worker=new Worker(t),URL.revokeObjectURL(t),this.worker.onerror=r=>this._log.warn("worker error:",r.message,r.filename||"unknown",r.lineno||"unknown"),this.worker.onmessage=r=>{var l;let{type:s,trackId:n,message:a,count:c}=r.data;if(s==="black")(l=this.callbacks.get(n))==null||l();else if(s==="log")this._log.warn(a);else if(s==="blackCount"){let u=this.userIdMap.get(n);this._log.warn(`${u||n} black count: ${c}`)}}}return this.worker}start({track:i,isUplink:e,room:t,userId:r,onBlack:s}){if(this._log.debug("start detect black video",i.id),!Ks()||!s||!i||typeof Worker=="undefined"){this._log.warn("black video detector not supported");return}let n=a=>{var l,u,h,m;let c;if(e)c=(u=(l=a.msg_up_stream_info)==null?void 0:l.msg_video_status)==null?void 0:u.filter(g=>g.uint32_video_stream_type===3)[0];else{let g=(h=a.msg_down_stream_info)==null?void 0:h.filter(T=>{var _;return((_=T.msg_user_info)==null?void 0:_.str_identifier)===r})[0];c=(m=g==null?void 0:g.msg_video_status)==null?void 0:m.filter(T=>T.uint32_video_stream_type===3)[0]}if(c){let g=(c.uint32_video_codec_bitrate||0)/1e3;if(this.sleep[i.id]&&this.sleep[i.id]>0){this.sleep[i.id]-=1;return}g>0&&g<10&&(this.sleep[i.id]=30,this._log.info("track bitrate",g,"start check"),this.checkOnce(i,30*1e3))}};return t.on("heartbeat-report",n),this.heartbeatListenerCleaner.set(i.id,()=>t.off("heartbeat-report",n)),this.callbacks.set(i.id,s),this.userIdMap.set(i.id,r),i.id}checkOnce(i,e){try{let t=this.getWorker();if(!t)throw new Error("Worker not available");let r=new MediaStreamTrackProcessor({track:i});t.postMessage({type:"addTrack",trackId:i.id,timeout:e,readable:r.readable},[r.readable])}catch(t){this._log.warn("check error:",t),this.stop(i.id)}}stop(i){if(i){this.worker&&this.worker.postMessage({type:"removeTrack",trackId:i}),this.callbacks.delete(i),delete this.sleep[i];let e=this.heartbeatListenerCleaner.get(i);e&&e(),this.heartbeatListenerCleaner.delete(i),this.userIdMap.delete(i)}}destroy(){this.callbacks.forEach((i,e)=>this.stop(e)),this.worker&&(this.worker.terminate(),this.worker=null)}},or=new Ph;var $n=class extends co{constructor(e){super(w(D({},e),{isUplink:!0}));d(this,"localMainAudioTrack",null);d(this,"localMainVideoTrack",null);d(this,"localAuxAudioTrack",null);d(this,"localAuxVideoTrack",null);d(this,"_isPublishingAux",!1);d(this,"_publishingLocalAudioTrack");d(this,"_publishingLocalVideoTrack");d(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,videoDecCodec:"",audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});d(this,"_flag",0);d(this,"_checkPublishStateTimeoutId",-1);this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.videoCodec)||"h264"}get ssrc(){if(!this.singlePC)return{audio:0,video:0,videoRtx:0,small:0,smallRtx:0,auxiliary:0,auxiliaryRtx:0};let{audioSsrc:e,bigVideoSsrc:t,bigVideoRtxSsrc:r,smallVideoSsrc:s,smallVideoRtxSsrc:n,auxVideoSsrc:a,auxVideoRtxSsrc:c}=this.singlePC.uplinkSSRC;return{audio:e||0,video:t||0,videoRtx:r||0,small:s||0,smallRtx:n||0,auxiliary:a||0,auxiliaryRtx:c||0}}get flag(){return this._flag}set flag(e){this._flag!==e&&(this._flag=e,this.checkPublishState())}checkPublishState(e=!1){try{if(!e&&this._checkPublishStateTimeoutId>0)return;let{publishState:t,serverPublishState:r}=this,s=Object.keys(t).filter(n=>{if(t[n]!==r[n]&&t[n])switch(n){case"audio":return!(!this.localMainAudioTrack||!this.localMainAudioTrack.isMediaTrackActive);case"bigVideo":case"smallVideo":return!(!this.localMainVideoTrack||!this.localMainVideoTrack.isMediaTrackActive);case"auxVideo":return!(!this.localAuxVideoTrack||!this.localAuxVideoTrack.isMediaTrackActive)}return!1});if(s.length>0){if(e)v.addCount({key:521e3}),s.forEach(n=>{this._log.warn(`${n} publish failed during call ${$i()} ${Vr()}`),v.addEnum({key:521719,value:s_[n]})});else{this._checkPublishStateTimeoutId=re.run("timeout",()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}re.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}}catch(t){this._log.warn("checkPublishState failed",t)}}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,s,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(_i()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((s=a[2])!=null&&s.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(c=>{c.track&&(c.track.kind===p.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}get publishingState(){let{publishState:e}=this,t=D({},e);return this._publishingLocalAudioTrack&&(t.audio=!0),this._publishingLocalVideoTrack&&(this._isPublishingAux?t.auxVideo=!0:(t.bigVideo=!0,this._publishingLocalVideoTrack.small&&(t.smallVideo=!0))),t}get serverPublishState(){return{audio:!!(this.flag&dr),bigVideo:!!(this.flag&cr),smallVideo:!!(this.flag&bs),auxVideo:!!(this.flag&yr)}}get muteState(){var e,t,r;return{audio:!!((e=this.localMainAudioTrack)!=null&&e.muted),bigVideo:!!((t=this.localMainVideoTrack)!=null&&t.muted),auxVideo:!!((r=this.localAuxVideoTrack)!=null&&r.muted)}}initialize(){this.installEvents()}close(e){var r;let t=((r=this._peerConnection)==null?void 0:r.getSenders())||[];for(let s of t)s.replaceTrack(null);super.close(e),this.uninstallEvents(),this.uninstallTrackMuteEvents(this.localMainAudioTrack,this.localMainVideoTrack,this.localAuxVideoTrack),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this.on("connection-state-changed",this.handleConnectionStateChange,this),this.installSPCEvents()}installSPCEvents(){var e,t;(e=this.singlePC)!=null&&e.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||(t=this.singlePC)==null||t.on("spc-reconnected",this.onSinglePCReconnected,this)}uninstallSPCEvents(){var e;(e=this.singlePC)==null||e.off("spc-reconnected",this.onSinglePCReconnected,this)}uninstallEvents(){this.off("connection-state-changed",this.handleConnectionStateChange,this),this.uninstallSPCEvents()}emitConnectionStateChangedEvent(e,t){var n,a,c;let r=this._currentState,s=super.emitConnectionStateChangedEvent(e);return s&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:r,state:e}))),s}onVideoEncodeFailed(e){if(!e||!e.isMediaTrackActive)return;let{videoCodec:t,singlePC:r}=this;if(!r)return;let n={h265:{supported:r.isH264EncodeSupported,target:"h264",log:"h265 encoder not working, switch to h264"},h264:{supported:r.isVP8EncodeSupported,target:"vp8",log:"h264 encoder not working, switch to vp8"},vp8:{supported:!1,target:"vp8",log:"vp8 encoder not working, no fallback available"}}[t];this._log.warn(n.log),n!=null&&n.supported&&r.switchVideoEncoder(n.target)}publish(s){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){var l,u,h,m,g,T,_;if(!this.singlePC)return;this.installEvents(),yield this.singlePC.waitForPeerConnectionConnected();let{publishState:n,muteState:a}=this;if(e&&(this._publishingLocalAudioTrack=e,n.audio=!0,a.audio=e.muted),t){if(!this.singlePC.isH264EncodeSupported&&!this.singlePC.isVP8EncodeSupported)throw new N({code:I.NOT_SUPPORTED_H264,message:V({key:L.NOT_SUPPORTED_H264ENCODE})});this.singlePC.isUsingH264&&!this.singlePC.isH264EncodeSupported&&this.singlePC.isVP8EncodeSupported&&(this._log.warn("h264 encoder not supported"),yield this.singlePC.switchVideoEncoder("vp8")),pe&&Po()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn(`fallback video to defaultBigVideoProfile: ${JSON.stringify(ar)}`),t.setProfile(ar),yield t.applyProfile()),this._publishingLocalVideoTrack=t,r?(n.auxVideo=!0,a.auxVideo=t.muted):(n.bigVideo=!0,a.bigVideo=t.muted)}this._isPublishingAux=r;let c;if(t&&!r&&t.small&&(c=this._room.videoManager.smallTrack,n.smallVideo=!0),yield this._signalChannel.sendWaitForResponseWithRetry({command:Y.SPC_PUBLISH,responseCommand:F.SPC_PUBLISH_RESULT,data:w(D({},this.singlePC.uplinkSSRC),{state:n,muteState:a}),retries:3}),yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:c,isAuxiliary:r}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,t){this[r?"localAuxVideoTrack":"localMainVideoTrack"]=t,yield this.singlePC.setDegradationPreference(this._peerConnection.getSenders()[r?3:1],t.contentHint,t.streamType);let{scaleResolutionDownBy:S}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[r?3:1],S,t.streamType)}e&&(this[r?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((l=this.localMainAudioTrack)==null?void 0:l.profile.bitrate)||((u=this.localAuxAudioTrack)==null?void 0:u.profile.bitrate),bigVideo:(h=this.localMainVideoTrack)==null?void 0:h.profile.bitrate,smallVideo:(g=(m=this.localMainVideoTrack)==null?void 0:m.small)==null?void 0:g.bitrate,auxVideo:(T=this.localAuxVideoTrack)==null?void 0:T.profile.bitrate}),this.sendMediaSettings(),this.installTrackMuteEvents(e,t),(this._room.preferHW||(_=this._room.scheduleResult.config)!=null&&_.preferHW)&&t&&t.profile.width*t.profile.height>=1280*720&&this.singlePC.useHWEncoder(!0,r?7:2)})}publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:s}){if(!ut())return;this._log.info("publish by transceiver");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack,c=this._peerConnection.getTransceivers(),l=[],u=[],h=(g,T,_)=>{var R;let S=c[T].sender.replaceTrack(_);u.push(T),(R=this.singlePC)!=null&&R.enableInsertableStreams&&S.then(()=>this.createEncodedStreams(c[T].sender,g)),this.initSenderTransform(c[T].sender,g),l.push(S)};a&&h(e.mediaType,0,a),n&&h(t.mediaType,s?3:1,n),t!=null&&t.small&&l.push(this.publishSmall(this._room.videoManager.smallMode,t));let m=this.singlePC.setTransceiverDirection(ie.SENDONLY,u);return l.push(m),Promise.all(l)}getTrackByMediaType(e){switch(e){case 1:return this.localMainAudioTrack||this._publishingLocalAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._publishingLocalVideoTrack;case 2:return this.localAuxVideoTrack||this._publishingLocalVideoTrack;default:return null}}createEncodedStreams(e,t){var a,c;if(this.singlePC.insertableStreamsAbortMap.has(e))return;let r=e.createEncodedStreams(),s=new AbortController;(a=this.singlePC)==null||a.addAbortController(e,s),((c=this.getTrackByMediaType(t))!=null&&c.enableEncodeFrame?r.readable.pipeThrough(new TransformStream({transform:(l,u)=>{var m,g;let h=this.getTrackByMediaType(t);u.enqueue(((m=this.singlePC)!=null&&m.isUsingH264||(g=this.singlePC)!=null&&g.isUsingH265)&&h?h.encodeFrame(l,t===8):l)}}),s):r.readable).pipeTo(r.writable,s).catch(l=>{this._log.debug("encoded stream error",l),l!=="destory"&&this._log.warn(l)})}initSenderTransform(e,t){if(!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||!Jo)return;let r=t!==2,s=t===8;e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:t===1,isMain:r,isSmall:s}))}enableSmall(e){return f(this,null,function*(){e?yield this.publishSmall(this._room.videoManager.smallMode):yield this.unpublishSmall()})}publishSmall(r){return f(this,arguments,function*(e,t=this.localMainVideoTrack){var l;if(!this.singlePC)return;if(e==="canvas"&&!Ja()){this._log.warn("canvas mode small stream is not supported");return}let s=this._peerConnection.getTransceivers(),{sender:n}=s[2],a=yield this.doPublishSmall(e,t),c=e==="canvas"?524700:524701;if(v.addSuccessEvent({key:c}),!a){v.addFailedEvent({key:c,error:10001});return}(l=this.singlePC)!=null&&l.enableInsertableStreams&&this.createEncodedStreams(n,8),this.initSenderTransform(n,8),yield this.singlePC.setTransceiverDirection(ie.SENDONLY,[2]),this.updateMediaSettings(),yield this.doPublishChange(),this._blackSmallVideoDetectionId=or.start({track:n.track,room:this._room,isUplink:!0,userId:this.userId,onBlack:()=>{this._log.warn("small video is black");let u=e==="canvas"?524700:524701;v.addFailedEvent({key:u,error:10002}),or.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}})})}doPublishSmall(r){return f(this,arguments,function*(e,t=this.localMainVideoTrack){if(!this.singlePC)return null;this._log.info("publish small",e);let s=this._peerConnection.getTransceivers(),{sender:n}=s[2];if(e==="canvas"&&this._room.videoManager.smallTrack)return yield n.replaceTrack(this._room.videoManager.smallTrack),"canvas";if(e==="api"&&(t!=null&&t.outMediaTrack)&&(t!=null&&t.small)){yield n.replaceTrack(t==null?void 0:t.outMediaTrack);let a=n.getParameters(),c=Ro(t==null?void 0:t.profile,t==null?void 0:t.small);return this._log.info("small scaleResolutionDownBy",c),a.encodings[0].scaleResolutionDownBy=c,n.setParameters(a),"api"}return this._log.warn(`small track can not be enabled, smallMode: ${this._room.videoManager.smallMode}, smallTrack: ${!!this._room.videoManager.smallTrack}, bigVideoTrack: ${!!(t!=null&&t.outMediaTrack)}`),null})}unpublishSmall(){return f(this,null,function*(){if(!this.singlePC)return;this._log.info("unpublish small"),yield this._peerConnection.getTransceivers()[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(ie.INACTIVE,[2]),this.updateMediaSettings(),yield this.doPublishChange(),or.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){var l;yield(l=this.singlePC)==null?void 0:l.waitForPeerConnectionConnected();let s=t&&t===this.localAuxVideoTrack||e&&e===this.localAuxAudioTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(s?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localMainAudioTrack&&!this.localAuxAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(s?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=w(D({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),c.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=w(D({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),c.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.singlePC.setTransceiverDirection(ie.INACTIVE,c),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return f(this,null,function*(){let t={state:this.publishingState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponseWithRetry({command:Y.PUBLISH_STATE_CHANGE,data:t,responseCommand:F.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,commandDesc:"unpublish",responseCommand:F.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===I.API_CALL_TIMEOUT||t.getCode()===I.API_CALL_ABORTED)return Promise.resolve();throw t})}updateMediaSettings(){var s,n;this._mediaSettings.videoCodec=((s=this.singlePC)==null?void 0:s.videoCodec)||"h264",this._mediaSettings.videoDecCodec=((n=this.singlePC)==null?void 0:n.downlinkVideoCodec)||"h264";let e=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:t,localAuxVideoTrack:r}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?r=this._publishingLocalVideoTrack:t=this._publishingLocalVideoTrack),gi){if(e&&e.outMediaTrack){let a=e.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(t&&t.outMediaTrack){let a=t.outMediaTrack.getSettings(),{scaleResolutionDownBy:c}=t;this._mediaSettings.videoWidth=a.width/c||0,this._mediaSettings.videoHeight=a.height/c||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=t.profile.bitrate*1e3,t.small&&(this._mediaSettings.smallVideoWidth=t.small.width,this._mediaSettings.smallVideoHeight=t.small.height,this._mediaSettings.smallVideoFps=t.small.frameRate,this._mediaSettings.smallVideoBps=t.small.bitrate*1e3)}if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings(),{scaleResolutionDownBy:c}=r;this._mediaSettings.auxVideoWidth=a.width/c||0,this._mediaSettings.auxVideoHeight=a.height/c||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=r.profile.bitrate*1e3}}else e&&e.outMediaTrack&&(this._mediaSettings.audioChannel=e.profile.channelCount,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=e.profile.sampleRate),t&&t.outMediaTrack&&(this._mediaSettings.videoWidth=t.profile.width,this._mediaSettings.videoHeight=t.profile.height,this._mediaSettings.videoFps=t.profile.frameRate,this._mediaSettings.videoBps=t.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Y.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:F.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?p.AUXILIARY:p.MAIN} stream`),_i()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return f(this,null,function*(){var s;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((s=this.localMainVideoTrack)!=null&&s.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===ie.INACTIVE&&(yield this.singlePC.setTransceiverDirection(ie.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?p.AUXILIARY:p.MAIN} stream`),_i()&&(yield this.removeTrackByTransceiver(e,t))})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(null);else{let s=t?3:1;yield r[s].sender.replaceTrack(null),s===1&&this._room.videoManager.hasSmall&&(yield r[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(ie.INACTIVE,[s])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(e){return f(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders(),r=e.outMediaTrack||e.mediaTrack;if(!t||t.length===0||!r||t.find(a=>a.track===r))return!1;let s=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${r.kind} track ${r.id} ${r.label} on ${s?p.AUXILIARY:p.MAIN} stream`),r.kind===p.AUDIO&&t[0]&&(yield t[0].replaceTrack(r)),r.kind===p.VIDEO&&(!s&&t[1]&&(yield t[1].replaceTrack(r)),s&&t[3]&&(yield t[3].replaceTrack(r))),!0})}setBandwidth(s){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r}){if(this.singlePC){let n={};t===p.AUDIO?n.audio=e:r==="big"?n.bigVideo=e:r==="small"?n.smallVideo=e:n.auxVideo=e,yield this.singlePC.setBandwidth(n)}})}sendMutedFlag(e){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info(`send muted state: ${JSON.stringify(this.muteState)}`),this._signalChannel.sendWaitForResponseWithRetry({command:Y.UPDATE_MUTE_STAT,responseCommand:F.MUTE_RESULT,data:this.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&A.emit(C.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(e=p.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===p.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===p.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===p.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===p.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===br?(this._log.error($e.NOT_SUPPORTED_H264ENCODE),new N({code:I.NOT_SUPPORTED_H264,message:V({key:L.NOT_SUPPORTED_H264ENCODE})})):new N({code:I.UNKNOWN,message:V({key:L.SIGNAL_RESPONSE_FAILED,data:{signalResponse:F.PUBLISH_RESULT,code:e,message:t}})})}onSinglePCReconnected(){return f(this,null,function*(){this.isMainStreamPublished&&(this._log.warn("republish main stream"),yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(this._log.warn("republish aux stream"),yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0}))})}};O([st(function({localVideoTrack:e}){e==null||e.once("6",this.onVideoEncodeFailed,this)})],$n.prototype,"publish",1),O([st(function({localVideoTrack:e}){e==null||e.off("6",this.onVideoEncodeFailed,this)})],$n.prototype,"unpublish",1);var s_=(r=>(r[r.audio=1]="audio",r[r.bigVideo=2]="bigVideo",r[r.smallVideo=3]="smallVideo",r[r.auxVideo=4]="auxVideo",r))(s_||{}),Vh=$n;function n_(o){return Object.keys(o).filter(i=>o[i])}var Ts=class extends co{constructor(e){super(w(D({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"remoteAudioTrack");d(this,"remoteVideoTrack");d(this,"remoteAuxiliaryTrack");d(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0});d(this,"jitterBufferTimeoutId",-1);d(this,"_videoCodec");this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=new oi(this._room,this),this.remoteVideoTrack=new yi(this._room,this),this.remoteAuxiliaryTrack=new ns(this._room,this),this.initialize()}get videoCodec(){var e;return this._videoCodec||((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264"}set videoCodec(e){this._videoCodec=e}get subscribeState(){return{audio:this.remoteAudioTrack.isSubscribed||this.remoteAudioTrack.isSubscribing,video:this.remoteVideoTrack.isBig&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),smallVideo:this.remoteVideoTrack.isSmall&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),auxiliary:this.remoteAuxiliaryTrack.isSubscribed||this.remoteAuxiliaryTrack.isSubscribing}}get muteState(){return $t(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,s;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(s=this.remoteAuxiliaryTrack)==null||s.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===p.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){this.installEvents()}close(e){clearTimeout(this.jitterBufferTimeoutId),super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents(),this.removeDownlink()}installEvents(){this.singlePC&&(this.listeners("track").includes(this.onTrack)||this.singlePC.on("track",this.onTrack,this),this.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||this.singlePC.on("spc-reconnected",this.onSinglePCReconnected,this),this.remoteVideoTrack.on("decode-failed",this.onDecodeFailed,this))}uninstallEvents(){this.singlePC&&(this.singlePC.off("track",this.onTrack,this),this.singlePC.off("spc-reconnected",this.onSinglePCReconnected,this),this.remoteVideoTrack.off("decode-failed",this.onDecodeFailed,this))}emitConnectionStateChangedEvent(e){var s,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((s=this.remoteVideoTrack)==null||s.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){var u,h;let t=e.streams[0],{track:r,receiver:s}=e;if(!t.id.includes(this.tinyId))return;let a=t.id.includes("aux")?"auxiliary":"main";this._log.debug(`ontrack ${a} ${r.kind}`);let c=p.AUDIO;r.kind===p.VIDEO&&(c=a===p.MAIN?p.VIDEO:p.AUXILIARY);let l=this.remoteAudioTrack;c===p.VIDEO?l=this.remoteVideoTrack:c===p.AUXILIARY&&(l=this.remoteAuxiliaryTrack),(u=this.singlePC)==null||u.receiverRemoteTrackMap.set(s,l),(h=this.singlePC)!=null&&h.scriptTransformWorker&&this.initReceiverTransform(s,a,r.kind===p.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(s),l.setInputMediaStreamTrack(r)}createEncodedStreams(e){if(!this.singlePC.insertableStreamsAbortMap.has(e)){let t=e.createEncodedStreams(),r=new AbortController,s={abortController:r,enqueue:n=>{var c,l,u;let a=(c=this.singlePC)==null?void 0:c.receiverRemoteTrackMap.get(e);return!a||a.kind==="video"&&!((l=this.singlePC)!=null&&l.isUsingH264)&&!((u=this.singlePC)!=null&&u.isUsingH265)?n:a.decodeFrame(n)}};t.readable.pipeThrough(new TransformStream({transform:(n,a)=>{let c=s.enqueue(n);c&&a.enqueue(c)}})).pipeTo(t.writable,r).catch(n=>{n!=="destory"&&this._log.warn(n)}),this.singlePC.addAbortController(e,r)}}initReceiverTransform(e,t,r){!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!0,isAudio:r,userId:this.userId,streamType:t}))}subscribe(e,t){return f(this,null,function*(){var r,s;try{let n=!0;if(this._log.info(`subscribe ${t} ${n_(e)}`),this.hasSSRC){let a="subscribe_change";Object.values(e).find(c=>c===!0)||(a="unsubscribe"),yield this.sendSubscription(a,e)}else{if(yield this._room.switchRoomSubedReq,(r=this.singlePC)!=null&&r.autoSubscribedUserMap.size){let a=this.singlePC.autoSubscribedUserMap.get(this.userId);if(a){this.singlePC.autoSubscribedUserMap.delete(this.userId);let c=(s=this.singlePC.autoSubscribedSsrcGroups.get(this._room.roomId))==null?void 0:s[a.groupIndex];c&&(this.ssrc={audio:c.audioSsrc,video:c.bigVideoSsrc,videoRtx:c.bigVideoRtxSsrc,auxiliary:c.auxVideoSsrc,auxiliaryRtx:c.auxVideoRtxSsrc},n=!1)}}yield this.doSubscribe(e,n),this.checkTrackEnded(e)}if(e.smallVideo){let{user:a,mediaTrack:c}=this.remoteVideoTrack;v.addSuccessEvent({key:524702}),this._blackSmallVideoDetectionId=or.start({track:c,isUplink:!1,room:this._room,userId:this.userId,onBlack:()=>{this._log.warn("small video is black, auto change to big"),this._room.changeType(!1,a),v.addFailedEvent({key:524702}),or.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}})}else or.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}catch(n){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${n.message} ${JSON.stringify(this.muteState)}`),new N({code:I.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}checkTrackEnded(e){var t,r,s;if((e.audio&&((t=this.remoteAudioTrack.mediaTrack)==null?void 0:t.readyState)==="ended"||e.video&&((r=this.remoteVideoTrack.mediaTrack)==null?void 0:r.readyState)==="ended"||e.auxiliary&&((s=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:s.readState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),Ke&&dt<92)return;this.singlePC.startReconnection()}}unsubscribe(r){return f(this,arguments,function*({remoteTracks:e,streamType:t}){var a;if(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed){this._log.info(`${t} stream already unsubscribed`);return}let s=D({},this.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:s.audio=!1;break;case 4:s.video=!1;break;case 8:s.smallVideo=!1;break;case 2:s.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(s).find(c=>c===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${n_(s)}]`),n==="unsubscribe"&&((a=this.singlePC)==null||a.removeDownlinkQueue.add(this.tinyId)),yield this.sendSubscription(n,s),t==="main"&&(or.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0),n==="unsubscribe"&&(yield this.removeDownlink())})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},s=Y.UNSUBSCRIBE,n=F.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},s=Y.SUBSCRIBE_CHANGE,n=F.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:s,data:r,responseCommand:n,timeout:1e4,retries:3}).then(({data:a})=>{if(a.code!==0){let c=new N({code:a.code,message:V({key:L.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}onSinglePCReconnected(){return f(this,null,function*(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary)&&(this._log.warn(`resubscribe ${JSON.stringify(this.subscribeState)}`),yield this.doSubscribe(this.subscribeState),this.remoteAudioTrack.checkDecodeResult(),this.remoteVideoTrack.checkDecodeResult(),this.remoteAuxiliaryTrack.checkDecodeResult())})}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return f(this,arguments,function*(e=this.subscribeState,t=!0){if(this.singlePC){this.singlePC.addDownlinkQueue.add(this.tinyId),yield this.singlePC.waitForPeerConnectionConnected();try{if(t||!this.hasSSRC){let r={audioSsrc:yt(),bigVideoSsrc:yt(),bigVideoRtxSsrc:yt(),auxVideoSsrc:yt(),auxVideoRtxSsrc:yt()},{audioSsrc:s,bigVideoSsrc:n,bigVideoRtxSsrc:a,auxVideoSsrc:c,auxVideoRtxSsrc:l}=r;this.ssrc={audio:s,video:n,videoRtx:a,auxiliary:c,auxiliaryRtx:l},this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc});try{let u=yield this._signalChannel.sendWaitForResponseWithRetry({command:Y.SPC_SUBSCRIBE,responseCommand:F.SPC_SUBSCRIBE_RESULT,data:{srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:!1,ssrc:r},retries:3,retryTimeout:0});if(u.data.code!==0&&u.data.code!==-10036)throw new N({code:u.data.code,message:u.data.message})}catch(u){throw yield this.removeDownlink(),u}return}this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc})}finally{if(!ja)return;let{main:r,aux:s}=this._room.jitterBufferDelay||{},{jitterDelay:n=r,jitterDelayAux:a=s}=this._room.scheduleResult.config||{};(q(n)||q(a))&&this.setJitterBufferDelay({mainDelay:n,auxDelay:a})}}})}removeDownlink(){return f(this,null,function*(){if(!this.singlePC)return;this.ssrc={audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0},this.singlePC.removeDownlinkQueue.delete(this.tinyId);let e=this._room.scheduleResult.config;(e!=null&&e.jitterDelay||e!=null&&e.jitterDelayAux)&&this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),yield this.singlePC.removeDownlink(this.userId)})}setJitterBufferDelay({mainDelay:e,auxDelay:t}){if(!ja||!this.singlePC||!this._peerConnection||Bi(e)&&Bi(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let r=this.singlePC.getReceiversByUserId(this.userId);return q(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),q(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,Bi(e)&&(this.remoteAudioTrack.jitterBufferDelay=t)),new Promise(s=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:s})})}doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:s}){try{if(e===0&&t===0)return r.forEach(a=>a.jitterBufferTarget=0),s();if(r.forEach(a=>{var h;let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack||Bi(e)&&a.track===this.remoteAudioTrack.outMediaTrack;if(c&&Bi(t)||!c&&Bi(e))return;let l=c?t||0:e,u=(a.jitterBufferTarget||0)+100;u>l||(a.jitterBufferTarget=u,this._log.debug(`set ${c?"aux ":""}${(h=a==null?void 0:a.track)==null?void 0:h.kind} jitterBuffer delay ${u} -> ${l}`))}),!r.find(a=>{let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack?t||0:e;return a.jitterBufferTarget<c}))return this._log.info(`set jitterBuffer main: ${e} aux: ${t} done`),s();this.jitterBufferTimeoutId=setTimeout(()=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:s})},1e3)}catch(n){this._log.warn(`set jitterBuffer delay error: ${n}`),clearTimeout(this.jitterBufferTimeoutId),s()}}get audioReceiver(){var e;return((e=this.singlePC)==null?void 0:e.getReceiversByUserId(this.userId)[0])||null}onDecodeFailed(){this._room.downlinkVideoCodec==="h265"&&this._room.requestRemoteFallbackToH264()}};O([Dt(),K(e=>function(...t){return new Promise((r,s)=>{let n=a=>{this.off("closed",n),s(new N({code:I.API_CALL_ABORTED,message:V({key:L.CONNECTION_ABORTED,data:a})}))};this.on("closed",n),e.apply(this,t).then(r,s).finally(()=>{this.off("closed",n)})})})],Ts.prototype,"subscribe",1),O([Dt()],Ts.prototype,"unsubscribe",1),O([zi(()=>"jitter")],Ts.prototype,"setJitterBufferDelay",1);var a_=Ts;function c_(){return K(o=>function(...i){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(i=i.filter(t=>t.outMediaTrack&&t.state==="ready"),!i.length))return;A.emit("61",{room:this});let e=o.apply(this,i);return Promise.all(i.map(t=>t.publish(this,e)))})})}function d_(){return K(o=>function(...i){let e=o.apply(this,i);return i.forEach(t=>t.unpublish()),e})}var l_=He(Qe());function GS(){return Math.floor(Math.random()*16383)}var dd=class dd extends l_.EventEmitter{constructor(e,t){super();this.room=e;this.signalChannel=t;d(this,"log");d(this,"cmdIdSeqMap",new Map);d(this,"messageMap",new Map);this.log=y.createLogger({id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(F.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",r=>{[...this.messageMap.keys()].forEach(s=>{s.split("_").slice(0,-1).join("_")===r&&this.messageMap.delete(s)})})}send({cmdId:e,data:t}){let r=this.cmdIdSeqMap.get(e)||GS(),s={cmdId:e,msg:btoa(String.fromCharCode(...new Uint8Array(t))),ordered:!0,reliable:!0,streamSeq:r};this.cmdIdSeqMap.set(e,r+1),this.signalChannel.send(Y.SEND_CUSTOM_MSG,s),this.log.debug(`send custom msg: ${JSON.stringify(s)}`)}onReceiveMsg(e){let{data:t}=e.data,r=this.room.tinyIdToUserIdMap.get(t.srcTinyId);if(r){let s={userId:r,cmdId:t.cmdId,seq:t.streamSeq,data:Uint8Array.from(atob(t.msg),n=>n.charCodeAt(0)).buffer};if(t.ordered){let n=`${r}_${s.cmdId}`,a=this.messageMap.get(n);if(!a||a.lastSeq===0)a||(a={lastSeq:0,cachedMessageMap:new Map},this.messageMap.set(n,a),setTimeout(()=>this.emitMessage(s,!0),100)),a.cachedMessageMap.set(s.seq,{message:s});else if(Math.abs(a.lastSeq-s.seq)>dd.SEQ_INTERVAL)this.messageMap.set(n,{lastSeq:s.seq,cachedMessageMap:new Map}),this.emitMessage(s);else if(s.seq>a.lastSeq){if(s.seq===a.lastSeq+1)this.emitMessage(s);else if(!a.cachedMessageMap.has(s.seq)){let c=setTimeout(()=>this.emitMessage(s,!0),5e3);a.cachedMessageMap.set(s.seq,{message:s,timeoutId:c})}}else this.log.debug(`drop message ${s.userId}-${s.cmdId}-${s.seq}`)}else this.emit("message",s)}else{this.log.warn(`receive msg from unknown user, wait peer-join tinyId: ${t.srcTinyId}`);let s=n=>{n.tinyId===t.srcTinyId&&(this.room.off("peer-join",s),this.onReceiveMsg(e))};this.room.on("peer-join",s),Wt(2e3).then(()=>this.room.off("peer-join",s))}}emitMessage(e,t=!1){var a;let r=this.messageMap.get(`${e.userId}_${e.cmdId}`),s=e;if(r){if(t){let c=[...r.cachedMessageMap.values()].sort((l,u)=>l.message.seq-u.message.seq);c[0]&&(s=c[0].message)}r.lastSeq!==0&&s.seq-r.lastSeq>1&&this.log.debug(`msg lost userId: ${s.userId} seq: ${r.lastSeq} -> ${s.seq}`),r.lastSeq=s.seq,clearTimeout((a=r.cachedMessageMap.get(s.seq))==null?void 0:a.timeoutId),r.cachedMessageMap.delete(s.seq)}this.log.debug(`receive custom msg: ${JSON.stringify(s)}`),this.emit("message",s);let n=r==null?void 0:r.cachedMessageMap.get(s.seq+1);n&&this.emitMessage(n.message)}};d(dd,"SEQ_INTERVAL",300);var cd=dd;var{isString:u_,isUndefined:lo,getNetworkType:WS,isEmpty:Gn}=gt,ci=class extends nd{constructor(e){super(e);d(this,"_businessInfo");d(this,"userManager");d(this,"_version");d(this,"_heartbeat",-1);d(this,"_lastHeartBeatTime",-1);d(this,"_stats");d(this,"_joinTimeout",-1);d(this,"_firstPublishedList",null);d(this,"_joinReject",null);d(this,"_isRelayChanged",!1);d(this,"sdpSemantics");d(this,"signalChannel",null);d(this,"uplinkConnection",null);d(this,"singlePC",null);d(this,"enableSPC",Wo);d(this,"_changeBigSmallRecords",new Map);d(this,"networkQuality");d(this,"_iceTransportPolicy");d(this,"forceRelay",!1);d(this,"_turnServers",[]);d(this,"_iceServersFromJoin");d(this,"_syncUserListInterval",-1);d(this,"_smallStreamConfig",{bitrate:100,frameRate:15,height:120,width:160});d(this,"enableSEI",!1);d(this,"_enableAudioVolumeEvaluation",!1);d(this,"_audioVolumeIntervalId",0);d(this,"_enableMultiAuxStream",!1);d(this,"_pureAudioPushMode",!1);d(this,"_customMessageManager");d(this,"preferHW",!1);d(this,"healthDetector");d(this,"playoutDelay");d(this,"jitterBufferDelay");d(this,"_updateAudioLevelTaskId",-1);d(this,"switchRoomSubedReq");d(this,"resolveSwitchRoomSubedReq");this._stats=new Bn(this,this._log),this.userManager=new Mc(this.userId,this._log),this._version=Ve,this.sdpSemantics=mo,lo(e.sdpSemantics)?Ti.isUnifiedPlanDefault()&&(this.sdpSemantics=lr):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${WS()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=lo(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&Wo,!lo(e.enableSPC)&&Wo&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this._initBusinessInfo(e),this.healthDetector=new Qf(this)}get isMainStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isMainStreamPublished)}get isMainAudioPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.localMainAudioTrack)}get isAuxStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isAuxStreamPublished)}get hasAuxStream(){return[...this.remotePublishedUserMap.values()].findIndex(e=>e.muteState.hasAuxiliary)>=0}get userMap(){return this.userManager.userMap}get remotePublishedUserMap(){return this.userManager.remotePublishedUserMap}get tinyIdToUserIdMap(){return new Map([...this.userMap.values()].map(e=>[e.tinyId,e.userId]))}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.videoCodec)||"h264"}get downlinkVideoCodec(){var e;return((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264"}join(e,t,r){return f(this,null,function*(){return this.userManager.mySelfId=this.userId,this.userManager.on("1",s=>{this.emit("peer-join",s)}),this.userManager.on("2",s=>{this.closeDownLinkConnection(s,"remote user exitRoom"),this.emit("peer-leave",s)}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",n=>{var s=Hh(n,[]);A.emit(C.REMOTE_PUBLISH_STATE_CHANGED,D({room:this},s)),this.emit("remote-publish-state-changed",D({},s))}),this.joinParams=e,new Promise((s,n)=>f(this,null,function*(){var a,c;this._joinReject=n;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(u){if(u instanceof N&&u.code===I.SPC_INITIALIZED_FAILED)(a=this.signalChannel)==null||a.destroy(),yield this.initialize();else return n(u)}let l=P();yield this.doJoin(e,(c=this.singlePC)==null?void 0:c.clientAbility),v.addSuccessEvent({key:521708,cost:P()-l}),s(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(l){v.addFailedEvent({key:521708,error:l}),n(l)}this._joinReject=null}))})}initSinglePC(){return f(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new ai({signalChannel:this.signalChannel,room:this,enableCustomMessage:!1}),this.singlePC.on("sei-message",e=>this.emit("sei-message",e)),this.singlePC.on("dump",e=>this.emit("dump",e)),this.singlePC.once("error",()=>this.fallbackToMPC());try{return yield this.singlePC.initialize()}catch(e){throw this.fallbackToMPC(),new N({code:I.SPC_INITIALIZED_FAILED,message:e==null?void 0:e.message})}}})}doJoin(e,t){return new Promise((r,s)=>f(this,null,function*(){var c,l,u;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(_e.SETUP_FAILED,h=>{this.clearJoinTimeout(),A.emit(C.JOIN_SIGNAL_CONNECTION_END,{room:this,error:h}),s(h)}),de((l=(c=this.scheduleResult)==null?void 0:c.config)==null?void 0:l.singlePC)&&Wo&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2),t&&this.playoutDelay&&(t.playoutDelay=this.playoutDelay);let n={roomId:String(e.roomId||e.strRoomId),useStringRoomId:this.useStringRoomId,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel,trtcRole:e.role,trtcScene:this.scene==="live"?2:1,sdpSemantics:this.sdpSemantics,version:this._version,ua:navigator&&navigator.userAgent||"",terminalType:al(),netType:Or(),bussinessInfo:this._businessInfo,ability:t,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0};this._log.debug(`join room signal data: ${JSON.stringify(n)}`);let a=5e3;(u=this.scheduleResult.config)!=null&&u.enterRoomTimeout&&this.scheduleResult.config.enterRoomTimeout>=1&&(a=this.scheduleResult.config.enterRoomTimeout*1e3),this._joinTimeout=window.setTimeout(()=>{s(new N({code:I.JOIN_ROOM_FAILED,message:V({key:L.JOIN_ROOM_TIMEOUT})}))},a),A.emit(C.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?Y.SPC_JOIN_ROOM:Y.JOIN_ROOM,n),this.signalChannel.once(F.JOIN_ROOM_RESULT,h=>f(this,null,function*(){this.clearJoinTimeout();let{code:m,message:g,data:T,tinyId:_}=h.data;A.emit(C.JOIN_RECEIVED_CMD_RES,{room:this,code:m}),m===0?(this._log.info("Join room success, start heartbeat"),_&&(this.tinyId=_),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=T.publishers,this._iceServersFromJoin=T.iceServer?[T.iceServer]:[],this.singlePC&&this.singlePC.setIceServers(this.getIceServers()).then(()=>{var S;(S=this.singlePC)==null||S.connect(w(D({},T.ability),{useVp8:T.ability.useVp8||!!e.useVp8,useH265:T.ability.useH265||!!e.useH265})).catch(()=>{})}),r()):(this._log.error(`Join room failed result: ${m} error: ${g}`),s(new N({code:I.JOIN_ROOM_FAILED,extraCode:m,message:V({key:L.JOIN_ROOM_FAILED,data:{error:g,code:m}})})))}))}))}reJoin(){return f(this,null,function*(){if(!this.isJoined){this._log.warn("reJoin abort");return}try{this._log.warn(`reJoin pending: ${this.joinParams.roomId}`);let e,t=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,t.push(this.initSinglePC().then(r=>(e=r,r)))),this.signalChannel&&(this.signalChannel.close(),t.push(this.signalChannel.connect())),yield Promise.all(t),yield this.doJoin(w(D({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),e),this._log.warn("reJoin success"),se.logSuccessEvent({userId:this.userId,eventType:ct.REJOIN}),this.singlePC){let r=s=>{var n;s.state==="CONNECTED"&&((n=this.singlePC)==null||n.off(Di.CONNECTION_STATE_CHANGED,r),this.uplinkConnection instanceof Vh&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(a=>{a.installEvents(),a.onSinglePCReconnected()}))};this.singlePC.on(Di.CONNECTION_STATE_CHANGED,r),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof Un&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(e){this._log.warn(`reJoin fail ${e}`),this.reset(),se.logFailedEvent({userId:this.userId,eventType:ct.REJOIN,error:e}),this.emit("error",new N({code:I.JOIN_ROOM_FAILED,message:V({key:L.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return f(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),r=this.signalChannel||Cf(this.userId),s=!!(r&&r.isConnected&&r.keepAlive&&r.userId===this.userId&&r.room===this),n;return Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(n=this.scheduleResult.domains[0]),this._log.info(`${s?"reuse":"setup"} signal channel`),s?(r.url=e,r.backupUrl=t,r.room=this,this.signalChannel=r):(r&&r.close(),this.signalChannel=new ms({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:e,backupUrl:t,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?n:void 0}),this._customMessageManager=new cd(this,this.signalChannel),this._customMessageManager.on("message",a=>{this.emit("custom-message",a)})),this.networkQuality||(this.networkQuality=new gs({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(gs.EVENT_NETWORK_QUALITY,a=>{var c;this.emit("network-quality",a),(c=this.singlePC)==null||c.detectTCPAndUDP(a)})),Ue(this,this.signalChannel).add(_e.CONNECTION_STATE_CHANGED,a=>{A.emit(C.SIGNAL_CONNECTION_STATE_CHANGED,D({room:this},a)),this.emit("signal-connection-state-changed",a)}).add(_e.RECONNECT_FAILED,a=>{this.reset(),this.emit("error",a)}).add(F.PEER_JOIN,a=>{let{srcTinyId:c,userId:l,role:u}=a.data.data;this.userManager.addUser({userId:l,tinyId:c,role:u})}).add(F.PEER_LEAVE,a=>{let{userId:c,reason:l=0}=a.data.data;this.userManager.deleteUser(c,l)}).add(F.UPDATE_REMOTE_MUTE_STAT,a=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(a.data)}).add(F.CLIENT_BANNED,a=>{let c=a.data.data,{reason:l}=c;if(se.uploadEvent({log:`stat-banned:${l}`,userId:this.userId}),l==="user_time_out"){this._log.warn(`${l} last heart beat time: ${this._lastHeartBeatTime} interval: ${Date.now()-this._lastHeartBeatTime}, visibility: ${document.visibilityState}`),this.reJoin();return}this._log[l==="kick"?"error":"info"](`user was banned because of [${l}]`),this.reset(),this.emit("banned",{reason:l})}).add(F.SEND_SWITCH_ROOM_SUBED_REQ,a=>{if(!this.singlePC)return;let{subList:c}=a.data.data;c.forEach(l=>{this.singlePC.autoSubscribedUserMap.set(l.userId,l)}),this.resolveSwitchRoomSubedReq()}).add(F.FALLBACK_CODEC,a=>f(this,null,function*(){var l,u,h,m,g;let c=a.data.data;this._log.warn(`fallback codec enableH265Enc: ${(l=c.videoControlInfo)==null?void 0:l.enableH265Enc}`),((u=c.videoControlInfo)==null?void 0:u.enableH265Enc)===0&&((h=this.singlePC)==null?void 0:h.videoCodec)==="h265"&&(v.addCount({key:513e3}),yield(m=this.singlePC)==null?void 0:m.switchVideoEncoder("h264"),yield(g=this.uplinkConnection)==null?void 0:g.sendMediaSettings())})),this.signalChannel.once(_e.SETUP_SUCCESS,a=>{this.tinyId=a.signalInfo.tinyId,A.emit(C.JOIN_SIGNAL_CONNECTION_END,{room:this})}),A.emit(C.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),s&&A.emit(C.JOIN_SIGNAL_CONNECTION_END,{room:this}),s})}setSignalChannel(e){this.signalChannel=e,e||be(this)}leave(){return f(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),A.emit(C.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(Y.LEAVE_ROOM),this.switchRoomSubedReq=void 0})}clearNetworkQuality(){this.networkQuality&&(this.networkQuality.stop(),delete this.networkQuality)}closeConnections(){this.remotePublishedUserMap.forEach(e=>{this.closeDownLinkConnection(e.userId,"you exitRoom")})}clearJoinTimeout(){clearTimeout(this._joinTimeout),this._joinTimeout=-1}startHeartbeat(){this._heartbeat===-1&&(this._heartbeat=re.run("ric",this.doHeartbeat.bind(this),{delay:2e3}))}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),re.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return f(this,null,function*(){var n;let e=this.badCaseDetector.getMonitorFreeze(),t=yield this._stats.getStatsReport({uplinkConnection:this.uplinkConnection,downlinkConnections:this.remotePublishedUserMap,freezeMap:e});this.badCaseDetector.resetMonitor();let r=(n=this.signalChannel)!=null&&n.isConnected?Up(this.userId):[],s=w(D({str_sdk_version:Cs,uint64_datetime:new Date().getTime(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyId},msg_event_msg:r,str_acc_ip:this.getSignalInfo().relayIp,str_client_ip:this.getSignalInfo().clientIp},t),{msg_device_info:D({uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:Or()},t.msg_device_info)});if(this.heartbeatReport=s,A.emit(C.HEARTBEAT_REPORT,{room:this,report:s}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(Y.ON_QUALITY_REPORT,s);let a=Date.now();this._lastHeartBeatTime>0&&a-this._lastHeartBeatTime>1e4&&this._log.warn(`heartbeat took ${a-this._lastHeartBeatTime}`),this._lastHeartBeatTime=a,this.signalChannel.isOnline||(this._log.warn("signal channel is not online"),this.signalChannel.startReconnection())}this.emit("heartbeat-report",w(D({},s),{bytes_sent:this._stats.totalBytesSent+this.signalChannel.bytesSent,bytes_received:this._stats.totalBytesReceived+this.signalChannel.bytesReceived}))}!this._isRelayChanged&&this.isRelayMaybeFailed()&&(this.reJoin(),this._isRelayChanged=!0)})}onPublishedUserList(e){if(!this.isJoined)return;let t=e.data.userList.filter(r=>r.flag!==Ed).map(({userId:r,srcTinyId:s,flag:n})=>{r===this.userId&&(this.uplinkConnection&&(this.uplinkConnection.flag=n),this.localPublishFlag!==n&&(this.localPublishFlag=n,this.emit("local-publish-flag-changed",n)));let a=this.remotePublishedUserMap.get(r);return a&&this.checkSubscribeBigSmallVideo(a),{userId:r,tinyId:s,flag:n}});e.data.mixRobotList.forEach(({userId:r,srcTinyId:s,flag:n,mixUserList:a})=>{t.unshift({userId:r,tinyId:s,flag:n,isRobot:!0,mixUserList:a})}),e.data.fakeMixUser&&(e.data.fakeMixUser.tinyId=e.data.fakeMixUser.srcTinyId,t.push(e.data.fakeMixUser)),A.emit(C.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:t}),t.find(r=>r.userId===this.userId)||(this.localPublishFlag=0,this.emit("local-publish-flag-changed",0)),this.userManager.setRemotePublishedUserList(t)}closeUplink(e="you unpublished"){this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish().catch(()=>{}),this.uplinkConnection.close(e),this.uplinkConnection instanceof Un&&(this.uplinkConnection=null)),this.localTracks.forEach(t=>t.unpublish()),this.localTracks.clear()}createDownlinkConnection({userId:e,tinyId:t,flag:r,isRobot:s}){let n=new(this.singlePC?a_:bh)({userId:e,tinyId:t,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:r,isRobot:s});this.userManager.addRemotePublishedUser(n),this.installDownlinkEvents(n,e),this.emit("remote-published",n)}closeDownLinkConnection(e,t="remote user unpublished"){let r=this.remotePublishedUserMap.get(e);r&&(r.close(t),this.emit("remote-unpublished",r))}installDownlinkEvents(e,t){e.on("error",r=>{let s=r.getCode();s!==I.ICE_TRANSPORT_ERROR&&(s===I.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(t),this.emit("error",r))}),e.on("connection-state-changed",r=>{this.emit("media-connection-state-changed",w(D({},r),{userId:e.userId}))}),e.on("firewall-restriction",()=>{this.emit("firewall-restriction")})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=re.run("ric",this.syncUserList.bind(this)))}stopSyncUserListInterval(){re.clearTask(this._syncUserListInterval),this._syncUserListInterval=-1}syncUserList(){return this.getUserList().then(e=>{this.userManager.setUserList(e)}).catch(e=>{this._log.debug(`sync user list failed: ${e}`)})}getUserList(){var e;return(e=this.signalChannel)!=null&&e.isConnected?this.signalChannel.sendWaitForResponse({command:Y.GET_USER_LIST,responseCommand:F.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(({data:t})=>{let{code:r,message:s}=t;if(r===0)return(t.data&&t.data.userList||[]).map(({userId:a,srcTinyId:c,role:l})=>({userId:a,tinyId:c,role:l}));throw V({key:L.SIGNAL_RESPONSE_FAILED,data:{signalResponse:F.USER_LIST_RES,code:r,message:s}})}):Promise.reject("not connected")}getAllConnections(){let e=[...this.remotePublishedUserMap.values()];return this.uplinkConnection&&e.push(this.uplinkConnection),e}isRelayMaybeFailed(){if(this.signalChannel&&!this.signalChannel.isOnline||!Sh)return!1;if(this.singlePC)return this.singlePC.reconnectionCount>6;let e=this.getAllConnections();if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(e[t].getReconnectionCount()<6)return!1;return!0}checkConnectionsToReconnect(){var e;this.singlePC?((e=this.singlePC.getPeerConnection())==null?void 0:e.connectionState)===ge.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(r=>{if(r instanceof at&&!r.getIsReconnecting()){let s=r.getPeerConnection();s&&s.connectionState===ge.CLOSED&&(this._log.warn(`[${r.getUserId()}] pc is closed but not reconnect`),r.startReconnection())}})}fallbackToMPC(){return f(this,null,function*(){var e;if(this._log.warn("fallback to multi pc"),se.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(e=this.singlePC)==null||e.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin()),this.uplinkConnection){let t=this.uplinkConnection;this.uplinkConnection=new Un({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),t.isMainStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localMainAudioTrack,localVideoTrack:t.localMainVideoTrack,isAuxiliary:!1})),t.isAuxStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localAuxAudioTrack,localVideoTrack:t.localAuxVideoTrack,isAuxiliary:!0})),t.close()}for(let t of[...this.remotePublishedUserMap.values()]){let r=new bh({userId:t.userId,tinyId:t.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:t.flag,remoteAudioTrack:t.remoteAudioTrack,remoteVideoTrack:t.remoteVideoTrack,remoteAuxiliaryTrack:t.remoteAuxiliaryTrack});this.installDownlinkEvents(r,t.userId),this.remotePublishedUserMap.set(t.userId,r),t.isMainStreamSubscribed&&(yield r.subscribe(t.subscribeState,"main")),t.isAuxStreamSubscribed&&(yield r.subscribe(t.subscribeState,"auxiliary"))}})}destroy(){this.isDestroyed||(this.signalChannel&&(this._log.info("destroying SignalChannel"),this.signalChannel.close(),this.signalChannel=null),super.destroy(),this._joinReject&&(this._joinReject(new N({code:I.INVALID_OPERATION,message:V({key:L.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.removeAllListeners(),this.healthDetector.destroy(),re.clearTask(this._audioVolumeIntervalId))}switchRole(e){return f(this,null,function*(){this.role!==e&&(e==="audience"&&this.uplinkConnection&&this.closeUplink("you switch role to audience"),yield this.doSwitchRole(e))})}doSwitchRole(e){let t={command:Y.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:F.SWITCH_ROLE_RES,retries:1};return this._log.info(`switchRole signal data: ${JSON.stringify(t.data)}`),this.signalChannel.sendWaitForResponseWithRetry(t).then(r=>{let{code:s,message:n}=r.data;if(s!==0)throw new N({code:I.SWITCH_ROLE_FAILED,message:V({key:L.SWITCH_ROLE_FAILED,data:{message:n,code:s}})});this.role=e}).catch(r=>{throw r instanceof N&&r.getCode()===I.API_CALL_TIMEOUT&&(r=new N({code:I.SWITCH_ROLE_FAILED,message:V({key:L.SWITCH_ROLE_TIMEOUT})})),this._log.error(r),r})}publish(...e){return f(this,null,function*(){let t={},r={};e.forEach(c=>{c instanceof Rt&&(c instanceof Ci?r.audio=c:t.audio=c),c instanceof Ge&&(c instanceof et&&c.mediaType===2?r.video=c:t.video=c)});let s=Gn(t),n=Gn(r);(!s||!n)&&!this.uplinkConnection&&(this.singlePC?this.uplinkConnection=new Vh({userId:this.userId,tinyId:this.tinyId,room:this}):this.uplinkConnection=new Un({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",c=>{this.emit("media-connection-state-changed",w(D({},c),{userId:this.userId}))}),this.uplinkConnection.on("firewall-restriction",()=>{this.emit("firewall-restriction")}),this.uplinkConnection.on("error",c=>{let l=c.getCode();l!==I.ICE_TRANSPORT_ERROR&&(l===I.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",c))}));let a=e.map(c=>c.kind).join(",");s||(this._log.info(`publish() => main ${a}`),yield this.uplinkConnection.publish({localAudioTrack:t.audio,localVideoTrack:t.video,isAuxiliary:!1}),this._log.info("main is published")),n||(this._log.info(`publish() => aux ${a}`),yield this.uplinkConnection.publish({localAudioTrack:r.audio,localVideoTrack:r.video,isAuxiliary:!0}),this._log.info("aux is published"))})}unpublish(...e){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||!this.isMainStreamPublished&&!this.isAuxStreamPublished||!this.uplinkConnection)return;let t={},r={};e.forEach(s=>{!s.mediaTrack||!s.isPublished||(s instanceof Rt&&(s instanceof Ci?r.audio=s:t.audio=s),s instanceof Ge&&(s instanceof et&&s.mediaType===2?r.video=s:t.video=s))});try{let s=e.map(n=>n.kind).join(",");Gn(t)||(this._log.info(`unpublish() => main ${s}`),yield this.uplinkConnection.unpublish({localAudioTrack:t.audio,localVideoTrack:t.video})),Gn(r)||(this._log.info(`unpublish() => aux ${s}`),yield this.uplinkConnection.unpublish({localAudioTrack:r.audio,localVideoTrack:r.video}))}catch(s){}this.localTracks.size===0&&this.closeUplink("you unpublished")})}addTrack(e){if(!this.uplinkConnection||!e.mediaTrack)return Promise.resolve();let t=this.uplinkConnection.addTrack(e);return e.publish(this,t),t}removeTrack(e){return!this.uplinkConnection||!e.mediaTrack?Promise.resolve():this.uplinkConnection.removeTrack(e).then(t=>(e.unpublish(),t))}replaceTrack(e){return!this.uplinkConnection||!e.mediaTrack||!wl()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&A.emit(C.LOCAL_TRACK_REPLACED,{track:e})})}setBandWidth(e){return f(this,null,function*(){this.uplinkConnection&&(yield this.uplinkConnection.setBandwidth(e),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(e){return f(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();e&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:p.VIDEO,videoType:p.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(e)})}subscribe(...e){return f(this,null,function*(){if(e=e.filter(n=>!n.isSubscribed),e.length===0)return;let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let s=e.find(n=>n.mediaType===2)?"auxiliary":"main";try{let n=D({},r.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:n.audio=!0;break;case 4:n.video=!0;break;case 8:n.smallVideo=!0;break;case 2:n.auxiliary=!0;break}});let a=this._changeBigSmallRecords.get(t);a&&a.options.smallVideo&&r.muteState.hasSmall&&n.video&&(n.video=!1,n.smallVideo=!0),A.emit(C.SUBSCRIBE_START,{room:this,streamType:s,remotePublishedUser:r,subscribeState:n}),this._log.info(`subscribe() => ${t} ${s} [${Kc(n)}] prev: [${Kc(r.subscribeState)}]`),yield r.subscribe(n,s),this._log.info(`subscribe ${t} ${s} done`);for(let c of e)c.mediaTrack||(yield c.waitHasMediaTrack());A.emit(C.SUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:r})}catch(n){let a=n instanceof N?n.getCode():I.UNKNOWN,c=n;throw n instanceof N?a===I.REMOTE_STREAM_NOT_EXIST&&(c=new N({code:I.API_CALL_ABORTED,message:V({key:L.API_CALL_ABORTED,data:{message:n.message,userId:t,streamType:s}})}),this._log.warn(c)):(c=new N({code:a,message:V({key:L.SUBSCRIBE_FAILED,data:{message:n.message,userId:t,streamType:s}})}),this._log.error(c)),c}})}unsubscribe(...e){return f(this,null,function*(){let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let s=e.find(n=>n.mediaType===2)?"auxiliary":"main";this._log.info(`unsubscribe() => ${t} ${s}`);try{yield r.unsubscribe({remoteTracks:e,streamType:s})}catch(n){this._log.warn(`unsubscribe() => failed ${n}`)}e.forEach(n=>{n.unsubscribe(),n.mediaType===8&&n.setMediaType(4)}),A.emit(C.UNSUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:r})})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(e=2e3,t){if(e<=0){this._enableAudioVolumeEvaluation=!1,re.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),A.emit(C.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&re.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=re.run("intervalInWorker",()=>{var s;Jr.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let r=[];(s=this.remotePublishedUserMap)==null||s.forEach(n=>{if(n.muteState.hasAudio){!Jr.isRunning&&n.muteState.audioAvailable&&n.remoteAudioTrack.isSubscribed?this.updateDownlinkAudioLevelFromReceiver(n):n.remoteAudioTrack.volume=0;let a=Math.floor(n.remoteAudioTrack.getAudioLevel()*100);r.push({userId:n.userId,volume:a,floatVolume:n.remoteAudioTrack.getInternalAudioLevel()})}}),this.emit("audio-volume",r)},{delay:e,backgroundTask:t})}updateAudioLevelFromSenderStat(e,t){return f(this,null,function*(){var n;if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack||this._updateAudioLevelTaskId!==-1)return;let r=(n=this.uplinkConnection.getPeerConnection())==null?void 0:n.getSenders()[0];if(!r)return;let s=Math.max(e,500);this._log.warn(`updateAudioLevelFromSenderStat ${s}`),this._updateAudioLevelTaskId=re.run("intervalInWorker",()=>f(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack){this.stopUpdateAudioLevelFromSenderStat();return}let a=yield r.getStats();if(this._updateAudioLevelTaskId<0)return;let{localMainAudioTrack:c}=this.uplinkConnection;a.forEach(l=>{l.type==="media-source"&&l.audioLevel&&(c.volume=l.audioLevel)})}),{delay:s,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),re.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(e=this.uplinkConnection)!=null&&e.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(e){var s;let{audioReceiver:t}=e;if(!xl||!t)return;let r=(s=t.getSynchronizationSources()[0])==null?void 0:s.audioLevel;q(r)?e.remoteAudioTrack.volume=Math.min(r*2,1):t.getStats().then(n=>{n.forEach(a=>{a.type==="inbound-rtp"&&q(a.audioLevel)&&(e.remoteAudioTrack.volume=a.audioLevel)})})}getLocalAudioStats(){return f(this,null,function*(){var t;let e={};return e[this.userId]={bytesSent:0,packetsSent:0,audioLevel:0},(t=this.uplinkConnection)!=null&&t.localMainAudioTrack&&(e[this.userId]=this.uplinkConnection.localMainAudioTrack.stat),e})}getLocalVideoStats(){return f(this,null,function*(){var t,r;let e={};return e[this.userId]=((r=(t=this.uplinkConnection)==null?void 0:t.localMainVideoTrack)==null?void 0:r.stat)||{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0},e})}getTransportStats(){return f(this,null,function*(){let e={rtt:0,downlinksRTT:{}};if(this.uplinkConnection){let t=yield this._stats.getSenderStats(this.uplinkConnection);e.rtt=t.rtt}for(let[,t]of this.remotePublishedUserMap){let r=yield this._stats.getReceiverStats(t);e.downlinksRTT[r.userId]=r.rtt}return e})}getRemoteVideoStats(e){return f(this,null,function*(){let t={};for(let[r,s]of this.remotePublishedUserMap)e==="main"&&s.muteState.hasVideo&&(t[r]=s.remoteVideoTrack.stat),e==="auxiliary"&&s.muteState.hasAuxiliary&&(t[r]=s.remoteAuxiliaryTrack.stat);return t})}getRemoteAudioStats(){return f(this,null,function*(){let e={};for(let[t,r]of this.remotePublishedUserMap)r.muteState.hasAudio&&(e[t]=r.remoteAudioTrack.stat);return e})}setTurnServer(e,t){this._log.info(`set turn server: ${JSON.stringify(e)} ${t||""}`);let r=[];Array.isArray(e)?e.forEach(s=>r.push(gt.getTurnServer(s))):gt.isPlainObject(e)&&r.push(gt.getTurnServer(e)),this._turnServers=r,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Y.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:F.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"}).catch(t=>{if(t.code!==I.API_CALL_ABORTED)throw t})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Y.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:F.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"}).catch(t=>{if(t.code!==I.API_CALL_ABORTED)throw t})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Y.START_PUBLISH_TENCENT_CDN:Y.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?F.START_PUBLISH_TENCENT_CDN_RES:F.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"}).catch(r=>{if(r.code!==I.API_CALL_ABORTED)throw r})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Y.STOP_PUBLISH_TENCENT_CDN:Y.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?F.STOP_PUBLISH_TENCENT_CDN_RES:F.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"}).catch(r=>{if(r.code!==I.API_CALL_ABORTED)throw r})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:F.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"}).catch(t=>{if(t.code!==I.API_CALL_ABORTED)throw t})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:F.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"}).catch(t=>{if(t.code!==I.API_CALL_ABORTED)throw t})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:F.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"}).catch(t=>{if(t.code!==I.API_CALL_ABORTED)throw t})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:Y.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:F.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(r=>{})}getIceServers(e){var t,r;return this._turnServers.length>0?this._turnServers:(t=this.scheduleResult.iceServers)!=null&&t.length?this.scheduleResult.iceServers:e!=null&&e.length?e:(r=this._iceServersFromJoin)!=null&&r.length?this._iceServersFromJoin:[]}getIceTransportPolicy(){return this.forceRelay?"relay":this._iceTransportPolicy||this.scheduleResult.iceTransportPolicy||"all"}getLogger(){return this._log}enableAIVoice(){throw new Error("Method not implemented.")}getSignalChannelUrl(){let e={mainUrl:"",backupUrl:""},t=gt.getEnv();return t?(e.mainUrl=`wss://${t}.rtc.qq.com`,e.backupUrl=e.mainUrl):this.proxy_ws?(e.mainUrl=this.proxy_ws,e.backupUrl=e.mainUrl):this.proxy_unified?(e.mainUrl=`wss://${this.proxy_unified}`,e.backupUrl=e.mainUrl):Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(e.mainUrl=`wss://${this.scheduleResult.domains[0]}`,e.backupUrl=e.mainUrl,this.scheduleResult.domains[1]&&(e.backupUrl=`wss://${this.scheduleResult.domains[1]}`)),e}getSignalInfo(){var e;return((e=this.signalChannel)==null?void 0:e.getSignalInfo())||{clientIp:"",relayIp:""}}reset(e=!1){this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.clearNetworkQuality(),this.closeUplink("you exitRoom"),this.signalChannel&&(e&&this.signalChannel.keepAlive&&this.signalChannel.isConnected?this.signalChannel.stopKeepAliveIn(3600):(this.signalChannel.close(),this.setSignalChannel(null))),this._stats.reset(),this.userManager.clear(),this.userManager.removeAllListeners(),this.singlePC&&(this.singlePC.close(),this.singlePC=null),this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null}}checkSubscribeBigSmallVideo(e){return f(this,null,function*(){let{subscribeState:t,userId:r,muteState:{hasSmall:s,hasVideo:n}}=e;if(!s&&!n||!t.video&&!t.smallVideo)return;let a=this._changeBigSmallRecords.get(r);if(!a||a.isSubscribing||a.reSubscribeCount<=0)return;let{options:c,reSubscribeCount:l}=a;if(c.video&&t.video||c.smallVideo&&t.smallVideo&&s)return;let u={audio:e.remoteAudioTrack.isSubscribed||e.remoteAudioTrack.isSubscribing,auxiliary:e.remoteAuxiliaryTrack.isSubscribed||e.remoteAuxiliaryTrack.isSubscribing,video:c.video,smallVideo:c.smallVideo};try{if(!s&&u.smallVideo&&(u.video=!0,u.smallVideo=!1),u.smallVideo===t.smallVideo&&u.video===t.video)return;a.isSubscribing=!0,a.reSubscribeCount=l-1,yield e.subscribe(u,"main"),e.remoteVideoTrack.setMediaType(u.smallVideo?8:4),this._log.info(`change [${r}] to ${u.smallVideo?"small":"big"} video successfully. count ${po-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount=po}catch(h){this._log.info(`change [${r}] to ${u.smallVideo?"small":"big"} video failed. count ${po-a.reSubscribeCount}. reason: ${h}`),a.isSubscribing=!1,a.reSubscribeCount===0&&this._changeBigSmallRecords.delete(r)}})}changeType(e,t){let s={options:{video:!e,smallVideo:e},isSubscribing:!1,reSubscribeCount:po};this._changeBigSmallRecords.set(t.userId,s),this._log.info(`set [${t.userId}] video prefer type: ${e?"small":"big"}`),this.emit("subscribe-small-video-changed",{userId:t.userId,isSmall:e});let n=this.remotePublishedUserMap.get(t.userId);n&&this.checkSubscribeBigSmallVideo(n)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(e){this._businessInfo=e.businessInfo;let t={};if(u_(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!lo(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_PURE_AUDIO})});this._pureAudioPushMode=e.pureAudioPushMode,t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.pure_audio_push_mod=this._pureAudioPushMode}if(!lo(e.userDefineRecordId)){let r=/^[A-Za-z0-9_-]{1,64}$/gi;if(e.userDefineRecordId.match(r)===null)throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!lo(e.userDefinePushArgs))if(u_(e.userDefinePushArgs)&&String(e.userDefinePushArgs)&&String(e.userDefinePushArgs).length<=256)t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_push_args=e.userDefinePushArgs;else throw new N({code:I.INVALID_PARAMETER,message:V({key:L.INVALID_USER_DEFINE_PUSH_ARGS})});Gn(t)||(this._businessInfo=JSON.stringify(t))}sendCustomMessage(e){var t;(t=this._customMessageManager)==null||t.send(e)}enableInsertableStreams(){return f(this,null,function*(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&qi)return this.singlePC.enableInsertableStreams=!0,yield this.singlePC.waitForPeerConnectionConnected(),yield this.singlePC.startReconnection()})}sendSignalMessage(e){var t;return this.signalChannel?(t=this.signalChannel)==null?void 0:t.sendWaitForResponseWithRetry(e):Promise.reject(new N({code:I.INVALID_OPERATION,message:"not join"}))}get enableCodecPipeline(){return this.videoManager.encodePipeline.length>0||this.videoManager.decodePipeline.length>0||this.audioManager.encodePipeline.length>0||this.audioManager.decodePipeline.length>0}get scriptTransformWorker(){var e;return(e=this.singlePC)==null?void 0:e.scriptTransformWorker}switchRoom(e){return f(this,null,function*(){var g;if(!this.signalChannel||!this.singlePC)return;let{roomId:t,strRoomId:r,userSig:s,privateMapKey:n}=e,a=((g=this.scheduleResult.config)==null?void 0:g.autoSubscribeCount)||(e==null?void 0:e.autoSubscribeCount)||1,c=String(this.useStringRoomId?r:t),l=[];for(let T=0;T<a;T++)l.push({audioSsrc:yt(),bigVideoSsrc:yt(),bigVideoRtxSsrc:yt(),auxVideoSsrc:yt(),auxVideoRtxSsrc:yt()});let u={currRoomId:this.roomId,targetRoomId:c,useStringRoomId:this.useStringRoomId,ability:this.singlePC.clientAbility,userSig:s,privateMapKey:n!=null?n:this.privateMapKey,subscribe:l};this.singlePC.autoSubscribedUserMap.clear(),this.singlePC.autoSubscribedSsrcGroups.clear(),this.singlePC.autoSubscribedSsrcGroups.set(c,l);let h=this.roomId;this.roomId=this.useStringRoomId?r:String(t),this.switchRoomSubedReq=new Promise(T=>{this.resolveSwitchRoomSubedReq=T,Wt(5e3).then(T)}),A.emit(C.SWITCH_ROOM_START,{room:this}),yield this.singlePC.waitForPeerConnectionConnected();let m;try{m=yield this.signalChannel.sendWaitForResponse({command:Y.SWITCH_ROOM,responseCommand:F.SEND_SWITCH_ROOM_RES,data:u});let{code:T,message:_}=m.data;if(T===0)this.userSig=s,lo(n)||(this.privateMapKey=n),A.emit(C.SWITCH_ROOM_SUCCESS,{room:this,currentRoomId:h,targetRoomId:c});else{this._log.error(`switch room failed. result: ${T} error: ${_}`);let S=new N({code:I.SWITCH_ROOM_FAILED,extraCode:T,message:_});throw A.emit(C.SWITCH_ROOM_FAILED,{room:this,error:S}),S}}catch(T){throw this.singlePC.autoSubscribedSsrcGroups.clear(),this.roomId=h,this.resolveSwitchRoomSubedReq(),T}})}isSwitchRoomSupported(){var t;let e="unable to use switchRoom API, fallback to exitRoom and enterRoom.";return((t=this.scheduleResult.config)==null?void 0:t.switchRoom)!==!0?(this._log.warn(`${e} Reason: this sdkAppId is not supported, please contact us [https://trtc.io/contact] to enable it.`),!1):this.scene!=="live"?(this._log.warn(`${e} Reason: the scene is not 'live'.`),!1):this.role!=="audience"?(this._log.warn(`${e} Reason: the role is not 'audience'.`),!1):this.singlePC?!0:(this._log.warn(`${e} Reason: is not using single peerConnection.`),!1)}requestRemoteFallbackToH264(){var e;(e=this.singlePC)==null||e.requestRemoteFallbackToH264()}};O([Te(["left",G.INIT],"joined"),At({settings:{retries:1,timeout:0},onRetrying(e){this._log.warn(`join retry ${e}`)},onRetryFailed(e){this._log.error("join failed",e)},onError(e,t){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),si(!0),this.reset(),t()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),t()):(this.reset(),t())}}),Tf()],ci.prototype,"join",1),O([Te("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),Ef(),dc("leave room"),ln({fnName:"publish",validateArgs:!1}),ln({fnName:"unsubscribe",validateArgs:!1})],ci.prototype,"leave",1),O([Dt(),c_(),At({settings:{retries:wi,timeout:e=>Ht(e)},onError(e,t,r){var s;(s=e.message)!=null&&s.includes("timeout")?(this._log.warn("publish timeout"),t()):(this._log.error(`publish failed: ${e}`),r(e),A.emit(C.PUBLISH_FAILED,{room:this}))}})],ci.prototype,"publish",1),O([ln({fnName:"publish"}),vp("api-call"),Dt(),d_(),st(function(){var e,t;this.localTracks.size===0&&_r()&&((t=(e=this.singlePC)==null?void 0:e.getPeerConnection())==null||t.getSenders().forEach(r=>r.track&&r.replaceTrack(null)))})],ci.prototype,"unpublish",1),O([nc(e=>{if(e.code!==I.API_CALL_ABORTED)throw e}),zi(e=>e.userId)],ci.prototype,"replaceTrack",1),O([zi((...e)=>e[0].userId),Dc(),Sf(),At({settings:{retries:wi,timeout:e=>Ht(e)},onError(e,t,r,s){e.message.includes("timeout")?(this._log.warn("subscribe timeout"),t()):(this._log.error(`subscribe failed: ${e}`),r(e),A.emit(C.SUBSCRIBE_FAILED,{room:this,remoteTracks:s}))}})],ci.prototype,"subscribe",1),O([ln({fnName:"subscribe",callback(...e){this.singlePC||e.forEach(t=>{let r=this.remotePublishedUserMap.get(t.userId);r&&!r.isMainStreamSubscribed&&!r.isAuxStreamSubscribed&&r.close("you unsubscribed")})}}),zi((...e)=>e[0].userId)],ci.prototype,"unsubscribe",1);Pn.create=Pn._create.bind(Pn,ci);Ul(30);var UW=Pn;export{UW as default};
|
|
143
|
+
}`});l(this,"yTextureRef");l(this,"uTextureRef");l(this,"vTextureRef");l(this,"Y");l(this,"U");l(this,"V");this.useProgram();let r=this.context.ctx;r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,r){let o=this.context.ctx,s=o.createTexture();return o.bindTexture(o.TEXTURE_2D,s),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.bindTexture(o.TEXTURE_2D,null),o.uniform1i(o.getUniformLocation(this.program,e),r),s}render(e){let r=this.context.ctx,o=this.width,s=this.height;return this.useProgram(),r.viewport(0,0,o,s),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o,s,r.LUMINANCE,r.UNSIGNED_BYTE,this.Y),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.U),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,r){super.resize(e,r);let o=this.context.ctx;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this.yTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,r,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.uTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this.vTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null)}};var Fi=[i=>{i.codec="avc1.42e01f"},i=>{delete i.hardwareAcceleration}],$E=(i,t)=>{switch(i){case"webCodecs":return t==="videoFrame"?514705:514706;case"wasm":return t==="webgl"?514707:t==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};function Wy(i){return i[0]===0&&i[1]===0&&i[2]===0&&i[3]===1}var Gy=0,Xu=class{constructor(t){l(this,"id",Gy++);l(this,"trackDoneOB");l(this,"startOB");l(this,"stopOB");l(this,"decoder");l(this,"videoContext");l(this,"gop",0);l(this,"gop_helper",0);l(this,"waitFirstKeyFrame",!0);l(this,"startTimestamp",0);l(this,"startTime",0);l(this,"startPerformanceTime",0);l(this,"inputFrameCount",0);l(this,"decodedFrameCount",0);l(this,"decodeFrameCount",0);l(this,"downgradeLevel",0);l(this,"lastDowngradeTime",0);l(this,"lastFrameDiff",0);l(this,"lastDecodeFrameTimestamp",0);l(this,"config");l(this,"gop_before_configure",[]);l(this,"videoElement");l(this,"type","wasm");l(this,"goodType");l(this,"renderer","2d");l(this,"wasmOption");l(this,"createDecoder");l(this,"_decodeSink");l(this,"isReported",!1);l(this,"track");l(this,"stateChangeOB");l(this,"failedReason");let{track:e,createDecoder:r}=t;if(this.stateChangeOB=Rt(),this.track=e,this.createDecoder=r,this.wasmOption={yuvMode:t.renderer==="webgl",wasmPath:t.wasmPath,workerMode:t.workerMode,canvas:t.canvas},this.config=t.config,this.videoElement=t.videoElement,this.renderer=t.renderer,this.trackDoneOB=Re(e.availableState,le.OFF),this.stopOB=Rt(),t.type==="auto"){switch(t.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=t.type;this.changeRenderer(this.renderer),be(this.stateChangeOB,kp((o,s)=>(o!==s&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:o,state:s}),s),"INITIALIZED"),qe(this.stopOB),Ue()),this.start()}start(t=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=be(this.pipe(this.track),qe(this.stopOB),Oi());be(e,Ue(()=>{this.track.stat.framesDecoded++},r=>{if(this.track.log.error(`${this.id} play failed: ${r} retryCount: ${t}`),X.addFailedEvent({key:$E(this.type,this.renderer),error:r}),t>4)this.failedReason=r,this.stateChangeOB.next("FAILED"),X.addFailedEvent({key:514704});else{if(this.goodType){this.start(t);return}switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.start(t+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),X.addSuccessEvent({key:$E(this.type,this.renderer)}),X.addSuccessEvent({key:514704})})),be(e,Vr(1),Ue(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.start()}close(t){this.stopOB.next(t)}changeRenderer(t){this.renderer=t,this.renderer==="videoFrame"&&!Mm()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(t,e=!1){var a,u;if(this.failedReason)return;this.inputFrameCount++;let r=new Uint8Array(t.data);if(!Wy(r)||r.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${r.subarray(0,5)}`),t;let o=r[4]&31,s=!1;switch(o){case 5:case 7:s=!0;break}if(((a=this.decoder)==null?void 0:a.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),s&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:t.data,timestamp:t.timestamp,type:t.type}),t;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(m=>this.decode(m,!0)),this.gop_before_configure=[]);let{timestamp:n}=t;if(s?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(s)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=Te();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount} ${r.subarray(0,5).join(" ")}`);return}switch(this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}(this.decodeFrameCount<10||this.decodeFrameCount%500===0)&&this.track.log.debug(`decode ${this.decodeFrameCount} gop: ${this.gop} ${n} ${(u=t.getMetadata)==null?void 0:u.call(t).rtpTimestamp}`),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=n,this.decoder.decode({data:t.data,type:t.type,timestamp:this.lastDecodeFrameTimestamp});return}return t}checkDowngradeByFrameDiff(){let t=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==t&&this.track.log.debug(`downgrade level ${t} to ${this.downgradeLevel} ${this.decodeFrameCount} frameDiff: ${e}, lastFrameDiff: ${this.lastFrameDiff}`),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(t){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-t>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug(`downgrade level ${e} to ${this.downgradeLevel}`)}pipe(t){return e=>y(this,null,function*(){this._decodeSink=e;let r,o=t.mediaTrack;e.defer(()=>{var a;o&&(t.player.setCanvas(),t.setInputMediaStreamTrack(o)),r==null||r.close(),(a=this.videoContext)==null||a.destroy(),delete this._decodeSink});let{renderer:s,type:n}=this;t.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(n){case"wasm":r=this.createDecoder(n,this.wasmOption);break;case"webCodecs":for(let u=0;u<=Fi.length;u++){let{supported:m}=yield VideoDecoder.isConfigSupported(this.config);if(m)break;if(u===Fi.length){e.error(3);return}Fi[u](this.config)}r=this.createDecoder(n);break;default:throw new Error("not supported yet")}let a=0;if(r.on("videoFrame",u=>{this.decodedFrameCount++,a++,(a<=10||a%500===0)&&t.log.debug(`frame ${a} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${u.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(u.timestamp)),e.next(u)}),r.on("error",u=>{t.log.error(u),e.error(n==="webCodecs"?4:8)}),yield r.initialize(this.videoElement),!this._decodeSink)return;if(r.configure(this.config),n==="wasm"&&s==="webgl"){this.videoContext=new St({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create(),this.videoContext.on(St.UNAVAILABLE,m=>{t.log.error(m),e.error(7)});let u=new Ju(this.videoContext);r.on("videoCodecInfo",m=>u.resize(m.width,m.height)),r.on("videoFrame",m=>{({y:u.Y,u:u.U,v:u.V}=m),this.downgradeLevel===1?this.decodedFrameCount%2===0&&u.render(this.decodedFrameCount):u.render(this.decodedFrameCount)}),t.source=u,t.player.setCanvas(this.videoContext._canvas,2)}else if(s==="videoFrame"){t.player.setCanvas();let u=new MediaStreamTrackGenerator({kind:"video"}),m=u.writable.getWriter();t.setInputMediaStreamTrack(u),r.on("videoFrame",h=>m.write(h))}else{this.videoContext=new Nt({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create({alpha:!1});let u=this.videoContext.createVideoImageSource();r.on("videoFrame",h=>{try{u.image=h,u.update()}catch(f){delete this.goodType,t.log.error(f),e.error(11)}});let m=new cs(this.videoContext,{name:"remotePlayer",logger:t.log});u.connect(m),t.source=u,t.player.setCanvas(this.videoContext._canvas,2)}this.decoder=r}catch(a){t.log.error(a),e.error(n==="webCodecs"?2:6)}})}};var lc=class extends BE.EventEmitter{constructor(e){super();this.room=e;l(this,"videoContext");l(this,"_glVideoContext");l(this,"_2dVideoContext");l(this,"destination");l(this,"smallVideoContext");l(this,"smallDestination");l(this,"smallTrackSource");l(this,"smallImageSource");l(this,"_isMirror",!1);l(this,"_rotation",0);l(this,"cameraTrack");l(this,"cameraNode");l(this,"transformNode");l(this,"mixNode");l(this,"screenTrack");l(this,"screenNode");l(this,"selfModel",!1);l(this,"blurRadius",3);l(this,"arTrack");l(this,"_enableFaceCentering",!1);l(this,"_enableEffectOptimization",!1);l(this,"onAbort");l(this,"_color");l(this,"Wasm");l(this,"waterMarkNode");l(this,"_waterMarkOption");l(this,"watermarkImageList",[]);l(this,"_beautyParams");l(this,"isUsingArTrack",!1);l(this,"mixTrack");l(this,"_isMixScreen",!1);l(this,"_virtualBackground");l(this,"_virtualBackgroundAbortCallback");l(this,"virtualBackgroundInstance");l(this,"_bgAssetPath");l(this,"log",$.createLogger({id:"vm"}));l(this,"_mat4");l(this,"_postProcessing");l(this,"_checkId",0);l(this,"_use2d",!1);l(this,"_autoSwitchRenderMode",!0);l(this,"encodePipeline",[]);l(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new Nt({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get smallMode(){var e;return((e=this.room)==null?void 0:e.smallMode)||"canvas"}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get _isRotate(){return this._rotation!==0}get _isTransform(){return this._isMirror||this._isRotate}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let r=e==="2d";this._use2d!==r&&(this._use2d=r,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get cameraResolution(){var o;let{width:e,height:r}=((o=this.cameraTrack)==null?void 0:o.settings)||{};return or(this._rotation)?{width:r,height:e}:{width:e,height:r}}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new Nt({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new St({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on(St.UNAVAILABLE,e=>{var r;this.emit("error",e),this.log.warn("video context unavailable",e),(r=this._virtualBackgroundAbortCallback)==null||r.call(this,e),this.update().catch(o=>{this.log.error(o)})})}catch(e){this.emit("error",e)}}initVirtualBackground(e,r,o){this.onAbort=e,this._mat4=r,this._postProcessing=o}enablePrintDetail(e=2e3){this._checkId=ft.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,r;(e=this._2dVideoContext)==null||e.destroy(),(r=this._glVideoContext)==null||r.destroy(),this.smallVideoContext.destroy(),ft.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(mr||this._isMixScreen||this._isTransform||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",r){let o=e==="videoCtxGl"?512700:512701;r?X.addFailedEvent({key:o,error:r}):X.addSuccessEvent({key:o})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let r=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(r)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new St({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}setSmallVideo(e,r){if(this.smallMode!=="api")if(e){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new fu(this.smallVideoContext,e,this.log),this.smallVideoContext.on(St.UNAVAILABLE,o=>{this.log.warn("small video context lost",o)})}if(this.smallVideoContext.frameRate=e.frameRate,this.smallDestination.resolution=e,r)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=r:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(r),this.smallImageSource.resize(r.width,r.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:o,height:s}=this.cameraTrack.settings;this.smallTrackSource.resize(o,s),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(e){var r;try{let o=this.cameraTrack,{small:s,player:n}=o;mr&&n.setCanvas(e);let a=e&&((r=this.destination)==null?void 0:r.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),a=this.arTrack),this.log.info(`set main output ${a?a.label:"no output track"}`),this.setSmallVideo(s,e),o.setOutputMediaStreamTrack(a)}catch(o){this.log.error("set main output failed",o)}}update(e=!1){return y(this,null,function*(){var s;if(!this.cameraTrack||!this.initialTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:r,profile:o}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams)this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.destination.on("render",n=>{var a;(a=this.cameraTrack)==null||a.emit("render",n)})),Mt===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof fr?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof fr?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(r.width,r.height);else if(e&&this.cameraNode&&this.destination)this.cameraNode.replaceTrack(this.initialTrack);else{this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():(this.destination=new hu(this.videoContext,{name:"mainDestination",logger:this.log}),this.destination.on("render",m=>{var h;(h=this.cameraTrack)==null||h.emit("render",m)}));let{width:n,height:a}=this.cameraResolution,u=yield this.getWatermarkImage(n,a);this._waterMarkOption={x:0,y:0,width:u.width,height:u.height,image:u},this.cameraNode=new zu(this.videoContext,{input:this.initialTrack,width:n,height:a,mirror:this._isMirror,rotation:this._rotation,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,Wasm:this.Wasm,enableFaceCentering:this._enableFaceCentering,enableEffectOptimization:this._enableEffectOptimization,onAbort:this.onAbort,mat4:this._mat4,postProcessing:this._postProcessing,color:this._color}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute(),yield this.cameraNode.predictReady}if(this.videoContext.frameRate=o.frameRate,this._use2d){let n=this.cameraNode;if(n.disconnect(),this._isTransform&&(this.transformNode?(this.transformNode.mirror=this._isMirror,this.transformNode.rotation=this._rotation):this.transformNode=new gr(this.videoContext,this.log,this._isMirror,this._rotation),n=n.connect(this.transformNode),n.disconnect(),this.log.info(`start mirror ${this._isMirror} rotate ${this.rotation}`)),this.mixNode&&this.mixNode.close(),delete this.mixNode,this._isMixScreen||this._hasWaterMark){if(this.mixNode=new En(this.videoContext,this.log),n.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption)this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y;else if(this.waterMarkNode){let{width:u,height:m}=this.cameraResolution;this.waterMarkNode.image=yield this.getWatermarkImage(u,m),u&&m&&this.waterMarkNode.resize(u,m)}(s=this.waterMarkNode)==null||s.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&(this.screenNode||(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.resize(this.screenTrack.settings.width,this.screenTrack.settings.height)),this.screenNode.shouldUpdate=!1,this.screenNode.connect(this.mixNode,{zIndex:0})),n=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)}n.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}clearLastFrame(){var e;this.destination&&((e=this.destination.ctx2d)==null||e.clearRect(0,0,this.destination.width,this.destination.height))}changeInput(e){var r,o,s,n,a;if(e instanceof ti)return this.log.info("change screen input",(r=e.mediaTrack)==null?void 0:r.label),this.setScreenTrack(e);if(e instanceof ar)return this.log.info("change video input",(o=e.mediaTrack)==null?void 0:o.label),this.setCameraTrack(e);if(e instanceof fo){this.log.info("change remote input",(s=e.mediaTrack)==null?void 0:s.label);let u=e.mediaTrack;return e.setOutputMediaStreamTrack(u)}if(e instanceof us)return this.log.info("change mix input",(n=e.outMediaTrack)==null?void 0:n.label),this.setMixTrack(e);this.log.warn("change unknown input",(a=e.mediaTrack)==null?void 0:a.label)}removeInput(e){var r;e instanceof ti?((r=this.screenNode)==null||r.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof ar?this._isMixScreen?(delete this.cameraNode,this.cameraTrack._inputTrack=null,this.update()):(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof fo?e.source&&e.source.context.destroy():e instanceof us&&(delete this.mixTrack,this.update())}setMixTrack(e){this.mixTrack=e}setCameraTrack(e){return this.cameraTrack=e,this.update(!0)}setScreenTrack(e){return y(this,null,function*(){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):yield this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)})}getWatermarkImage(e,r){return y(this,null,function*(){let o=document.createElement("canvas");r&&e&&(o.height=r,o.width=e);let s=o.getContext("2d");if(!s)throw new de({code:q.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,a)=>n.zIndex-a.zIndex),this.watermarkImageList.forEach(({image:n,x:a,y:u,width:m,height:h})=>{s.drawImage(n,a,u,m,h)}),$s(o.toDataURL())})}pushWaterMarkImageList(e){let{type:r}=e;this.watermarkImageList.some(s=>s.imageUrl===e.imageUrl&&s.height===e.height&&s.width===e.width&&s.x===e.x&&s.y===e.y&&s.type===e.type&&s.zIndex===e.zIndex)||((r==="mute"||r==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(s=>s.type!==r)),this.watermarkImageList.push(e))}setBeautyParams(e){return y(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return y(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return y(this,null,function*(){let r;try{r=yield $s((e==null?void 0:e.imageElement)||e.imageUrl)}catch(f){throw new de({code:q.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:o=0,y:s=0,width:n=r.width,height:a=r.height,type:u="watermark",zIndex:m=2}=e;this.watermarkImageList.some(f=>f.type===u)?(this.watermarkImageList=this.watermarkImageList.filter(f=>f.type!==u),this.pushWaterMarkImageList({x:o,y:s,width:n,height:a,image:r,zIndex:m,type:u,imageUrl:e.imageUrl}),r=yield this.getWatermarkImage(this.cameraResolution.width,this.cameraResolution.height),this._waterMarkOption={x:0,y:0,width:r.width,height:r.height,image:r},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(r.width,r.height),this.waterMarkNode.image=r):this.update()):(this.pushWaterMarkImageList({x:o,y:s,width:n,height:a,image:r,zIndex:m,type:u,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(f,T)=>f==="imageUrl"?void 0:T))})}deleteWatermark(e="watermark"){return y(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(r=>r.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(r,o)=>r==="imageUrl"?void 0:o)),yield this.freshWatermark()})}freshWatermark(){return y(this,null,function*(){var s;(s=this.waterMarkNode)==null||s.close(),delete this.waterMarkNode,delete this._waterMarkOption;let{width:e,height:r}=this.cameraResolution,o=yield this.getWatermarkImage(e,r);this._waterMarkOption={x:0,y:0,width:o.width,height:o.height,image:o},this.update()})}setVirtualBackground(e){return y(this,null,function*(){var r,o,s;if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield $s(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type),this._enableFaceCentering=(r=e.enableFaceCentering)!=null?r:this._enableFaceCentering,this._enableEffectOptimization=(o=e.enableEffectOptimization)!=null?o:this._enableEffectOptimization,this._color=(s=e.color)!=null?s:[0,1,0]}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new de({code:q.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var r;this._isMixScreen=e,this._isMixScreen||((r=this.screenNode)==null||r.close(),delete this.screenNode),this.update()}set mirror(e){var r;this._isMirror!==e&&(this._isMirror=e,this._isTransform||((r=this.transformNode)==null||r.close(),delete this.transformNode),this.update())}get mirror(){return this._isMirror}set rotation(e){var r;this._rotation!==e&&(this._rotation=e,this._isTransform||((r=this.transformNode)==null||r.close(),delete this.transformNode),this.update())}get rotation(){return this._rotation}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return y(this,null,function*(){var e;(e=this.cameraTrack)!=null&&e.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}createDecodeContext(e){return new Xu(e)}clear(){var e,r;(e=this.videoContext)==null||e.disconnect(),(r=this.destination)==null||r.removeAllListeners(),delete this.destination,delete this.cameraNode,delete this.transformNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};K([Mg(function(e){this.log.error("update failed",e)})],lc.prototype,"update",1);var jy=0;var Qu=class extends le{constructor(e){super("room");l(this,"seq",++jy);l(this,"sdkAppId");l(this,"userId");l(this,"userSig");l(this,"privateMapKey");l(this,"latencyLevel");l(this,"tinyId");l(this,"scene");l(this,"roomId");l(this,"useStringRoomId");l(this,"role","anchor");l(this,"joinParams",null);l(this,"localPublishFlag",0);l(this,"localTracks",new Set);l(this,"enableAutoPlayDialog",!0);l(this,"autoReceiveAudio",!0);l(this,"autoReceiveVideo",!0);l(this,"proxy_ws");l(this,"proxy_wt");l(this,"proxy_unified");l(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0,isH265EncodeSupported:!0,isH265DecodeSupported:!0}});l(this,"keyPointManager");l(this,"audioManager");l(this,"videoManager");l(this,"callDurationCalculator");l(this,"badCaseDetector");l(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});l(this,"videoDecodeFallbackType");l(this,"smallMode","canvas");l(this,"_isUsingCachedSchedule",!1);l(this,"_log",$.createLogger({id:`r${this.seq}`}));l(this,"_joinedTimestamp",0);l(this,"_sdkType");l(this,"heartbeatReport");l(this,"quality");l(this,"enableSEI");l(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,Xe(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),Xe(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),Xe(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new UE({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new VE({room:this}),this.badCaseDetector=new FE({room:this}),this.audioManager=new Tu(this),this.videoManager=new lc(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return y(this,null,function*(){return this.publish(e)})}removeTrack(e){return y(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return y(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(De(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Ft(e)){let{websocketProxy:r,webtransportProxy:o,loggerProxy:s,scheduleProxy:n,unifiedProxy:a}=e;this.proxy_ws=r,this.proxy_wt=o,this.proxy_unified=a,a?(Cu([a,a]),Po(`https://${a}`)):(s&&Po(s),n&&Cu(n))}V.once(F.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:oi.main,sched_back_domain:oi.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return y(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(r=>{e[r.userId]=r.remoteAudioTrack.stat}),e})}getTransportStats(){return y(this,null,function*(){var r;let e={rtt:((r=this.quality)==null?void 0:r.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let o of this.quality.downlinkInfo)e.downlinksRTT[o.userId]=o.rtt;return e})}getRemoteVideoStats(){return y(this,arguments,function*(e="main"){let r={};return this.remotePublishedUserMap.forEach(o=>{let s=e==="auxiliary"?o.remoteAuxiliaryTrack:o.remoteVideoTrack;r[o.userId]=s.stat}),r})}checkDestroy(){if(this.isDestroyed)throw new de({code:q.INVALID_OPERATION,message:Be({key:$e.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(Yt.INVALID_DESTROY),new de({code:q.INVALID_OPERATION,message:Be({key:$e.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,V.emit(F.ROOM_DESTROY,{room:this})}schedule(e,r){return y(this,null,function*(){var s,n,a,u;let o=Te();try{let{isCached:m,result:h,detailCost:f}=yield ih({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:nt,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:r,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=m,this._log.info(`schedule cache:${+m} ${lr(h,{keysToExclude:["username","credential"]})}`),m&&V.once(F.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=j(j({},this.scheduleResult),h),Le((s=h.config)==null?void 0:s.retryCount)&&bl(h.config.retryCount),De((n=h.config)==null?void 0:n.loggerDomain)&&Po(h.config.loggerDomain),this.videoDecodeFallbackType=((a=h.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,this.smallMode=((u=h.config)==null?void 0:u.smallMode)||this.smallMode,V.emit(F.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:f}),X.addSuccessEvent({key:521700,cost:Te()-o})}catch(m){throw X.addFailedEvent({key:521700,error:m}),m}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}switchRoom(e){return Promise.reject()}isSwitchRoomSupported(){return!1}};function HE(i,t=!1){let e=Object.defineProperties(Rt(),{postMessage:{value:i.postMessage.bind(i)},port:{get(){return i},set(o){i.onmessage=He,i.onmessageerror=He,i=o,r()}}});function r(){i.onmessage=o=>{o.data?o.ports.length||t?e.next(o):e.next(o.data):(e.complete(),i.close())},i.onmessageerror=o=>{e.error(o),i.close()}}return r(),e}var Ah=class extends fe{constructor(t,e){super(t);let r=new fe(t);r.next=He,e(r)}},cH=_e(Ah,"takeUntilComplete");var xt={useWt:!0,useAINS:!0,useHardDecoder:"prefer-software",useHardEncoder:"prefer-software",unreliable:!1,debug:!1,assetsPath:"",enableUpload:!0},WE="__INLINE__WORKER__",GE="__INLINE__WASM__",{debug:jE}=console;xt.debug||(console.debug=()=>{});var qy=!WE.startsWith("__"),zy=!GE.startsWith("__");function Yu(){let i=Wo(`${xt.assetsPath?`${xt.assetsPath}/`:""}worker.js`);return qy?URL.createObjectURL(new Blob([atob(WE)],{type:"application/javascript"})):i.startsWith("http")?fetch(i).then(t=>t.blob().then(e=>URL.createObjectURL(e))):i}var mc;function Zu(){return y(this,null,function*(){let i=xt.assetsPath?`${xt.assetsPath}/`:"";return mc||(zy?mc=new TextEncoder().encode(atob(GE)).buffer:mc=yield fetch(Wo(`${i}av_processing.wasm`)).then(t=>t.arrayBuffer()),mc)})}var bh=class{constructor(){l(this,"playPort");l(this,"playPortSent",!1);l(this,"worklet");l(this,"workletPromise")}init(){return this.workletPromise||(this.workletPromise=this._init()),this.workletPromise}_init(){return y(this,null,function*(){let t=Ye("player"),e=Yu();try{yield t.audioWorklet.addModule(typeof e=="string"?e:yield e),$.info("global audio player worklet addModule success",e)}catch(r){throw $.error("global audio player worklet addModule failed:",r),r}return this.worklet=new AudioWorkletNode(t,"global-audio-player",{processorOptions:{wasm:yield Zu(),flag:xt},numberOfInputs:2}),$.info("global audio player worklet created",t.state),this.worklet.connect(t.destination),this.playPort=this.worklet.port,this.playPort})}playAudio(t){return y(this,null,function*(){this.playPortSent||(this.playPortSent=!0,t(yield this.init()))})}},Ku=new bh;var Rh=(()=>{if(typeof self=="undefined")return!1;if(!("top"in self&&self!==top)){if("showOpenFilePicker"in self)return"showOpenFilePicker"}return!1})(),gH=Rh?Promise.resolve().then(function(){return Yy}):Promise.resolve().then(function(){return iA});var EH=Rh?Promise.resolve().then(function(){return Ky}):Promise.resolve().then(function(){return sA});var Jy=Rh?Promise.resolve().then(function(){return tA}):Promise.resolve().then(function(){return aA});function vh(...i){return y(this,null,function*(){return(yield Jy).default(...i)})}var Xy=i=>y(void 0,null,function*(){let t=yield i.getFile();return t.handle=i,t}),Qy=(...t)=>y(void 0,[...t],function*(i=[{}]){Array.isArray(i)||(i=[i]);let e=[];i.forEach((s,n)=>{e[n]={description:s.description||"Files",accept:{}},s.mimeTypes?s.mimeTypes.map(a=>{e[n].accept[a]=s.extensions||[]}):e[n].accept["*/*"]=s.extensions||[]});let r=yield window.showOpenFilePicker({id:i[0].id,startIn:i[0].startIn,types:e,multiple:i[0].multiple||!1,excludeAcceptAllOption:i[0].excludeAcceptAllOption||!1}),o=yield Promise.all(r.map(Xy));return i[0].multiple?o:o[0]}),Yy={__proto__:null,default:Qy};function el(i){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var r=e.done;return Promise.resolve(e.value).then(function(o){return{value:o,done:r}})}return el=function(e){this.s=e,this.n=e.next},el.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return r===void 0?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return r===void 0?Promise.reject(e):t(r.apply(this.s,arguments))}},new el(i)}var qE=(o,s,...n)=>y(void 0,[o,s,...n],function*(i,t,e=i.name,r){let a=[],u=[];var m,h=!1,f=!1;try{for(var T,A=function(C){var N,w,x,te=2;for(typeof Symbol!="undefined"&&(w=Symbol.asyncIterator,x=Symbol.iterator);te--;){if(w&&(N=C[w])!=null)return N.call(C);if(x&&(N=C[x])!=null)return new el(N.call(C));w="@@asyncIterator",x="@@iterator"}throw new TypeError("Object is not async iterable")}(i.values());h=!(T=yield A.next()).done;h=!1){let C=T.value,N=`${e}/${C.name}`;C.kind==="file"?u.push(C.getFile().then(w=>(w.directoryHandle=i,w.handle=C,Object.defineProperty(w,"webkitRelativePath",{configurable:!0,enumerable:!0,get:()=>N})))):C.kind!=="directory"||!t||r&&r(C)||a.push(qE(C,t,N,r))}}catch(C){f=!0,m=C}finally{try{h&&A.return!=null&&(yield A.return())}finally{if(f)throw m}}return[...(yield Promise.all(a)).flat(),...yield Promise.all(u)]}),Zy=(...t)=>y(void 0,[...t],function*(i={}){i.recursive=i.recursive||!1,i.mode=i.mode||"read";let e=yield window.showDirectoryPicker({id:i.id,startIn:i.startIn,mode:i.mode});return qE(e,i.recursive,void 0,i.skipDirectory)}),Ky={__proto__:null,default:Zy},eA=(s,...n)=>y(void 0,[s,...n],function*(i,t=[{}],e=null,r=!1,o=null){Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||"Untitled";let a=[],u=null;if(i instanceof Blob&&i.type?u=i.type:i.headers&&i.headers.get("content-type")&&(u=i.headers.get("content-type")),t.forEach((f,T)=>{a[T]={description:f.description||"Files",accept:{}},f.mimeTypes?(T===0&&u&&f.mimeTypes.push(u),f.mimeTypes.map(A=>{a[T].accept[A]=f.extensions||[]})):u?a[T].accept[u]=f.extensions||[]:a[T].accept["*/*"]=f.extensions||[]}),e)try{yield e.getFile()}catch(f){if(e=null,r)throw f}let m=e||(yield window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:a,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1}));!e&&o&&o(m);let h=yield m.createWritable();return"stream"in i?(yield i.stream().pipeTo(h),m):"body"in i?(yield i.body.pipeTo(h),m):(yield h.write(yield i),yield h.close(),m)}),tA={__proto__:null,default:eA},rA=(...t)=>y(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),new Promise((e,r)=>{let o=document.createElement("input");o.type="file";let s=[...i.map(m=>m.mimeTypes||[]),...i.map(m=>m.extensions||[])].join();o.multiple=i[0].multiple||!1,o.accept=s||"",o.style.display="none",document.body.append(o);let n=m=>{typeof a=="function"&&a(),e(m)},a=i[0].legacySetup&&i[0].legacySetup(n,()=>a(r),o),u=()=>{window.removeEventListener("focus",u),o.remove()};o.addEventListener("click",()=>{window.addEventListener("focus",u)}),o.addEventListener("change",()=>{window.removeEventListener("focus",u),o.remove(),n(o.multiple?Array.from(o.files):o.files[0])}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),iA={__proto__:null,default:rA},oA=(...t)=>y(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),i[0].recursive=i[0].recursive||!1,new Promise((e,r)=>{let o=document.createElement("input");o.type="file",o.webkitdirectory=!0;let s=a=>{typeof n=="function"&&n(),e(a)},n=i[0].legacySetup&&i[0].legacySetup(s,()=>n(r),o);o.addEventListener("change",()=>{let a=Array.from(o.files);i[0].recursive?i[0].recursive&&i[0].skipDirectory&&(a=a.filter(u=>u.webkitRelativePath.split("/").every(m=>!i[0].skipDirectory({name:m,kind:"directory"})))):a=a.filter(u=>u.webkitRelativePath.split("/").length===2),s(a)}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),sA={__proto__:null,default:oA},nA=(e,...r)=>y(void 0,[e,...r],function*(i,t={}){Array.isArray(t)&&(t=t[0]);let o=document.createElement("a"),s=i;"body"in i&&(s=yield function(u,m){return y(this,null,function*(){let h=u.getReader(),f=new ReadableStream({start:C=>function N(){return y(this,null,function*(){return h.read().then(({done:w,value:x})=>{if(!w)return C.enqueue(x),N();C.close()})})}()}),T=new Response(f),A=yield T.blob();return h.releaseLock(),new Blob([A],{type:m})})}(i.body,i.headers.get("content-type"))),o.download=t.fileName||"Untitled",o.href=URL.createObjectURL(yield s);let n=()=>{typeof a=="function"&&a()},a=t.legacySetup&&t.legacySetup(n,()=>a(),o);return o.addEventListener("click",()=>{setTimeout(()=>URL.revokeObjectURL(o.href),3e4),n()}),o.click(),null}),aA={__proto__:null,default:nA};var Ch=class{constructor(t){this.name=t;l(this,"ready");l(this,"worker");l(this,"ports");l(this,"ids",1);l(this,"transactions",new Map);l(this,"log");l(this,"addTransaction",t=>(this.transactions.set(++this.ids,t),this.ids))}postMessage(t,e){var r;(r=this.worker)==null||r.postMessage(t,e)}create(t){return y(this,null,function*(){if(this.ready)return this.ready;t||(t=this.name),console.time(`createWorker_${t}`);let e=Yu(),r=new Worker(typeof e=="string"?e:yield e,{name:t});return this.worker=r,this.ready=new Promise((o,s)=>y(this,null,function*(){r.onmessage=({data:{id:n,type:a,payload:u}})=>{var m;if(n)(m=this.transactions.get(n))==null||m(u),this.transactions.delete(n);else switch(a){case"error":console.timeEnd(`createWorker_${t}`),console.warn("worker error:",u),s(u);break;case"ready":console.timeEnd(`createWorker_${t}`),o(this);break;case"updateAFSM":if(u.value){let h=typeof u.old=="string"?u.old:`${u.old.action}ing`,f=typeof u.value=="string"?u.value:`${u.value.action}ing`;console.log(Xc(),u.group,u.name,h,"\u{1F449}",f)}break;case"log":console.log(u);break;case"glog":window.dispatchEvent(new CustomEvent(a,{detail:u}));break}},r.postMessage({wasm:yield Zu(),flag:xt},this.ports)}))})}destroy(){var t;console.log("destroy worker",this.name),delete this.ready,(t=this.worker)==null||t.terminate()}},Nh=class{constructor(t,e,r){this.worker=t;l(this,"channel",new MessageChannel);l(this,"ready");this.ready=new Promise((o,s)=>{this.worker.postMessage({id:this.worker.addTransaction(o),payload:e},[this.channel.port2])}).then(o=>(o.err===0&&(this.worker.sessionCount++,this.channel.port1.onmessage=r),o))}postMessage(...t){this.channel.port1.postMessage(...t)}destroy(){--this.worker.sessionCount===0&&this.worker.destroy()}},Dh=class i extends Ch{constructor(){super("main");l(this,"switchValue",new Map);l(this,"extendChannel");l(this,"sessionCount",0)}setSwitchValue(e,r){var o;this.switchValue.set(e,r),(o=this.extendChannel)==null||o.port1.postMessage([e,r])}create(){return y(this,null,function*(){return this.ready?this.ready:(this.extendChannel=new MessageChannel,this.ports=[this.extendChannel.port2],yield Gt(i.prototype,this,"create").call(this),this.switchValue.forEach((e,r)=>{this.extendChannel.port1.postMessage([r,e])}),this)})}},So=new Dh,Es,cA=-1;function zE(i){return console.log(i),Es.push(i.slice()),Es.length>1e3&&Es.shift(),i}function JE(i){return y(this,null,function*(){switch(cA){case 0:this.edpl.willDecodeAudio=zE;break;case 2:this.edpl.didEncodeAudio=zE;break}yield So.create(),V.emit(F.JOIN_SEND_CMD,{room:this});let t=new Nh(So,i,o=>{let s=o.data;if(typeof s=="string")this.onWorkerEvent(s);else if(s==null)this.onWorkerEvent("client-banned",0),t.destroy();else{let{cmd:n,payload:a}=s;this.onWorkerEvent(n,a)}}),{err:e,data:r}=yield t.ready;if(typeof e=="number"){if(V.emit(F.JOIN_RECEIVED_CMD_RES,{room:this,code:e}),e===0)return Object.assign(this,r,{session:t});throw new de({code:q.JOIN_ROOM_FAILED,extraCode:Number(e),message:Be({key:$e.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:e,errorMsg:""}})})}else throw e})}Object.defineProperties(window,{useAINS:{set:wh},useWt:{set:dA},enableDebug:{set(i){console.debug=i?jE:()=>{},So.setSwitchValue("enableDebug",i)}},useV2:{set:Mh},dump:{value(){if(Es||(console.warn("dump audio will be activated at next time join room"),Es=[]),!Es.length){console.warn("no audio data to dump,try it later");return}let i=[];return Es.forEach(t=>{i.push(new Uint16Array([t.length])),i.push(t)}),vh(new Blob(i),{fileName:"audio dump hex",extensions:[".hex"]})}},dumpAudio:{value(i="audio",t=2e3){let e=[],r=new Promise(o=>{let s=new MessageChannel;So.extendChannel.port1.postMessage(["dump",i],[s.port1]),s.port2.onmessage=({data:n})=>{console.log(n),e.push(n),e.length>t&&(s.port2.onmessage=null,So.extendChannel.port1.postMessage(["dump",i]),s.port2.close(),o(new Blob(e)))}});return vh(r,{fileName:i,extensions:[".pcm"]})}},hardDec:{set(i){switch(i){case!0:xt.useHardDecoder="prefer-hardware";break;case!1:xt.useHardDecoder="prefer-software";break;default:xt.useHardDecoder="no-preference"}}}});function wh(i){return y(this,null,function*(){So.setSwitchValue("useAINS",i)})}function Mh(i){return y(this,null,function*(){So.setSwitchValue("useV2",i)})}function dA(i){return y(this,null,function*(){So.setSwitchValue("useWt",i)})}function XE(i){let t=new MediaStreamTrackGenerator({kind:"audio"});i.setInputMediaStreamTrack(t),i.player.setVolume(0),this.postMessage({cmd:"pullAudio",payload:{tinyId:i.tinyId,writable:t.writable}},[t.writable])}function QE(i){return y(this,null,function*(){var o;this._log.info("pull video",i);let t=Date.now(),e=0,r=new MessageChannel;this.postMessage({cmd:"pullVideo",payload:{mediaType:i.mediaType,tinyId:i.tinyId}},[r.port1]),(o=i.stat).framesReceived||(o.framesReceived=0),be(HE(r.port2),qe(Re(i,le.INIT)),Ue(s=>{let{data:n,packetsReceived:a}=s;i.stat.packetsReceived=a,i.stat.framesReceived++,e++;let u=n[4]&31;if(e<=10){let h=Array.from(n.slice(0,10)).map(f=>f.toString(16).padStart(2,"0")).join(" ");this._log.info(`Frame ${e} - Size: ${n.length} bytes, Type: ${u}, Timestamp: ${Date.now()-t}ms First 10 bytes: ${h}`)}let m;switch(u){case 5:case 7:m="key";break;default:m="delta";break}i.isAvailable?i.decodeFrame({data:n.buffer,type:m,timestamp:(Date.now()-t)*1e3}):console.warn("track is not available")},()=>{},()=>{r.port2.postMessage(null),r.port2.close()}))})}var tl=[];function ZE(i){var u;let t=Rt();if(this.state!=="joined")throw new Error("Room is not joined");if(i.state==="publish")return;for(let m=0;m<=tl.length;m++)if(!tl[m]){tl[m]=this,this.index=m;break}let e=i.profile;this._log.info("start push audio",this.index,e);let r=new MessageChannel,o=i.enableEncodeFrame?new MessageChannel:null;(u=this.session)==null||u.postMessage({cmd:"pushAudio",payload:j({index:this.index},e)},o?[r.port2,o.port2]:[r.port2]),r.port1.onmessage=m=>{m.data==null||(typeof m.data=="number"?t.next(m.data):o&&o.port1.postMessage(pe(j({},m.data),{data:new Uint8Array(i.encodeFrame({data:m.data.data.buffer,timestamp:m.data.timestamp}).data)})))};let s=new MediaStream,n,a=m=>{let h=s.getAudioTracks()[0];h&&(n.disconnect(),s.removeTrack(h)),s.addTrack(m),this._log.info("push audio track:",m.readyState,m.getSettings().deviceId),n=Ye("player").createMediaStreamSource(s),n.connect(Ku.worklet,0,this.index)};be(Re(i,"output-media-track-changed"),qe(Re(i,"ready")),Ue(a,console.error,()=>{this._log.info("stop push audio",e),i.volume=0,n.disconnect(),tl[this.index]=null,o&&o.port1.postMessage(null),r.port1.postMessage(null)})),be(t,Ja(m=>i.volume=m),xi(pu(1e3)),Ue(()=>{i.volume=0})),a(i.outMediaTrack)}var YH=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium"});var Oh=class{constructor(t,e,r,o){this.localTrack=t;this.type=e;this.config=r;this.port=o;l(this,"track");l(this,"label");l(this,"insertKeyFrame",!0);l(this,"session");l(this,"tsMap",new Map);t._log.info("create Video Encoder",r)}trans(t,e,r){return y(this,null,function*(){let o=yield this.recreate(r,{recreateCount:0});e.signal.addEventListener("abort",()=>{o.encoder.close()});let s=0;return t.pipeThrough(new TransformStream({transform:(n,a)=>{o.encoder.state==="configured"&&(this.tsMap.set(s,Date.now()),this.encode(n),s++,a.enqueue(n))}}),e)})}encode(t){var e,r;(r=(e=this.session)==null?void 0:e.encoder)==null||r.encode(t,{keyFrame:this.insertKeyFrame}),this.insertKeyFrame=!1}start(t,e,r){return y(this,null,function*(){let o=yield this.recreate(r,{recreateCount:0,frameEncoded:0});this.session=o;let s=0;t.pipeTo(new WritableStream({write:n=>{o.encoder.state==="configured"&&(s<10&&this.localTrack.log.info(`capture ${this.label} track frame:`,s,Date.now(),n.timestamp,n.displayWidth,n.displayHeight),(n.displayWidth!==this.config.width||n.displayHeight!==this.config.height)&&(this.localTrack.log.info("resize video track frame:",n.displayWidth,n.displayHeight,this.config.width,this.config.height),this.configure({width:n.displayWidth,height:n.displayHeight},o)),this.tsMap.set(s,Date.now()),this.encode(n),s<10&&this.localTrack.log.info(`encode ${this.label} track frame:`,s),s++,n.close())}}),e).catch(n=>{this.localTrack.log.warn(n),o.encoder.close()})})}recreate(t,e){return y(this,null,function*(){let r=0,o=new VideoEncoder({output:s=>{let n=this.tsMap.get(r);if(this.tsMap.delete(s.timestamp),r<10&&(r===0&&e.recreateCount===0&&V.emit(F.SEND_FIRST_VIDEO_FRAME,{room:t}),this.localTrack.log.info(`encoded ${this.label} track frame:`,r,Date.now(),s.timestamp)),r++,e.frameEncoded=r,this.track.enabled===!1)return;let a=null;if(this.localTrack.enableEncodeFrame){a=new Uint8Array(s.byteLength),s.copyTo(a);let u=this.localTrack.encodeFrame({data:a.buffer},this.type===3);a=new Uint8Array(u.data)}a?(this.localTrack.stat.bytesSent+=a.length,this.port.postMessage({chunk:{type:s.type,timestamp:s.timestamp,data:a,duration:s.duration},timestamp:n},[a.buffer])):(this.localTrack.stat.bytesSent+=s.byteLength,this.port.postMessage({chunk:s,timestamp:n}))},error:s=>{this.localTrack.log.warn(s,this.config),e.recreateCount++,setTimeout(()=>this.recreate(t,e),100)}});return e.encoder=o,yield this.configure({},e),e})}configure(t,e){return y(this,null,function*(){var r;if(Object.assign(this.config,t),e.frameEncoded===0)for(let o=0;o<=Fi.length;o++){let{supported:s}=yield VideoDecoder.isConfigSupported(this.config);if(s)break;if(o===Fi.length)return;Fi[o](this.config)}else e.recreateCount<=Fi.length&&Fi[e.recreateCount-1](this.config);(r=e.encoder)==null||r.configure(this.config)})}close(){this.port.postMessage(null),this.port.close()}};function rl(i,t){return y(this,null,function*(){let e=i.mediaType===2,r=e?"screen":"video",o={codec:"avc1.640028",latencyMode:"realtime",avc:{format:"annexb"},hardwareAcceleration:xt.useHardEncoder,width:t.profile.width,height:t.profile.height,framerate:t.profile.frameRate,bitrate:t.profile.bitrate*1e3},s=new MessageChannel;this.postMessage({cmd:"pushVideo",payload:t},[s.port1]);let n=new Oh(i,t.type,o,s.port2);return s.port2.onmessage=a=>{if(a.data===260)n.insertKeyFrame=!0;else if(!e){let{bitrate:u}=a.data;Kn({configureBr:[a.data.bitrate,u]}),n.session&&n.configure({bitrate:u},n.session)}},this._log.info("start push",r,t),n})}function KE(i){return y(this,null,function*(){var h;let t=i.mediaType===2,e=t?"screen":"video",r={type:t?7:2,profile:i.profile,trackType:t?"screen":"camera",crypto:!!((h=i.manager)!=null&&h.encodePipeline[0])};!t&&i.outMediaTrack instanceof CanvasCaptureMediaStreamTrack&&(r.trackType="canvas");let{trackType:o}=r,{width:s,height:n}=i.outMediaTrack.getSettings();r.profile.width=s,r.profile.height=n;let a=yield rl.call(this,i,r);this._log.info("VideoEncoder created",r);let u,m=f=>y(this,null,function*(){if(u==null||u.abort("track changed"),!f)return;u=new AbortController;let{width:T,height:A,displaySurface:C}=f.getSettings();T&&(a.config.width=T),A&&(a.config.height=A);let N=sr.match(/Chrome\/(\d+)/);(N==null?void 0:N[1])==="114"&&C==="browser"&&delete a.config.hardwareAcceleration,this._log.info("push",e,"track:",f.readyState,f.getSettings());let w;if(typeof MediaStreamTrackProcessor!="undefined"&&!(f instanceof CanvasCaptureMediaStreamTrack))w=new MediaStreamTrackProcessor({track:f}).readable;else{let te;w=new ReadableStream({start(ue){i.on("render",ye=>{if(i.player.mode!==0)try{ue.enqueue(new VideoFrame(ye,{timestamp:performance.now()*1e3}))}catch(Ie){console.warn(Ie)}})},pull(ue){return y(this,null,function*(){if(i.player.mode===0&&Di()&&i.player.element)return new Promise(ye=>{i.player.element.requestVideoFrameCallback((Ie,Y)=>{try{let Pe=new VideoFrame(i.player.element);ue.enqueue(Pe)}catch(Pe){console.warn(Pe)}ye()})})})}})}let x="small"in i&&i.small;return x?(this.smallEncoder||(this.smallEncoder=yield rl.call(this,i,{profile:x,type:3,trackType:o})),this.smallEncoder.track=f,this.smallEncoder.label="small",w=yield this.smallEncoder.trans(w,u,this)):this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder),a.track=f,a.label=e,a.start(w,u,this)});return be(Re(i,"output-media-track-changed"),qe(Re(i,"ready")),Ue(m,console.error,()=>{var f;this._log.info("stop push",e,r),u.abort("unpublish"),a.close(),(f=this.smallEncoder)==null||f.close()})),m(i.outMediaTrack)})}var yo=class yo extends le{constructor(e){var r,o;super((o=(r=e.roomid)==null?void 0:r.toString())!=null?o:e.name,"volumeEvaluation");this.room=e;l(this,"enableInBackground",!1);l(this,"interval",400);e.on("joined",()=>{this.emit(yo.INTERVALCHANGED,this.interval)}),be(Re(this,yo.INTERVALCHANGED),ho(s=>this.room.state==="joined"?this.room.fromWorker("getAudioEnergy",s):be(jg(s),po(()=>[]))),Ue(s=>{s.forEach(n=>{this.room.remotePublishedUserMap.has(n.userId)&&(this.room.remotePublishedUserMap.get(n.userId).remoteAudioTrack.volume=n.volume)}),(!document.hidden||this.enableInBackground)&&this.state==le.ON&&this.room.emit("audio-volume",s)}))}start(e,r){this.interval=e,this.enableInBackground=r,this.emit(yo.INTERVALCHANGED,this.interval)}stop(){}};l(yo,"INTERVALCHANGED","intervalChanged"),K([Ze([le.INIT,le.OFF],le.ON)],yo.prototype,"start",1),K([Ze([],le.OFF)],yo.prototype,"stop",1);var il=yo;var Ao=class Ao extends Qu{constructor(e){super(e);l(this,"index",0);l(this,"session");l(this,"tinyid");l(this,"roomid");l(this,"openid");l(this,"socketid");l(this,"relayip");l(this,"clientip");l(this,"remotePublishedUserMap",new Map);l(this,"bussinessInfo");l(this,"token");l(this,"audioVolumeEvalution",new il(this));l(this,"enableAIVoice",wh);l(this,"AbilityOption",{AVLimit:{EncVideoCodec:"H265",EncVideoWidth:0,EncVideoHeight:0,EncVideoBr:"0",EncVideoFps:0,EncAudioCodec:"opus",EncAudioFS:0,EncAudioCh:0,EncAudioBr:"0"},GeneralLimit:{CPULimit:{uint32_CPU_num:navigator.hardwareConcurrency||0,str_CPU_name:navigator.platform,uint32_CPU_maxfreq:0,model:"",uint32_total_memory:0},uint32_terminal_type:sm(),uint32_device_type:0,str_os_verion:nm(),uint32_link_type:1,str_client_version:nt,uint32_net_type:Lo[zr.getNetworkType()],ua:navigator.userAgent,version:""}});l(this,"joinAbortController",new AbortController);l(this,"smallAbortCtrl");l(this,"smallEncoder");e.tinyId&&(this.tinyId=e.tinyId,Mh(!0)),this._log||(this._log=e.logger),this.bussinessInfo=e.bussinessInfo,e.encodedDataProcessingListener&&this.setEncodedDataProcessingListener(e.encodedDataProcessingListener)}replaceTrack(e){return y(this,null,function*(){})}getLogger(){return this._log}postMessage(e,r){this.session&&(e?typeof e=="string"?this.session.postMessage({cmd:e,payload:r}):this.session.postMessage(e,r):this.session.postMessage(null))}sendMessage(e,r){return new Promise((o,s)=>{this.state!="joined"&&s("join room first");let n=new MessageChannel;this.postMessage({cmd:e,payload:r},[n.port1]),n.port2.onmessageerror=s,n.port2.onmessage=a=>{n.port2.close(),o(a.data)}})}fromWorker(e,r){if(this.state!="joined")throw"join room first";return o=>{var n;let s=new MessageChannel;s.port2.onmessage=a=>{a.data?o.next(a.data):o.complete()},s.port2.onmessageerror=a=>o.error(a),o.defer(()=>{s.port2.postMessage(null),s.port2.close()}),(n=this.session)==null||n.postMessage({cmd:e,payload:r},[s.port1])}}switchRole(e){return y(this,null,function*(){if(e!==this.role)return this._log.info(`switchRole() => switch role to: ${e}`),e=="audience"&&this.unpublish(...this.localTracks),this.sendMessage("switchRole",e=="audience"?21:20).then(r=>{this.role=e})})}join(e,r,o){return y(this,null,function*(){var u,m,h;let s=zr.getEnv(),n=Od(),a={isH264EncodeSupported:this.checkSystemResult.detail.isH264EncodeSupported,isVp8EncodeSupported:this.checkSystemResult.detail.isVp8EncodeSupported,frameWorkType:o,params:e,proxy_wt:(u=this.proxy_wt)==null?void 0:u.replace("https://",""),proxy_ws:(m=this.proxy_ws)==null?void 0:m.replace("wss://",""),proxy_cloud:(h=this.scheduleResult.iceServers)!=null&&h.length?this.scheduleResult.iceServers[0].urls:[],proxy_unified:this.proxy_unified,domains:this.scheduleResult.domains,env:s,osName:Zs(),browserInfo:Od(),tinyId:this.tinyId,joinReq:{useStrRoomid:!!this.useStringRoomId,roomid:String(e.roomId||e.strRoomId),sdkAppID:String(e.sdkAppId),userSig:e.userSig,privMapEncrypt:e.privateMapKey||"",privMap:"",pstnBizType:0,role:"user",jsSdkVersion:nt,browserVersion:n.browserName+n.browserVersion,closeLocalMedia:!0,trtcscene:r==="live"?2:1,trtcrole:e.role,bussinessInfo:e.businessInfo||this.bussinessInfo||"",isAuxUser:0,autoSubscribe:this.autoReceiveAudio&&this.autoReceiveVideo,AbilityOption:this.AbilityOption}};yield JE.call(this,a),console.log(this),Ku.playAudio(f=>this.postMessage({cmd:"setAudioWorkletPort"},[f])),this.checkDestroy()})}leave(){return y(this,null,function*(){this.remotePublishedUserMap.forEach(e=>{e.remoteAudioTrack.close(),e.remoteAuxiliaryTrack.close(),e.remoteVideoTrack.close()}),this.postMessage(null),this.remotePublishedUserMap.clear(),this.localTracks.forEach((e,r)=>r.unpublish())})}getSignalInfo(){return{tinyId:this.tinyid,clientIp:this.clientip,signalIp:"",relayIp:this.relayip,relayInnerIp:"",relayPort:0}}enableAudioVolumeEvaluation(e=2e3,r=!1){e<=0?this.audioVolumeEvalution.stop():this.audioVolumeEvalution.start(e,r)}getLocalAudioStats(){return this.sendMessage("getLocalAudioStats")}getLocalVideoStats(){return this.sendMessage("getLocalVideoStats")}afterJoin(){return y(this,null,function*(){let e=qe(Re(this,"left"));be(r=>y(this,null,function*(){let o=new MessageChannel;o.port2.onmessage=s=>{s.data?r.next({data:s.data,port:o.port2}):r.complete()},o.port2.onmessageerror=s=>r.error(s),r.defer(()=>{o.port2.postMessage(null),o.port2.close()}),this.postMessage({cmd:"decodeAudio",payload:!!this.audioManager.decodePipeline[0]},[o.port1])}),e,Ue(({data:r,port:o})=>{let s=this.audioManager.decodePipeline[0]({frame:{data:r.data.buffer}});o.postMessage(pe(j({},r),{data:new Uint8Array(s.data)}),[s.data])}))})}onWorkerEvent(e,r){switch(e!=="network-quality"&&console.info(this.userId,"onWorkerEvent",e,JSON.stringify(r)),e){case F.RECEIVED_PUBLISHED_USER_LIST:V.emit(e,j({room:this},r));return;case"1":if(r.userId===this.userId)return;this.emit("peer-join",r);return;case"2":this.emit("peer-leave",r);return;case"3":let o=new Wu(this,r);this.remotePublishedUserMap.set(r.userId,o),this.emit("remote-published",o);return;case"5":{let f=r,T=this.remotePublishedUserMap.get(f);T&&(T.remoteVideoTrack.close(),T.remoteAuxiliaryTrack.close(),T.remoteAudioTrack.close(),this.remotePublishedUserMap.delete(f),this.emit("remote-unpublished",T))}return;case"banned":switch(r){case 8:this.emit("banned",{reason:"kick",message:""});return;case 2:case 6:case 4:this.emit("banned",{reason:"banned",message:""});return;case 7:case 5:this.emit("banned",{reason:"room_disband",message:""});return}break;case"6":{let{prevMuteState:f,muteState:T,flag:A}=r,C=this.remotePublishedUserMap.get(T.userId);if(!C){this.emit("remote-publish-state-changed",r);return}C.flag=A}V.emit(F.REMOTE_PUBLISH_STATE_CHANGED,j({room:this},r)),this.emit("remote-publish-state-changed",r);return;case"network-quality":this.quality=j({},r);let{uplinkLoss:s,uplinkRTT:n,uplinkInfo:a,downlinkInfo:u,msg_down_stream_info:m}=r,h={str_sdk_version:nt,uint64_datetime:Date.now(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyid},msg_device_info:{uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:Lo[Zn()]},msg_event_msg:Jg(this.userId),str_acc_ip:this.relayip,str_client_ip:this.clientip,msg_up_stream_info:a,msg_down_stream_info:m};V.emit(F.HEARTBEAT_REPORT,{room:this,report:h}),this.emit("heartbeat-report",h),V.emit(F.NETWORK_QUALITY,{room:this,uplink:{rtt:n,loss:s},downlinks:u}),delete r.downlinkInfo;break;case"signal-connection-state-changed":V.emit(F.SIGNAL_CONNECTION_STATE_CHANGED,j({room:this},r));return}this.emit(e,r)}sendStartPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("publishCdn",e)}sendStopPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("stopPublishCdn",e)}sendStartMixTranscode(e){return this.sendMessage("startMcuMix",e)}sendStopMixTranscode(e){return this.sendMessage("stopMcuMix",e)}publish(...e){return y(this,null,function*(){let r=e.reduce((a,u)=>u.mediaType|a,0),o=this.sendMessage("publish",r).then(a=>a.err!==0?Promise.reject(a.err):a),s=0,n=a=>y(this,null,function*(){switch(yield o,a.muted&&(s|=a.mediaType),bt(a,a).add("mute",()=>{this.postMessage("mute",{mediaType:a.mediaType,userId:this.userId,srctinyid:this.tinyid,remove:!0})}).add("unmute",()=>{this.postMessage("unmute",{mediaType:a.mediaType,userId:this.userId,srctinyid:this.tinyid,add:!0})}),a.mediaType){case 1:ZE.call(this,a);break;default:yield KE.call(this,a)}});yield Promise.all(e.map(n)),s&&this.postMessage("mute",{mediaType:s,srctinyid:this.tinyid,userId:this.openid,remove:!0})})}unpublish(...e){return y(this,null,function*(){e.forEach(ct)})}subscribe(...e){return y(this,null,function*(){let r=e.reduce((f,T)=>T.mediaType|f,0),{userId:o,tinyId:s,streamType:n}=e[0],a=this.remotePublishedUserMap.get(o),u=j({},a.subscribeState),m=Object.assign(new _a,u);m.mediaType|=r,V.emit(F.SUBSCRIBE_START,{room:this,streamType:n,remotePublishedUser:a,subscribeState:m});let h=yield this.sendMessage("subscribe",{mediaType:m.mediaType,userId:o,srctinyid:s,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8,2].filter(f=>m.mediaType&f).map(f=>({mediaType:f,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}});console.dir("subscribe",h),yield Promise.all(e.filter(f=>!f.isSubscribed).map(f=>{switch(f.mediaType){case 1:return XE.call(this,f);default:return QE.call(this,f)}})),V.emit(F.SUBSCRIBE_SUCCESS,{room:this,streamType:n,remotePublishedUser:a})})}unsubscribe(...e){return y(this,null,function*(){let r=0;for(let o of e)r|=o.mediaType;if(e.length){let{userId:o,streamType:s,tinyId:n}=e[0];yield this.sendMessage("unSubscribe",{mediaType:r,srctinyid:n,userId:o});for(let a of e)a.unsubscribe();V.emit(F.UNSUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:this.remotePublishedUserMap.get(o)})}})}enableSmall(e){return y(this,null,function*(){var r;if(e){if(this.videoManager.smallTrack){let o=this.videoManager.cameraTrack;this.smallEncoder=yield rl.call(this,o,{profile:o.small,type:3,trackType:"camera"});let s=new MediaStreamTrackProcessor({track:this.videoManager.smallTrack}).readable;this.smallEncoder.track=this.videoManager.smallTrack,this.smallEncoder.label="small",this.smallAbortCtrl=new AbortController,this.smallEncoder.start(s,this.smallAbortCtrl,this),this._log.info("push small")}}else(r=this.smallAbortCtrl)==null||r.abort("stop"),this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder)})}changeType(e,r){let o=this.remotePublishedUserMap.get(r.userId);if(!o)return;let s=e?8:4;if(o.remoteVideoTrack.mediaType===s)return;let n={srctinyid:o.tinyId,mediaType:s,userId:r.userId,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8].filter(a=>s&a).map(a=>({mediaType:a,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}};o.remoteVideoTrack.mediaType=n.mediaType,this.postMessage("changetype",n)}destroy(){this.isDestroyed||(super.destroy(),this.isDestroyed=!0,this.joinAbortController.abort("destroy"))}};K([lo(Ao.prototype.afterJoin),Ze(["left",le.INIT],"joined"),OE()],Ao.prototype,"join",1),K([Ze("joined","left",{ignoreError:!0}),xE()],Ao.prototype,"leave",1),K([Yd((...e)=>0),kE()],Ao.prototype,"publish",1),K([Yd((...e)=>0),PE()],Ao.prototype,"unpublish",1),K([Yd((...e)=>e[0].userId),LE()],Ao.prototype,"subscribe",1);var ol=Ao;vn.frameWorkType=37;vn.create=function(i){let t=vn._create.call(this,ol,i);return t._use(Zp,i==null?void 0:i.assetsPath),i!=null&&i.assetsPath&&(xt.assetsPath=i==null?void 0:i.assetsPath),console.log("trtc wasm sdk:",nt,"created",xt),t};Object.assign(vn.prototype,{_setCurrentSpeaker(i){let t=Ye("player");return t!=null&&t.setSinkId?t.setSinkId(i):Promise.reject("not support")},_enableVideoDecodeFallback(i,t){return y(this,null,function*(){return this.startPlugin(Zp.Name,{type:"webCodecs",renderer:"videoFrame",track:i,config:{codec:"avc1.420028"},fallback:"wasm"}),new Promise((e,r)=>{be(Re(i,"decode-downgrade-state-changed"),zt(o=>o.state==="STARTED"),Vr(1),Vp(1e4),qe(Re(i,le.INIT)),Ue(e,r))})})}});Lm(37);var AW=vn;export{AW as default};
|