trtc-sdk-v5 5.12.0-beta.1 → 5.12.0-beta.10
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/package.json +1 -1
- 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/device-detector.esm.js +1 -1
- package/plugins/device-detector/device-detector.umd.js +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-decoder/video-decoder.esm.js +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/video-mixer/video-mixer.esm.d.ts +8 -7
- package/plugins/video-effect/video-mixer/video-mixer.esm.js +1 -1
- package/plugins/video-effect/video-mixer/video-mixer.umd.js +1 -1
- package/plugins/video-effect/virtual-background/package.json +1 -1
- package/plugins/video-effect/virtual-background/virtual-background.esm.js +1 -1
- package/plugins/video-effect/virtual-background/virtual-background.umd.js +1 -1
- package/plugins/video-effect/watermark/package.json +1 -1
- package/plugins/voice-changer/package.json +1 -1
- package/trtc.esm.js +28 -28
- package/trtc.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var __create=Object.create,__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropSymbols=Object.getOwnPropertySymbols,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,A)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:A}):e[t]=A,__spreadValues=(e,t)=>{for(var A in t||(t={}))__hasOwnProp.call(t,A)&&__defNormalProp(e,A,t[A]);if(__getOwnPropSymbols)for(var A of __getOwnPropSymbols(t))__propIsEnum.call(t,A)&&__defNormalProp(e,A,t[A]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__commonJS=(e,t)=>function(){return t||(0,e[__getOwnPropNames(e)[0]])((t={exports:{}}).exports,t),t.exports},__export=(e,t)=>{for(var A in t)__defProp(e,A,{get:t[A],enumerable:!0})},__copyProps=(e,t,A,i)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of __getOwnPropNames(t))__hasOwnProp.call(e,r)||r===A||__defProp(e,r,{get:()=>t[r],enumerable:!(i=__getOwnPropDesc(t,r))||i.enumerable});return e},__toESM=(e,t,A)=>(A=null!=e?__create(__getProtoOf(e)):{},__copyProps(!t&&e&&e.__esModule?A:__defProp(A,"default",{value:e,enumerable:!0}),e)),__decorateClass=(e,t,A,i)=>{for(var r,s=i>1?void 0:i?__getOwnPropDesc(t,A):t,n=e.length-1;n>=0;n--)(r=e[n])&&(s=(i?r(t,A,s):r(s))||s);return i&&s&&__defProp(t,A,s),s},__publicField=(e,t,A)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,A),require_eventemitter3=__commonJS({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(e,t){"use strict";var A=Object.prototype.hasOwnProperty,i="~";function r(){}function s(e,t,A){this.fn=e,this.context=t,this.once=A||!1}function n(e,t,A,r,n){if("function"!=typeof A)throw new TypeError("The listener must be a function");var a=new s(A,r||e,n),o=i?i+t:t;return e._events[o]?e._events[o].fn?e._events[o]=[e._events[o],a]:e._events[o].push(a):(e._events[o]=a,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function o(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(i=!1)),o.prototype.eventNames=function(){var e,t,r=[];if(0===this._eventsCount)return r;for(t in e=this._events)A.call(e,t)&&r.push(i?t.slice(1):t);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=i?i+e:e,A=this._events[t];if(!A)return[];if(A.fn)return[A.fn];for(var r=0,s=A.length,n=new Array(s);r<s;r++)n[r]=A[r].fn;return n},o.prototype.listenerCount=function(e){var t=i?i+e:e,A=this._events[t];return A?A.fn?1:A.length:0},o.prototype.emit=function(e,t,A,r,s,n){var a=i?i+e:e;if(!this._events[a])return!1;var o,c,d=this._events[a],I=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),I){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,A),!0;case 4:return d.fn.call(d.context,t,A,r),!0;case 5:return d.fn.call(d.context,t,A,r,s),!0;case 6:return d.fn.call(d.context,t,A,r,s,n),!0}for(c=1,o=new Array(I-1);c<I;c++)o[c-1]=arguments[c];d.fn.apply(d.context,o)}else{var l,g=d.length;for(c=0;c<g;c++)switch(d[c].once&&this.removeListener(e,d[c].fn,void 0,!0),I){case 1:d[c].fn.call(d[c].context);break;case 2:d[c].fn.call(d[c].context,t);break;case 3:d[c].fn.call(d[c].context,t,A);break;case 4:d[c].fn.call(d[c].context,t,A,r);break;default:if(!o)for(l=1,o=new Array(I-1);l<I;l++)o[l-1]=arguments[l];d[c].fn.apply(d[c].context,o)}}return!0},o.prototype.on=function(e,t,A){return n(this,e,t,A,!1)},o.prototype.once=function(e,t,A){return n(this,e,t,A,!0)},o.prototype.removeListener=function(e,t,A,r){var s=i?i+e:e;if(!this._events[s])return this;if(!t)return a(this,s),this;var n=this._events[s];if(n.fn)n.fn!==t||r&&!n.once||A&&n.context!==A||a(this,s);else{for(var o=0,c=[],d=n.length;o<d;o++)(n[o].fn!==t||r&&!n[o].once||A&&n[o].context!==A)&&c.push(n[o]);c.length?this._events[s]=1===c.length?c[0]:c:a(this,s)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=i?i+e:e,this._events[t]&&a(this,t)):(this._events=new r,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=i,o.EventEmitter=o,void 0!==t&&(t.exports=o)}}),require_grammar=__commonJS({"../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/grammar.js"(e,t){"use strict";var A=t.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg: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(e){return"imageattr:%s %s %s"+(e.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(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(A).forEach((function(e){A[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}))}}),require_parser=__commonJS({"../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/parser.js"(e){"use strict";var t=function(e){return String(Number(e))===e?Number(e):e},A=function(e,A,i){var r=e.name&&e.names;e.push&&!A[e.push]?A[e.push]=[]:r&&!A[e.name]&&(A[e.name]={});var s=e.push?{}:r?A[e.name]:A;!function(e,A,i,r){if(r&&!i)A[r]=t(e[1]);else for(var s=0;s<i.length;s+=1)null!=e[s+1]&&(A[i[s]]=t(e[s+1]))}(i.match(e.reg),s,e.names,e.name),e.push&&A[e.push].push(s)},i=require_grammar(),r=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],n=t;return e.split(/(\r\n|\r|\n)/).filter(r).forEach((function(e){var t=e[0],r=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),n=s[s.length-1]);for(var a=0;a<(i[t]||[]).length;a+=1){var o=i[t][a];if(o.reg.test(r))return A(o,n,r)}})),t.media=s,t};var s=function(e,A){var i=A.split(/=(.+)/,2);return 2===i.length?e[i[0]]=t(i[1]):1===i.length&&A.length>1&&(e[i[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(s,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var A=[],i=e.split(" ").map(t),r=0;r<i.length;r+=3)A.push({component:i[r],ip:i[r+1],port:i[r+2]});return A},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var A,i=!1;return"~"!==e[0]?A=t(e):(A=t(e.substring(1,e.length)),i=!0),{scid:A,paused:i}}))}))}}}),require_writer=__commonJS({"../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/writer.js"(e,t){"use strict";var A=require_grammar(),i=/%[sdv%]/g,r=function(e){var t=1,A=arguments,r=A.length;return e.replace(i,(function(e){if(t>=r)return e;var i=A[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(i);case"%d":return Number(i);case"%v":return""}}))},s=function(e,t,A){var i=[e+"="+(t.format instanceof Function?t.format(t.push?A:A[t.name]):t.format)];if(t.names)for(var s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?i.push(A[t.name][n]):i.push(A[t.names[s]])}else i.push(A[t.name]);return r.apply(null,i)},n=["v","o","s","i","u","e","p","c","b","t","r","z","a"],a=["i","c","b","a"];t.exports=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var i=t.outerOrder||n,r=t.innerOrder||a,o=[];return i.forEach((function(t){A[t].forEach((function(A){A.name in e&&null!=e[A.name]?o.push(s(t,A,e)):A.push in e&&null!=e[A.push]&&e[A.push].forEach((function(e){o.push(s(t,A,e))}))}))})),e.media.forEach((function(e){o.push(s("m",A.m[0],e)),r.forEach((function(t){A[t].forEach((function(A){A.name in e&&null!=e[A.name]?o.push(s(t,A,e)):A.push in e&&null!=e[A.push]&&e[A.push].forEach((function(e){o.push(s(t,A,e))}))}))}))})),o.join("\r\n")+"\r\n"}}}),require_lib=__commonJS({"../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/index.js"(e){"use strict";var t=require_parser(),A=require_writer(),i=require_grammar();e.grammar=i,e.write=A,e.parse=t.parse,e.parseParams=t.parseParams,e.parseFmtpConfig=t.parseFmtpConfig,e.parsePayloads=t.parsePayloads,e.parseRemoteCandidates=t.parseRemoteCandidates,e.parseImageAttributes=t.parseImageAttributes,e.parseSimulcastStreamList=t.parseSimulcastStreamList}});async function authEffect({sdkAppId:e,userId:t,userSig:A,core:i}){var r;const s=Math.round((new Date).getTime()/1e3);try{const n=await i.schedule.getAbilityConfig(e,i.schedule.ScheduleRequestType.TRTC_AUTO_CONF,{sdkAppId:e,userId:t,userSig:A,timestamp:s});i.log.info(`virtual background ability response: ${JSON.stringify(n)}`);const{data:a}=n;return(null==(r=null==a?void 0:a.trtcAutoConf)?void 0:r.web_ar)?{auth:!0,timestamp:s}:{auth:!1}}catch(e){return i.log.error("virtual background fetch error",e),{auth:!1}}}var UserRule={sdkAppId:{required:!0,type:"number"},userId:{required:!0,type:"string"},userSig:{required:!0,type:"string"}};function startValidateRule(e){return{name:"VirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:__spreadProps(__spreadValues({},UserRule),{type:{required:!1,type:"string",values:["image","blur"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10},onAbort:{required:!1}}),validate(t,A,i,r){var s;const{RtcError:n,ErrorCode:a,ErrorCodeDictionary:o}=e.errorModule;if(!t)return;const{type:c,src:d,onAbort:I}=t;if("image"===c&&!d)throw new n({code:a.INVALID_PARAMETER,extraCode:o.INVALID_PARAMETER_REQUIRED,fnName:i,messageParams:{key:"src"}});if(I&&!e.utils.isFunction(I))throw new n({code:a.INVALID_PARAMETER,extraCode:o.INVALID_PARAMETER_TYPE,fnName:i,messageParams:{key:"onAbort",value:typeof I,rule:{type:"Function"}}});if(!(null==(s=e.room.videoManager.cameraTrack)?void 0:s.mediaTrack))throw new n({code:a.INVALID_OPERATION,extraCode:o.INVALID_OPERATION_NEED_VIDEO,fnName:i})}}}function updateValidateRule(e){return{name:"UpdateVirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:{type:{required:!0,type:"string",values:["image","blur"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10}},validate(t,A,i,r){if(!t)return;const{RtcError:s,ErrorCode:n,ErrorCodeDictionary:a}=e.errorModule,{type:o,src:c}=t;if("image"===o&&!c)throw new s({code:n.INVALID_PARAMETER,extraCode:a.INVALID_PARAMETER_REQUIRED,fnName:i,messageParams:{key:"src"}})}}}function stopValidateRule(e){return{name:"StopVirtualBackgroundOptions",required:!1}}var Module=(()=>{var e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var A,i,r=t;r.ready=new Promise(((e,t)=>{A=e,i=t}));var s,n=Object.assign({},r),a="";"undefined"!=typeof document&&document.currentScript&&(a=document.currentScript.src),e&&(a=e),a=0!==a.indexOf("blob:")?a.substr(0,a.replace(/[?#].*/,"").lastIndexOf("/")+1):"";var o,c,d=r.print||console.log.bind(console),I=r.printErr||console.error.bind(console);function l(e){if(M(e))return function(e){for(var t=atob(e),A=new Uint8Array(t.length),i=0;i<t.length;++i)A[i]=t.charCodeAt(i);return A}(e.slice(w.length))}Object.assign(r,n),n=null,r.arguments&&r.arguments,r.thisProgram&&r.thisProgram,r.quit&&r.quit,r.wasmBinary&&(o=r.wasmBinary),"object"!=typeof WebAssembly&&N("no native wasm support detected");var g,u,E,h,C,p,_,B,m=!1;var S=[],f=[],Q=[];var R=0,D=null,T=null;function N(e){r.onAbort&&r.onAbort(e),I(e="Aborted("+e+")"),m=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var y,v,w="data:application/octet-stream;base64,",M=e=>e.startsWith(w);function b(e){return Promise.resolve().then((()=>function(e){if(e==y&&o)return new Uint8Array(o);var t=l(e);if(t)return t;if(s)return s(e);throw"both async and sync fetching of the wasm failed"}(e)))}function O(e,t,A,i){return function(e,t,A){return b(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(A,(e=>{I(`failed to asynchronously prepare wasm: ${e}`),N(e)}))}(t,A,i)}M(y="data:application/octet-stream;base64,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LQABIgBFDQEgAkEBaiECIANBAWohAyAAIAFGDQALCyAAIAFGC28BAX8jAEGAAmsiBSQAAkAgAiADTA0AIARBgMAEcQ0AIAUgAUH/AXEgAiADayIDQYACIANBgAJJIgEbECYaIAFFBEADQCAAIAVBgAIQHSADQYACayIDQf8BSw0ACwsgACAFIAMQHQsgBUGAAmokAAuBAwEEfyMAQfAAayICJAAgACgCACIDQQRrKAIAIQQgA0EIaygCACEFIAJCADcCUCACQgA3AlggAkIANwJgIAJCADcAZyACQgA3AkggAkEANgJEIAJBvMsANgJAIAIgADYCPCACIAE2AjggACAFaiEDAkAgBCABQQAQHgRAQQAgAyAFGyEADAELIAAgA04EQCACQgA3AC8gAkIANwIYIAJCADcCICACQgA3AiggAkIANwIQIAJBADYCDCACIAE2AgggAiAANgIEIAIgBDYCACACQQE2AjAgBCACIAMgA0EBQQAgBCgCACgCFBEJACACKAIYDQELQQAhACAEIAJBOGogA0EBQQAgBCgCACgCGBEIAAJAAkAgAigCXA4CAAECCyACKAJMQQAgAigCWEEBRhtBACACKAJUQQFGG0EAIAIoAmBBAUYbIQAMAQsgAigCUEEBRwRAIAIoAmANASACKAJUQQFHDQEgAigCWEEBRw0BCyACKAJIIQALIAJB8ABqJAAgAAvQAQEFfyMAQRBrIgYkACAGQQRqIgIQPyMAQRBrIgUkAAJ/IAItAAtBB3YEQCACKAIEDAELIAItAAtB/wBxCyEEA0ACQAJ/IAItAAtBB3YEQCACKAIADAELIAILIQMgBSABOQMAIAICfyADIARBAWogBRBGIgNBAE4EQCADIARNDQIgAwwBCyAEQQF0QQFyCyIEECsMAQsLIAIgAxArIAAgAikCADcCACAAIAIoAgg2AgggAkIANwIAIAJBADYCCCAFQRBqJAAgAhBBIAZBEGokAAuABAEDfyACQYAETwRAIAAgASACEBIgAA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALCwAgASACIAAQQhoLEgAgAUEBdEHQyQBqQQIgABBCC/kBAQR/An8gARAqIQIjAEEQayIFJAACfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsiBEEATwRAAkAgAiAALQALQQd2BH8gACgCCEH/////B3FBAWsFQQoLIgMgBGtNBEAgAkUNAQJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgMgBAR/IAIgA2ogAyAEEEUgASACQQAgAyAEaiABSxtBACABIANPG2oFIAELIAIQRSAAIAIgBGoiARAxIAVBADoADyABIANqIAUtAA86AAAMAQsgACADIAIgBGogA2sgBEEAIAIgARBECyAFQRBqJAAgAAwBCxAnAAsL8gICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYC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ACgCCCIAIAEgAiADIAAoAgAoAhwRBgALGAAgACABKAIIQQAQHgRAIAEgAiADED0LC50BAQJ/IwBBQGoiAyQAAn9BASAAIAFBABAeDQAaQQAgAUUNABpBACABQezLABAgIgFFDQAaIANBDGpBAEE0ECYaIANBATYCOCADQX82AhQgAyAANgIQIAMgATYCCCABIANBCGogAigCAEEBIAEoAgAoAhwRBgAgAygCICIAQQFGBEAgAiADKAIYNgIACyAAQQFGCyEEIANBQGskACAECwoAIAAgAUEAEB4LTgIBfwF8IwBBEGsiAiQAIAJBADYCDCABKAIEQbTOACACQQxqEAkhAyACKAIMIgEEQCABEAILIAAgA0QAAAAAAAAAAGI6ADggAkEQaiQACzcBAX8jAEEQayICJAAgAiABLQA4NgIIIABBtM4AIAJBCGoQCDYCBCAAQbTUADYCACACQRBqJAALqAEBBX8gACgCVCIDKAIAIQUgAygCBCIEIAAoAhQgACgCHCIHayIGIAQgBkkbIgYEQCAFIAcgBhAiGiADIAMoAgAgBmoiBTYCACADIAMoAgQgBmsiBDYCBAsgBCACIAIgBEsbIgQEQCAFIAEgBBAiGiADIAMoAgAgBGoiBTYCACADIAMoAgQgBGs2AgQLIAVBADoAACAAIAAoAiwiATYCHCAAIAE2AhQgAguVAQECfyMAQRBrIgIkAEHEABAcIQEgACgCBCIAEAEgAiAANgIIIAFBqCwgAkEIahAINgIEIAFBtNQANgIAIAFBATYCHCABQbTUADYCGCABQQE2AhQgAUG01AA2AhAgAUEBNgIMIAFBtNQANgIIIAFBADoAICABQoCAgIAwNwI8IAFBADsANyABQQA7ACsgAkEQaiQAIAELigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBSMAQSBrIgAkAAJAIAVC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBUIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAhSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBUIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIBQZH3AEkNACADIQIgBUL///////8/g0KAgICAgIDAAIQiBCEGAkAgAUGB9wBrIghBwABxBEAgAyAIQUBqrYYhBkIAIQIMAQsgCEUNACAGIAitIgeGIAJBwAAgCGutiIQhBiACIAeGIQILIAAgAjcDECAAIAY3AxgCQEGB+AAgAWsiAUHAAHEEQCAEIAFBQGqtiCEDQgAhBAwBCyABRQ0AIARBwAAgAWuthiADIAGtIgKIhCEDIAQgAoghBAsgACADNwMAIAAgBDcDCCAAKQMIQgSGIAApAwAiA0I8iIQhAiAAKQMQIAApAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIABBIGokACAJIAIgBUKAgICAgICAgIB/g4S/OQMAC0ABAn8jAEEQayICJAAgAiABNgIMIAJBtNQANgIIIAJBCGogABEBACEDIAIoAgwiAQRAIAEQAwsgAkEQaiQAIAMLBABCAAsEAEEAC/YCAQh/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQcCfwJAAkACQCAAKAI8IANBEGoiAUECIANBDGoQDSIEBH9ByN0AIAQ2AgBBfwVBAAsEQCABIQQMAQsDQCAFIAMoAgwiBkYNAiAGQQBIBEAgASEEDAQLIAEgBiABKAIEIghLIglBA3RqIgQgBiAIQQAgCRtrIgggBCgCAGo2AgAgAUEMQQQgCRtqIgEgASgCACAIazYCACAFIAZrIQUgACgCPCAEIgEgByAJayIHIANBDGoQDSIGBH9ByN0AIAY2AgBBfwVBAAtFDQALCyAFQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAdBAkYNABogAiAEKAIEawshCiADQSBqJAAgCgt+AQF/IAAEQCAALAA3QQBIBEAgACgC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NwMoIAMgBToAMyADQShqIQIgBEUNAQsgAiABQSBqIgUoAgAgBSAGQQBIGyAEEDILIAIgBGoiAkEAOgACIAJB/RQ7AAAgA0EcaiADKAIoIANBKGogAy0AMyICwEEASCIFGyADKAIsIAIgBRsQGxogAywAM0EASARAIAMoAigQGQtBoNIAKAIAIgQQKiICQfD///8HTw0CAkACQCACQQtPBEAgAkEPckEBaiIGEBwhBSADIAZBgICAgHhyNgIYIAMgBTYCECADIAI2AhQMAQsgAyACOgAbIANBEGohBSACRQ0BCyAFIAQgAhAyCyACIAVqQQA6AAAgA0EoaiABQbGWAiADQRBqEFMgAygCLCECIANBADYCLCADKAIoIQUCQCABKAIUIgRFBEAgASACNgIUIAEgBTYCEAwBCyAEEAMgAygCLCEEIAEgAjYCFCABIAU2AhAgBEUNACAEEAMgA0EANgIsCyADLAAbQQBIBEAgAygCEBAZCwJAIAMsACdBAE4EQCADIAMoAiQ2AgggAyADKQIcNwMADAELIAMoAhwhBiADKAIgIQUjAEEQayIEJAACQAJAAkAgBUELSQRAIAMhAiADIAMtAAtBgAFxIAVB/wBxcjoACyADIAMtAAtB/wBxOgALDAELIAVB7////wdLDQEgBEEIaiADIAVBC08EfyAFQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBahAwIAQoAgwaIAMgBCgCCCICNgIAIAMgAygCCEGAgICAeHEgBCgCDEH/////B3FyNgIIIAMgAygCCEGAgICAeHI2AgggAyAFNgIECyACIAYgBUEBahAjIARBEGokAAwBCxAnAAsLIANBKGogAUGwlgIgAxBTIAMoAiwhAiADQQA2AiwgAygCKCEFAkAgASgCDCIERQRAIAEgAjYCDCABIAU2AggMAQsgBBADIAMoAiwhBCABIAI2AgwgASAFNgIIIARFDQAgBBADIANBADYCLAsgAywAC0EASARAIAMoAgAQGQsgA0EANgIoQeTTAC0AAEEBcUUEQEEBQYguQQAQBSECQeTTAEEBOgAAQeDTACACNgIACwJ/QeDTACgCACABKAIEQeAJIANBKGpBABAEIhBEAAAAAAAA8EFjIBBEAAAAAAAAAABmcQRAIBCrDAELQQALIQIgAygCKCIFBEAgBRACCyABKAIcIgUEQCAFEAMLIAEgAjYCHCABQbTUADYCGCACEAEgAyACNgIoIAEoAhQiAhABIAMgAjYCMCADQQA2AjxB7NMALQAAQQFxRQRAQQNBjC5BABAFIQJB7NMAQQE6AABB6NMAIAI2AgALQejTACgCACABKAIEQfAIIANBPGogA0EoahAEGiADKAI8IgIEQCACEAILIAEoAhwiAhABIAMgAjYCKCABKAIMIgIQASADIAI2AjAgA0EANgI8QezTAC0AAEEBcUUEQEEDQYwuQQAQBSECQezTAEEBOgAAQejTACACNgIAC0Ho0wAoAgAgASgCBEHwCCADQTxqIANBKGoQBBogAygCPCICBEAgAhACCyABKAIcIgIQASADIAI2AiggA0EANgI8QczTAC0AAEEBcUUEQEECQZwtQQAQBSECQczTAEEBOgAAQcjTACACNgIAC0HI0wAoAgAgASgCBEHGCSADQTxqIANBKGoQBBogAygCPCICBEAgAhACCyAAIAEoAhwiATYCBCAAQbTUADYCACABEAEgAywAJ0EASARAIAMoAhwQGQsgA0FAayQADwsQNwALEDcACxA3AAvYAgECfyMAQRBrIgEkACAAKAIUIgIQASABIAI2AgggAUEANgIEQczTAC0AAEEBcUUEQEECQZwtQQAQBSECQczTAEEBOgAAQcjTACACNgIAC0HI0wAoAgAgACgCBEH9CCABQQRqIAFBCGoQBBogASgCBCICBEAgAhACCyAAKAIMIgIQASABIAI2AgggAUEANgIEQczTAC0AAEEBcUUEQEECQZwtQQAQBSECQczTAEEBOgAAQcjTACACNgIAC0HI0wAoAgAgACgCBEH9CCABQQRqIAFBCGoQBBogASgCBCICBEAgAhACCyAAKAIcIgIQASABIAI2AgggAUEANgIEQczTAC0AAEEBcUUEQEECQZwtQQAQBSECQczTAEEBOgAAQcjTACACNgIAC0HI0wAoAgAgACgCBEHSCSABQQRqIAFBCGoQBBogASgCBCIABEAgABACCyABQRBqJAALBQBBxCsLNQEBfyABIAAoAgQiAkEBdWohASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRAwALLwACfyAALAArQQBIBEAgAEEANgIkIAAoAiAMAQsgAEEAOgArIABBIGoLQQA6AAALPQEBfyAB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ZWF0ZVByb2dyYW0AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0V2F0ZXJNYXJrAHN0b3BXYXRlck1hcmsAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlZgBjbG9zZQBkb3VibGUAdmJNb2RlAHNoYWRlclNvdXJjZQB2b2lkAHNhbXBsZUNvbG9yICs9IHRleHR1cmUoZnJhbWUsIGJsdXJDb29yZGluYXRlc1sATkFOAElORgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgB2ZWMyIGMgPSB2X3RleENvb3JkOwB2ZWMyIGMgPSB2ZWMyKDEuMCAtIHZfdGV4Q29vcmQueCwgdl90ZXhDb29yZC55KTsAQWxsSW4xAC4ALjAsAC4wKSpvKSoAKG51bGwpACkqby55KTsgICAgdmVjMiBjb29yZDIgPSB2ZWMyKGZsb2F0KAAgICAgYyA9IHZlYzIodl90ZXhDb29yZC54LCAxLjAgLSB2X3RleENvb3JkLnkpOyAgICB2ZWMyIGNvb3JkMSA9IHZlYzIoZmxvYXQoACksIChjLnkgLWNvb3JkMS55KSAvIG8ueSAvIGZsb2F0KAApKm8ueSk7ICAgIGlmIChjLnggPiBjb29yZDEueCAmJiBjLnggPCBjb29yZDIueCAmJiBjLnkgPiBjb29yZDEueSAmJiBjLnkgPCBjb29yZDIueSkgeyAgICAgIHZlYzQgd2F0ZXJDb2xvciA9IHRleHR1cmUod2F0ZXJNYXJrLCB2ZWMyKChjLnggLSBjb29yZDEueCkgIC8gby54IC8gZmxvYXQoACkgKiBvLngsIGZsb2F0KABvdXRDb2xvci5yZ2IgKz0gdmVjMygAKTsgICAgICAgdmVjMyBzbW9vdGhDb2xvciA9IG91dENvbG9yLnJnYiArIChvdXRDb2xvci5yZ2ItdmVjMyhoaWdoUGFzcykpKmFscGhhKjAuMTsgICAgICAgc21vb3RoQ29sb3IgPSBjbGFtcChwb3coc21vb3RoQ29sb3IsIHZlYzMoAGcrPUcoYyx2ZWMyKAAgICAgICB2ZWMyIG9mZnNldCA9IHZlYzIoAF0gPSB2X3RleENvb3JkLnh5ICsgb2Zmc2V0ICogdmVjMigAOyAAKSksIHZlYzMoMC4wKSwgdmVjMygxLjApKTsgICAgICB2ZWMzIHNjcmVlbiA9IHZlYzMoMS4wKSAtICh2ZWMzKDEuMCktc21vb3RoQ29sb3IpICogKHZlYzMoMS4wKS1vdXRDb2xvci5yZ2IpOyAgICAgICB2ZWMzIGxpZ2h0ZW4gPSBtYXgoc21vb3RoQ29sb3IsIG91dENvbG9yLnJnYik7ICAgICAgIHZlYzMgYmVhdXR5Q29sb3IgPSBtaXgobWl4KG91dENvbG9yLnJnYiwgc2NyZWVuLCBhbHBoYSksIGxpZ2h0ZW4sIGFscGhhKTsgICAgICBvdXRDb2xvci5yZ2IgPSBtaXgob3V0Q29sb3IucmdiLCBiZWF1dHlDb2xvciwgAAogICAgICBjb25zdCBtYXQzIHNhdHVyYXRlTWF0cml4ID0gbWF0MygxLjExMDIsLTAuMDU5OCwtMC4wNjEsLTAuMDc3NCwxLjA4MjYsLTAuMTE4NiwtMC4wMjI4LC0wLjAyMjgsMS4xNzcyKTsKICAgICAgdmVjMyB3YXJtQ29sb3IgPSBvdXRDb2xvci5yZ2IgKiBzYXR1cmF0ZU1hdHJpeDsKICAgICAgb3V0Q29sb3IucmdiID0gbWl4KG91dENvbG9yLnJnYiwgd2FybUNvbG9yLCAAICAgICAgc2FtcGxlQ29sb3IgPSBzYW1wbGVDb2xvciAvIDYyLjA7ICAgICAgIGZsb2F0IGhpZ2hQYXNzID0gb3V0Q29sb3IuZyAtIHNhbXBsZUNvbG9yICsgMC41OyAgICAgICBjb25zdCBoaWdocCB2ZWMzIFcgPSB2ZWMzKDAuMjk5LDAuNTg3LDAuMTE0KTsgICAgICBmbG9hdCBsdW1pbmFuY2UgPSBkb3Qob3V0Q29sb3IucmdiLCBXKTsgICAgICAgZmxvYXQgYWxwaGEgPSBwb3cobHVtaW5hbmNlLCAAXSkuZyAqIAApKSk7ICAgICAgb3V0Q29sb3IgPSBtaXgob3V0Q29sb3Isd2F0ZXJDb2xvciwgIHdhdGVyQ29sb3IuYSk7ICAgIH0gICAgACk7ICAgIAApOyAgICAgIHZlYzIgYmx1ckNvb3JkaW5hdGVzWzI0XTsgICAgICAAICAgICAgZmxvYXQgc2FtcGxlQ29sb3IgPSBvdXRDb2xvci5nICogMjIuMDsgICAgICAgACN2ZXJzaW9uIDMwMCBlcwogICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwogICAgdW5pZm9ybSBzYW1wbGVyMkQgZnJhbWU7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCBtYXNrOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgYmc7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCB3YXRlck1hcms7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCBsYXN0TWFzazsKICAgIHVuaWZvcm0gbWF0NCB1X29mZnNldE1hdHJpeDsKICAgIGluIHZlYzIgdl90ZXhDb29yZDsKICAgIG91dCB2ZWM0IG91dENvbG9yOwogICAgdmVjNCBHKHZlYzIgYyx2ZWMyIHMpewogICAgICByZXR1cm4gdGV4dHVyZShmcmFtZSx0ZXh0dXJlKG1hc2ssYytzKS5yPjAuMz9jOmMrcyk7CiAgICB9CiAgICB2b2lkIG1haW4oKSB7CiAgICAgIAAKICAgICAgdmVjMiBvZmZzZXRNYXNrVVYgPSAodV9vZmZzZXRNYXRyaXggKiB2ZWM0KGMsIDAsIDEpKS54eTsKICAgICAgZmxvYXQgaXNJbnNpZGVYID0gKG9mZnNldE1hc2tVVi54ID49IDAuMCkgJiYgKG9mZnNldE1hc2tVVi54IDw9IDEuMCkgPyAxLjAgOiAwLjA7CiAgICAgIGZsb2F0IGlzSW5zaWRlWSA9IChvZmZzZXRNYXNrVVYueSA+PSAwLjApICYmIChvZmZzZXRNYXNrVVYueSA8PSAxLjApID8gMS4wIDogMC4wOwogICAgICBmbG9hdCBpc0luc2lkZSA9IGlzSW5zaWRlWCAqIGlzSW5zaWRlWTsKICAgICAgZmxvYXQgbWFza2VkQWxwaGEgPSB0ZXh0dXJlKG1hc2ssIG9mZnNldE1hc2tVVikuciAqIGlzSW5zaWRlOwogICAgICBtYXNrZWRBbHBoYSA9IG1hc2tlZEFscGhhPDAuNT8yLjAqbWFza2VkQWxwaGEqbWFza2VkQWxwaGE6MS4wLTIuMCooMS4wLW1hc2tlZEFscGhhKSooMS4wLW1hc2tlZEFscGhhKTsKICAgICAgc3JjX2NvbG9yID0gdGV4dHVyZShmcmFtZSwgb2Zmc2V0TWFza1VWICwgaXNJbnNpZGUpOwogICAgICBvdXRDb2xvciA9IG1peCh0ZXh0dXJlKGJnLCBjKSwgc3JjX2NvbG9yLCBtYXNrZWRBbHBoYSk7CiAgICAACiAgICB2ZWM0IGcgPSB2ZWM0KDAuMCk7CiAgICAACiAgICAgIGMueSA9IDEuMCAtIGMueTsKICAgICAgdmVjNCBzcmNfY29sb3IgPSB0ZXh0dXJlKGZyYW1lLCBjKTsKICAgICAgZmxvYXQgYSA9IHRleHR1cmUobWFzaywgYykucjsKICAgICAgYSA9IGE8MC41PzIuMCphKmE6MS4wLTIuMCooMS4wLWEpKigxLjAtYSk7CiAgICAgIC8vIGZsb2F0IGEyID0gdGV4dHVyZShsYXN0TWFzaywgYykuYTsKICAgICAgLy8gYTIgPSBhMjwwLjU/Mi4wKmEyKmEyOjEuMC0yLjAqKDEuMC1hMikqKDEuMC1hMik7CiAgICAgIC8vIGZsb2F0IGRlbHRhID0gYSAtIGEyOwogICAgICAvLyBpZiAoZGVsdGEgPCAwLjI1ICYmIGRlbHRhID4gLTAuMjUpCiAgICAgIC8vIHsKICAgICAgLy8gICAgIGEgPSBhICsgMC41KmRlbHRhOwogICAgICAvLyB9CiAgICAgIAogICAgICB2ZWMyIG8gPSAxLjAgLyB2ZWMyKHRleHR1cmVTaXplKGZyYW1lLCAwKSk7CiAgICAACiAgICAgIG91dENvbG9yID0gZzsKICAAI3ZlcnNpb24gMzAwIGVzCmluIHZlYzIgYV9wb3NpdGlvbjsKaW4gdmVjMiBhX3RleENvb3JkOwoKdW5pZm9ybSBtYXQ0IHVfdGV4dHVyZU1hdHJpeDsKCm91dCB2ZWMyIHZfdGV4Q29vcmQ7CnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54LCBhX3Bvc2l0aW9uLnksIDAsIDEpOwogIHZfdGV4Q29vcmQgPSh1X3RleHR1cmVNYXRyaXggKiB2ZWM0KGFfdGV4Q29vcmQsIDAsIDEpKS54eTsKfQoAc2V0QmVhdXR5ICVmICVmICVmICVmICVmCgBvdXRDb2xvciA9IHNyY19jb2xvcjsKAG91dENvbG9yID0gbWl4KHZlYzQoMC4wLDEuMCwwLjAsMS4wKSxzcmNfY29sb3IsYSk7CgA2QWxsSW4xAADgJwAAuxUAAFA2QWxsSW4xAAAAAGQoAADMFQAAAAAAAMQVAABQSzZBbGxJbjEAAABkKAAA6BUAAAEAAADEFQAAaWkAdgB2aQDYFQAAKBYAAE4xMGVtc2NyaXB0ZW4zdmFsRQAA4CcAABQWAABpaWkAdmlpaQAAAAAAAAAAHCcAANgVAADQJwAA0CcAANAnAADQJwAA0CcAAHZpaWRkZGRkAEHwLAvICBwnAADYFQAA0CcAANAnAADQJwAA0CcAAHZpaWRkZGQAHCcAANgVAAB2aWkAHCcAACgWAAAoFgAA2BUAACgWAAB8JwAAHCcAACgWAAAAFwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAOAnAADAFgAAKBYAABwnAAAoFgAAKBYAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0loTlNfMTFjaGFyX3RyYWl0c0loRUVOU185YWxsb2NhdG9ySWhFRUVFAADgJwAAGBcAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAADgJwAAYBcAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEc05TXzExY2hhcl90cmFpdHNJRHNFRU5TXzlhbGxvY2F0b3JJRHNFRUVFAAAA4CcAAKgXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRGlOU18xMWNoYXJfdHJhaXRzSURpRUVOU185YWxsb2NhdG9ySURpRUVFRQAAAOAnAAD0FwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAADgJwAAQBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWFFRQAA4CcAAGgYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAAOAnAACQGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAADgJwAAuBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXRFRQAA4CcAAOAYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUAAOAnAAAIGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAADgJwAAMBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWxFRQAA4CcAAFgZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUAAOAnAACAGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeEVFAADgJwAAqBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXlFRQAA4CcAANAZAABOMTBlbXNj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")||(v=y,y=r.locateFile?r.locateFile(v,a):a+v);var L=e=>{for(;e.length>0;)e.shift()(r)};r.noExitRuntime;function k(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){p[this.ptr+4>>2]=e},this.get_type=function(){return p[this.ptr+4>>2]},this.set_destructor=function(e){p[this.ptr+8>>2]=e},this.get_destructor=function(){return p[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,g[this.ptr+12|0]=e},this.get_caught=function(){return 0!=g[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,g[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=g[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){p[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return p[this.ptr+16>>2]},this.get_exception_ptr=function(){if(gt(this.get_type()))return p[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var P,F,U,G=e=>{for(var t="",A=e;u[A];)t+=P[u[A++]];return t},x={},V={},H={},Y=e=>{throw new F(e)},K=e=>{throw new U(e)},W=(e,t,A)=>{function i(t){var i=A(t);i.length!==e.length&&K("Mismatched type converter count");for(var r=0;r<e.length;++r)J(e[r],i[r])}e.forEach((function(e){H[e]=t}));var r=new Array(t.length),s=[],n=0;t.forEach(((e,t)=>{V.hasOwnProperty(e)?r[t]=V[e]:(s.push(e),x.hasOwnProperty(e)||(x[e]=[]),x[e].push((()=>{r[t]=V[e],++n===s.length&&i(r)})))})),0===s.length&&i(r)};function J(e,t,A={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(e,t,A={}){var i=t.name;if(e||Y(`type "${i}" must have a positive integer typeid pointer`),V.hasOwnProperty(e)){if(A.ignoreDuplicateRegistrations)return;Y(`Cannot register type '${i}' twice`)}if(V[e]=t,delete H[e],x.hasOwnProperty(e)){var r=x[e];delete x[e],r.forEach((e=>e()))}}(e,t,A)}var $,j=e=>{Y(e.$$.ptrType.registeredClass.name+" instance already deleted")},Z=!1,X=e=>{},z=e=>{e.count.value-=1,0===e.count.value&&(e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)})(e)},q=(e,t,A)=>{if(t===A)return e;if(void 0===A.baseClass)return null;var i=q(e,t,A.baseClass);return null===i?null:A.downcast(i)},ee={},te=()=>Object.keys(ne).length,Ae=()=>{var e=[];for(var t in ne)ne.hasOwnProperty(t)&&e.push(ne[t]);return e},ie=[],re=()=>{for(;ie.length;){var e=ie.pop();e.$$.deleteScheduled=!1,e.delete()}},se=e=>{$=e,ie.length&&$&&$(re)},ne={},ae=(e,t)=>(t=((e,t)=>{for(void 0===t&&Y("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t})(e,t),ne[t]),oe=(e,t)=>(t.ptrType&&t.ptr||K("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&K("Both smartPtrType and smartPtr must be specified"),t.count={value:1},de(Object.create(e,{$$:{value:t}})));function ce(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var A=ae(this.registeredClass,t);if(void 0!==A){if(0===A.$$.count.value)return A.$$.ptr=t,A.$$.smartPtr=e,A.clone();var i=A.clone();return this.destructor(e),i}function r(){return this.isSmartPointer?oe(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):oe(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,n=this.registeredClass.getActualType(t),a=ee[n];if(!a)return r.call(this);s=this.isConst?a.constPointerType:a.pointerType;var o=q(t,this.registeredClass,s.registeredClass);return null===o?r.call(this):this.isSmartPointer?oe(s.registeredClass.instancePrototype,{ptrType:s,ptr:o,smartPtrType:this,smartPtr:e}):oe(s.registeredClass.instancePrototype,{ptrType:s,ptr:o})}var de=e=>"undefined"==typeof FinalizationRegistry?(de=e=>e,e):(Z=new FinalizationRegistry((e=>{z(e.$$)})),X=e=>Z.unregister(e),(de=e=>{var t=e.$$;if(!!t.smartPtr){var A={$$:t};Z.register(e,A,e)}return e})(e));function Ie(){}var le=(e,t)=>Object.defineProperty(t,"name",{value:e}),ge=(e,t,A)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Y(`Function '${A}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}};function ue(e,t,A,i,r,s,n,a){this.name=e,this.constructor=t,this.instancePrototype=A,this.rawDestructor=i,this.baseClass=r,this.getActualType=s,this.upcast=n,this.downcast=a,this.pureVirtualFunctions=[]}var Ee=(e,t,A)=>{for(;t!==A;)t.upcast||Y(`Expected null or instance of ${A.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function he(e,t){if(null===t)return this.isReference&&Y(`null is not a valid ${this.name}`),0;t.$$||Y(`Cannot pass "${Ve(t)}" as a ${this.name}`),t.$$.ptr||Y(`Cannot pass deleted object as a pointer of type ${this.name}`);var A=t.$$.ptrType.registeredClass;return Ee(t.$$.ptr,A,this.registeredClass)}function Ce(e,t){var A;if(null===t)return this.isReference&&Y(`null is not a valid ${this.name}`),this.isSmartPointer?(A=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,A),A):0;t.$$||Y(`Cannot pass "${Ve(t)}" as a ${this.name}`),t.$$.ptr||Y(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&Y(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(A=Ee(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Y("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?A=t.$$.smartPtr:Y(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:A=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)A=t.$$.smartPtr;else{var r=t.clone();A=this.rawShare(A,Pe.toHandle((()=>r.delete()))),null!==e&&e.push(this.rawDestructor,A)}break;default:Y("Unsupporting sharing policy")}return A}function pe(e,t){if(null===t)return this.isReference&&Y(`null is not a valid ${this.name}`),0;t.$$||Y(`Cannot pass "${Ve(t)}" as a ${this.name}`),t.$$.ptr||Y(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&Y(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var A=t.$$.ptrType.registeredClass;return Ee(t.$$.ptr,A,this.registeredClass)}function _e(e){return this.fromWireType(p[e>>2])}function Be(e,t,A,i,r,s,n,a,o,c,d){this.name=e,this.registeredClass=t,this.isReference=A,this.isConst=i,this.isSmartPointer=r,this.pointeeType=s,this.sharingPolicy=n,this.rawGetPointee=a,this.rawConstructor=o,this.rawShare=c,this.rawDestructor=d,r||void 0!==t.baseClass?this.toWireType=Ce:i?(this.toWireType=he,this.destructorFunction=null):(this.toWireType=pe,this.destructorFunction=null)}var me,Se,fe=[],Qe=e=>{var t=fe[e];return t||(e>=fe.length&&(fe.length=e+1),fe[e]=t=me.get(e)),t},Re=(e,t,A)=>e.includes("j")?((e,t,A)=>{var i=r["dynCall_"+e];return A&&A.length?i.apply(null,[t].concat(A)):i.call(null,t)})(e,t,A):Qe(t).apply(null,A),De=(e,t)=>{var A,i,r,s=(e=G(e)).includes("j")?(A=e,i=t,r=[],function(){return r.length=0,Object.assign(r,arguments),Re(A,i,r)}):Qe(t);return"function"!=typeof s&&Y(`unknown function pointer with signature ${e}: ${t}`),s},Te=e=>{var t=It(e),A=G(t);return lt(t),A},Ne=(e,t)=>{var A=[],i={};throw t.forEach((function e(t){i[t]||V[t]||(H[t]?H[t].forEach(e):(A.push(t),i[t]=!0))})),new Se(`${e}: `+A.map(Te).join([", "]))},ye=(e,t)=>{for(var A=[],i=0;i<e;i++)A.push(p[t+4*i>>2]);return A},ve=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function we(e,t,A,i,r,s){var n=t.length;n<2&&Y("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==A,o=!1,c=1;c<t.length;++c)if(null!==t[c]&&void 0===t[c].destructorFunction){o=!0;break}var d="void"!==t[0].name,I=n-2,l=new Array(I),g=[],u=[];return le(e,(function(){var A;arguments.length!==I&&Y(`function ${e} called with ${arguments.length} arguments, expected ${I}`),u.length=0,g.length=a?2:1,g[0]=r,a&&(A=t[1].toWireType(u,this),g[1]=A);for(var s=0;s<I;++s)l[s]=t[s+2].toWireType(u,arguments[s]),g.push(l[s]);return function(e){if(o)ve(u);else for(var i=a?1:2;i<t.length;i++){var r=1===i?A:l[i-2];null!==t[i].destructorFunction&&t[i].destructorFunction(r)}if(d)return t[0].fromWireType(e)}(i.apply(null,g))}))}var Me=(e,t,A)=>(e instanceof Object||Y(`${A} with invalid "this": ${e}`),e instanceof t.registeredClass.constructor||Y(`${A} incompatible with "this" of type ${e.constructor.name}`),e.$$.ptr||Y(`cannot call emscripten binding method ${A} on deleted object`),Ee(e.$$.ptr,e.$$.ptrType.registeredClass,t.registeredClass));function be(){this.allocated=[void 0],this.freelist=[]}var Oe=new be,Le=e=>{e>=Oe.reserved&&0==--Oe.get(e).refcount&&Oe.free(e)},ke=()=>{for(var e=0,t=Oe.reserved;t<Oe.allocated.length;++t)void 0!==Oe.allocated[t]&&++e;return e},Pe={toValue:e=>(e||Y("Cannot use deleted val. handle = "+e),Oe.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Oe.allocate({refcount:1,value:e})}}};function Fe(e){return this.fromWireType(C[e>>2])}var Ue,Ge,xe,Ve=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},He=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(_[e>>2])};case 8:return function(e){return this.fromWireType(B[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},Ye=(e,t,A)=>{switch(t){case 1:return A?e=>g[e|0]:e=>u[e|0];case 2:return A?e=>E[e>>1]:e=>h[e>>1];case 4:return A?e=>C[e>>2]:e=>p[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Ke="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,We=(e,t,A)=>{for(var i=t+A,r=t;e[r]&&!(r>=i);)++r;if(r-t>16&&e.buffer&&Ke)return Ke.decode(e.subarray(t,r));for(var s="";t<r;){var n=e[t++];if(128&n){var a=63&e[t++];if(192!=(224&n)){var o=63&e[t++];if((n=224==(240&n)?(15&n)<<12|a<<6|o:(7&n)<<18|a<<12|o<<6|63&e[t++])<65536)s+=String.fromCharCode(n);else{var c=n-65536;s+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else s+=String.fromCharCode((31&n)<<6|a)}else s+=String.fromCharCode(n)}return s},Je=(e,t)=>e?We(u,e,t):"",$e="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,je=(e,t)=>{for(var A=e,i=A>>1,r=i+t/2;!(i>=r)&&h[i];)++i;if((A=i<<1)-e>32&&$e)return $e.decode(u.subarray(e,A));for(var s="",n=0;!(n>=t/2);++n){var a=E[e+2*n>>1];if(0==a)break;s+=String.fromCharCode(a)}return s},Ze=(e,t,A)=>{if(void 0===A&&(A=2147483647),A<2)return 0;for(var i=t,r=(A-=2)<2*e.length?A/2:e.length,s=0;s<r;++s){var n=e.charCodeAt(s);E[t>>1]=n,t+=2}return E[t>>1]=0,t-i},Xe=e=>2*e.length,ze=(e,t)=>{for(var A=0,i="";!(A>=t/4);){var r=C[e+4*A>>2];if(0==r)break;if(++A,r>=65536){var s=r-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(r)}return i},qe=(e,t,A)=>{if(void 0===A&&(A=2147483647),A<4)return 0;for(var i=t,r=i+A-4,s=0;s<e.length;++s){var n=e.charCodeAt(s);if(n>=55296&&n<=57343)n=65536+((1023&n)<<10)|1023&e.charCodeAt(++s);if(C[t>>2]=n,(t+=4)+4>r)break}return C[t>>2]=0,t-i},et=e=>{for(var t=0,A=0;A<e.length;++A){var i=e.charCodeAt(A);i>=55296&&i<=57343&&++A,t+=4}return t},tt=(e,t)=>{var A=V[e];return void 0===A&&Y(t+" has unknown type "+Te(e)),A},At=(e,t,A)=>{var i=[],r=e.toWireType(i,A);return i.length&&(p[t>>2]=Pe.toHandle(i)),r},it={},rt=[],st=Reflect.construct,nt=[null,[],[]];(()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);P=e})(),F=r.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},U=r.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Object.assign(Ie.prototype,{isAliasOf(e){if(!(this instanceof Ie))return!1;if(!(e instanceof Ie))return!1;var t=this.$$.ptrType.registeredClass,A=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,r=e.$$.ptr;t.baseClass;)A=t.upcast(A),t=t.baseClass;for(;i.baseClass;)r=i.upcast(r),i=i.baseClass;return t===i&&A===r},clone(){if(this.$$.ptr||j(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=de(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||j(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Y("Object already scheduled for deletion"),X(this),z(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||j(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Y("Object already scheduled for deletion"),ie.push(this),1===ie.length&&$&&$(re),this.$$.deleteScheduled=!0,this}}),r.getInheritedInstanceCount=te,r.getLiveInheritedInstances=Ae,r.flushPendingDeletes=re,r.setDelayFunction=se,Object.assign(Be.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:8,readValueFromPointer:_e,deleteObject(e){null!==e&&e.delete()},fromWireType:ce}),Se=r.UnboundTypeError=(Ue=Error,(xe=le(Ge="UnboundTypeError",(function(e){this.name=Ge,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}))).prototype=Object.create(Ue.prototype),xe.prototype.constructor=xe,xe.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},xe),Object.assign(be.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}}),Oe.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Oe.reserved=Oe.allocated.length,r.count_emval_handles=ke;var at,ot={w:(e,t,A)=>{throw new k(e).init(t,A),e},q:(e,t,A,i,r)=>{},u:(e,t,A,i)=>{J(e,{name:t=G(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?A:i},argPackAdvance:8,readValueFromPointer:function(e){return this.fromWireType(u[e])},destructorFunction:null})},y:(e,t,A,i,s,n,a,o,c,d,I,l,g)=>{I=G(I),n=De(s,n),o&&(o=De(a,o)),d&&(d=De(c,d)),g=De(l,g);var u=(e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?`_${e}`:e})(I);((e,t,A)=>{r.hasOwnProperty(e)?((void 0===A||void 0!==r[e].overloadTable&&void 0!==r[e].overloadTable[A])&&Y(`Cannot register public name '${e}' twice`),ge(r,e,e),r.hasOwnProperty(A)&&Y(`Cannot register multiple overloads of a function with the same number of arguments (${A})!`),r[e].overloadTable[A]=t):(r[e]=t,void 0!==A&&(r[e].numArguments=A))})(u,(function(){Ne(`Cannot construct ${I} due to unbound types`,[i])})),W([e,t,A],i?[i]:[],(function(t){var A,s;t=t[0],s=i?(A=t.registeredClass).instancePrototype:Ie.prototype;var a=le(I,(function(){if(Object.getPrototypeOf(this)!==c)throw new F("Use 'new' to construct "+I);if(void 0===l.constructor_body)throw new F(I+" has no accessible constructor");var e=l.constructor_body[arguments.length];if(void 0===e)throw new F(`Tried to invoke ctor of ${I} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(l.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),c=Object.create(s,{constructor:{value:a}});a.prototype=c;var l=new ue(I,a,c,g,A,n,o,d);l.baseClass&&(void 0===l.baseClass.__derivedClasses&&(l.baseClass.__derivedClasses=[]),l.baseClass.__derivedClasses.push(l));var E=new Be(I,l,!0,!1,!1),h=new Be(I+"*",l,!1,!1,!1),C=new Be(I+" const*",l,!1,!0,!1);return ee[e]={pointerType:h,constPointerType:C},((e,t,A)=>{r.hasOwnProperty(e)||K("Replacing nonexistant public symbol"),void 0!==r[e].overloadTable&&void 0!==A?r[e].overloadTable[A]=t:(r[e]=t,r[e].argCount=A)})(u,a),[E,h,C]}))},x:(e,t,A,i,r,s)=>{var n=ye(t,A);r=De(i,r),W([],[e],(function(e){var A=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new F(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{Ne(`Cannot construct ${e.name} due to unbound types`,n)},W([],n,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=we(A,i,null,r,s),[]))),[]}))},h:(e,t,A,i,r,s,n,a,o)=>{var c=ye(A,i);t=(e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e})(t=G(t)),s=De(r,s),W([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function r(){Ne(`Cannot call ${i} due to unbound types`,c)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var o=e.registeredClass.instancePrototype,d=o[t];return void 0===d||void 0===d.overloadTable&&d.className!==e.name&&d.argCount===A-2?(r.argCount=A-2,r.className=e.name,o[t]=r):(ge(o,t,i),o[t].overloadTable[A-2]=r),W([],c,(function(r){var a=we(i,r,e,s,n);return void 0===o[t].overloadTable?(a.argCount=A-2,o[t]=a):o[t].overloadTable[A-2]=a,[]})),[]}))},k:(e,t,A,i,r,s,n,a,o,c)=>{t=G(t),r=De(i,r),W([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`,d={get(){Ne(`Cannot access ${i} due to unbound types`,[A,n])},enumerable:!0,configurable:!0};return d.set=o?()=>Ne(`Cannot access ${i} due to unbound types`,[A,n]):e=>Y(i+" is a read-only property"),Object.defineProperty(e.registeredClass.instancePrototype,t,d),W([],o?[A,n]:[A],(function(A){var n=A[0],d={get(){var t=Me(this,e,i+" getter");return n.fromWireType(r(s,t))},enumerable:!0};if(o){o=De(a,o);var I=A[1];d.set=function(t){var A=Me(this,e,i+" setter"),r=[];o(c,A,I.toWireType(r,t)),ve(r)}}return Object.defineProperty(e.registeredClass.instancePrototype,t,d),[]})),[]}))},t:(e,t)=>{J(e,{name:t=G(t),fromWireType:e=>{var t=Pe.toValue(e);return Le(e),t},toWireType:(e,t)=>Pe.toHandle(t),argPackAdvance:8,readValueFromPointer:Fe,destructorFunction:null})},p:(e,t,A)=>{J(e,{name:t=G(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:8,readValueFromPointer:He(t,A),destructorFunction:null})},g:(e,t,A,i,r)=>{t=G(t),-1===r&&(r=4294967295);var s=e=>e;if(0===i){var n=32-8*A;s=e=>e<<n>>>n}var a=t.includes("unsigned");J(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Ye(t,A,0!==i),destructorFunction:null})},a:(e,t,A)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function r(e){var t=p[e>>2],A=p[e+4>>2];return new i(g.buffer,A,t)}J(e,{name:A=G(A),fromWireType:r,argPackAdvance:8,readValueFromPointer:r},{ignoreDuplicateRegistrations:!0})},o:(e,t)=>{var A="std::string"===(t=G(t));J(e,{name:t,fromWireType(e){var t,i=p[e>>2],r=e+4;if(A)for(var s=r,n=0;n<=i;++n){var a=r+n;if(n==i||0==u[a]){var o=Je(s,a-s);void 0===t?t=o:(t+=String.fromCharCode(0),t+=o),s=a+1}}else{var c=new Array(i);for(n=0;n<i;++n)c[n]=String.fromCharCode(u[r+n]);t=c.join("")}return lt(e),t},toWireType(e,t){var i;t instanceof ArrayBuffer&&(t=new Uint8Array(t));var r="string"==typeof t;r||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array||Y("Cannot pass non-string to std::string"),i=A&&r?(e=>{for(var t=0,A=0;A<e.length;++A){var i=e.charCodeAt(A);i<=127?t++:i<=2047?t+=2:i>=55296&&i<=57343?(t+=4,++A):t+=3}return t})(t):t.length;var s=dt(4+i+1),n=s+4;if(p[s>>2]=i,A&&r)((e,t,A,i)=>{if(!(i>0))return 0;for(var r=A,s=A+i-1,n=0;n<e.length;++n){var a=e.charCodeAt(n);if(a>=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++n)),a<=127){if(A>=s)break;t[A++]=a}else if(a<=2047){if(A+1>=s)break;t[A++]=192|a>>6,t[A++]=128|63&a}else if(a<=65535){if(A+2>=s)break;t[A++]=224|a>>12,t[A++]=128|a>>6&63,t[A++]=128|63&a}else{if(A+3>=s)break;t[A++]=240|a>>18,t[A++]=128|a>>12&63,t[A++]=128|a>>6&63,t[A++]=128|63&a}}t[A]=0})(t,u,n,i+1);else if(r)for(var a=0;a<i;++a){var o=t.charCodeAt(a);o>255&&(lt(n),Y("String has UTF-16 code units that do not fit in 8 bits")),u[n+a]=o}else for(a=0;a<i;++a)u[n+a]=t[a];return null!==e&&e.push(lt,s),s},argPackAdvance:8,readValueFromPointer:_e,destructorFunction(e){lt(e)}})},l:(e,t,A)=>{var i,r,s,n,a;A=G(A),2===t?(i=je,r=Ze,n=Xe,s=()=>h,a=1):4===t&&(i=ze,r=qe,n=et,s=()=>p,a=2),J(e,{name:A,fromWireType:e=>{for(var A,r=p[e>>2],n=s(),o=e+4,c=0;c<=r;++c){var d=e+4+c*t;if(c==r||0==n[d>>a]){var I=i(o,d-o);void 0===A?A=I:(A+=String.fromCharCode(0),A+=I),o=d+t}}return lt(e),A},toWireType:(e,i)=>{"string"!=typeof i&&Y(`Cannot pass non-string to C++ string type ${A}`);var s=n(i),o=dt(4+s+t);return p[o>>2]=s>>a,r(i,o+4,s+t),null!==e&&e.push(lt,o),o},argPackAdvance:8,readValueFromPointer:Fe,destructorFunction(e){lt(e)}})},v:(e,t)=>{J(e,{isVoid:!0,name:t=G(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},j:(e,t,A)=>(e=Pe.toValue(e),t=tt(t,"emval::as"),At(t,A,e)),e:(e,t,A,i,r)=>{var s,n;return(e=rt[e])(t=Pe.toValue(t),t[A=void 0===(n=it[s=A])?G(s):n],i,r)},d:Le,f:(e,t,A)=>{var i=((e,t)=>{for(var A=new Array(e),i=0;i<e;++i)A[i]=tt(p[t+4*i>>2],"parameter "+i);return A})(e,t),r=i.shift();e--;var s,n,a=new Array(e),o=`methodCaller<(${i.map((e=>e.name)).join(", ")}) => ${r.name}>`;return s=le(o,((t,s,n,o)=>{for(var c=0,d=0;d<e;++d)a[d]=i[d].readValueFromPointer(o+c),c+=i[d].argPackAdvance;var I=1===A?st(s,a):s.apply(t,a);for(d=0;d<e;++d)i[d].deleteObject&&i[d].deleteObject(a[d]);return At(r,n,I)})),n=rt.length,rt.push(s),n},b:e=>{e>4&&(Oe.get(e).refcount+=1)},c:e=>{var t=Pe.toValue(e);ve(t),Le(e)},i:(e,t)=>{var A=(e=tt(e,"_emval_take_value")).readValueFromPointer(t);return Pe.toHandle(A)},m:()=>{N("")},s:(e,t,A)=>u.copyWithin(e,t,t+A),r:e=>{u.length;N("OOM")},n:(e,t,A,i)=>{for(var r,s,n,a=0,o=0;o<A;o++){var c=p[t>>2],l=p[t+4>>2];t+=8;for(var g=0;g<l;g++)r=e,s=u[c+g],n=void 0,n=nt[r],0===s||10===s?((1===r?d:I)(We(n,0)),n.length=0):n.push(s);a+=l}return p[i>>2]=a,0}},ct=function(){var e={a:ot};function t(e,t){var A,i;return ct=e.exports,c=ct.z,A=c.buffer,r.HEAP8=g=new Int8Array(A),r.HEAP16=E=new Int16Array(A),r.HEAPU8=u=new Uint8Array(A),r.HEAPU16=h=new Uint16Array(A),r.HEAP32=C=new Int32Array(A),r.HEAPU32=p=new Uint32Array(A),r.HEAPF32=_=new Float32Array(A),r.HEAPF64=B=new Float64Array(A),me=ct.C,i=ct.A,f.unshift(i),function(){if(R--,r.monitorRunDependencies&&r.monitorRunDependencies(R),0==R&&(null!==D&&(clearInterval(D),D=null),T)){var e=T;T=null,e()}}(),ct}if(R++,r.monitorRunDependencies&&r.monitorRunDependencies(R),r.instantiateWasm)try{return r.instantiateWasm(e,t)}catch(e){I(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return O(0,y,e,(function(e){t(e.instance)})).catch(i),{}}(),dt=e=>(dt=ct.B)(e),It=e=>(It=ct.D)(e),lt=e=>(lt=ct.E)(e),gt=e=>(gt=ct.F)(e);r.dynCall_jiji=(e,t,A,i,s)=>(r.dynCall_jiji=ct.G)(e,t,A,i,s),r._vertexShaderSource=10528;function ut(){function e(){at||(at=!0,r.calledRun=!0,m||(L(f),A(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)e=r.postRun.shift(),Q.unshift(e);var e;L(Q)}()))}R>0||(!function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)e=r.preRun.shift(),S.unshift(e);var e;L(S)}(),R>0||(r.setStatus?(r.setStatus("Running..."),setTimeout((function(){setTimeout((function(){r.setStatus("")}),1),e()}),1)):e()))}if(T=function e(){at||ut(),at||(T=e)},r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return ut(),t.ready}})(),allin1_default=Module,USER_AGENT="undefined"==typeof navigator?"":navigator.userAgent,isUserAgentMatch=e=>new RegExp(e,"i").test(USER_AGENT),getBrowserVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/([\\d.]+)`),A=USER_AGENT.match(t);if(A&&A[1])return A[1]}return""},getBrowserMajorVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/(\\d+)`),A=USER_AGENT.match(t);if(A&&A[1])return parseFloat(A[1])}return NaN},webkitVersionMap=/AppleWebKit\/([\d.]+)/i.exec(USER_AGENT),appleWebkitVersion=webkitVersionMap?parseFloat(webkitVersionMap[1]):NaN,IS_IPAD=isUserAgentMatch("iPad"),IS_IPAD_PRO="undefined"!=typeof navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&isUserAgentMatch("Macintosh"),IS_IPHONE=isUserAgentMatch("iPhone")&&!IS_IPAD,IS_IPOD=isUserAgentMatch("iPod"),IS_IOS=IS_IPHONE||IS_IPAD||IS_IPOD||IS_IPAD_PRO,IS_ANDROID=isUserAgentMatch("Android"),ANDROID_VERSION=function(){if(IS_ANDROID){const e=USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(e){const t=e[1]&&parseFloat(e[1]),A=e[2]&&parseFloat(e[2]);if(t&&A)return parseFloat(`${e[1]}.${e[2]}`);if(t)return t}}return NaN}(),IS_OLD_ANDROID=IS_ANDROID&&isUserAgentMatch("webkit")&&ANDROID_VERSION<2.3,IS_NATIVE_ANDROID=IS_ANDROID&&ANDROID_VERSION<5&&appleWebkitVersion<537,IS_FIREFOX=isUserAgentMatch("Firefox"),FIREFOX_VERSION=getBrowserVersion("Firefox"),FIREFOX_MAJOR_VERSION=getBrowserMajorVersion("Firefox"),IS_EDGE=isUserAgentMatch("Edge"),EDGE_VERSION=getBrowserVersion("Edge"),IS_EDG=isUserAgentMatch("Edg"),EDG_VERSION=getBrowserVersion("Edg"),EDG_MAJOR_VERSION=getBrowserMajorVersion("Edg"),IS_SOGOUM=isUserAgentMatch("SogouMobileBrowser"),SOGOUM_VERSION=getBrowserVersion("SogouMobileBrowser"),IS_SOGOU=isUserAgentMatch("MetaSr\\s"),SOGOU_VERSION=getBrowserVersion("MetaSr\\s"),IS_TBS=isUserAgentMatch("TBS"),TBS_VERSION=getBrowserVersion("TBS"),IS_XWEB=isUserAgentMatch("XWEB"),XWEB_VERSION=getBrowserVersion("XWEB"),IS_IE8=isUserAgentMatch("MSIE\\s8\\.0"),IS_IE=isUserAgentMatch("MSIE\\/\\d+"),IE_VERSION=function(){if(IS_IE){const e=/MSIE\s(\d+)\.\d/.exec(USER_AGENT);let t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(USER_AGENT)&&/rv:11.0/.test(USER_AGENT)&&(t=11),t}return NaN}(),IS_WECHAT=isUserAgentMatch("(micromessenger|webbrowser)"),WECHAT_VERSION=getBrowserVersion("MicroMessenger"),IS_X5MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&isUserAgentMatch("COVC"),IS_MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&!isUserAgentMatch("COVC"),MQQB_VERSION=IS_MQQB||IS_X5MQQB?getBrowserVersion("MQQBrowser"):"",IS_WQQB=!IS_TBS&&isUserAgentMatch(" QQBrowser"),WQQB_VERSION=getBrowserVersion(" QQBrowser"),IS_MACQQB=!IS_TBS&&isUserAgentMatch("QQBrowserLite"),MACQQB_VERSION=getBrowserVersion("QQBrowserLite"),IS_IPADQQB=!IS_TBS&&isUserAgentMatch("MQBHD"),IPADQQB_VERSION=getBrowserVersion("MQBHD"),IS_WIN=isUserAgentMatch("Windows"),IS_MAC=!IS_IOS&&isUserAgentMatch("MAC OS X"),IS_LINUX=!IS_ANDROID&&isUserAgentMatch("Linux"),IS_CHROME_OS=isUserAgentMatch("CrOS"),IS_WX=isUserAgentMatch("MicroMessenger"),IS_UCBROWSER=isUserAgentMatch("UCBrowser"),IS_ELECTRON=isUserAgentMatch("Electron"),IS_MIBROWSER=isUserAgentMatch("MiuiBrowser"),MI_VERSION=getBrowserVersion("MiuiBrowser"),IS_HUAWEIBROWSER=isUserAgentMatch("HuaweiBrowser"),IS_HUAWEI=isUserAgentMatch("Huawei")||isUserAgentMatch("HUAWEI"),IS_HONOR=isUserAgentMatch("Honor")||isUserAgentMatch("HONOR"),HUAWEI_VERSION=getBrowserVersion("HuaweiBrowser"),IS_SAMSUNGBROWSER=isUserAgentMatch("SamsungBrowser"),SAMSUNG_VERSION=getBrowserVersion("SamsungBrowser"),IS_OPPOBROWSER=isUserAgentMatch("HeyTapBrowser"),OPPO_VERSION=getBrowserVersion("HeyTapBrowser"),IS_VIVOBROWSER=isUserAgentMatch("VivoBrowser"),VIVO_VERSION=getBrowserVersion("VivoBrowser"),IS_OPENHARMONY=isUserAgentMatch("OpenHarmony"),OPENHARMONY_VERSION=getBrowserVersion("OpenHarmony"),getChromeMajorVersion=()=>getBrowserMajorVersion("Chrome"),IS_CHROMIUM_BASE=isUserAgentMatch("Chrome"),IS_CHROME=!IS_EDGE&&!IS_SOGOU&&!IS_SOGOUM&&!IS_TBS&&!IS_XWEB&&!IS_EDG&&!IS_WQQB&&!IS_MIBROWSER&&!IS_HUAWEIBROWSER&&!IS_SAMSUNGBROWSER&&!IS_OPPOBROWSER&&!IS_VIVOBROWSER&&IS_CHROMIUM_BASE,IS_HEADLESS_CHROME=isUserAgentMatch("HeadlessChrome"),CHROME_MAJOR_VERSION=getChromeMajorVersion(),CHROME_VERSION=getBrowserVersion("Chrome"),IS_SAFARI=!IS_CHROMIUM_BASE&&!IS_MQQB&&!IS_X5MQQB&&!IS_MACQQB&&!IS_IPADQQB&&isUserAgentMatch("Safari"),IS_ANY_SAFARI=IS_SAFARI||IS_IOS,SAFARI_VERSION=getBrowserVersion("Version"),IS_ANDROID_WEBVIEW=/Android.*(wv|.0.0.0)/.test(USER_AGENT),IOS_VERSION=(()=>{if(IS_IPAD_PRO)return SAFARI_VERSION;if(IS_IOS){const e=USER_AGENT.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){let t=e[1];return e[2]&&(t+=`.${e[2]}`),t}}return""})();function isVersionSmallerThan(e,t){const A=e.split(".").map((e=>Number(e))),i=t.split(".").map((e=>Number(e)));for(let e=0;e<Math.max(A.length,i.length);e++){const t=A[e]||0,r=i[e]||0;if(t<r)return!0;if(t>r)return!1}return!1}function isVersionLargerThan(e,t,A=!1){const i=e.split(".").map((e=>Number(e))),r=t.split(".").map((e=>Number(e)));for(let e=0;e<Math.max(i.length,r.length);e++){const t=i[e]||0,A=r[e]||0;if(t>A)return!0;if(t<A)return!1}return A}var IOS_MAIN_VERSION=Number(IOS_VERSION.split(".")[0]),IS_IOS_15_1="15.1"===IOS_VERSION,IS_IOS_13_OR_14=(()=>{const e=Number(IOS_VERSION.split(".")[0]);return 14===e||13===e})(),IS_IOS_CHROME=isUserAgentMatch("CriOS"),IS_DESKTOP_IOS_CHROME=IS_IOS_CHROME&&"11.1.1"===SAFARI_VERSION,IS_LOCAL="undefined"!=typeof location&&("file:"===location.protocol||"localhost"===location.hostname||"127.0.0.1"===location.hostname),isLocalStorageEnabled=(()=>{let e;return()=>{if(void 0===e)try{e=!!window.localStorage}catch(t){e=!1}return e}})(),browserInfo=getBrowserInfo();function getBrowserInfo(){const e=new Map([[IS_FIREFOX,["Firefox",FIREFOX_VERSION]],[IS_EDG,["Edg",EDG_VERSION]],[IS_CHROME,["Chrome",CHROME_VERSION]],[IS_SAFARI,["Safari",SAFARI_VERSION]],[IS_TBS,["TBS",TBS_VERSION]],[IS_XWEB,["XWEB",XWEB_VERSION]],[IS_WECHAT&&IS_IPHONE,["WeChat",WECHAT_VERSION]],[IS_WQQB,["QQ(Win)",WQQB_VERSION]],[IS_MQQB,["QQ(Mobile)",MQQB_VERSION]],[IS_X5MQQB,["QQ(Mobile X5)",MQQB_VERSION]],[IS_MACQQB,["QQ(Mac)",MACQQB_VERSION]],[IS_IPADQQB,["QQ(iPad)",IPADQQB_VERSION]],[IS_MIBROWSER,["MI",MI_VERSION]],[IS_HUAWEIBROWSER,["HW",HUAWEI_VERSION]],[IS_SAMSUNGBROWSER,["Samsung",SAMSUNG_VERSION]],[IS_OPPOBROWSER,["OPPO",OPPO_VERSION]],[IS_VIVOBROWSER,["VIVO",VIVO_VERSION]],[IS_EDGE,["EDGE",EDGE_VERSION]],[IS_SOGOUM,["SogouMobile",SOGOUM_VERSION]],[IS_SOGOU,["Sogou",SOGOU_VERSION]]]);let t="unknown",A="unknown";return e.has(!0)&&([t,A]=e.get(!0)),{name:t,version:A}}var userAgentData=null;function isMobile(){return userAgentData&&"boolean"==typeof userAgentData.mobile?userAgentData.mobile:IS_ANDROID||IS_IOS||IS_IPHONE||IS_IPAD||IS_OPENHARMONY}var UA_DATA_STRING="";function getDeviceModel(){return(null==userAgentData?void 0:userAgentData.model)||""}var OSNameMap=new Map([[IS_ANDROID,"Android"],[IS_IOS,"iOS"],[IS_WIN,"Windows"],[IS_MAC,"MacOS"],[IS_LINUX,"Linux"],[IS_CHROME_OS,"ChromeOS"]]),getOSName=function(){return OSNameMap.get(!0)?OSNameMap.get(!0):userAgentData?userAgentData.platform:"unknown"};function getOSNumber(){return IS_WIN?1:IS_ANDROID?2:IS_MAC?3:IS_IOS?4:IS_LINUX?5:IS_CHROME_OS?6:0}var getOSString=()=>{let e=getOSName();return e+=`/${browserInfo.name}/${IS_SAFARI?browserInfo.version:browserInfo.version.split(".")[0]}`,(null==userAgentData?void 0:userAgentData.platformVersion)&&(e+=`/${userAgentData.platformVersion}`),(null==userAgentData?void 0:userAgentData.architecture)&&(e+=`/${userAgentData.architecture}`),e},EPSILON=1e-6,ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,degree=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var mat4_exports={};function create(){var e=new ARRAY_TYPE(16);return ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function clone(e){var t=new ARRAY_TYPE(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function copy(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function fromValues(e,t,A,i,r,s,n,a,o,c,d,I,l,g,u,E){var h=new ARRAY_TYPE(16);return h[0]=e,h[1]=t,h[2]=A,h[3]=i,h[4]=r,h[5]=s,h[6]=n,h[7]=a,h[8]=o,h[9]=c,h[10]=d,h[11]=I,h[12]=l,h[13]=g,h[14]=u,h[15]=E,h}function set(e,t,A,i,r,s,n,a,o,c,d,I,l,g,u,E,h){return e[0]=t,e[1]=A,e[2]=i,e[3]=r,e[4]=s,e[5]=n,e[6]=a,e[7]=o,e[8]=c,e[9]=d,e[10]=I,e[11]=l,e[12]=g,e[13]=u,e[14]=E,e[15]=h,e}function identity(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function transpose(e,t){if(e===t){var A=t[1],i=t[2],r=t[3],s=t[6],n=t[7],a=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=A,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=s,e[11]=t[14],e[12]=r,e[13]=n,e[14]=a}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function invert(e,t){var A=t[0],i=t[1],r=t[2],s=t[3],n=t[4],a=t[5],o=t[6],c=t[7],d=t[8],I=t[9],l=t[10],g=t[11],u=t[12],E=t[13],h=t[14],C=t[15],p=A*a-i*n,_=A*o-r*n,B=A*c-s*n,m=i*o-r*a,S=i*c-s*a,f=r*c-s*o,Q=d*E-I*u,R=d*h-l*u,D=d*C-g*u,T=I*h-l*E,N=I*C-g*E,y=l*C-g*h,v=p*y-_*N+B*T+m*D-S*R+f*Q;return v?(v=1/v,e[0]=(a*y-o*N+c*T)*v,e[1]=(r*N-i*y-s*T)*v,e[2]=(E*f-h*S+C*m)*v,e[3]=(l*S-I*f-g*m)*v,e[4]=(o*D-n*y-c*R)*v,e[5]=(A*y-r*D+s*R)*v,e[6]=(h*B-u*f-C*_)*v,e[7]=(d*f-l*B+g*_)*v,e[8]=(n*N-a*D+c*Q)*v,e[9]=(i*D-A*N-s*Q)*v,e[10]=(u*S-E*B+C*p)*v,e[11]=(I*B-d*S-g*p)*v,e[12]=(a*R-n*T-o*Q)*v,e[13]=(A*T-i*R+r*Q)*v,e[14]=(E*_-u*m-h*p)*v,e[15]=(d*m-I*_+l*p)*v,e):null}function adjoint(e,t){var A=t[0],i=t[1],r=t[2],s=t[3],n=t[4],a=t[5],o=t[6],c=t[7],d=t[8],I=t[9],l=t[10],g=t[11],u=t[12],E=t[13],h=t[14],C=t[15];return e[0]=a*(l*C-g*h)-I*(o*C-c*h)+E*(o*g-c*l),e[1]=-(i*(l*C-g*h)-I*(r*C-s*h)+E*(r*g-s*l)),e[2]=i*(o*C-c*h)-a*(r*C-s*h)+E*(r*c-s*o),e[3]=-(i*(o*g-c*l)-a*(r*g-s*l)+I*(r*c-s*o)),e[4]=-(n*(l*C-g*h)-d*(o*C-c*h)+u*(o*g-c*l)),e[5]=A*(l*C-g*h)-d*(r*C-s*h)+u*(r*g-s*l),e[6]=-(A*(o*C-c*h)-n*(r*C-s*h)+u*(r*c-s*o)),e[7]=A*(o*g-c*l)-n*(r*g-s*l)+d*(r*c-s*o),e[8]=n*(I*C-g*E)-d*(a*C-c*E)+u*(a*g-c*I),e[9]=-(A*(I*C-g*E)-d*(i*C-s*E)+u*(i*g-s*I)),e[10]=A*(a*C-c*E)-n*(i*C-s*E)+u*(i*c-s*a),e[11]=-(A*(a*g-c*I)-n*(i*g-s*I)+d*(i*c-s*a)),e[12]=-(n*(I*h-l*E)-d*(a*h-o*E)+u*(a*l-o*I)),e[13]=A*(I*h-l*E)-d*(i*h-r*E)+u*(i*l-r*I),e[14]=-(A*(a*h-o*E)-n*(i*h-r*E)+u*(i*o-r*a)),e[15]=A*(a*l-o*I)-n*(i*l-r*I)+d*(i*o-r*a),e}function determinant(e){var t=e[0],A=e[1],i=e[2],r=e[3],s=e[4],n=e[5],a=e[6],o=e[7],c=e[8],d=e[9],I=e[10],l=e[11],g=e[12],u=e[13],E=e[14],h=e[15];return(t*n-A*s)*(I*h-l*E)-(t*a-i*s)*(d*h-l*u)+(t*o-r*s)*(d*E-I*u)+(A*a-i*n)*(c*h-l*g)-(A*o-r*n)*(c*E-I*g)+(i*o-r*a)*(c*u-d*g)}function multiply(e,t,A){var i=t[0],r=t[1],s=t[2],n=t[3],a=t[4],o=t[5],c=t[6],d=t[7],I=t[8],l=t[9],g=t[10],u=t[11],E=t[12],h=t[13],C=t[14],p=t[15],_=A[0],B=A[1],m=A[2],S=A[3];return e[0]=_*i+B*a+m*I+S*E,e[1]=_*r+B*o+m*l+S*h,e[2]=_*s+B*c+m*g+S*C,e[3]=_*n+B*d+m*u+S*p,_=A[4],B=A[5],m=A[6],S=A[7],e[4]=_*i+B*a+m*I+S*E,e[5]=_*r+B*o+m*l+S*h,e[6]=_*s+B*c+m*g+S*C,e[7]=_*n+B*d+m*u+S*p,_=A[8],B=A[9],m=A[10],S=A[11],e[8]=_*i+B*a+m*I+S*E,e[9]=_*r+B*o+m*l+S*h,e[10]=_*s+B*c+m*g+S*C,e[11]=_*n+B*d+m*u+S*p,_=A[12],B=A[13],m=A[14],S=A[15],e[12]=_*i+B*a+m*I+S*E,e[13]=_*r+B*o+m*l+S*h,e[14]=_*s+B*c+m*g+S*C,e[15]=_*n+B*d+m*u+S*p,e}function translate(e,t,A){var i,r,s,n,a,o,c,d,I,l,g,u,E=A[0],h=A[1],C=A[2];return t===e?(e[12]=t[0]*E+t[4]*h+t[8]*C+t[12],e[13]=t[1]*E+t[5]*h+t[9]*C+t[13],e[14]=t[2]*E+t[6]*h+t[10]*C+t[14],e[15]=t[3]*E+t[7]*h+t[11]*C+t[15]):(i=t[0],r=t[1],s=t[2],n=t[3],a=t[4],o=t[5],c=t[6],d=t[7],I=t[8],l=t[9],g=t[10],u=t[11],e[0]=i,e[1]=r,e[2]=s,e[3]=n,e[4]=a,e[5]=o,e[6]=c,e[7]=d,e[8]=I,e[9]=l,e[10]=g,e[11]=u,e[12]=i*E+a*h+I*C+t[12],e[13]=r*E+o*h+l*C+t[13],e[14]=s*E+c*h+g*C+t[14],e[15]=n*E+d*h+u*C+t[15]),e}function scale(e,t,A){var i=A[0],r=A[1],s=A[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function rotate(e,t,A,i){var r,s,n,a,o,c,d,I,l,g,u,E,h,C,p,_,B,m,S,f,Q,R,D,T,N=i[0],y=i[1],v=i[2],w=Math.hypot(N,y,v);return w<EPSILON?null:(N*=w=1/w,y*=w,v*=w,r=Math.sin(A),n=1-(s=Math.cos(A)),a=t[0],o=t[1],c=t[2],d=t[3],I=t[4],l=t[5],g=t[6],u=t[7],E=t[8],h=t[9],C=t[10],p=t[11],_=N*N*n+s,B=y*N*n+v*r,m=v*N*n-y*r,S=N*y*n-v*r,f=y*y*n+s,Q=v*y*n+N*r,R=N*v*n+y*r,D=y*v*n-N*r,T=v*v*n+s,e[0]=a*_+I*B+E*m,e[1]=o*_+l*B+h*m,e[2]=c*_+g*B+C*m,e[3]=d*_+u*B+p*m,e[4]=a*S+I*f+E*Q,e[5]=o*S+l*f+h*Q,e[6]=c*S+g*f+C*Q,e[7]=d*S+u*f+p*Q,e[8]=a*R+I*D+E*T,e[9]=o*R+l*D+h*T,e[10]=c*R+g*D+C*T,e[11]=d*R+u*D+p*T,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function rotateX(e,t,A){var i=Math.sin(A),r=Math.cos(A),s=t[4],n=t[5],a=t[6],o=t[7],c=t[8],d=t[9],I=t[10],l=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=s*r+c*i,e[5]=n*r+d*i,e[6]=a*r+I*i,e[7]=o*r+l*i,e[8]=c*r-s*i,e[9]=d*r-n*i,e[10]=I*r-a*i,e[11]=l*r-o*i,e}function rotateY(e,t,A){var i=Math.sin(A),r=Math.cos(A),s=t[0],n=t[1],a=t[2],o=t[3],c=t[8],d=t[9],I=t[10],l=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=s*r-c*i,e[1]=n*r-d*i,e[2]=a*r-I*i,e[3]=o*r-l*i,e[8]=s*i+c*r,e[9]=n*i+d*r,e[10]=a*i+I*r,e[11]=o*i+l*r,e}function rotateZ(e,t,A){var i=Math.sin(A),r=Math.cos(A),s=t[0],n=t[1],a=t[2],o=t[3],c=t[4],d=t[5],I=t[6],l=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=s*r+c*i,e[1]=n*r+d*i,e[2]=a*r+I*i,e[3]=o*r+l*i,e[4]=c*r-s*i,e[5]=d*r-n*i,e[6]=I*r-a*i,e[7]=l*r-o*i,e}function fromTranslation(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function fromScaling(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function fromRotation(e,t,A){var i,r,s,n=A[0],a=A[1],o=A[2],c=Math.hypot(n,a,o);return c<EPSILON?null:(n*=c=1/c,a*=c,o*=c,i=Math.sin(t),s=1-(r=Math.cos(t)),e[0]=n*n*s+r,e[1]=a*n*s+o*i,e[2]=o*n*s-a*i,e[3]=0,e[4]=n*a*s-o*i,e[5]=a*a*s+r,e[6]=o*a*s+n*i,e[7]=0,e[8]=n*o*s+a*i,e[9]=a*o*s-n*i,e[10]=o*o*s+r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function fromXRotation(e,t){var A=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=A,e[7]=0,e[8]=0,e[9]=-A,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function fromYRotation(e,t){var A=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=0,e[2]=-A,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=A,e[9]=0,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function fromZRotation(e,t){var A=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=A,e[2]=0,e[3]=0,e[4]=-A,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function fromRotationTranslation(e,t,A){var i=t[0],r=t[1],s=t[2],n=t[3],a=i+i,o=r+r,c=s+s,d=i*a,I=i*o,l=i*c,g=r*o,u=r*c,E=s*c,h=n*a,C=n*o,p=n*c;return e[0]=1-(g+E),e[1]=I+p,e[2]=l-C,e[3]=0,e[4]=I-p,e[5]=1-(d+E),e[6]=u+h,e[7]=0,e[8]=l+C,e[9]=u-h,e[10]=1-(d+g),e[11]=0,e[12]=A[0],e[13]=A[1],e[14]=A[2],e[15]=1,e}function fromQuat2(e,t){var A=new ARRAY_TYPE(3),i=-t[0],r=-t[1],s=-t[2],n=t[3],a=t[4],o=t[5],c=t[6],d=t[7],I=i*i+r*r+s*s+n*n;return I>0?(A[0]=2*(a*n+d*i+o*s-c*r)/I,A[1]=2*(o*n+d*r+c*i-a*s)/I,A[2]=2*(c*n+d*s+a*r-o*i)/I):(A[0]=2*(a*n+d*i+o*s-c*r),A[1]=2*(o*n+d*r+c*i-a*s),A[2]=2*(c*n+d*s+a*r-o*i)),fromRotationTranslation(e,t,A),e}function getTranslation(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function getScaling(e,t){var A=t[0],i=t[1],r=t[2],s=t[4],n=t[5],a=t[6],o=t[8],c=t[9],d=t[10];return e[0]=Math.hypot(A,i,r),e[1]=Math.hypot(s,n,a),e[2]=Math.hypot(o,c,d),e}function getRotation(e,t){var A=new ARRAY_TYPE(3);getScaling(A,t);var i=1/A[0],r=1/A[1],s=1/A[2],n=t[0]*i,a=t[1]*r,o=t[2]*s,c=t[4]*i,d=t[5]*r,I=t[6]*s,l=t[8]*i,g=t[9]*r,u=t[10]*s,E=n+d+u,h=0;return E>0?(h=2*Math.sqrt(E+1),e[3]=.25*h,e[0]=(I-g)/h,e[1]=(l-o)/h,e[2]=(a-c)/h):n>d&&n>u?(h=2*Math.sqrt(1+n-d-u),e[3]=(I-g)/h,e[0]=.25*h,e[1]=(a+c)/h,e[2]=(l+o)/h):d>u?(h=2*Math.sqrt(1+d-n-u),e[3]=(l-o)/h,e[0]=(a+c)/h,e[1]=.25*h,e[2]=(I+g)/h):(h=2*Math.sqrt(1+u-n-d),e[3]=(a-c)/h,e[0]=(l+o)/h,e[1]=(I+g)/h,e[2]=.25*h),e}function fromRotationTranslationScale(e,t,A,i){var r=t[0],s=t[1],n=t[2],a=t[3],o=r+r,c=s+s,d=n+n,I=r*o,l=r*c,g=r*d,u=s*c,E=s*d,h=n*d,C=a*o,p=a*c,_=a*d,B=i[0],m=i[1],S=i[2];return e[0]=(1-(u+h))*B,e[1]=(l+_)*B,e[2]=(g-p)*B,e[3]=0,e[4]=(l-_)*m,e[5]=(1-(I+h))*m,e[6]=(E+C)*m,e[7]=0,e[8]=(g+p)*S,e[9]=(E-C)*S,e[10]=(1-(I+u))*S,e[11]=0,e[12]=A[0],e[13]=A[1],e[14]=A[2],e[15]=1,e}function fromRotationTranslationScaleOrigin(e,t,A,i,r){var s=t[0],n=t[1],a=t[2],o=t[3],c=s+s,d=n+n,I=a+a,l=s*c,g=s*d,u=s*I,E=n*d,h=n*I,C=a*I,p=o*c,_=o*d,B=o*I,m=i[0],S=i[1],f=i[2],Q=r[0],R=r[1],D=r[2],T=(1-(E+C))*m,N=(g+B)*m,y=(u-_)*m,v=(g-B)*S,w=(1-(l+C))*S,M=(h+p)*S,b=(u+_)*f,O=(h-p)*f,L=(1-(l+E))*f;return e[0]=T,e[1]=N,e[2]=y,e[3]=0,e[4]=v,e[5]=w,e[6]=M,e[7]=0,e[8]=b,e[9]=O,e[10]=L,e[11]=0,e[12]=A[0]+Q-(T*Q+v*R+b*D),e[13]=A[1]+R-(N*Q+w*R+O*D),e[14]=A[2]+D-(y*Q+M*R+L*D),e[15]=1,e}function fromQuat(e,t){var A=t[0],i=t[1],r=t[2],s=t[3],n=A+A,a=i+i,o=r+r,c=A*n,d=i*n,I=i*a,l=r*n,g=r*a,u=r*o,E=s*n,h=s*a,C=s*o;return e[0]=1-I-u,e[1]=d+C,e[2]=l-h,e[3]=0,e[4]=d-C,e[5]=1-c-u,e[6]=g+E,e[7]=0,e[8]=l+h,e[9]=g-E,e[10]=1-c-I,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function frustum(e,t,A,i,r,s,n){var a=1/(A-t),o=1/(r-i),c=1/(s-n);return e[0]=2*s*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=2*s*o,e[6]=0,e[7]=0,e[8]=(A+t)*a,e[9]=(r+i)*o,e[10]=(n+s)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=n*s*2*c,e[15]=0,e}function perspectiveNO(e,t,A,i,r){var s,n=1/Math.tan(t/2);return e[0]=n/A,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=r&&r!==1/0?(s=1/(i-r),e[10]=(r+i)*s,e[14]=2*r*i*s):(e[10]=-1,e[14]=-2*i),e}__export(mat4_exports,{add:()=>add,adjoint:()=>adjoint,clone:()=>clone,copy:()=>copy,create:()=>create,determinant:()=>determinant,equals:()=>equals,exactEquals:()=>exactEquals,frob:()=>frob,fromQuat:()=>fromQuat,fromQuat2:()=>fromQuat2,fromRotation:()=>fromRotation,fromRotationTranslation:()=>fromRotationTranslation,fromRotationTranslationScale:()=>fromRotationTranslationScale,fromRotationTranslationScaleOrigin:()=>fromRotationTranslationScaleOrigin,fromScaling:()=>fromScaling,fromTranslation:()=>fromTranslation,fromValues:()=>fromValues,fromXRotation:()=>fromXRotation,fromYRotation:()=>fromYRotation,fromZRotation:()=>fromZRotation,frustum:()=>frustum,getRotation:()=>getRotation,getScaling:()=>getScaling,getTranslation:()=>getTranslation,identity:()=>identity,invert:()=>invert,lookAt:()=>lookAt,mul:()=>mul,multiply:()=>multiply,multiplyScalar:()=>multiplyScalar,multiplyScalarAndAdd:()=>multiplyScalarAndAdd,ortho:()=>ortho,orthoNO:()=>orthoNO,orthoZO:()=>orthoZO,perspective:()=>perspective,perspectiveFromFieldOfView:()=>perspectiveFromFieldOfView,perspectiveNO:()=>perspectiveNO,perspectiveZO:()=>perspectiveZO,rotate:()=>rotate,rotateX:()=>rotateX,rotateY:()=>rotateY,rotateZ:()=>rotateZ,scale:()=>scale,set:()=>set,str:()=>str,sub:()=>sub,subtract:()=>subtract,targetTo:()=>targetTo,translate:()=>translate,transpose:()=>transpose});var perspective=perspectiveNO;function perspectiveZO(e,t,A,i,r){var s,n=1/Math.tan(t/2);return e[0]=n/A,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=r&&r!==1/0?(s=1/(i-r),e[10]=r*s,e[14]=r*i*s):(e[10]=-1,e[14]=-i),e}function perspectiveFromFieldOfView(e,t,A,i){var r=Math.tan(t.upDegrees*Math.PI/180),s=Math.tan(t.downDegrees*Math.PI/180),n=Math.tan(t.leftDegrees*Math.PI/180),a=Math.tan(t.rightDegrees*Math.PI/180),o=2/(n+a),c=2/(r+s);return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-(n-a)*o*.5,e[9]=(r-s)*c*.5,e[10]=i/(A-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*A/(A-i),e[15]=0,e}function orthoNO(e,t,A,i,r,s,n){var a=1/(t-A),o=1/(i-r),c=1/(s-n);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*o,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+A)*a,e[13]=(r+i)*o,e[14]=(n+s)*c,e[15]=1,e}var ortho=orthoNO;function orthoZO(e,t,A,i,r,s,n){var a=1/(t-A),o=1/(i-r),c=1/(s-n);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*o,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+A)*a,e[13]=(r+i)*o,e[14]=s*c,e[15]=1,e}function lookAt(e,t,A,i){var r,s,n,a,o,c,d,I,l,g,u=t[0],E=t[1],h=t[2],C=i[0],p=i[1],_=i[2],B=A[0],m=A[1],S=A[2];return Math.abs(u-B)<EPSILON&&Math.abs(E-m)<EPSILON&&Math.abs(h-S)<EPSILON?identity(e):(d=u-B,I=E-m,l=h-S,r=p*(l*=g=1/Math.hypot(d,I,l))-_*(I*=g),s=_*(d*=g)-C*l,n=C*I-p*d,(g=Math.hypot(r,s,n))?(r*=g=1/g,s*=g,n*=g):(r=0,s=0,n=0),a=I*n-l*s,o=l*r-d*n,c=d*s-I*r,(g=Math.hypot(a,o,c))?(a*=g=1/g,o*=g,c*=g):(a=0,o=0,c=0),e[0]=r,e[1]=a,e[2]=d,e[3]=0,e[4]=s,e[5]=o,e[6]=I,e[7]=0,e[8]=n,e[9]=c,e[10]=l,e[11]=0,e[12]=-(r*u+s*E+n*h),e[13]=-(a*u+o*E+c*h),e[14]=-(d*u+I*E+l*h),e[15]=1,e)}function targetTo(e,t,A,i){var r=t[0],s=t[1],n=t[2],a=i[0],o=i[1],c=i[2],d=r-A[0],I=s-A[1],l=n-A[2],g=d*d+I*I+l*l;g>0&&(d*=g=1/Math.sqrt(g),I*=g,l*=g);var u=o*l-c*I,E=c*d-a*l,h=a*I-o*d;return(g=u*u+E*E+h*h)>0&&(u*=g=1/Math.sqrt(g),E*=g,h*=g),e[0]=u,e[1]=E,e[2]=h,e[3]=0,e[4]=I*h-l*E,e[5]=l*u-d*h,e[6]=d*E-I*u,e[7]=0,e[8]=d,e[9]=I,e[10]=l,e[11]=0,e[12]=r,e[13]=s,e[14]=n,e[15]=1,e}function str(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function frob(e){return Math.hypot(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}function add(e,t,A){return e[0]=t[0]+A[0],e[1]=t[1]+A[1],e[2]=t[2]+A[2],e[3]=t[3]+A[3],e[4]=t[4]+A[4],e[5]=t[5]+A[5],e[6]=t[6]+A[6],e[7]=t[7]+A[7],e[8]=t[8]+A[8],e[9]=t[9]+A[9],e[10]=t[10]+A[10],e[11]=t[11]+A[11],e[12]=t[12]+A[12],e[13]=t[13]+A[13],e[14]=t[14]+A[14],e[15]=t[15]+A[15],e}function subtract(e,t,A){return e[0]=t[0]-A[0],e[1]=t[1]-A[1],e[2]=t[2]-A[2],e[3]=t[3]-A[3],e[4]=t[4]-A[4],e[5]=t[5]-A[5],e[6]=t[6]-A[6],e[7]=t[7]-A[7],e[8]=t[8]-A[8],e[9]=t[9]-A[9],e[10]=t[10]-A[10],e[11]=t[11]-A[11],e[12]=t[12]-A[12],e[13]=t[13]-A[13],e[14]=t[14]-A[14],e[15]=t[15]-A[15],e}function multiplyScalar(e,t,A){return e[0]=t[0]*A,e[1]=t[1]*A,e[2]=t[2]*A,e[3]=t[3]*A,e[4]=t[4]*A,e[5]=t[5]*A,e[6]=t[6]*A,e[7]=t[7]*A,e[8]=t[8]*A,e[9]=t[9]*A,e[10]=t[10]*A,e[11]=t[11]*A,e[12]=t[12]*A,e[13]=t[13]*A,e[14]=t[14]*A,e[15]=t[15]*A,e}function multiplyScalarAndAdd(e,t,A,i){return e[0]=t[0]+A[0]*i,e[1]=t[1]+A[1]*i,e[2]=t[2]+A[2]*i,e[3]=t[3]+A[3]*i,e[4]=t[4]+A[4]*i,e[5]=t[5]+A[5]*i,e[6]=t[6]+A[6]*i,e[7]=t[7]+A[7]*i,e[8]=t[8]+A[8]*i,e[9]=t[9]+A[9]*i,e[10]=t[10]+A[10]*i,e[11]=t[11]+A[11]*i,e[12]=t[12]+A[12]*i,e[13]=t[13]+A[13]*i,e[14]=t[14]+A[14]*i,e[15]=t[15]+A[15]*i,e}function exactEquals(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function equals(e,t){var A=e[0],i=e[1],r=e[2],s=e[3],n=e[4],a=e[5],o=e[6],c=e[7],d=e[8],I=e[9],l=e[10],g=e[11],u=e[12],E=e[13],h=e[14],C=e[15],p=t[0],_=t[1],B=t[2],m=t[3],S=t[4],f=t[5],Q=t[6],R=t[7],D=t[8],T=t[9],N=t[10],y=t[11],v=t[12],w=t[13],M=t[14],b=t[15];return Math.abs(A-p)<=EPSILON*Math.max(1,Math.abs(A),Math.abs(p))&&Math.abs(i-_)<=EPSILON*Math.max(1,Math.abs(i),Math.abs(_))&&Math.abs(r-B)<=EPSILON*Math.max(1,Math.abs(r),Math.abs(B))&&Math.abs(s-m)<=EPSILON*Math.max(1,Math.abs(s),Math.abs(m))&&Math.abs(n-S)<=EPSILON*Math.max(1,Math.abs(n),Math.abs(S))&&Math.abs(a-f)<=EPSILON*Math.max(1,Math.abs(a),Math.abs(f))&&Math.abs(o-Q)<=EPSILON*Math.max(1,Math.abs(o),Math.abs(Q))&&Math.abs(c-R)<=EPSILON*Math.max(1,Math.abs(c),Math.abs(R))&&Math.abs(d-D)<=EPSILON*Math.max(1,Math.abs(d),Math.abs(D))&&Math.abs(I-T)<=EPSILON*Math.max(1,Math.abs(I),Math.abs(T))&&Math.abs(l-N)<=EPSILON*Math.max(1,Math.abs(l),Math.abs(N))&&Math.abs(g-y)<=EPSILON*Math.max(1,Math.abs(g),Math.abs(y))&&Math.abs(u-v)<=EPSILON*Math.max(1,Math.abs(u),Math.abs(v))&&Math.abs(E-w)<=EPSILON*Math.max(1,Math.abs(E),Math.abs(w))&&Math.abs(h-M)<=EPSILON*Math.max(1,Math.abs(h),Math.abs(M))&&Math.abs(C-b)<=EPSILON*Math.max(1,Math.abs(C),Math.abs(b))}var mul=multiply,sub=subtract,ErrorCode=(e=>(e[e.INVALID_PARAMETER=4096]="INVALID_PARAMETER",e[e.INVALID_OPERATION=4097]="INVALID_OPERATION",e[e.NOT_SUPPORTED=4098]="NOT_SUPPORTED",e[e.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",e[e.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",e[e.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",e[e.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",e[e.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",e[e.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",e[e.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",e[e.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",e[e.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",e[e.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",e[e.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",e[e.CLIENT_BANNED=16448]="CLIENT_BANNED",e[e.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",e[e.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",e[e.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",e[e.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",e[e.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",e[e.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",e[e.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",e[e.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",e[e.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",e[e.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",e[e.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",e[e.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",e[e.API_CALL_ABORTED=16461]="API_CALL_ABORTED",e[e.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",e[e.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",e[e.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",e[e.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",e[e.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",e[e.UNKNOWN=65535]="UNKNOWN",e))(ErrorCode||{}),error_code_default=ErrorCode,getErrorName=function(e){for(const t in error_code_default)if(error_code_default[t]===e)return t;return"UNKNOWN"},RtcError=class extends Error{constructor({name:e="RtcError",message:t,code:A=error_code_default.UNKNOWN,extraCode:i=0,constraint:r}){const s=`<${getErrorName(A)} 0x${A.toString(16)}>`,n=`${t}${r?` constraint: ${r}`:""}${(null==t?void 0:t.includes(s))?"":` ${s}`}`;super(n),__publicField(this,"code"),__publicField(this,"extraCode"),__publicField(this,"message"),__publicField(this,"originMessage"),__publicField(this,"name"),__publicField(this,"constraint"),this.code=A,this.extraCode=i,this.name=e,this.message=n,this.constraint=r,this.originMessage=t}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},rtc_error_default=RtcError,baseTime=(new Date).getTime(),offset=0,getCurrentTime=function(){return(new Date).getTime()+offset},getTimestamp=function(){const e=new Date;return e.setTime(getCurrentTime()),e.toLocaleString()},formatDate=function(e){let t=String(e.getMilliseconds());return"padStart"in String.prototype&&(t=t.toString().padStart(3,"0")),`${e.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${t}`},utils_exports={};__export(utils_exports,{REPORT_TYPE:()=>REPORT_TYPE,buildSSOPackage:()=>buildSSOPackage,bytes2ms:()=>bytes2ms,calculateScaleResolutionDownNumber:()=>calculateScaleResolutionDownNumber,convertObjectNumberToInt:()=>convertObjectNumberToInt,copyProperties:()=>copyProperties,deepClone:()=>deepClone,deepCloneBasic:()=>deepCloneBasic,deepMerge:()=>deepMerge,delay:()=>delay,fibonacci:()=>fibonacci,formatedTime:()=>formatedTime,getConstructorName:()=>getConstructorName,getContainerFromElement:()=>getContainerFromElement,getEnv:()=>getEnv,getInternalVersion:()=>getInternalVersion,getLoggerUrl:()=>getLoggerUrl,getMediaStreamTrackInfo:()=>getMediaStreamTrackInfo,getMuteStateFromFlag:()=>getMuteStateFromFlag,getNetworkType:()=>getNetworkType,getNumNetworkType:()=>getNumNetworkType,getReconnectionTimeout:()=>getReconnectionTimeout,getStringByteLength:()=>getStringByteLength,getTurnServer:()=>getTurnServer,getUint32Version:()=>getUint32Version,getValueType:()=>getValueType,getViewListFromView:()=>getViewListFromView,glog:()=>glog,ipv4ToUint32:()=>ipv4ToUint32,isArray:()=>isArray,isAudioWorkletSupported:()=>isAudioWorkletSupported,isBoolean:()=>isBoolean,isConstructor:()=>isConstructor,isEmpty:()=>isEmpty,isFunction:()=>isFunction,isLangChinese:()=>isLangChinese,isMediaStreamTrack:()=>isMediaStreamTrack,isNumber:()=>isNumber,isObject:()=>isObject,isOverseaSdkAppId:()=>isOverseaSdkAppId,isPlainObject:()=>isPlainObject,isPortrait:()=>isPortrait,isPromise:()=>isPromise,isRemoteTrack:()=>isRemoteTrack,isRotate90Or270:()=>isRotate90Or270,isSetSinkIdSupported:()=>isSetSinkIdSupported,isString:()=>isString,isUndefined:()=>isUndefined,loadImage:()=>loadImage,loadVideo:()=>loadVideo,ms2bytes:()=>ms2bytes,ms2samples:()=>ms2samples,normalizeUrl:()=>normalizeUrl,performanceNow:()=>performanceNow,promiseAny:()=>promiseAny,samples2ms:()=>samples2ms,setNetworkType:()=>setNetworkType,stringify:()=>stringify,stringifyIncludeValue:()=>stringifyIncludeValue,throttlePromise:()=>throttlePromise});var version="5.0.0",IS_WORKER="undefined"!=typeof importScripts,IS_WORKLET="undefined"!=typeof registerProcessor,loggerProxy="",BASE_HOST="web.sdk.qcloud.com",BASE_DOC_URL=`https://${BASE_HOST}/trtc/webrtc/v5/doc`,DOC_URL=`${BASE_DOC_URL}/zh-cn/`,LOGGER_DOMAIN="https://yun.tim.qq.com",LOGGER_DOMAIN_OVERSEA="https://apisgp.my-imcloud.com",TRTC_ERROR_ASSISTANCE="trtc_error_assistance",LOGGER_CMD_TYPE={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},ENV_NAME={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},LOG_LEVEL=(e=>(e[e.TRACE=0]="TRACE",e[e.DEBUG=1]="DEBUG",e[e.INFO=2]="INFO",e[e.WARN=3]="WARN",e[e.ERROR=4]="ERROR",e[e.NONE=5]="NONE",e))(LOG_LEVEL||{}),NETWORK_TYPE={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},STORAGE_EXPIRES_TIME=6048e5,videoProfileMap={"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}},defaultBigVideoProfile=videoProfileMap["480p_2"],defaultSmallVideoProfile=videoProfileMap["120p_2"],NAME={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"},VIDEO_STAT_BIT=1,SMALL_STAT_BIT=2,AUX_STAT_BIT=4,AUDIO_STAT_BIT=8,AUDIO_MUTE_BIT=64,VIDEO_MUTE_BIT=16,REMOTE_STREAM_TYPE_MAIN=NAME.MAIN,REMOTE_STREAM_TYPE_AUX=NAME.AUXILIARY,KIBANA_EVENT={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"},SDP_SEMANTICS_UNIFIED_PLAN="unified-plan",STREAM_TYPE_BIG=NAME.BIG,STREAM_TYPE_SMALL=NAME.SMALL,PEERCONNECTION_CONNECTING_TIMEOUT=1e4,PAUSED_RETRY_COUNT=5,MICROPHONE_DEFAULT="default",LOG_LEVEL_NAME=Object.keys(LOG_LEVEL),RECOVER_CAPTURE_INTERVAL=2e3,CAPABILITIES_KEYS=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],MAX_RTT=1e4,__awaiter=function(e,t,A,i){return new(A||(A=Promise))((function(r,s){function n(e){try{o(i.next(e))}catch(e){s(e)}}function a(e){try{o(i.throw(e))}catch(e){s(e)}}function o(e){var t;e.done?r(e.value):(t=e.value,t instanceof A?t:new A((function(e){e(t)}))).then(n,a)}o((i=i.apply(e,t||[])).next())}))},U32=Symbol(32),U16=Symbol(16),U8=Symbol(8),OPut=class{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.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(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return __awaiter(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,A)=>{var i;this.reject=A,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(U32)}readU16(){return this.read(U16)}readU8(){return this.read(U8)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let A=0;const i=e=>t.length<(A=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,A)}else if(this.need===U32){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===U16){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===U8){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,A)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,A)),e=this.need}return this.consumed+=A,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,A=t+e;if(A<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,A);else{const e=new Uint8Array(A);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,A)}return this.buffer=new Uint8Array(e),this.buffer}};OPut.U32=U32,OPut.U16=U16,OPut.U8=U8;var MSB=128,REST=127,MSBALL=~REST,INT=Math.pow(2,31);function encodeVarint(e){const t=new OPut;for(;e>=128;)t.malloc(1)[0]=255&e|MSB,e>>>=7;return t.malloc(1)[0]=255&e,t.buffer||new Uint8Array(0)}function encode(e,t=0){const A=new OPut,i=t<<3;switch(typeof e){case"boolean":const r=A.malloc(2);r[0]=i,r[1]=e?1:0;break;case"number":A.malloc(1)[0]=i,A.write(encodeVarint(e));break;case"string":A.malloc(1)[0]=2|i;const s=(new TextEncoder).encode(e);A.write(encodeVarint(s.length));const n=A.malloc(s.length);for(let e=0;e<s.length;e++)n[e]=s[e];break;case"object":const a=new OPut;if(Array.isArray(e))for(let t=0;t<e.length;t++){const A=encode(e[t],t+1);A&&a.write(A)}else{let t=1;for(const A in e){const i=encode(e[A],t++);i&&a.write(i)}}0===t?a.buffer&&A.write(a.buffer):(A.malloc(1)[0]=2|i,a.buffer&&(A.write(encodeVarint(a.buffer.length)),A.write(a.buffer)))}return A.buffer||new Uint8Array(0)}var Buffer2=class{constructor(){__publicField(this,"buffer"),this.buffer=[]}get data(){return this.buffer}get length(){return this.buffer.length}writeInt32(e){this.buffer.push(e>>>24&255),this.buffer.push(e>>>16&255),this.buffer.push(e>>>8&255),this.buffer.push(255&e)}writeInt16(e){this.buffer.push(e>>>8&255),this.buffer.push(255&e)}writeByte(e){this.buffer.push(255&e)}writeBytes(e){for(let t=0;t<e.length;t++)this.buffer.push(e[t])}};function writUint32(e,t,A){e[A]=t>>>24&255,e[A+1]=t>>>16&255,e[A+2]=t>>>8&255,e[A+3]=255&t}function readUint32(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}function readUint8(e,t){return e[t]}function readString(e,t,A){return(new TextDecoder).decode(readBytes(e,t,A))}function readBytes(e,t,A){return e.slice(t,t+A)}var seqNumber=0,DELTA=2654435769,ROUNDS=16,LOG_ROUNDS=4,SALT_LEN=2,ZERO_LEN=7;function initSSOPacket(e,t,A,i="AVQualityReportSvc.C2S",r=2e3,s=2,n=30){return{version:r,encryption:s,d2:"",d2Len:0,uinType:n,uin:"",uinLen:0,reqHead:{seqNumber:A,appId:e,appidAtThird:new Uint8Array(0),a2:"",a2Len:0,serviceCmd:i,serviceCmdLen:0,cookie:"",cookieLen:0,imei:"",imeiLen:0,ksid:"",ksidLen:0,clientVersionInfo:"",clientVersionInfoLen:0},busiBuff:t}}function encodeSSOPackage(e,t){const A=new Buffer2,i=initSSOPacket(t,e,seqNumber);seqNumber=seqNumber+1&2147483647,A.writeInt32(0),A.writeInt32(i.version),A.writeByte(i.encryption);const r=(new TextEncoder).encode(i.d2);A.writeInt32(r.length+4),r&&A.writeBytes(r),A.writeByte(i.uinType);const s=(new TextEncoder).encode(i.uin);A.writeInt32(s.length+4),s.length&&A.writeBytes(s);const n=new Buffer2;n.writeInt32(0),n.writeInt32(i.reqHead.seqNumber),n.writeInt32(i.reqHead.appId),n.writeByte(i.reqHead.appId>>>24&255),n.writeByte(i.reqHead.appId>>>16&255),n.writeByte(i.reqHead.appId>>>8&255),n.writeByte(255&i.reqHead.appId);for(let e=4;e<16;e++)n.writeByte(0);const a=(new TextEncoder).encode(i.reqHead.a2);n.writeInt32(a.length+4),a.length&&n.writeBytes(a);const o=(new TextEncoder).encode(i.reqHead.serviceCmd);n.writeInt32(o.length+4),o.length&&n.writeBytes(o);const c=(new TextEncoder).encode(i.reqHead.cookie);n.writeInt32(c.length+4),c.length&&n.writeBytes(c);const d=(new TextEncoder).encode(i.reqHead.imei);n.writeInt32(d.length+4),d.length&&n.writeBytes(d);const I=(new TextEncoder).encode(i.reqHead.ksid);n.writeInt32(I.length+4),I.length&&n.writeBytes(I);const l=(new TextEncoder).encode(i.reqHead.clientVersionInfo);n.writeInt16(l.length+2),l.length&&n.writeBytes(l);const g=n.length;n.data[0]=g>>>24&255,n.data[1]=g>>>16&255,n.data[2]=g>>>8&255,n.data[3]=255&g,isString(e)&&(e=(new TextEncoder).encode(e)),n.writeInt32(e.length+4),e.length&&n.writeBytes(e);let u=new Uint8Array(n.data),E=null;1===i.encryption?E=(new TextEncoder).encode(i.uin):2===i.encryption&&(E=new Uint8Array(16)),E&&(u=encrypt(u,E)),A.writeBytes(u);const h=new Uint8Array(A.data),C=h.length;return h[0]=C>>>24&255,h[1]=C>>>16&255,h[2]=C>>>8&255,h[3]=255&C,h}function encrypt(e,t){const A=e.length;let i=(A+1+SALT_LEN+ZERO_LEN)%8;i&&(i=8-i);const r=new Uint8Array(A+1+SALT_LEN+ZERO_LEN+i);let s=0;const n=new Uint8Array(8),a=new Uint8Array(8),o=new Uint8Array(8);let c=0;n[0]=248&Math.floor(256*Math.random())|i,c=1;for(let e=0;e<i;e++)n[c]=255&Math.floor(256*Math.random()),c+=1;for(let e=0;e<SALT_LEN;)if(c<8&&(n[c]=255&Math.floor(256*Math.random()),c+=1,e+=1),8===c){encryptBlock(n,t,a,o,r,s),s+=8,c=0;for(let e=0;e<8;e++)o[e]=r[s-8+e]}let d=0;for(;d<A;)if(c<8&&(n[c]=e[d],c+=1,d+=1),8===c){encryptBlock(n,t,a,o,r,s),s+=8,c=0;for(let e=0;e<8;e++)o[e]=r[s-8+e]}for(let e=0;e<ZERO_LEN;)if(c<8&&(n[c]=0,c+=1,e+=1),8===c){encryptBlock(n,t,a,o,r,s),s+=8,c=0;for(let e=0;e<8;e++)o[e]=r[s-8+e]}return r}function encryptBlock(e,t,A,i,r,s){for(let t=0;t<8;t++)e[t]^=i[t];teaEncrypt(e,t,r,s);for(let e=0;e<8;e++)r[s+e]^=A[e];for(let t=0;t<8;t++)A[t]=e[t]}function teaEncrypt(e,t,A,i){let r=readUint32(e,0),s=readUint32(e,4);const n=[];for(let e=0;e<4;e++)n[e]=readUint32(t,4*e);let a=0;for(let e=0;e<ROUNDS;e++)a+=DELTA,a>>>=0,r+=(s<<4)+n[0]^s+a^(s>>>5)+n[1],r>>>=0,s+=(r<<4)+n[2]^r+a^(r>>>5)+n[3],s>>>=0;writUint32(A,r,i),writUint32(A,s,i+4)}var getEnv=function(){return new URLSearchParams(location.search).get("trtc_env")||""},isOverseaSdkAppId=e=>Number(e)<14e8,getLoggerUrl=function(e,t){let A;A=loggerProxy||(isOverseaSdkAppId(e)?LOGGER_DOMAIN_OVERSEA:LOGGER_DOMAIN);return`${A}/v5/AVQualityReportSvc/C2S?random=${Math.floor(Math.random()*2**31)}&sdkappid=${e}&cmdtype=${t}`},networkType="unknown";function getNetworkType(){if("unknown"!==networkType)return networkType;const{userAgent:e,connection:t}=navigator;let A=(e.match(/NetType\/\S+/)||[])[0]||"";A=A.toLowerCase().replace("nettype/",""),"3gnet"===A&&(A="3g");const i=t&&t.type&&t.type.toLowerCase();let r=t&&t.effectiveType&&t.effectiveType.toLowerCase();return"slow-2"===r&&(r="2g"),i&&(networkType=convertNetworkType(i,r)),networkType}function convertNetworkType(e,t){if(NETWORK_TYPE[e])return e;switch(e){case"cellular":case"wimax":return t||"unknown";case"ethernet":return"wired";default:return"unknown"}}function setNetworkType(e){networkType=convertNetworkType(e)}function getNumNetworkType(){return NETWORK_TYPE[getNetworkType()]}function copyProperties(e,t){for(const A of Reflect.ownKeys(t))if("constructor"!==A&&"prototype"!==A&&"name"!==A){const i=Object.getOwnPropertyDescriptor(t,A)||"";Object.defineProperty(e,A,i)}return e}function bytes2ms(e,t=48e3){return samples2ms(e/4,t)}function samples2ms(e,t=48e3){return 1e3*e/t}function ms2bytes(e,t=48e3){return 4*ms2samples(e,t)}function ms2samples(e,t=48e3){return e*t/1e3}var glog="undefined"!=typeof window&&"function"==typeof window.glog?window.glog:()=>{},isLangChinese=()=>{let e=navigator.language;return e=e.substring(0,2),"zh"===e},isPlainObject=function(e){if(!e||"object"!=typeof e||"[object Object]"!=Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);if(null===t)return!0;const A=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return"function"==typeof A&&A instanceof A&&Function.prototype.toString.call(A)===Function.prototype.toString.call(Object)};function fibonacci(e,t=1,A=1){return e<=1?A:fibonacci(e-1,A,t+A)}function getReconnectionTimeout(e){return e>8?3e4:1e3*fibonacci(e)}function getValueType(e){return Reflect.apply(Object.prototype.toString,e,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var isFunction=e=>"function"==typeof e,isUndefined=e=>void 0===e,isString=e=>"string"==typeof e,isNumber=e=>"number"==typeof e,isBoolean=e=>"boolean"==typeof e,isObject=e=>"object"===getValueType(e),isArray=e=>"array"===getValueType(e),isMediaStreamTrack=e=>getValueType(e)==="MediaStreamTrack".toLowerCase(),isRemoteTrack=e=>e.isRemote,isPromise=e=>"promise"===getValueType(e),isConstructor=e=>isFunction(e)&&e.prototype.constructor===e,getConstructorName=e=>isConstructor(e)?e.prototype.constructor.name:"",isAudioWorkletSupported="undefined"!=typeof AudioWorkletNode,isSetSinkIdSupported="setSinkId"in HTMLMediaElement.prototype;function promiseAny(e){return new Promise(((t,A)=>{const i=[];e.forEach((r=>{r.then(t).catch((t=>{i.push(t),i.length===e.length&&A(i)}))}))}))}function performanceNow(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var fillZero=e=>+e<10?`0${e}`:e,getInternalVersion=e=>{const t=e.match(/^\d+\.\d+\.\d+/)[0];if(!t)return e;const A=t.split("."),i=fillZero(A[1])+fillZero(A[2]);A[1]-15>0&&(A[1]="15"),A[2]-15>0&&(A[2]="15");return`${A.join(".")}.${i}`},has=Object.prototype.hasOwnProperty,{toString:toString}=Object.prototype;function isEmpty(e){if(null==e)return!0;if("boolean"==typeof e)return!1;if("number"==typeof e)return 0===e;if("string"==typeof e)return 0===e.length;if("function"==typeof e)return 0===e.length;if(Array.isArray(e))return 0===e.length;if(e instanceof Error)return""===e.message;if(isPlainObject(e))switch(Object.prototype.toString.call(e)){case"[object File]":case"[object Map]":case"[object Set]":return 0===e.size;case"[object Object]":for(const t in e)if(has.call(e,t))return!1;return!0}return!1}function getMuteStateFromFlag(e,t){return{userId:t,hasAudio:!!(e&AUDIO_STAT_BIT),hasVideo:!!(e&VIDEO_STAT_BIT),hasAuxiliary:!!(e&AUX_STAT_BIT),hasSmall:!!(e&SMALL_STAT_BIT),audioMuted:!!(e&AUDIO_MUTE_BIT),videoMuted:!!(e&VIDEO_MUTE_BIT),audioAvailable:!(!(e&AUDIO_STAT_BIT)||e&AUDIO_MUTE_BIT),videoAvailable:!(!(e&VIDEO_STAT_BIT)||e&VIDEO_MUTE_BIT)}}function getTurnServer(e){const t={urls:e.url.startsWith("turn:")||e.url.startsWith("turns:")?e.url:`turn:${e.url}`};return isUndefined(e.username)||isUndefined(e.credential)||(t.username=e.username,t.credential=e.credential,t.credentialType="password",isUndefined(e.credentialType)||(t.credentialType=e.credentialType)),t}function ipv4ToUint32(e,t=!0){if(!isString(e))return 0;const A=e.split(".");return t?(Number(A[0])<<24|Number(A[1])<<16|Number(A[2])<<8|Number(A[3]))>>>0:(Number(A[3])<<24|Number(A[2])<<16|Number(A[1])<<8|Number(A[0]))>>>0}var deepMerge=function(e,t,A,i){if(!isObject(e)||!isObject(t))return 0;let r=0;const s=Object.keys(t);let n;for(let a=0,o=s.length;a<o;a++)if(n=s[a],!(isUndefined(t[n])||A&&A.includes(n)))if(isObject(e[n])&&isObject(t[n]))r+=deepMerge(e[n],t[n],A,i);else{if(i&&i.includes(t[n]))continue;e[n]!==t[n]&&(e[n]=deepClone(t[n]),r+=1)}return r};function deepClone(e){if(isArray(e)){const t=[];return e.forEach(((e,A)=>{t[A]=deepClone(e)})),t}if(isObject(e)){const t={};return Object.keys(e).forEach((A=>{t[A]=deepClone(e[A])})),t}return e}var getViewListFromView=e=>{let t=[];if(isArray(e))t=[...e];else if(isString(e)){const A=document.getElementById(e);A&&t.push(A)}else e&&t.push(e);return t},getContainerFromElement=e=>isString(e)?document.getElementById(e):e,formater=e=>{const t=e=>e<10?`0${e}`:`${e}`;return`${e.getFullYear()}/${e.getMonth()+1}/${e.getDate()} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`},formatedTime=()=>formater(new Date);function stringify(e,{keysToInclude:t,keysToExclude:A}){try{if(isArray(e))return`[${e.map((e=>stringify(e,{keysToInclude:t,keysToExclude:A}))).join(",")}]`;if(!isPlainObject(e)||!isArray(t)&&!isArray(A))return JSON.stringify(e);const i={},r=new Set(t),s=new Set(A);return Object.keys(e).forEach((n=>{(0===s.size&&r.has(n)||0===r.size&&!s.has(n))&&(i[n]=isPlainObject(e[n])||isArray(e[n])?JSON.parse(stringify(e[n],{keysToExclude:A,keysToInclude:t})):e[n])})),JSON.stringify(i)}catch(e){return"{}"}}function stringifyIncludeValue(e,t=!1){const A=[];return Object.keys(e).forEach((i=>{t===e[i]&&A.push(i)})),stringify(e,{keysToInclude:A})}function getStringByteLength(e){return e.replace(/[\u4e00-\u9fa5]/g,"aa").length}var isPortrait=()=>{var e,t,A,i;return(null==(e=window.screen)?void 0:e.orientation)?!!(null==(i=null==(A=null==(t=window.screen)?void 0:t.orientation)?void 0:A.type)?void 0:i.includes("portrait")):0===window.orientation||180===window.orientation},loadImage=async e=>new Promise(((t,A)=>{let i;if(isString(e))i=new Image,i.crossOrigin="anonymous",i.src=e;else if(i=e,i.complete)return void t(i);i.onload=()=>t(i),i.onerror=()=>{A(new rtc_error_default({code:error_code_default.INVALID_PARAMETER,message:`load image failed, url: ${e}`}))}})),getUint32Version=e=>{const t=e.split(".");return+t[0]<<24|+t[1]<<16|+t[2]<<8|+t[3]},convertObjectNumberToInt=e=>(Object.keys(e).forEach((t=>{isNumber(e[t])&&(t.startsWith("uint")||t.startsWith("int"))?e[t]=Math.floor(e[t]):(isPlainObject(e[t])||isArray(e[t]))&&convertObjectNumberToInt(e[t])})),e);function delay(e,t){return new Promise((A=>{const i=setTimeout(A,e);t&&t(i)}))}function throttlePromise(e,t){let A=null;return function(...i){return A||(A=e.apply(t||this,i),A.finally((()=>A=null)),A)}}function normalizeUrl(e){return e.replace(/(^|[^:])\/{2,}/g,"$1/")}function getMediaStreamTrackInfo(e){var t;try{const{width:A,height:i,frameRate:r,sampleRate:s,sampleSize:n,channelCount:a}=null==(t=e.getSettings)?void 0:t.call(e),o=e.kind===NAME.AUDIO?`${s}x${n}@${a}`:`${A}x${i}@${r}`,c=e.stats?` stats: ${JSON.stringify(e.stats).replaceAll('"',"")}`:"";return`${e.id} ${e.readyState} muted:${e.muted} ${e.kind} ${e.label} ${o}${c}`}catch(e){return""}}function calculateScaleResolutionDownNumber(e,t){return e.width*e.height==t.width*t.height?1:isPortrait()&&t.width>t.height&&e.height>t.width?Math.max(e.width/t.height,e.height/t.width,1):Math.max(e.width/t.width,e.height/t.height,1)}function isRotate90Or270(e){return 90===e||270===e}async function loadVideo(e){return new Promise(((t,A)=>{const i=document.createElement("video");i.crossOrigin="anonymous",i.src=e,i.muted=!0,i.loop=!0,i.playsInline=!0,i.play().then((()=>t(i))),i.onerror=()=>{A(i.error)}}))}function deepCloneBasic(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);if(Array.isArray(e)){const A=[];return t.set(e,A),e.forEach(((e,i)=>{A[i]=deepCloneBasic(e,t)})),A}if("[object Object]"===Object.prototype.toString.call(e)){const A={};return t.set(e,A),Reflect.ownKeys(e).forEach((i=>{A[i]=deepCloneBasic(e[i],t)})),A}return e}var REPORT_TYPE=(e=>(e[e.END_REPORT=2001]="END_REPORT",e[e.LOG=2002]="LOG",e[e.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",e))(REPORT_TYPE||{});function buildProtocolBufferJSON(e,t,A,i){let r={data:e,random:Math.floor(Math.random()*2**31),sdkAppId:A};return isUndefined(i)||(r=__spreadProps(__spreadValues({},r),{gzip:+i})),{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(r)}}}function buildSSOPackage(e,t,A,i){try{const r=buildProtocolBufferJSON(e,t,A,i);return encodeSSOPackage(encode(r),A)}catch(t){return JSON.stringify(e)}}function getBusibuff(e){const t=decodeSSOPackage(e);return null==t?void 0:t.busiBuff}function decodeSSOPackage(e){try{const t={};let A=0;t.totalLength=readUint32(e,A),A+=4,t.version=readUint32(e,A),A+=4,t.encryption=readUint8(e,A),A+=1,t.uinType=readUint8(e,A),A+=1,t.uinLength=readUint32(e,A),A+=4,t.uin=t.uinLength>4?readString(e,A,t.uinLength-4):"",A+=t.uinLength-4;const i=e.slice(A);if(2===t.encryption){const r=new Uint8Array(16).fill(0);e=decrypt(i,r),t.decrypted=!0,A=0}else e=i,A=0;return t.rspHeadLength=readUint32(e,A),A+=4,t.seqNo=readUint32(e,A),A+=4,t.retCode=readUint32(e,A),A+=4,t.retStrLength=readUint32(e,A),A+=4,t.retStr=t.retStrLength?readString(e,A,t.retStrLength-4):"",A+=t.retStrLength-4,t.serviceCmdLength=readUint32(e,A),A+=4,t.serviceCmd=t.serviceCmdLength?readString(e,A,t.serviceCmdLength-4):"",A+=t.serviceCmdLength-4,t.cookieLength=readUint32(e,A),A+=4,t.cookie=t.cookieLength?readString(e,A,t.cookieLength-4):"",A+=t.cookieLength-4,t.flag=readUint32(e,A),A+=4,t.busiBuffLength=readUint32(e,A),A+=4,t.busiBuff=t.busiBuffLength?readString(e,A,t.busiBuffLength-4):"",A+=t.busiBuffLength-4,t}catch(e){}}function teaDecryptBlock(e,t){let A=e[0]<<24|e[1]<<16|e[2]<<8|e[3],i=e[4]<<24|e[5]<<16|e[6]<<8|e[7];A>>>=0,i>>>=0;let r=DELTA*ROUNDS>>>0;for(let e=0;e<ROUNDS;e++)i-=(A<<LOG_ROUNDS)+t[2]^A+r^(A>>>5)+t[3],i>>>=0,A-=(i<<LOG_ROUNDS)+t[0]^i+r^(i>>>5)+t[1],A>>>=0,r-=DELTA,r>>>=0;return new Uint8Array([A>>>24&255,A>>>16&255,A>>>8&255,255&A,i>>>24&255,i>>>16&255,i>>>8&255,255&i])}function decrypt(e,t){let A=0;const i=new Uint8Array(8).fill(0);let r=teaDecryptBlock(new Uint8Array(e.slice(0,8)),t);const s=7&r[0],n=e.length-1-s-SALT_LEN-ZERO_LEN,a=new Uint8Array(n);let o=0,c=i,d=e.slice(0,8);A=8;let I=1;I+=s;for(let i=1;i<=SALT_LEN;)if(I<8)I++,i++;else if(8===I){const i=decryptNextBlock(e,A,c,d,r,t);c=i.ivPreCrypt,d=i.ivCurCrypt,r=i.debiBuf,A=i.bufPos,I=0}let l=n;for(;l>0;)if(I<8)a[o++]=r[I]^c[I],I++,l--;else if(8===I){const i=decryptNextBlock(e,A,c,d,r,t);c=i.ivPreCrypt,d=i.ivCurCrypt,r=i.debiBuf,A=i.bufPos,I=0}for(let i=1;i<=ZERO_LEN;)if(I<8)r[I],c[I],I++,i++;else if(8===I){if(A>=e.length)break;const i=decryptNextBlock(e,A,c,d,r,t);if(!i.success)break;c=i.ivPreCrypt,d=i.ivCurCrypt,r=i.debiBuf,A=i.bufPos,I=0}return a}function decryptNextBlock(e,t,A,i,r,s){if(t+8>e.length)return{success:!1};const n=new Uint8Array(i),a=e.slice(t,t+8),o=new Uint8Array(8);for(let e=0;e<8;e++)o[e]=r[e]^a[e];return{success:!0,ivPreCrypt:n,ivCurCrypt:a,debiBuf:teaDecryptBlock(o,s),bufPos:t+8}}function http({url:e,body:t,method:A="POST",timeout:i,priority:r}){return new Promise(((s,n)=>{if("fetch"in window)return fetch(e,{method:A,body:t,priority:r}).then((e=>e.clone().json().then((e=>({data:e})),(()=>e.arrayBuffer().then((e=>({data:getBusibuff(new Uint8Array(e))||e}))))))).then(s,n);const a=new XMLHttpRequest;a.onreadystatechange=()=>{if(4===a.readyState)if(a.status>=200&&a.status<300)try{const e=JSON.parse(a.response);s({data:e})}catch(e){s({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=i||5e3,a.open(A,e,!0),a.send(t)}))}var has2=Object.prototype.hasOwnProperty,isFunction2=e=>"function"==typeof e,isUndefined2=e=>void 0===e,isBoolean2=e=>"boolean"==typeof e,isRemoteTrack2=e=>e.isRemote,isPlainObject2=function(e){if(!e||"object"!=typeof e||"[object Object]"!=Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);if(null===t)return!0;const A=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return"function"==typeof A&&A instanceof A&&Function.prototype.toString.call(A)===Function.prototype.toString.call(Object)};function isEmpty2(e){if(null==e)return!0;if("boolean"==typeof e)return!1;if("number"==typeof e)return 0===e;if("string"==typeof e)return 0===e.length;if("function"==typeof e)return 0===e.length;if(Array.isArray(e))return 0===e.length;if(e instanceof Error)return""===e.message;if(isPlainObject2(e))switch(Object.prototype.toString.call(e)){case"[object File]":case"[object Map]":case"[object Set]":return 0===e.size;case"[object Object]":for(const t in e)if(has2.call(e,t))return!1;return!0}return!1}var RETRY_STATE_NOT_START=0,RETRY_STATE_STARTED=1,RETRY_STATE_STOPPED=2;function promiseRetry({retryFunction:e,settings:t,onError:A,onRetrying:i,onRetryFailed:r,onRetrySuccess:s,context:n}){return function(...a){const{retries:o=5,timeout:c=1e3}=t;let d=0,I=-1,l=RETRY_STATE_NOT_START;const g=async(t,u)=>{const E=n||this;try{const A=await e.apply(E,a);d>0&&s&&s.call(this,d),d=0,t(A)}catch(e){const s=()=>{clearTimeout(I),d=0,l=RETRY_STATE_STOPPED,u(e)},n=()=>{l!==RETRY_STATE_STOPPED&&d<(isFunction2(o)?o():o)?(d++,l=RETRY_STATE_STARTED,isFunction2(i)&&i.call(this,d,s),I=window.setTimeout((()=>{I=-1,g(t,u)}),isFunction2(c)?c(d):c)):(s(),isFunction2(r)&&r.call(this,e))};isFunction2(A)?A.call(this,{error:e,retry:n,reject:u,retryFuncArgs:a,retriedCount:d}):n()}};return new Promise(g)}}var retry_default=promiseRetry,Logger=class{constructor(e){__publicField(this,"userId"),__publicField(this,"remoteUserId"),__publicField(this,"id"),__publicField(this,"sdkAppId"),__publicField(this,"type"),__publicField(this,"isLocal"),this.id=e.id,this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.remoteUserId=e.remoteUserId,this.isLocal=!isBoolean2(e.isLocal)||e.isLocal,this.type=this.isLocal?"":e.type}createChild(e){return Object.setPrototypeOf(e,this)}setUserId(e){this.userId=e}setSdkAppId(e){this.sdkAppId=e}log(e,t){const A=this.isLocal?this.userId:this.remoteUserId;t.unshift(`[${this.isLocal?"↑":"↓"}${this.type&&"main"!==this.type?"*":""}${this.id}${A?`|${A}`:""}]`),logger_manager_default.log(e,t,isUndefined2(this.userId)||isEmpty2(this.userId),this.userId,this.sdkAppId)}info(...e){this.log(2,e)}debug(...e){this.log(1,e)}warn(...e){this.log(3,e)}error(...e){this.log(4,e)}},import_eventemitter3=__toESM(require_eventemitter3(),1),innerEmitter=new import_eventemitter3.default,inner_emitter_default=innerEmitter,INNER_EVENT=(e=>(e.ROOM_DESTROY="1",e.JOIN_START="21",e.JOIN_SCHEDULE_SUCCESS="22",e.JOIN_SIGNAL_CONNECTION_START="23",e.JOIN_SIGNAL_CONNECTION_END="24",e.JOIN_SEND_CMD="25",e.JOIN_RECEIVED_CMD_RES="26",e.JOIN_SUCCESS="27",e.JOIN_FAILED="28",e.LEAVE_START="51",e.LEAVE_SEND_CMD="52",e.LEAVE_SUCCESS="53",e.PUBLISH_START="61",e.SEND_FIRST_VIDEO_FRAME="62",e.PUBLISH_FAILED="63",e.SUBSCRIBE_START="81",e.SUBSCRIBE_SUCCESS="82",e.SUBSCRIBE_FAILED="84",e.UNSUBSCRIBE_SUCCESS="83",e.LOCAL_TRACK_CAPTURE_START="101",e.LOCAL_TRACK_CAPTURE_SUCCESS="102",e.LOCAL_TRACK_CAPTURE_FAILED="103",e.LOCAL_TRACK_PUBLISHED="104",e.LOCAL_TRACK_UNPUBLISHED="105",e.LOCAL_TRACK_REPLACED="106",e.SWITCH_DEVICE_SUCCESS="107",e.TRACK_MUTED="108",e.TRACK_UNMUTED="109",e.REMOTE_TRACK_SUBSCRIBED="110",e.REMOTE_TRACK_UNSUBSCRIBED="111",e.LOCAL_TRACK_RECAPTURE="112",e.LOCAL_AUDIO_STARTED="113",e.LOCAL_AUDIO_STOPPED="114",e.REMOTE_AUDIO_STARTED="115",e.REMOTE_AUDIO_STOPPED="116",e.PLAY_TRACK_START="151",e.PLAYER_STATE_CHANGED="152",e.VIDEO_LOADED_DATA="153",e.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",e.SIGNAL_CONNECTION_STATE_CHANGED="201",e.PEER_CONNECTION_STATE_CHANGED="202",e.SINGLE_CONNECTION_STAT="203",e.SPC_RECONNECTED="204",e.HEARTBEAT_REPORT="251",e.RECEIVED_PUBLISHED_USER_LIST="252",e.REMOTE_PUBLISH_STATE_CHANGED="253",e.AUDIO_LEVEL_INTERVAL="260",e.NETWORK_QUALITY="261",e.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",e.QUALITY_LIMITATION_CHANGED="263",e.LOG="264",e.AUDIO_PROCESSOR_DEBUG="265",e.SSO="266",e.SWITCH_ROOM_START="401",e.SWITCH_ROOM_SUCCESS="407",e.SWITCH_ROOM_FAILED="408",e))(INNER_EVENT||{}),inner_event_default=INNER_EVENT,LOG_PRE_TAG="%cTRTC%c%s",LOG_PRE_TAG_STYLE="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",LOG_STYLE="display: inline",_LoggerManager=class e{constructor(){__publicField(this,"_isEnableUploadLog",!0),__publicField(this,"_localJoinedUser",new Map),__publicField(this,"_queue",[]),__publicField(this,"_timeoutId",-1),__publicField(this,"_logLevel",1),__publicField(this,"_logLevelToUpload",2),__publicField(this,"_sso",!1),IS_WORKER||IS_WORKLET||(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&-1!==this._timeoutId}installEvents(){inner_emitter_default.on(inner_event_default.JOIN_SCHEDULE_SUCCESS,(({schedule:e})=>{var t,A;(null==(t=null==e?void 0:e.config)?void 0:t.logLevelToUpload)&&LOG_LEVEL[e.config.logLevelToUpload]&&(this._logLevelToUpload=e.config.logLevelToUpload),(null==(A=null==e?void 0:e.config)?void 0:A.sso)&&(this._sso=!0)})),inner_emitter_default.on(inner_event_default.JOIN_SUCCESS,(({room:e})=>{this.addJoinedUser({userId:e.userId,sdkAppId:e.sdkAppId}),this.startUpload()})),inner_emitter_default.once(inner_event_default.JOIN_FAILED,(()=>{this.startUpload()})),inner_emitter_default.on(inner_event_default.LEAVE_SUCCESS,(({room:e})=>{this.deleteJoinedUser(e.userId)}))}startUpload(){-1===this._timeoutId&&this.uploadInterval()}addJoinedUser(e){this._localJoinedUser.set(e.userId,e),this.startUpload()}deleteJoinedUser(e){this._localJoinedUser.delete(e)}uploadInterval(){this.upload().catch((()=>{})),this._timeoutId=window.setTimeout((()=>this.uploadInterval()),5e3)}getLogsToUpload(){const e={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&0===this._localJoinedUser.size)return e;let t=0;for(;t<this._queue.length&&50!==t;t++){const A=this._queue[t];if(A.forAllJoinedClients)this._localJoinedUser.forEach((({userId:t,sdkAppId:i})=>{e.map.has(t)?e.map.get(t).logs.push(A):e.map.set(t,{userId:t,sdkAppId:i,logs:[A]})}));else if(isString(A.userId)&&isNumber(A.sdkAppId)){const{userId:t,sdkAppId:i}=A;e.map.has(t)?e.map.get(t).logs.push(A):e.map.set(t,{userId:t,sdkAppId:i,logs:[A]})}}return e.map.size>0&&(e.splicedQueue=this._queue.splice(0,t)),e}async upload(){if(0===this._queue.length||!this._isEnableUploadLog)return;const{map:e,splicedQueue:t}=this.getLogsToUpload();if(0===e.size)return;try{const t=[...e.values()];for(let e=0;e<t.length;e++){const{userId:A,sdkAppId:i,logs:r}=t[e],s={timestamp:getTimestamp(),sdkAppId:String(i),userId:A,version:version,log:r.map((e=>e.log)).join("\n")},n=this._sso?buildSSOPackage(s,2002,i):JSON.stringify(s);await this.uploadLogWithRetry(n,i,n instanceof Uint8Array),r.forEach((e=>e.uploaded=!0))}}catch(e){}const A=t.filter((e=>!e.uploaded));A.length>0&&(this._queue=A.concat(this._queue))}uploadLogWithRetry(e,t,A){return retry_default({retryFunction:()=>http({url:getLoggerUrl(t,LOGGER_CMD_TYPE.LOG),body:e,timeout:5e3,priority:"low"}).then((e=>{A&&inner_emitter_default.emit(inner_event_default.SSO,{result:"ok"===e.data})})),settings:{retries:3,timeout:2e3},onError:({retry:e})=>{e()}})()}getPrefix(e){const t=new Date;return t.setTime(getCurrentTime()),`[${formatDate(t)}] <${LOG_LEVEL[e]}>`}getLogLevel(){return this._logLevel}setLogLevel(e){isUndefined(LOG_LEVEL[e])||(this._logLevel!==e&&this.info("setLogLevel",e),this._logLevel=e)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(e){if(isString(e))return e;try{return e instanceof Error?e.toString():JSON.stringify(e)}catch(e){return""}}log(t,A,i=!0,r,s){var n;A.unshift(this.getPrefix(t));const a={log:A.reduce(((e,t)=>`${e} ${this.logChunkToString(t)}`.trim()),""),level:t,userId:r,sdkAppId:s,forAllJoinedClients:i};if(inner_emitter_default.emit(inner_event_default.LOG,{log:a}),this._isEnableUploadLog&&t>=this._logLevelToUpload&&this._queue.push(a),t<this._logLevel)return;const o=(null==(n=LOG_LEVEL[t])?void 0:n.toLowerCase())||"info";e.PRINT_LOG_TAG?console[o](LOG_PRE_TAG,LOG_PRE_TAG_STYLE,LOG_STYLE,...A):console[o](...A)}debug(...e){this.log(1,e)}info(...e){this.log(2,e)}warn(...e){this.log(3,e)}error(...e){this.log(4,e)}createLogger(e){return new Logger(e)}checkURLParam(){const e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;LOG_LEVEL[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}};__publicField(_LoggerManager,"PRINT_LOG_TAG",!(IS_IOS||IS_ANDROID||IS_HEADLESS_CHROME));var LoggerManager=_LoggerManager,logger_manager_default=new LoggerManager,generateUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))},uuid_default=generateUUID,Storage=class{constructor(){__publicField(this,"_prefix","TRTC"),__publicField(this,"_queue",new Map)}getRealKey(e){return`${this._prefix}_${e}`}checkStorage(){if(!isLocalStorageEnabled())return;setInterval(this.doFlush.bind(this),2e4);Object.keys(localStorage).filter((e=>{if(e.startsWith(this._prefix))try{const t=localStorage.getItem(e);if(!t)return!1;const A=JSON.parse(t);if(A&&A.expiresIn<Date.now())return!0}catch(e){return!1}return!1})).forEach((e=>localStorage.removeItem(e)))}doFlush(){if(isLocalStorageEnabled())try{for(const[e,t]of this._queue)localStorage.setItem(e,JSON.stringify(t))}catch(e){logger_manager_default.warn(e)}}getItem(e){if(!isLocalStorageEnabled())return null;try{const t=localStorage.getItem(this.getRealKey(e));if(!t)return null;const A=JSON.parse(t);return A&&A.expiresIn>=Date.now()?A.value:null}catch(e){logger_manager_default.warn(e)}}setItem(e,t){if(isLocalStorageEnabled())try{const A={expiresIn:Date.now()+STORAGE_EXPIRES_TIME,value:t};this._queue.set(this.getRealKey(e),A)}catch(e){logger_manager_default.warn(e)}}deleteItem(e){if(!isLocalStorageEnabled())return!1;try{return e=this.getRealKey(e),this._queue.delete(e),localStorage.removeItem(e),!0}catch(e){return logger_manager_default.warn(e),!1}}clear(){if(isLocalStorageEnabled())try{localStorage.clear()}catch(e){logger_manager_default.warn(e)}}},storage_default=new Storage,rtc_detection_exports={};__export(rtc_detection_exports,{HTTPS_API:()=>HTTPS_API,IS_GET_CAPABILITIES_SUPPORTED:()=>IS_GET_CAPABILITIES_SUPPORTED,IS_GET_SETTINGS_SUPPORTED:()=>IS_GET_SETTINGS_SUPPORTED,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED,IS_INSERTABLE_STREAM_SUPPORTED:()=>IS_INSERTABLE_STREAM_SUPPORTED,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>IS_JITTER_BUFFER_TARGET_SUPPORTED,IS_RTC_RTP_SENDER_SUPPORTED:()=>IS_RTC_RTP_SENDER_SUPPORTED,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>IS_SCRIPT_TRANSFORM_SUPPORTED,IS_SEI_SUPPORTED:()=>IS_SEI_SUPPORTED,IS_SPC_SUPPORTED:()=>IS_SPC_SUPPORTED,basis:()=>basis,capabilityCheck:()=>capabilityCheck,checkSystemRequirementsInternal:()=>checkSystemRequirementsInternal,decodeSupportStatus:()=>decodeSupportStatus,encodeSupportStatus:()=>encodeSupportStatus,getBrowserInfo:()=>getBrowserInfo2,getDisplayResolution:()=>getDisplayResolution,isAddTransceiverSupported:()=>isAddTransceiverSupported,isBrowserSupported:()=>isBrowserSupported,isCanvasCaptureStreamAPISupported:()=>isCanvasCaptureStreamAPISupported,isCanvasSmallStreamSupported:()=>isCanvasSmallStreamSupported,isGetReceiversSupported:()=>isGetReceiversSupported,isGetSendersSupported:()=>isGetSendersSupported,isGetTransceiversSupported:()=>isGetTransceiversSupported,isGetUserMediaSupported:()=>isGetUserMediaSupported,isMediaDevicesSupported:()=>isMediaDevicesSupported,isMediaSessionSupported:()=>isMediaSessionSupported,isMediaStreamTrackProcessorSupported:()=>isMediaStreamTrackProcessorSupported,isReplaceTrackSupported:()=>isReplaceTrackSupported,isRequestVideoFrameCallbackSupported:()=>isRequestVideoFrameCallbackSupported,isSIMDSupported:()=>isSIMDSupported,isScaleResolutionDownBySupported:()=>isScaleResolutionDownBySupported,isScreenCaptureApiAvailable:()=>isScreenCaptureApiAvailable,isSelectedCandidatePair:()=>isSelectedCandidatePair,isSetParametersSupported:()=>isSetParametersSupported,isSmallStreamSupported:()=>isSmallStreamSupported,isStopTransceiverSupported:()=>isStopTransceiverSupported,isTRTCSupported:()=>isTRTCSupported,isUnifiedPlanDefault:()=>isUnifiedPlanDefault,isUsedInHttpProtocol:()=>isUsedInHttpProtocol,isWebAudioSupported:()=>isWebAudioSupported,isWebCodecSupported:()=>isWebCodecSupported,isWebCodecsSupported:()=>isWebCodecsSupported,isWebRTCSupported:()=>isWebRTCSupported,isWebTransportSupported:()=>isWebTransportSupported});var ErrorName={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"},ErrorInfo={AVOID_REPEATED_CALL:e=>`previous ${e.name}() is ongoing, please avoid repeated calls.`,INVALID_PARAMETER_REQUIRED:({key:e,rule:t,fnName:A,value:i})=>`'${e||t.name}' is a required param when calling ${A}(), received: ${i}.`,INVALID_PARAMETER_TYPE({key:e,rule:t,fnName:A,value:i}){const r=`${e||t.name}`;let s="";return s=Array.isArray(t.type)?t.type.join("|"):t.type,`'${r}' must be type of ${s} when calling ${A}(), received type: ${getValueType(i)}.`},INVALID_PARAMETER_EMPTY:({key:e,rule:t,fnName:A,value:i})=>`'${e||t.name}' cannot be '${i}' when calling ${A}().`,INVALID_PARAMETER_INSTANCE:({key:e,rule:t,fnName:A,value:i})=>`'${`${e||t.name}`}' must be instanceof ${`${t.instanceOf.name||t.instanceOf}`} when calling ${A}(), received type: ${getValueType(i)}.`,INVALID_PARAMETER_RANGE:({key:e,rule:t,fnName:A,value:i})=>`'${e||t.name}' must be one of ${t.values.join("|")} when calling ${A}(), received: ${i}.`,INVALID_PARAMETER_MIN:({key:e,rule:t,fnName:A,value:i})=>`the min value of ${e||t.name} is ${t.min}, received: ${i}.`,INVALID_PARAMETER_MAX:({key:e,rule:t,fnName:A,value:i})=>`the max value of ${e||t.name} is ${t.max}, received: ${i}.`,API_CALL_TIMEOUT:e=>`${e.commandDesc||e.command} timeout observed.`,SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED:e=>`SignalChannel setup failure: (errorCode: ${e.errorCode}, errorMsg: ${e.errorMsg} }).`,ERROR_MESSAGE(e){let t=`${e.type} failed`;return e.message&&(t=`${t}: ${e.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:e=>`exchange sdp failed ${e.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:e=>`'${e}' must be validate string when useStringRoomId is true.`,INVALID_ROOMID_INTEGER:e=>`'${e}' 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:e,code:t})=>`Failed to join room - ${e} code: ${t}`,REJOIN_ROOM_FAILED:e=>`reJoin room: ${e.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:e=>`duplicate ${e} stream publishing, please unpublish your prev ${e} 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:e,userId:t,streamType:A})=>`failed to subscribe ${t} ${A} stream, reason: ${e}.`,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:e=>`switchRole failed, errCode: ${e.code} errMsg: ${e.message}.`,CLIENT_BANNED:e=>`client was banned because of ${e.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:e=>`startPublishCDNStream failed, errMsg: ${e.message}.`,STOP_PUBLISH_CDN_FAILED:e=>`stopPublishCDNStream failed, errMsg: ${e.message}.`,INVALID_STREAM_ID:e=>`'${e}' 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:e=>`cannot replace ${e.kind} track because stream has not ${e.kind} track`,NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED:e=>`startMixTranscode failed, errMsg: ${e.message}.`,STOP_MIX_TRANSCODE_FAILED:e=>`stopMixTranscode failed, errMsg: ${e.message}.`,MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO:({key:e,rule:t,fnName:A,value:i})=>`'${e||t.name}' cannot be less than 0 when calling ${A}().`,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:e=>`'${e}' 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:e,fnName:t})=>`'${e}' is not found in the document object when calling ${t}().`,INVALID_ELEMENT_ID_TYPE:({key:e,fnName:t,type:A})=>`the element corresponding to '${e}' must be instanceof HTMLElement when calling ${t}(), received: ${A}.`,PLAY_FAILED:e=>`${e.media} play failed, browser exception: ${e.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:e=>`${e}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:e=>`${e.signalResponse} failed, response code is ${e.code} , errMsg: ${e.message}.`,CATCH_HANDLER_ERROR:({name:e,event:t})=>`an error was caught in ${e}.on('${t}', handler), please check your code in 'handler'.`,API_NOT_EXIST:({name:e})=>`experimental api ${e} does not exist.`,REPEAT_JOIN:e=>"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:e})=>`failed to call ${e}() because client was destroyed.`,SEI_NOT_SUPPORT:e=>"not support to sendSEIMessage"+(!1===e?" 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:e,name:t,timesInSecond:A,maxSizeInSecond:i})=>`api ${t} call ${e?"size":"times"} is over ${e?`${i} bytes`:A} in a second.`,CONNECTION_ABORTED:e=>`connection aborted due to: ${e}`,API_CALL_ABORTED(e){let t;return t=e.message.includes("REMOTE_STREAM_NOT_EXIST")?`Subscribe ${e.userId} ${e.streamType} stream aborted, reason: remote user ${e.userId} unpublished stream.`:`API aborted, reason: ${e.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:e=>`'streamType' is required when 'userId' is not '*', calling ${e}()`},getDocUrl=(e,t)=>t?`${BASE_DOC_URL}/${e}/${t}`:`${BASE_DOC_URL}/${e}/index.html`,getErrorDataFromLocalStorage=()=>{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 e=null==localStorage?void 0:localStorage.getItem(TRTC_ERROR_ASSISTANCE);if(e){e=JSON.parse(e);const t=document.createElement("script");t.type="text/javascript",t.text=e.message,document.body.appendChild(t);const A=window.TRTC_ERROR_INFO,i=window.TRTC_ERROR_LINK;return document.body.removeChild(t),{TRTC_ERROR_INFO:A,TRTC_ERROR_LINK:i}}return{}};function generateErrorMessage(e){const{key:t,data:A,link:i,addDocLink:r=!0}=e;let s="",n="",a="";isFunction(ErrorInfo[t])?s=ErrorInfo[t](A):isString(ErrorInfo[t])&&(s=ErrorInfo[t]);const{TRTC_ERROR_INFO:o,TRTC_ERROR_LINK:c}=getErrorDataFromLocalStorage();i?a=`${i.className}.html#${i.fnName}`:c&&c[t]&&(isFunction(c[t])?a=c[t](A):isString(c[t])&&(a=c[t]));let d=s;return isLangChinese()&&(o&&o[t]&&(isFunction(o[t])?n=o[t](A):isString(o[t])&&(n=o[t])),n&&(d=r?`${n}\n请查看文档: ${getDocUrl("zh-cn",a)}\n\n`:`${n}\n\n`,d+=s)),r&&(d+=` \nRefer to: ${getDocUrl("en",a)}\n`),d}var import_sdp_transform=__toESM(require_lib(),1),SUCCESS_KEY=1,FAILED_KEY=0,KVStatManager=class{constructor(e=!0){__publicField(this,"countMap",new Map),__publicField(this,"distributionMap",new Map),__publicField(this,"version"),__publicField(this,"log",logger_manager_default.createLogger({id:"kv"})),e&&(inner_emitter_default.on("102",(({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===NAME.AUDIO?501700:511700,cost:t})})),inner_emitter_default.on("103",(({track:e,error:t})=>{this.addFailedEvent({key:e.kind===NAME.AUDIO?501700:511700,error:t})})),inner_emitter_default.on("266",(({result:e})=>{e?this.addSuccessEvent({key:525700}):this.addFailedEvent({key:525700})})))}getReportData(){const e={msg_sdk_basic_info:{uint32_sdk_version:getUint32Version(this.version||version),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((([e,t])=>({uint32_item_key:e,uint32_item_value:t})))})))};return this.countMap.clear(),this.distributionMap.clear(),e}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(e){const t=+String(e).slice(-3);return t>=700&&t<799}isErrorCodeKey(e){const t=+String(e).slice(-3);return t>=600&&t<699}isCountKey(e){const t=+String(e).slice(-3);return t>=0&&t<599}isNumberKey(e){const t=+String(e).slice(-3);return t>=800&&t<899}addCount({key:e,useUV:t=!1}){this.isCountKey(e)?t&&this.countMap.has(e)||this.countMap.set(e,(this.countMap.get(e)||0)+1):this.log.debug(`${e} is not count key, last 3 number should be 0~599`)}addEnum({key:e,value:t,useUV:A=!0}){var i;if(!this.isEnumKey(e))return this.log.debug(`${e} is not enum key, last 3 number should be 700~799`);if(A&&this.countMap.has(e))return;this.countMap.set(e,(this.countMap.get(e)||0)+1);const r=(null==(i=this.distributionMap)?void 0:i.get(e))||new Map;r.set(t,(r.get(t)||0)+1),this.distributionMap.set(e,r)}addNumber({key:e,value:t,split:A=100,useUV:i=!1,max:r=5e3}){var s;if(!this.isNumberKey(e))return this.log.debug(`${e} is not number key, last 3 number should be 800~899`);if(i&&this.countMap.has(e))return;t>r&&(t=r),this.countMap.set(e,(this.countMap.get(e)||0)+1);const n=(null==(s=this.distributionMap)?void 0:s.get(e))||new Map;let a=0;if(isNumber(A))a=Math.floor(t/A);else for(let e=A.length-1;e>0;e--)if(t>A[e]){a=e;break}n.set(a,(n.get(a)||0)+1),this.distributionMap.set(e,n)}addSuccessEvent({key:e,cost:t,timeKey:A,split:i}){if(e&&(this.addEnum({key:e,value:SUCCESS_KEY,useUV:!1}),t)){const r=+String(e).slice(-3);r<800&&r>=700?this.addNumber({key:A||e+100,value:t,split:i}):A||this.log.debug(`time stat ignored, ${e}`)}}addFailedEvent({key:e,error:t}){if(!e)return;let A=error_code_default.UNKNOWN;t&&(isNumber(t)?A=t:isUndefined(t.extraCode)&&isUndefined(t.code)||(A=t.extraCode||t.code)),this.addEnum({key:e,value:FAILED_KEY,useUV:!1}),this.addEnum({key:e,value:Math.abs(A),useUV:!1})}},KV_REPORT_KEY_VIDEO_ENCODE=(e=>(e[e.ENCODER_TYPE=513700]="ENCODER_TYPE",e[e.ENCDER_HW_SW=513701]="ENCDER_HW_SW",e[e.ENCODE_RESULT=513702]="ENCODE_RESULT",e[e.ENCODE_FAILED_OS=513703]="ENCODE_FAILED_OS",e[e.ENCODE_H264_RESULT=513704]="ENCODE_H264_RESULT",e[e.ENCODE_H265_RESULT=513705]="ENCODE_H265_RESULT",e[e.ENCODE_VP8_RESULT=513706]="ENCODE_VP8_RESULT",e[e.ENCODE_H265_FALLBACK=513e3]="ENCODE_H265_FALLBACK",e))(KV_REPORT_KEY_VIDEO_ENCODE||{}),KV_REPORT_KEY_VIDEO_DECODE=(e=>(e[e.DECODER_TYPE=514700]="DECODER_TYPE",e[e.DECODER_HW_SW=514701]="DECODER_HW_SW",e[e.DECODE_RESULT=514702]="DECODE_RESULT",e[e.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",e[e.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",e[e.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",e[e.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",e[e.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",e[e.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",e[e.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",e[e.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",e[e.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",e[e.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",e[e.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",e[e.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",e[e.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",e))(KV_REPORT_KEY_VIDEO_DECODE||{}),kvStatManager=new KVStatManager(!0),outterKVStatManager=new KVStatManager(!1),kv_stat_manager_default=kvStatManager,checkResult={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}},browserInfoMap=new Map([[IS_FIREFOX,["Firefox",FIREFOX_VERSION]],[IS_EDG,["Edg",EDG_VERSION]],[IS_CHROME,["Chrome",CHROME_VERSION]],[IS_SAFARI,["Safari",SAFARI_VERSION]],[IS_TBS,["TBS",TBS_VERSION]],[IS_XWEB,["XWEB",XWEB_VERSION]],[IS_WECHAT&&IS_IPHONE,["WeChat",WECHAT_VERSION]],[IS_WQQB,["QQ(Win)",WQQB_VERSION]],[IS_MQQB,["QQ(Mobile)",MQQB_VERSION]],[IS_X5MQQB,["QQ(Mobile X5)",MQQB_VERSION]],[IS_MACQQB,["QQ(Mac)",MACQQB_VERSION]],[IS_IPADQQB,["QQ(iPad)",IPADQQB_VERSION]],[IS_MIBROWSER,["MI",MI_VERSION]],[IS_HUAWEIBROWSER,["HW",HUAWEI_VERSION]],[IS_SAMSUNGBROWSER,["Samsung",SAMSUNG_VERSION]],[IS_OPPOBROWSER,["OPPO",OPPO_VERSION]],[IS_VIVOBROWSER,["VIVO",VIVO_VERSION]],[IS_EDGE,["EDGE",EDGE_VERSION]],[IS_SOGOUM,["SogouMobile",SOGOUM_VERSION]],[IS_SOGOU,["Sogou",SOGOU_VERSION]]]);function getBrowserInfo2(){const e=browserInfoMap.get(!0);return{browserName:e?e[0]:"unknown",browserVersion:e?e[1]:"unknown"}}var isBrowserSupported=function(){return!IS_UCBROWSER&&!IS_EDGE&&(!(IS_EDG&&EDG_MAJOR_VERSION<80)&&!(IS_FIREFOX&&FIREFOX_MAJOR_VERSION<56))},isWebCodecsSupported=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every((e=>e in window))},isMediaDevicesSupported=function(){if(!navigator.mediaDevices)return isUsedInHttpProtocol()||logger_manager_default.error(ErrorInfo.NOT_SUPPORTED_MEDIA),!1;const e=["getUserMedia","enumerateDevices"];return e.filter((e=>e in navigator.mediaDevices)).length===e.length},IS_HTTP_WARN_LOGGED=!1;function isUsedInHttpProtocol(){return"http:"===location.protocol&&!IS_LOCAL&&(IS_HTTP_WARN_LOGGED||logger_manager_default.error(generateErrorMessage({key:ErrorName.NOT_SUPPORTED_HTTP})),IS_HTTP_WARN_LOGGED=!0,!0)}var isMediaStreamTrackProcessorSupported=function(){return(null==window?void 0:window.OffscreenCanvas)&&(null==window?void 0:window.MediaStreamTrackProcessor)&&(null==window?void 0:window.MediaStreamTrackGenerator)},encodeSupportStatus=async function(){var e,t,A;if(checkResult.detail.isH264EncodeSupported&&checkResult.detail.isVp8EncodeSupported)return{isH264EncodeSupported:checkResult.detail.isH264EncodeSupported,isVp8EncodeSupported:checkResult.detail.isVp8EncodeSupported,isH265EncodeSupported:checkResult.detail.isH265EncodeSupported};let i,r=!1,s=!1,n=!1;try{const a=new RTCPeerConnection,o=document.createElement(NAME.CANVAS);o.getContext("2d");const c=o.captureStream(0);return a.addTrack(c.getVideoTracks()[0],c),i=await a.createOffer(),r=-1!==(null==(e=i.sdp)?void 0:e.toLowerCase().indexOf("h264")),s=-1!==(null==(t=i.sdp)?void 0:t.toLowerCase().indexOf("vp8")),n=-1!==(null==(A=i.sdp)?void 0:A.toLowerCase().indexOf("h265")),a.close(),{isH264EncodeSupported:r,isVp8EncodeSupported:s,isH265EncodeSupported:n}}catch(e){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1}}},decodeSupportStatus=async function(){var e;if(checkResult.detail.isH264DecodeSupported&&checkResult.detail.isVp8DecodeSupported)return{isH264DecodeSupported:checkResult.detail.isH264DecodeSupported,isVp8DecodeSupported:checkResult.detail.isVp8DecodeSupported,isH265DecodeSupported:checkResult.detail.isH265DecodeSupported};let t,A=!1,i=!1;try{const r=new RTCPeerConnection;isAddTransceiverSupported()?(r.addTransceiver(NAME.VIDEO,{direction:"recvonly"}),t=await r.createOffer()):t=await r.createOffer({offerToReceiveVideo:!0}),-1!==t.sdp.toLowerCase().indexOf("h264")&&(A=!0),-1!==t.sdp.toLowerCase().indexOf("vp8")&&(i=!0);const s=-1!==(null==(e=t.sdp)?void 0:e.toLowerCase().indexOf("h265"));return r.close(),{isH264DecodeSupported:A,isVp8DecodeSupported:i,isH265DecodeSupported:s}}catch(e){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}}},checkSystemRequirementsInternal=throttlePromise((async e=>{const t=Date.now(),A=isWebRTCSupported(),i=isMediaDevicesSupported(),r=isWebCodecsSupported();if(checkResult.detail.isWebRTCSupported=A,checkResult.detail.isMediaDevicesSupported=i,checkResult.detail.isWebCodecsSupported=r,checkResult.detail.isScreenShareSupported=isScreenCaptureApiAvailable(),checkResult.detail.isSmallStreamSupported=isSmallStreamSupported(),37===e)return Object.assign(checkResult.detail,await detectWebCodecsSupported()),checkResult.detail.isBrowserSupported=r,checkResult.result=i&&r,checkResult.result||logger_manager_default.error(`${navigator.userAgent} ${stringifyIncludeValue(checkResult.detail,!1)}`),setCheckResultToStorage(e),kv_stat_manager_default.addNumber({key:523800,value:Date.now()-t}),checkResult;if(checkResult.result&&checkResult.detail.isH264EncodeSupported&&checkResult.detail.isVp8EncodeSupported&&checkResult.detail.isH265EncodeSupported&&checkResult.detail.isH264DecodeSupported&&checkResult.detail.isVp8DecodeSupported&&checkResult.detail.isH265DecodeSupported)return checkResult;const s=isBrowserSupported();let[{isH264EncodeSupported:n,isVp8EncodeSupported:a,isH265EncodeSupported:o},{isH264DecodeSupported:c,isVp8DecodeSupported:d,isH265DecodeSupported:I}]=await Promise.all([encodeSupportStatus(),decodeSupportStatus()]);if(!n||!a){const e=await encodeSupportStatus();logger_manager_default.warn(`detect encode again h264:${n} vp8:${a} result: ${JSON.stringify(e)}`),n=e.isH264EncodeSupported,a=e.isVp8EncodeSupported}if(n&&c&&IS_ANDROID&&IS_CHROMIUM_BASE&&!IS_XWEB&&!IS_TBS){const{encode:e,decode:t}=await detectH264Supported();n=e,c=t}return checkResult.result=s&&A&&i&&(n||a)&&(c||d)&&(o||I),checkResult.detail.isBrowserSupported=s,checkResult.detail.isWebRTCSupported=A,checkResult.detail.isH264EncodeSupported=n,checkResult.detail.isVp8EncodeSupported=a,checkResult.detail.isH265EncodeSupported=o,checkResult.detail.isH264DecodeSupported=c,checkResult.detail.isVp8DecodeSupported=d,checkResult.detail.isH265DecodeSupported=I,checkResult.result||logger_manager_default.error(`${navigator.userAgent} ${stringifyIncludeValue(checkResult.detail,!1)}`),setCheckResultToStorage(),kv_stat_manager_default.addNumber({key:523800,value:Date.now()-t}),checkResult})),isTRTCSupported=function(){return checkResult.result},isScreenCaptureApiAvailable=function(){return!(!navigator.mediaDevices||!navigator.mediaDevices.getDisplayMedia)},detectH264SupportedPromise=null;async function detectH264Supported(){return detectH264SupportedPromise||(detectH264SupportedPromise=new Promise((async e=>{const t={encode:!1,decode:!1};let A=()=>{};try{const i=document.createElement("canvas"),r=i.getContext("2d");i.width=320,i.height=240;const s=setInterval((()=>{r.fillText("test",Math.floor(320*Math.random()),Math.floor(240*Math.random()))}),66);let n=-1,a=-1;A=()=>{clearInterval(n),clearInterval(s),clearTimeout(a),c.close(),d.close(),o.getTracks().forEach((e=>e.stop()))},a=setTimeout((()=>{A(),e(t)}),2e3);const o=i.captureStream(),c=new RTCPeerConnection({}),d=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});c.addEventListener("icecandidate",(e=>d.addIceCandidate(e.candidate))),d.addEventListener("icecandidate",(e=>c.addIceCandidate(e.candidate))),c.addTrack(o.getVideoTracks()[0],o);const I=await c.createOffer();await c.setLocalDescription(I),await d.setRemoteDescription(I);const l=await d.createAnswer(),g=import_sdp_transform.default.parse(l.sdp),u=g.media[0].rtp.findIndex((e=>"H264"===e.codec));g.media[0].rtp=[g.media[0].rtp[u]],g.media[0].fmtp=g.media[0].fmtp.filter((e=>e.payload===g.media[0].rtp[0].payload)),g.media[0].rtcpFb&&(g.media[0].rtcpFb=g.media[0].rtcpFb.filter((e=>e.payload===g.media[0].rtp[0].payload))),l.sdp=import_sdp_transform.default.write(g),await d.setLocalDescription(l),await c.setRemoteDescription(l),n=setInterval((async()=>{t.encode&&t.decode&&(A(),e(t));const[i,r]=await Promise.all([c.getSenders()[0].getStats(),d.getReceivers()[0].getStats()]);t.encode||i.forEach((e=>{"outbound-rtp"===e.type&&e.mediaType===NAME.VIDEO&&e.bytesSent>0&&(t.encode=!0)})),t.decode||r.forEach((e=>{"inbound-rtp"===e.type&&e.mediaType===NAME.VIDEO&&e.bytesReceived>0&&(t.decode=!0)}))}),100)}catch(t){A(),logger_manager_default.warn("detectH264Supported failed",t),e({encode:!0,decode:!0})}})).then((e=>(e.encode||(e.decode=!0),e.encode&&e.decode||logger_manager_default.warn(`detectH264Supported encode: ${e.encode} decode: ${e.decode} ${UA_DATA_STRING}`),e))))}var detectWebCodecsSupportedPromise=null;async function detectWebCodecsSupported(){return detectWebCodecsSupportedPromise||(detectWebCodecsSupportedPromise=new Promise((async e=>{const t={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!isWebCodecsSupported())return void e(t);let A=null,i=null,r=null;const s=()=>{r&&clearTimeout(r),A=null,i=null};try{A=document.createElement("canvas"),i=A.getContext("2d"),A.width=320,A.height=240;let n=0;const a=()=>{i&&A&&(i.fillStyle=`hsl(${n%360}, 50%, 50%)`,i.fillRect(0,0,A.width,A.height),i.fillStyle="white",i.font="20px Arial",i.fillText(`Frame ${n}`,10,30),n++)};r=setTimeout((()=>{s(),e(t)}),5e3);const o=[{type:"h264",encodeConfig:{codec:"avc1.42E01E",width:320,height:240,bitrate:1e6},decodeConfig:{codec:"avc1.42E01E"}},{type:"vp8",encodeConfig:{codec:"vp8",width:320,height:240,bitrate:1e6},decodeConfig:{codec:"vp8"}}];(await Promise.all(o.map((async e=>{const t={type:e.type,encodeSupported:!1,decodeSupported:!1};let i;try{i=await new Promise((async(i,r)=>{const s=new VideoEncoder({output:e=>{i(e),t.encodeSupported=!0},error:e=>{r(e)}});s.configure(e.encodeConfig),a();const n=new VideoFrame(A,{timestamp:0});s.encode(n,{keyFrame:!0}),n.close(),await s.flush(),s.close()}))}catch(A){return logger_manager_default.warn(`${e.type} encoder error:`,A),t}try{await new Promise((async(A,r)=>{const s=new VideoDecoder({output:e=>{t.decodeSupported=!0,A(0),e.close()},error:r});s.configure(e.decodeConfig),s.decode(i),await s.flush(),s.close()}))}catch(t){logger_manager_default.warn(`${e.type} decoder error:`,t)}return t})))).forEach((e=>{"h264"===e.type?(t.isH264EncodeSupported=e.encodeSupported,t.isH264DecodeSupported=e.decodeSupported):"vp8"===e.type&&(t.isVp8EncodeSupported=e.encodeSupported,t.isVp8DecodeSupported=e.decodeSupported)})),s(),e(t)}catch(A){s(),logger_manager_default.warn("detectWebCodecsSupported failed:",A),e(t)}})))}var HTTPS_API=(e,t,A)=>{"http:"!==location.protocol||IS_LOCAL||(e[t]=()=>{throw new rtc_error_default({code:error_code_default.INVALID_OPERATION,message:ErrorInfo.NOT_SUPPORTED_HTTP})})},isSelectedCandidatePair=function(e){return!("candidate-pair"!==e.type||!e.nominated||"in-progress"!==e.state&&"succeeded"!==e.state)&&!(isBoolean(e.selected)&&!e.selected)};function getDisplayResolution(){let e="";if(screen.width){e+=`${screen.width?screen.width*window.devicePixelRatio:""} * ${screen.height?screen.height*window.devicePixelRatio:""}`}return e}function isGetUserMediaSupported(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function isWebAudioSupported(){const e={isSupported:!1},t=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let A=0;A<t.length;A++)if(t[A]in window){e.isSupported=!0;break}return e.isSupported}function isCanvasCaptureStreamAPISupported(){return"captureStream"in HTMLCanvasElement.prototype}function isCanvasSmallStreamSupported(){return!(IS_WECHAT||IS_IOS||CHROME_MAJOR_VERSION&&CHROME_MAJOR_VERSION<63)&&!(!isBrowserSupported()||!isCanvasCaptureStreamAPISupported())}function isScaleResolutionDownBySupported(){return!(CHROME_MAJOR_VERSION<74||IS_EDGE||IOS_MAIN_VERSION<11||FIREFOX_MAJOR_VERSION<46)}function isSmallStreamSupported(){return isCanvasSmallStreamSupported()||isScaleResolutionDownBySupported()}var isUnifiedPlanDefault=function(){if(isUndefined(window.RTCRtpTransceiver)||!isAddTransceiverSupported())return!1;if(!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let e=null,t=!1;try{e=new RTCPeerConnection({sdpSemantics:SDP_SEMANTICS_UNIFIED_PLAN}),e.addTransceiver(NAME.AUDIO),t=!0}catch(e){}return null==e||e.close(),t};function isGetReceiversSupported(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function isGetSendersSupported(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function isGetTransceiversSupported(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function isAddTransceiverSupported(){return!(11===IOS_MAIN_VERSION&&!IS_DESKTOP_IOS_CHROME)&&("RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype)}var IS_SPC_SUPPORTED=!(!isAddTransceiverSupported()||IS_CHROMIUM_BASE&&CHROME_MAJOR_VERSION<86);function isStopTransceiverSupported(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var IS_RTC_RTP_SENDER_SUPPORTED="RTCRtpSender"in window;function isReplaceTrackSupported(){return IS_RTC_RTP_SENDER_SUPPORTED&&"replaceTrack"in window.RTCRtpSender.prototype}function isSetParametersSupported(){return IS_RTC_RTP_SENDER_SUPPORTED&&"setParameters"in window.RTCRtpSender.prototype&&isGetSendersSupported()}var IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,IS_GET_SETTINGS_SUPPORTED=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,IS_GET_CAPABILITIES_SUPPORTED=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,IS_INSERTABLE_STREAM_SUPPORTED=IS_RTC_RTP_SENDER_SUPPORTED&&"createEncodedStreams"in window.RTCRtpSender.prototype&&getChromeMajorVersion()>=86,IS_SCRIPT_TRANSFORM_SUPPORTED="RTCRtpScriptTransform"in window,IS_SEI_SUPPORTED=IS_RTC_RTP_SENDER_SUPPORTED&&(IS_INSERTABLE_STREAM_SUPPORTED||IS_SCRIPT_TRANSFORM_SUPPORTED),isWebRTCSupported=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter((e=>e in window)).length>0};function isWebCodecSupported(){const e={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return isUndefined(window.AudioDecoder)||(e.AudioDecoder=!0),isUndefined(window.AudioEncoder)||(e.AudioEncoder=!0),isUndefined(window.VideoDecoder)||(e.VideoDecoder=!0),isUndefined(window.VideoEncoder)||(e.VideoEncoder=!0),isUndefined(window.ImageDecoder)||(e.ImageDecoder=!0),e}function isMediaSessionSupported(){return"mediaSession"in navigator&&!isUndefined(navigator.mediaSession.setActionHandler)}function isWebTransportSupported(){return!isUndefined(window.WebTransport)}function isSIMDSupported(){return"undefined"!=typeof WebAssembly&&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 basis(){const e={browser:`${browserInfo.name}/${browserInfo.version}`,os:getOSName(),displayResolution:getDisplayResolution(),isScreenShareSupported:isScreenCaptureApiAvailable(),isWebRTCSupported:isWebRTCSupported(),isGetUserMediaSupported:isGetUserMediaSupported(),isWebAudioSupported:isWebAudioSupported(),isWebSocketsSupported:"WebSocket"in window&&2===window.WebSocket.CLOSING,isWebCodecSupported:isWebCodecSupported(),isMediaSessionSupported:isMediaSessionSupported(),isWebTransportSupported:isWebTransportSupported()};return navigator.userAgent.includes("miniProgram")&&(e.browser=`mini/${e.browser}`),e}var CACHE_KEY="checkResult";function setCheckResultToStorage(e=30){storage_default.setItem(CACHE_KEY+e,{ua:navigator.userAgent,checkResult:checkResult})}function capabilityCheck(e){isUsedInHttpProtocol();const t=storage_default.getItem(CACHE_KEY+e);t&&t.ua===navigator.userAgent&&t.checkResult&&checkStorageResultVersion(t.checkResult.detail,checkResult.detail)&&(checkResult=t.checkResult),checkSystemRequirementsInternal(e)}function checkStorageResultVersion(e,t){return!!isObject(e)&&Object.keys(t).every((t=>t in e))}function isRequestVideoFrameCallbackSupported(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var IS_JITTER_BUFFER_TARGET_SUPPORTED="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype,import_eventemitter32=__toESM(require_eventemitter3(),1),instance=Symbol("instance"),abortCtrl=Symbol("abortCtrl"),cacheResult=Symbol("cacheResult"),MiddleState=class{constructor(e,t,A){this.oldState=e,this.newState=t,this.action=A,this.aborted=!1}abort(e){this.aborted=!0,setState.call(e,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},FSMError=class extends Error{constructor(e,t,A){super(t),this.state=e,this.message=t,this.cause=A}};function thenAble(e){return"object"==typeof e&&e&&"then"in e}var stateDiagram=new Map;function ChangeState(e,t,A={}){return(i,r,s)=>{const n=A.action||r;if(!A.context){const A=stateDiagram.get(i)||[];stateDiagram.has(i)||stateDiagram.set(i,A),A.push({from:e,to:t,action:n})}const a=s.value;s.value=function(...i){let r=this;if(A.context&&(r=FSM.get("function"==typeof A.context?A.context.call(this,...i):A.context)),r.state===t)return A.sync?r[cacheResult]:Promise.resolve(r[cacheResult]);r.state instanceof MiddleState&&r.state.action==A.abortAction&&r.state.abort(r);let s=null;Array.isArray(e)?0==e.length?r.state instanceof MiddleState&&r.state.abort(r):"string"==typeof r.state&&e.includes(r.state)||(s=new FSMError(r._state,`${r.name} ${n} to ${t} failed: current state ${r._state} not from ${e.join("|")}`)):e!==r.state&&(s=new FSMError(r._state,`${r.name} ${n} to ${t} failed: current state ${r._state} not from ${e}`));const o=e=>{if(A.fail&&A.fail.call(this,e),A.sync){if(A.ignoreError)return e;throw e}return A.ignoreError?Promise.resolve(e):Promise.reject(e)};if(s)return o(s);const c=r.state,d=new MiddleState(c,t,n);setState.call(r,d);const I=e=>{var i;return r[cacheResult]=e,d.aborted||(setState.call(r,t),null===(i=A.success)||void 0===i||i.call(this,r[cacheResult])),e},l=e=>(setState.call(r,c,e),o(e));try{const e=a.apply(this,i);return thenAble(e)?e.then(I).catch(l):A.sync?I(e):Promise.resolve(I(e))}catch(A){return l(new FSMError(r._state,`${r.name} ${n} from ${e} to ${t} failed: ${A}`,A instanceof Error?A:new Error(String(A))))}}}}var sendDevTools=(()=>{const e="undefined"!=typeof window&&window.__AFSM__,t="undefined"!=typeof importScripts;return e?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:t?(e,t)=>{postMessage({type:e,payload:t})}:()=>{}})();function setState(e,t){const A=this._state;this._state=e;const i=e.toString();e&&this.emit(i,A),this.emit(FSM.STATECHANGED,e,A,t),this.updateDevTools({value:e,old:A,err:t instanceof Error?t.message:String(t)})}var FSM=class e extends import_eventemitter32.default{constructor(t,A,i){super(),this.name=t,this.groupName=A,this._state=e.INIT,t||(t=Date.now().toString(36)),i?Object.setPrototypeOf(this,i):i=Object.getPrototypeOf(this),A||(this.groupName=this.constructor.name);const r=i[instance];r?this.name=r.name+"-"+r.count++:i[instance]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){const e=Object.getPrototypeOf(this),t=stateDiagram.get(e)||[];let A=new Set,i=[],r=[];const s=new Set,n=Object.getPrototypeOf(e);stateDiagram.has(n)&&(n.stateDiagram.forEach((e=>A.add(e))),n.allStates.forEach((e=>s.add(e)))),t.forEach((({from:e,to:t,action:A})=>{"string"==typeof e?i.push({from:e,to:t,action:A}):e.length?e.forEach((e=>{i.push({from:e,to:t,action:A})})):r.push({to:t,action:A})})),i.forEach((({from:e,to:t,action:i})=>{s.add(e),s.add(t),s.add(i+"ing"),A.add(`${e} --\x3e ${i}ing : ${i}`),A.add(`${i}ing --\x3e ${t} : ${i} 🟢`),A.add(`${i}ing --\x3e ${e} : ${i} 🔴`)})),r.forEach((({to:e,action:t})=>{A.add(`${t}ing --\x3e ${e} : ${t} 🟢`),s.forEach((i=>{i!==e&&A.add(`${i} --\x3e ${t}ing : ${t}`)}))}));const a=[...A];return Object.defineProperties(e,{stateDiagram:{value:a},allStates:{value:s}}),a}static get(t){let A;return"string"==typeof t?(A=e.instances.get(t),A||e.instances.set(t,A=new e(t,void 0,Object.create(e.prototype)))):(A=e.instances2.get(t),A||e.instances2.set(t,A=new e(t.constructor.name,void 0,Object.create(e.prototype)))),A}static getState(t){var A;return null===(A=e.get(t))||void 0===A?void 0:A.state}updateDevTools(t={}){sendDevTools(e.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(e){setState.call(this,e)}};FSM.STATECHANGED="stateChanged",FSM.UPDATEAFSM="updateAFSM",FSM.INIT="[*]",FSM.ON="on",FSM.OFF="off",FSM.instances=new Map,FSM.instances2=new WeakMap;var hasWindow="undefined"!=typeof window,requestIC=hasWindow&&window.requestIdleCallback||function(e){const t=Date.now();return setTimeout((()=>{e({didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))})}),1e3)},cancelIC=hasWindow&&window.cancelIdleCallback||function(e){clearTimeout(e)},cancelAnimationFrame2=hasWindow&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),_Timer=class e{static generateTaskID(){return this.currentTaskID++}static run(e,t,A){(null==A?void 0:A.fps)&&(A.delay=A.delay||Number((1e3/A.fps).toFixed(2))),A=__spreadValues(__spreadValues({},"interval"===e?{delay:2e3,count:0,backgroundTask:!0}:"ric"===e?{delay:1e4,count:0}:"raf"===e?{fps:60,delay:16.6,count:0,backgroundTask:!0}:{delay:2e3,count:0,backgroundTask:!0}),A);const i=__spreadProps(__spreadValues({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:e,callback:t},A),{delay:A.delay});return this.taskMap.set(i.taskID,i),this[e](i),i.taskID}static interval(t){return t.intervalID=setInterval((()=>{t.callback(),t.loopCount+=1,e.isBreakLoop(t)}),t.delay)}static intervalInWorker(t){e.sharedWorker||(e.sharedWorker=new Worker(URL.createObjectURL(new Blob(["\n const timers = new Map();\n self.onmessage = function(e) {\n const { taskId, delay, type } = e.data;\n if (type === 'start') {\n timers.set(taskId, setInterval(() => {\n self.postMessage({ type: 'tick', taskId });\n }, delay));\n } else if (type === 'stop') {\n clearInterval(timers.get(taskId));\n timers.delete(taskId);\n }\n };\n "],{type:"application/javascript"}))),e.sharedWorker.onmessage=t=>{var A;if("tick"===t.data.type){const i=e.workerTasks.get(t.data.taskId);i&&(e.isBreakLoop(i)?(null==(A=e.sharedWorker)||A.postMessage({type:"stop",taskId:i.taskID}),e.workerTasks.delete(i.taskID)):(i.callback(),i.loopCount+=1))}}),e.workerTasks.set(t.taskID,t),e.sharedWorker.postMessage({taskId:t.taskID,delay:t.delay,type:"start"})}static timeout(t){const A=()=>{if(t.callback(),t.loopCount+=1,!e.isBreakLoop(t))return t.timeoutID=setTimeout(A,t.delay)};return t.timeoutID=setTimeout(A,t.delay)}static ric(t){let A,i=performanceNow();const r=()=>{if(A=performanceNow()-i,A>=t.delay&&(i=performanceNow()-Math.floor(A%t.delay),t.callback(),t.loopCount+=1),!e.isBreakLoop(t))return t.ricID=requestIC(r,{timeout:t.delay})};return t.ricID=requestIC(r,{timeout:t.delay})}static raf(t){let A,i=performanceNow();const r=()=>{if(document.hidden&&t.backgroundTask){if(A=performanceNow()-i,i=performanceNow(),t.callback(),t.loopCount+=1,e.isBreakLoop(t))return;return t.timeoutID=setTimeout(r,t.delay-Math.floor(A%t.delay))}if(A=performanceNow()-i,A>=t.delay&&(i=performanceNow()-Math.floor(A%t.delay),t.callback(),t.loopCount+=1),!e.isBreakLoop(t))return t.rafID=requestAnimationFrame(r)};if(t.rafID=requestAnimationFrame(r),t.backgroundTask){const e=()=>{if(document.hidden){const e=performanceNow()-i;e>=t.delay?r():t.timeoutID=setTimeout(r,t.delay-e)}};document.addEventListener("visibilitychange",e),t.onVisibilitychange=e,document.hidden&&e()}return t.taskID}static hasTask(e){return this.taskMap.has(e)}static clearTask(e){if(!this.taskMap.has(e))return!0;const{intervalID:t,timeoutID:A,rafID:i,ricID:r,onVisibilitychange:s}=this.taskMap.get(e);return t&&clearInterval(t),A&&clearTimeout(A),i&&cancelAnimationFrame2&&cancelAnimationFrame2(i),r&&cancelIC(r),s&&document.removeEventListener("visibilitychange",s),this.taskMap.delete(e),!0}static isBreakLoop(e){return!this.hasTask(e.taskID)||0!==e.count&&e.loopCount>=e.count&&(this.clearTask(e.taskID),!0)}};__publicField(_Timer,"taskMap",new Map),__publicField(_Timer,"currentTaskID",1),__publicField(_Timer,"sharedWorker",null),__publicField(_Timer,"workerTasks",new Map);var Timer=_Timer,timer_default=Timer,ClientEvent={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:NAME.SEI_MESSAGE,ERROR:"error"},PlayerEvent={LOADED_DATA:NAME.LOADEDDATA,LOADED_META_DATA:NAME.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"},event_manager_exports={};__export(event_manager_exports,{create:()=>create2,remove:()=>remove});var contextMap=new WeakMap;function create2(e,t){contextMap.has(e)||contextMap.set(e,[]);const A=contextMap.get(e),i={add:(e,r)=>("addEventListener"in t?(A.push(t.removeEventListener.bind(t,e,r)),t.addEventListener(e,r)):(A.push(t.off.bind(t,e,r)),t.on(e,r)),i)};return i}function remove(e){const t=contextMap.get(e);t&&(t.forEach((e=>e())),contextMap.delete(e))}var EventLogger=class{constructor(){__publicField(this,"_roomIdMap",new Map),__publicField(this,"_configs"),__publicField(this,"_sso",!1),"undefined"==typeof registerProcessor&&(this._configs={sdkAppId:"",userId:"",version:version,env:ENV_NAME.QCLOUD,browserVersion:browserInfo.name+browserInfo.version,ua:navigator.userAgent}),inner_emitter_default.on("22",(({schedule:e})=>{var t;(null==(t=null==e?void 0:e.config)?void 0:t.sso)&&(this._sso=!0)}))}setConfig({sdkAppId:e,env:t,userId:A,roomId:i}){e!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(e)),this._configs.env=t,this._configs.userId=A,this._roomIdMap.set(A,String(i))}logSuccessEvent(e){!IS_LOCAL&&logger_manager_default.isAbleToUpload&&this._configs.env===ENV_NAME.QCLOUD&&this.uploadEventToKibana(__spreadProps(__spreadValues({},e),{result:"success"}))}logFailedEvent(e){if(IS_LOCAL||!logger_manager_default.isAbleToUpload)return;const{eventType:t,code:A,error:i,userId:r}=e,s={roomId:this._roomIdMap.get(r||this._configs.userId),userId:r,eventType:t,result:"failed",code:A||(null==i?void 0:i.extraCode)||(null==i?void 0:i.code)||error_code_default.UNKNOWN};this._configs.env===ENV_NAME.QCLOUD&&this.uploadEventToKibana(__spreadProps(__spreadValues({},s),{error:i}))}uploadEventToKibana(e){let t=`stat-${e.eventType}-${e.result}`;"delta-join"!==e.eventType&&"delta-leave"!==e.eventType&&"delta-publish"!==e.eventType||(t=`${e.eventType}:${e.delta}`),this.uploadEvent({log:t,userId:e.userId}),"failed"===e.result&&(t=`stat-${e.eventType}-${e.result}-${e.code}`,this.uploadEvent({log:t,userId:e.userId,error:e.error}))}uploadEvent({log:e,userId:t,error:A}){const i={timestamp:getTimestamp(),sdkAppId:this._configs.sdkAppId,userId:t||this._configs.userId,version:version,log:e};A&&(i.errorInfo=A.message,A.stack&&(i.errorInfo+=`\n${A.stack}`));const r=this._sso?buildSSOPackage(i,2002,Number(this._configs.sdkAppId)):JSON.stringify(i);this.sendRequest(getLoggerUrl(this._configs.sdkAppId,LOGGER_CMD_TYPE.LOG),r)}sendRequest(e,t){setTimeout((()=>http({url:e,body:t,priority:"low"}).catch((()=>{}))),2e3)}},event_log_default=new EventLogger,retryingMap=new WeakMap;function addPromiseRetry({settings:e={retries:5,timeout:2e3},onError:t,onRetrying:A,onRetryFailed:i}){return function(r,s,n){const a=retry_default({retryFunction:n.value,settings:e,onError({error:e,retry:A,reject:i,retryFuncArgs:n}){var a;t?t.call(this,e,(()=>{var t;(null==(t=retryingMap.get(r))?void 0:t.has(s))?A():i(e)}),i,n):(null==(a=retryingMap.get(r))?void 0:a.has(s))?A():i(e)},onRetrying(e,t){var i;isFunction2(A)&&A.call(this,e,t),(null==(i=retryingMap.get(r))?void 0:i.has(s))&&(retryingMap.get(r).get(s).stopRetry=t)},onRetryFailed:i});return n.value=function(...e){const t=retryingMap.get(r);return t?t.set(s,{args:e}):retryingMap.set(r,new Map([[s,{args:e}]])),a.apply(this,e).finally((()=>{var e;return null==(e=retryingMap.get(r))?void 0:e.delete(s)}))},n}}var Player=class extends FSM{constructor(e,t){super(e.id,`${t}-player`),this.kind=t,__publicField(this,"id"),__publicField(this,"element",null),__publicField(this,"track"),__publicField(this,"url"),__publicField(this,"attr"),__publicField(this,"mode"),__publicField(this,"muted"),__publicField(this,"_log"),__publicField(this,"_pausedRetryCount"),__publicField(this,"_isElementPlayingFired",!1),__publicField(this,"_interval"),__publicField(this,"_delayDestroyTimeoutId",0),__publicField(this,"_playSuccessResolve"),__publicField(this,"_isReplayByRecreateMediaStreamCalled",!1),__publicField(this,"isInAutoPlayFailedState",!1),this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=PAUSED_RETRY_COUNT,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${t}-player ${this.id}`)}get isPlaying(){var e;return"PLAYING"===this._state&&!1===(null==(e=this.element)?void 0:e.paused)}get isPaused(){var e;return"PAUSED"===this._state||!0===(null==(e=this.element)?void 0:e.paused)}get isStopped(){return"STOPPED"===this._state}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,null!==e&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}async play(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),await new Promise(((e,t)=>{this._playSuccessResolve=e,this.element.play().then(e,t)}))}catch(e){const t=generateErrorMessage({key:ErrorName.PLAY_FAILED,data:{media:this.kind,error:e}});if(this._log.warn(e),t.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new rtc_error_default({code:error_code_default.PLAY_NOT_ALLOWED,message:t})}}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!IS_ANY_SAFARI?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout((()=>this.destroyElement()),3*e)):this.destroyElement(),this.handleStopped(NAME.ENDED),this._interval>0&&timer_default.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&&(null==(e=this.element)||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():IS_IOS_15_1?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){const e=this.handleElementEvent.bind(this);return create2(this.element,this.element).add(NAME.PLAYING,e).add(NAME.ENDED,e).add(NAME.PAUSE,e).add(NAME.ERROR,e).add(NAME.LOADEDDATA,e).add(NAME.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){const t=this.handleTrackEvent.bind(this);null==event_manager_exports||event_manager_exports.create(e,e).add(NAME.ENDED,t).add(NAME.MUTE,t).add(NAME.UNMUTE,t),e.readyState===NAME.ENDED&&this.handleTrackEvent({type:NAME.ENDED}),e.muted&&this.handleTrackEvent({type:NAME.MUTE})}}bindAutoPlayEvent(){inner_emitter_default.on(inner_event_default.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&remove(e)}unbindEvents(){this.element&&remove(this.element),this.unbindTrackEvents(),inner_emitter_default.off(inner_event_default.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case NAME.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(NAME.PLAYING),this._interval&&(timer_default.clearTask(this._interval),this._interval=-1);break;case NAME.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(NAME.ENDED);break;case NAME.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(NAME.PAUSE),IS_IOS&&(this._interval=timer_default.run("timeout",(()=>{this.element&&"PAUSED"===this._state&&this.resume()}),{delay:3e3}));break;case NAME.ERROR:if(this.element&&this.element.error){this.handlePaused(NAME.ERROR);const{code:e,message:t}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${e} message: ${t} userAgent: ${navigator.userAgent}`),event_log_default.uploadEvent({log:`stat-${this.kind}-${KIBANA_EVENT.PLAYER_ERROR}-${e}-${navigator.userAgent}`,error:this.element.error}),IS_HONOR||IS_HUAWEI?this.emit(PlayerEvent.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case NAME.LOADEDDATA:this.kind===NAME.VIDEO&&this.emit(PlayerEvent.LOADED_DATA);break;case NAME.LOADEDMETADATA:this.kind===NAME.VIDEO&&this.emit(PlayerEvent.LOADED_META_DATA)}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then((()=>{this._log.warn("replayByRecreateMediaStream success"),event_log_default.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),kv_stat_manager_default.addSuccessEvent({key:this.kind===NAME.AUDIO?506700:516700})})).catch((()=>{var t;this._log.error("replayByRecreateMediaStream failed"),event_log_default.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),kv_stat_manager_default.addFailedEvent({key:this.kind===NAME.AUDIO?506700:516700,error:null==(t=this.element)?void 0:t.error}),this.emit(PlayerEvent.ERROR,e)}))}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise(((t,A)=>{delay(e).then((()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var e,t,i;this._log.warn(`element onerror ${null==(t=null==(e=this.element)?void 0:e.error)?void 0:t.code} fired after recreated mediaStream`),A(null==(i=this.element)?void 0:i.error)}),delay(5e3).then((()=>{var e,i;this.isPlaying&&!(null==(e=this.element)?void 0:e.error)||A(null==(i=this.element)?void 0:i.error),t()}))}))})).finally((()=>{this.element&&(this.element.onerror=null)}))}async handleTrackEvent(e){switch(e.type){case NAME.ENDED:this.handleStopped(NAME.ENDED);break;case NAME.MUTE:this.handlePaused(NAME.MUTE);break;case NAME.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&(this._log.warn("track unmuted and element is paused, resume"),await this.resume()),!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(NAME.UNMUTE))}}handlePlaying(e){var t;this._log.debug("handlePlaying",e),null==(t=this._playSuccessResolve)||t.call(this,e),this.emit(PlayerEvent.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this._log.debug("handlePaused",e),this.emit(PlayerEvent.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this._log.debug("handleStopped",e),this.emit(PlayerEvent.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};__decorateClass([addPromiseRetry({settings:{retries:2,timeout:0},onError(e,t,A,i){i[0]=(i[0]||1e3)+1e3,t()}})],Player.prototype,"doReplayByRecreateMediaStream",1),__decorateClass([ChangeState([],"PLAYING",{sync:!0})],Player.prototype,"handlePlaying",1),__decorateClass([ChangeState("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],Player.prototype,"handlePaused",1),__decorateClass([ChangeState([],"STOPPED",{sync:!0})],Player.prototype,"handleStopped",1);var AudioContextClass,context,CLASS_PREFIX="trtc_autoplay",CLASS_MASK=`${CLASS_PREFIX}_mask`,CLASS_WRAPPER=`${CLASS_PREFIX}_wrapper`,CLASS_HEADER=`${CLASS_PREFIX}_header`,CLASS_CONTENT=`${CLASS_PREFIX}_content`,CLASS_ACTION_WRAPPER=`${CLASS_PREFIX}_action_wrapper`,CLASS_ACTION_QUESTION=`${CLASS_PREFIX}_question`,CLASS_ACTION_COLLAPSE=`${CLASS_PREFIX}_collapse`,CLASS_ACTION_CONFIRM=`${CLASS_PREFIX}_action_confirm`,CLASS_DETAIL=`${CLASS_PREFIX}_detail`,COLOR_BLUE="#2473E8",DIALOG="dialog",STAT_SHOW_DIALOG=`${DIALOG}-show`,STAT_CLICK_DETAIL=`${DIALOG}-1`,STAT_CLICK_QUESTION=`${DIALOG}-2`,isStyleAdded=!1,isAutoPlayDialogShowing=()=>!!document.querySelector(`.${CLASS_WRAPPER}`),DOC_LINK=`${BASE_DOC_URL}/${isLangChinese()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,OTHER_SOLUTION_LINK=`<br><a href='${DOC_LINK}' target='_blank'>${isLangChinese()?"其他方案?":"Any other solution?"}</a>`,DETAIL_TEXT=""+(isLangChinese()?`浏览器自动播放策略:在用户与页面产生交互(点击、触摸)之前,浏览器禁止播放有声媒体。该弹窗用于帮助用户恢复音视频播放。${OTHER_SOLUTION_LINK}`:`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. ${OTHER_SOLUTION_LINK}`),AutoPlayDialog=class{constructor(){if(__publicField(this,"content","音视频播放被浏览器拦截,请点击“恢复播放”。"),__publicField(this,"_dialogNode",null),__publicField(this,"_bodyPosition",""),__publicField(this,"_showDetail",!1),__publicField(this,"_isCollapseClicked",!1),__publicField(this,"_isQuestionClicked",!1),isLangChinese()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!isStyleAdded){const e=document.createElement("style");e.innerHTML=`.${CLASS_MASK}{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;}.${CLASS_MASK} div:not(.${CLASS_ACTION_WRAPPER}){display:block !important;}.${CLASS_WRAPPER}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${CLASS_WRAPPER} a{color:${COLOR_BLUE};}.${CLASS_HEADER}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${CLASS_CONTENT}{margin:8px 0;}.${CLASS_ACTION_WRAPPER}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${CLASS_ACTION_COLLAPSE}{margin-right:auto;cursor:pointer}.${CLASS_ACTION_QUESTION}{height:100%;line-height:16px;cursor:pointer;}.${CLASS_ACTION_CONFIRM}{margin-left:8px;color:#fff;background:${COLOR_BLUE};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${CLASS_ACTION_CONFIRM}:hover{opacity:0.9;}.${CLASS_ACTION_COLLAPSE},.${CLASS_ACTION_CONFIRM},.${CLASS_CONTENT},.${CLASS_ACTION_QUESTION}{font-size:14px;}@media screen and (max-width:750px){.${CLASS_WRAPPER}{width:80vw;}}`,document.head.appendChild(e),isStyleAdded=!0}this.addDiaLog()}createDiaLog(){const e=document.createElement("template");e.innerHTML=`<div class="${CLASS_MASK}"><div class='${CLASS_WRAPPER}'><div class='${CLASS_HEADER}'>${location.host}</div><div class='${CLASS_CONTENT}'>${this.content}</div><div class='${CLASS_DETAIL}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${DETAIL_TEXT}</div><div class='${CLASS_ACTION_WRAPPER}'></div></div></div>`.trim();const t=document.createElement("button");t.className=CLASS_ACTION_CONFIRM,t.innerText=isLangChinese()?"恢复播放":"Resume",t.onclick=this.onConfirm.bind(this);const A=document.createElement("div");A.className=CLASS_ACTION_QUESTION,A.innerHTML='<?xml version="1.0" encoding="UTF-8"?>\n <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">\n <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"/>\n <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"/>\n <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"/>\n </svg>\n ',A.onclick=this.onQuestionClick.bind(this);const i=document.createElement("div");i.className=CLASS_ACTION_COLLAPSE,i.innerText=""+(isLangChinese()?"详情 >":"Detail >"),i.onclick=this.onCollapseClick.bind(this);const r=e.content.firstChild,s=r.querySelector(`.${CLASS_ACTION_WRAPPER}`);return s.appendChild(i),s.appendChild(A),s.appendChild(t),r}addDiaLog(){isAutoPlayDialogShowing()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${CLASS_WRAPPER}`).onclick=e=>e.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",logger_manager_default.info("show autoplay dialog"),event_log_default.uploadEvent({log:STAT_SHOW_DIALOG}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){logger_manager_default.warn("confirm clicked, try resume stream"),inner_emitter_default.emit(inner_event_default.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){const e=this._dialogNode.querySelector(`.${CLASS_DETAIL}`);e.style.visibility=""+(this._showDetail?"hidden":"visible"),e.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||event_log_default.uploadEvent({log:STAT_CLICK_DETAIL}),this._isCollapseClicked=!0}onQuestionClick(){window.open(DOC_LINK,"_blank"),this._isQuestionClicked||event_log_default.uploadEvent({log:STAT_CLICK_QUESTION}),this._isQuestionClicked=!0}},autoplay_dialog_default=AutoPlayDialog,VideoPlayer=class extends Player{constructor(e){super(e,NAME.VIDEO),__publicField(this,"stat",{}),__publicField(this,"_calculateTimeout",-1),__publicField(this,"viewMirror",!1),__publicField(this,"objectFit"),__publicField(this,"container"),__publicField(this,"canvas"),this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,isUndefined(e.viewMirror)||(this.viewMirror=e.viewMirror),isUndefined(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return"PLAYING"===this._state&&((!this.element||!this.element.paused)&&("live"===(null==(e=this.track)?void 0:e.readyState)&&!this.track.muted))}initializeElement(){var e;const t=document.createElement(NAME.VIDEO);this.track&&2!==this.mode&&(t.srcObject=new MediaStream([this.track])),t.muted=!0,t.setAttribute("id",`video_${this.id}`),t.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),t.setAttribute("autoplay","autoplay"),t.setAttribute("playsinline","playsinline"),this.element=t,null==(e=this.container)||e.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&&(null==(t=this.container)||t.appendChild(this.elementToRender))}bindElementEvents(){const e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(NAME.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(NAME.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var t;super.handleTrackEvent(e),e.type===NAME.MUTE&&(null==(t=this.stat)?void 0:t.fps)&&(this.stat.fps=0)}handleElementEvent(e){var t,A;if(2===this.mode)return;super.handleElementEvent(e);const i=e.type;if(i===NAME.PAUSE){this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${null==(t=this.container)?void 0:t.id}`),this.container&&this.container!==document.getElementById(this.container.id)&&(this._pausedRetryCount=PAUSED_RETRY_COUNT,this._log.info(`view container ${null==(A=this.container)?void 0:A.id} is recreated`)),this._pausedRetryCount>0&&!isAutoPlayDialogShowing()&&(this._log.info(`[${PAUSED_RETRY_COUNT-this._pausedRetryCount+1}/${PAUSED_RETRY_COUNT}] ${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)}if(this.viewMirror&&this.element){const e=this.element.style.transform;i===NAME.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=e.replace("scaleX(-1)",""):i!==NAME.LEAVE_PICTURE_IN_PICTURE||e.includes("scaleX")||(this.element.style.transform=`${e} scaleX(-1)`)}}setCanvas(e,t=1){var A,i,r,s;this.canvas!==e&&(null==(A=this.canvas)||A.remove(),null==e||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?t:0,2===this.mode&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?(null==(i=this.element)||i.remove(),null==(r=this.container)||r.appendChild(e)):this.element&&(null==(s=this.container)||s.appendChild(this.element)))}setAttr(e){const 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),null==(t=this.canvas)||t.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),2===this.mode?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(PlayerEvent.MEDIA_TRACK_CHANGED,e),null!==e&&(this.bindTrackEvents(),this.element&&2!==this.mode&&(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"";const e=document.createElement("canvas");e.width=this.element.videoWidth,e.height=this.element.videoHeight;return e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(isRequestVideoFrameCallbackSupported()&&this.element&&this._calculateTimeout<0){let e=0,t=null;const A=(i,r)=>{this.stat.width=r.width,this.stat.height=r.height,t&&(this.stat.fps=Math.round((r.presentedFrames-t.presentedFrames)/(i-e)*1e3)),e=i,t=r,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout((()=>{var e;return null==(e=this.element)?void 0:e.requestVideoFrameCallback(A)}),2e3))};this.element.requestVideoFrameCallback(A)}}catch(e){this._log.warn("init stat failed",e)}}};async function loadWorklet(e,t){if(!e.audioWorklet)return Promise.reject("audioWorklet is not supported");try{await e.audioWorklet.addModule(t),logger_manager_default.info("worklet addModule success")}catch(e){throw logger_manager_default.info(`worklet addModule catch error. ${e.message}`),e}}"undefined"!=typeof AudioContext?AudioContextClass=AudioContext:"undefined"!=typeof webkitAudioContext?AudioContextClass=webkitAudioContext:"undefined"!=typeof mozAudioContext&&(AudioContextClass=mozAudioContext);var retryTimeoutId=-1;function initAudioContext(){try{if(context)return;(context=new AudioContextClass({sampleRate:48e3})).onstatechange=()=>{logger_manager_default.info(`context state: ${context.state}${"running"!==context.state?` visibilityState: ${document.visibilityState}`:""}`),resumeWhenSuspended()},clearTimeout(retryTimeoutId)}catch(e){logger_manager_default.error(`initAudioContext failed: ${e} typeof AudioContextClass: ${typeof AudioContextClass}`),retryTimeoutId=setTimeout(initAudioContext,1e3)}}initAudioContext();var resumeWhenSuspended=()=>{"suspended"===context.state?(resumeContext(),document.addEventListener("click",resumeWhenSuspended)):"interrupted"===context.state?resumeContext():(document.removeEventListener("visibilitychange",resumeWhenSuspended),document.removeEventListener("click",resumeWhenSuspended))},lastResumeTime=0,resumeTimeoutId=-1;function resumeContext(){return new Promise(((e,t)=>{if("running"===context.state)return e();Date.now()-lastResumeTime<1e3?(clearTimeout(resumeTimeoutId),resumeTimeoutId=setTimeout((()=>{lastResumeTime=Date.now(),context.resume().then(e,t)}),1e3)):(clearTimeout(resumeTimeoutId),lastResumeTime=Date.now(),context.resume().then(e,t))})).catch((e=>{logger_manager_default.warn(`context resume failed: ${e}`),document.addEventListener("visibilitychange",resumeWhenSuspended)}))}document.addEventListener("click",resumeWhenSuspended);var getAudioContext=e=>context,AudioNodeConnector=class{constructor(e){this.name=e,__publicField(this,"node"),__publicField(this,"node2"),__publicField(this,"pre",new Set),__publicField(this,"next",new Set),__publicField(this,"context"),__publicField(this,"connectedNodes",new Set),__publicField(this,"nextInputChannelMap",new Map),__publicField(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(e){this._channelCount=e,this.setChannelCount(this.node,e),this.setChannelCount(this.node2,e),this.next.forEach((t=>t.channelCount=e))}setChannelCount(e,t){!e||e instanceof ScriptProcessorNode||(e.channelCountMode="explicit",e.channelCount=t||this.channelCount||1)}setContext(e){this.context=e,this.node&&e.addMixWeight()}removeContext(){var e;this.node&&(null==(e=this.context)||e.reduceMixWeight()),delete this.context}replaceNode(e){var t;if(e!==this.node)try{this.node?this._disconnect():null==(t=this.context)||t.addMixWeight(),this.node=e,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(e){logger_manager_default.error(e)}}setNode(e,t){var A;if(!this.node)try{null==(A=this.context)||A.addMixWeight(),this.node=e,this.setChannelCount(this.node),t&&(this.node2=t,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),kv_stat_manager_default.addSuccessEvent({key:502701})}catch(e){logger_manager_default.error(e),kv_stat_manager_default.addFailedEvent({key:502701,error:e})}}deleteNode(){var e;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,null==(e=this.context)||e.reduceMixWeight(),this.preNodeReconnect(),kv_stat_manager_default.addSuccessEvent({key:502702})}catch(e){logger_manager_default.error(e),kv_stat_manager_default.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach((e=>{e.node?e.reconnect():e.preNodeReconnect()}))}connectNext(e){this.next.forEach((t=>{const A=this.nextInputChannelMap.get(t);e._connect(t.node,A)||t.connectNext(e)}))}_connect(e,t=0){return!(!this.node||!e)&&((this.node2||this.node).connect(e,0,t),this.connectedNodes.add(e),!0)}_disconnect(){this.connectedNodes.forEach((e=>{var t;return null==(t=this.node2||this.node)?void 0:t.disconnect(e)})),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(e,t=0){return this.next.add(e),e.pre.add(this),this.nextInputChannelMap.set(e,t),e}},AnalyserNodeConnector=class extends AudioNodeConnector{constructor(e=256){super(),this.fftSize=e,__publicField(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return null==(e=this.node)||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return null==(e=this.node)||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){const e=this.getByteTimeDomainData();let t=0,A=0,i=`M${t},${A}`;for(let r=0;r<e.length;r++){A=100*(e[r]/128)/2,i+=`L${t},${A}`,t+=1}return i}},AudioPipeline=class{constructor(){__publicField(this,"source",new AudioNodeConnector),__publicField(this,"gain",new AudioNodeConnector),__publicField(this,"destination",new AudioNodeConnector)}get volume(){var e;return(null==(e=this.gain.node)?void 0:e.gain.value)||1}setVolume(e){1!==e?(this.gain.node||this.gain.setNode(getAudioContext().createGain()),this.gain.node.gain.value=e):this.gain.node&&this.gain.deleteNode()}replaceSource(e){this.source.replaceNode(createAudioNode(e))}get track(){var e;return null==(e=this.stream)?void 0:e.getAudioTracks()[0]}get stream(){var e;return null==(e=this.destination.node)?void 0:e.stream}},audioNodeCache=new WeakMap;function createAudioNode(e){let t=audioNodeCache.get(e);if(t)return t;const A=getAudioContext();if(e instanceof HTMLAudioElement)t=A.createMediaElementSource(e);else{if(!(e instanceof MediaStreamTrack))return e;t=A.createMediaStreamSource(new MediaStream([e]))}return audioNodeCache.set(e,t),t}var _VolumeMeter=class e{constructor(e){__publicField(this,"_volume",0),__publicField(this,"_volumeDb",0),__publicField(this,"_log"),__publicField(this,"_scriptProcessorNode",null),__publicField(this,"_audioWorkletNode",null),__publicField(this,"_interval",200),__publicField(this,"ready",this.preload());const{log:t}=e;this._log=t,inner_emitter_default.on(inner_event_default.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-e.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!e.workletReady){const 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);';e.workletReady=loadWorklet(e.audioContext,URL.createObjectURL(new Blob([t],{type:"application/javascript"})))}return e.workletReady.then((()=>this.initAudioWorklet())).catch((e=>(this._log.error(`volumeMeter preload error: ${e}`),this.initScriptProcessor())))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(e.audioContext,"volume-meter");let t=!1;this._audioWorkletNode.port.onmessage=A=>{e.lastMessageTime=Date.now(),this._volume=A.data.volume||0,this._volumeDb=A.data.volumeDb||0,!t&&A.data.cacheLen&&A.data.outputLen&&(this._log.warn("worklet play success"),t=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(e){this._log.error(`volumeMeter init audio worklet error: ${e}`),event_log_default.logFailedEvent({userId:this._log.userId,eventType:KIBANA_EVENT.LOAD_WORKLET,error:e}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=getAudioContext("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=t=>{e.lastMessageTime=Date.now();const A=t.inputBuffer.getChannelData(0);let i=0;for(let e=0;e<A.length;++e)i+=A[e]*A[e];this._volume=Math.sqrt(i/A.length)||0}}catch(e){this._log.error(`volumeMeter init script processor error: ${e}`)}}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,inner_emitter_default.off(inner_event_default.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(100*this._volumeDb)}handleAudioLevelInterval(e){var t;const{interval:A}=e;this._interval=A,null==(t=this._audioWorkletNode)||t.port.postMessage({name:"setIntervalTime",intervalTime:A})}};__publicField(_VolumeMeter,"lastMessageTime",0),__publicField(_VolumeMeter,"audioContext",getAudioContext("volume-meter")),__publicField(_VolumeMeter,"workletReady");var VolumeMeter=_VolumeMeter,VolumeMeterConnector=class extends AudioNodeConnector{constructor(e){super(),__publicField(this,"_volumeMeter"),this._volumeMeter=new VolumeMeter(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}async init(){await 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){const t=e.allocationSize({planeIndex:0}),A=new Float32Array(t>>2);e.copyTo(A,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:A},[A.buffer]),e.close()}}},import_eventemitter33=__toESM(require_eventemitter3(),1),findByDeviceID=e=>t=>t.deviceId===e,Device=class{constructor(e,t="Input"){__publicField(this,"kind"),__publicField(this,"type"),__publicField(this,"devices",[]),this.kind=e,this.type=t}update(e,t){const A=e.filter((e=>e.kind===`${this.kind}${this.type.toLocaleLowerCase()}`));1===this.devices.length&&isDeviceGotFromWithoutPermission(this.devices[0])||t&&(A.forEach((e=>{if(e.deviceId&&!this.devices.find(findByDeviceID(e.deviceId))){const A=`${this.kind}${this.type}Added`;logger_manager_default.warn(`${A}: ${JSON.stringify(e)}`),t.emit(A,e)}})),this.devices.forEach((e=>{if(e.deviceId&&!A.find(findByDeviceID(e.deviceId))){const A=`${this.kind}${this.type}Removed`;logger_manager_default.warn(`${A}: ${JSON.stringify(e)}`),t.emit(A,e)}}))),this.devices=A}hasDevice(e){return!!this.devices.find((t=>t.deviceId===e))}},DeviceDetector=class extends import_eventemitter33.EventEmitter{constructor(){super(),__publicField(this,"audioInputs",new Device(NAME.AUDIO)),__publicField(this,"videoInputs",new Device(NAME.VIDEO)),__publicField(this,"audioOutputs",new Device(NAME.AUDIO,"Output")),this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",(()=>this.update())),"ondevicechange"in navigator.mediaDevices||timer_default.run("interval",(()=>{this.update()}),{delay:1e4}))}init(){getDevices().then((e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)}))}async update(e=0){const t=await getDevices(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this}},deviceDetector=IS_WORKLET||IS_WORKER?null:new DeviceDetector;function isDeviceGotFromWithoutPermission(e){return e.deviceId===e.groupId&&""===e.groupId}async function getDevices(e=0){if(isUsedInHttpProtocol()||!isMediaDevicesSupported())return[];let t=await navigator.mediaDevices.enumerateDevices();if(0!==e){const A={audio:!1,video:!1};if(t.forEach((e=>{isDeviceGotFromWithoutPermission(e)&&(e.kind===NAME.AUDIO_INPUT?A.audio=!0:e.kind===NAME.VIDEO_INPUT&&(A.video=!0))})),2===e&&(A.audio=!1),1===e&&(A.video=!1),A.audio||A.video){let e;try{e=await navigator.mediaDevices.getUserMedia(A),A.audio&&resumeContext()}catch(e){logger_manager_default.debug("capture before getDevices failed: ",e)}t=await navigator.mediaDevices.enumerateDevices(),null==e||e.getTracks().forEach((e=>e.stop()))}}return t.map(((e,t)=>{const A={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${t}`};return e.deviceId.length>0&&historyDeviceIdSet.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(A.getCapabilities=()=>e.getCapabilities()),A}))}function getMicrophones(e=!1){return deviceDetector.update(e?1:0).then((e=>e.audioInputs.devices))}function getCameras(e=!1){return deviceDetector.update(e?2:0).then((e=>e.videoInputs.devices))}var isSpeakerLogged=!1;async function logSpeakers(){try{isSpeakerLogged||(isSpeakerLogged=!0,logger_manager_default.info(`speakers:${(await getSpeakers()).map((e=>` ${e.deviceId.slice(0,8)}: ${e.label}`))}`))}catch(e){}}async function getSpeakers(e=!1){return(IS_IOS||IS_SAFARI)&&(e=!1),deviceDetector.update(e?1:0).then((e=>e.audioOutputs.devices))}var cachedElement,historyDeviceIdSet=new Set;function isCameraTrack(e){if(e instanceof CanvasCaptureMediaStreamTrack)return!1;if(!(e instanceof MediaStreamTrack))return!1;const t=e.label.toLocaleLowerCase();if(t.includes("camera")||t.includes("webcam"))return!0;const A=`${((null==e?void 0:e.getSettings())||{}).deviceId}_${NAME.VIDEO_INPUT}`;return!!historyDeviceIdSet.has(A)}function isMicrophoneTrack(e){if(e instanceof CanvasCaptureMediaStreamTrack)return!1;if(!(e instanceof MediaStreamTrack))return!1;const t=e.label.toLocaleLowerCase();if(t.includes("mic")||t.includes("麦克风"))return!0;const A=`${((null==e?void 0:e.getSettings())||{}).deviceId}_${NAME.AUDIO_INPUT}`;return!!historyDeviceIdSet.has(A)}async function isSameDefaultMicrophone(e,t){const A=(await getMicrophones()).find((e=>e.deviceId===MICROPHONE_DEFAULT));return!t&&(null==A?void 0:A.groupId)===e||(null==A?void 0:A.groupId)===e&&A.label===t}async function isSameDevice({newDeviceId:e,oldDeviceId:t,oldGroupId:A,oldLabel:i,kind:r}){return e===t&&(r!==NAME.AUDIO||e!==MICROPHONE_DEFAULT||await isSameDefaultMicrophone(A,i))}var PlayerPipeline=class extends AudioPipeline{constructor(e){super(),this.log=e,__publicField(this,"volumeMeter"),__publicField(this,"volumeMeterAfter3A"),__publicField(this,"volumeDestination"),__publicField(this,"analyser",new AnalyserNodeConnector),this.volumeMeter=new VolumeMeterConnector({log:this.log}),this.volumeMeterAfter3A=new VolumeMeterConnector({log:this.log}),this.volumeDestination=new AudioNodeConnector,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},AudioPlayer=class extends Player{constructor(e){super(e,NAME.AUDIO),__publicField(this,"_outputDeviceId"),__publicField(this,"_volume",1),__publicField(this,"_destination",getAudioContext("player").createMediaStreamDestination()),__publicField(this,"pipeline"),__publicField(this,"volumeMeterMode","worklet"),this.mode=0,this.pipeline=new PlayerPipeline(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if(("15.2"===IOS_VERSION||"15.3"===IOS_VERSION||"15.4"===IOS_VERSION)&&this.muted)return void this._log.info("audioElement is muted.");const t=cachedElement||new Audio;t.setAttribute("autoplay","autoplay"),t.srcObject=this.getMediaStream(),t.muted=this.muted,this.element=t,isNumber(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),t===cachedElement&&(cachedElement=void 0),this.bindElementEvents()}async play(e){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(null==e?void 0:e.volume),this._outputDeviceId&&await this.setSinkId(this._outputDeviceId),"worklet"===this.volumeMeterMode?(this.pipeline.volumeMeter.init(),this.pipeline.volumeMeterAfter3A.init()):"analyser"===this.volumeMeterMode&&this.pipeline.analyser.setNode(getAudioContext("player").createAnalyser()),logSpeakers(),super.play()}stop(e=0){this.pipeline.destroy(),super.stop(e)}async setSinkId(e){var t,A;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&await(null==(A=(t=this.element).setSinkId)?void 0:A.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()}},RemoteAudioPlayer=class extends AudioPlayer{constructor(e){super(e),__publicField(this,"_sourceElement"),__publicField(this,"_output",new AudioNodeConnector),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(getAudioContext("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var t,A,i;(null==(A=null==(t=this.element)?void 0:t.error)?void 0:A.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(PlayerEvent.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=(null==(i=e.getSettings())?void 0:i.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"):IS_IOS||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),remove(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();const t=this._sourceElement||this.element;t&&IS_ANY_SAFARI&&(cachedElement=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}},Track=class extends FSM{constructor({userId:e,sdkAppId:t,mediaType:A,room:i,PlayerClass:r=(1===A?RemoteAudioPlayer:VideoPlayer)}){var s;super(),__publicField(this,"id",uuid_default()),__publicField(this,"userId",""),__publicField(this,"isRemote"),__publicField(this,"mediaType"),__publicField(this,"room"),__publicField(this,"user"),__publicField(this,"_log"),__publicField(this,"_inputTrack"),__publicField(this,"_outputTrack"),__publicField(this,"isPlayCalled"),__publicField(this,"container",null),__publicField(this,"player"),__publicField(this,"subVideoPlayerMap"),__publicField(this,"muted",!1),__publicField(this,"abortCtrl"),__publicField(this,"objectFit","cover"),__publicField(this,"mirror"),__publicField(this,"rotation"),__publicField(this,"isScreen",!1),__publicField(this,"manager"),__publicField(this,"trackSettings"),__publicField(this,"isFirstVideoFrameEmitted",!1),this.userId=e||"",this.mediaType=A,this._log=logger_manager_default.createLogger({id:`${this.kind[0]}t`,userId:null==(s=i||this.room)?void 0:s.userId,remoteUserId:this instanceof LocalTrack?void 0:this.userId,sdkAppId:t,type:2===this.mediaType?"auxiliary":"main",isLocal:this instanceof LocalTrack}),this.player=new r({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(PlayerEvent.PLAYER_STATE_CHANGED,(e=>{inner_emitter_default.emit(inner_event_default.PLAYER_STATE_CHANGED,__spreadValues({track:this},e)),this.emit("player-state-changed",e)})),this.kind===NAME.VIDEO&&(this.player.on(PlayerEvent.LOADED_DATA,(()=>{this.emitFirstVideoFrameEvent(PlayerEvent.LOADED_DATA),inner_emitter_default.emit(inner_event_default.VIDEO_LOADED_DATA,{track:this})})),this.player.on(PlayerEvent.LOADED_META_DATA,(()=>{this.emitFirstVideoFrameEvent(PlayerEvent.LOADED_META_DATA)})),this.player.on(PlayerEvent.MEDIA_TRACK_CHANGED,(e=>{var t;null==(t=this.subVideoPlayerMap)||t.forEach((t=>t.setTrack(e)))}))),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(PlayerEvent.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||logger_manager_default}get kind(){return 1===this.mediaType?NAME.AUDIO:NAME.VIDEO}get strMediaType(){return 4===this.mediaType?NAME.VIDEO:2===this.mediaType?NAME.SCREEN:NAME.AUDIO}get streamType(){return 2&this.mediaType?"auxiliary":"main"}get isMediaTrackActive(){return!!this.mediaTrack&&(!this.mediaTrack.muted&&"live"===this.mediaTrack.readyState&&this.mediaTrack.enabled)}async play(e,t){const A=isArray(e)?e[0]:e;if(this.isPlayCalled)return this.log.info(`play update options: ${JSON.stringify(t)}`),t&&!isUndefined(t.muted)&&this.setPlayerMute(t.muted),t&&!isUndefined(t.objectFit)&&(this.objectFit=t.objectFit),void(this.player instanceof VideoPlayer&&(this.player.setObjectFit(this.objectFit),this.container!==A&&A&&(this.container=A,this.player.setContainer(A)),isArray(e)&&e.length>=1&&await this.playSubContainer(e.slice(1),t)));if(t&&!isUndefined(t.muted)?this.setPlayerMute(t.muted):this.isRemote&&this.kind!==NAME.VIDEO||this.setPlayerMute(!0),t&&!isUndefined(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof VideoPlayer&&(this.player.setObjectFit(this.objectFit),t&&!isUndefined(t.poster)&&this.player.setPoster(t.poster)),this.isPlayCalled=!0,A&&(this.container=A,this.player instanceof VideoPlayer&&this.player.setContainer(A)),inner_emitter_default.emit(inner_event_default.PLAY_TRACK_START,{track:this}),this._outputTrack){this._log.info(`play with options: ${JSON.stringify(t)}`);try{this.player.setTrack(this.playerMediaTrack),await this.player.play(t),isArray(e)&&e.length>1&&await this.playSubContainer(e.slice(1),t)}catch(e){throw this.handleAutoPlayFailed(e),e}}else this.log.info("play has not mediaTrack, abort")}setMirror(e,t){if(this.isScreen)return;if(this.kind!==NAME.VIDEO)return;if(isUndefined(e))return;if(e===this.mirror)return;this.mirror=e;let A=this.player;t&&(A=t);const i=this.manager;if(isBoolean(this.mirror))return A.setViewMirror(this.mirror),void(!this.isRemote&&i&&(i.mirror=!1));switch(this.mirror){case"view":i&&(i.mirror=!1),A.setViewMirror(!0);break;case"publish":i&&(i.mirror=!0),A.setViewMirror(!0);break;case"both":i&&(i.mirror=!0),A.setViewMirror(!1)}}async playSubContainer(e,t){if(!this._outputTrack||this.kind===NAME.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach(((t,A)=>{var i;e.find((e=>A===e))||(t.stop(),null==(i=this.subVideoPlayerMap)||i.delete(A))}));for(const[A,i]of e.entries()){const e=this.subVideoPlayerMap.get(i);e?t&&(isUndefined(t.objectFit)||e.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(i,new VideoPlayer({id:this.userId||this.id,track:this.playerMediaTrack,container:i,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${A+1}`})}))}const A=[...this.subVideoPlayerMap.values()];for(const e of A)e.setViewMirror(this.player.mirror),await e.play()}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return(null==(e=this.player)?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(isRemoteTrack2(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach((e=>{e.stop()})),this.container=null)}async resume(){var e;this.isPlayCalled&&await(null==(e=this.player)?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),inner_emitter_default.emit(e?inner_event_default.TRACK_MUTED:inner_event_default.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){create2(e,e).add(NAME.MUTE,this.onTrackMuted).add(NAME.UNMUTE,this.onTrackUnmuted).add(NAME.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===NAME.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){remove(e)}setInputMediaStreamTrack(e){var t;const A=this._inputTrack;if(e!==A)return this._inputTrack=e,this.trackSettings=null==(t=e.getSettings)?void 0:t.call(e),e.enabled=!this.muted,A&&this.uninstallTrackEvent(A),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,A||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var t;e!==this._outputTrack&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",null==(t=e.getSettings)?void 0:t.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)return this.player.play().catch((e=>this.handleAutoPlayFailed(e))),void this.log.info(`playing state updated, play ${this.kind}`)}else if(!this.player.isStopped)return this.player.stop(isRemoteTrack2(this)?this.jitterBufferDelay:0),void this.log.info(`playing state updated, stop ${this.kind}`);this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new autoplay_dialog_default;else{const e=()=>{this.resume().then((()=>{document.removeEventListener("click",e,!0)}))};document.addEventListener("click",e,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof VideoPlayer?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var t,A,i;if(this.isFirstVideoFrameEmitted)return;const r=null==(t=this.mediaTrack)?void 0:t.getSettings();let s=(null==r?void 0:r.width)||(null==(A=this.player.element)?void 0:A.videoWidth)||0,n=(null==r?void 0:r.height)||(null==(i=this.player.element)?void 0:i.videoHeight)||0;(e!==PlayerEvent.LOADED_META_DATA||s||n)&&(e!==PlayerEvent.LOADED_DATA||s||n||this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,isRotate90Or270(this.rotation)&&([s,n]=[n,s]),this.emit("first-video-frame",{width:s,height:n,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`)}};__decorateClass([ChangeState([],FSM.INIT,{sync:!0})],Track.prototype,"close",1);var has3=Object.prototype.hasOwnProperty,{toString:toString2}=Object.prototype;function isEmpty3(e){if(null==e)return!0;if("boolean"==typeof e)return!1;if("number"==typeof e)return 0===e;if("string"==typeof e)return 0===e.length;if("function"==typeof e)return 0===e.length;if(Array.isArray(e))return 0===e.length;if(e instanceof Error)return""===e.message;if(isPlainObject(e))switch(Object.prototype.toString.call(e)){case"[object File]":case"[object Map]":case"[object Set]":return 0===e.size;case"[object Object]":for(const t in e)if(has3.call(e,t))return!1;return!0}return!1}var is_empty_default=isEmpty3,getUserMedia_=async function(e){const t=buildConstraints(e);logger_manager_default.info(`getUserMedia with constraints: ${JSON.stringify(t)}`);let A=[],i=[];const r=["label","deviceId","groupId"];t.audio&&(A=await getMicrophones(),logger_manager_default.info(`microphones: ${stringify(A.map((e=>__spreadProps(__spreadValues({},e),{groupId:e.groupId.substring(0,8)}))),{keysToInclude:r})}`)),t.video&&(i=await getCameras(),logger_manager_default.info(`cameras: ${stringify(i,{keysToInclude:r})}`));try{const e=await navigator.mediaDevices.getUserMedia(t);return IS_GET_CAPABILITIES_SUPPORTED&&e.getTracks().forEach((e=>{logger_manager_default.info(`${e.kind} capabilities: ${stringify(e.getCapabilities(),{keysToInclude:CAPABILITIES_KEYS})}`)})),t.audio&&resumeContext(),e}catch(t){let{message:r}=t;throw"NotFoundError"===t.name&&(e.video&&i&&0===i.length&&(r=generateErrorMessage({key:ErrorName.CAMERA_NOT_FOUND})),e.audio&&A&&0===A.length&&(r=generateErrorMessage({key:ErrorName.MICROPHONE_NOT_FOUND}))),new rtc_error_default({code:error_code_default.INITIALIZE_FAILED,name:t.name,message:r,constraint:t.constraint})}},getUserMedia=retry_default({retryFunction:getUserMedia_,settings:{retries:3,timeout:500},onError:({error:e,retry:t,reject:A,retryFuncArgs:i,retriedCount:r})=>{const s=r+1;"NotReadableError"===e.name||"OverconstrainedError"===e.name?(1===s?(i[0].video&&(i[0].maxResolution=!1,(!IS_SAFARI||i[0].width*i[0].height<=2073600)&&i[0].frameRate&&(i[0].frameRate=i[0].frameRate>10?10:5)),i[0].retryWhenExactFailed&&i[0].useExactDeviceId&&(i[0].useExactDeviceId=!1)):2===s?i[0].useDeviceIdOnly=!0:3!==s||i[0].useExactDeviceId||(i[0].useTrueAsConstraint=!0),t()):A(e),i[0].microphoneId&&logCapabilities(i[0].microphoneId,!1),i[0].cameraId&&logCapabilities(i[0].cameraId,!0)},onRetrying:e=>{logger_manager_default.warn(`getUserMedia NotReadableError observed, retrying [${e}/3]`)},onRetryFailed:e=>{event_log_default.logFailedEvent({eventType:KIBANA_EVENT.GET_USER_MEDIA_RETRY,error:e})},onRetrySuccess:e=>{event_log_default.logSuccessEvent({eventType:KIBANA_EVENT.GET_USER_MEDIA_RETRY}),event_log_default.uploadEvent({log:`stat-${KIBANA_EVENT.GET_USER_MEDIA_RETRY}-success-${e}`})}});async function logCapabilities(e,t){const A=(t?await getCameras():await getMicrophones()).find((t=>t.deviceId===e));A&&isFunction(A.getCapabilities)&&logger_manager_default.warn(stringify(A.getCapabilities(),{keysToInclude:CAPABILITIES_KEYS}))}function buildConstraints(e){return{audio:buildAudioConstraint(e),video:buildVideoConstraint(e)}}function buildAudioConstraint(e){if(!e.audio)return!1;if(e.useTrueAsConstraint)return!0;const t={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:e.sampleRate};return!is_empty_default(e.microphoneId)&&(t.deviceId=e.useExactDeviceId?{exact:e.microphoneId}:e.microphoneId,e.useDeviceIdOnly)?t:(isNumber(e.channelCount)&&(t.channelCount=e.channelCount),isBoolean(e.echoCancellation)&&!e.echoCancellation&&(t.echoCancellation=!1),isBoolean(e.noiseSuppression)&&!e.noiseSuppression&&(t.noiseSuppression=!1),isBoolean(e.autoGainControl)&&!e.autoGainControl&&(t.autoGainControl=!1),!!is_empty_default(t)||t)}function buildVideoConstraint(e){if(!e.video)return!1;if(e.useTrueAsConstraint)return!0;const{maxResolution:t=!0}=e,A={};return e.cameraId?A.deviceId=e.useExactDeviceId?{exact:e.cameraId}:e.cameraId:e.facingMode&&(A.facingMode=e.facingMode),e.useDeviceIdOnly&&!is_empty_default(A)?A:(e.width&&(A.width={ideal:e.width},t&&!IS_FIREFOX&&(A.width.max=e.width)),e.height&&(A.height={ideal:e.height},t&&!IS_FIREFOX&&(A.height.max=e.height)),IS_FIREFOX&&IS_MAC&&e.width&&e.height&&e.width*e.height<101376&&(A.width=e.width,A.height=e.height),e.frameRate&&(A.frameRate=e.frameRate),!!is_empty_default(A)||A)}var get_user_media_default=getUserMedia;function after(e){return createDecorator(((t,A)=>async function(...A){const i=await t.apply(this,A);return await e.call(this,...A),i}))}function createDecorator(e){return function(t,A,i){return i.value=e(i.value,A),i}}var logVisibilityState=(()=>{let e=!1,t=document.visibilityState;return()=>{document.visibilityState!==t&&logger_manager_default.info(`visibility change: ${document.visibilityState}`),e||(document.addEventListener("visibilitychange",(()=>{logger_manager_default.info(`visibility change: ${document.visibilityState}`),t=document.visibilityState})),e=!0)}})(),seq=0,FunctionQueue=class{constructor(){__publicField(this,"log",logger_manager_default.createLogger({id:"fq"+ ++seq})),__publicField(this,"isRunning",!1),__publicField(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return 0===this.length?null:this.queue[this.length-1]}push(e,t=!1){var A,i;const r=__spreadValues({},e),s=new Promise(((e,t)=>{r.resolve=e,r.reject=t}));return r.promise=s,t?this.length<=1?this.queue.push(r):null==(i=null==(A=this.lastQueueItem)?void 0:A.promise)||i.then(r.resolve,r.reject):this.queue.push(r),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),s}shift(){const e=this.queue.shift();return this.log.debug(`shift ${this.length}`),e}callNext(){if(this.isRunning||0===this.length)return;this.log.debug("callNext ",this.length);const{fn:e,args:t,context:A,resolve:i,reject:r}=this.queue[0];this.isRunning=!0,e.apply(A,t).then(i,r).finally((()=>{this.isRunning=!1,this.shift(),this.callNext()}))}},fnQueueMap=new WeakMap;function addCallQueue(e=!1){return function(t,A,i){const r=i.value;return i.value=function(...t){const A=fnQueueMap.get(this)||new FunctionQueue;return fnQueueMap.set(this,A),A.push({fn:r,args:t,context:this},e)},i}}function reportSuccessRate(e,t){return createDecorator(((A,i)=>function(...i){const r=e;try{const e=A.apply(this,i),s=performanceNow();return isPromise(e)?e.then((e=>(t?kv_stat_manager_default.addSuccessEvent({key:r,cost:performanceNow()-s}):kv_stat_manager_default.addSuccessEvent({key:r}),e))).catch((e=>{throw kv_stat_manager_default.addFailedEvent({key:r,error:e}),e})):(kv_stat_manager_default.addSuccessEvent({key:r}),e)}catch(e){throw kv_stat_manager_default.addFailedEvent({key:r,error:e}),e}}))}var LocalTrack=class extends Track{constructor(e,t){super({mediaType:e,PlayerClass:t}),__publicField(this,"isRemote",!1),__publicField(this,"deviceId"),__publicField(this,"groupId",""),__publicField(this,"label",""),__publicField(this,"sourceTrack"),__publicField(this,"enableAutoSwitchWhenRecapturing",!0),__publicField(this,"_isRecapturing",!1),__publicField(this,"_lastRecaptureTime",0),__publicField(this,"_onMuteTimeoutId",-1),__publicField(this,"_encodeCheckTimeoutId",-1),__publicField(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return"publishing"===this.state.toString()}get isPublished(){return"publish"===this.state}encodeFrame(e,t){throw new Error("Method not implemented.")}installTrackEvent(e){create2(e,e).add(NAME.MUTE,this.onTrackMuted).add(NAME.UNMUTE,this.onTrackUnmuted).add(NAME.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===NAME.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){remove(e)}setStateToReady(){}async capture(e){var t;try{const A=performanceNow();let i;inner_emitter_default.emit(inner_event_default.LOCAL_TRACK_CAPTURE_START,{track:this}),e.customSource?(i=new MediaStream,i.addTrack(e.customSource)):(null==(t=this.mediaTrack)||t.stop(),i=await get_user_media_default(e));const r=i.getTracks()[0];return await this.setInputMediaStreamTrack(r),e.customSource||(this.sourceTrack=r,this.updateDeviceIdInUse(),this.listenDeviceChange()),inner_emitter_default.emit(inner_event_default.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:performanceNow()-A}),i}catch(e){throw inner_emitter_default.emit(inner_event_default.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:e}),this.log.error(`getUserMedia error observed ${e}`),e}}setOutputMediaStreamTrack(e){var t;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return null==(t=this.room)?void 0:t.replaceTrack(this)}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),t}unpublish(){this.room&&this.room.localTracks.delete(this),inner_emitter_default.emit(inner_event_default.LOCAL_TRACK_UNPUBLISHED,{track:this})}async updateDeviceIdInUse(){if(this.mediaTrack&&IS_GET_SETTINGS_SUPPORTED){const{deviceId:e,groupId:t}=this.mediaTrack.getSettings(),{label:A}=this.mediaTrack;await isSameDevice({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind})||(this.deviceId=e,this.label=A,t&&(this.groupId=t),getDevices().then((t=>{const A=t.find((t=>t.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.mediaTrack||this.kind===NAME.AUDIO&&!isMicrophoneTrack(this.mediaTrack)||this.kind===NAME.VIDEO&&!isCameraTrack(this.mediaTrack)||this._isRecapturing||e&&IS_MAC&&IS_SAFARI)}onTrackMuted(){super.onTrackMuted(),logVisibilityState(),this.isNeedToRecapture(!0)&&(Date.now()-this._lastRecaptureTime<RECOVER_CAPTURE_INTERVAL?setTimeout((()=>this.onTrackMuted()),RECOVER_CAPTURE_INTERVAL):this._onMuteTimeoutId=setTimeout((async()=>{var e;if(null==(e=this.mediaTrack)?void 0:e.muted){if((IS_IOS||IS_ANDROID)&&"visible"!==document.visibilityState)return;this.recapture(await this.getRecoverCaptureDeviceId())}}),5e3))}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}async onTrackEnded(){super.onTrackEnded(),this.isNeedToRecapture()&&(Date.now()-this._lastRecaptureTime<RECOVER_CAPTURE_INTERVAL?setTimeout((()=>this.onTrackEnded()),RECOVER_CAPTURE_INTERVAL):(this.emit("7"),this.recapture(await this.getRecoverCaptureDeviceId())))}async recapture(e){var t;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),null==(t=this._inputTrack)||t.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();const A={useExactDeviceId:!0};if("user"===e||"environment"===e)A.facingMode=e;else{let t;("audio"===this.kind?await getMicrophones():await getCameras()).find((t=>t.deviceId===e))&&(t=e),A.deviceId=t}return this.capture(A).then((()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),inner_emitter_default.emit(inner_event_default.LOCAL_TRACK_RECAPTURE,{track:this})})).catch((e=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${e.message}`),this.emit("5",e),inner_emitter_default.emit(inner_event_default.LOCAL_TRACK_RECAPTURE,{track:this,error:e})}))}async getRecoverCaptureDeviceId(){const e=this instanceof LocalVideoTrack;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){const A=(captureFailDeviceIdCountMap.get(t)||0)+1;if(captureFailDeviceIdCountMap.set(t,A),A>=3&&this.enableAutoSwitchWhenRecapturing){const i=e?(await getCameras()).find((e=>!captureFailDeviceIdCountMap.has(e.deviceId))):(await getMicrophones()).find((e=>!captureFailDeviceIdCountMap.has(e.deviceId)));i&&(this.log.warn(`${t} capture fail ${A} times, change new ${i.deviceId}`),t=i.deviceId)}}return t}stopCapture(){var e;this.sourceTrack&&(this.sourceTrack.stop(),this.uninstallTrackEvent(this.sourceTrack)),null==(e=this.manager)||e.removeInput(this)}close(){super.close(),this.stopCapture()}};__decorateClass([ChangeState(FSM.INIT,"ready",{ignoreError:!0,sync:!0})],LocalTrack.prototype,"setStateToReady",1),__decorateClass([addCallQueue()],LocalTrack.prototype,"capture",1),__decorateClass([ChangeState("ready","publish",{ignoreError:!0,success(){var e,t;this.room.localTracks.add(this),inner_emitter_default.emit(inner_event_default.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"});((null==(t=null==(e=this.room)?void 0:e.networkQuality)?void 0:t.uplinkNetworkQuality)||0)>3||(this._encodeCheckTimeoutId=setTimeout((()=>{var e,t,A,i,r,s;if(!(((null==(t=null==(e=this.room)?void 0:e.networkQuality)?void 0:t.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){const e=this.kind===NAME.AUDIO,t=this.stat.bytesSent>0;if(kv_stat_manager_default[t?"addSuccessEvent":"addFailedEvent"]({key:e?503700:513702}),!e){const e=(null==(i=null==(A=this.room)?void 0:A.videoCodec)?void 0:i.toUpperCase())||"H264";kv_stat_manager_default[t?"addSuccessEvent":"addFailedEvent"]({key:KV_REPORT_KEY_VIDEO_ENCODE[`ENCODE_${e}_RESULT`]})}t||(kv_stat_manager_default.addEnum({key:e?503701:513703,value:getOSNumber()}),event_log_default.uploadEvent({log:`stat-encode-failed-${this.kind}-${getDeviceModel()||getOSString()}`,userId:this.userId}),this.log.warn(e?"encode failed":`${null==(s=null==(r=this.room)?void 0:r.videoCodec)?void 0:s.toUpperCase()} encode failed`),this.emit("6",this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"started",reason:"error",error:new rtc_error_default({message:(e?"audio":"video")+" encode failed",code:e?error_code_default.AUDIO_ENCODE_FAILED:error_code_default.VIDEO_ENCODE_FAILED})}))}}),5e3))},fail(e){let t="error";if(e.cause instanceof RTCError){const A=e.cause;A.message.includes("timeout")?t="timeout":A.code===error_code_default.API_CALL_ABORTED&&(t="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:t,error:e.cause||e})}}),reportSuccessRate(521714,!1)],LocalTrack.prototype,"publish",1),__decorateClass([createDecorator((e=>async function(){const t="publish"===this.state?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:t,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})),ChangeState([],"ready",{sync:!0})],LocalTrack.prototype,"unpublish",1);var captureFailDeviceIdCountMap=new Map;inner_emitter_default.on(inner_event_default.SWITCH_DEVICE_SUCCESS,(e=>{e.track.deviceId&&captureFailDeviceIdCountMap.delete(e.track.deviceId)}));var NALU=class{constructor(e,t=!1){this.dataView=e,this.isSEI&&(t?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){const e=this.seiPayloadStartIndex,t=this.dataView.byteLength-2,A=[];let i=0;for(let r=e;r<=t;r++){const e=this.dataView.getInt8(r);switch(e){case 0:case 1:case 2:case 3:2===i&&(A.push(3),i=0),0==e?i++:i=0,A.push(e);break;default:i=0,A.push(e)}}A.push(this.dataView.getInt8(this.dataView.byteLength-1));const r=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,e),...A]).buffer);this.dataView=r}removePreventionByte(){const e=this.seiPayloadStartIndex,t=this.dataView.byteLength-1,A=[];let i=0;for(let r=e;r<=t;r++)switch(this.dataView.getInt8(r)){case 0:i++,A.push(this.dataView.getInt8(r));break;case 3:2!==i&&A.push(this.dataView.getInt8(r)),i=0;break;default:A.push(this.dataView.getInt8(r)),i=0}const r=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,e),...A]).buffer);this.dataView=r}get isSEI(){return 6===this.dataView.getUint8(4)}get seiPayloadStartIndex(){let e=6;for(let t=6;t<this.dataView.buffer.byteLength&&(e++,255===this.dataView.getUint8(t));t++);return e}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let e=0,t=6;for(let A=6;A<this.dataView.buffer.byteLength;A++){const i=this.dataView.getUint8(A);if(t++,255!==i){e+=i;break}e+=255}const A=new ArrayBuffer(e),i=new DataView(A);for(let e=0;e<A.byteLength;e++,t++)i.setInt8(e,this.dataView.getInt8(t));return i}},SEIEncoder=class{constructor(){__publicField(this,"_seiMessageList",[]),__publicField(this,"_smallSeiMessageList",[]),__publicField(this,"_seiPayloadType",243)}encodeSEINalu(e){const t=e.byteLength,A=parseInt(String(t/255),10),i=t%255,r=[];r.push(0,0,0,1,6,this._seiPayloadType);for(let e=0;e<A;e++)r.push(255);r.push(i);const s=new DataView(e);return r.push(...new Uint8Array(s.buffer)),r.push(128),new NALU(new DataView(new Uint8Array(r).buffer),!0)}sendSEI(e,t){(null==t?void 0:t.seiPayloadType)&&(this._seiPayloadType=t.seiPayloadType),this._seiMessageList.push(e),(null==t?void 0:t.small)&&this._smallSeiMessageList.push(e)}isEmpty(){return!this._seiMessageList.length}getNaluCount(e){let t=0,A=0;const i=new DataView(e);for(let r=0;r<e.byteLength;r++)switch(i.getUint8(r)){case 0:t++;break;case 1:2!==t&&3!==t||A++,t=0;break;default:t=0}return A}encode(e,t){const A=t?this._smallSeiMessageList:this._seiMessageList;if(A.length>0&&e.data.byteLength>0){const t=9-this.getNaluCount(e.data);if(t<=0)return 0;const i=A.splice(0,t).reverse().map(this.encodeSEINalu.bind(this)),r=i.reduce(((e,t)=>e+t.dataView.byteLength),0),s=new ArrayBuffer(r+e.data.byteLength),n=new DataView(s),a=new DataView(e.data);let o=0;for(let e=0;e<i.length;e++)for(let t=0;t<i[e].dataView.byteLength;t++)n.setInt8(o++,i[e].dataView.getInt8(t));for(let t=0;t<e.data.byteLength;t++)n.setInt8(o++,a.getInt8(t));return e.data=s,i.length}return 0}},LocalVideoTrack=class extends LocalTrack{constructor(e,t=4){super(t,VideoPlayer),__publicField(this,"profile",__spreadValues({},defaultBigVideoProfile)),__publicField(this,"avoidCropping",!1),__publicField(this,"_scaleResolutionDownBy"),__publicField(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0}),__publicField(this,"small"),__publicField(this,"isNeedToSetBandwidth"),__publicField(this,"muteImage"),__publicField(this,"manager"),__publicField(this,"_seiCodec",new SEIEncoder),this.manager=e;const A=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&"publish"===this.state&&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(__spreadProps(__spreadValues({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",A),this.on("publish",A),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(IS_GET_SETTINGS_SUPPORTED&&this.mediaTrack)return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return(null==(e=this._inputTrack)?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return"detail"===(null==(e=this._inputTrack)?void 0:e.contentHint)}async setMute(e){var t,A,i;if(isString(e)){if(this.muteImage===e)return;await(null==(t=this.manager)?void 0:t.deleteWatermark("mute")),await(null==(A=this.manager)?void 0:A.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e})),this.muteImage=e,super.setMute(!1)}else this.muteImage&&(await(null==(i=this.manager)?void 0:i.deleteWatermark("mute")),this.muteImage=void 0),super.setMute(e)}capture({deviceId:e,facingMode:t,useExactDeviceId:A=!0,customSource:i,retryWhenExactFailed:r=!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:A,retryWhenExactFailed:r,customSource:i})}setProfile(e){const 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(__spreadProps(__spreadValues({},this.profile),{width:1920,height:1080})))}async applyProfile(){var e;if(!this.mediaTrack)return;const{width:t=0,height:A=0}=(this.sourceTrack||this.mediaTrack).getSettings(),i=t*A,r=this.settings,s=r.height!==this.profile.height||r.width!==this.profile.width||r.frameRate!==this.profile.frameRate;if(s&&(16===IOS_MAIN_VERSION&&this.deviceId?await this.recapture(this.deviceId):(await(null==(e=this.sourceTrack||this.mediaTrack)?void 0:e.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&&"publish"===this.state&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;const{width:e=0,height:t=0}=(this.sourceTrack||this.mediaTrack).getSettings(),A=e*t;return s&&A&&i&&A===i?void this.log.warn("set bandwidth failed: resolution is not changed"):this.room.setBandWidth({bandwidth:this.profile.bitrate,type:NAME.VIDEO,videoType:NAME.BIG})}}get settings(){const e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},t=this.sourceTrack||this.mediaTrack;return IS_GET_SETTINGS_SUPPORTED&&t&&Object.assign(e,t.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:calculateScaleResolutionDownNumber(this.settings,this.profile)}isAllowed2k4k(e){var t;return!this.room||!this.room.scheduleResult||(!!this.isScreen||(e.height*e.width<3686400||1===(null==(t=this.room.scheduleResult.trtcAutoConf)?void 0:t["2k4k"])))}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}async switchDevice(e){try{if(!this.isNeedToSwitchDevice(e))return;const t={useExactDeviceId:!0,retryWhenExactFailed:!1};"user"===e||"environment"===e?t.facingMode=e:t.deviceId=e,this.mediaTrack.stop(),await this.capture(t),inner_emitter_default.emit(inner_event_default.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(e){throw this.log.error(`switch camera failed ${e}`),this.deviceId&&this.recapture(this.deviceId),e}}updateSmallConfig(e){var t,A;this._log.info(`update small stream config: ${JSON.stringify(e)}`);const i=!this.small;this.small=this.fallbackProfile(e,!0),null==(t=this.manager)||t.update(),i&&(null==(A=this.room)||A.enableSmall(!0)),this.log.info("update small stream config success")}fallbackProfile(e,t=!1){const A=e.width>e.height,i=__spreadValues({},e);return e.width*e.height<=19200&&IS_ANDROID&&IS_CHROMIUM_BASE&&(this.log.warn(`${t?"small ":""}resolution is ${e.width}*${e.height}, fallback to 240*180 for android chrome`),i.width=A?240:180,i.height=A?180:240,i.bitrate=Math.max(e.bitrate,150)),e.width*e.height>921600&&IS_IOS_13_OR_14&&(i.width=A?1280:720,i.height=A?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),isVersionSmallerThan(IOS_VERSION,"14.3")&&isVersionLargerThan(IOS_VERSION,"14.0",!0)&&this.on("7",(()=>{const e=this.profile.width>this.profile.height;this.profile.width*this.profile.height>307200?(this.profile.width=e?640:480,this.profile.height=e?480:640,this.log.warn("reduce the resolution to 480p on iOS 14.0 ~ 14.2")):this.profile.width*this.profile.height>230400&&(this.profile.width=e?640:360,this.profile.height=e?360:640,this.log.warn("reduce the resolution to 360p on iOS 14.0 ~ 14.2"))})),!t&&this.avoidCropping&&(IS_CHROMIUM_BASE||IS_FIREFOX)&&!isMobile()&&e.width*e.height<=230400&&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}`)),i}stopSmall(){var e,t;this.small&&(delete this.small,null==(e=this.manager)||e.update(),null==(t=this.room)||t.enableSmall(!1))}listenDeviceChange(){deviceDetector&&!deviceDetector.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&deviceDetector.on("videoInputRemoved",this.handleCameraRemoved,this)}async handleCameraRemoved(e){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),addMonitorEvent(this.userId,{eventId:2003,param1:7,streamType:2});const t=await getCameras();t[0]?this.recapture(t[0].deviceId):deviceDetector.on("videoInputAdded",this.handleCameraAdded,this)}}async handleCameraAdded(e){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}encodeFrame(e,t){if(!this.manager)return e;const A=t?8:this.mediaType;return this.manager.encodePipeline.reduceRight(((e,t)=>t?t({frame:e,mediaType:A}):e),e)}get enableEncodeFrame(){return!!this.manager&&this.manager.encodePipeline.some((e=>e))}play(e,t){return isUndefined(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,t)}close(){deviceDetector.off("videoInputAdded",this.handleCameraAdded,this),deviceDetector.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}async recapture(e){try{await super.recapture(e)}catch(t){const A=(await getCameras()).find((t=>t.deviceId!==e));if(!A)throw t;await super.recapture(A.deviceId)}}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||isUndefined(e)||e!==this.rotation&&(this.rotation=e,this.manager.rotation=e))}};__decorateClass([after((function(e){this.setContentHint(e.contentHint||"motion")}))],LocalVideoTrack.prototype,"capture",1);var positions=[-1,-1,1,-1,-1,1,1,1],texCoords=[0,0,1,0,0,1,1,1],VideoNode=class extends FSM{constructor(e,t){if(super(),this.context=e,__publicField(this,"name"),__publicField(this,"input"),__publicField(this,"output"),__publicField(this,"texture"),__publicField(this,"ctx2d",null),__publicField(this,"fbo"),__publicField(this,"width",0),__publicField(this,"height",0),__publicField(this,"x",0),__publicField(this,"y",0),__publicField(this,"program"),__publicField(this,"vertexShader"),__publicField(this,"fragmentShader"),__publicField(this,"totalFrames",0),__publicField(this,"dropFrames",0),__publicField(this,"matchInputSize",!0),__publicField(this,"texCoordBuffer"),__publicField(this,"positionBuffer"),__publicField(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0}),__publicField(this,"cost",0),__publicField(this,"_canvas",null),__publicField(this,"_image"),__publicField(this,"log"),this.context.on("disconnect",this.close,this),this.name=t.name,this.log=t.logger,this.matchInputSize=!1!==t.matchInputSize,this.width=t.width||e.width,this.height=t.height||e.height,this._image=t.image,e instanceof Video2dContext)e.ctx&&t.create2d&&("function"==typeof OffscreenCanvas&&16!==IOS_MAIN_VERSION?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);else try{const A=e.ctx;this.texCoordBuffer=this.createBuffer(texCoords),this.positionBuffer=this.createBuffer(positions),!1!==t.createTexture&&(this.texture=A.createTexture(),this.useTexture(),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_MIN_FILTER,A.LINEAR),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_MAG_FILTER,A.LINEAR),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_WRAP_S,A.CLAMP_TO_EDGE),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_WRAP_T,A.CLAMP_TO_EDGE),A.pixelStorei(A.PACK_ALIGNMENT,1),A.pixelStorei(A.UNPACK_ALIGNMENT,1)),t.useFbo&&(this.fbo=A.createFramebuffer(),this.useBufferFrame(),this.useTexture(),A.texImage2D(A.TEXTURE_2D,0,A.RGBA,this.width,this.height,0,A.RGBA,A.UNSIGNED_BYTE,null),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_2D,this.texture,0)),t.useDefaultProgram?this.program=e.defaultProgam:(t.vertexShaderSource||t.fragmentShaderSource)&&(this.vertexShader=t.vertexShaderSource?e.createShader(A.VERTEX_SHADER,t.vertexShaderSource):e.defaultVShader,this.fragmentShader=t.fragmentShaderSource?e.createShader(A.FRAGMENT_SHADER,t.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(e){this.context.destroy(new rtc_error_default({code:error_code_default.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${e.message||e}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){const t=this.context.ctx,A=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,A),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),A}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){const t=Date.now();return!!(this.context instanceof VideoGlContext&&this.render(e)||this.context instanceof Video2dContext&&this.render2d(e))&&(this.totalFrames++,this.cost=Date.now()-t,!0)}render2d(e){var t;return!!(null==(t=this.input)?void 0:t.requestFrame(e))&&this.draw2d(this.input.image,0,0,this.width,this.height)}update(e=0){var t;null==(t=this.output)||t.update(e)}disconnect(...e){var t;null==(t=this.output)||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),null==(e=this.output)||e.removeInput(this),delete this.output,null==(t=this.input)||t.disconnect(),this.context instanceof VideoGlContext){const e=this.context.ctx;e.deleteBuffer(this.texCoordBuffer),e.deleteBuffer(this.positionBuffer),this.fbo&&e.deleteFramebuffer(this.fbo),this.texture&&e.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&e.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&e.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&e.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(null==(e=this.input)?void 0:e.texture)}useTextures(...e){const t=this.context.ctx;e.forEach(((e,A)=>{e&&(t.activeTexture(t.TEXTURE0+A),t.bindTexture(t.TEXTURE_2D,e))}))}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){const e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){const t=this.context.ctx,A=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,A),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW),A}setTexBuffer(e){const t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.texCoordBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}setPosBuffer(e){const 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){const A=this.context.ctx;A.bindBuffer(A.ARRAY_BUFFER,e),A.bufferData(A.ARRAY_BUFFER,new Float32Array(t),A.STATIC_DRAW)}setAttributes(...e){const t=this.context.ctx;e.forEach(((e,A)=>{t.enableVertexAttribArray(A),t.bindBuffer(t.ARRAY_BUFFER,e),t.vertexAttribPointer(A,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();const A=this.context.ctx;A.texImage2D(A.TEXTURE_2D,0,A.RGBA,e,t,0,A.RGBA,A.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,t)}}draw(e,t){this.setAttributes(e||this.positionBuffer,t||this.texCoordBuffer);const A=this.context.ctx;A.drawArrays(A.TRIANGLE_STRIP,0,4)}draw2d(e,t,A,i,r,s,n,a,o){const c=!(isUndefined(s)||isUndefined(n)||isUndefined(a)||isUndefined(o));return!(!this.ctx2d||!e)&&(e instanceof ImageData?c?this.ctx2d.putImageData(e,t,A,s,n,a,o):this.ctx2d.putImageData(e,t,A):(c?this.ctx2d.drawImage(e,s,n,a,o,t,A,i,r):this.ctx2d.drawImage(e,t,A,i,r),"undefined"!=typeof VideoFrame&&e instanceof VideoFrame&&e.close()),!0)}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 e;const{totalFrames:t,x:A,y:i,width:r,height:s,name:n,cost:a}=this,o=Date.now(),c=(t-this.lastInfo.totalFrames)/((o-this.lastInfo.timestamp)/1e3)|0;return this.lastInfo={totalFrames:t,x:A,y:i,width:r,height:s,timestamp:o,fps:c,name:n,cost:a},__spreadValues({parent:null==(e=this.input)?void 0:e.getInfo()},this.lastInfo)}createTexture(e){const t=this.context.ctx,A=t.createTexture();return this.useTextures(A),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),A}};function nothing(...e){}__decorateClass([ChangeState(FSM.INIT,"connected",{sync:!0})],VideoNode.prototype,"connect",1),__decorateClass([ChangeState("connected",FSM.INIT,{ignoreError:!0,sync:!0})],VideoNode.prototype,"disconnect",1),__decorateClass([ChangeState([],"closed",{sync:!0})],VideoNode.prototype,"close",1);var call=e=>e();function dispose(){this.dispose()}var inspect=()=>"undefined"!=typeof __FASTRX_DEVTOOLS__,obids=1,Inspect=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(e){const t=new NodeSink(e,this,this.streamId++);return Events.subscribe({id:this.id,end:!1},{nodeId:t.sourceId,streamId:t.id}),this(t),t}},LastSink=class{constructor(){this.defers=new Set,this.disposed=!1}next(e){}complete(){this.dispose()}error(e){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=nothing,this.error=nothing,this.next=nothing,this.dispose=nothing,this.subscribe=nothing,this.doDefer()}subscribe(e){return e instanceof Inspect?e.subscribe(this):e(this),this}get bindSubscribe(){return e=>this.subscribe(e)}doDefer(){this.defers.forEach(call),this.defers.clear()}defer(e){this.defers.add(e)}removeDefer(e){this.defers.delete(e)}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}},Sink=class extends LastSink{constructor(e){super(),this.sink=e,e.defer(this.bindDispose)}next(e){this.sink.next(e)}complete(){this.sink.complete()}error(e){this.sink.error(e)}},Subscribe=class extends LastSink{constructor(e,t=nothing,A=nothing,i=nothing){if(super(),this._next=t,this._error=A,this._complete=i,this.then=nothing,e instanceof Inspect){const r={toString:()=>"subscribe",id:0,source:e};this.defer((()=>{Events.defer(r,0)})),Events.create(r),Events.pipe(r),this.sourceId=r.id,this.subscribe(e),Events.subscribe({id:r.id,end:!0}),t==nothing?this._next=e=>Events.next(r,0,e):this.next=e=>{Events.next(r,0,e),t(e)},i==nothing?this._complete=()=>Events.complete(r,0):this.complete=()=>{this.dispose(),Events.complete(r,0),i()},A==nothing?this._error=e=>Events.complete(r,0,e):this.error=e=>{this.dispose(),Events.complete(r,0,e),A()}}else this.subscribe(e)}next(e){this._next(e)}complete(){this.dispose(),this._complete()}error(e){this.dispose(),this._error(e)}};function pipe(e,...t){return t.reduce(((e,t)=>t(e)),e)}function create3(e,t,A){if(inspect()){const i=Object.defineProperties(Object.setPrototypeOf(e,Inspect.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:t,writable:!0,configurable:!0},args:{value:A,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Events.create(i);for(let e=0;e<A.length;e++){const t=A[e];"function"==typeof t&&t instanceof Inspect&&Events.addSource(i,t)}return i}return e}function deliver(e,t){return function(...A){return i=>{if(i instanceof Inspect){const r=create3((t=>{const s=new e(t,...A);s.sourceId=r.id,s.subscribe(i)}),t,arguments);return r.source=i,Events.pipe(r),r}return t=>i(new e(t,...A))}}}function send(e,t){window.postMessage({source:"fastrx-devtools-backend",payload:{event:e,payload:t}})}var NodeSink=class extends Sink{constructor(e,t,A){super(e),this.source=t,this.id=A,this.sourceId=e.sourceId,this.defer((()=>{Events.defer(this.source,this.id)}))}next(e){Events.next(this.source,this.id,e),this.sink.next(e)}complete(){Events.complete(this.source,this.id),this.sink.complete()}error(e){Events.complete(this.source,this.id,e),this.sink.error(e)}},Events={addSource(e,t){send("addSource",{id:e.id,name:e.toString(),source:{id:t.id,name:t.toString()}})},next(e,t,A){send("next",{id:e.id,streamId:t,data:A&&A.toString()})},subscribe({id:e,end:t},A){send("subscribe",{id:e,end:t,sink:{nodeId:A&&A.nodeId,streamId:A&&A.streamId}})},complete(e,t,A){send("complete",{id:e.id,streamId:t,err:A?A.toString():null})},defer(e,t){send("defer",{id:e.id,streamId:t})},pipe(e){send("pipe",{name:e.toString(),id:e.id,source:{id:e.source.id,name:e.source.toString()}})},update(e){send("update",{id:e.id,name:e.toString()})},create(e){e.id||(e.id=obids++),send("create",{name:e.toString(),id:e.id})}},TimeoutError=class extends Error{constructor(e){super(`timeout after ${e}ms`),this.timeout=e}},Share=class extends LastSink{constructor(e){super(),this.source=e,this.sinks=new Set}add(e){e.defer((()=>this.remove(e))),1===this.sinks.add(e).size&&(this.reset(),this.subscribe(this.source))}remove(e){this.sinks.delete(e),0===this.sinks.size&&this.dispose()}next(e){this.sinks.forEach((t=>t.next(e)))}complete(){this.sinks.forEach((e=>e.complete())),this.sinks.clear()}error(e){this.sinks.forEach((t=>t.error(e))),this.sinks.clear()}};function share(){return e=>{const t=new Share(e);if(e instanceof Inspect){const A=create3((e=>{t.add(e)}),"share",arguments);return t.sourceId=A.id,A.source=e,Events.pipe(A),A}return create3(t.add.bind(t),"share",arguments)}}function merge(...e){return create3((t=>{const A=new Sink(t);let i=e.length;A.complete=()=>{0==--i&&t.complete()},e.forEach(A.bindSubscribe)}),"merge",arguments)}function race(...e){return create3((t=>{const A=new Map;e.forEach((e=>{const i=new Sink(t);A.set(e,i),i.complete=()=>{A.delete(e),0===A.size?t.complete():i.dispose()},i.next=t=>{A.delete(e),A.forEach((e=>e.dispose())),i.resetNext(),i.resetComplete(),i.next(t)}})),e.forEach((e=>A.get(e).subscribe(e)))}),"race",arguments)}function combineLatest(...e){return create3((t=>{const A=e.length;let i=A,r=A;const s=new Array(A),n=()=>{0==--r&&t.complete()};e.forEach(((e,A)=>{const r=new Sink(t);r.next=e=>{0==--i?(r.next=e=>{s[A]=e,t.next(s)},r.next(e)):s[A]=e},r.complete=n,r.subscribe(e)}))}),"combineLatest",arguments)}function startWith(...e){return t=>create3(((A,i=0,r=e.length)=>{for(;i<r&&!A.disposed;)A.next(e[i++]);A.disposed||A.subscribe(t)}),"startWith",arguments)}var WithLatestFrom=class extends Sink{constructor(e,...t){super(e);const A=new Sink(this.sink);A.next=e=>this.buffer=e,A.complete=nothing,A.subscribe(combineLatest(...t))}next(e){this.buffer&&this.sink.next([e,...this.buffer])}},withLatestFrom=deliver(WithLatestFrom,"withLatestFrom"),BufferCount=class extends Sink{constructor(e,t,A){super(e),this.bufferSize=t,this.startBufferEvery=A,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(e){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach((t=>{t.push(e)})),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(e),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((e=>this.sink.next(e))),super.complete()}},bufferCount=deliver(BufferCount,"bufferCount"),Buffer3=class extends Sink{constructor(e,t){super(e),this.buffer=[];const A=new Sink(e);A.next=t=>{e.next(this.buffer),this.buffer=[]},A.complete=nothing,A.subscribe(t)}next(e){this.buffer.push(e)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},buffer=deliver(Buffer3,"buffer");function subject(e){const t=arguments,A=share()(create3((t=>{A.next=e=>t.next(e),A.complete=()=>t.complete(),A.error=e=>t.error(e),e&&t.subscribe(e)}),"subject",t));return A.next=nothing,A.complete=nothing,A.error=nothing,A}function interval(e){return create3((t=>{let A=0;const i=setInterval((()=>t.next(A++)),e);return t.defer((()=>{clearInterval(i)})),"interval"}),"interval",arguments)}function timer(e,t){return create3((A=>{let i=0;const r=setTimeout((()=>{if(A.removeDefer(s),A.next(i++),t){const e=setInterval((()=>A.next(i++)),t);A.defer((()=>{clearInterval(e)}))}else A.complete()}),e),s=()=>{clearTimeout(r)};A.defer(s)}),"timer",arguments)}function _fromEventPattern(e,t){return A=>{const i=e=>A.next(e);A.defer((()=>t(i))),e(i)}}function fromEvent(e,t){if("on"in e&&"off"in e)return create3(_fromEventPattern((A=>e.on(t,A)),(A=>e.off(t,A))),"fromEvent",arguments);if("addListener"in e&&"removeListener"in e)return create3(_fromEventPattern((A=>e.addListener(t,A)),(A=>e.removeListener(t,A))),"fromEvent",arguments);if("addEventListener"in e)return create3(_fromEventPattern((A=>e.addEventListener(t,A)),(A=>e.removeEventListener(t,A))),"fromEvent",arguments);throw"target is not a EventDispachter"}function empty(){return create3((e=>e.complete()),"empty",arguments)}var Reduce=class extends Sink{constructor(e,t,A){super(e),this.f=t;const i=()=>{this.sink.next(this.acc),this.sink.complete()};void 0===A?this.next=e=>{this.acc=e,this.complete=i,this.resetNext()}:(this.acc=A,this.complete=i)}next(e){this.acc=this.f(this.acc,e)}},reduce=deliver(Reduce,"reduce"),Filter=class extends Sink{constructor(e,t,A){super(e),this.filter=t,this.thisArg=A}next(e){this.filter.call(this.thisArg,e)&&this.sink.next(e)}},filter=deliver(Filter,"filter"),Ignore=class extends Sink{next(e){}},ignoreElements=deliver(Ignore,"ignoreElements"),Take=class extends Sink{constructor(e,t){super(e),this.count=t}next(e){this.sink.next(e),0==--this.count&&this.complete()}},take=deliver(Take,"take"),TakeUntil=class extends Sink{constructor(e,t){super(e);const A=new Sink(e);A.next=()=>e.complete(),A.complete=dispose,A.subscribe(t)}},takeUntil=deliver(TakeUntil,"takeUntil"),TakeWhile=class extends Sink{constructor(e,t){super(e),this.f=t}next(e){this.f(e)?this.sink.next(e):this.complete()}},takeWhile=deliver(TakeWhile,"takeWhile"),Skip=class extends Sink{constructor(e,t){super(e),this.count=t}next(e){0==--this.count&&(this.next=super.next)}},skip=deliver(Skip,"skip"),SkipUntil=class extends Sink{constructor(e,t){super(e),e.next=nothing;const A=new Sink(e);A.next=()=>{A.dispose(),e.resetNext()},A.complete=dispose,A.subscribe(t)}},skipUntil=deliver(SkipUntil,"skipUntil"),SkipWhile=class extends Sink{constructor(e,t){super(e),this.f=t}next(e){this.f(e)||(this.next=super.next,this.next(e))}},skipWhile=deliver(SkipWhile,"skipWhile"),defaultThrottleConfig={leading:!0,trailing:!1},_Throttle=class extends Sink{constructor(e,t,A){super(e),this.durationSelector=t,this.trailing=A}cacheValue(e){this.last=e,this.disposed&&this.throttle(e)}send(e){this.sink.next(e),this.throttle(e)}throttle(e){this.reset(),this.subscribe(this.durationSelector(e))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},Throttle=class extends Sink{constructor(e,t,A=defaultThrottleConfig){super(e),this.durationSelector=t,this.config=A,this._throttle=new _Throttle(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(e){this._throttle.disposed&&this.config.leading?this._throttle.send(e):this._throttle.cacheValue(e)}complete(){this._throttle.throttle=nothing,this._throttle.complete(),super.complete()}},throttle=deliver(Throttle,"throttle"),_Debounce=class extends Sink{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},Debounce=class extends Sink{constructor(e,t){super(e),this.durationSelector=t,this._debounce=new _Debounce(this.sink),this._debounce.dispose()}next(e){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=e,this._debounce.subscribe(this.durationSelector(e))}complete(){this._debounce.complete(),super.complete()}},debounce=deliver(Debounce,"debounce"),ElementAt=class extends Sink{constructor(e,t,A){super(e),this.count=t,this.defaultValue=A}next(e){0==this.count--&&(this.defaultValue=e,this.complete())}complete(){void 0!==this.defaultValue?(this.sink.next(this.defaultValue),super.complete()):this.error(new Error("not enough elements in sequence"))}},elementAt=deliver(ElementAt,"elementAt"),FindIndex=class extends Sink{constructor(e,t){super(e),this.f=t,this.i=0}next(e){this.f(e)?(this.sink.next(this.i++),this.complete()):++this.i}},findIndex=deliver(FindIndex,"findIndex"),First=class extends Sink{constructor(e,t,A){super(e),this.f=t,this.defaultValue=A,this.index=0}next(e){this.f&&!this.f(e,this.index++)||(this.defaultValue=e,this.complete())}complete(){void 0!==this.defaultValue?(this.sink.next(this.defaultValue),super.complete()):this.error(new Error("no elements in sequence"))}},first=deliver(First,"first"),Last=class extends Sink{constructor(e,t,A){super(e),this.f=t,this.defaultValue=A,this.index=0}next(e){this.f&&!this.f(e,this.index++)||(this.defaultValue=e)}complete(){void 0!==this.defaultValue?(this.sink.next(this.defaultValue),super.complete()):this.error(new Error("no elements in sequence"))}},last=deliver(Last,"last"),Every=class extends Sink{constructor(e,t){super(e),this.predicate=t,this.index=0}next(e){this.predicate(e,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){void 0!==this.result?(this.sink.next(this.result),super.complete()):this.error(new Error("no elements in sequence"))}},every=deliver(Every,"every"),Scan=class extends Sink{constructor(e,t,A){super(e),this.f=t,void 0===A?this.next=e=>{this.acc=e,this.resetNext(),this.sink.next(this.acc)}:this.acc=A}next(e){this.sink.next(this.acc=this.f(this.acc,e))}},scan=deliver(Scan,"scan"),Pairwise=class extends Sink{constructor(){super(...arguments),this.hasLast=!1}next(e){this.hasLast?this.sink.next([this.last,e]):this.hasLast=!0,this.last=e}},pairwise=deliver(Pairwise,"pairwise"),MapObserver=class extends Sink{constructor(e,t,A){super(e),this.mapper=t,this.thisArg=A}next(e){super.next(this.mapper.call(this.thisArg,e))}},map=deliver(MapObserver,"map"),InnerSink=class extends Sink{constructor(e,t,A){super(e),this.data=t,this.context=A}next(e){const t=this.context.combineResults;t?this.sink.next(t(this.data,e)):this.sink.next(e)}tryComplete(){this.context.resetComplete(),this.dispose()}},Maps=class extends Sink{constructor(e,t,A){super(e),this.makeSource=t,this.combineResults=A,this.index=0}subInner(e,t){const A=this.currentSink=new t(this.sink,e,this);this.complete=this.tryComplete,A.complete=A.tryComplete,A.subscribe(this.makeSource(e,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},_SwitchMap=class extends InnerSink{},SwitchMap=class extends Maps{next(e){this.subInner(e,_SwitchMap),this.next=e=>{this.currentSink.dispose(),this.subInner(e,_SwitchMap)}}},switchMap=deliver(SwitchMap,"switchMap");function makeMapTo(e){return(t,A)=>e((()=>t),A)}var switchMapTo=makeMapTo(deliver(SwitchMap,"switchMapTo")),_ConcatMap=class extends InnerSink{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},ConcatMap=class extends Maps{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(e){this.next2(e),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),_ConcatMap),this.disposed&&0===this.sources.length&&this.currentSink.resetComplete()}tryComplete(){0===this.sources.length&&this.currentSink.resetComplete(),this.dispose()}},concatMap=deliver(ConcatMap,"concatMap"),concatMapTo=makeMapTo(deliver(ConcatMap,"concatMapTo")),_MergeMap=class extends InnerSink{tryComplete(){this.context.inners.delete(this),super.dispose(),0===this.context.inners.size&&this.context.resetComplete()}},MergeMap=class extends Maps{constructor(){super(...arguments),this.inners=new Set}next(e){this.subInner(e,_MergeMap),this.inners.add(this.currentSink)}tryComplete(){1===this.inners.size?this.inners.forEach((e=>e.resetComplete())):this.dispose()}},mergeMap=deliver(MergeMap,"mergeMap"),mergeMapTo=makeMapTo(deliver(MergeMap,"mergeMapTo")),_ExhaustMap=class extends InnerSink{dispose(){this.context.resetNext(),super.dispose()}},ExhaustMap=class extends Maps{next(e){this.next=nothing,this.subInner(e,_ExhaustMap)}},exhaustMap=deliver(ExhaustMap,"exhaustMap"),exhaustMapTo=makeMapTo(deliver(ExhaustMap,"exhaustMapTo")),GroupBy=class extends Sink{constructor(e,t){super(e),this.f=t,this.groups=new Map}next(e){const t=this.f(e);let A=this.groups.get(t);void 0===A&&(A=subject(),A.key=t,this.groups.set(t,A),super.next(A)),A.next(e)}complete(){this.groups.forEach((e=>e.complete())),super.complete()}error(e){this.groups.forEach((t=>t.error(e))),super.error(e)}},groupBy=deliver(GroupBy,"groupBy"),TimeInterval=class extends Sink{constructor(){super(...arguments),this.start=new Date}next(e){this.sink.next({value:e,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},timeInterval=deliver(TimeInterval,"timeInterval"),BufferTime=class extends Sink{constructor(e,t){super(e),this.miniseconds=t,this.buffer=[],this.id=setInterval((()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0}),this.miniseconds)}next(e){this.buffer.push(e)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},bufferTime=deliver(BufferTime,"bufferTime"),Delay=class extends Sink{constructor(e,t){super(e),this.buffer=[],this.delayTime=t}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(e){this.timeoutId=setTimeout((()=>{const e=this.buffer.shift();if(e){const{time:t,data:A}=e;super.next(A),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(t))}}),e)}next(e){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:e})}complete(){this.timeoutId=setTimeout((()=>super.complete()),this.delayTime)}},delay2=deliver(Delay,"delay"),CatchError=class extends Sink{constructor(e,t){super(e),this.selector=t}error(e){this.dispose(),this.selector(e)(this.sink)}},catchError=deliver(CatchError,"catchError"),subscribe=(e=nothing,t=nothing,A=nothing)=>i=>new Subscribe(i,e,t,A),Tap=class extends Sink{constructor(e,t){super(e),t instanceof Function?this.next=A=>{t(A),e.next(A)}:(t.next&&(this.next=A=>{t.next(A),e.next(A)}),t.complete&&(this.complete=()=>{t.complete(),e.complete()}),t.error&&(this.error=A=>{t.error(A),e.error(A)}))}},tap=deliver(Tap,"tap"),Timeout=class extends Sink{constructor(e,t){super(e),this.timeout=t,this.id=setTimeout((()=>this.error(new TimeoutError(this.timeout))),this.timeout)}next(e){super.next(e),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},timeout=deliver(Timeout,"timeout"),tick250msOb=pipe(interval(250),map((()=>performance.now())),share()),mcTimeout=e=>t=>{const A=performance.now();pipe(tick250msOb,skipWhile((t=>t-A<e)),take(1))(t)},texCoords2=[0,1,1,1,0,0,1,0],VideoDestinationNode=class extends VideoNode{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t)),__publicField(this,"_intervalId",0),__publicField(this,"_sequence",0),__publicField(this,"checkGLError",!1),__publicField(this,"checkVisibilityChange"),e instanceof Video2dContext?this.ctx2d=e.ctx||null:e.available&&(null==t?void 0:t.mirrorUpAndDown)&&this.setTexBuffer(texCoords2)}start(e){this.log.info(`${this.name} start render ${e} fps`),timer_default.clearTask(this._intervalId),this._intervalId=timer_default.run("intervalInWorker",(()=>{if(e!==this.context.frameRate&&(timer_default.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof VideoGlContext){const e=this.context.ctx.getError();e&&this.context.destroy(new rtc_error_default({code:error_code_default.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${e}`}))}}),{fps:this.context.frameRate})}render(e){var t;return!!(null==(t=this.input)?void 0:t.requestFrame(e))&&(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0)}addInput(e,...t){super.addInput(e,...t),this.start(this.context.frameRate)}update(e=0){this._intervalId&&(timer_default.clearTask(this._intervalId),this._intervalId=0,1===e&&(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),timer_default.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),timer_default.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},VideoTrackDestination=class extends VideoDestinationNode{constructor(e,t){super(e,t),__publicField(this,"_videoTrack"),__publicField(this,"_muteOb"),__publicField(this,"_closedOb",fromEvent(this,"closed")),__publicField(this,"_subscription"),__publicField(this,"_canvasContainer"),Number(SAFARI_VERSION)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=fromEvent(this._videoTrack,"mute"),pipe(fromEvent(this._videoTrack,"ended"),takeUntil(this._closedOb),subscribe((()=>{this.context.destroy(new rtc_error_default({code:error_code_default.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))})))}enableCheckMute(){this._subscription=pipe(this._muteOb,takeUntil(this._closedOb),switchMapTo(mcTimeout(5e3)),filter((()=>{var e;return!!(null==(e=this._videoTrack)?void 0:e.muted)&&!document.hidden})),subscribe((()=>{this.context.destroy(new rtc_error_default({code:error_code_default.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))})))}disableCheckMute(){var e;null==(e=this._subscription)||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(),null==(e=this._videoTrack)||e.stop(),delete this._videoTrack,null==(t=this._canvasContainer)||t.remove()}},VideoImageSourceNode=class extends VideoNode{constructor(e,t){super(e,__spreadValues({name:"imageSource"},t)),__publicField(this,"_lastImage"),__publicField(this,"_totalFrames",0),__publicField(this,"_autoResize",!1),__publicField(this,"_canvasRendered"),__publicField(this,"_videoCallbackId",0),__publicField(this,"waitingFirstFrame",!0),__publicField(this,"shouldUpdate",!0),this._autoResize=!1!==(null==t?void 0:t.autoResize),16===IOS_MAIN_VERSION&&(this._canvasRendered=subject(),pipe(this._canvasRendered,startWith(this._image),switchMap((e=>e instanceof HTMLCanvasElement?fromEvent(e,"rendered"):empty())),takeUntil(fromEvent(this,"closed")),subscribe((()=>{this.update()}))))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;const e=this.image;this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),isRequestVideoFrameCallbackSupported()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback(((e,t)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=t.presentedFrames,this.update(1))})))}_render(e,t){var A;let{width:i,height:r}=this;const{image:s}=this;if(s instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),({videoWidth:i,videoHeight:r}=s),!i||!r)return!1;s.width=i,s.height=r}else if(s instanceof HTMLImageElement||s instanceof ImageData||s instanceof ImageBitmap){if(({width:i,height:r}=s),s!==this._lastImage)this._lastImage=s;else if(i===this.width&&r===this.height)return!1}else s instanceof HTMLCanvasElement||s instanceof OffscreenCanvas?(({width:i,height:r}=s),this._lastImage=s):"undefined"!=typeof VideoFrame&&s instanceof VideoFrame&&(({displayWidth:i,displayHeight:r}=s),null==(A=this._lastImage)||A.close(),this._lastImage=s);if(!this._autoResize)return!0;if(this.width===i&&this.height===r&&this.totalFrames){if(t){this.useTexture();const e=this.context.ctx;e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,s)}}else{if(t){this.useTexture();const e=this.context.ctx;e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,s)}this.resize(i,r)}return!0}get image(){return this._image}set image(e){var t;null==(t=this._canvasRendered)||t.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},VideoPlayerSourceNode=class extends VideoImageSourceNode{constructor(e,t,A){super(e,A),this._player=t,this.name="videoPlayerSource",pipe(fromEvent(this._player,PlayerEvent.PLAYER_STATE_CHANGED),takeUntil(fromEvent(this,"closed")),filter((({state:e})=>"PLAYING"===e)),subscribe((()=>{this.tryVideoFrameCallback()})))}get image(){return this._player.element}},VideoTrackSourceNode=class extends VideoPlayerSourceNode{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(e,t,A){super(e,new VideoPlayer({id:A.name,track:t,muted:!0,container:null,objectFit:"contain",log:A.logger}),A),this.name="videoTrackSource",this._player.play()}replaceTrack(e){this.waitingFirstFrame=!0,this._player.setTrack(e),this._player.play()}close(){super.close(),this._player.stop()}},TextSourceNode=class extends VideoNode{constructor(e,t,A){super(e,__spreadProps(__spreadValues({name:"textSource"},A),{create2d:!0})),__publicField(this,"hasChange",!0),__publicField(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(null==(e=this.ctx2d)?void 0:e.font)||""}set color(e){this.ctx2d&&(this.ctx2d.fillStyle=e,this.hasChange=!0)}get color(){var e;return(null==(e=this.ctx2d)?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)}render(e){return!1}resize(e,t){if(!this.ctx2d)return;const{color:A,font:i}=this;super.resize(e,t),this.color=A,this.font=i}drawMultilineText(e=0,t=0,A=1.2){if(!this.ctx2d)return;const i=this.ctx2d.measureText(this.content);t+=i.fontBoundingBoxAscent||i.actualBoundingBoxAscent||0;const r=this.font.match(/(\d+)px/),s=(r?parseInt(r[1],10):16)*A,n=this.content.split("\n");for(let A=0;A<n.length;A++)this.ctx2d.fillText(n[A],e,t+A*s)}},vertexShaderSource="\n// 顶点着色器\nattribute vec4 a_position;\nattribute vec2 a_texCoord;\nvarying vec2 v_texCoord;\n\nvoid main() {\n gl_Position = a_position;\n v_texCoord = a_texCoord;\n}\n",fragmentShaderSource="\n// 片元着色器\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_texture;\n\nvoid main() {\n gl_FragColor = texture2D(u_texture, v_texCoord);\n} ",VideoContext=class extends FSM{constructor(e){super(),__publicField(this,"frameRate"),__publicField(this,"_canvas"),__publicField(this,"log"),__publicField(this,"hasAlpha",!1),__publicField(this,"name"),__publicField(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(null==(e=this._canvas)?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return(null==(e=this._canvas)?void 0:e.height)||0}setSize(e,t){this._canvas&&(this._canvas.width=e,this._canvas.height=t)}createVideoTrackSource(e,t){return new VideoTrackSourceNode(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new VideoTrackDestination(this,e)}createVideoImageSource(e,t){return new VideoImageSourceNode(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new VideoPlayerSourceNode(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}createTextSource(e,t){return new TextSourceNode(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return"created"===this.state}disconnect(){this.emit("disconnect")}};__publicField(VideoContext,"_ids",0);var WEBGL_ATTRIBUTES={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},_VideoGlContext=class extends VideoContext{constructor(){super(...arguments),__publicField(this,"defaultProgam"),__publicField(this,"defaultVShader"),__publicField(this,"defaultFShader"),__publicField(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${VideoContext._ids++}`),this.ctx=this._canvas.getContext("webgl2",WEBGL_ATTRIBUTES),!this.ctx)throw new rtc_error_default({code:error_code_default.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,vertexShaderSource),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,fragmentShaderSource),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",(()=>{this.destroy(new rtc_error_default({code:error_code_default.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))}))}destroy(e){let t="";return e&&(t=e.message,this.error=e,kv_stat_manager_default.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;null==(t=this.ctx)||t.viewport(0,0,e,this.height),super.width=e}set height(e){var t;null==(t=this.ctx)||t.viewport(0,0,this.width,e),super.height=e}setSize(e,t){var A;null==(A=this.ctx)||A.viewport(0,0,e,t),super.setSize(e,t)}createShader(e,t){const A=this.ctx,i=A.createShader(e);return A.shaderSource(i,t),A.compileShader(i),i}createProgram(e,t){const A=this.ctx,i=A.createProgram();return A.attachShader(i,e),A.attachShader(i,t),A.linkProgram(i),A.getProgramParameter(i,A.LINK_STATUS)||this.log.error(A.getProgramInfoLog(i)),i}};__publicField(_VideoGlContext,"UNAVAILABLE","unavailable"),__decorateClass([ChangeState(FSM.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),kv_stat_manager_default.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),kv_stat_manager_default.addSuccessEvent({key:512700})}})],_VideoGlContext.prototype,"create",1),__decorateClass([ChangeState("created",FSM.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(_VideoGlContext.UNAVAILABLE,e),this.removeAllListeners()}})],_VideoGlContext.prototype,"destroy",1);var VideoGlContext=_VideoGlContext,Video2dContext=class extends VideoContext{constructor(){super(...arguments),__publicField(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${VideoContext._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new rtc_error_default({code:error_code_default.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,kv_stat_manager_default.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(),kv_stat_manager_default.addSuccessEvent({key:512703})}};__decorateClass([ChangeState(FSM.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),kv_stat_manager_default.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),kv_stat_manager_default.addSuccessEvent({key:512701})}})],Video2dContext.prototype,"create",1),__decorateClass([ChangeState("created",FSM.INIT,{ignoreError:!0,sync:!0})],Video2dContext.prototype,"destroy",1);var currentTabID=uuid_default();if("undefined"!=typeof navigator&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:currentTabID,exposeOrigin:!0,permittedOrigins:["*"]})}catch(e){}var getDisplayMedia=async function(e){let t=null;const A=buildScreenConstraints(e);logger_manager_default.info(`getDisplayMedia with constraints: ${JSON.stringify(A)}`);const i=await navigator.mediaDevices.getDisplayMedia(A);e.systemAudio&&0===i.getAudioTracks().length&&(IS_CHROME&&CHROME_MAJOR_VERSION<74||IS_SAFARI||IS_FIREFOX)&&logger_manager_default.warn("Your browser not support capture system audio");const r=i.getVideoTracks()[0];if(r){if(e.frameRate)try{await r.applyConstraints({frameRate:{min:e.frameRate,ideal:e.frameRate},width:e.width,height:e.height})}catch(e){logger_manager_default.warn(`screen applyConstraints failed: ${e}`)}e.captureElement&&await cropCurrentTabVideoTrackTo(r,e.captureElement)}if(e.audio){const A=buildConstraints2(e);logger_manager_default.info(`getUserMedia with constraints: ${JSON.stringify(A)}`),t=await navigator.mediaDevices.getUserMedia(A),i.addTrack(t.getAudioTracks()[0])}return i};async function cropCurrentTabVideoTrackTo(e,t){var A;if("CropTarget"in window&&"fromElement"in CropTarget&&isFunction(e.cropTo))try{if(!((null==(A=e.getCaptureHandle())?void 0:A.handle)===currentTabID))return;const i=await CropTarget.fromElement(t);await e.cropTo(i)}catch(e){logger_manager_default.warn(`cropTo target failed ${e}`)}}function buildConstraints2(e){const t={echoCancellation:e.echoCancellation,autoGainControl:e.autoGainControl,noiseSuppression:e.noiseSuppression,sampleRate:e.sampleRate,channelCount:e.channelCount};return isUndefined(e.microphoneId)||(t.deviceId=e.microphoneId),{audio:t,video:!1}}function buildScreenConstraints(e){const t={preferCurrentTab:"current-tab"===e.preferDisplaySurface||!!e.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},A={width:IS_SAFARI?{max:e.width}:{ideal:e.width,max:e.width},height:IS_SAFARI?{max:e.height}:{ideal:e.height,max:e.height},frameRate:e.frameRate,displaySurface:e.preferDisplaySurface||"monitor"};if(t.video=A,e.systemAudio){const{echoCancellation:A=!0,noiseSuppression:i=!1,autoGainControl:r=!1}=e;t.audio={echoCancellation:A,noiseSuppression:i,autoGainControl:r,sampleRate:48e3}}return t}var get_display_media_default=getDisplayMedia,LocalScreenTrack=class extends LocalVideoTrack{constructor(e){super(e,2),__publicField(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600}),__publicField(this,"objectFit","contain"),__publicField(this,"isScreen",!0),this._log.id=`s-${this._log.id}`}get isShareCurrentTab(){var e,t;try{return currentTabID===(null==(t=null==(e=this.mediaTrack)?void 0:e.getCaptureHandle())?void 0:t.handle)}catch(e){return}}async capture({systemAudio:e=!1,autoGainControl:t,echoCancellation:A,noiseSuppression:i,audioTrack:r,videoTrack:s,captureElement:n,preferDisplaySurface:a}){try{let o;return s||r?(o=new MediaStream,s&&o.addTrack(s),r&&o.addTrack(r)):(o=await get_display_media_default({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:t,echoCancellation:A,noiseSuppression:i,captureElement:n,preferDisplaySurface:a}),this.sourceTrack=o.getVideoTracks()[0]),await this.setInputMediaStreamTrack(o.getVideoTracks()[0]),o}catch(e){throw this.log.error(`getDisplayMedia error observed ${e}`),e instanceof rtc_error_default?e:new rtc_error_default({code:error_code_default.INITIALIZE_FAILED,name:e.name,message:e.message})}}async switchDevice(e){throw new Error("Method not implemented.")}};function checkPendingPromise(e=30,t=2){return createDecorator(((A,i)=>function(...r){return new Promise(((s,n)=>{const a=setTimeout((()=>{const A=new rtc_error_default({code:error_code_default.API_CALL_TIMEOUT,message:`checkPendingPromise ${i}() timeout ${e}s`});logger_manager_default.warn(A),2===t?n(A):1===t&&s()}),1e3*e);A.apply(this,r).then(s,n).finally((()=>{clearTimeout(a)}))}))}))}__decorateClass([after((function(e){this.setContentHint(e.contentHint||"detail")}))],LocalScreenTrack.prototype,"capture",1);var _RemoteTrack=class e extends Track{constructor(t,A,i){super({userId:A.userId,sdkAppId:t.sdkAppId,mediaType:i,room:t}),this.room=t,this.user=A,__publicField(this,"tinyId"),__publicField(this,"isRemote",!0),__publicField(this,"jitterBufferDelay",0),__publicField(this,"availableState"),__publicField(this,"remotePublishState"),__publicField(this,"_triggerCheckDecodeSubject",subject(fromEvent(this,e.STATE_SUBSCRIBE))),this.tinyId=A.tinyId,this.availableState=new FSM(`${A.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new FSM(`${A.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),pipe(merge(fromEvent(this,FSM.STATECHANGED),fromEvent(this.remotePublishState,FSM.STATECHANGED)),map((()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing))),subscribe((e=>{this.availableState.state!==(e?FSM.ON:FSM.OFF)&&(this.availableState.state=e?FSM.ON:FSM.OFF),this.updatePlayingState(e)})));const r=pipe(fromEvent(this.player,PlayerEvent.ERROR),filter((e=>e.code===MediaError.MEDIA_ERR_DECODE))),s=pipe(timer(5e3),filter((()=>{if(this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived)return!1;return!(this.player.isPlaying||(this.kind===NAME.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0))||(this.reportDecodeResult(!0),!1)}))),n=pipe(race(r,s),takeUntil(fromEvent(this,FSM.INIT)));pipe(this._triggerCheckDecodeSubject,filter((()=>!this.ignoreDecodeError)),switchMapTo(n),subscribe((e=>{this.reportDecodeResult(!1,e)})))}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 e,t;return((null==(t=null==(e=this.room)?void 0:e.networkQuality)?void 0:t.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return"subscribeing"===this.state.toString()}get isSubscribed(){return this.state===e.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===FSM.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),"main"===this.streamType&&"video"===this.kind&&this.room.changeType(!1,this.user)}reportDecodeResult(e,t){var A,i;const r=this.kind===NAME.AUDIO;if(kv_stat_manager_default[e?"addSuccessEvent":"addFailedEvent"]({key:r?504700:514702}),!r){const t=(null==(A=this.room)?void 0:A.downlinkVideoCodec.toUpperCase())||"H264";kv_stat_manager_default[e?"addSuccessEvent":"addFailedEvent"]({key:KV_REPORT_KEY_VIDEO_DECODE[`DECODE_${t}_RESULT`]}),e||this.log.warn(`${null==(i=this.room)?void 0:i.downlinkVideoCodec} decode failed`)}e||(kv_stat_manager_default.addEnum({key:r?504701:514703,value:getOSNumber()}),event_log_default.uploadEvent({log:`stat-decode-failed-${this.kind}-${getDeviceModel()||getOSString()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===NAME.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))return void this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?FSM.ON:FSM.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};__publicField(_RemoteTrack,"STATE_SUBSCRIBE","subscribe"),__decorateClass([checkPendingPromise(5,1)],_RemoteTrack.prototype,"waitHasMediaTrack",1),__decorateClass([ChangeState(FSM.INIT,_RemoteTrack.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),inner_emitter_default.emit(inner_event_default.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),reportSuccessRate(521716,!1)],_RemoteTrack.prototype,"subscribe",1),__decorateClass([ChangeState(_RemoteTrack.STATE_SUBSCRIBE,FSM.INIT,{sync:!0,success(){this.log.info("unsubscribed"),inner_emitter_default.emit(inner_event_default.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],_RemoteTrack.prototype,"unsubscribe",1);var RemoteTrack=_RemoteTrack,eventHub=new Map;function addMonitorEvent(e,t){const A=__spreadProps(__spreadValues({},t),{timestamp:getCurrentTime()});eventHub.has(e)?eventHub.get(e).push(A):eventHub.set(e,[A])}inner_emitter_default.on(inner_event_default.JOIN_SUCCESS,(({room:e})=>{addMonitorEvent(e.userId,{eventId:32788})})),inner_emitter_default.on(inner_event_default.LEAVE_START,(({room:e})=>{addMonitorEvent(e.userId,{eventId:32789})})),inner_emitter_default.on(inner_event_default.LOCAL_TRACK_PUBLISHED,(({track:e})=>{if(e.room){let t=32769;4===e.mediaType?t=32768:2===e.mediaType&&(t=32805),addMonitorEvent(e.room.userId,{eventId:t})}})),inner_emitter_default.on(inner_event_default.LOCAL_TRACK_UNPUBLISHED,(({track:e})=>{if(e.room){let t=32771;4===e.mediaType?t=32770:2===e.mediaType&&(t=32806),addMonitorEvent(e.room.userId,{eventId:t})}})),inner_emitter_default.on(inner_event_default.TRACK_MUTED,(({track:e})=>{e.room&&(e.kind===NAME.AUDIO?addMonitorEvent(e.room.userId,{eventId:e.isRemote?32785:32772,remoteUserId:e.isRemote?e.userId:void 0}):addMonitorEvent(e.room.userId,{eventId:e.isRemote?32784:32773,remoteUserId:e.isRemote?e.userId:void 0}))})),inner_emitter_default.on(inner_event_default.TRACK_UNMUTED,(({track:e})=>{e.room&&(e.kind===NAME.AUDIO?addMonitorEvent(e.room.userId,{eventId:e.isRemote?32787:32774,remoteUserId:e.isRemote?e.userId:void 0}):addMonitorEvent(e.room.userId,{eventId:e.isRemote?32786:32775,remoteUserId:e.isRemote?e.userId:void 0}))})),inner_emitter_default.on(inner_event_default.REMOTE_TRACK_SUBSCRIBED,(({track:e})=>{e.room&&(1===e.mediaType&&addMonitorEvent(e.room.userId,{eventId:32777,remoteUserId:e.userId}),4===e.mediaType&&addMonitorEvent(e.room.userId,{eventId:32776,remoteUserId:e.userId}),8===e.mediaType&&addMonitorEvent(e.room.userId,{eventId:32803,remoteUserId:e.userId}))})),inner_emitter_default.on(inner_event_default.REMOTE_TRACK_UNSUBSCRIBED,(({track:e})=>{e.room&&(1===e.mediaType&&addMonitorEvent(e.room.userId,{eventId:32779,remoteUserId:e.userId}),4===e.mediaType&&addMonitorEvent(e.room.userId,{eventId:32778,remoteUserId:e.userId}),8===e.mediaType&&addMonitorEvent(e.room.userId,{eventId:32804,remoteUserId:e.userId}))})),inner_emitter_default.on(inner_event_default.SWITCH_DEVICE_SUCCESS,(({track:e})=>{e.room&&addMonitorEvent(e.room.userId,{eventId:e.kind===NAME.VIDEO?32780:32781})})),inner_emitter_default.on(inner_event_default.LOCAL_TRACK_REPLACED,(({track:e})=>{e.room&&addMonitorEvent(e.room.userId,{eventId:e.kind===NAME.VIDEO?32782:32783})})),inner_emitter_default.on(inner_event_default.SIGNAL_CONNECTION_STATE_CHANGED,(({room:e,prevState:t,state:A})=>{let i;switch(A){case"CONNECTED":i="RECONNECTING"===t?32795:32791;break;case"DISCONNECTED":i="RECONNECTING"===t?32796:32790;break;case"RECONNECTING":i=32794}i&&addMonitorEvent(e.userId,{eventId:i})})),inner_emitter_default.on(inner_event_default.PEER_CONNECTION_STATE_CHANGED,(({room:e,prevState:t,state:A,remoteUserId:i})=>{const r=!!i;let s;switch(A){case"CONNECTED":s="RECONNECTING"===t?r?32801:32798:r?32793:32792;break;case"DISCONNECTED":"RECONNECTING"===t&&(s=r?32802:32799);break;case"RECONNECTING":s=r?32800:32797}s&&addMonitorEvent(e.userId,{eventId:s,remoteUserId:i})})),inner_emitter_default.on(inner_event_default.VIDEO_CODEC_IMPLEMENTATION_CHANGED,(({implementation:e,userId:t,remoteUserId:A,codec:i,isHWCodec:r,prevImplementation:s,streamType:n})=>{let a=r?1:0;s||(a=r?3:2);const o={H264:0,H265:1,VP8:2}[i.toUpperCase()],c={eventId:4004,param1:a,param2:o,streamType:n||2};A&&(c.remoteUserId=A,c.eventId=4005),addMonitorEvent(t,c),kv_stat_manager_default.addEnum({key:A?514701:513701,value:a}),kv_stat_manager_default.addEnum({key:A?514700:513700,value:o})})),inner_emitter_default.on(inner_event_default.LOCAL_TRACK_RECAPTURE,(({track:e,error:t})=>{if(e.userId){const A={eventId:2003,param1:0};e.kind===NAME.AUDIO?(A.streamType=1,t&&(A.param1=2)):(A.streamType="auxiliary"===e.streamType?7:2,t&&(A.param1=8)),addMonitorEvent(e.userId,A)}}));var import_eventemitter34=__toESM(require_eventemitter3(),1),KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE=570703,vbSeq=0,_VirtualBackground=class e{constructor(e){this.core=e,__publicField(this,"seq"),__publicField(this,"_core"),__publicField(this,"log"),__publicField(this,"preLoadPromise"),__publicField(this,"startResolve"),__publicField(this,"startReject"),__publicField(this,"mediaPipeSolutions"),__publicField(this,"assetsPath"),__publicField(this,"currentType"),__publicField(this,"onAbort"),__publicField(this,"isAborted",!1),vbSeq+=1,this.seq=vbSeq,this._core=e,this.log=e.log.createChild({id:`${this.getAlias()}${vbSeq}`}),this.log.info("created"),e.assetsPath&&(this.preLoadPromise=this.preload(e.assetsPath))}static isSupported(){if(CHROME_MAJOR_VERSION<90)return!1;const e=document.createElement("canvas").getContext("webgl2");return!!(e&&e instanceof WebGL2RenderingContext)}async preload(e){try{this._core.room.videoManager.Wasm||(this._core.room.videoManager.Wasm=await allin1_default());const t=e=>{var t;this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!1,this.isAborted,"ABORT_IN_INFERENCE")}),this.isAborted=!0,this.log.error("mediaPipeSolutions abort",e),this.core.clearStarted(this,this.getGroup()),this.stop(),null==(t=this.onAbort)||t.call(this,e)};this._core.room.videoManager.initVirtualBackground(t,mat4_exports),await this._core.initVisionTaskRegistry(e)}catch(e){const{RtcError:t,ErrorCode:A}=this._core.errorModule;throw new t({code:A.INVALID_OPERATION,message:`VirtualBackground preload error, please check your assetsPath. detail: ${e}`})}}getName(){return e.Name}getAlias(){return"vb"}getValidateRule(e){switch(e){case"start":return startValidateRule(this._core);case"update":return updateValidateRule(this._core);case"stop":return stopValidateRule(this._core)}}getGroup(){return"vb"}getKVTypeValue(e=!1,t=!1,A="NONE"){let i=0;switch(this.currentType){case"blur":i|=0;break;case"image":i|=1;break;case"green":i|=2}switch(e&&(i|=256),t&&(i|=512),A){case"ABORT_IN_INFERENCE":i|=4096;break;case"ABORT_IN_VIDEO_MANAGER":i|=8192;break;case"OTHER":i|=61440}return i}async start(e){const{type:t="blur",src:A,blurLevel:i=3,onAbort:r}=e;this.currentType=t,this.onAbort=r;const{auth:s}=await authEffect({sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,core:this._core});if(!s){const{RtcError:t,ErrorCodeDictionary:A}=this._core.errorModule,i=this._core.utils.isOverseaSdkAppId(e.sdkAppId)?"https://trtc.io/document/56025":"https://cloud.tencent.com/document/product/647/85386";throw new t({code:A.NEED_TO_BUY,messageParams:{value:"Virtual Background",url:i}})}if(!this.preLoadPromise){if(!this._core.assetsPath)throw new rtc_error_default({code:error_code_default.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});this.preLoadPromise=this.preload(this._core.assetsPath)}return await this.preLoadPromise,this.core.room.videoManager.setVirtualBackground({type:t,imageUrl:A,blurLevel:i,enableFaceCentering:e.enableFaceCentering,onAbort:e=>{var t;this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!0,this.isAborted,"ABORT_IN_VIDEO_MANAGER")}),this.isAborted=!0,this.core.clearStarted(this,this.getGroup()),this.stop(),delete this.preLoadPromise,null==(t=this.onAbort)||t.call(this,e)}}).then((()=>{this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!1,this.isAborted,"NONE")})})).catch((()=>{this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!0,this.isAborted,"OTHER")})}))}async update(e){const{type:t,src:A}=e;return t!==this.currentType&&(this.currentType=t),this.core.room.videoManager.setVirtualBackground({type:t,imageUrl:A,blurLevel:e.blurLevel,enableFaceCentering:e.enableFaceCentering}).then((()=>{this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!1,!1,"NONE")})})).catch((()=>{this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!0,!1,"OTHER")})}))}async stop(){return this.core.room.videoManager.setVirtualBackground()}};__publicField(_VirtualBackground,"Name","VirtualBackground");var VirtualBackground=_VirtualBackground,index_default=VirtualBackground;export{index_default as default};export{VirtualBackground};
|
|
1
|
+
var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(A,I,g)=>I in A?__defProp(A,I,{enumerable:!0,configurable:!0,writable:!0,value:g}):A[I]=g,__spreadValues=(A,I)=>{for(var g in I||(I={}))__hasOwnProp.call(I,g)&&__defNormalProp(A,g,I[g]);if(__getOwnPropSymbols)for(var g of __getOwnPropSymbols(I))__propIsEnum.call(I,g)&&__defNormalProp(A,g,I[g]);return A},__spreadProps=(A,I)=>__defProps(A,__getOwnPropDescs(I)),__export=(A,I)=>{for(var g in I)__defProp(A,g,{get:I[g],enumerable:!0})},__publicField=(A,I,g)=>__defNormalProp(A,"symbol"!=typeof I?I+"":I,g);async function authEffect({sdkAppId:A,userId:I,userSig:g,core:B}){var C;const Q=Math.round((new Date).getTime()/1e3);try{const E=await B.schedule.getAbilityConfig(A,B.schedule.ScheduleRequestType.TRTC_AUTO_CONF,{sdkAppId:A,userId:I,userSig:g,timestamp:Q});B.log.info(`virtual background ability response: ${JSON.stringify(E)}`);const{data:t}=E;return(null==(C=null==t?void 0:t.trtcAutoConf)?void 0:C.web_ar)?{auth:!0,timestamp:Q}:{auth:!1}}catch(A){return B.log.error("virtual background fetch error",A),{auth:!1}}}var UserRule={sdkAppId:{required:!0,type:"number"},userId:{required:!0,type:"string"},userSig:{required:!0,type:"string"}};function startValidateRule(A){return{name:"VirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:__spreadProps(__spreadValues({},UserRule),{type:{required:!1,type:"string",values:["image","blur"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10},onAbort:{required:!1}}),validate(I,g,B,C){var Q;const{RtcError:E,ErrorCode:t,ErrorCodeDictionary:e}=A.errorModule;if(!I)return;const{type:r,src:i,onAbort:o}=I;if("image"===r&&!i)throw new E({code:t.INVALID_PARAMETER,extraCode:e.INVALID_PARAMETER_REQUIRED,fnName:B,messageParams:{key:"src"}});if(o&&!A.utils.isFunction(o))throw new E({code:t.INVALID_PARAMETER,extraCode:e.INVALID_PARAMETER_TYPE,fnName:B,messageParams:{key:"onAbort",value:typeof o,rule:{type:"Function"}}});if(!(null==(Q=A.room.videoManager.cameraTrack)?void 0:Q.mediaTrack))throw new E({code:t.INVALID_OPERATION,extraCode:e.INVALID_OPERATION_NEED_VIDEO,fnName:B})}}}function updateValidateRule(A){return{name:"UpdateVirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:{type:{required:!0,type:"string",values:["image","blur"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10}},validate(I,g,B,C){if(!I)return;const{RtcError:Q,ErrorCode:E,ErrorCodeDictionary:t}=A.errorModule,{type:e,src:r}=I;if("image"===e&&!r)throw new Q({code:E.INVALID_PARAMETER,extraCode:t.INVALID_PARAMETER_REQUIRED,fnName:B,messageParams:{key:"src"}})}}}function stopValidateRule(A){return{name:"StopVirtualBackgroundOptions",required:!1}}var Module=(()=>{var A="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return function(I={}){var g,B,C=I;C.ready=new Promise(((A,I)=>{g=A,B=I}));var Q,E=Object.assign({},C),t="";"undefined"!=typeof document&&document.currentScript&&(t=document.currentScript.src),A&&(t=A),t=0!==t.indexOf("blob:")?t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1):"";var e,r,i=C.print||console.log.bind(console),o=C.printErr||console.error.bind(console);function a(A){if(k(A))return function(A){for(var I=atob(A),g=new Uint8Array(I.length),B=0;B<I.length;++B)g[B]=I.charCodeAt(B);return g}(A.slice(f.length))}Object.assign(C,E),E=null,C.arguments&&C.arguments,C.thisProgram&&C.thisProgram,C.quit&&C.quit,C.wasmBinary&&(e=C.wasmBinary),"object"!=typeof WebAssembly&&Y("no native wasm support detected");var s,n,c,h,D,N,u,l,y=!1;var w=[],d=[],G=[];var M=0,R=null,S=null;function Y(A){C.onAbort&&C.onAbort(A),o(A="Aborted("+A+")"),y=!0,A+=". Build with -sASSERTIONS for more info.";var I=new WebAssembly.RuntimeError(A);throw B(I),I}var p,F,f="data:application/octet-stream;base64,",k=A=>A.startsWith(f);function L(A){return Promise.resolve().then((()=>function(A){if(A==p&&e)return new Uint8Array(e);var I=a(A);if(I)return I;if(Q)return Q(A);throw"both async and sync fetching of the wasm failed"}(A)))}function U(A,I,g,B){return function(A,I,g){return L(A).then((A=>WebAssembly.instantiate(A,I))).then((A=>A)).then(g,(A=>{o(`failed to asynchronously prepare wasm: ${A}`),Y(A)}))}(I,g,B)}k(p="data:application/octet-stream;base64,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LQABIgBFDQEgAkEBaiECIANBAWohAyAAIAFGDQALCyAAIAFGC28BAX8jAEGAAmsiBSQAAkAgAiADTA0AIARBgMAEcQ0AIAUgAUH/AXEgAiADayIDQYACIANBgAJJIgEbECYaIAFFBEADQCAAIAVBgAIQHSADQYACayIDQf8BSw0ACwsgACAFIAMQHQsgBUGAAmokAAuBAwEEfyMAQfAAayICJAAgACgCACIDQQRrKAIAIQQgA0EIaygCACEFIAJCADcCUCACQgA3AlggAkIANwJgIAJCADcAZyACQgA3AkggAkEANgJEIAJBvMsANgJAIAIgADYCPCACIAE2AjggACAFaiEDAkAgBCABQQAQHgRAQQAgAyAFGyEADAELIAAgA04EQCACQgA3AC8gAkIANwIYIAJCADcCICACQgA3AiggAkIANwIQIAJBADYCDCACIAE2AgggAiAANgIEIAIgBDYCACACQQE2AjAgBCACIAMgA0EBQQAgBCgCACgCFBEJACACKAIYDQELQQAhACAEIAJBOGogA0EBQQAgBCgCACgCGBEIAAJAAkAgAigCXA4CAAECCyACKAJMQQAgAigCWEEBRhtBACACKAJUQQFGG0EAIAIoAmBBAUYbIQAMAQsgAigCUEEBRwRAIAIoAmANASACKAJUQQFHDQEgAigCWEEBRw0BCyACKAJIIQALIAJB8ABqJAAgAAvQAQEFfyMAQRBrIgYkACAGQQRqIgIQPyMAQRBrIgUkAAJ/IAItAAtBB3YEQCACKAIEDAELIAItAAtB/wBxCyEEA0ACQAJ/IAItAAtBB3YEQCACKAIADAELIAILIQMgBSABOQMAIAICfyADIARBAWogBRBGIgNBAE4EQCADIARNDQIgAwwBCyAEQQF0QQFyCyIEECsMAQsLIAIgAxArIAAgAikCADcCACAAIAIoAgg2AgggAkIANwIAIAJBADYCCCAFQRBqJAAgAhBBIAZBEGokAAuABAEDfyACQYAETwRAIAAgASACEBIgAA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALCwAgASACIAAQQhoLEgAgAUEBdEHQyQBqQQIgABBCC/kBAQR/An8gARAqIQIjAEEQayIFJAACfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsiBEEATwRAAkAgAiAALQALQQd2BH8gACgCCEH/////B3FBAWsFQQoLIgMgBGtNBEAgAkUNAQJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgMgBAR/IAIgA2ogAyAEEEUgASACQQAgAyAEaiABSxtBACABIANPG2oFIAELIAIQRSAAIAIgBGoiARAxIAVBADoADyABIANqIAUtAA86AAAMAQsgACADIAIgBGogA2sgBEEAIAIgARBECyAFQRBqJAAgAAwBCxAnAAsL8gICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYC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ACgCCCIAIAEgAiADIAAoAgAoAhwRBgALGAAgACABKAIIQQAQHgRAIAEgAiADED0LC50BAQJ/IwBBQGoiAyQAAn9BASAAIAFBABAeDQAaQQAgAUUNABpBACABQezLABAgIgFFDQAaIANBDGpBAEE0ECYaIANBATYCOCADQX82AhQgAyAANgIQIAMgATYCCCABIANBCGogAigCAEEBIAEoAgAoAhwRBgAgAygCICIAQQFGBEAgAiADKAIYNgIACyAAQQFGCyEEIANBQGskACAECwoAIAAgAUEAEB4LTgIBfwF8IwBBEGsiAiQAIAJBADYCDCABKAIEQbTOACACQQxqEAkhAyACKAIMIgEEQCABEAILIAAgA0QAAAAAAAAAAGI6ADggAkEQaiQACzcBAX8jAEEQayICJAAgAiABLQA4NgIIIABBtM4AIAJBCGoQCDYCBCAAQbTUADYCACACQRBqJAALqAEBBX8gACgCVCIDKAIAIQUgAygCBCIEIAAoAhQgACgCHCIHayIGIAQgBkkbIgYEQCAFIAcgBhAiGiADIAMoAgAgBmoiBTYCACADIAMoAgQgBmsiBDYCBAsgBCACIAIgBEsbIgQEQCAFIAEgBBAiGiADIAMoAgAgBGoiBTYCACADIAMoAgQgBGs2AgQLIAVBADoAACAAIAAoAiwiATYCHCAAIAE2AhQgAguVAQECfyMAQRBrIgIkAEHEABAcIQEgACgCBCIAEAEgAiAANgIIIAFBqCwgAkEIahAINgIEIAFBtNQANgIAIAFBATYCHCABQbTUADYCGCABQQE2AhQgAUG01AA2AhAgAUEBNgIMIAFBtNQANgIIIAFBADoAICABQoCAgIAwNwI8IAFBADsANyABQQA7ACsgAkEQaiQAIAELigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBSMAQSBrIgAkAAJAIAVC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBUIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAhSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBUIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIBQZH3AEkNACADIQIgBUL///////8/g0KAgICAgIDAAIQiBCEGAkAgAUGB9wBrIghBwABxBEAgAyAIQUBqrYYhBkIAIQIMAQsgCEUNACAGIAitIgeGIAJBwAAgCGutiIQhBiACIAeGIQILIAAgAjcDECAAIAY3AxgCQEGB+AAgAWsiAUHAAHEEQCAEIAFBQGqtiCEDQgAhBAwBCyABRQ0AIARBwAAgAWuthiADIAGtIgKIhCEDIAQgAoghBAsgACADNwMAIAAgBDcDCCAAKQMIQgSGIAApAwAiA0I8iIQhAiAAKQMQIAApAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIABBIGokACAJIAIgBUKAgICAgICAgIB/g4S/OQMAC0ABAn8jAEEQayICJAAgAiABNgIMIAJBtNQANgIIIAJBCGogABEBACEDIAIoAgwiAQRAIAEQAwsgAkEQaiQAIAMLBABCAAsEAEEAC/YCAQh/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQcCfwJAAkACQCAAKAI8IANBEGoiAUECIANBDGoQDSIEBH9ByN0AIAQ2AgBBfwVBAAsEQCABIQQMAQsDQCAFIAMoAgwiBkYNAiAGQQBIBEAgASEEDAQLIAEgBiABKAIEIghLIglBA3RqIgQgBiAIQQAgCRtrIgggBCgCAGo2AgAgAUEMQQQgCRtqIgEgASgCACAIazYCACAFIAZrIQUgACgCPCAEIgEgByAJayIHIANBDGoQDSIGBH9ByN0AIAY2AgBBfwVBAAtFDQALCyAFQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAdBAkYNABogAiAEKAIEawshCiADQSBqJAAgCgt+AQF/IAAEQCAALAA3QQBIBEAgACgC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NwMoIAMgBToAMyADQShqIQIgBEUNAQsgAiABQSBqIgUoAgAgBSAGQQBIGyAEEDILIAIgBGoiAkEAOgACIAJB/RQ7AAAgA0EcaiADKAIoIANBKGogAy0AMyICwEEASCIFGyADKAIsIAIgBRsQGxogAywAM0EASARAIAMoAigQGQtBoNIAKAIAIgQQKiICQfD///8HTw0CAkACQCACQQtPBEAgAkEPckEBaiIGEBwhBSADIAZBgICAgHhyNgIYIAMgBTYCECADIAI2AhQMAQsgAyACOgAbIANBEGohBSACRQ0BCyAFIAQgAhAyCyACIAVqQQA6AAAgA0EoaiABQbGWAiADQRBqEFMgAygCLCECIANBADYCLCADKAIoIQUCQCABKAIUIgRFBEAgASACNgIUIAEgBTYCEAwBCyAEEAMgAygCLCEEIAEgAjYCFCABIAU2AhAgBEUNACAEEAMgA0EANgIsCyADLAAbQQBIBEAgAygCEBAZCwJAIAMsACdBAE4EQCADIAMoAiQ2AgggAyADKQIcNwMADAELIAMoAhwhBiADKAIgIQUjAEEQayIEJAACQAJAAkAgBUELSQRAIAMhAiADIAMtAAtBgAFxIAVB/wBxcjoACyADIAMtAAtB/wBxOgALDAELIAVB7////wdLDQEgBEEIaiADIAVBC08EfyAFQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBahAwIAQoAgwaIAMgBCgCCCICNgIAIAMgAygCCEGAgICAeHEgBCgCDEH/////B3FyNgIIIAMgAygCCEGAgICAeHI2AgggAyAFNgIECyACIAYgBUEBahAjIARBEGokAAwBCxAnAAsLIANBKGogAUGwlgIgAxBTIAMoAiwhAiADQQA2AiwgAygCKCEFAkAgASgCDCIERQRAIAEgAjYCDCABIAU2AggMAQsgBBADIAMoAiwhBCABIAI2AgwgASAFNgIIIARFDQAgBBADIANBADYCLAsgAywAC0EASARAIAMoAgAQGQsgA0EANgIoQeTTAC0AAEEBcUUEQEEBQYguQQAQBSECQeTTAEEBOgAAQeDTACACNgIACwJ/QeDTACgCACABKAIEQeAJIANBKGpBABAEIhBEAAAAAAAA8EFjIBBEAAAAAAAAAABmcQRAIBCrDAELQQALIQIgAygCKCIFBEAgBRACCyABKAIcIgUEQCAFEAMLIAEgAjYCHCABQbTUADYCGCACEAEgAyACNgIoIAEoAhQiAhABIAMgAjYCMCADQQA2AjxB7NMALQAAQQFxRQRAQQNBjC5BABAFIQJB7NMAQQE6AABB6NMAIAI2AgALQejTACgCACABKAIEQfAIIANBPGogA0EoahAEGiADKAI8IgIEQCACEAILIAEoAhwiAhABIAMgAjYCKCABKAIMIgIQASADIAI2AjAgA0EANgI8QezTAC0AAEEBcUUEQEEDQYwuQQAQBSECQezTAEEBOgAAQejTACACNgIAC0Ho0wAoAgAgASgCBEHwCCADQTxqIANBKGoQBBogAygCPCICBEAgAhACCyABKAIcIgIQASADIAI2AiggA0EANgI8QczTAC0AAEEBcUUEQEECQZwtQQAQBSECQczTAEEBOgAAQcjTACACNgIAC0HI0wAoAgAgASgCBEHGCSADQTxqIANBKGoQBBogAygCPCICBEAgAhACCyAAIAEoAhwiATYCBCAAQbTUADYCACABEAEgAywAJ0EASARAIAMoAhwQGQsgA0FAayQADwsQNwALEDcACxA3AAvYAgECfyMAQRBrIgEkACAAKAIUIgIQASABIAI2AgggAUEANgIEQczTAC0AAEEBcUUEQEECQZwtQQAQBSECQczTAEEBOgAAQcjTACACNgIAC0HI0wAoAgAgACgCBEH9CCABQQRqIAFBCGoQBBogASgCBCICBEAgAhACCyAAKAIMIgIQASABIAI2AgggAUEANgIEQczTAC0AAEEBcUUEQEECQZwtQQAQBSECQczTAEEBOgAAQcjTACACNgIAC0HI0wAoAgAgACgCBEH9CCABQQRqIAFBCGoQBBogASgCBCICBEAgAhACCyAAKAIcIgIQASABIAI2AgggAUEANgIEQczTAC0AAEEBcUUEQEECQZwtQQAQBSECQczTAEEBOgAAQcjTACACNgIAC0HI0wAoAgAgACgCBEHSCSABQQRqIAFBCGoQBBogASgCBCIABEAgABACCyABQRBqJAALBQBBxCsLNQEBfyABIAAoAgQiAkEBdWohASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRAwALLwACfyAALAArQQBIBEAgAEEANgIkIAAoAiAMAQsgAEEAOgArIABBIGoLQQA6AAALPQEBfyAB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ZWF0ZVByb2dyYW0AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0V2F0ZXJNYXJrAHN0b3BXYXRlck1hcmsAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlZgBjbG9zZQBkb3VibGUAdmJNb2RlAHNoYWRlclNvdXJjZQB2b2lkAHNhbXBsZUNvbG9yICs9IHRleHR1cmUoZnJhbWUsIGJsdXJDb29yZGluYXRlc1sATkFOAElORgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgB2ZWMyIGMgPSB2X3RleENvb3JkOwB2ZWMyIGMgPSB2ZWMyKDEuMCAtIHZfdGV4Q29vcmQueCwgdl90ZXhDb29yZC55KTsAQWxsSW4xAC4ALjAsAC4wKSpvKSoAKG51bGwpACkqby55KTsgICAgdmVjMiBjb29yZDIgPSB2ZWMyKGZsb2F0KAAgICAgYyA9IHZlYzIodl90ZXhDb29yZC54LCAxLjAgLSB2X3RleENvb3JkLnkpOyAgICB2ZWMyIGNvb3JkMSA9IHZlYzIoZmxvYXQoACksIChjLnkgLWNvb3JkMS55KSAvIG8ueSAvIGZsb2F0KAApKm8ueSk7ICAgIGlmIChjLnggPiBjb29yZDEueCAmJiBjLnggPCBjb29yZDIueCAmJiBjLnkgPiBjb29yZDEueSAmJiBjLnkgPCBjb29yZDIueSkgeyAgICAgIHZlYzQgd2F0ZXJDb2xvciA9IHRleHR1cmUod2F0ZXJNYXJrLCB2ZWMyKChjLnggLSBjb29yZDEueCkgIC8gby54IC8gZmxvYXQoACkgKiBvLngsIGZsb2F0KABvdXRDb2xvci5yZ2IgKz0gdmVjMygAKTsgICAgICAgdmVjMyBzbW9vdGhDb2xvciA9IG91dENvbG9yLnJnYiArIChvdXRDb2xvci5yZ2ItdmVjMyhoaWdoUGFzcykpKmFscGhhKjAuMTsgICAgICAgc21vb3RoQ29sb3IgPSBjbGFtcChwb3coc21vb3RoQ29sb3IsIHZlYzMoAGcrPUcoYyx2ZWMyKAAgICAgICB2ZWMyIG9mZnNldCA9IHZlYzIoAF0gPSB2X3RleENvb3JkLnh5ICsgb2Zmc2V0ICogdmVjMigAOyAAKSksIHZlYzMoMC4wKSwgdmVjMygxLjApKTsgICAgICB2ZWMzIHNjcmVlbiA9IHZlYzMoMS4wKSAtICh2ZWMzKDEuMCktc21vb3RoQ29sb3IpICogKHZlYzMoMS4wKS1vdXRDb2xvci5yZ2IpOyAgICAgICB2ZWMzIGxpZ2h0ZW4gPSBtYXgoc21vb3RoQ29sb3IsIG91dENvbG9yLnJnYik7ICAgICAgIHZlYzMgYmVhdXR5Q29sb3IgPSBtaXgobWl4KG91dENvbG9yLnJnYiwgc2NyZWVuLCBhbHBoYSksIGxpZ2h0ZW4sIGFscGhhKTsgICAgICBvdXRDb2xvci5yZ2IgPSBtaXgob3V0Q29sb3IucmdiLCBiZWF1dHlDb2xvciwgAAogICAgICBjb25zdCBtYXQzIHNhdHVyYXRlTWF0cml4ID0gbWF0MygxLjExMDIsLTAuMDU5OCwtMC4wNjEsLTAuMDc3NCwxLjA4MjYsLTAuMTE4NiwtMC4wMjI4LC0wLjAyMjgsMS4xNzcyKTsKICAgICAgdmVjMyB3YXJtQ29sb3IgPSBvdXRDb2xvci5yZ2IgKiBzYXR1cmF0ZU1hdHJpeDsKICAgICAgb3V0Q29sb3IucmdiID0gbWl4KG91dENvbG9yLnJnYiwgd2FybUNvbG9yLCAAICAgICAgc2FtcGxlQ29sb3IgPSBzYW1wbGVDb2xvciAvIDYyLjA7ICAgICAgIGZsb2F0IGhpZ2hQYXNzID0gb3V0Q29sb3IuZyAtIHNhbXBsZUNvbG9yICsgMC41OyAgICAgICBjb25zdCBoaWdocCB2ZWMzIFcgPSB2ZWMzKDAuMjk5LDAuNTg3LDAuMTE0KTsgICAgICBmbG9hdCBsdW1pbmFuY2UgPSBkb3Qob3V0Q29sb3IucmdiLCBXKTsgICAgICAgZmxvYXQgYWxwaGEgPSBwb3cobHVtaW5hbmNlLCAAXSkuZyAqIAApKSk7ICAgICAgb3V0Q29sb3IgPSBtaXgob3V0Q29sb3Isd2F0ZXJDb2xvciwgIHdhdGVyQ29sb3IuYSk7ICAgIH0gICAgACk7ICAgIAApOyAgICAgIHZlYzIgYmx1ckNvb3JkaW5hdGVzWzI0XTsgICAgICAAICAgICAgZmxvYXQgc2FtcGxlQ29sb3IgPSBvdXRDb2xvci5nICogMjIuMDsgICAgICAgACN2ZXJzaW9uIDMwMCBlcwogICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwogICAgdW5pZm9ybSBzYW1wbGVyMkQgZnJhbWU7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCBtYXNrOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgYmc7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCB3YXRlck1hcms7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCBsYXN0TWFzazsKICAgIHVuaWZvcm0gbWF0NCB1X29mZnNldE1hdHJpeDsKICAgIGluIHZlYzIgdl90ZXhDb29yZDsKICAgIG91dCB2ZWM0IG91dENvbG9yOwogICAgdmVjNCBHKHZlYzIgYyx2ZWMyIHMpewogICAgICByZXR1cm4gdGV4dHVyZShmcmFtZSx0ZXh0dXJlKG1hc2ssYytzKS5yPjAuMz9jOmMrcyk7CiAgICB9CiAgICB2b2lkIG1haW4oKSB7CiAgICAgIAAKICAgICAgdmVjMiBvZmZzZXRNYXNrVVYgPSAodV9vZmZzZXRNYXRyaXggKiB2ZWM0KGMsIDAsIDEpKS54eTsKICAgICAgZmxvYXQgaXNJbnNpZGVYID0gKG9mZnNldE1hc2tVVi54ID49IDAuMCkgJiYgKG9mZnNldE1hc2tVVi54IDw9IDEuMCkgPyAxLjAgOiAwLjA7CiAgICAgIGZsb2F0IGlzSW5zaWRlWSA9IChvZmZzZXRNYXNrVVYueSA+PSAwLjApICYmIChvZmZzZXRNYXNrVVYueSA8PSAxLjApID8gMS4wIDogMC4wOwogICAgICBmbG9hdCBpc0luc2lkZSA9IGlzSW5zaWRlWCAqIGlzSW5zaWRlWTsKICAgICAgZmxvYXQgbWFza2VkQWxwaGEgPSB0ZXh0dXJlKG1hc2ssIG9mZnNldE1hc2tVVikuciAqIGlzSW5zaWRlOwogICAgICBtYXNrZWRBbHBoYSA9IG1hc2tlZEFscGhhPDAuNT8yLjAqbWFza2VkQWxwaGEqbWFza2VkQWxwaGE6MS4wLTIuMCooMS4wLW1hc2tlZEFscGhhKSooMS4wLW1hc2tlZEFscGhhKTsKICAgICAgc3JjX2NvbG9yID0gdGV4dHVyZShmcmFtZSwgb2Zmc2V0TWFza1VWICwgaXNJbnNpZGUpOwogICAgICBvdXRDb2xvciA9IG1peCh0ZXh0dXJlKGJnLCBjKSwgc3JjX2NvbG9yLCBtYXNrZWRBbHBoYSk7CiAgICAACiAgICB2ZWM0IGcgPSB2ZWM0KDAuMCk7CiAgICAACiAgICAgIGMueSA9IDEuMCAtIGMueTsKICAgICAgdmVjNCBzcmNfY29sb3IgPSB0ZXh0dXJlKGZyYW1lLCBjKTsKICAgICAgZmxvYXQgYSA9IHRleHR1cmUobWFzaywgYykucjsKICAgICAgYSA9IGE8MC41PzIuMCphKmE6MS4wLTIuMCooMS4wLWEpKigxLjAtYSk7CiAgICAgIC8vIGZsb2F0IGEyID0gdGV4dHVyZShsYXN0TWFzaywgYykuYTsKICAgICAgLy8gYTIgPSBhMjwwLjU/Mi4wKmEyKmEyOjEuMC0yLjAqKDEuMC1hMikqKDEuMC1hMik7CiAgICAgIC8vIGZsb2F0IGRlbHRhID0gYSAtIGEyOwogICAgICAvLyBpZiAoZGVsdGEgPCAwLjI1ICYmIGRlbHRhID4gLTAuMjUpCiAgICAgIC8vIHsKICAgICAgLy8gICAgIGEgPSBhICsgMC41KmRlbHRhOwogICAgICAvLyB9CiAgICAgIAogICAgICB2ZWMyIG8gPSAxLjAgLyB2ZWMyKHRleHR1cmVTaXplKGZyYW1lLCAwKSk7CiAgICAACiAgICAgIG91dENvbG9yID0gZzsKICAAI3ZlcnNpb24gMzAwIGVzCmluIHZlYzIgYV9wb3NpdGlvbjsKaW4gdmVjMiBhX3RleENvb3JkOwoKdW5pZm9ybSBtYXQ0IHVfdGV4dHVyZU1hdHJpeDsKCm91dCB2ZWMyIHZfdGV4Q29vcmQ7CnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54LCBhX3Bvc2l0aW9uLnksIDAsIDEpOwogIHZfdGV4Q29vcmQgPSh1X3RleHR1cmVNYXRyaXggKiB2ZWM0KGFfdGV4Q29vcmQsIDAsIDEpKS54eTsKfQoAc2V0QmVhdXR5ICVmICVmICVmICVmICVmCgBvdXRDb2xvciA9IHNyY19jb2xvcjsKAG91dENvbG9yID0gbWl4KHZlYzQoMC4wLDEuMCwwLjAsMS4wKSxzcmNfY29sb3IsYSk7CgA2QWxsSW4xAADgJwAAuxUAAFA2QWxsSW4xAAAAAGQoAADMFQAAAAAAAMQVAABQSzZBbGxJbjEAAABkKAAA6BUAAAEAAADEFQAAaWkAdgB2aQDYFQAAKBYAAE4xMGVtc2NyaXB0ZW4zdmFsRQAA4CcAABQWAABpaWkAdmlpaQAAAAAAAAAAHCcAANgVAADQJwAA0CcAANAnAADQJwAA0CcAAHZpaWRkZGRkAEHwLAvICBwnAADYFQAA0CcAANAnAADQJwAA0CcAAHZpaWRkZGQAHCcAANgVAAB2aWkAHCcAACgWAAAoFgAA2BUAACgWAAB8JwAAHCcAACgWAAAAFwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAOAnAADAFgAAKBYAABwnAAAoFgAAKBYAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0loTlNfMTFjaGFyX3RyYWl0c0loRUVOU185YWxsb2NhdG9ySWhFRUVFAADgJwAAGBcAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAADgJwAAYBcAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEc05TXzExY2hhcl90cmFpdHNJRHNFRU5TXzlhbGxvY2F0b3JJRHNFRUVFAAAA4CcAAKgXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRGlOU18xMWNoYXJfdHJhaXRzSURpRUVOU185YWxsb2NhdG9ySURpRUVFRQAAAOAnAAD0FwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAADgJwAAQBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWFFRQAA4CcAAGgYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAAOAnAACQGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAADgJwAAuBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXRFRQAA4CcAAOAYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUAAOAnAAAIGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAADgJwAAMBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWxFRQAA4CcAAFgZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUAAOAnAACAGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeEVFAADgJwAAqBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXlFRQAA4CcAANAZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lmRUUAAOAnAAD4GQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAADgJwAAIBoAAP6CK2VHFWdAAAAAAAAAOEMAAPr+Qi52vzo7nrya9wy9vf3/////3z88VFVVVVXFP5ErF89VVaU/F9CkZxERgT8AAAAAAADIQu85+v5CLuY/JMSC/72/zj+19AzXCGusP8xQRtKrsoM/hDpOm+DXVT8AQcY1C7sQ8D9uv4gaTzubPDUz+6k99u8/XdzYnBNgcbxhgHc+muzvP9FmhxB6XpC8hX9u6BXj7z8T9mc1UtKMPHSFFdOw2e8/+o75I4DOi7ze9t0pa9DvP2HI5mFO92A8yJt1GEXH7z+Z0zNb5KOQPIPzxso+vu8/bXuDXaaalzwPiflsWLXvP/zv/ZIatY4890dyK5Ks7z/RnC9wPb4+PKLR0zLso+8/C26QiTQDarwb0/6vZpvvPw69LypSVpW8UVsS0AGT7z9V6k6M74BQvMwxbMC9iu8/FvTVuSPJkbzgLamumoLvP69VXOnj04A8UY6lyJh67z9Ik6XqFRuAvHtRfTy4cu8/PTLeVfAfj7zqjYw4+WrvP79TEz+MiYs8dctv61tj7z8m6xF2nNmWvNRcBITgW+8/YC86PvfsmjyquWgxh1TvP504hsuC54+8Hdn8IlBN7z+Nw6ZEQW+KPNaMYog7Ru8/fQTksAV6gDyW3H2RST/vP5SoqOP9jpY8OGJ1bno47z99SHTyGF6HPD+msk/OMe8/8ucfmCtHgDzdfOJlRSvvP14IcT97uJa8gWP14d8k7z8xqwlt4feCPOHeH/WdHu8/+r9vGpshPbyQ2drQfxjvP7QKDHKCN4s8CwPkpoUS7z+Py86JkhRuPFYvPqmvDO8/tquwTXVNgzwVtzEK/gbvP0x0rOIBQoY8MdhM/HAB7z9K+NNdOd2PPP8WZLII/O4/BFuOO4Cjhrzxn5JfxfbuP2hQS8ztSpK8y6k6N6fx7j+OLVEb+AeZvGbYBW2u7O4/0jaUPujRcbz3n+U02+fuPxUbzrMZGZm85agTwy3j7j9tTCqnSJ+FPCI0Ekym3u4/imkoemASk7wcgKwERdruP1uJF0iPp1i8Ki73IQrW7j8bmklnmyx8vJeoUNn10e4/EazCYO1jQzwtiWFgCM7uP+9kBjsJZpY8VwAd7UHK7j95A6Ha4cxuPNA8wbWixu4/MBIPP47/kzze09fwKsPuP7CvervOkHY8Jyo21dq/7j934FTrvR2TPA3d/ZmyvO4/jqNxADSUj7ynLJ12srnuP0mjk9zM3oe8QmbPotq27j9fOA+9xt54vIJPnVYrtO4/9lx77EYShrwPkl3KpLHuP47X/RgFNZM82ie1Nkev7j8Fm4ovt5h7PP3Hl9QSre4/CVQc4uFjkDwpVEjdB6vuP+rGGVCFxzQ8t0ZZiiap7j81wGQr5jKUPEghrRVvp+4/n3aZYUrkjLwJ3Ha54aXuP6hN7zvFM4y8hVU6sH6k7j+u6SuJeFOEvCDDzDRGo+4/WFhWeN3Ok7wlIlWCOKLuP2QZfoCqEFc8c6lM1FWh7j8oIl6/77OTvM07f2aeoO4/grk0h60Sary/2gt1EqDuP+6pbbjvZ2O8LxplPLKf7j9RiOBUPdyAvISUUfl9n+4/zz5afmQfeLx0X+zodZ/uP7B9i8BK7oa8dIGlSJqf7j+K5lUeMhmGvMlnQlbrn+4/09QJXsuckDw/Xd5PaaDuPx2lTbncMnu8hwHrcxSh7j9rwGdU/eyUPDLBMAHtoe4/VWzWq+HrZTxiTs8286LuP0LPsy/FoYi8Eho+VCek7j80NzvxtmmTvBPOTJmJpe4/Hv8ZOoRegLytxyNGGqfuP25XcthQ1JS87ZJEm9mo7j8Aig5bZ62QPJlmitnHqu4/tOrwwS+3jTzboCpC5azuP//nxZxgtmW8jES1FjKv7j9EX/NZg/Z7PDZ3FZmuse4/gz0epx8Jk7zG/5ELW7TuPykebIu4qV285cXNsDe37j9ZuZB8+SNsvA9SyMtEuu4/qvn0IkNDkrxQTt6fgr3uP0uOZtdsyoW8ugfKcPHA7j8nzpEr/K9xPJDwo4KRxO4/u3MK4TXSbTwjI+MZY8juP2MiYiIExYe8ZeVde2bM7j/VMeLjhhyLPDMtSuyb0O4/Fbu809G7kbxdJT6yA9XuP9Ix7pwxzJA8WLMwE57Z7j+zWnNuhGmEPL/9eVVr3u4/tJ2Ol83fgrx689O/a+PuP4czy5J3Gow8rdNamZ/o7j/62dFKj3uQvGa2jSkH7u4/uq7cVtnDVbz7FU+4ovPuP0D2pj0OpJC8OlnljXL57j80k6049NZovEde+/J2/+4/NYpYa+LukbxKBqEwsAXvP83dXwrX/3Q80sFLkB4M7z+smJL6+72RvAke11vCEu8/swyvMK5uczycUoXdmxnvP5T9n1wy4448etD/X6sg7z+sWQnRj+CEPEvRVy7xJ+8/ZxpOOK/NYzy15waUbS/vP2gZkmwsa2c8aZDv3CA37z/StcyDGIqAvPrDXVULP+8/b/r/P12tj7x8iQdKLUfvP0mpdTiuDZC88okNCIdP7z+nBz2mhaN0PIek+9wYWO8/DyJAIJ6RgryYg8kW42DvP6ySwdVQWo48hTLbA+Zp7z9LawGsWTqEPGC0AfMhc+8/Hz60ByHVgrxfm3szl3zvP8kNRzu5Kom8KaH1FEaG7z/TiDpgBLZ0PPY/i+cukO8/cXKdUezFgzyDTMf7UZrvP/CR048S94+82pCkoq+k7z99dCPimK6NvPFnji1Ir+8/CCCqQbzDjjwnWmHuG7rvPzLrqcOUK4Q8l7prNyvF7z/uhdExqWSKPEBFblt20O8/7eM75Lo3jrwUvpyt/dvvP53NkU07iXc82JCegcHn7z+JzGBBwQVTPPFxjyvC8+8/AAAAAAAAAAAZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBkcYACyEOAAAAAAAAAAAZAAoNGRkZAA0AAAIACQ4AAAAJAA4AAA4AQcvGAAsBDABB18YACxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQYXHAAsBEABBkccACxUPAAAABA8AAAAACRAAAAAAABAAABAAQb/HAAsBEgBBy8cACx4RAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAQYLIAAsOGgAAABoaGgAAAAAAAAkAQbPIAAsBFABBv8gACxUXAAAAABcAAAAACRQAAAAAABQAABQAQe3IAAsBFgBB+cgAC6UJFQAAAAAVAAAAAAkWAAAAAAAWAAAWAAAwMTIzNDU2Nzg5QUJDREVGAAAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaOwAAAAAAAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlOMTBfX2N4eGFiaXYxMTZfX3NoaW1fdHlwZV9pbmZvRQAAAAAIKAAAmCUAABgpAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAAAAIKAAAyCUAALwlAABOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UAAAAIKAAA+CUAALwlAABOMTBfX2N4eGFiaXYxMTlfX3BvaW50ZXJfdHlwZV9pbmZvRQAIKAAAKCYAABwmAABOMTBfX2N4eGFiaXYxMjBfX2Z1bmN0aW9uX3R5cGVfaW5mb0UAAAAACCgAAFgmAAC8JQAATjEwX19jeHhhYml2MTI5X19wb2ludGVyX3RvX21lbWJlcl90eXBlX2luZm9FAAAACCgAAIwmAAAcJgAAAAAAAAwnAAAfAAAAIAAAACEAAAAiAAAAIwAAAE4xMF9fY3h4YWJpdjEyM19fZnVuZGFtZW50YWxfdHlwZV9pbmZvRQAIKAAA5CYAALwlAAB2AAAA0CYAABgnAABEbgAA0CYAACQnAABiAAAA0CYAADAnAABjAAAA0CYAADwnAABoAAAA0CYAAEgnAABhAAAA0CYAAFQnAABzAAAA0CYAAGAnAAB0AAAA0CYAAGwnAABpAAAA0CYAAHgnAABqAAAA0CYAAIQnAABsAAAA0CYAAJAnAABtAAAA0CYAAJwnAAB4AAAA0CYAAKgnAAB5AAAA0CYAALQnAABmAAAA0CYAAMAnAABkAAAA0CYAAMwnAAAAAAAA7CUAAB8AAAAkAAAAIQAAACIAAAAlAAAAJgAAACcAAAAoAAAAAAAAAFAoAAAfAAAAKQAAACEAAAAiAAAAJQAAACoAAAArAAAALAAAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAAIKAAAKCgAAOwlAAAAAAAATCYAAB8AAAAtAAAAIQAAACIAAAAuAAAAAAAAAJwoAAAvAAAAMAAAADEAAABTdDlleGNlcHRpb24AAAAA4CcAAIwoAAAAAAAAyCgAABYAAAAyAAAAMwAAAFN0MTFsb2dpY19lcnJvcgAIKAAAuCgAAJwoAAAAAAAA/CgAABYAAAA0AAAAMwAAAFN0MTJsZW5ndGhfZXJyb3IAAAAACCgAAOgoAADIKAAAU3Q5dHlwZV9pbmZvAAAAAOAnAAAIKQBBoNIACwljFAAAAAAAAAUAQbTSAAsBGQBBzNIACw4aAAAAGwAAAMgqAAAABABB5NIACwEBAEH00gALBf////8KAEG40wALA8AwAQ==")||(F=p,p=C.locateFile?C.locateFile(F,t):t+F);var b=A=>{for(;A.length>0;)A.shift()(C)};C.noExitRuntime;function m(A){this.excPtr=A,this.ptr=A-24,this.set_type=function(A){N[this.ptr+4>>2]=A},this.get_type=function(){return N[this.ptr+4>>2]},this.set_destructor=function(A){N[this.ptr+8>>2]=A},this.get_destructor=function(){return N[this.ptr+8>>2]},this.set_caught=function(A){A=A?1:0,s[this.ptr+12|0]=A},this.get_caught=function(){return 0!=s[this.ptr+12|0]},this.set_rethrown=function(A){A=A?1:0,s[this.ptr+13|0]=A},this.get_rethrown=function(){return 0!=s[this.ptr+13|0]},this.init=function(A,I){this.set_adjusted_ptr(0),this.set_type(A),this.set_destructor(I)},this.set_adjusted_ptr=function(A){N[this.ptr+16>>2]=A},this.get_adjusted_ptr=function(){return N[this.ptr+16>>2]},this.get_exception_ptr=function(){if(sI(this.get_type()))return N[this.excPtr>>2];var A=this.get_adjusted_ptr();return 0!==A?A:this.excPtr}}var H,K,J,v=A=>{for(var I="",g=A;n[g];)I+=H[n[g++]];return I},T={},O={},Z={},P=A=>{throw new K(A)},V=A=>{throw new J(A)},W=(A,I,g)=>{function B(I){var B=g(I);B.length!==A.length&&V("Mismatched type converter count");for(var C=0;C<A.length;++C)x(A[C],B[C])}A.forEach((function(A){Z[A]=I}));var C=new Array(I.length),Q=[],E=0;I.forEach(((A,I)=>{O.hasOwnProperty(A)?C[I]=O[A]:(Q.push(A),T.hasOwnProperty(A)||(T[A]=[]),T[A].push((()=>{C[I]=O[A],++E===Q.length&&B(C)})))})),0===Q.length&&B(C)};function x(A,I,g={}){if(!("argPackAdvance"in I))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(A,I,g={}){var B=I.name;if(A||P(`type "${B}" must have a positive integer typeid pointer`),O.hasOwnProperty(A)){if(g.ignoreDuplicateRegistrations)return;P(`Cannot register type '${B}' twice`)}if(O[A]=I,delete Z[A],T.hasOwnProperty(A)){var C=T[A];delete T[A],C.forEach((A=>A()))}}(A,I,g)}var j,_=A=>{P(A.$$.ptrType.registeredClass.name+" instance already deleted")},X=!1,z=A=>{},q=A=>{A.count.value-=1,0===A.count.value&&(A=>{A.smartPtr?A.smartPtrType.rawDestructor(A.smartPtr):A.ptrType.registeredClass.rawDestructor(A.ptr)})(A)},$=(A,I,g)=>{if(I===g)return A;if(void 0===g.baseClass)return null;var B=$(A,I,g.baseClass);return null===B?null:g.downcast(B)},AA={},IA=()=>Object.keys(EA).length,gA=()=>{var A=[];for(var I in EA)EA.hasOwnProperty(I)&&A.push(EA[I]);return A},BA=[],CA=()=>{for(;BA.length;){var A=BA.pop();A.$$.deleteScheduled=!1,A.delete()}},QA=A=>{j=A,BA.length&&j&&j(CA)},EA={},tA=(A,I)=>(I=((A,I)=>{for(void 0===I&&P("ptr should not be undefined");A.baseClass;)I=A.upcast(I),A=A.baseClass;return I})(A,I),EA[I]),eA=(A,I)=>(I.ptrType&&I.ptr||V("makeClassHandle requires ptr and ptrType"),!!I.smartPtrType!==!!I.smartPtr&&V("Both smartPtrType and smartPtr must be specified"),I.count={value:1},iA(Object.create(A,{$$:{value:I}})));function rA(A){var I=this.getPointee(A);if(!I)return this.destructor(A),null;var g=tA(this.registeredClass,I);if(void 0!==g){if(0===g.$$.count.value)return g.$$.ptr=I,g.$$.smartPtr=A,g.clone();var B=g.clone();return this.destructor(A),B}function C(){return this.isSmartPointer?eA(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:I,smartPtrType:this,smartPtr:A}):eA(this.registeredClass.instancePrototype,{ptrType:this,ptr:A})}var Q,E=this.registeredClass.getActualType(I),t=AA[E];if(!t)return C.call(this);Q=this.isConst?t.constPointerType:t.pointerType;var e=$(I,this.registeredClass,Q.registeredClass);return null===e?C.call(this):this.isSmartPointer?eA(Q.registeredClass.instancePrototype,{ptrType:Q,ptr:e,smartPtrType:this,smartPtr:A}):eA(Q.registeredClass.instancePrototype,{ptrType:Q,ptr:e})}var iA=A=>"undefined"==typeof FinalizationRegistry?(iA=A=>A,A):(X=new FinalizationRegistry((A=>{q(A.$$)})),z=A=>X.unregister(A),(iA=A=>{var I=A.$$;if(!!I.smartPtr){var g={$$:I};X.register(A,g,A)}return A})(A));function oA(){}var aA=(A,I)=>Object.defineProperty(I,"name",{value:A}),sA=(A,I,g)=>{if(void 0===A[I].overloadTable){var B=A[I];A[I]=function(){return A[I].overloadTable.hasOwnProperty(arguments.length)||P(`Function '${g}' called with an invalid number of arguments (${arguments.length}) - expects one of (${A[I].overloadTable})!`),A[I].overloadTable[arguments.length].apply(this,arguments)},A[I].overloadTable=[],A[I].overloadTable[B.argCount]=B}};function nA(A,I,g,B,C,Q,E,t){this.name=A,this.constructor=I,this.instancePrototype=g,this.rawDestructor=B,this.baseClass=C,this.getActualType=Q,this.upcast=E,this.downcast=t,this.pureVirtualFunctions=[]}var cA=(A,I,g)=>{for(;I!==g;)I.upcast||P(`Expected null or instance of ${g.name}, got an instance of ${I.name}`),A=I.upcast(A),I=I.baseClass;return A};function hA(A,I){if(null===I)return this.isReference&&P(`null is not a valid ${this.name}`),0;I.$$||P(`Cannot pass "${OA(I)}" as a ${this.name}`),I.$$.ptr||P(`Cannot pass deleted object as a pointer of type ${this.name}`);var g=I.$$.ptrType.registeredClass;return cA(I.$$.ptr,g,this.registeredClass)}function DA(A,I){var g;if(null===I)return this.isReference&&P(`null is not a valid ${this.name}`),this.isSmartPointer?(g=this.rawConstructor(),null!==A&&A.push(this.rawDestructor,g),g):0;I.$$||P(`Cannot pass "${OA(I)}" as a ${this.name}`),I.$$.ptr||P(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&I.$$.ptrType.isConst&&P(`Cannot convert argument of type ${I.$$.smartPtrType?I.$$.smartPtrType.name:I.$$.ptrType.name} to parameter type ${this.name}`);var B=I.$$.ptrType.registeredClass;if(g=cA(I.$$.ptr,B,this.registeredClass),this.isSmartPointer)switch(void 0===I.$$.smartPtr&&P("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:I.$$.smartPtrType===this?g=I.$$.smartPtr:P(`Cannot convert argument of type ${I.$$.smartPtrType?I.$$.smartPtrType.name:I.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:g=I.$$.smartPtr;break;case 2:if(I.$$.smartPtrType===this)g=I.$$.smartPtr;else{var C=I.clone();g=this.rawShare(g,HA.toHandle((()=>C.delete()))),null!==A&&A.push(this.rawDestructor,g)}break;default:P("Unsupporting sharing policy")}return g}function NA(A,I){if(null===I)return this.isReference&&P(`null is not a valid ${this.name}`),0;I.$$||P(`Cannot pass "${OA(I)}" as a ${this.name}`),I.$$.ptr||P(`Cannot pass deleted object as a pointer of type ${this.name}`),I.$$.ptrType.isConst&&P(`Cannot convert argument of type ${I.$$.ptrType.name} to parameter type ${this.name}`);var g=I.$$.ptrType.registeredClass;return cA(I.$$.ptr,g,this.registeredClass)}function uA(A){return this.fromWireType(N[A>>2])}function lA(A,I,g,B,C,Q,E,t,e,r,i){this.name=A,this.registeredClass=I,this.isReference=g,this.isConst=B,this.isSmartPointer=C,this.pointeeType=Q,this.sharingPolicy=E,this.rawGetPointee=t,this.rawConstructor=e,this.rawShare=r,this.rawDestructor=i,C||void 0!==I.baseClass?this.toWireType=DA:B?(this.toWireType=hA,this.destructorFunction=null):(this.toWireType=NA,this.destructorFunction=null)}var yA,wA,dA=[],GA=A=>{var I=dA[A];return I||(A>=dA.length&&(dA.length=A+1),dA[A]=I=yA.get(A)),I},MA=(A,I,g)=>A.includes("j")?((A,I,g)=>{var B=C["dynCall_"+A];return g&&g.length?B.apply(null,[I].concat(g)):B.call(null,I)})(A,I,g):GA(I).apply(null,g),RA=(A,I)=>{var g,B,C,Q=(A=v(A)).includes("j")?(g=A,B=I,C=[],function(){return C.length=0,Object.assign(C,arguments),MA(g,B,C)}):GA(I);return"function"!=typeof Q&&P(`unknown function pointer with signature ${A}: ${I}`),Q},SA=A=>{var I=oI(A),g=v(I);return aI(I),g},YA=(A,I)=>{var g=[],B={};throw I.forEach((function A(I){B[I]||O[I]||(Z[I]?Z[I].forEach(A):(g.push(I),B[I]=!0))})),new wA(`${A}: `+g.map(SA).join([", "]))},pA=(A,I)=>{for(var g=[],B=0;B<A;B++)g.push(N[I+4*B>>2]);return g},FA=A=>{for(;A.length;){var I=A.pop();A.pop()(I)}};function fA(A,I,g,B,C,Q){var E=I.length;E<2&&P("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var t=null!==I[1]&&null!==g,e=!1,r=1;r<I.length;++r)if(null!==I[r]&&void 0===I[r].destructorFunction){e=!0;break}var i="void"!==I[0].name,o=E-2,a=new Array(o),s=[],n=[];return aA(A,(function(){var g;arguments.length!==o&&P(`function ${A} called with ${arguments.length} arguments, expected ${o}`),n.length=0,s.length=t?2:1,s[0]=C,t&&(g=I[1].toWireType(n,this),s[1]=g);for(var Q=0;Q<o;++Q)a[Q]=I[Q+2].toWireType(n,arguments[Q]),s.push(a[Q]);return function(A){if(e)FA(n);else for(var B=t?1:2;B<I.length;B++){var C=1===B?g:a[B-2];null!==I[B].destructorFunction&&I[B].destructorFunction(C)}if(i)return I[0].fromWireType(A)}(B.apply(null,s))}))}var kA=(A,I,g)=>(A instanceof Object||P(`${g} with invalid "this": ${A}`),A instanceof I.registeredClass.constructor||P(`${g} incompatible with "this" of type ${A.constructor.name}`),A.$$.ptr||P(`cannot call emscripten binding method ${g} on deleted object`),cA(A.$$.ptr,A.$$.ptrType.registeredClass,I.registeredClass));function LA(){this.allocated=[void 0],this.freelist=[]}var UA=new LA,bA=A=>{A>=UA.reserved&&0==--UA.get(A).refcount&&UA.free(A)},mA=()=>{for(var A=0,I=UA.reserved;I<UA.allocated.length;++I)void 0!==UA.allocated[I]&&++A;return A},HA={toValue:A=>(A||P("Cannot use deleted val. handle = "+A),UA.get(A).value),toHandle:A=>{switch(A){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return UA.allocate({refcount:1,value:A})}}};function KA(A){return this.fromWireType(D[A>>2])}var JA,vA,TA,OA=A=>{if(null===A)return"null";var I=typeof A;return"object"===I||"array"===I||"function"===I?A.toString():""+A},ZA=(A,I)=>{switch(I){case 4:return function(A){return this.fromWireType(u[A>>2])};case 8:return function(A){return this.fromWireType(l[A>>3])};default:throw new TypeError(`invalid float width (${I}): ${A}`)}},PA=(A,I,g)=>{switch(I){case 1:return g?A=>s[A|0]:A=>n[A|0];case 2:return g?A=>c[A>>1]:A=>h[A>>1];case 4:return g?A=>D[A>>2]:A=>N[A>>2];default:throw new TypeError(`invalid integer width (${I}): ${A}`)}},VA="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,WA=(A,I,g)=>{for(var B=I+g,C=I;A[C]&&!(C>=B);)++C;if(C-I>16&&A.buffer&&VA)return VA.decode(A.subarray(I,C));for(var Q="";I<C;){var E=A[I++];if(128&E){var t=63&A[I++];if(192!=(224&E)){var e=63&A[I++];if((E=224==(240&E)?(15&E)<<12|t<<6|e:(7&E)<<18|t<<12|e<<6|63&A[I++])<65536)Q+=String.fromCharCode(E);else{var r=E-65536;Q+=String.fromCharCode(55296|r>>10,56320|1023&r)}}else Q+=String.fromCharCode((31&E)<<6|t)}else Q+=String.fromCharCode(E)}return Q},xA=(A,I)=>A?WA(n,A,I):"",jA="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,_A=(A,I)=>{for(var g=A,B=g>>1,C=B+I/2;!(B>=C)&&h[B];)++B;if((g=B<<1)-A>32&&jA)return jA.decode(n.subarray(A,g));for(var Q="",E=0;!(E>=I/2);++E){var t=c[A+2*E>>1];if(0==t)break;Q+=String.fromCharCode(t)}return Q},XA=(A,I,g)=>{if(void 0===g&&(g=2147483647),g<2)return 0;for(var B=I,C=(g-=2)<2*A.length?g/2:A.length,Q=0;Q<C;++Q){var E=A.charCodeAt(Q);c[I>>1]=E,I+=2}return c[I>>1]=0,I-B},zA=A=>2*A.length,qA=(A,I)=>{for(var g=0,B="";!(g>=I/4);){var C=D[A+4*g>>2];if(0==C)break;if(++g,C>=65536){var Q=C-65536;B+=String.fromCharCode(55296|Q>>10,56320|1023&Q)}else B+=String.fromCharCode(C)}return B},$A=(A,I,g)=>{if(void 0===g&&(g=2147483647),g<4)return 0;for(var B=I,C=B+g-4,Q=0;Q<A.length;++Q){var E=A.charCodeAt(Q);if(E>=55296&&E<=57343)E=65536+((1023&E)<<10)|1023&A.charCodeAt(++Q);if(D[I>>2]=E,(I+=4)+4>C)break}return D[I>>2]=0,I-B},AI=A=>{for(var I=0,g=0;g<A.length;++g){var B=A.charCodeAt(g);B>=55296&&B<=57343&&++g,I+=4}return I},II=(A,I)=>{var g=O[A];return void 0===g&&P(I+" has unknown type "+SA(A)),g},gI=(A,I,g)=>{var B=[],C=A.toWireType(B,g);return B.length&&(N[I>>2]=HA.toHandle(B)),C},BI={},CI=[],QI=Reflect.construct,EI=[null,[],[]];(()=>{for(var A=new Array(256),I=0;I<256;++I)A[I]=String.fromCharCode(I);H=A})(),K=C.BindingError=class extends Error{constructor(A){super(A),this.name="BindingError"}},J=C.InternalError=class extends Error{constructor(A){super(A),this.name="InternalError"}},Object.assign(oA.prototype,{isAliasOf(A){if(!(this instanceof oA))return!1;if(!(A instanceof oA))return!1;var I=this.$$.ptrType.registeredClass,g=this.$$.ptr;A.$$=A.$$;for(var B=A.$$.ptrType.registeredClass,C=A.$$.ptr;I.baseClass;)g=I.upcast(g),I=I.baseClass;for(;B.baseClass;)C=B.upcast(C),B=B.baseClass;return I===B&&g===C},clone(){if(this.$$.ptr||_(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var A,I=iA(Object.create(Object.getPrototypeOf(this),{$$:{value:(A=this.$$,{count:A.count,deleteScheduled:A.deleteScheduled,preservePointerOnDelete:A.preservePointerOnDelete,ptr:A.ptr,ptrType:A.ptrType,smartPtr:A.smartPtr,smartPtrType:A.smartPtrType})}}));return I.$$.count.value+=1,I.$$.deleteScheduled=!1,I},delete(){this.$$.ptr||_(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&P("Object already scheduled for deletion"),z(this),q(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||_(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&P("Object already scheduled for deletion"),BA.push(this),1===BA.length&&j&&j(CA),this.$$.deleteScheduled=!0,this}}),C.getInheritedInstanceCount=IA,C.getLiveInheritedInstances=gA,C.flushPendingDeletes=CA,C.setDelayFunction=QA,Object.assign(lA.prototype,{getPointee(A){return this.rawGetPointee&&(A=this.rawGetPointee(A)),A},destructor(A){this.rawDestructor&&this.rawDestructor(A)},argPackAdvance:8,readValueFromPointer:uA,deleteObject(A){null!==A&&A.delete()},fromWireType:rA}),wA=C.UnboundTypeError=(JA=Error,(TA=aA(vA="UnboundTypeError",(function(A){this.name=vA,this.message=A;var I=new Error(A).stack;void 0!==I&&(this.stack=this.toString()+"\n"+I.replace(/^Error(:[^\n]*)?\n/,""))}))).prototype=Object.create(JA.prototype),TA.prototype.constructor=TA,TA.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},TA),Object.assign(LA.prototype,{get(A){return this.allocated[A]},has(A){return void 0!==this.allocated[A]},allocate(A){var I=this.freelist.pop()||this.allocated.length;return this.allocated[I]=A,I},free(A){this.allocated[A]=void 0,this.freelist.push(A)}}),UA.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),UA.reserved=UA.allocated.length,C.count_emval_handles=mA;var tI,eI={w:(A,I,g)=>{throw new m(A).init(I,g),A},q:(A,I,g,B,C)=>{},u:(A,I,g,B)=>{x(A,{name:I=v(I),fromWireType:function(A){return!!A},toWireType:function(A,I){return I?g:B},argPackAdvance:8,readValueFromPointer:function(A){return this.fromWireType(n[A])},destructorFunction:null})},y:(A,I,g,B,Q,E,t,e,r,i,o,a,s)=>{o=v(o),E=RA(Q,E),e&&(e=RA(t,e)),i&&(i=RA(r,i)),s=RA(a,s);var n=(A=>{if(void 0===A)return"_unknown";var I=(A=A.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return I>=48&&I<=57?`_${A}`:A})(o);((A,I,g)=>{C.hasOwnProperty(A)?((void 0===g||void 0!==C[A].overloadTable&&void 0!==C[A].overloadTable[g])&&P(`Cannot register public name '${A}' twice`),sA(C,A,A),C.hasOwnProperty(g)&&P(`Cannot register multiple overloads of a function with the same number of arguments (${g})!`),C[A].overloadTable[g]=I):(C[A]=I,void 0!==g&&(C[A].numArguments=g))})(n,(function(){YA(`Cannot construct ${o} due to unbound types`,[B])})),W([A,I,g],B?[B]:[],(function(I){var g,Q;I=I[0],Q=B?(g=I.registeredClass).instancePrototype:oA.prototype;var t=aA(o,(function(){if(Object.getPrototypeOf(this)!==r)throw new K("Use 'new' to construct "+o);if(void 0===a.constructor_body)throw new K(o+" has no accessible constructor");var A=a.constructor_body[arguments.length];if(void 0===A)throw new K(`Tried to invoke ctor of ${o} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(a.constructor_body).toString()}) parameters instead!`);return A.apply(this,arguments)})),r=Object.create(Q,{constructor:{value:t}});t.prototype=r;var a=new nA(o,t,r,s,g,E,e,i);a.baseClass&&(void 0===a.baseClass.__derivedClasses&&(a.baseClass.__derivedClasses=[]),a.baseClass.__derivedClasses.push(a));var c=new lA(o,a,!0,!1,!1),h=new lA(o+"*",a,!1,!1,!1),D=new lA(o+" const*",a,!1,!0,!1);return AA[A]={pointerType:h,constPointerType:D},((A,I,g)=>{C.hasOwnProperty(A)||V("Replacing nonexistant public symbol"),void 0!==C[A].overloadTable&&void 0!==g?C[A].overloadTable[g]=I:(C[A]=I,C[A].argCount=g)})(n,t),[c,h,D]}))},x:(A,I,g,B,C,Q)=>{var E=pA(I,g);C=RA(B,C),W([],[A],(function(A){var g=`constructor ${(A=A[0]).name}`;if(void 0===A.registeredClass.constructor_body&&(A.registeredClass.constructor_body=[]),void 0!==A.registeredClass.constructor_body[I-1])throw new K(`Cannot register multiple constructors with identical number of parameters (${I-1}) for class '${A.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return A.registeredClass.constructor_body[I-1]=()=>{YA(`Cannot construct ${A.name} due to unbound types`,E)},W([],E,(B=>(B.splice(1,0,null),A.registeredClass.constructor_body[I-1]=fA(g,B,null,C,Q),[]))),[]}))},h:(A,I,g,B,C,Q,E,t,e)=>{var r=pA(g,B);I=(A=>{const I=(A=A.trim()).indexOf("(");return-1!==I?A.substr(0,I):A})(I=v(I)),Q=RA(C,Q),W([],[A],(function(A){var B=`${(A=A[0]).name}.${I}`;function C(){YA(`Cannot call ${B} due to unbound types`,r)}I.startsWith("@@")&&(I=Symbol[I.substring(2)]),t&&A.registeredClass.pureVirtualFunctions.push(I);var e=A.registeredClass.instancePrototype,i=e[I];return void 0===i||void 0===i.overloadTable&&i.className!==A.name&&i.argCount===g-2?(C.argCount=g-2,C.className=A.name,e[I]=C):(sA(e,I,B),e[I].overloadTable[g-2]=C),W([],r,(function(C){var t=fA(B,C,A,Q,E);return void 0===e[I].overloadTable?(t.argCount=g-2,e[I]=t):e[I].overloadTable[g-2]=t,[]})),[]}))},k:(A,I,g,B,C,Q,E,t,e,r)=>{I=v(I),C=RA(B,C),W([],[A],(function(A){var B=`${(A=A[0]).name}.${I}`,i={get(){YA(`Cannot access ${B} due to unbound types`,[g,E])},enumerable:!0,configurable:!0};return i.set=e?()=>YA(`Cannot access ${B} due to unbound types`,[g,E]):A=>P(B+" is a read-only property"),Object.defineProperty(A.registeredClass.instancePrototype,I,i),W([],e?[g,E]:[g],(function(g){var E=g[0],i={get(){var I=kA(this,A,B+" getter");return E.fromWireType(C(Q,I))},enumerable:!0};if(e){e=RA(t,e);var o=g[1];i.set=function(I){var g=kA(this,A,B+" setter"),C=[];e(r,g,o.toWireType(C,I)),FA(C)}}return Object.defineProperty(A.registeredClass.instancePrototype,I,i),[]})),[]}))},t:(A,I)=>{x(A,{name:I=v(I),fromWireType:A=>{var I=HA.toValue(A);return bA(A),I},toWireType:(A,I)=>HA.toHandle(I),argPackAdvance:8,readValueFromPointer:KA,destructorFunction:null})},p:(A,I,g)=>{x(A,{name:I=v(I),fromWireType:A=>A,toWireType:(A,I)=>I,argPackAdvance:8,readValueFromPointer:ZA(I,g),destructorFunction:null})},g:(A,I,g,B,C)=>{I=v(I),-1===C&&(C=4294967295);var Q=A=>A;if(0===B){var E=32-8*g;Q=A=>A<<E>>>E}var t=I.includes("unsigned");x(A,{name:I,fromWireType:Q,toWireType:t?function(A,I){return this.name,I>>>0}:function(A,I){return this.name,I},argPackAdvance:8,readValueFromPointer:PA(I,g,0!==B),destructorFunction:null})},a:(A,I,g)=>{var B=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][I];function C(A){var I=N[A>>2],g=N[A+4>>2];return new B(s.buffer,g,I)}x(A,{name:g=v(g),fromWireType:C,argPackAdvance:8,readValueFromPointer:C},{ignoreDuplicateRegistrations:!0})},o:(A,I)=>{var g="std::string"===(I=v(I));x(A,{name:I,fromWireType(A){var I,B=N[A>>2],C=A+4;if(g)for(var Q=C,E=0;E<=B;++E){var t=C+E;if(E==B||0==n[t]){var e=xA(Q,t-Q);void 0===I?I=e:(I+=String.fromCharCode(0),I+=e),Q=t+1}}else{var r=new Array(B);for(E=0;E<B;++E)r[E]=String.fromCharCode(n[C+E]);I=r.join("")}return aI(A),I},toWireType(A,I){var B;I instanceof ArrayBuffer&&(I=new Uint8Array(I));var C="string"==typeof I;C||I instanceof Uint8Array||I instanceof Uint8ClampedArray||I instanceof Int8Array||P("Cannot pass non-string to std::string"),B=g&&C?(A=>{for(var I=0,g=0;g<A.length;++g){var B=A.charCodeAt(g);B<=127?I++:B<=2047?I+=2:B>=55296&&B<=57343?(I+=4,++g):I+=3}return I})(I):I.length;var Q=iI(4+B+1),E=Q+4;if(N[Q>>2]=B,g&&C)((A,I,g,B)=>{if(!(B>0))return 0;for(var C=g,Q=g+B-1,E=0;E<A.length;++E){var t=A.charCodeAt(E);if(t>=55296&&t<=57343&&(t=65536+((1023&t)<<10)|1023&A.charCodeAt(++E)),t<=127){if(g>=Q)break;I[g++]=t}else if(t<=2047){if(g+1>=Q)break;I[g++]=192|t>>6,I[g++]=128|63&t}else if(t<=65535){if(g+2>=Q)break;I[g++]=224|t>>12,I[g++]=128|t>>6&63,I[g++]=128|63&t}else{if(g+3>=Q)break;I[g++]=240|t>>18,I[g++]=128|t>>12&63,I[g++]=128|t>>6&63,I[g++]=128|63&t}}I[g]=0})(I,n,E,B+1);else if(C)for(var t=0;t<B;++t){var e=I.charCodeAt(t);e>255&&(aI(E),P("String has UTF-16 code units that do not fit in 8 bits")),n[E+t]=e}else for(t=0;t<B;++t)n[E+t]=I[t];return null!==A&&A.push(aI,Q),Q},argPackAdvance:8,readValueFromPointer:uA,destructorFunction(A){aI(A)}})},l:(A,I,g)=>{var B,C,Q,E,t;g=v(g),2===I?(B=_A,C=XA,E=zA,Q=()=>h,t=1):4===I&&(B=qA,C=$A,E=AI,Q=()=>N,t=2),x(A,{name:g,fromWireType:A=>{for(var g,C=N[A>>2],E=Q(),e=A+4,r=0;r<=C;++r){var i=A+4+r*I;if(r==C||0==E[i>>t]){var o=B(e,i-e);void 0===g?g=o:(g+=String.fromCharCode(0),g+=o),e=i+I}}return aI(A),g},toWireType:(A,B)=>{"string"!=typeof B&&P(`Cannot pass non-string to C++ string type ${g}`);var Q=E(B),e=iI(4+Q+I);return N[e>>2]=Q>>t,C(B,e+4,Q+I),null!==A&&A.push(aI,e),e},argPackAdvance:8,readValueFromPointer:KA,destructorFunction(A){aI(A)}})},v:(A,I)=>{x(A,{isVoid:!0,name:I=v(I),argPackAdvance:0,fromWireType:()=>{},toWireType:(A,I)=>{}})},j:(A,I,g)=>(A=HA.toValue(A),I=II(I,"emval::as"),gI(I,g,A)),e:(A,I,g,B,C)=>{var Q,E;return(A=CI[A])(I=HA.toValue(I),I[g=void 0===(E=BI[Q=g])?v(Q):E],B,C)},d:bA,f:(A,I,g)=>{var B=((A,I)=>{for(var g=new Array(A),B=0;B<A;++B)g[B]=II(N[I+4*B>>2],"parameter "+B);return g})(A,I),C=B.shift();A--;var Q,E,t=new Array(A),e=`methodCaller<(${B.map((A=>A.name)).join(", ")}) => ${C.name}>`;return Q=aA(e,((I,Q,E,e)=>{for(var r=0,i=0;i<A;++i)t[i]=B[i].readValueFromPointer(e+r),r+=B[i].argPackAdvance;var o=1===g?QI(Q,t):Q.apply(I,t);for(i=0;i<A;++i)B[i].deleteObject&&B[i].deleteObject(t[i]);return gI(C,E,o)})),E=CI.length,CI.push(Q),E},b:A=>{A>4&&(UA.get(A).refcount+=1)},c:A=>{var I=HA.toValue(A);FA(I),bA(A)},i:(A,I)=>{var g=(A=II(A,"_emval_take_value")).readValueFromPointer(I);return HA.toHandle(g)},m:()=>{Y("")},s:(A,I,g)=>n.copyWithin(A,I,I+g),r:A=>{n.length;Y("OOM")},n:(A,I,g,B)=>{for(var C,Q,E,t=0,e=0;e<g;e++){var r=N[I>>2],a=N[I+4>>2];I+=8;for(var s=0;s<a;s++)C=A,Q=n[r+s],E=void 0,E=EI[C],0===Q||10===Q?((1===C?i:o)(WA(E,0)),E.length=0):E.push(Q);t+=a}return N[B>>2]=t,0}},rI=function(){var A={a:eI};function I(A,I){var g,B;return rI=A.exports,r=rI.z,g=r.buffer,C.HEAP8=s=new Int8Array(g),C.HEAP16=c=new Int16Array(g),C.HEAPU8=n=new Uint8Array(g),C.HEAPU16=h=new Uint16Array(g),C.HEAP32=D=new Int32Array(g),C.HEAPU32=N=new Uint32Array(g),C.HEAPF32=u=new Float32Array(g),C.HEAPF64=l=new Float64Array(g),yA=rI.C,B=rI.A,d.unshift(B),function(){if(M--,C.monitorRunDependencies&&C.monitorRunDependencies(M),0==M&&(null!==R&&(clearInterval(R),R=null),S)){var A=S;S=null,A()}}(),rI}if(M++,C.monitorRunDependencies&&C.monitorRunDependencies(M),C.instantiateWasm)try{return C.instantiateWasm(A,I)}catch(A){o(`Module.instantiateWasm callback failed with error: ${A}`),B(A)}return U(0,p,A,(function(A){I(A.instance)})).catch(B),{}}(),iI=A=>(iI=rI.B)(A),oI=A=>(oI=rI.D)(A),aI=A=>(aI=rI.E)(A),sI=A=>(sI=rI.F)(A);C.dynCall_jiji=(A,I,g,B,Q)=>(C.dynCall_jiji=rI.G)(A,I,g,B,Q),C._vertexShaderSource=10528;function nI(){function A(){tI||(tI=!0,C.calledRun=!0,y||(b(d),g(C),C.onRuntimeInitialized&&C.onRuntimeInitialized(),function(){if(C.postRun)for("function"==typeof C.postRun&&(C.postRun=[C.postRun]);C.postRun.length;)A=C.postRun.shift(),G.unshift(A);var A;b(G)}()))}M>0||(!function(){if(C.preRun)for("function"==typeof C.preRun&&(C.preRun=[C.preRun]);C.preRun.length;)A=C.preRun.shift(),w.unshift(A);var A;b(w)}(),M>0||(C.setStatus?(C.setStatus("Running..."),setTimeout((function(){setTimeout((function(){C.setStatus("")}),1),A()}),1)):A()))}if(S=function A(){tI||nI(),tI||(S=A)},C.preInit)for("function"==typeof C.preInit&&(C.preInit=[C.preInit]);C.preInit.length>0;)C.preInit.pop()();return nI(),I.ready}})(),allin1_default=Module,USER_AGENT="undefined"==typeof navigator?"":navigator.userAgent,isUserAgentMatch=A=>new RegExp(A,"i").test(USER_AGENT),getBrowserVersion=A=>{if(isUserAgentMatch(A)){const I=new RegExp(`${A}\\/([\\d.]+)`),g=USER_AGENT.match(I);if(g&&g[1])return g[1]}return""},getBrowserMajorVersion=A=>{if(isUserAgentMatch(A)){const I=new RegExp(`${A}\\/(\\d+)`),g=USER_AGENT.match(I);if(g&&g[1])return parseFloat(g[1])}return NaN},webkitVersionMap=/AppleWebKit\/([\d.]+)/i.exec(USER_AGENT),appleWebkitVersion=webkitVersionMap?parseFloat(webkitVersionMap[1]):NaN,IS_IPAD=isUserAgentMatch("iPad"),IS_IPAD_PRO="undefined"!=typeof navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&isUserAgentMatch("Macintosh"),IS_IPHONE=isUserAgentMatch("iPhone")&&!IS_IPAD,IS_IPOD=isUserAgentMatch("iPod"),IS_IOS=IS_IPHONE||IS_IPAD||IS_IPOD||IS_IPAD_PRO,IS_ANDROID=isUserAgentMatch("Android"),ANDROID_VERSION=function(){if(IS_ANDROID){const A=USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(A){const I=A[1]&&parseFloat(A[1]),g=A[2]&&parseFloat(A[2]);if(I&&g)return parseFloat(`${A[1]}.${A[2]}`);if(I)return I}}return NaN}(),IS_OLD_ANDROID=IS_ANDROID&&isUserAgentMatch("webkit")&&ANDROID_VERSION<2.3,IS_NATIVE_ANDROID=IS_ANDROID&&ANDROID_VERSION<5&&appleWebkitVersion<537,IS_FIREFOX=isUserAgentMatch("Firefox"),FIREFOX_VERSION=getBrowserVersion("Firefox"),FIREFOX_MAJOR_VERSION=getBrowserMajorVersion("Firefox"),IS_EDGE=isUserAgentMatch("Edge"),EDGE_VERSION=getBrowserVersion("Edge"),IS_EDG=isUserAgentMatch("Edg"),EDG_VERSION=getBrowserVersion("Edg"),EDG_MAJOR_VERSION=getBrowserMajorVersion("Edg"),IS_SOGOUM=isUserAgentMatch("SogouMobileBrowser"),SOGOUM_VERSION=getBrowserVersion("SogouMobileBrowser"),IS_SOGOU=isUserAgentMatch("MetaSr\\s"),SOGOU_VERSION=getBrowserVersion("MetaSr\\s"),IS_TBS=isUserAgentMatch("TBS"),TBS_VERSION=getBrowserVersion("TBS"),IS_XWEB=isUserAgentMatch("XWEB"),XWEB_VERSION=getBrowserVersion("XWEB"),IS_IE8=isUserAgentMatch("MSIE\\s8\\.0"),IS_IE=isUserAgentMatch("MSIE\\/\\d+"),IE_VERSION=function(){if(IS_IE){const A=/MSIE\s(\d+)\.\d/.exec(USER_AGENT);let I=A&&parseFloat(A[1]);return!I&&/Trident\/7.0/i.test(USER_AGENT)&&/rv:11.0/.test(USER_AGENT)&&(I=11),I}return NaN}(),IS_WECHAT=isUserAgentMatch("(micromessenger|webbrowser)"),WECHAT_VERSION=getBrowserVersion("MicroMessenger"),IS_X5MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&isUserAgentMatch("COVC"),IS_MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&!isUserAgentMatch("COVC"),MQQB_VERSION=IS_MQQB||IS_X5MQQB?getBrowserVersion("MQQBrowser"):"",IS_WQQB=!IS_TBS&&isUserAgentMatch(" QQBrowser"),WQQB_VERSION=getBrowserVersion(" QQBrowser"),IS_MACQQB=!IS_TBS&&isUserAgentMatch("QQBrowserLite"),MACQQB_VERSION=getBrowserVersion("QQBrowserLite"),IS_IPADQQB=!IS_TBS&&isUserAgentMatch("MQBHD"),IPADQQB_VERSION=getBrowserVersion("MQBHD"),IS_WIN=isUserAgentMatch("Windows"),IS_MAC=!IS_IOS&&isUserAgentMatch("MAC OS X"),IS_LINUX=!IS_ANDROID&&isUserAgentMatch("Linux"),IS_CHROME_OS=isUserAgentMatch("CrOS"),IS_WX=isUserAgentMatch("MicroMessenger"),IS_UCBROWSER=isUserAgentMatch("UCBrowser"),IS_ELECTRON=isUserAgentMatch("Electron"),IS_MIBROWSER=isUserAgentMatch("MiuiBrowser"),MI_VERSION=getBrowserVersion("MiuiBrowser"),IS_HUAWEIBROWSER=isUserAgentMatch("HuaweiBrowser"),IS_HUAWEI=isUserAgentMatch("Huawei")||isUserAgentMatch("HUAWEI"),IS_HONOR=isUserAgentMatch("Honor")||isUserAgentMatch("HONOR"),HUAWEI_VERSION=getBrowserVersion("HuaweiBrowser"),IS_SAMSUNGBROWSER=isUserAgentMatch("SamsungBrowser"),SAMSUNG_VERSION=getBrowserVersion("SamsungBrowser"),IS_OPPOBROWSER=isUserAgentMatch("HeyTapBrowser"),OPPO_VERSION=getBrowserVersion("HeyTapBrowser"),IS_VIVOBROWSER=isUserAgentMatch("VivoBrowser"),VIVO_VERSION=getBrowserVersion("VivoBrowser"),IS_OPENHARMONY=isUserAgentMatch("OpenHarmony"),OPENHARMONY_VERSION=getBrowserVersion("OpenHarmony"),getChromeMajorVersion=()=>getBrowserMajorVersion("Chrome"),IS_CHROMIUM_BASE=isUserAgentMatch("Chrome"),IS_CHROME=!IS_EDGE&&!IS_SOGOU&&!IS_SOGOUM&&!IS_TBS&&!IS_XWEB&&!IS_EDG&&!IS_WQQB&&!IS_MIBROWSER&&!IS_HUAWEIBROWSER&&!IS_SAMSUNGBROWSER&&!IS_OPPOBROWSER&&!IS_VIVOBROWSER&&IS_CHROMIUM_BASE,IS_HEADLESS_CHROME=isUserAgentMatch("HeadlessChrome"),CHROME_MAJOR_VERSION=getChromeMajorVersion(),CHROME_VERSION=getBrowserVersion("Chrome"),IS_SAFARI=!IS_CHROMIUM_BASE&&!IS_MQQB&&!IS_X5MQQB&&!IS_MACQQB&&!IS_IPADQQB&&isUserAgentMatch("Safari"),SAFARI_VERSION=getBrowserVersion("Version"),IS_ANDROID_WEBVIEW=/Android.*(wv|.0.0.0)/.test(USER_AGENT),IOS_VERSION=(()=>{if(IS_IPAD_PRO)return SAFARI_VERSION;if(IS_IOS){const A=USER_AGENT.match(/OS (\d+)_(\d+)/i);if(A&&A[1]){let I=A[1];return A[2]&&(I+=`.${A[2]}`),I}}return""})(),IOS_MAIN_VERSION=Number(IOS_VERSION.split(".")[0]),IS_IOS_13_OR_14=(()=>{const A=Number(IOS_VERSION.split(".")[0]);return 14===A||13===A})(),IS_IOS_CHROME=isUserAgentMatch("CriOS"),IS_LOCAL="undefined"!=typeof location&&("file:"===location.protocol||"localhost"===location.hostname||"127.0.0.1"===location.hostname),browserInfo=getBrowserInfo();function getBrowserInfo(){const A=new Map([[IS_FIREFOX,["Firefox",FIREFOX_VERSION]],[IS_EDG,["Edg",EDG_VERSION]],[IS_CHROME,["Chrome",CHROME_VERSION]],[IS_SAFARI,["Safari",SAFARI_VERSION]],[IS_TBS,["TBS",TBS_VERSION]],[IS_XWEB,["XWEB",XWEB_VERSION]],[IS_WECHAT&&IS_IPHONE,["WeChat",WECHAT_VERSION]],[IS_WQQB,["QQ(Win)",WQQB_VERSION]],[IS_MQQB,["QQ(Mobile)",MQQB_VERSION]],[IS_X5MQQB,["QQ(Mobile X5)",MQQB_VERSION]],[IS_MACQQB,["QQ(Mac)",MACQQB_VERSION]],[IS_IPADQQB,["QQ(iPad)",IPADQQB_VERSION]],[IS_MIBROWSER,["MI",MI_VERSION]],[IS_HUAWEIBROWSER,["HW",HUAWEI_VERSION]],[IS_SAMSUNGBROWSER,["Samsung",SAMSUNG_VERSION]],[IS_OPPOBROWSER,["OPPO",OPPO_VERSION]],[IS_VIVOBROWSER,["VIVO",VIVO_VERSION]],[IS_EDGE,["EDGE",EDGE_VERSION]],[IS_SOGOUM,["SogouMobile",SOGOUM_VERSION]],[IS_SOGOU,["Sogou",SOGOU_VERSION]]]);let I="unknown",g="unknown";return A.has(!0)&&([I,g]=A.get(!0)),{name:I,version:g}}var EPSILON=1e-6,ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,degree=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var A=0,I=arguments.length;I--;)A+=arguments[I]*arguments[I];return Math.sqrt(A)});var mat4_exports={};function create(){var A=new ARRAY_TYPE(16);return ARRAY_TYPE!=Float32Array&&(A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[11]=0,A[12]=0,A[13]=0,A[14]=0),A[0]=1,A[5]=1,A[10]=1,A[15]=1,A}function clone(A){var I=new ARRAY_TYPE(16);return I[0]=A[0],I[1]=A[1],I[2]=A[2],I[3]=A[3],I[4]=A[4],I[5]=A[5],I[6]=A[6],I[7]=A[7],I[8]=A[8],I[9]=A[9],I[10]=A[10],I[11]=A[11],I[12]=A[12],I[13]=A[13],I[14]=A[14],I[15]=A[15],I}function copy(A,I){return A[0]=I[0],A[1]=I[1],A[2]=I[2],A[3]=I[3],A[4]=I[4],A[5]=I[5],A[6]=I[6],A[7]=I[7],A[8]=I[8],A[9]=I[9],A[10]=I[10],A[11]=I[11],A[12]=I[12],A[13]=I[13],A[14]=I[14],A[15]=I[15],A}function fromValues(A,I,g,B,C,Q,E,t,e,r,i,o,a,s,n,c){var h=new ARRAY_TYPE(16);return h[0]=A,h[1]=I,h[2]=g,h[3]=B,h[4]=C,h[5]=Q,h[6]=E,h[7]=t,h[8]=e,h[9]=r,h[10]=i,h[11]=o,h[12]=a,h[13]=s,h[14]=n,h[15]=c,h}function set(A,I,g,B,C,Q,E,t,e,r,i,o,a,s,n,c,h){return A[0]=I,A[1]=g,A[2]=B,A[3]=C,A[4]=Q,A[5]=E,A[6]=t,A[7]=e,A[8]=r,A[9]=i,A[10]=o,A[11]=a,A[12]=s,A[13]=n,A[14]=c,A[15]=h,A}function identity(A){return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}function transpose(A,I){if(A===I){var g=I[1],B=I[2],C=I[3],Q=I[6],E=I[7],t=I[11];A[1]=I[4],A[2]=I[8],A[3]=I[12],A[4]=g,A[6]=I[9],A[7]=I[13],A[8]=B,A[9]=Q,A[11]=I[14],A[12]=C,A[13]=E,A[14]=t}else A[0]=I[0],A[1]=I[4],A[2]=I[8],A[3]=I[12],A[4]=I[1],A[5]=I[5],A[6]=I[9],A[7]=I[13],A[8]=I[2],A[9]=I[6],A[10]=I[10],A[11]=I[14],A[12]=I[3],A[13]=I[7],A[14]=I[11],A[15]=I[15];return A}function invert(A,I){var g=I[0],B=I[1],C=I[2],Q=I[3],E=I[4],t=I[5],e=I[6],r=I[7],i=I[8],o=I[9],a=I[10],s=I[11],n=I[12],c=I[13],h=I[14],D=I[15],N=g*t-B*E,u=g*e-C*E,l=g*r-Q*E,y=B*e-C*t,w=B*r-Q*t,d=C*r-Q*e,G=i*c-o*n,M=i*h-a*n,R=i*D-s*n,S=o*h-a*c,Y=o*D-s*c,p=a*D-s*h,F=N*p-u*Y+l*S+y*R-w*M+d*G;return F?(F=1/F,A[0]=(t*p-e*Y+r*S)*F,A[1]=(C*Y-B*p-Q*S)*F,A[2]=(c*d-h*w+D*y)*F,A[3]=(a*w-o*d-s*y)*F,A[4]=(e*R-E*p-r*M)*F,A[5]=(g*p-C*R+Q*M)*F,A[6]=(h*l-n*d-D*u)*F,A[7]=(i*d-a*l+s*u)*F,A[8]=(E*Y-t*R+r*G)*F,A[9]=(B*R-g*Y-Q*G)*F,A[10]=(n*w-c*l+D*N)*F,A[11]=(o*l-i*w-s*N)*F,A[12]=(t*M-E*S-e*G)*F,A[13]=(g*S-B*M+C*G)*F,A[14]=(c*u-n*y-h*N)*F,A[15]=(i*y-o*u+a*N)*F,A):null}function adjoint(A,I){var g=I[0],B=I[1],C=I[2],Q=I[3],E=I[4],t=I[5],e=I[6],r=I[7],i=I[8],o=I[9],a=I[10],s=I[11],n=I[12],c=I[13],h=I[14],D=I[15];return A[0]=t*(a*D-s*h)-o*(e*D-r*h)+c*(e*s-r*a),A[1]=-(B*(a*D-s*h)-o*(C*D-Q*h)+c*(C*s-Q*a)),A[2]=B*(e*D-r*h)-t*(C*D-Q*h)+c*(C*r-Q*e),A[3]=-(B*(e*s-r*a)-t*(C*s-Q*a)+o*(C*r-Q*e)),A[4]=-(E*(a*D-s*h)-i*(e*D-r*h)+n*(e*s-r*a)),A[5]=g*(a*D-s*h)-i*(C*D-Q*h)+n*(C*s-Q*a),A[6]=-(g*(e*D-r*h)-E*(C*D-Q*h)+n*(C*r-Q*e)),A[7]=g*(e*s-r*a)-E*(C*s-Q*a)+i*(C*r-Q*e),A[8]=E*(o*D-s*c)-i*(t*D-r*c)+n*(t*s-r*o),A[9]=-(g*(o*D-s*c)-i*(B*D-Q*c)+n*(B*s-Q*o)),A[10]=g*(t*D-r*c)-E*(B*D-Q*c)+n*(B*r-Q*t),A[11]=-(g*(t*s-r*o)-E*(B*s-Q*o)+i*(B*r-Q*t)),A[12]=-(E*(o*h-a*c)-i*(t*h-e*c)+n*(t*a-e*o)),A[13]=g*(o*h-a*c)-i*(B*h-C*c)+n*(B*a-C*o),A[14]=-(g*(t*h-e*c)-E*(B*h-C*c)+n*(B*e-C*t)),A[15]=g*(t*a-e*o)-E*(B*a-C*o)+i*(B*e-C*t),A}function determinant(A){var I=A[0],g=A[1],B=A[2],C=A[3],Q=A[4],E=A[5],t=A[6],e=A[7],r=A[8],i=A[9],o=A[10],a=A[11],s=A[12],n=A[13],c=A[14],h=A[15];return(I*E-g*Q)*(o*h-a*c)-(I*t-B*Q)*(i*h-a*n)+(I*e-C*Q)*(i*c-o*n)+(g*t-B*E)*(r*h-a*s)-(g*e-C*E)*(r*c-o*s)+(B*e-C*t)*(r*n-i*s)}function multiply(A,I,g){var B=I[0],C=I[1],Q=I[2],E=I[3],t=I[4],e=I[5],r=I[6],i=I[7],o=I[8],a=I[9],s=I[10],n=I[11],c=I[12],h=I[13],D=I[14],N=I[15],u=g[0],l=g[1],y=g[2],w=g[3];return A[0]=u*B+l*t+y*o+w*c,A[1]=u*C+l*e+y*a+w*h,A[2]=u*Q+l*r+y*s+w*D,A[3]=u*E+l*i+y*n+w*N,u=g[4],l=g[5],y=g[6],w=g[7],A[4]=u*B+l*t+y*o+w*c,A[5]=u*C+l*e+y*a+w*h,A[6]=u*Q+l*r+y*s+w*D,A[7]=u*E+l*i+y*n+w*N,u=g[8],l=g[9],y=g[10],w=g[11],A[8]=u*B+l*t+y*o+w*c,A[9]=u*C+l*e+y*a+w*h,A[10]=u*Q+l*r+y*s+w*D,A[11]=u*E+l*i+y*n+w*N,u=g[12],l=g[13],y=g[14],w=g[15],A[12]=u*B+l*t+y*o+w*c,A[13]=u*C+l*e+y*a+w*h,A[14]=u*Q+l*r+y*s+w*D,A[15]=u*E+l*i+y*n+w*N,A}function translate(A,I,g){var B,C,Q,E,t,e,r,i,o,a,s,n,c=g[0],h=g[1],D=g[2];return I===A?(A[12]=I[0]*c+I[4]*h+I[8]*D+I[12],A[13]=I[1]*c+I[5]*h+I[9]*D+I[13],A[14]=I[2]*c+I[6]*h+I[10]*D+I[14],A[15]=I[3]*c+I[7]*h+I[11]*D+I[15]):(B=I[0],C=I[1],Q=I[2],E=I[3],t=I[4],e=I[5],r=I[6],i=I[7],o=I[8],a=I[9],s=I[10],n=I[11],A[0]=B,A[1]=C,A[2]=Q,A[3]=E,A[4]=t,A[5]=e,A[6]=r,A[7]=i,A[8]=o,A[9]=a,A[10]=s,A[11]=n,A[12]=B*c+t*h+o*D+I[12],A[13]=C*c+e*h+a*D+I[13],A[14]=Q*c+r*h+s*D+I[14],A[15]=E*c+i*h+n*D+I[15]),A}function scale(A,I,g){var B=g[0],C=g[1],Q=g[2];return A[0]=I[0]*B,A[1]=I[1]*B,A[2]=I[2]*B,A[3]=I[3]*B,A[4]=I[4]*C,A[5]=I[5]*C,A[6]=I[6]*C,A[7]=I[7]*C,A[8]=I[8]*Q,A[9]=I[9]*Q,A[10]=I[10]*Q,A[11]=I[11]*Q,A[12]=I[12],A[13]=I[13],A[14]=I[14],A[15]=I[15],A}function rotate(A,I,g,B){var C,Q,E,t,e,r,i,o,a,s,n,c,h,D,N,u,l,y,w,d,G,M,R,S,Y=B[0],p=B[1],F=B[2],f=Math.hypot(Y,p,F);return f<EPSILON?null:(Y*=f=1/f,p*=f,F*=f,C=Math.sin(g),E=1-(Q=Math.cos(g)),t=I[0],e=I[1],r=I[2],i=I[3],o=I[4],a=I[5],s=I[6],n=I[7],c=I[8],h=I[9],D=I[10],N=I[11],u=Y*Y*E+Q,l=p*Y*E+F*C,y=F*Y*E-p*C,w=Y*p*E-F*C,d=p*p*E+Q,G=F*p*E+Y*C,M=Y*F*E+p*C,R=p*F*E-Y*C,S=F*F*E+Q,A[0]=t*u+o*l+c*y,A[1]=e*u+a*l+h*y,A[2]=r*u+s*l+D*y,A[3]=i*u+n*l+N*y,A[4]=t*w+o*d+c*G,A[5]=e*w+a*d+h*G,A[6]=r*w+s*d+D*G,A[7]=i*w+n*d+N*G,A[8]=t*M+o*R+c*S,A[9]=e*M+a*R+h*S,A[10]=r*M+s*R+D*S,A[11]=i*M+n*R+N*S,I!==A&&(A[12]=I[12],A[13]=I[13],A[14]=I[14],A[15]=I[15]),A)}function rotateX(A,I,g){var B=Math.sin(g),C=Math.cos(g),Q=I[4],E=I[5],t=I[6],e=I[7],r=I[8],i=I[9],o=I[10],a=I[11];return I!==A&&(A[0]=I[0],A[1]=I[1],A[2]=I[2],A[3]=I[3],A[12]=I[12],A[13]=I[13],A[14]=I[14],A[15]=I[15]),A[4]=Q*C+r*B,A[5]=E*C+i*B,A[6]=t*C+o*B,A[7]=e*C+a*B,A[8]=r*C-Q*B,A[9]=i*C-E*B,A[10]=o*C-t*B,A[11]=a*C-e*B,A}function rotateY(A,I,g){var B=Math.sin(g),C=Math.cos(g),Q=I[0],E=I[1],t=I[2],e=I[3],r=I[8],i=I[9],o=I[10],a=I[11];return I!==A&&(A[4]=I[4],A[5]=I[5],A[6]=I[6],A[7]=I[7],A[12]=I[12],A[13]=I[13],A[14]=I[14],A[15]=I[15]),A[0]=Q*C-r*B,A[1]=E*C-i*B,A[2]=t*C-o*B,A[3]=e*C-a*B,A[8]=Q*B+r*C,A[9]=E*B+i*C,A[10]=t*B+o*C,A[11]=e*B+a*C,A}function rotateZ(A,I,g){var B=Math.sin(g),C=Math.cos(g),Q=I[0],E=I[1],t=I[2],e=I[3],r=I[4],i=I[5],o=I[6],a=I[7];return I!==A&&(A[8]=I[8],A[9]=I[9],A[10]=I[10],A[11]=I[11],A[12]=I[12],A[13]=I[13],A[14]=I[14],A[15]=I[15]),A[0]=Q*C+r*B,A[1]=E*C+i*B,A[2]=t*C+o*B,A[3]=e*C+a*B,A[4]=r*C-Q*B,A[5]=i*C-E*B,A[6]=o*C-t*B,A[7]=a*C-e*B,A}function fromTranslation(A,I){return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=I[0],A[13]=I[1],A[14]=I[2],A[15]=1,A}function fromScaling(A,I){return A[0]=I[0],A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=I[1],A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=I[2],A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}function fromRotation(A,I,g){var B,C,Q,E=g[0],t=g[1],e=g[2],r=Math.hypot(E,t,e);return r<EPSILON?null:(E*=r=1/r,t*=r,e*=r,B=Math.sin(I),Q=1-(C=Math.cos(I)),A[0]=E*E*Q+C,A[1]=t*E*Q+e*B,A[2]=e*E*Q-t*B,A[3]=0,A[4]=E*t*Q-e*B,A[5]=t*t*Q+C,A[6]=e*t*Q+E*B,A[7]=0,A[8]=E*e*Q+t*B,A[9]=t*e*Q-E*B,A[10]=e*e*Q+C,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A)}function fromXRotation(A,I){var g=Math.sin(I),B=Math.cos(I);return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=B,A[6]=g,A[7]=0,A[8]=0,A[9]=-g,A[10]=B,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}function fromYRotation(A,I){var g=Math.sin(I),B=Math.cos(I);return A[0]=B,A[1]=0,A[2]=-g,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=g,A[9]=0,A[10]=B,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}function fromZRotation(A,I){var g=Math.sin(I),B=Math.cos(I);return A[0]=B,A[1]=g,A[2]=0,A[3]=0,A[4]=-g,A[5]=B,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}function fromRotationTranslation(A,I,g){var B=I[0],C=I[1],Q=I[2],E=I[3],t=B+B,e=C+C,r=Q+Q,i=B*t,o=B*e,a=B*r,s=C*e,n=C*r,c=Q*r,h=E*t,D=E*e,N=E*r;return A[0]=1-(s+c),A[1]=o+N,A[2]=a-D,A[3]=0,A[4]=o-N,A[5]=1-(i+c),A[6]=n+h,A[7]=0,A[8]=a+D,A[9]=n-h,A[10]=1-(i+s),A[11]=0,A[12]=g[0],A[13]=g[1],A[14]=g[2],A[15]=1,A}function fromQuat2(A,I){var g=new ARRAY_TYPE(3),B=-I[0],C=-I[1],Q=-I[2],E=I[3],t=I[4],e=I[5],r=I[6],i=I[7],o=B*B+C*C+Q*Q+E*E;return o>0?(g[0]=2*(t*E+i*B+e*Q-r*C)/o,g[1]=2*(e*E+i*C+r*B-t*Q)/o,g[2]=2*(r*E+i*Q+t*C-e*B)/o):(g[0]=2*(t*E+i*B+e*Q-r*C),g[1]=2*(e*E+i*C+r*B-t*Q),g[2]=2*(r*E+i*Q+t*C-e*B)),fromRotationTranslation(A,I,g),A}function getTranslation(A,I){return A[0]=I[12],A[1]=I[13],A[2]=I[14],A}function getScaling(A,I){var g=I[0],B=I[1],C=I[2],Q=I[4],E=I[5],t=I[6],e=I[8],r=I[9],i=I[10];return A[0]=Math.hypot(g,B,C),A[1]=Math.hypot(Q,E,t),A[2]=Math.hypot(e,r,i),A}function getRotation(A,I){var g=new ARRAY_TYPE(3);getScaling(g,I);var B=1/g[0],C=1/g[1],Q=1/g[2],E=I[0]*B,t=I[1]*C,e=I[2]*Q,r=I[4]*B,i=I[5]*C,o=I[6]*Q,a=I[8]*B,s=I[9]*C,n=I[10]*Q,c=E+i+n,h=0;return c>0?(h=2*Math.sqrt(c+1),A[3]=.25*h,A[0]=(o-s)/h,A[1]=(a-e)/h,A[2]=(t-r)/h):E>i&&E>n?(h=2*Math.sqrt(1+E-i-n),A[3]=(o-s)/h,A[0]=.25*h,A[1]=(t+r)/h,A[2]=(a+e)/h):i>n?(h=2*Math.sqrt(1+i-E-n),A[3]=(a-e)/h,A[0]=(t+r)/h,A[1]=.25*h,A[2]=(o+s)/h):(h=2*Math.sqrt(1+n-E-i),A[3]=(t-r)/h,A[0]=(a+e)/h,A[1]=(o+s)/h,A[2]=.25*h),A}function fromRotationTranslationScale(A,I,g,B){var C=I[0],Q=I[1],E=I[2],t=I[3],e=C+C,r=Q+Q,i=E+E,o=C*e,a=C*r,s=C*i,n=Q*r,c=Q*i,h=E*i,D=t*e,N=t*r,u=t*i,l=B[0],y=B[1],w=B[2];return A[0]=(1-(n+h))*l,A[1]=(a+u)*l,A[2]=(s-N)*l,A[3]=0,A[4]=(a-u)*y,A[5]=(1-(o+h))*y,A[6]=(c+D)*y,A[7]=0,A[8]=(s+N)*w,A[9]=(c-D)*w,A[10]=(1-(o+n))*w,A[11]=0,A[12]=g[0],A[13]=g[1],A[14]=g[2],A[15]=1,A}function fromRotationTranslationScaleOrigin(A,I,g,B,C){var Q=I[0],E=I[1],t=I[2],e=I[3],r=Q+Q,i=E+E,o=t+t,a=Q*r,s=Q*i,n=Q*o,c=E*i,h=E*o,D=t*o,N=e*r,u=e*i,l=e*o,y=B[0],w=B[1],d=B[2],G=C[0],M=C[1],R=C[2],S=(1-(c+D))*y,Y=(s+l)*y,p=(n-u)*y,F=(s-l)*w,f=(1-(a+D))*w,k=(h+N)*w,L=(n+u)*d,U=(h-N)*d,b=(1-(a+c))*d;return A[0]=S,A[1]=Y,A[2]=p,A[3]=0,A[4]=F,A[5]=f,A[6]=k,A[7]=0,A[8]=L,A[9]=U,A[10]=b,A[11]=0,A[12]=g[0]+G-(S*G+F*M+L*R),A[13]=g[1]+M-(Y*G+f*M+U*R),A[14]=g[2]+R-(p*G+k*M+b*R),A[15]=1,A}function fromQuat(A,I){var g=I[0],B=I[1],C=I[2],Q=I[3],E=g+g,t=B+B,e=C+C,r=g*E,i=B*E,o=B*t,a=C*E,s=C*t,n=C*e,c=Q*E,h=Q*t,D=Q*e;return A[0]=1-o-n,A[1]=i+D,A[2]=a-h,A[3]=0,A[4]=i-D,A[5]=1-r-n,A[6]=s+c,A[7]=0,A[8]=a+h,A[9]=s-c,A[10]=1-r-o,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}function frustum(A,I,g,B,C,Q,E){var t=1/(g-I),e=1/(C-B),r=1/(Q-E);return A[0]=2*Q*t,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=2*Q*e,A[6]=0,A[7]=0,A[8]=(g+I)*t,A[9]=(C+B)*e,A[10]=(E+Q)*r,A[11]=-1,A[12]=0,A[13]=0,A[14]=E*Q*2*r,A[15]=0,A}function perspectiveNO(A,I,g,B,C){var Q,E=1/Math.tan(I/2);return A[0]=E/g,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=E,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[11]=-1,A[12]=0,A[13]=0,A[15]=0,null!=C&&C!==1/0?(Q=1/(B-C),A[10]=(C+B)*Q,A[14]=2*C*B*Q):(A[10]=-1,A[14]=-2*B),A}__export(mat4_exports,{add:()=>add,adjoint:()=>adjoint,clone:()=>clone,copy:()=>copy,create:()=>create,determinant:()=>determinant,equals:()=>equals,exactEquals:()=>exactEquals,frob:()=>frob,fromQuat:()=>fromQuat,fromQuat2:()=>fromQuat2,fromRotation:()=>fromRotation,fromRotationTranslation:()=>fromRotationTranslation,fromRotationTranslationScale:()=>fromRotationTranslationScale,fromRotationTranslationScaleOrigin:()=>fromRotationTranslationScaleOrigin,fromScaling:()=>fromScaling,fromTranslation:()=>fromTranslation,fromValues:()=>fromValues,fromXRotation:()=>fromXRotation,fromYRotation:()=>fromYRotation,fromZRotation:()=>fromZRotation,frustum:()=>frustum,getRotation:()=>getRotation,getScaling:()=>getScaling,getTranslation:()=>getTranslation,identity:()=>identity,invert:()=>invert,lookAt:()=>lookAt,mul:()=>mul,multiply:()=>multiply,multiplyScalar:()=>multiplyScalar,multiplyScalarAndAdd:()=>multiplyScalarAndAdd,ortho:()=>ortho,orthoNO:()=>orthoNO,orthoZO:()=>orthoZO,perspective:()=>perspective,perspectiveFromFieldOfView:()=>perspectiveFromFieldOfView,perspectiveNO:()=>perspectiveNO,perspectiveZO:()=>perspectiveZO,rotate:()=>rotate,rotateX:()=>rotateX,rotateY:()=>rotateY,rotateZ:()=>rotateZ,scale:()=>scale,set:()=>set,str:()=>str,sub:()=>sub,subtract:()=>subtract,targetTo:()=>targetTo,translate:()=>translate,transpose:()=>transpose});var perspective=perspectiveNO;function perspectiveZO(A,I,g,B,C){var Q,E=1/Math.tan(I/2);return A[0]=E/g,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=E,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[11]=-1,A[12]=0,A[13]=0,A[15]=0,null!=C&&C!==1/0?(Q=1/(B-C),A[10]=C*Q,A[14]=C*B*Q):(A[10]=-1,A[14]=-B),A}function perspectiveFromFieldOfView(A,I,g,B){var C=Math.tan(I.upDegrees*Math.PI/180),Q=Math.tan(I.downDegrees*Math.PI/180),E=Math.tan(I.leftDegrees*Math.PI/180),t=Math.tan(I.rightDegrees*Math.PI/180),e=2/(E+t),r=2/(C+Q);return A[0]=e,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=r,A[6]=0,A[7]=0,A[8]=-(E-t)*e*.5,A[9]=(C-Q)*r*.5,A[10]=B/(g-B),A[11]=-1,A[12]=0,A[13]=0,A[14]=B*g/(g-B),A[15]=0,A}function orthoNO(A,I,g,B,C,Q,E){var t=1/(I-g),e=1/(B-C),r=1/(Q-E);return A[0]=-2*t,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=-2*e,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=2*r,A[11]=0,A[12]=(I+g)*t,A[13]=(C+B)*e,A[14]=(E+Q)*r,A[15]=1,A}var ortho=orthoNO;function orthoZO(A,I,g,B,C,Q,E){var t=1/(I-g),e=1/(B-C),r=1/(Q-E);return A[0]=-2*t,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=-2*e,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=r,A[11]=0,A[12]=(I+g)*t,A[13]=(C+B)*e,A[14]=Q*r,A[15]=1,A}function lookAt(A,I,g,B){var C,Q,E,t,e,r,i,o,a,s,n=I[0],c=I[1],h=I[2],D=B[0],N=B[1],u=B[2],l=g[0],y=g[1],w=g[2];return Math.abs(n-l)<EPSILON&&Math.abs(c-y)<EPSILON&&Math.abs(h-w)<EPSILON?identity(A):(i=n-l,o=c-y,a=h-w,C=N*(a*=s=1/Math.hypot(i,o,a))-u*(o*=s),Q=u*(i*=s)-D*a,E=D*o-N*i,(s=Math.hypot(C,Q,E))?(C*=s=1/s,Q*=s,E*=s):(C=0,Q=0,E=0),t=o*E-a*Q,e=a*C-i*E,r=i*Q-o*C,(s=Math.hypot(t,e,r))?(t*=s=1/s,e*=s,r*=s):(t=0,e=0,r=0),A[0]=C,A[1]=t,A[2]=i,A[3]=0,A[4]=Q,A[5]=e,A[6]=o,A[7]=0,A[8]=E,A[9]=r,A[10]=a,A[11]=0,A[12]=-(C*n+Q*c+E*h),A[13]=-(t*n+e*c+r*h),A[14]=-(i*n+o*c+a*h),A[15]=1,A)}function targetTo(A,I,g,B){var C=I[0],Q=I[1],E=I[2],t=B[0],e=B[1],r=B[2],i=C-g[0],o=Q-g[1],a=E-g[2],s=i*i+o*o+a*a;s>0&&(i*=s=1/Math.sqrt(s),o*=s,a*=s);var n=e*a-r*o,c=r*i-t*a,h=t*o-e*i;return(s=n*n+c*c+h*h)>0&&(n*=s=1/Math.sqrt(s),c*=s,h*=s),A[0]=n,A[1]=c,A[2]=h,A[3]=0,A[4]=o*h-a*c,A[5]=a*n-i*h,A[6]=i*c-o*n,A[7]=0,A[8]=i,A[9]=o,A[10]=a,A[11]=0,A[12]=C,A[13]=Q,A[14]=E,A[15]=1,A}function str(A){return"mat4("+A[0]+", "+A[1]+", "+A[2]+", "+A[3]+", "+A[4]+", "+A[5]+", "+A[6]+", "+A[7]+", "+A[8]+", "+A[9]+", "+A[10]+", "+A[11]+", "+A[12]+", "+A[13]+", "+A[14]+", "+A[15]+")"}function frob(A){return Math.hypot(A[0],A[1],A[2],A[3],A[4],A[5],A[6],A[7],A[8],A[9],A[10],A[11],A[12],A[13],A[14],A[15])}function add(A,I,g){return A[0]=I[0]+g[0],A[1]=I[1]+g[1],A[2]=I[2]+g[2],A[3]=I[3]+g[3],A[4]=I[4]+g[4],A[5]=I[5]+g[5],A[6]=I[6]+g[6],A[7]=I[7]+g[7],A[8]=I[8]+g[8],A[9]=I[9]+g[9],A[10]=I[10]+g[10],A[11]=I[11]+g[11],A[12]=I[12]+g[12],A[13]=I[13]+g[13],A[14]=I[14]+g[14],A[15]=I[15]+g[15],A}function subtract(A,I,g){return A[0]=I[0]-g[0],A[1]=I[1]-g[1],A[2]=I[2]-g[2],A[3]=I[3]-g[3],A[4]=I[4]-g[4],A[5]=I[5]-g[5],A[6]=I[6]-g[6],A[7]=I[7]-g[7],A[8]=I[8]-g[8],A[9]=I[9]-g[9],A[10]=I[10]-g[10],A[11]=I[11]-g[11],A[12]=I[12]-g[12],A[13]=I[13]-g[13],A[14]=I[14]-g[14],A[15]=I[15]-g[15],A}function multiplyScalar(A,I,g){return A[0]=I[0]*g,A[1]=I[1]*g,A[2]=I[2]*g,A[3]=I[3]*g,A[4]=I[4]*g,A[5]=I[5]*g,A[6]=I[6]*g,A[7]=I[7]*g,A[8]=I[8]*g,A[9]=I[9]*g,A[10]=I[10]*g,A[11]=I[11]*g,A[12]=I[12]*g,A[13]=I[13]*g,A[14]=I[14]*g,A[15]=I[15]*g,A}function multiplyScalarAndAdd(A,I,g,B){return A[0]=I[0]+g[0]*B,A[1]=I[1]+g[1]*B,A[2]=I[2]+g[2]*B,A[3]=I[3]+g[3]*B,A[4]=I[4]+g[4]*B,A[5]=I[5]+g[5]*B,A[6]=I[6]+g[6]*B,A[7]=I[7]+g[7]*B,A[8]=I[8]+g[8]*B,A[9]=I[9]+g[9]*B,A[10]=I[10]+g[10]*B,A[11]=I[11]+g[11]*B,A[12]=I[12]+g[12]*B,A[13]=I[13]+g[13]*B,A[14]=I[14]+g[14]*B,A[15]=I[15]+g[15]*B,A}function exactEquals(A,I){return A[0]===I[0]&&A[1]===I[1]&&A[2]===I[2]&&A[3]===I[3]&&A[4]===I[4]&&A[5]===I[5]&&A[6]===I[6]&&A[7]===I[7]&&A[8]===I[8]&&A[9]===I[9]&&A[10]===I[10]&&A[11]===I[11]&&A[12]===I[12]&&A[13]===I[13]&&A[14]===I[14]&&A[15]===I[15]}function equals(A,I){var g=A[0],B=A[1],C=A[2],Q=A[3],E=A[4],t=A[5],e=A[6],r=A[7],i=A[8],o=A[9],a=A[10],s=A[11],n=A[12],c=A[13],h=A[14],D=A[15],N=I[0],u=I[1],l=I[2],y=I[3],w=I[4],d=I[5],G=I[6],M=I[7],R=I[8],S=I[9],Y=I[10],p=I[11],F=I[12],f=I[13],k=I[14],L=I[15];return Math.abs(g-N)<=EPSILON*Math.max(1,Math.abs(g),Math.abs(N))&&Math.abs(B-u)<=EPSILON*Math.max(1,Math.abs(B),Math.abs(u))&&Math.abs(C-l)<=EPSILON*Math.max(1,Math.abs(C),Math.abs(l))&&Math.abs(Q-y)<=EPSILON*Math.max(1,Math.abs(Q),Math.abs(y))&&Math.abs(E-w)<=EPSILON*Math.max(1,Math.abs(E),Math.abs(w))&&Math.abs(t-d)<=EPSILON*Math.max(1,Math.abs(t),Math.abs(d))&&Math.abs(e-G)<=EPSILON*Math.max(1,Math.abs(e),Math.abs(G))&&Math.abs(r-M)<=EPSILON*Math.max(1,Math.abs(r),Math.abs(M))&&Math.abs(i-R)<=EPSILON*Math.max(1,Math.abs(i),Math.abs(R))&&Math.abs(o-S)<=EPSILON*Math.max(1,Math.abs(o),Math.abs(S))&&Math.abs(a-Y)<=EPSILON*Math.max(1,Math.abs(a),Math.abs(Y))&&Math.abs(s-p)<=EPSILON*Math.max(1,Math.abs(s),Math.abs(p))&&Math.abs(n-F)<=EPSILON*Math.max(1,Math.abs(n),Math.abs(F))&&Math.abs(c-f)<=EPSILON*Math.max(1,Math.abs(c),Math.abs(f))&&Math.abs(h-k)<=EPSILON*Math.max(1,Math.abs(h),Math.abs(k))&&Math.abs(D-L)<=EPSILON*Math.max(1,Math.abs(D),Math.abs(L))}var mul=multiply,sub=subtract,KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE=570703,vbSeq=0,_VirtualBackground=class A{constructor(A){this.core=A,__publicField(this,"seq"),__publicField(this,"_core"),__publicField(this,"log"),__publicField(this,"preLoadPromise"),__publicField(this,"startResolve"),__publicField(this,"startReject"),__publicField(this,"mediaPipeSolutions"),__publicField(this,"assetsPath"),__publicField(this,"currentType"),__publicField(this,"onAbort"),__publicField(this,"isAborted",!1),vbSeq+=1,this.seq=vbSeq,this._core=A,this.log=A.log.createChild({id:`${this.getAlias()}${vbSeq}`}),this.log.info("created"),A.assetsPath&&(this.preLoadPromise=this.preload(A.assetsPath))}static isSupported(){if(CHROME_MAJOR_VERSION<90)return!1;const A=document.createElement("canvas").getContext("webgl2");return!!(A&&A instanceof WebGL2RenderingContext)}async preload(A){try{this._core.room.videoManager.Wasm||(this._core.room.videoManager.Wasm=await allin1_default());const I=A=>{var I;this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!1,this.isAborted,"ABORT_IN_INFERENCE")}),this.isAborted=!0,this.log.error("mediaPipeSolutions abort",A),this.core.clearStarted(this,this.getGroup()),this.stop(),null==(I=this.onAbort)||I.call(this,A)};this._core.room.videoManager.initVirtualBackground(I,mat4_exports),await this._core.initVisionTaskRegistry(A)}catch(A){const{RtcError:I,ErrorCode:g}=this._core.errorModule;throw new I({code:g.INVALID_OPERATION,message:`VirtualBackground preload error, please check your assetsPath. detail: ${A}`})}}getName(){return A.Name}getAlias(){return"vb"}getValidateRule(A){switch(A){case"start":return startValidateRule(this._core);case"update":return updateValidateRule(this._core);case"stop":return stopValidateRule(this._core)}}getGroup(){return"vb"}getKVTypeValue(A=!1,I=!1,g="NONE"){let B=0;switch(this.currentType){case"blur":B|=0;break;case"image":B|=1;break;case"green":B|=2}switch(A&&(B|=256),I&&(B|=512),g){case"ABORT_IN_INFERENCE":B|=4096;break;case"ABORT_IN_VIDEO_MANAGER":B|=8192;break;case"OTHER":B|=61440}return B}async start(A){const{type:I="blur",src:g,blurLevel:B=3,onAbort:C}=A;this.currentType=I,this.onAbort=C;const{auth:Q}=await authEffect({sdkAppId:A.sdkAppId,userId:A.userId,userSig:A.userSig,core:this._core}),{RtcError:E,ErrorCodeDictionary:t,ErrorCode:e}=this._core.errorModule;if(!Q){const I=this._core.utils.isOverseaSdkAppId(A.sdkAppId)?"https://trtc.io/document/56025":"https://cloud.tencent.com/document/product/647/85386";throw new E({code:t.NEED_TO_BUY,messageParams:{value:"Virtual Background",url:I}})}if(!this.preLoadPromise){if(!this._core.assetsPath)throw new E({code:e.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});this.preLoadPromise=this.preload(this._core.assetsPath)}return await this.preLoadPromise,this.core.room.videoManager.setVirtualBackground({type:I,imageUrl:g,blurLevel:B,enableFaceCentering:A.enableFaceCentering,onAbort:A=>{var I;this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!0,this.isAborted,"ABORT_IN_VIDEO_MANAGER")}),this.isAborted=!0,this.core.clearStarted(this,this.getGroup()),this.stop(),delete this.preLoadPromise,null==(I=this.onAbort)||I.call(this,A)}}).then((()=>{this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!1,this.isAborted,"NONE")})})).catch((()=>{this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!0,this.isAborted,"OTHER")})}))}async update(A){const{type:I,src:g}=A;return I!==this.currentType&&(this.currentType=I),this.core.room.videoManager.setVirtualBackground({type:I,imageUrl:g,blurLevel:A.blurLevel,enableFaceCentering:A.enableFaceCentering}).then((()=>{this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!1,!1,"NONE")})})).catch((()=>{this.core.kvStatManager.addEnum({key:KV_REPORT_KEY_VIRTUAL_BACKGROUND_TYPE,value:this.getKVTypeValue(!0,!1,"OTHER")})}))}async stop(){return this.core.room.videoManager.setVirtualBackground()}};__publicField(_VirtualBackground,"Name","VirtualBackground");var VirtualBackground=_VirtualBackground,index_default=VirtualBackground;export{index_default as default};export{VirtualBackground};
|