@ikonai/sdk-ui 1.1.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/audio-playback-worker-x-Mt8MXY.js +1 -0
- package/assets/protocol-worker-G-c3_38g.js +1 -0
- package/assets/ui-worker-Ch-GLDYQ.js +1 -0
- package/assets/{video-capture-worker-BQGOFbZt.js → video-capture-worker-CXXGkUg0.js} +1 -1
- package/assets/{video-playback-worker-BdfWDo46.js → video-playback-worker-BpnzByZm.js} +1 -1
- package/assets/{viseme-worker-DoO4M4Te.js → viseme-worker-DFgMth_1.js} +1 -1
- package/ikon-ui-core.d.ts +11 -0
- package/index.js +24 -3
- package/package.json +1 -1
- package/assets/audio-playback-worker-B-dHMbvO.js +0 -1
- package/assets/protocol-worker-DwwqSFAV.js +0 -1
- package/assets/ui-worker-CejqUEoP.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={None:0,SendBackToSender:1,Delayable:2,SendToUser:4,Compressed:8,Unreliable:16};function t(e){return e}function n(e){if(e.length<8)throw Error(`Protocol message too short`);return(e[4]|e[5]<<8|e[6]<<16|e[7]<<24)>>>0}function r(e){let t=S(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(t.length<27)throw Error(`Protocol payload too short`);let r=n.getUint32(0,!0),i=n.getUint32(4,!0),a=n.getUint32(8,!0),o=n.getUint32(12,!0),s=n.getUint32(16,!0),c=n.getUint32(20,!0),l=n.getUint8(24),u=n.getUint8(25),d=n.getUint8(26);if(27+c*4>t.length)throw Error(`Protocol header exceeds payload length`);let f=[],p=27;for(let e=0;e<c;e++)f.push(n.getUint32(p,!0)),p+=4;return{length:r,opcode:i,senderId:a,trackId:o,sequenceId:s,targetIds:f,payloadVersion:l,payloadType:u,flags:d}}async function i(t,n,i){let o=S(t),s=r(o);if(n!==void 0&&s.opcode!==n)throw Error(`Unexpected opcode ${s.opcode}`);if(s.payloadType!==8)throw Error(`Unexpected payload type ${s.payloadType}`);let c=27+s.targetIds.length*4,l=o.subarray(c,s.length);return(s.flags&e.Compressed)!==0&&(l=await a(l)),l}async function a(e){if(typeof DecompressionStream>`u`)throw Error(`DecompressionStream not supported`);let t=new DecompressionStream(`gzip`),n=t.writable.getWriter(),r=new Uint8Array(e);n.write(r).then(()=>n.close()).catch(()=>void 0);let i=t.readable.getReader(),a=[],o=0;for(;;){let{done:e,value:t}=await i.read();if(e)break;a.push(t),o+=t.length}let s=new Uint8Array(o),c=0;for(let e=0;e<a.length;e++)s.set(a[e],c),c+=a[e].length;return s}let o=function(e){return e[e.Null=1]=`Null`,e[e.Bool=2]=`Bool`,e[e.Int32=3]=`Int32`,e[e.Int64=4]=`Int64`,e[e.UInt32=5]=`UInt32`,e[e.UInt64=6]=`UInt64`,e[e.Float32=7]=`Float32`,e[e.Float64=8]=`Float64`,e[e.Array=9]=`Array`,e[e.Dict=10]=`Dict`,e[e.Object=11]=`Object`,e[e.String=12]=`String`,e[e.Binary=13]=`Binary`,e[e.Guid=14]=`Guid`,e}({});new TextEncoder;const s=new TextDecoder(`utf-8`,{fatal:!0});var c=class e{buffer;version;offset;end;constructor(e,t,n){this.buffer=e,this.version=t,this.offset=n,this.end=e.length-1}static create(t){let n=S(t);if(n.length<2)throw Error(`Teleport payload too short`);if(n[0]!==161||n[n.length-1]!==162)throw Error(`Teleport object missing markers`);let r={offset:1},i=m(n,r,`InvalidLength`);return new e(n,i,r.offset)}next(){if(this.offset>=this.end)return null;if(this.offset+5>this.buffer.length)throw Error(`Teleport object truncated`);let e=re(this.buffer,this.offset);this.offset+=4;let t=this.buffer[this.offset++],n=t>>4&15;if(t&15)throw Error(`Teleport field flags must be zero`);let r=h(n),i;if(r>=0)_(this.buffer,this.offset,r),i=this.buffer.subarray(this.offset,this.offset+r),this.offset+=r;else{let e={offset:this.offset},t=m(this.buffer,e,`InvalidLength`);_(this.buffer,e.offset,t),i=this.buffer.subarray(e.offset,e.offset+t),this.offset=e.offset+t}return new u(e,n,i)}},l=class{type;payload;constructor(e,t){this.type=e,this.payload=t}asInt32(){return this.ensureType(3),new DataView(this.payload.buffer,this.payload.byteOffset,4).getInt32(0,!0)}asUInt32(){return this.ensureType(5),new DataView(this.payload.buffer,this.payload.byteOffset,4).getUint32(0,!0)}asInt64(){return this.ensureType(4),new DataView(this.payload.buffer,this.payload.byteOffset,8).getBigInt64(0,!0)}asUInt64(){return this.ensureType(6),new DataView(this.payload.buffer,this.payload.byteOffset,8).getBigUint64(0,!0)}asFloat32(){return this.ensureType(7),new DataView(this.payload.buffer,this.payload.byteOffset,4).getFloat32(0,!0)}asFloat64(){return this.ensureType(8),new DataView(this.payload.buffer,this.payload.byteOffset,8).getFloat64(0,!0)}asBool(){return this.ensureType(2),this.payload.length>0&&this.payload[0]!==0}asBinary(){return this.ensureType(13),this.payload}asUtf8(){return this.ensureType(12),this.payload}asString(){return this.ensureType(12),s.decode(this.payload)}asGuid(){return this.ensureType(14),te.fromBytes(this.payload)}asObject(){return this.ensureType(11),c.create(this.payload)}asArray(){return this.ensureType(9),d.create(this.payload)}asDictionary(){return this.ensureType(10),p.create(this.payload)}ensureType(e){if(this.type!==e)throw Error(`Teleport value has type ${o[this.type]}, expected ${o[e]}`)}},u=class extends l{fieldId;constructor(e,t,n){super(t,n),this.fieldId=e}get isNull(){return this.type===1}},d=class e{payload;elementType;count;offset;index=0;constructor(e){if(this.payload=e,e.length===0)throw Error(`Array payload too short`);let t=e[0];if(this.elementType=t>>4&15,t&15)throw Error(`Array flags must be zero`);let n={offset:1};this.count=m(e,n,`ArrayMalformed`),this.offset=n.offset}static create(t){return new e(S(t))}next(){if(this.index>=this.count){if(this.offset!==this.payload.length)throw Error(`Array payload contains trailing data`);return null}let e=this.readValue();return this.index++,e}readValue(){switch(this.elementType){case 3:case 5:case 7:case 8:case 2:case 4:case 6:case 14:{let e=h(this.elementType);_(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(this.elementType,t)}case 12:case 13:{let e={offset:this.offset},t=m(this.payload,e,`ArrayMalformed`);_(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new f(this.elementType,n)}case 11:{let e={offset:this.offset},t=m(this.payload,e,`ArrayMalformed`);_(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new f(11,n)}case 9:{let e=v(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(9,t)}case 10:{let e=y(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(10,t)}default:throw Error(`Unsupported array element type ${o[this.elementType]}`)}}},f=class extends l{constructor(e,t){super(e,t)}},p=class e{payload;keyType;valueType;count;offset;index=0;constructor(e){if(this.payload=e,e.length<2)throw Error(`Dictionary payload too short`);if(this.keyType=e[0]>>4&15,this.valueType=e[1]>>4&15,e[0]&15||e[1]&15)throw Error(`Dictionary key/value flags must be zero`);g(this.keyType);let t={offset:2};this.count=m(e,t,`DictMalformed`),this.offset=t.offset}static create(t){return new e(S(t))}next(){if(this.index>=this.count){if(this.offset!==this.payload.length)throw Error(`Dictionary payload contains trailing data`);return null}let e=this.readKey(),t=this.readValue();return this.index++,new ee(e,t)}readKey(){let e=h(this.keyType);if(e>=0){_(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(this.keyType,t)}if(this.keyType===12||this.keyType===13){let e={offset:this.offset},t=m(this.payload,e,`DictMalformed`);_(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(this.keyType,n)}throw Error(`Unsupported dictionary key type`)}readValue(){switch(this.valueType){case 12:case 13:{let e={offset:this.offset},t=m(this.payload,e,`DictMalformed`);_(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(this.valueType,n)}case 11:{let e={offset:this.offset},t=m(this.payload,e,`DictMalformed`);_(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(11,n)}case 9:{let e=v(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(9,t)}case 10:{let e=y(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(10,t)}case 3:case 5:case 7:case 8:case 2:case 4:case 6:case 14:case 1:{let e=h(this.valueType);_(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(this.valueType,t)}default:throw Error(`Unsupported dictionary value type ${o[this.valueType]}`)}}},ee=class{key;value;constructor(e,t){this.key=e,this.value=t}},te=class e{bytes;constructor(e){this.bytes=e}static fromString(t){if(!t)throw Error(`Guid string is empty`);let n=t.replace(/-/g,``);if(n.length!==32)throw Error(`Guid string must be 32 hex characters`);let r=new Uint8Array(16),i=e.parseHexSlice(n,0,8),a=e.parseHexSlice(n,8,4),o=e.parseHexSlice(n,12,4);e.writeUInt32LE(r,0,i),e.writeUInt16LE(r,4,a),e.writeUInt16LE(r,6,o);for(let t=0;t<8;t++)r[8+t]=e.parseHexSlice(n,16+t*2,2);return new e(r)}static fromBytes(t){if(t.length!==16)throw Error(`Guid byte array must be 16 bytes`);return new e(Uint8Array.from(t))}static createZero(){return new e(new Uint8Array(16))}static createRandom(){let t=new Uint8Array(16),n=globalThis.crypto;if(n?.getRandomValues)n.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return t[6]=t[6]&15|64,t[8]=t[8]&63|128,new e(t)}toString(){let t=this.bytes;return[e.toHex(e.readUInt32LE(t,0),8),e.toHex(e.readUInt16LE(t,4),4),e.toHex(e.readUInt16LE(t,6),4),x(t.subarray(8,10)),x(t.subarray(10,16))].join(`-`)}asBytes(){return this.bytes.slice()}static parseHexSlice(e,t,n){let r=e.substr(t,n),i=Number.parseInt(r,16);if(Number.isNaN(i))throw Error(`Guid string contains invalid characters`);return i>>>0}static writeUInt32LE(e,t,n){let r=n>>>0;e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24&255}static writeUInt16LE(e,t,n){let r=n&65535;e[t]=r&255,e[t+1]=r>>>8&255}static readUInt32LE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}static readUInt16LE(e,t){return(e[t]|e[t+1]<<8)&65535}static toHex(e,t){return(e>>>0).toString(16).padStart(t,`0`)}};function m(e,t,n){if(t.offset>=e.length)throw Error(n);let r=0,i=0,a=0;for(;t.offset<e.length;){let n=e[t.offset++];if(a++,r|=(n&127)<<i,!(n&128)){if(a!==ne(r))throw Error(`Teleport VarUInt is not canonical`);return r>>>0}if(i+=7,i>=35)throw Error(`Teleport VarUInt exceeds 32-bit range`)}throw Error(n)}function ne(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}function h(e){switch(e){case 3:case 5:case 7:return 4;case 4:case 6:case 8:return 8;case 14:return 16;case 2:return 1;case 1:return 0;default:return-1}}function g(e){if(e===9||e===11||e===10||e===1)throw Error(`Dictionary keys must be primitive Teleport types`)}function _(e,t,n){if(t<0||n<0||t+n>e.length)throw Error(`Teleport payload exceeds bounds`)}function re(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function v(e,t){if(t>=e.length)throw Error(`Array payload exceeds bounds`);let n=e[t],r=n>>4&15;if(n&15)throw Error(`Array flags must be zero`);let i={offset:t+1},a=m(e,i,`ArrayMalformed`),o=h(r);if(o>=0){let n=o*a;return _(e,i.offset,n),i.offset+n-t}let s=i.offset;for(let t=0;t<a;t++)s=b(r,e,s,`ArrayMalformed`);return s-t}function y(e,t){if(t+2>e.length)throw Error(`Dictionary payload too short`);let n=e[t]>>4&15,r=e[t+1]>>4&15;if(e[t]&15||e[t+1]&15)throw Error(`Dictionary key/value flags must be zero`);g(n);let i={offset:t+2},a=m(e,i,`DictMalformed`),o=i.offset;for(let t=0;t<a;t++)o=b(n,e,o,`DictMalformed`),o=b(r,e,o,`DictMalformed`);return o-t}function b(e,t,n,r){let i=h(e);if(i>=0)return _(t,n,i),n+i;switch(e){case 12:case 13:{let e={offset:n},i=m(t,e,r);return _(t,e.offset,i),e.offset+i}case 11:{let e={offset:n},i=m(t,e,r);return _(t,e.offset,i),e.offset+i}case 9:return n+v(t,n);case 10:return n+y(t,n);default:throw Error(`Unsupported Teleport type ${o[e]}`)}}function x(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function S(e){return e instanceof Uint8Array?e:new Uint8Array(e)}let C=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Opus=1]=`Opus`,e[e.Mp3=2]=`Mp3`,e[e.RawPcm16=3]=`RawPcm16`,e}({}),w=function(e){return e[e.NONE=0]=`NONE`,e[e.CONSTANT_GROUP_BITS=15]=`CONSTANT_GROUP_BITS`,e[e.CONSTANT_GROUP_OFFSET=16]=`CONSTANT_GROUP_OFFSET`,e[e.GROUP_CORE=65536]=`GROUP_CORE`,e[e.CORE_AUTH_RESPONSE=65537]=`CORE_AUTH_RESPONSE`,e[e.CORE_AUTH_TICKET=65538]=`CORE_AUTH_TICKET`,e[e.CORE_GLOBAL_STATE=65539]=`CORE_GLOBAL_STATE`,e[e.CORE_ON_SERVER_STATUS_PING=65540]=`CORE_ON_SERVER_STATUS_PING`,e[e.CORE_ON_USER_JOINED=65541]=`CORE_ON_USER_JOINED`,e[e.CORE_ON_USER_LEFT=65542]=`CORE_ON_USER_LEFT`,e[e.CORE_ON_CLIENT_JOINED=65543]=`CORE_ON_CLIENT_JOINED`,e[e.CORE_ON_CLIENT_LEFT=65544]=`CORE_ON_CLIENT_LEFT`,e[e.CORE_ON_SERVER_STARTED=65545]=`CORE_ON_SERVER_STARTED`,e[e.CORE_ON_SERVER_STOPPED=65546]=`CORE_ON_SERVER_STOPPED`,e[e.CORE_ON_SERVER_STOPPING=65547]=`CORE_ON_SERVER_STOPPING`,e[e.CORE_ON_CLIENT_READY=65548]=`CORE_ON_CLIENT_READY`,e[e.CORE_CLIENT_READY=65549]=`CORE_CLIENT_READY`,e[e.CORE_SERVER_INIT=65550]=`CORE_SERVER_INIT`,e[e.CORE_ON_PLUGIN_RELOADED=65551]=`CORE_ON_PLUGIN_RELOADED`,e[e.CORE_DYNAMIC_CONFIG=65555]=`CORE_DYNAMIC_CONFIG`,e[e.CORE_PROXY_RPC_AUTH_TICKET=65556]=`CORE_PROXY_RPC_AUTH_TICKET`,e[e.CORE_UPDATE_CLIENT_CONTEXT=65558]=`CORE_UPDATE_CLIENT_CONTEXT`,e[e.CORE_BACKGROUND_WORK_ACTIVE=65559]=`CORE_BACKGROUND_WORK_ACTIVE`,e[e.CORE_RESET_IDLE=65560]=`CORE_RESET_IDLE`,e[e.CORE_CLIENT_DISCONNECTING=65561]=`CORE_CLIENT_DISCONNECTING`,e[e.CORE_ON_APP_READY=65562]=`CORE_ON_APP_READY`,e[e.CORE_ON_FRONTEND_RELOADED=65563]=`CORE_ON_FRONTEND_RELOADED`,e[e.CORE_ON_USER_DATA_ERASED=65564]=`CORE_ON_USER_DATA_ERASED`,e[e.CORE_WEBRTC_OFFER=65566]=`CORE_WEBRTC_OFFER`,e[e.CORE_WEBRTC_ANSWER=65567]=`CORE_WEBRTC_ANSWER`,e[e.CORE_WEBRTC_ICE_CANDIDATE=65568]=`CORE_WEBRTC_ICE_CANDIDATE`,e[e.CORE_WEBRTC_READY=65569]=`CORE_WEBRTC_READY`,e[e.CORE_WEBRTC_AUDIO_SEGMENT=65570]=`CORE_WEBRTC_AUDIO_SEGMENT`,e[e.CORE_WEBRTC_TRACK_MAP=65571]=`CORE_WEBRTC_TRACK_MAP`,e[e.CORE_WEBRTC_VIDEO_CAPTURE=65572]=`CORE_WEBRTC_VIDEO_CAPTURE`,e[e.CORE_WEBRTC_ICE_SERVERS_REQUEST=65573]=`CORE_WEBRTC_ICE_SERVERS_REQUEST`,e[e.CORE_WEBRTC_ICE_SERVERS_RESPONSE=65574]=`CORE_WEBRTC_ICE_SERVERS_RESPONSE`,e[e.CORE_WEBRTC_CLOSE=65575]=`CORE_WEBRTC_CLOSE`,e[e.CORE_RELAY_AGENT_AUTH=65576]=`CORE_RELAY_AGENT_AUTH`,e[e.CORE_RELAY_AGENT_AUTH_RESULT=65577]=`CORE_RELAY_AGENT_AUTH_RESULT`,e[e.CORE_RELAY_HEARTBEAT=65578]=`CORE_RELAY_HEARTBEAT`,e[e.CORE_RELAY_TCP_CONNECTION_OPENED=65579]=`CORE_RELAY_TCP_CONNECTION_OPENED`,e[e.CORE_RELAY_TCP_CONNECTION_CLOSED=65580]=`CORE_RELAY_TCP_CONNECTION_CLOSED`,e[e.CORE_RELAY_TCP_DATA=65581]=`CORE_RELAY_TCP_DATA`,e[e.CORE_RELAY_UDP_DATA=65582]=`CORE_RELAY_UDP_DATA`,e[e.CORE_RELAY_ADD_TUNNEL=65583]=`CORE_RELAY_ADD_TUNNEL`,e[e.CORE_RELAY_TUNNEL_ADDED=65584]=`CORE_RELAY_TUNNEL_ADDED`,e[e.CORE_RELAY_REMOVE_TUNNEL=65585]=`CORE_RELAY_REMOVE_TUNNEL`,e[e.CORE_IKON_SERVER_ENDPOINT_HOST_INFO=65586]=`CORE_IKON_SERVER_ENDPOINT_HOST_INFO`,e[e.CORE_CLIENT_INITIALIZATION=65587]=`CORE_CLIENT_INITIALIZATION`,e[e.CORE_CLIENT_LIFECYCLE_BATCH=65588]=`CORE_CLIENT_LIFECYCLE_BATCH`,e[e.CORE_APP_CONFIG=65589]=`CORE_APP_CONFIG`,e[e.GROUP_KEEPALIVE=131072]=`GROUP_KEEPALIVE`,e[e.KEEPALIVE_REQUEST=131073]=`KEEPALIVE_REQUEST`,e[e.KEEPALIVE_RESPONSE=131074]=`KEEPALIVE_RESPONSE`,e[e.GROUP_EVENTS=262144]=`GROUP_EVENTS`,e[e.EVENTS_PROFILE_UPDATE=262145]=`EVENTS_PROFILE_UPDATE`,e[e.EVENTS_SPEECH_PLAYBACK_COMPLETE=262147]=`EVENTS_SPEECH_PLAYBACK_COMPLETE`,e[e.GROUP_ANALYTICS=524288]=`GROUP_ANALYTICS`,e[e.ANALYTICS_LOGS=524289]=`ANALYTICS_LOGS`,e[e.ANALYTICS_EVENTS=524290]=`ANALYTICS_EVENTS`,e[e.ANALYTICS_USAGES=524291]=`ANALYTICS_USAGES`,e[e.ANALYTICS_USAGE=524292]=`ANALYTICS_USAGE`,e[e.ANALYTICS_SPECIAL_LOG=524293]=`ANALYTICS_SPECIAL_LOG`,e[e.ANALYTICS_PROCESSING_UPDATE=524294]=`ANALYTICS_PROCESSING_UPDATE`,e[e.ANALYTICS_REACTIVE_PROCESSING_UPDATE=524295]=`ANALYTICS_REACTIVE_PROCESSING_UPDATE`,e[e.ANALYTICS_IKON_PROXY_SERVER_STATS=524296]=`ANALYTICS_IKON_PROXY_SERVER_STATS`,e[e.ANALYTICS_IKON_RELAY_SERVER_STATS=524297]=`ANALYTICS_IKON_RELAY_SERVER_STATS`,e[e.ANALYTICS_IKON_TURN_SERVER_STATS=524298]=`ANALYTICS_IKON_TURN_SERVER_STATS`,e[e.ANALYTICS_IKON_HOST_SERVER_STATS=524299]=`ANALYTICS_IKON_HOST_SERVER_STATS`,e[e.GROUP_ACTIONS=1048576]=`GROUP_ACTIONS`,e[e.ACTION_CALL=1048577]=`ACTION_CALL`,e[e.ACTION_ACTIVE=1048578]=`ACTION_ACTIVE`,e[e.ACTION_TEXT_OUTPUT=1048579]=`ACTION_TEXT_OUTPUT`,e[e.ACTION_TEXT_OUTPUT_DELTA=1048580]=`ACTION_TEXT_OUTPUT_DELTA`,e[e.ACTION_TEXT_OUTPUT_DELTA_FULL=1048581]=`ACTION_TEXT_OUTPUT_DELTA_FULL`,e[e.ACTION_SET_STATE=1048582]=`ACTION_SET_STATE`,e[e.ACTION_TAP=1048583]=`ACTION_TAP`,e[e.ACTION_PAN=1048584]=`ACTION_PAN`,e[e.ACTION_ZOOM=1048585]=`ACTION_ZOOM`,e[e.ACTION_OPEN_EXTERNAL_URL=1048592]=`ACTION_OPEN_EXTERNAL_URL`,e[e.ACTION_FUNCTION_REGISTER=1048600]=`ACTION_FUNCTION_REGISTER`,e[e.ACTION_FUNCTION_CALL=1048601]=`ACTION_FUNCTION_CALL`,e[e.ACTION_FUNCTION_RESULT=1048602]=`ACTION_FUNCTION_RESULT`,e[e.ACTION_GENERATE_ANSWER=1048603]=`ACTION_GENERATE_ANSWER`,e[e.ACTION_REGENERATE_ANSWER=1048604]=`ACTION_REGENERATE_ANSWER`,e[e.ACTION_CLEAR_STATE=1048606]=`ACTION_CLEAR_STATE`,e[e.ACTION_CLASSIFICATION_RESULT=1048609]=`ACTION_CLASSIFICATION_RESULT`,e[e.ACTION_AUDIO_STOP=1048610]=`ACTION_AUDIO_STOP`,e[e.ACTION_CALL_TEXT=1048611]=`ACTION_CALL_TEXT`,e[e.ACTION_CANCEL_GENERATION=1048613]=`ACTION_CANCEL_GENERATION`,e[e.ACTION_SPEECH_RECOGNIZED=1048615]=`ACTION_SPEECH_RECOGNIZED`,e[e.ACTION_CALL_RESULT=1048616]=`ACTION_CALL_RESULT`,e[e.ACTION_DOWNLOAD=1048618]=`ACTION_DOWNLOAD`,e[e.ACTION_PLAY_SOUND=1048621]=`ACTION_PLAY_SOUND`,e[e.ACTION_STOP_SOUND=1048623]=`ACTION_STOP_SOUND`,e[e.ACTION_START_RECORDING=1048624]=`ACTION_START_RECORDING`,e[e.ACTION_STOP_RECORDING=1048625]=`ACTION_STOP_RECORDING`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM=1048627]=`ACTION_FUNCTION_ENUMERATION_ITEM`,e[e.ACTION_FUNCTION_ENUMERATION_END=1048628]=`ACTION_FUNCTION_ENUMERATION_END`,e[e.ACTION_FUNCTION_CANCEL=1048629]=`ACTION_FUNCTION_CANCEL`,e[e.ACTION_FUNCTION_DISPOSE=1048630]=`ACTION_FUNCTION_DISPOSE`,e[e.ACTION_FUNCTION_ERROR=1048631]=`ACTION_FUNCTION_ERROR`,e[e.ACTION_FUNCTION_ACK=1048632]=`ACTION_FUNCTION_ACK`,e[e.ACTION_FUNCTION_AWAITING_APPROVAL=1048633]=`ACTION_FUNCTION_AWAITING_APPROVAL`,e[e.ACTION_FUNCTION_APPROVAL_REQUIRED=1048634]=`ACTION_FUNCTION_APPROVAL_REQUIRED`,e[e.ACTION_FUNCTION_APPROVAL_RESPONSE=1048635]=`ACTION_FUNCTION_APPROVAL_RESPONSE`,e[e.UI_UPDATE_ACK=1048636]=`UI_UPDATE_ACK`,e[e.ACTION_CALL2=1048637]=`ACTION_CALL2`,e[e.ACTION_FUNCTION_REGISTER_BATCH=1048638]=`ACTION_FUNCTION_REGISTER_BATCH`,e[e.ACTION_CUSTOM_USER_MESSAGE=1048641]=`ACTION_CUSTOM_USER_MESSAGE`,e[e.ACTION_URL_CHANGED=1048642]=`ACTION_URL_CHANGED`,e[e.ACTION_FILE_UPLOAD_PRE_START2=1048643]=`ACTION_FILE_UPLOAD_PRE_START2`,e[e.ACTION_FILE_UPLOAD_PRE_START_RESPONSE2=1048644]=`ACTION_FILE_UPLOAD_PRE_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_START2=1048645]=`ACTION_FILE_UPLOAD_START2`,e[e.ACTION_FILE_UPLOAD_START_RESPONSE2=1048646]=`ACTION_FILE_UPLOAD_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_DATA2=1048647]=`ACTION_FILE_UPLOAD_DATA2`,e[e.ACTION_FILE_UPLOAD_ACK2=1048648]=`ACTION_FILE_UPLOAD_ACK2`,e[e.ACTION_FILE_UPLOAD_END2=1048649]=`ACTION_FILE_UPLOAD_END2`,e[e.ACTION_FILE_UPLOAD_COMPLETE2=1048650]=`ACTION_FILE_UPLOAD_COMPLETE2`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM_BATCH=1048651]=`ACTION_FUNCTION_ENUMERATION_ITEM_BATCH`,e[e.ACTION_CALL_ACK=1048652]=`ACTION_CALL_ACK`,e[e.ACTION_TRIGGER_CRON=1048653]=`ACTION_TRIGGER_CRON`,e[e.ACTION_RESULT=1048654]=`ACTION_RESULT`,e[e.UI_RESYNC_REQUEST=1048655]=`UI_RESYNC_REQUEST`,e[e.ACTION_USER_DATA_ERASURE=1048656]=`ACTION_USER_DATA_ERASURE`,e[e.GROUP_UI=2097152]=`GROUP_UI`,e[e.UI_STREAM_BEGIN=2097153]=`UI_STREAM_BEGIN`,e[e.UI_STREAM_END=2097154]=`UI_STREAM_END`,e[e.UI_STYLES=2097188]=`UI_STYLES`,e[e.UI_UPDATE=2097190]=`UI_UPDATE`,e[e.UI_STYLES_BATCH=2097192]=`UI_STYLES_BATCH`,e[e.UI_STYLES_DELETE=2097193]=`UI_STYLES_DELETE`,e[e.GROUP_COMMON=4128768]=`GROUP_COMMON`,e[e.GROUP_AUDIO=4194304]=`GROUP_AUDIO`,e[e.AUDIO_STREAM_BEGIN=4194305]=`AUDIO_STREAM_BEGIN`,e[e.AUDIO_STREAM_END=4194306]=`AUDIO_STREAM_END`,e[e.AUDIO_FRAME=4194307]=`AUDIO_FRAME`,e[e.AUDIO_FRAME_VOLUME=4194308]=`AUDIO_FRAME_VOLUME`,e[e.AUDIO_FRAME2=4194309]=`AUDIO_FRAME2`,e[e.AUDIO_SHAPE_FRAME=4194310]=`AUDIO_SHAPE_FRAME`,e[e.AUDIO_PLAYBACK_REPORT=4194311]=`AUDIO_PLAYBACK_REPORT`,e[e.GROUP_VIDEO=8388608]=`GROUP_VIDEO`,e[e.VIDEO_STREAM_BEGIN=8388609]=`VIDEO_STREAM_BEGIN`,e[e.VIDEO_STREAM_END=8388610]=`VIDEO_STREAM_END`,e[e.VIDEO_FRAME=8388611]=`VIDEO_FRAME`,e[e.VIDEO_REQUEST_IDR_FRAME=8388612]=`VIDEO_REQUEST_IDR_FRAME`,e[e.VIDEO_INVALIDATE_FRAME=8388613]=`VIDEO_INVALIDATE_FRAME`,e[e.GROUP_ALL=16711680]=`GROUP_ALL`,e[e.GROUP_APP_LOCAL=1073741824]=`GROUP_APP_LOCAL`,e[e.CONSTANT_GROUP_MASK=2147418112]=`CONSTANT_GROUP_MASK`,e}({});function ie(e){let t={};return T(t),e&&Object.assign(t,e),t}function T(e){return e.Samples=new Uint8Array,e.Epoch=0,e.Sequence=0,e.FrameSizeInInterleavedSamples=0,e.TimeStampInInterleavedSamples=BigInt(0),e.IsFirst=!1,e.IsLast=!1,e.AverageVolume=0,e.AudioEventEstimatedDuration=0,e}function ae(e,t){return oe(c.create(e),t)}function oe(e,t){let n=t??ie();return T(n),se(e,n),n}function se(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 205938238:if(n.isNull)throw Error();t.AverageVolume=n.asFloat32();break;case 1594075008:if(n.isNull)throw Error();t.IsFirst=n.asBool();break;case 2026534360:if(n.isNull)throw Error();t.TimeStampInInterleavedSamples=n.asUInt64();break;case 3409001585:if(n.isNull)throw Error();t.Samples=n.asBinary();break;case 3466650495:if(n.isNull)throw Error();t.AudioEventEstimatedDuration=n.asFloat32();break;case 4007456593:if(n.isNull)throw Error();t.FrameSizeInInterleavedSamples=n.asUInt32();break;case 4017217601:if(n.isNull)throw Error();t.IsLast=n.asBool();break;case 4065417427:if(n.isNull)throw Error();t.Sequence=n.asUInt32();break;case 4086360332:if(n.isNull)throw Error();t.Epoch=n.asUInt32()}}async function ce(e,t){return ae(await i(e,4194309,1),t)}function le(e){let t={};return E(t),e&&Object.assign(t,e),t}function E(e){return e.StreamId=``,e.Description=``,e.SourceType=``,e.Codec=C.Unknown,e.CodecDetails=``,e.SampleRate=0,e.Channels=0,e.ShapeSets=void 0,e.CorrelationId=void 0,e}function ue(e,t){return de(c.create(e),t)}function de(e,t){let n=t??le();return E(n),fe(e,n),n}function fe(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 265814330:if(n.isNull){t.ShapeSets=void 0;break}t.ShapeSets=me(n.asArray());break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 2431514951:if(n.isNull)throw Error();t.Channels=n.asInt32();break;case 2514959030:if(n.isNull){t.CorrelationId=void 0;break}t.CorrelationId=n.asString();break;case 2745379226:if(n.isNull)throw Error();t.CodecDetails=n.asString();break;case 3282782683:if(n.isNull)throw Error();t.SourceType=n.asString();break;case 3284746250:if(n.isNull)throw Error();t.Codec=n.asInt32();break;case 4101844078:if(n.isNull)throw Error();t.SampleRate=n.asInt32()}}async function pe(e,t){return ue(await i(e,4194305,6),t)}function me(e){let t=[],n;for(;(n=e.next())!==null;)t.push(ge(n.asObject()));return t}function he(e){let t={};return D(t),e&&Object.assign(t,e),t}function D(e){return e.SetId=0,e.Name=``,e.ShapeNames=[],e}function ge(e,t){let n=t??he();return D(n),_e(e,n),n}function _e(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 1107713536:if(n.isNull)throw Error();t.Name=n.asString();break;case 1154362099:if(n.isNull)throw Error();t.SetId=n.asUInt32();break;case 1185721362:if(n.isNull)throw Error();t.ShapeNames=ve(n.asArray())}}function ve(e){let t=[],n;for(;(n=e.next())!==null;)t.push(n.asString());return t}var O=class{static getStorageForCapacity(e,t){let n=Int32Array.BYTES_PER_ELEMENT*2,r=t.BYTES_PER_ELEMENT*e;return new SharedArrayBuffer(n+r)}readWrite;storage;buf;constructor(e,t){this.buf=e,this.readWrite=new Int32Array(e,0,2);let n=Int32Array.BYTES_PER_ELEMENT*2,r=(e.byteLength-n)/Float32Array.BYTES_PER_ELEMENT;this.storage=new t(e,n,r)}get capacity(){return this.storage.length}flush(){Atomics.store(this.readWrite,0,0),Atomics.store(this.readWrite,1,0)}availableRead(){let e=Atomics.load(this.readWrite,0),t=Atomics.load(this.readWrite,1);return t>=e?t-e:this.capacity-(e-t)}availableWrite(){return this.capacity-this.availableRead()-1}push(e){let t=Math.min(this.availableWrite(),e.length);if(t<=0)return 0;let n=Atomics.load(this.readWrite,1),r=Math.min(t,this.capacity-n);this.storage.set(e.subarray(0,r),n);let i=t-r;return i>0&&this.storage.set(e.subarray(r,r+i),0),n=(n+t)%this.capacity,Atomics.store(this.readWrite,1,n),Atomics.notify(this.readWrite,1),t}pop(e){let t=Math.min(this.availableRead(),e.length);if(t<=0)return 0;let n=Atomics.load(this.readWrite,0),r=Math.min(t,this.capacity-n);e.set(this.storage.subarray(n,n+r),0);let i=t-r;return i>0&&e.set(this.storage.subarray(0,i),r),n=(n+t)%this.capacity,Atomics.store(this.readWrite,0,n),t}skip(e){let t=Math.min(this.availableRead(),e);if(t<=0)return 0;let n=Atomics.load(this.readWrite,0);return n=(n+t)%this.capacity,Atomics.store(this.readWrite,0,n),t}};const ye=new Map,be={0:`DEBUG`,1:`INFO`,2:`WARN`,3:`ERROR`,4:`NONE`};function xe(e,t){return`[${e}] ${t}`}function k(e,t,n,r){let i={timestamp:new Date().toISOString(),level:e,levelName:be[e],component:t,message:n,args:r};for(let[t,n]of ye)if(e>=(n?.minLevel??2))try{t(i)}catch{}if(1<=e){let i=xe(t,n);switch(e){case 0:console.debug(i,...r);break;case 1:console.info(i,...r);break;case 2:console.warn(i,...r);break;case 3:console.error(i,...r)}}}function A(e){return{debug(t,...n){k(0,e,t,n)},info(t,...n){k(1,e,t,n)},warn(t,...n){k(2,e,t,n)},error(t,...n){k(3,e,t,n)}}}const j=A(`Capabilities`),M=globalThis;function Se(){if(typeof SharedArrayBuffer>`u`)return j.debug(`SharedArrayBuffer not supported: SharedArrayBuffer is undefined`),!1;if(typeof Atomics>`u`)return j.debug(`SharedArrayBuffer not supported: Atomics is undefined`),!1;if(M.crossOriginIsolated===!1)return j.debug(`SharedArrayBuffer not supported: crossOriginIsolated is false (missing COOP/COEP headers)`),!1;try{new SharedArrayBuffer(1)}catch(e){return j.debug(`SharedArrayBuffer not supported: construction failed - ${e instanceof Error?e.message:String(e)}`),!1}return!0}const N=48e3,P=A(`AudioPlaybackWorker`),F=(e,t)=>{self.postMessage(e,t??[])},Ce=Se();let I=`pcm`,L=!0,R=!1,z=N,B=2,V=null;function H(e,t){let n=e instanceof Error?e:Error(String(e));F({type:`error`,error:{name:n.name,message:n.message,stack:n.stack},streamId:t})}function U(e){let t=r(e);return`${t.senderId}_${t.trackId}`}var we=class{mode;ring=null;sab=void 0;streamId;outputSampleRate;outputChannels;closed=!1;pcmBatchBuffer=null;pcmBatchOffset=0;lastPcmFlushTimeMs=0;constructor(e){this.streamId=e,this.mode=`pcm`,this.outputSampleRate=z,this.outputChannels=B,this.rebind(I)}close(){this.closed=!0,this.pcmBatchBuffer=null,this.pcmBatchOffset=0,this.ring=null,this.sab=void 0}setOutputFormat(e,t){this.outputSampleRate=e,this.outputChannels=t}rebind(e){if(!this.closed){if(this.mode=e,e===`sab`&&Ce){let e=Math.floor(1500*this.outputSampleRate*this.outputChannels/1e3),t=O.getStorageForCapacity(e,Float32Array),n=new O(t,Float32Array);n.flush(),this.sab=t,this.ring=n;return}this.sab=void 0,this.ring=null}}flushPendingPcm(e){if(this.closed||this.mode!==`pcm`||this.pcmBatchOffset<=0)return;let t=performance.now(),n=Math.max(1,Math.round(this.outputSampleRate*this.outputChannels*80/1e3));if(!(e||this.pcmBatchOffset>=n||this.lastPcmFlushTimeMs>0&&t-this.lastPcmFlushTimeMs>=50))return;let r=new Float32Array(this.pcmBatchOffset);r.set(this.pcmBatchBuffer.subarray(0,this.pcmBatchOffset)),this.pcmBatchOffset=0,this.lastPcmFlushTimeMs=t,F({type:`pcm`,streamId:this.streamId,pcm:r},[r.buffer])}drainPcm(){this.flushPendingPcm(!0)}writePcm(e){if(this.closed)return;if(this.mode===`sab`&&this.ring){let t=this.ring,n=this.outputChannels,r=e,i=Math.floor(Math.max(0,t.capacity-1)/n)*n;r.length>i&&(r=r.subarray(r.length-i));let a=Math.floor(t.availableWrite()/n)*n;if(a<=0)return;r.length>a&&(r=r.subarray(r.length-a)),t.push(r);return}let t=Math.max(1,Math.round(this.outputSampleRate*this.outputChannels*80/1e3)),n=this.pcmBatchOffset+e.length;if(!this.pcmBatchBuffer||this.pcmBatchBuffer.length<n){let e=Math.max(n,t*2),r=new Float32Array(e);this.pcmBatchBuffer&&this.pcmBatchOffset>0&&r.set(this.pcmBatchBuffer.subarray(0,this.pcmBatchOffset)),this.pcmBatchBuffer=r}this.pcmBatchBuffer.set(e,this.pcmBatchOffset),this.pcmBatchOffset+=e.length,this.lastPcmFlushTimeMs===0&&(this.lastPcmFlushTimeMs=performance.now()),this.flushPendingPcm(!1)}getSharedArrayBuffer(){return this.sab}flush(){this.closed||(this.pcmBatchOffset=0,this.lastPcmFlushTimeMs=0,this.ring?.flush())}};function Te(e){switch(e){case C.Opus:return`opus`;case C.Mp3:return`mp3`;default:return null}}let W=null;function Ee(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=Math.floor(e.byteLength/2);(!W||W.length<n)&&(W=new Float32Array(n));for(let e=0;e<n;e++)W[e]=t.getInt16(e*2,!0)/32768;return W.subarray(0,n)}var G=class{inputSampleRate;inputChannels;sink;_resampleBuffer=null;_remixBuffer=null;_interleavedBuffer=null;constructor(e){this.inputSampleRate=e.inputSampleRate,this.inputChannels=e.inputChannels,this.sink=e.sink}getResampleBuffer(e){return(!this._resampleBuffer||this._resampleBuffer.length<e)&&(this._resampleBuffer=new Float32Array(e)),this._resampleBuffer}getRemixBuffer(e){return(!this._remixBuffer||this._remixBuffer.length<e)&&(this._remixBuffer=new Float32Array(e)),this._remixBuffer}getInterleavedBuffer(e){return(!this._interleavedBuffer||this._interleavedBuffer.length<e)&&(this._interleavedBuffer=new Float32Array(e)),this._interleavedBuffer}reset(){}writeConvertedPcm(e,t,n){let r=this.convertPcmBuffer(e,t,n);r.length>0&&this.sink.writePcm(r)}convertAudioData(e){let t=e.numberOfFrames,n=e.numberOfChannels,r=e.format,i=typeof r==`string`&&r.includes(`planar`),a=()=>{let r=Array(n);for(let i=0;i<n;i++){let n=new Float32Array(t);e.copyTo(n,{planeIndex:i,format:`f32-planar`}),r[i]=n}return Le(r,t)},o=()=>{let r=new Float32Array(t*n);return e.copyTo(r,{planeIndex:0,format:`f32`}),r},s;if(i)try{s=a()}catch(e){P.debug(`Failed to read planar audio data, falling back to interleaved copy: ${e}`),s=o()}else s=o();return s}convertPcmBuffer(e,t,n){if(e.length===0)return e;let r=e,i=e.length,a=t;if(n!==z){let e=i/a,t=Math.max(1,Math.round(e*z/n))*a,o=this.getResampleBuffer(t);i=ze(r,o,a,n,z),r=o}if(a!==B){let e=i/a*B,t=this.getRemixBuffer(e);i=Be(r.subarray(0,i),t,a,B),r=t}return r.subarray(0,i)}},De=class extends G{feedChunk(e){e.isFirst&&this.reset();let t=Ee(e.data);this.writeConvertedPcm(t,this.inputChannels,this.inputSampleRate),e.isLast&&this.reset()}close(){}},Oe=class extends G{decoder;codec;constructor(e){super({inputChannels:e.inputChannels,inputSampleRate:e.inputSampleRate,sink:e.sink}),this.codec=e.codec,this.decoder=this.createDecoder()}createDecoder(){let e=new AudioDecoder({output:e=>{try{let t=this.convertAudioData(e);this.writeConvertedPcm(t,e.numberOfChannels,e.sampleRate)}catch(e){H(e)}finally{try{e.close()}catch{}}},error:e=>{H(e)}});return e.configure({codec:this.codec,numberOfChannels:this.inputChannels,sampleRate:this.inputSampleRate}),e}feedChunk(e){try{if(e.isFirst&&this.reset(),this.decoder.state===`closed`&&(this.decoder=this.createDecoder()),this.decoder.state!==`configured`)return;this.decoder.decode(new EncodedAudioChunk({type:`key`,timestamp:e.timestampUs,duration:e.durationUs,data:e.data})),e.isLast&&this.decoder.flush().catch(()=>{})}catch(e){H(e);try{this.reset()}catch{}}}reset(){super.reset();try{this.decoder.reset(),this.decoder.configure({codec:this.codec,numberOfChannels:this.inputChannels,sampleRate:this.inputSampleRate})}catch(e){H(e)}}close(){try{this.decoder.close()}catch{}}},ke=class extends G{decoder=null;isReady=!1;decoderSampleRate=48e3;pendingChunks=[];async initialise(e,t){let{OpusDecoder:n,getOpusModule:r}=await import(`./src-DOUWsCWT.js`);await r();let i=[8e3,12e3,16e3,24e3,48e3].reduce((e,n)=>Math.abs(n-t)<Math.abs(e-t)?n:e);this.decoderSampleRate=i,this.decoder=new n({channels:e,sampleRate:this.decoderSampleRate}),await this.decoder.ready,this.isReady=!0,this.flushPendingChunks()}flushPendingChunks(){if(!this.isReady||!this.decoder){this.pendingChunks.length=0;return}let e=this.pendingChunks,t=e.length;if(t!==0){for(let n=0;n<t;n++)this.decodeChunk(e[n]);e.length=0}}reset(){super.reset();try{this.decoder?.reset()}catch{}}decodeChunk(e){if(!(!this.isReady||!this.decoder))try{if(e.data.byteLength===0)return;let t=this.decoder.decodeFrame(e.data),n=t.channelData,r=t.samplesDecoded,i=n.length;if(!i||!r)return;let a=r*i,o=this.getInterleavedBuffer(a);if(i===2){let e=n[0],t=n[1];for(let n=0,i=0;n<r;n++)o[i++]=e[n],o[i++]=t[n]}else if(i===1)o.set(n[0].subarray(0,r));else{let e=0;for(let t=0;t<r;t++)for(let r=0;r<i;r++)o[e++]=n[r][t]}this.writeConvertedPcm(o.subarray(0,a),i,this.decoderSampleRate),e.isLast&&this.reset()}catch(e){H(e),this.reset()}}feedChunk(e){if(!this.isReady||!this.decoder){this.pendingChunks.push(e);return}e.isFirst&&this.reset(),this.decodeChunk(e)}close(){try{this.decoder?.destroy()}catch{}this.decoder=null,this.pendingChunks.length=0}};const K=new Map;async function Ae(e){if(e.closed||e.decoder)return;if(e.codec===C.RawPcm16){e.decoder=new De({inputChannels:e.inputChannels,inputSampleRate:e.inputSampleRate,sink:e.sink});return}if(e.codec!==C.Opus&&e.codec!==C.Mp3)throw Error(`Unsupported audio codec: ${C[e.codec]??e.codec}`);let t=Te(e.codec);if(L&&typeof AudioDecoder<`u`&&t!==null)try{if((await AudioDecoder.isConfigSupported({codec:t,numberOfChannels:e.inputChannels,sampleRate:e.inputSampleRate})).supported){let n=new Oe({codec:t,inputChannels:e.inputChannels,inputSampleRate:e.inputSampleRate,sink:e.sink});if(e.closed){n.close();return}e.decoder=n;return}}catch(e){P.warn(`WebCodecs AudioDecoder failed, falling back to WASM: ${e instanceof Error?e.message:String(e)}`)}if(e.codec===C.Opus){let t=new ke({inputChannels:e.inputChannels,inputSampleRate:e.inputSampleRate,sink:e.sink});if(await t.initialise(e.inputChannels,e.inputSampleRate),e.closed){t.close();return}e.decoder=t;return}throw Error(`No available decoder for codec: ${C[e.codec]??e.codec}`)}function je(e){if(e.closed){e.pendingFrames.splice(0);try{e.decoder?.close()}catch{}e.decoder=null;return}if(!e.decoder)return;let t=e.pendingFrames.splice(0);for(let n of t)q(e,n)}function q(e,t){if(e.closed||!e.decoder)return;let n=t.Epoch,r=Number(t.TimeStampInInterleavedSamples),i=t.FrameSizeInInterleavedSamples;if(e.currentEpoch!==n&&(e.currentEpoch=n,e.epochSet=!1,e.lastArrivalTimeMs=0,e.jitterMs=0,e.sink.flush(),e.decoder.reset()),!e.epochSet){e.epochSet=!0;let t=e.inputSampleRate*e.inputChannels;e.expectedIntervalMs=i*1e3/t}let a=performance.now();if(e.lastArrivalTimeMs>0){let t=a-e.lastArrivalTimeMs,n=Math.abs(t-e.expectedIntervalMs);e.jitterMs+=(n-e.jitterMs)/10}e.lastArrivalTimeMs=a;let o=e.inputSampleRate*e.inputChannels,s=z*B,c=Math.round(r*s/o),l=Math.round(i*s/o),u=Math.round(r*1e6/o),d=Math.round(i*1e6/o);F({type:`frame`,streamId:e.streamId,epoch:n,timestampInterleavedSamples:c,frameSizeInterleavedSamples:l,isFirst:t.IsFirst,isLast:t.IsLast,jitterMs:e.jitterMs}),e.decoder.feedChunk({data:t.Samples,isFirst:t.IsFirst,isLast:t.IsLast,timestampUs:u,durationUs:d})}async function Me(e){J(U(e),await pe(e))}function J(e,t){let n=K.get(e);if(n){if(!n.closed&&n.codec===t.Codec&&n.inputSampleRate===t.SampleRate&&n.inputChannels===t.Channels)return;n.closed=!0,n.pendingFrames.splice(0);try{n.decoder?.close()}catch{}try{n.sink.drainPcm(),n.sink.close()}catch{}K.delete(e)}let r=new we(e),i={streamId:e,codec:t.Codec,inputSampleRate:t.SampleRate,inputChannels:t.Channels,sink:r,decoder:null,pendingFrames:[],initTask:null,decoderInitAttempts:0,currentEpoch:-1,epochSet:!1,closed:!1,lastArrivalTimeMs:0,jitterMs:0,expectedIntervalMs:20};K.set(e,i),X.delete(e),F({type:`streamBegin`,streamId:e,sharedArrayBuffer:r.getSharedArrayBuffer()})}function Y(){for(let e of K.values())F({type:`streamBegin`,streamId:e.streamId,sharedArrayBuffer:e.sink.getSharedArrayBuffer()})}function Ne(e){let t=U(e),n=K.get(t);if(n){n.closed=!0,n.pendingFrames.splice(0);try{n.sink.drainPcm(),n.sink.close()}catch{}try{n.decoder?.close()}catch{}n.decoder=null,K.delete(t),F({type:`streamEnd`,streamId:t})}}const X=new Set;async function Pe(e){let t=U(e),n=K.get(t);if(!n){X.has(t)||(X.add(t),P.warn(`Dropping audio frames for unknown stream ${t.substring(0,8)} — no AUDIO_STREAM_BEGIN received`));return}if(n.closed)return;let r=await ce(e);if(!R){if(!n.decoder){if(n.pendingFrames.length>=64){let e=n.pendingFrames.length-64+1;n.pendingFrames.splice(0,e),P.warn(`Dropped ${e} frames waiting for decoder, streamId=${t.substring(0,8)}`)}n.pendingFrames.push(r),!n.initTask&&n.decoderInitAttempts<3&&(n.initTask=Ae(n).then(()=>je(n)).catch(e=>{n.initTask=null,n.decoderInitAttempts+=1,n.closed||(P.warn(`Decoder init failed (attempt ${n.decoderInitAttempts}/3), streamId=${t.substring(0,8)}`),n.decoderInitAttempts>=3&&H(e,t))}));return}q(n,r)}}function Fe(e){switch(n(t(e))){case w.AUDIO_STREAM_BEGIN:Me(e);return;case w.AUDIO_STREAM_END:Ne(e);return;case w.AUDIO_FRAME2:Pe(e);return;default:return}}function Z(){if(V){try{V.close()}catch{}V=null}}function Ie(){Z();for(let e of K.values()){try{e.sink.drainPcm(),e.sink.close()}catch{}try{e.decoder?.close()}catch{}}K.clear()}self.addEventListener(`message`,e=>{let t=e.data;if(t.type===`configure`){I=t.transport,L=t.preferWebCodecs??!0,R=t.webRtcEnabled??!1,z=Number.isFinite(t.outputSampleRate)&&t.outputSampleRate>0?t.outputSampleRate:N,B=Number.isFinite(t.outputChannels)&&t.outputChannels>0?t.outputChannels:2;return}if(t.type===`attachProtocolPort`){Z(),V=t.port,V.addEventListener(`message`,e=>{let t=e.data;t?.type===`protocol`&&t.message instanceof ArrayBuffer&&Fe(new Uint8Array(t.message))}),V.start?.();return}if(t.type===`rebind`){I=t.transport,typeof t.outputSampleRate==`number`&&Number.isFinite(t.outputSampleRate)&&t.outputSampleRate>0&&(z=t.outputSampleRate),typeof t.outputChannels==`number`&&Number.isFinite(t.outputChannels)&&t.outputChannels>0&&(B=t.outputChannels);for(let e of K.values())e.sink.setOutputFormat(z,B),e.sink.rebind(I);Y();return}if(t.type===`setWebRtcEnabled`){R!==t.enabled&&P.info(`WebRTC media ${t.enabled?`active — leaving decode to the RTP stack`:`inactive — decoding protocol audio frames`}`),R=t.enabled;return}if(t.type===`syncStreams`){for(let e of t.streams)J(`${e.senderId}_${e.trackId}`,e.info);return}t.type===`dispose`&&Ie()});let Q=null;function Le(e,t){let n=e.length;if(n===1)return e[0];let r=t*n;if((!Q||Q.length<r)&&(Q=new Float32Array(r)),n===2){let n=e[0],r=e[1];for(let e=0,i=0;e<t;e++)Q[i++]=n[e],Q[i++]=r[e]}else{let r=0;for(let i=0;i<t;i++)for(let t=0;t<n;t++)Q[r++]=e[t][i]}return Q.subarray(0,r)}function $(e){if(e===0)return 1;let t=Math.PI*e;return Math.sin(t)/t}function Re(e,t){return e===0?1:Math.abs(e)>=t?0:$(e)*$(e/t)}function ze(e,t,n,r,i){if(r===i)return t.set(e),e.length;let a=e.length/n,o=Math.max(1,Math.round(a*i/r)),s=r/i,c=s>1?s:1,l=Math.ceil(3*c);for(let r=0;r<n;r++)for(let i=0;i<o;i++){let o=i*s,u=Math.floor(o),d=0,f=0;for(let t=-l+1;t<=l;t++){let i=u+t;if(i<0||i>=a)continue;let s=Re((o-i)/c,3);if(s!==0){let t=e[i*n+r]??0;d+=t*s,f+=s}}t[i*n+r]=f>0?d/f:0}return o*n}function Be(e,t,n,r){let i=e.length/n;if(n===r)return t.set(e),e.length;if(n===1&&r===2){for(let n=0;n<i;n++){let r=e[n]??0;t[n*2]=r,t[n*2+1]=r}return i*2}if(n===2&&r===1){for(let n=0;n<i;n++){let r=e[n*2]??0,i=e[n*2+1]??0;t[n]=(r+i)*.5}return i}let a=Math.min(n,r);for(let o=0;o<i;o++)for(let i=0;i<a;i++)t[o*r+i]=e[o*n+i]??0;return i*r}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e){return e}function t(e){if(e.length<8)throw Error(`Protocol message too short`);return(e[4]|e[5]<<8|e[6]<<16|e[7]<<24)>>>0}function n(e){return t(e)&4294901760}function r(e){let t=ee(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(t.length<27)throw Error(`Protocol payload too short`);let r=n.getUint32(0,!0),i=n.getUint32(4,!0),a=n.getUint32(8,!0),o=n.getUint32(12,!0),s=n.getUint32(16,!0),c=n.getUint32(20,!0),l=n.getUint8(24),u=n.getUint8(25),d=n.getUint8(26);if(27+c*4>t.length)throw Error(`Protocol header exceeds payload length`);let f=[],p=27;for(let e=0;e<c;e++)f.push(n.getUint32(p,!0)),p+=4;return{length:r,opcode:i,senderId:a,trackId:o,sequenceId:s,targetIds:f,payloadVersion:l,payloadType:u,flags:d}}function i(t,n,r,i,a){let o=a?.trackId??0,s=a?.sequenceId??0,c=a?.flags??0,l=a?.targetIds??[],u=a?.payloadType??8,d=27+l.length*4,f=d+n.length,p=new Uint8Array(f),m=new DataView(p.buffer);m.setUint32(0,f,!0),m.setUint32(4,t>>>0,!0),m.setUint32(8,i>>>0,!0),m.setUint32(12,o>>>0,!0),m.setUint32(16,s>>>0,!0),m.setUint32(20,l.length>>>0,!0),m.setUint8(24,r&255),m.setUint8(25,u&255),m.setUint8(26,c&255);let h=27;for(let e=0;e<l.length;e++)m.setUint32(h,l[e]>>>0,!0),h+=4;return p.set(n,d),e(p)}let a=function(e){return e[e.Null=1]=`Null`,e[e.Bool=2]=`Bool`,e[e.Int32=3]=`Int32`,e[e.Int64=4]=`Int64`,e[e.UInt32=5]=`UInt32`,e[e.UInt64=6]=`UInt64`,e[e.Float32=7]=`Float32`,e[e.Float64=8]=`Float64`,e[e.Array=9]=`Array`,e[e.Dict=10]=`Dict`,e[e.Object=11]=`Object`,e[e.String=12]=`String`,e[e.Binary=13]=`Binary`,e[e.Guid=14]=`Guid`,e}({});const o=new TextEncoder;new TextDecoder(`utf-8`,{fatal:!0});var s=class e{buffer=new f;cached;constructor(e=1){this.buffer.writeByte(161),this.buffer.writeVarUInt(e>>>0)}writeInt32Field(e,t){this.writeFixedField(e,3,()=>this.buffer.writeInt32(t|0))}writeUInt32Field(e,t){this.writeFixedField(e,5,()=>this.buffer.writeUInt32(t>>>0))}writeInt64Field(e,t){this.writeFixedField(e,4,()=>this.buffer.writeBigInt64(t))}writeUInt64Field(e,t){this.writeFixedField(e,6,()=>this.buffer.writeBigUInt64(t))}writeFloat32Field(e,t){this.writeFixedField(e,7,()=>this.buffer.writeFloat32(t))}writeFloat64Field(e,t){this.writeFixedField(e,8,()=>this.buffer.writeFloat64(t))}writeBoolField(e,t){this.writeFixedField(e,2,()=>this.buffer.writeByte(+!!t))}writeGuidField(e,t){let n=t instanceof d?t.asBytes():t;if(n.length!==16)throw Error(`Guid payload must be 16 bytes`);this.writeFixedField(e,14,()=>this.buffer.writeBytes(n))}writeStringField(e,t){let n=o.encode(t??``);this.writeVariableField(e,12,n)}writeBinaryField(e,t){this.writeVariableField(e,13,t)}writeObjectField(t,n,r){let i=new e(n);r(i);let a=i.finish();this.writeVariableField(t,11,a)}writeArrayField(e,t,n){let r=new c(t);n(r);let i=r.finish();this.writeVariableField(e,9,i)}writeDictionaryField(e,t,n,r){let i=new l(t,n);r(i);let a=i.finish();this.writeVariableField(e,10,a)}finish(){return this.cached||=(this.buffer.writeByte(162),this.buffer.toUint8Array()),this.cached}writeFixedField(e,t,n){this.writeFieldHeader(e,t,0),n()}writeVariableField(e,t,n){this.writeFieldHeader(e,t,n.length),this.buffer.writeBytes(n)}writeFieldHeader(e,t,n){this.buffer.writeUInt32(e>>>0),this.buffer.writeByte(p(t)),m(t)&&this.buffer.writeVarUInt(n>>>0)}},c=class e{elementType;payload=new f;count=0;constructor(e){this.elementType=e}writeInt32(e){this.ensureElementType(3),this.count++,this.payload.writeInt32(e|0)}writeUInt32(e){this.ensureElementType(5),this.count++,this.payload.writeUInt32(e>>>0)}writeInt64(e){this.ensureElementType(4),this.count++,this.payload.writeBigInt64(e)}writeUInt64(e){this.ensureElementType(6),this.count++,this.payload.writeBigUInt64(e)}writeFloat32(e){this.ensureElementType(7),this.count++,this.payload.writeFloat32(e)}writeFloat64(e){this.ensureElementType(8),this.count++,this.payload.writeFloat64(e)}writeBool(e){this.ensureElementType(2),this.count++,this.payload.writeByte(+!!e)}writeGuid(e){this.ensureElementType(14),this.count++;let t=e instanceof d?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t)}writeString(e){this.ensureElementType(12),this.count++;let t=o.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t)}writeBinary(e){this.ensureElementType(13),this.count++,this.payload.writeVarUInt(e.length),this.payload.writeBytes(e)}writeObject(e,t){this.ensureElementType(11),this.count++;let n=new s(e);t(n);let r=n.finish();this.payload.writeVarUInt(r.length),this.payload.writeBytes(r)}writeArray(t,n){this.ensureElementType(9),this.count++;let r=new e(t);n(r);let i=r.finish();this.payload.writeBytes(i)}writeDictionary(e,t,n){this.ensureElementType(10),this.count++;let r=new l(e,t);n(r);let i=r.finish();this.payload.writeBytes(i)}finish(){let e=new f;return e.writeByte(p(this.elementType)),e.writeVarUInt(this.count),e.writeBytes(this.payload.toUint8Array()),e.toUint8Array()}ensureElementType(e){if(this.elementType!==e)throw Error(`Array element type is ${a[this.elementType]}, expected ${a[e]}`)}},l=class{keyType;valueType;payload=new f;count=0;entryOpen=!1;constructor(e,t){this.keyType=e,this.valueType=t,h(e)}beginEntry(){if(this.entryOpen)throw Error(`Previous dictionary entry not completed`);return this.count++,this.entryOpen=!0,new u(this.keyType,this.valueType,this.payload,()=>{this.entryOpen=!1})}finish(){if(this.entryOpen)throw Error(`Dictionary entry not completed`);let e=new f;return e.writeByte(p(this.keyType)),e.writeByte(p(this.valueType)),e.writeVarUInt(this.count),e.writeBytes(this.payload.toUint8Array()),e.toUint8Array()}},u=class{keyType;valueType;payload;onComplete;keyWritten=!1;valueWritten=!1;completed=!1;constructor(e,t,n,r){this.keyType=e,this.valueType=t,this.payload=n,this.onComplete=r}writeKeyInt32(e){this.ensureKeyType(3),this.payload.writeInt32(e|0),this.keyWritten=!0}writeKeyUInt32(e){this.ensureKeyType(5),this.payload.writeUInt32(e>>>0),this.keyWritten=!0}writeKeyInt64(e){this.ensureKeyType(4),this.payload.writeBigInt64(e),this.keyWritten=!0}writeKeyUInt64(e){this.ensureKeyType(6),this.payload.writeBigUInt64(e),this.keyWritten=!0}writeKeyFloat32(e){this.ensureKeyType(7),this.payload.writeFloat32(e),this.keyWritten=!0}writeKeyFloat64(e){this.ensureKeyType(8),this.payload.writeFloat64(e),this.keyWritten=!0}writeKeyBool(e){this.ensureKeyType(2),this.payload.writeByte(+!!e),this.keyWritten=!0}writeKeyGuid(e){this.ensureKeyType(14);let t=e instanceof d?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t),this.keyWritten=!0}writeKeyString(e){this.ensureKeyType(12);let t=o.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t),this.keyWritten=!0}writeKeyBinary(e){this.ensureKeyType(13),this.payload.writeVarUInt(e.length),this.payload.writeBytes(e),this.keyWritten=!0}writeValueInt32(e){this.ensureValueType(3),this.payload.writeInt32(e|0),this.valueWritten=!0}writeValueUInt32(e){this.ensureValueType(5),this.payload.writeUInt32(e>>>0),this.valueWritten=!0}writeValueInt64(e){this.ensureValueType(4),this.payload.writeBigInt64(e),this.valueWritten=!0}writeValueUInt64(e){this.ensureValueType(6),this.payload.writeBigUInt64(e),this.valueWritten=!0}writeValueFloat32(e){this.ensureValueType(7),this.payload.writeFloat32(e),this.valueWritten=!0}writeValueFloat64(e){this.ensureValueType(8),this.payload.writeFloat64(e),this.valueWritten=!0}writeValueBool(e){this.ensureValueType(2),this.payload.writeByte(+!!e),this.valueWritten=!0}writeValueGuid(e){this.ensureValueType(14);let t=e instanceof d?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t),this.valueWritten=!0}writeNullValue(){this.ensureValueType(1),this.valueWritten=!0}writeValueBinary(e){this.ensureValueType(13),this.payload.writeVarUInt(e.length),this.payload.writeBytes(e),this.valueWritten=!0}writeValueString(e){this.ensureValueType(12);let t=o.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t),this.valueWritten=!0}writeValueObject(e,t){this.ensureValueType(11);let n=new s(e);t(n);let r=n.finish();this.payload.writeVarUInt(r.length),this.payload.writeBytes(r),this.valueWritten=!0}writeValueArray(e,t){this.ensureValueType(9);let n=new c(e);t(n);let r=n.finish();this.payload.writeBytes(r),this.valueWritten=!0}writeValueDictionary(e,t,n){this.ensureValueType(10);let r=new l(e,t);n(r);let i=r.finish();this.payload.writeBytes(i),this.valueWritten=!0}complete(){if(!this.completed){if(!this.keyWritten||!this.valueWritten)throw Error(`Dictionary entry must write both key and value`);this.completed=!0,this.onComplete()}}ensureKeyType(e){if(this.keyType!==e)throw Error(`Dictionary key type is ${a[this.keyType]}, expected ${a[e]}`)}ensureValueType(e){if(this.valueType!==e)throw Error(`Dictionary value type is ${a[this.valueType]}, expected ${a[e]}`)}},d=class e{bytes;constructor(e){this.bytes=e}static fromString(t){if(!t)throw Error(`Guid string is empty`);let n=t.replace(/-/g,``);if(n.length!==32)throw Error(`Guid string must be 32 hex characters`);let r=new Uint8Array(16),i=e.parseHexSlice(n,0,8),a=e.parseHexSlice(n,8,4),o=e.parseHexSlice(n,12,4);e.writeUInt32LE(r,0,i),e.writeUInt16LE(r,4,a),e.writeUInt16LE(r,6,o);for(let t=0;t<8;t++)r[8+t]=e.parseHexSlice(n,16+t*2,2);return new e(r)}static fromBytes(t){if(t.length!==16)throw Error(`Guid byte array must be 16 bytes`);return new e(Uint8Array.from(t))}static createZero(){return new e(new Uint8Array(16))}static createRandom(){let t=new Uint8Array(16),n=globalThis.crypto;if(n?.getRandomValues)n.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return t[6]=t[6]&15|64,t[8]=t[8]&63|128,new e(t)}toString(){let t=this.bytes;return[e.toHex(e.readUInt32LE(t,0),8),e.toHex(e.readUInt16LE(t,4),4),e.toHex(e.readUInt16LE(t,6),4),g(t.subarray(8,10)),g(t.subarray(10,16))].join(`-`)}asBytes(){return this.bytes.slice()}static parseHexSlice(e,t,n){let r=e.substr(t,n),i=Number.parseInt(r,16);if(Number.isNaN(i))throw Error(`Guid string contains invalid characters`);return i>>>0}static writeUInt32LE(e,t,n){let r=n>>>0;e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24&255}static writeUInt16LE(e,t,n){let r=n&65535;e[t]=r&255,e[t+1]=r>>>8&255}static readUInt32LE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}static readUInt16LE(e,t){return(e[t]|e[t+1]<<8)&65535}static toHex(e,t){return(e>>>0).toString(16).padStart(t,`0`)}},f=class e{static INITIAL_CAPACITY=256;buffer;dataView;length=0;constructor(){this.buffer=new Uint8Array(e.INITIAL_CAPACITY),this.dataView=new DataView(this.buffer.buffer)}ensureCapacity(e){let t=this.length+e;if(t<=this.buffer.length)return;let n=this.buffer.length;for(;n<t;)n*=2;let r=new Uint8Array(n);r.set(this.buffer.subarray(0,this.length)),this.buffer=r,this.dataView=new DataView(this.buffer.buffer)}writeByte(e){this.ensureCapacity(1),this.buffer[this.length++]=e&255}writeBytes(e){this.ensureCapacity(e.length),this.buffer.set(e,this.length),this.length+=e.length}writeUInt32(e){this.ensureCapacity(4),this.dataView.setUint32(this.length,e>>>0,!0),this.length+=4}writeInt32(e){this.ensureCapacity(4),this.dataView.setInt32(this.length,e|0,!0),this.length+=4}writeFloat32(e){this.ensureCapacity(4),this.dataView.setFloat32(this.length,e,!0),this.length+=4}writeFloat64(e){this.ensureCapacity(8),this.dataView.setFloat64(this.length,e,!0),this.length+=8}writeBigInt64(e){this.ensureCapacity(8),this.dataView.setBigInt64(this.length,e,!0),this.length+=8}writeBigUInt64(e){this.ensureCapacity(8),this.dataView.setBigUint64(this.length,e,!0),this.length+=8}writeVarUInt(e){let t=e>>>0;for(;t>=128;)this.ensureCapacity(1),this.buffer[this.length++]=t&127|128,t>>>=7;this.ensureCapacity(1),this.buffer[this.length++]=t&127}toUint8Array(){return this.buffer.slice(0,this.length)}};function p(e,t=0){if(t&240)throw Error(`Teleport flags must fit into 4 bits`);return(e&15)<<4|t&15}function m(e){return e===12||e===13||e===9||e===11||e===10}function h(e){if(e===9||e===11||e===10||e===1)throw Error(`Dictionary keys must be primitive Teleport types`)}function g(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function ee(e){return e instanceof Uint8Array?e:new Uint8Array(e)}let _=function(e){return e[e.None=0]=`None`,e[e.WebSocket=1]=`WebSocket`,e[e.WebSocketProxy=2]=`WebSocketProxy`,e[e.WebTransport=4]=`WebTransport`,e[e.WebTransportProxy=8]=`WebTransportProxy`,e[e.Tcp=16]=`Tcp`,e[e.TcpProxy=32]=`TcpProxy`,e[e.Https=64]=`Https`,e[e.WebRTC=128]=`WebRTC`,e[e.TcpTls=256]=`TcpTls`,e[e.Udp=512]=`Udp`,e[e.UdpDtls=1024]=`UdpDtls`,e}({}),v=function(e){return e[e.NONE=0]=`NONE`,e[e.CONSTANT_GROUP_BITS=15]=`CONSTANT_GROUP_BITS`,e[e.CONSTANT_GROUP_OFFSET=16]=`CONSTANT_GROUP_OFFSET`,e[e.GROUP_CORE=65536]=`GROUP_CORE`,e[e.CORE_AUTH_RESPONSE=65537]=`CORE_AUTH_RESPONSE`,e[e.CORE_AUTH_TICKET=65538]=`CORE_AUTH_TICKET`,e[e.CORE_GLOBAL_STATE=65539]=`CORE_GLOBAL_STATE`,e[e.CORE_ON_SERVER_STATUS_PING=65540]=`CORE_ON_SERVER_STATUS_PING`,e[e.CORE_ON_USER_JOINED=65541]=`CORE_ON_USER_JOINED`,e[e.CORE_ON_USER_LEFT=65542]=`CORE_ON_USER_LEFT`,e[e.CORE_ON_CLIENT_JOINED=65543]=`CORE_ON_CLIENT_JOINED`,e[e.CORE_ON_CLIENT_LEFT=65544]=`CORE_ON_CLIENT_LEFT`,e[e.CORE_ON_SERVER_STARTED=65545]=`CORE_ON_SERVER_STARTED`,e[e.CORE_ON_SERVER_STOPPED=65546]=`CORE_ON_SERVER_STOPPED`,e[e.CORE_ON_SERVER_STOPPING=65547]=`CORE_ON_SERVER_STOPPING`,e[e.CORE_ON_CLIENT_READY=65548]=`CORE_ON_CLIENT_READY`,e[e.CORE_CLIENT_READY=65549]=`CORE_CLIENT_READY`,e[e.CORE_SERVER_INIT=65550]=`CORE_SERVER_INIT`,e[e.CORE_ON_PLUGIN_RELOADED=65551]=`CORE_ON_PLUGIN_RELOADED`,e[e.CORE_DYNAMIC_CONFIG=65555]=`CORE_DYNAMIC_CONFIG`,e[e.CORE_PROXY_RPC_AUTH_TICKET=65556]=`CORE_PROXY_RPC_AUTH_TICKET`,e[e.CORE_UPDATE_CLIENT_CONTEXT=65558]=`CORE_UPDATE_CLIENT_CONTEXT`,e[e.CORE_BACKGROUND_WORK_ACTIVE=65559]=`CORE_BACKGROUND_WORK_ACTIVE`,e[e.CORE_RESET_IDLE=65560]=`CORE_RESET_IDLE`,e[e.CORE_CLIENT_DISCONNECTING=65561]=`CORE_CLIENT_DISCONNECTING`,e[e.CORE_ON_APP_READY=65562]=`CORE_ON_APP_READY`,e[e.CORE_ON_FRONTEND_RELOADED=65563]=`CORE_ON_FRONTEND_RELOADED`,e[e.CORE_ON_USER_DATA_ERASED=65564]=`CORE_ON_USER_DATA_ERASED`,e[e.CORE_WEBRTC_OFFER=65566]=`CORE_WEBRTC_OFFER`,e[e.CORE_WEBRTC_ANSWER=65567]=`CORE_WEBRTC_ANSWER`,e[e.CORE_WEBRTC_ICE_CANDIDATE=65568]=`CORE_WEBRTC_ICE_CANDIDATE`,e[e.CORE_WEBRTC_READY=65569]=`CORE_WEBRTC_READY`,e[e.CORE_WEBRTC_AUDIO_SEGMENT=65570]=`CORE_WEBRTC_AUDIO_SEGMENT`,e[e.CORE_WEBRTC_TRACK_MAP=65571]=`CORE_WEBRTC_TRACK_MAP`,e[e.CORE_WEBRTC_VIDEO_CAPTURE=65572]=`CORE_WEBRTC_VIDEO_CAPTURE`,e[e.CORE_WEBRTC_ICE_SERVERS_REQUEST=65573]=`CORE_WEBRTC_ICE_SERVERS_REQUEST`,e[e.CORE_WEBRTC_ICE_SERVERS_RESPONSE=65574]=`CORE_WEBRTC_ICE_SERVERS_RESPONSE`,e[e.CORE_WEBRTC_CLOSE=65575]=`CORE_WEBRTC_CLOSE`,e[e.CORE_RELAY_AGENT_AUTH=65576]=`CORE_RELAY_AGENT_AUTH`,e[e.CORE_RELAY_AGENT_AUTH_RESULT=65577]=`CORE_RELAY_AGENT_AUTH_RESULT`,e[e.CORE_RELAY_HEARTBEAT=65578]=`CORE_RELAY_HEARTBEAT`,e[e.CORE_RELAY_TCP_CONNECTION_OPENED=65579]=`CORE_RELAY_TCP_CONNECTION_OPENED`,e[e.CORE_RELAY_TCP_CONNECTION_CLOSED=65580]=`CORE_RELAY_TCP_CONNECTION_CLOSED`,e[e.CORE_RELAY_TCP_DATA=65581]=`CORE_RELAY_TCP_DATA`,e[e.CORE_RELAY_UDP_DATA=65582]=`CORE_RELAY_UDP_DATA`,e[e.CORE_RELAY_ADD_TUNNEL=65583]=`CORE_RELAY_ADD_TUNNEL`,e[e.CORE_RELAY_TUNNEL_ADDED=65584]=`CORE_RELAY_TUNNEL_ADDED`,e[e.CORE_RELAY_REMOVE_TUNNEL=65585]=`CORE_RELAY_REMOVE_TUNNEL`,e[e.CORE_IKON_SERVER_ENDPOINT_HOST_INFO=65586]=`CORE_IKON_SERVER_ENDPOINT_HOST_INFO`,e[e.CORE_CLIENT_INITIALIZATION=65587]=`CORE_CLIENT_INITIALIZATION`,e[e.CORE_CLIENT_LIFECYCLE_BATCH=65588]=`CORE_CLIENT_LIFECYCLE_BATCH`,e[e.CORE_APP_CONFIG=65589]=`CORE_APP_CONFIG`,e[e.GROUP_KEEPALIVE=131072]=`GROUP_KEEPALIVE`,e[e.KEEPALIVE_REQUEST=131073]=`KEEPALIVE_REQUEST`,e[e.KEEPALIVE_RESPONSE=131074]=`KEEPALIVE_RESPONSE`,e[e.GROUP_EVENTS=262144]=`GROUP_EVENTS`,e[e.EVENTS_PROFILE_UPDATE=262145]=`EVENTS_PROFILE_UPDATE`,e[e.EVENTS_SPEECH_PLAYBACK_COMPLETE=262147]=`EVENTS_SPEECH_PLAYBACK_COMPLETE`,e[e.GROUP_ANALYTICS=524288]=`GROUP_ANALYTICS`,e[e.ANALYTICS_LOGS=524289]=`ANALYTICS_LOGS`,e[e.ANALYTICS_EVENTS=524290]=`ANALYTICS_EVENTS`,e[e.ANALYTICS_USAGES=524291]=`ANALYTICS_USAGES`,e[e.ANALYTICS_USAGE=524292]=`ANALYTICS_USAGE`,e[e.ANALYTICS_SPECIAL_LOG=524293]=`ANALYTICS_SPECIAL_LOG`,e[e.ANALYTICS_PROCESSING_UPDATE=524294]=`ANALYTICS_PROCESSING_UPDATE`,e[e.ANALYTICS_REACTIVE_PROCESSING_UPDATE=524295]=`ANALYTICS_REACTIVE_PROCESSING_UPDATE`,e[e.ANALYTICS_IKON_PROXY_SERVER_STATS=524296]=`ANALYTICS_IKON_PROXY_SERVER_STATS`,e[e.ANALYTICS_IKON_RELAY_SERVER_STATS=524297]=`ANALYTICS_IKON_RELAY_SERVER_STATS`,e[e.ANALYTICS_IKON_TURN_SERVER_STATS=524298]=`ANALYTICS_IKON_TURN_SERVER_STATS`,e[e.ANALYTICS_IKON_HOST_SERVER_STATS=524299]=`ANALYTICS_IKON_HOST_SERVER_STATS`,e[e.GROUP_ACTIONS=1048576]=`GROUP_ACTIONS`,e[e.ACTION_CALL=1048577]=`ACTION_CALL`,e[e.ACTION_ACTIVE=1048578]=`ACTION_ACTIVE`,e[e.ACTION_TEXT_OUTPUT=1048579]=`ACTION_TEXT_OUTPUT`,e[e.ACTION_TEXT_OUTPUT_DELTA=1048580]=`ACTION_TEXT_OUTPUT_DELTA`,e[e.ACTION_TEXT_OUTPUT_DELTA_FULL=1048581]=`ACTION_TEXT_OUTPUT_DELTA_FULL`,e[e.ACTION_SET_STATE=1048582]=`ACTION_SET_STATE`,e[e.ACTION_TAP=1048583]=`ACTION_TAP`,e[e.ACTION_PAN=1048584]=`ACTION_PAN`,e[e.ACTION_ZOOM=1048585]=`ACTION_ZOOM`,e[e.ACTION_OPEN_EXTERNAL_URL=1048592]=`ACTION_OPEN_EXTERNAL_URL`,e[e.ACTION_FUNCTION_REGISTER=1048600]=`ACTION_FUNCTION_REGISTER`,e[e.ACTION_FUNCTION_CALL=1048601]=`ACTION_FUNCTION_CALL`,e[e.ACTION_FUNCTION_RESULT=1048602]=`ACTION_FUNCTION_RESULT`,e[e.ACTION_GENERATE_ANSWER=1048603]=`ACTION_GENERATE_ANSWER`,e[e.ACTION_REGENERATE_ANSWER=1048604]=`ACTION_REGENERATE_ANSWER`,e[e.ACTION_CLEAR_STATE=1048606]=`ACTION_CLEAR_STATE`,e[e.ACTION_CLASSIFICATION_RESULT=1048609]=`ACTION_CLASSIFICATION_RESULT`,e[e.ACTION_AUDIO_STOP=1048610]=`ACTION_AUDIO_STOP`,e[e.ACTION_CALL_TEXT=1048611]=`ACTION_CALL_TEXT`,e[e.ACTION_CANCEL_GENERATION=1048613]=`ACTION_CANCEL_GENERATION`,e[e.ACTION_SPEECH_RECOGNIZED=1048615]=`ACTION_SPEECH_RECOGNIZED`,e[e.ACTION_CALL_RESULT=1048616]=`ACTION_CALL_RESULT`,e[e.ACTION_DOWNLOAD=1048618]=`ACTION_DOWNLOAD`,e[e.ACTION_PLAY_SOUND=1048621]=`ACTION_PLAY_SOUND`,e[e.ACTION_STOP_SOUND=1048623]=`ACTION_STOP_SOUND`,e[e.ACTION_START_RECORDING=1048624]=`ACTION_START_RECORDING`,e[e.ACTION_STOP_RECORDING=1048625]=`ACTION_STOP_RECORDING`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM=1048627]=`ACTION_FUNCTION_ENUMERATION_ITEM`,e[e.ACTION_FUNCTION_ENUMERATION_END=1048628]=`ACTION_FUNCTION_ENUMERATION_END`,e[e.ACTION_FUNCTION_CANCEL=1048629]=`ACTION_FUNCTION_CANCEL`,e[e.ACTION_FUNCTION_DISPOSE=1048630]=`ACTION_FUNCTION_DISPOSE`,e[e.ACTION_FUNCTION_ERROR=1048631]=`ACTION_FUNCTION_ERROR`,e[e.ACTION_FUNCTION_ACK=1048632]=`ACTION_FUNCTION_ACK`,e[e.ACTION_FUNCTION_AWAITING_APPROVAL=1048633]=`ACTION_FUNCTION_AWAITING_APPROVAL`,e[e.ACTION_FUNCTION_APPROVAL_REQUIRED=1048634]=`ACTION_FUNCTION_APPROVAL_REQUIRED`,e[e.ACTION_FUNCTION_APPROVAL_RESPONSE=1048635]=`ACTION_FUNCTION_APPROVAL_RESPONSE`,e[e.UI_UPDATE_ACK=1048636]=`UI_UPDATE_ACK`,e[e.ACTION_CALL2=1048637]=`ACTION_CALL2`,e[e.ACTION_FUNCTION_REGISTER_BATCH=1048638]=`ACTION_FUNCTION_REGISTER_BATCH`,e[e.ACTION_CUSTOM_USER_MESSAGE=1048641]=`ACTION_CUSTOM_USER_MESSAGE`,e[e.ACTION_URL_CHANGED=1048642]=`ACTION_URL_CHANGED`,e[e.ACTION_FILE_UPLOAD_PRE_START2=1048643]=`ACTION_FILE_UPLOAD_PRE_START2`,e[e.ACTION_FILE_UPLOAD_PRE_START_RESPONSE2=1048644]=`ACTION_FILE_UPLOAD_PRE_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_START2=1048645]=`ACTION_FILE_UPLOAD_START2`,e[e.ACTION_FILE_UPLOAD_START_RESPONSE2=1048646]=`ACTION_FILE_UPLOAD_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_DATA2=1048647]=`ACTION_FILE_UPLOAD_DATA2`,e[e.ACTION_FILE_UPLOAD_ACK2=1048648]=`ACTION_FILE_UPLOAD_ACK2`,e[e.ACTION_FILE_UPLOAD_END2=1048649]=`ACTION_FILE_UPLOAD_END2`,e[e.ACTION_FILE_UPLOAD_COMPLETE2=1048650]=`ACTION_FILE_UPLOAD_COMPLETE2`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM_BATCH=1048651]=`ACTION_FUNCTION_ENUMERATION_ITEM_BATCH`,e[e.ACTION_CALL_ACK=1048652]=`ACTION_CALL_ACK`,e[e.ACTION_TRIGGER_CRON=1048653]=`ACTION_TRIGGER_CRON`,e[e.ACTION_RESULT=1048654]=`ACTION_RESULT`,e[e.UI_RESYNC_REQUEST=1048655]=`UI_RESYNC_REQUEST`,e[e.ACTION_USER_DATA_ERASURE=1048656]=`ACTION_USER_DATA_ERASURE`,e[e.GROUP_UI=2097152]=`GROUP_UI`,e[e.UI_STREAM_BEGIN=2097153]=`UI_STREAM_BEGIN`,e[e.UI_STREAM_END=2097154]=`UI_STREAM_END`,e[e.UI_STYLES=2097188]=`UI_STYLES`,e[e.UI_UPDATE=2097190]=`UI_UPDATE`,e[e.UI_STYLES_BATCH=2097192]=`UI_STYLES_BATCH`,e[e.UI_STYLES_DELETE=2097193]=`UI_STYLES_DELETE`,e[e.GROUP_COMMON=4128768]=`GROUP_COMMON`,e[e.GROUP_AUDIO=4194304]=`GROUP_AUDIO`,e[e.AUDIO_STREAM_BEGIN=4194305]=`AUDIO_STREAM_BEGIN`,e[e.AUDIO_STREAM_END=4194306]=`AUDIO_STREAM_END`,e[e.AUDIO_FRAME=4194307]=`AUDIO_FRAME`,e[e.AUDIO_FRAME_VOLUME=4194308]=`AUDIO_FRAME_VOLUME`,e[e.AUDIO_FRAME2=4194309]=`AUDIO_FRAME2`,e[e.AUDIO_SHAPE_FRAME=4194310]=`AUDIO_SHAPE_FRAME`,e[e.AUDIO_PLAYBACK_REPORT=4194311]=`AUDIO_PLAYBACK_REPORT`,e[e.GROUP_VIDEO=8388608]=`GROUP_VIDEO`,e[e.VIDEO_STREAM_BEGIN=8388609]=`VIDEO_STREAM_BEGIN`,e[e.VIDEO_STREAM_END=8388610]=`VIDEO_STREAM_END`,e[e.VIDEO_FRAME=8388611]=`VIDEO_FRAME`,e[e.VIDEO_REQUEST_IDR_FRAME=8388612]=`VIDEO_REQUEST_IDR_FRAME`,e[e.VIDEO_INVALIDATE_FRAME=8388613]=`VIDEO_INVALIDATE_FRAME`,e[e.GROUP_ALL=16711680]=`GROUP_ALL`,e[e.GROUP_APP_LOCAL=1073741824]=`GROUP_APP_LOCAL`,e[e.CONSTANT_GROUP_MASK=2147418112]=`CONSTANT_GROUP_MASK`,e}({});function y(e){let t={};return e&&Object.assign(t,e),t}function te(e){return new s(1).finish()}function b(e,t,n){return i(131074,te(e),1,t,n)}var x=class extends Error{cause;constructor(e,t){super(e),this.cause=t,this.name=`ConnectionError`}},S=class extends x{constructor(e,t){super(e,t),this.name=`TransportError`}},C=class extends S{constructor(e){super(`No keepalive received within ${e}ms`),this.name=`KeepaliveTimeoutError`}},w=class extends S{constructor(e,t){super(e,t),this.name=`AuthRejectedError`}},T=class extends x{constructor(e){super(`Maximum reconnection attempts (${e}) exceeded`),this.name=`MaxRetriesExceededError`}};function ne(e,t){return new Promise((n,r)=>{let i=()=>{clearTimeout(a),r(new DOMException(`Aborted`,`AbortError`))},a=setTimeout(()=>{t?.removeEventListener(`abort`,i),n()},e);if(t?.aborted){clearTimeout(a),r(new DOMException(`Aborted`,`AbortError`));return}t?.addEventListener(`abort`,i,{once:!0})})}let E=1;const re=new Map;function ie(e){E=e}const D={0:`DEBUG`,1:`INFO`,2:`WARN`,3:`ERROR`,4:`NONE`};function ae(e,t){return`[${e}] ${t}`}function O(e,t,n,r){let i={timestamp:new Date().toISOString(),level:e,levelName:D[e],component:t,message:n,args:r};for(let[t,n]of re)if(e>=(n?.minLevel??2))try{t(i)}catch{}if(E<=e){let i=ae(t,n);switch(e){case 0:console.debug(i,...r);break;case 1:console.info(i,...r);break;case 2:console.warn(i,...r);break;case 3:console.error(i,...r)}}}function k(e){return{debug(t,...n){O(0,e,t,n)},info(t,...n){O(1,e,t,n)},warn(t,...n){O(2,e,t,n)},error(t,...n){O(3,e,t,n)}}}function oe(e,t){if(typeof window>`u`)return null;let n=new URLSearchParams(window.location.search),r=n.get(e);if(r!==null)return r;let i=n.get(e.replace(/-/g,`_`));return i===null?t?n.get(t):null:i}function se(e,t){let n=oe(e,t);return n===`true`||n!==`false`&&null}function ce(){return se(`ikon-retry`)!==!1}const A=k(`WebSocketTransport`);var j=class{ws=null;keepaliveTimeout=null;isClosed=!1;keepaliveResponseMessage=null;firstMessageResolver=null;keepaliveTimeoutMs;connectionTimeoutMs;callbacks;sessionId;constructor(e){this.callbacks=e.callbacks,this.sessionId=e.sessionId,this.keepaliveTimeoutMs=e.keepaliveTimeoutMs,this.connectionTimeoutMs=e.connectionTimeoutMs??1e4}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}async connect(e,t){this.isClosed=!1;let n=Date.now();return new Promise((r,i)=>{try{this.ws=new WebSocket(e),this.ws.binaryType=`arraybuffer`}catch(e){i(new S(`Failed to create WebSocket: ${e}`,e instanceof Error?e:void 0));return}let a=!1,o=!1,s=()=>{clearTimeout(u),this.ws&&(this.ws.onopen=null,this.ws.onerror=null,this.ws.onclose=null,this.ws.onmessage=null)},c=()=>{o||(o=!0,clearTimeout(u),this.firstMessageResolver=null,A.debug(`WebSocket connected in ${Date.now()-n}ms`),r())},l=e=>{o||(o=!0,this.firstMessageResolver=null,s(),i(e))};this.firstMessageResolver=c;let u=setTimeout(()=>{this.ws?.close(),A.warn(`WebSocket connection timeout after ${this.connectionTimeoutMs}ms`),l(new S(`WebSocket connection timeout`))},this.connectionTimeoutMs);this.ws.onopen=()=>{a=!0,this.ws.send(t),this.resetKeepaliveTimeout()},this.ws.onerror=()=>{A.debug(`WebSocket connection failed after ${Date.now()-n}ms`),l(new S(`WebSocket connection failed`))},this.ws.onclose=e=>{if(this.clearKeepaliveTimeout(),!o){l(a?new w(`WebSocket closed before first server message`):new S(`WebSocket connection closed before opening`));return}if(this.isClosed)return;let t=e.wasClean&&(e.code===1e3||e.code===1001),n=e.reason||`code=${e.code}`;this.callbacks.onClose(n,t)},this.ws.onmessage=e=>{this.handleProtocolMessage(new Uint8Array(e.data))}})}send(e){this.ws?.readyState===WebSocket.OPEN?this.ws.send(e):A.warn(`Cannot send: WebSocket not connected`)}close(){this.isClosed=!0,this.clearKeepaliveTimeout(),this.ws&&=(this.ws.close(1e3,`Client closing`),null)}getKeepaliveResponse(){return this.keepaliveResponseMessage||=b(y(),this.sessionId),this.keepaliveResponseMessage}handleProtocolMessage(e){try{let t=r(e).opcode;if(this.firstMessageResolver&&this.firstMessageResolver(),t===v.KEEPALIVE_REQUEST){this.send(this.getKeepaliveResponse()),this.resetKeepaliveTimeout();return}this.resetKeepaliveTimeout(),this.callbacks.onProtocolMessage(e)}catch(e){A.error(`Failed to process protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))}}resetKeepaliveTimeout(){this.clearKeepaliveTimeout(),!(this.keepaliveTimeoutMs<=0)&&(this.keepaliveTimeout=setTimeout(()=>{A.error(`No keepalive received in ${this.keepaliveTimeoutMs}ms, closing connection`),this.callbacks.onError(new C(this.keepaliveTimeoutMs)),this.close()},this.keepaliveTimeoutMs))}clearKeepaliveTimeout(){this.keepaliveTimeout&&=(clearTimeout(this.keepaliveTimeout),null)}};const M=k(`WebTransportTransport`);function N(){return typeof WebTransport<`u`}var le=class{transport=null;stream=null;reader=null;writer=null;keepaliveTimeout=null;readLoopActive=!1;isClosed=!1;receiveBuffer=new Uint8Array(65536);receiveBufferOffset=0;receiveBufferLength=0;receiveDataView=null;receiveDataViewBuffer=null;keepaliveResponseMessage=null;firstMessageResolver=null;firstMessageRejecter=null;keepaliveTimeoutMs;connectionTimeoutMs;callbacks;sessionId;constructor(e){this.callbacks=e.callbacks,this.sessionId=e.sessionId,this.keepaliveTimeoutMs=e.keepaliveTimeoutMs,this.connectionTimeoutMs=e.connectionTimeoutMs??1e4}get isConnected(){return this.transport!==null&&this.writer!==null}async connect(e,t){if(!N())throw new S(`WebTransport is not supported in this browser`);this.isClosed=!1;let n=Date.now(),r=new Promise((e,t)=>{this.firstMessageResolver=e,this.firstMessageRejecter=t});try{this.transport=new WebTransport(e);let i,a=new Promise((e,t)=>{i=setTimeout(()=>t(new S(`WebTransport connection timeout`)),this.connectionTimeoutMs)});try{await Promise.race([this.transport.ready,a])}catch(e){throw e instanceof S&&M.warn(`WebTransport connection timeout after ${this.connectionTimeoutMs}ms`),e}finally{clearTimeout(i)}this.transport.closed.then(()=>{this.handleClose(`Connection closed`,!0)}).catch(e=>{M.error(`WebTransport connection closed with error:`,e),this.handleClose(e instanceof Error?e.message:`Connection error`,!1)}),this.stream=await this.transport.createBidirectionalStream(),this.reader=this.stream.readable.getReader(),this.writer=this.stream.writable.getWriter(),await this.writer.write(t),this.resetKeepaliveTimeout(),this.startReadLoop();let o=Math.max(this.connectionTimeoutMs-(Date.now()-n),1),s,c=new Promise((e,t)=>{s=setTimeout(()=>t(new S(`WebTransport closed before first server message`)),o)});try{await Promise.race([r,c])}finally{clearTimeout(s)}this.firstMessageResolver=null,this.firstMessageRejecter=null,M.info(`WebTransport connected in ${Date.now()-n}ms`)}catch(e){this.firstMessageResolver=null,this.firstMessageRejecter=null,this.isClosed=!0,this.cleanup();let t=Date.now()-n;throw M.warn(`WebTransport connection failed after ${t}ms: ${e}`),new S(`Failed to connect WebTransport: ${e}`,e instanceof Error?e:void 0)}}send(e){if(!this.writer){M.warn(`Cannot send: WebTransport not connected`);return}this.writer.write(e).catch(e=>{M.error(`Failed to send protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))})}close(){this.isClosed=!0,this.clearKeepaliveTimeout(),this.readLoopActive=!1,this.cleanup()}async startReadLoop(){if(this.reader){this.readLoopActive=!0;try{for(;this.readLoopActive&&this.reader;){let{value:e,done:t}=await this.reader.read();if(t)break;e&&(this.appendToBuffer(e),this.processBufferedMessages())}this.readLoopActive&&this.handleClose(`Stream ended`,!1)}catch(e){this.readLoopActive&&(M.error(`Read loop error:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e))))}}}appendToBuffer(e){let t=this.receiveBufferLength+e.length,n=this.receiveBufferOffset+this.receiveBufferLength;if(n+e.length>this.receiveBuffer.length)if(t>this.receiveBuffer.length){let e=Math.max(t,this.receiveBuffer.length*2),r=new Uint8Array(e);r.set(this.receiveBuffer.subarray(this.receiveBufferOffset,n)),this.receiveBuffer=r,this.receiveBufferOffset=0,this.receiveDataViewBuffer=null}else this.receiveBuffer.copyWithin(0,this.receiveBufferOffset,n),this.receiveBufferOffset=0;this.receiveBuffer.set(e,this.receiveBufferOffset+this.receiveBufferLength),this.receiveBufferLength+=e.length}getReceiveDataView(){let e=this.receiveBuffer.buffer;return this.receiveDataViewBuffer!==e&&(this.receiveDataViewBuffer=e,this.receiveDataView=new DataView(e)),this.receiveDataView}getKeepaliveResponse(){return this.keepaliveResponseMessage||=b(y(),this.sessionId),this.keepaliveResponseMessage}processBufferedMessages(){let e=this.getReceiveDataView();for(;this.receiveBufferLength>=4;){let t=e.getUint32(this.receiveBufferOffset,!0);if(t<4){M.error(`Invalid message length: ${t}`),this.callbacks.onError(Error(`Invalid protocol message length: ${t}`)),this.receiveBufferOffset=0,this.receiveBufferLength=0;return}if(this.receiveBufferLength<t)return;let n=this.receiveBuffer.subarray(this.receiveBufferOffset,this.receiveBufferOffset+t);this.receiveBufferOffset+=t,this.receiveBufferLength-=t,this.handleProtocolMessage(n)}this.receiveBufferLength===0&&(this.receiveBufferOffset=0)}handleProtocolMessage(e){try{let t=r(e).opcode;if(this.firstMessageResolver&&this.firstMessageResolver(),t===v.KEEPALIVE_REQUEST){this.send(this.getKeepaliveResponse()),this.resetKeepaliveTimeout();return}this.resetKeepaliveTimeout(),this.callbacks.onProtocolMessage(e)}catch(e){M.error(`Failed to process protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))}}handleClose(e,t){if(!this.isClosed){if(this.isClosed=!0,this.clearKeepaliveTimeout(),this.readLoopActive=!1,this.cleanup(),this.firstMessageRejecter){this.firstMessageRejecter(new w(`WebTransport closed before first server message: ${e}`)),this.firstMessageResolver=null,this.firstMessageRejecter=null;return}this.callbacks.onClose(e,t)}}resetKeepaliveTimeout(){this.clearKeepaliveTimeout(),!(this.keepaliveTimeoutMs<=0)&&(this.keepaliveTimeout=setTimeout(()=>{M.error(`No keepalive received in ${this.keepaliveTimeoutMs}ms, closing connection`),this.callbacks.onError(new C(this.keepaliveTimeoutMs)),this.close()},this.keepaliveTimeoutMs))}clearKeepaliveTimeout(){this.keepaliveTimeout&&=(clearTimeout(this.keepaliveTimeout),null)}cleanup(){if(this.reader&&=(this.reader.releaseLock(),null),this.writer&&=(this.writer.releaseLock(),null),this.stream=null,this.receiveBufferOffset=0,this.receiveBufferLength=0,this.transport){try{this.transport.close()}catch{}this.transport=null}}};const P=k(`Channel`);var F=class{state=`disconnected`;transport=null;config;entrypoint;constructor(e){this.config=e,this.entrypoint=e.entrypoint}get channelState(){return this.state}get opcodeGroups(){return this.entrypoint.OpcodeGroupsFromServer}get type(){return this.entrypoint.Type}get isConnected(){return this.transport?.isConnected??!1}async connect(){if(this.state!==`disconnected`)throw Error(`Cannot connect: already in state ${this.state}`);this.setState(`connecting`);try{await this.connectTransport(),this.setState(`connected`)}catch(e){throw this.setState(`disconnected`),e}}disconnect(){this.transport&&=(this.transport.close(),null),this.setState(`disconnected`)}triggerReconnect(e){this.transport&&=(this.transport.close(),null),this.config.onClose?.(e,!1)}checkHealth(){this.state===`connected`&&this.transport&&!this.transport.isConnected&&this.handleClose(`Transport dead after tab resume`,!1)}send(e){if(!this.transport?.isConnected){P.warn(`Cannot send: channel not connected`);return}this.transport.send(e)}async connectTransport(){let e=this.entrypoint,t={sessionId:this.config.sessionId,keepaliveTimeoutMs:this.config.keepaliveTimeoutMs,connectionTimeoutMs:this.config.connectionTimeoutMs,callbacks:{onProtocolMessage:e=>this.handleProtocolMessage(e),onClose:(e,t)=>this.handleClose(e,t),onError:e=>this.handleError(e)}};switch(e.Type){case _.WebSocket:case _.WebSocketProxy:this.transport=new j(t);break;case _.WebTransport:case _.WebTransportProxy:if(!N())throw Error(`WebTransport is not supported in this browser`);this.transport=new le(t);break;default:throw Error(`Unsupported entrypoint type: ${_[e.Type]}`)}await this.transport.connect(e.Uri,e.AuthTicket)}handleProtocolMessage(n){try{let r=e(n);if(t(r)===v.CORE_ON_SERVER_STOPPING){P.debug(`Received server stopping message`),this.setState(`stopped`),this.transport?.close();return}this.config.onProtocolMessage?.(r)}catch(e){P.error(`Failed to handle protocol message:`,e),this.config.onError?.(e instanceof Error?e:Error(String(e)))}}handleClose(e,t){this.transport=null,this.config.onClose?.(e,t)}handleError(e){this.config.onError?.(e),e instanceof C&&this.handleClose(`Keepalive timeout`,!1)}setState(e){this.state!==e&&(this.state=e,this.config.onStateChange?.(e))}};const I=k(`ChannelManager`);var ue=class{channels=new Map;activeType=null;state=`idle`;reconnectAttempts=0;shouldReconnect=!0;entrypoints=[];abortController=null;connectionTimeoutMs;stabilityTimer=null;config;constructor(e){this.config=e}get managerState(){return this.state}get activeEndpointType(){return this.activeType}async connect(e,t){if(this.state!==`idle`&&this.state!==`offline`)throw Error(`Cannot connect: already in state ${this.state}`);if(this.entrypoints=e,this.shouldReconnect=!0,this.reconnectAttempts=0,this.abortController=new AbortController,t?.retry){this.attemptReconnect();return}await this.connectInternal()}disconnect(){this.shouldReconnect=!1,this.abortController?.abort(),this.abortController=null,this.disconnectAll(),this.setState(`idle`)}sendProtocolMessage(e){let t=n(e);for(let[n,r]of this.channels)if(n&t){r.send(e);return}this.state===`connected`&&I.warn(`No channel found for message`)}sendToAll(e){for(let t of this.channels.values())t.send(e)}checkHealth(){if(this.state===`connected`)for(let e of this.channels.values())e.checkHealth()}triggerReconnect(e){if(this.state===`connected`){I.debug(`Forcing reconnect: ${e}`);for(let t of this.channels.values())t.triggerReconnect(e)}}async connectInternal(e=!1){this.setState(`connecting`);let t=this.entrypoints.filter(e=>e.Type!==_.WebRTC),n=this.groupByType(t);if(n.size===0)throw this.setState(`offline`),Error(`No entrypoints available`);let r;if(this.config.orderedEndpointTypes&&this.config.orderedEndpointTypes.length>0){let e=new Set(n.keys());r=this.config.orderedEndpointTypes.filter(t=>e.has(t))}else r=this.config.endpointSelector?this.config.endpointSelector.getOrderedTypes(n):Array.from(n.keys());this.connectionTimeoutMs=r.length>1?5e3:1e4,I.debug(`Endpoint types to try: [${r.map(e=>_[e]).join(`, `)}], transport timeout: ${this.connectionTimeoutMs}ms`);for(let e of r){if(!this.shouldReconnect)return;let t=n.get(e),r=Date.now();I.debug(`Trying ${_[e]} (${t.length} channel(s))`);try{await this.connectAllChannels(t),this.config.endpointSelector?.rememberWorkingType(e),this.config.onRememberWorkingType?.(e),this.activeType=e,I.debug(`Connected via ${_[e]} in ${Date.now()-r}ms`),this.setState(`connected`),this.startStabilityTimer();return}catch(t){I.warn(`Failed to connect using ${_[e]} after ${Date.now()-r}ms: ${t instanceof Error?t.message:t}`);let i=this.channels.size>0;if(this.disconnectAll(),t instanceof w)throw t;if(i&&this.config.onRefreshEntrypoints)try{I.info(`Partial connection detected, refreshing entrypoints`);let e=await this.config.onRefreshEntrypoints();this.entrypoints=e.entrypoints,this.config.sessionId=e.sessionId;let t=e.entrypoints.filter(e=>e.Type!==_.WebRTC),r=this.groupByType(t);for(let[e,t]of r)n.set(e,t)}catch(e){I.warn(`Failed to refresh entrypoints: ${e}`)}}}throw e||this.setState(`offline`),Error(`Failed to connect using any endpoint type`)}async connectAllChannels(e){if(e.length===0)throw Error(`No entrypoints to connect`);let t=(await Promise.allSettled(e.map(e=>this.connectChannel(e)))).filter(e=>e.status===`rejected`);if(t.length>0){let e=t.map(e=>e.reason instanceof Error?e.reason.message:String(e.reason));throw t.some(e=>e.reason instanceof w)?new w(e.join(`, `)):Error(e.join(`, `))}}async connectChannel(e){let t=new F({entrypoint:e,sessionId:this.config.sessionId,keepaliveTimeoutMs:this.config.keepaliveTimeoutMs,connectionTimeoutMs:this.connectionTimeoutMs,onProtocolMessage:e=>{this.config.onProtocolMessage?.(e)},onStateChange:t=>{this.handleChannelStateChange(e.OpcodeGroupsFromServer,t)},onClose:(t,n)=>{this.handleChannelClose(e.OpcodeGroupsFromServer,t,n)},onError:e=>{this.config.onError?.(e)}});await t.connect(),this.channels.set(e.OpcodeGroupsFromServer,t)}groupByType(e){let t=new Map;for(let n of e){let e=t.get(n.Type)??[];e.push(n),t.set(n.Type,e)}return t}handleChannelStateChange(e,t){t===`stopped`&&(this.shouldReconnect=!1,this.disconnectAll(),this.setState(`stopped`))}handleChannelClose(e,t,n){this.state!==`idle`&&this.state!==`stopped`&&this.state!==`offline`&&this.channels.has(e)&&this.state===`connected`&&(I.warn(`Channel closed unexpectedly, attempting reconnect`),this.disconnectAll(),this.attemptReconnect())}async attemptReconnect(){if(this.shouldReconnect){if(!ce()){I.warn(`Retry disabled via ikon-retry=false, skipping reconnect`),this.setState(`offline`),this.config.onError?.(new T(0));return}if(this.reconnectAttempts>=this.config.maxReconnectAttempts){I.warn(`Max reconnect attempts (${this.config.maxReconnectAttempts}) reached`),this.setState(`offline`),this.config.onError?.(new T(this.config.maxReconnectAttempts));return}if(this.setState(`reconnecting`),this.reconnectAttempts++,this.reconnectAttempts>1){I.info(`Reconnecting in ${this.config.reconnectBackoffMs}ms (attempt ${this.reconnectAttempts}/${this.config.maxReconnectAttempts})`);try{await ne(this.config.reconnectBackoffMs,this.abortController?.signal)}catch{return}}else I.info(`Reconnecting immediately (attempt ${this.reconnectAttempts}/${this.config.maxReconnectAttempts})`);if(this.shouldReconnect)try{await this.connectInternal(!0)}catch(e){if(e instanceof w){I.warn(`Auth rejected during reconnect, stopping retries and signaling full re-auth`),this.config.onError?.(e),this.setState(`offline`);return}await this.attemptReconnect()}}}disconnectAll(){for(let e of this.channels.values())e.disconnect();this.channels.clear(),this.activeType=null}setState(e){this.state!==e&&(this.state===`connected`&&e!==`connected`&&this.clearStabilityTimer(),this.state=e,this.config.onStateChange?.(e))}startStabilityTimer(){this.clearStabilityTimer(),this.stabilityTimer=setTimeout(()=>{this.stabilityTimer=null,this.state===`connected`&&(this.reconnectAttempts=0)},5e3)}clearStabilityTimer(){this.stabilityTimer&&=(clearTimeout(this.stabilityTimer),null)}};const L=k(`ProtocolWorker`),R=(e,t)=>{self.postMessage(e,t??[])};let z=null,B=null,V=null,H,U=null;const W=[],G=[],K=new Map,q=[],J=[],Y=new Map,X=[];function Z(){try{z?.disconnect()}catch(e){L.warn(`Failed to disconnect channel manager: ${e}`)}z=null;for(let e=0;e<G.length;e++)try{G[e].port.close()}catch{}W.length=0,G.length=0,K.clear();for(let e=0;e<J.length;e++)try{J[e].port.close()}catch{}q.length=0,J.length=0,Y.clear()}function Q(e){let t=e instanceof Error?e:Error(String(e));R({type:`error`,error:{name:t.name,message:t.message,stack:t.stack}})}function de(){let e=0;for(let t=0;t<G.length;t++)e|=G[t].opcodeGroupsMask;return e}function fe(e){if(H===void 0)return!0;let t=n(e);return(t&H)!==0||(t&de())!==0}function $(e){X.length=0;for(let t=0;t<G.length;t++){let n=G[t];(n.opcodeGroupsMask&e)!==0&&X.push(n.port)}return X}function pe(e,t){return(n(e)&t)!==0}function me(t,n){if(!z||!n||typeof n!=`object`)return;let r=n;if(!(r.type!==`send`||!(r.message instanceof ArrayBuffer)))try{let n=e(new Uint8Array(r.message));if(!pe(n,t))return;z.sendProtocolMessage(n),U&&U.postMessage({direction:`sent`,message:Array.from(n)})}catch(e){Q(e)}}async function he(e){Z(),z=new ue({sessionId:e.sessionId,keepaliveTimeoutMs:e.keepaliveTimeoutMs,reconnectBackoffMs:e.reconnectBackoffMs,maxReconnectAttempts:e.maxReconnectAttempts,orderedEndpointTypes:e.orderedEndpointTypes,webRtcEnabled:e.webRtcEnabled,onStateChange:e=>{R({type:`state`,state:e,activeType:z?.activeEndpointType??void 0})},onRememberWorkingType:()=>{R({type:`state`,state:z?.managerState??`idle`,activeType:z?.activeEndpointType??void 0})},onError:e=>{Q(e)},onRefreshEntrypoints:()=>new Promise((e,t)=>{B=e,V=t,R({type:`refreshEntrypoints`})}),onProtocolMessage:e=>{U&&(U.postMessage({direction:`received`,message:Array.from(e)}),t(e)===v.ANALYTICS_LOGS&&U.postMessage({type:`serverLogs`,message:Array.from(e)}));let i=n(e),a=fe(e),o=$(i);if(!(!a&&o.length===0))try{let t=r(e),n=e.buffer instanceof ArrayBuffer&&e.byteOffset===0&&e.byteLength===e.buffer.byteLength,i=o.length>0;if(i&&!a&&o.length===1&&n){let n=e.buffer;o[0].postMessage({type:`protocol`,message:n,headers:t},[n]);return}if(!i&&a&&n){let n=e.buffer;R({type:`protocol`,message:n,headers:t},[n]);return}if(i&&n){let n=[];for(let t=1;t<o.length;t++)n.push(e.slice().buffer);let r=a?e.slice().buffer:null,i=e.buffer;o[0].postMessage({type:`protocol`,message:i,headers:t},[i]);for(let e=1;e<o.length;e++)o[e].postMessage({type:`protocol`,message:n[e-1],headers:t},[n[e-1]]);r&&R({type:`protocol`,message:r,headers:t},[r]);return}if(i)for(let n of o){let r=e.slice().buffer;n.postMessage({type:`protocol`,message:r,headers:t},[r])}if(a){let n=e.slice().buffer;R({type:`protocol`,message:n,headers:t},[n])}}catch(e){Q(e)}}}),await z.connect(e.entrypoints,{retry:e.retry})}self.addEventListener(`message`,t=>{let i=t.data;if(i.type===`connect`){he(i).catch(e=>{L.error(`Failed to connect: ${e}`),Q(e),Z()});return}if(i.type===`disconnect`){Z(),R({type:`state`,state:`idle`});return}if(i.type===`send`){if(!z)return;try{let t=e(new Uint8Array(i.message));z.sendProtocolMessage(t),U&&U.postMessage({direction:`sent`,message:Array.from(t)})}catch(e){Q(e)}return}if(i.type===`setInterest`){H=i.opcodeGroupsMask;return}if(i.type===`enableDevtools`){i.enabled&&!U?U=new BroadcastChannel(`ikon:devtools`):!i.enabled&&U&&(U.close(),U=null);return}if(i.type===`setLogLevel`){ie(i.level);return}if(i.type===`checkHealth`){z?.checkHealth();return}if(i.type===`triggerReconnect`){z?.triggerReconnect(i.reason);return}if(i.type===`refreshedEntrypoints`){B&&(B({entrypoints:i.entrypoints,sessionId:i.sessionId}),B=null,V=null);return}if(i.type===`refreshEntrypointsFailed`){V&&=(V(Error(`Failed to refresh entrypoints`)),B=null,null);return}if(i.type===`forwardToPorts`){try{let t=e(new Uint8Array(i.message)),a=$(n(t));if(a.length>0){let e=r(t);for(let n of a){let r=t.slice().buffer;n.postMessage({type:`protocol`,message:r,headers:e},[r])}}}catch(e){Q(e)}return}if(i.type===`attachPort`){try{i.port.start?.()}catch{}let e=W.length;W.push(i.portId),G.push({port:i.port,opcodeGroupsMask:i.opcodeGroupsMask}),K.set(i.portId,e);return}if(i.type===`detachPort`){let e=K.get(i.portId);if(e!==void 0){let t=G[e];try{t.port.close()}catch{}let n=W.length-1;if(e!==n){let t=W[n];W[e]=t,G[e]=G[n],K.set(t,e)}W.length--,G.length--,K.delete(i.portId)}return}if(i.type===`attachSendPort`){let e=Y.get(i.portId);if(e!==void 0){let t=J[e];try{t.port.close()}catch{}let n=q.length-1;if(e!==n){let t=q[n];q[e]=t,J[e]=J[n],Y.set(t,e)}q.length--,J.length--,Y.delete(i.portId)}let t={port:i.port,opcodeGroupsMask:i.opcodeGroupsMask},n=q.length;q.push(i.portId),J.push(t),Y.set(i.portId,n);try{t.port.start?.()}catch{}t.port.addEventListener(`message`,e=>{me(t.opcodeGroupsMask,e.data)});return}if(i.type===`detachSendPort`){let e=Y.get(i.portId);if(e!==void 0){let t=J[e];try{t.port.close()}catch{}let n=q.length-1;if(e!==n){let t=q[n];q[e]=t,J[e]=J[n],Y.set(t,e)}q.length--,J.length--,Y.delete(i.portId)}return}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={None:0,SendBackToSender:1,Delayable:2,SendToUser:4,Compressed:8,Unreliable:16};function t(e){return e}function n(e){if(e.length<8)throw Error(`Protocol message too short`);return(e[4]|e[5]<<8|e[6]<<16|e[7]<<24)>>>0}function r(e){let t=S(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(t.length<27)throw Error(`Protocol payload too short`);let r=n.getUint32(0,!0),i=n.getUint32(4,!0),a=n.getUint32(8,!0),o=n.getUint32(12,!0),s=n.getUint32(16,!0),c=n.getUint32(20,!0),l=n.getUint8(24),u=n.getUint8(25),d=n.getUint8(26);if(27+c*4>t.length)throw Error(`Protocol header exceeds payload length`);let f=[],p=27;for(let e=0;e<c;e++)f.push(n.getUint32(p,!0)),p+=4;return{length:r,opcode:i,senderId:a,trackId:o,sequenceId:s,targetIds:f,payloadVersion:l,payloadType:u,flags:d}}async function i(t,n,i){let o=S(t),s=r(o);if(n!==void 0&&s.opcode!==n)throw Error(`Unexpected opcode ${s.opcode}`);if(s.payloadType!==8)throw Error(`Unexpected payload type ${s.payloadType}`);let c=27+s.targetIds.length*4,l=o.subarray(c,s.length);return(s.flags&e.Compressed)!==0&&(l=await a(l)),l}async function a(e){if(typeof DecompressionStream>`u`)throw Error(`DecompressionStream not supported`);let t=new DecompressionStream(`gzip`),n=t.writable.getWriter(),r=new Uint8Array(e);n.write(r).then(()=>n.close()).catch(()=>void 0);let i=t.readable.getReader(),a=[],o=0;for(;;){let{done:e,value:t}=await i.read();if(e)break;a.push(t),o+=t.length}let s=new Uint8Array(o),c=0;for(let e=0;e<a.length;e++)s.set(a[e],c),c+=a[e].length;return s}let o=function(e){return e[e.Null=1]=`Null`,e[e.Bool=2]=`Bool`,e[e.Int32=3]=`Int32`,e[e.Int64=4]=`Int64`,e[e.UInt32=5]=`UInt32`,e[e.UInt64=6]=`UInt64`,e[e.Float32=7]=`Float32`,e[e.Float64=8]=`Float64`,e[e.Array=9]=`Array`,e[e.Dict=10]=`Dict`,e[e.Object=11]=`Object`,e[e.String=12]=`String`,e[e.Binary=13]=`Binary`,e[e.Guid=14]=`Guid`,e}({});new TextEncoder;const s=new TextDecoder(`utf-8`,{fatal:!0});var c=class e{buffer;version;offset;end;constructor(e,t,n){this.buffer=e,this.version=t,this.offset=n,this.end=e.length-1}static create(t){let n=S(t);if(n.length<2)throw Error(`Teleport payload too short`);if(n[0]!==161||n[n.length-1]!==162)throw Error(`Teleport object missing markers`);let r={offset:1},i=g(n,r,`InvalidLength`);return new e(n,i,r.offset)}next(){if(this.offset>=this.end)return null;if(this.offset+5>this.buffer.length)throw Error(`Teleport object truncated`);let e=ne(this.buffer,this.offset);this.offset+=4;let t=this.buffer[this.offset++],n=t>>4&15;if(t&15)throw Error(`Teleport field flags must be zero`);let r=_(n),i;if(r>=0)v(this.buffer,this.offset,r),i=this.buffer.subarray(this.offset,this.offset+r),this.offset+=r;else{let e={offset:this.offset},t=g(this.buffer,e,`InvalidLength`);v(this.buffer,e.offset,t),i=this.buffer.subarray(e.offset,e.offset+t),this.offset=e.offset+t}return new u(e,n,i)}},l=class{type;payload;constructor(e,t){this.type=e,this.payload=t}asInt32(){return this.ensureType(3),new DataView(this.payload.buffer,this.payload.byteOffset,4).getInt32(0,!0)}asUInt32(){return this.ensureType(5),new DataView(this.payload.buffer,this.payload.byteOffset,4).getUint32(0,!0)}asInt64(){return this.ensureType(4),new DataView(this.payload.buffer,this.payload.byteOffset,8).getBigInt64(0,!0)}asUInt64(){return this.ensureType(6),new DataView(this.payload.buffer,this.payload.byteOffset,8).getBigUint64(0,!0)}asFloat32(){return this.ensureType(7),new DataView(this.payload.buffer,this.payload.byteOffset,4).getFloat32(0,!0)}asFloat64(){return this.ensureType(8),new DataView(this.payload.buffer,this.payload.byteOffset,8).getFloat64(0,!0)}asBool(){return this.ensureType(2),this.payload.length>0&&this.payload[0]!==0}asBinary(){return this.ensureType(13),this.payload}asUtf8(){return this.ensureType(12),this.payload}asString(){return this.ensureType(12),s.decode(this.payload)}asGuid(){return this.ensureType(14),h.fromBytes(this.payload)}asObject(){return this.ensureType(11),c.create(this.payload)}asArray(){return this.ensureType(9),d.create(this.payload)}asDictionary(){return this.ensureType(10),p.create(this.payload)}ensureType(e){if(this.type!==e)throw Error(`Teleport value has type ${o[this.type]}, expected ${o[e]}`)}},u=class extends l{fieldId;constructor(e,t,n){super(t,n),this.fieldId=e}get isNull(){return this.type===1}},d=class e{payload;elementType;count;offset;index=0;constructor(e){if(this.payload=e,e.length===0)throw Error(`Array payload too short`);let t=e[0];if(this.elementType=t>>4&15,t&15)throw Error(`Array flags must be zero`);let n={offset:1};this.count=g(e,n,`ArrayMalformed`),this.offset=n.offset}static create(t){return new e(S(t))}next(){if(this.index>=this.count){if(this.offset!==this.payload.length)throw Error(`Array payload contains trailing data`);return null}let e=this.readValue();return this.index++,e}readValue(){switch(this.elementType){case 3:case 5:case 7:case 8:case 2:case 4:case 6:case 14:{let e=_(this.elementType);v(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(this.elementType,t)}case 12:case 13:{let e={offset:this.offset},t=g(this.payload,e,`ArrayMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new f(this.elementType,n)}case 11:{let e={offset:this.offset},t=g(this.payload,e,`ArrayMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new f(11,n)}case 9:{let e=y(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(9,t)}case 10:{let e=b(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(10,t)}default:throw Error(`Unsupported array element type ${o[this.elementType]}`)}}},f=class extends l{constructor(e,t){super(e,t)}},p=class e{payload;keyType;valueType;count;offset;index=0;constructor(e){if(this.payload=e,e.length<2)throw Error(`Dictionary payload too short`);if(this.keyType=e[0]>>4&15,this.valueType=e[1]>>4&15,e[0]&15||e[1]&15)throw Error(`Dictionary key/value flags must be zero`);te(this.keyType);let t={offset:2};this.count=g(e,t,`DictMalformed`),this.offset=t.offset}static create(t){return new e(S(t))}next(){if(this.index>=this.count){if(this.offset!==this.payload.length)throw Error(`Dictionary payload contains trailing data`);return null}let e=this.readKey(),t=this.readValue();return this.index++,new m(e,t)}readKey(){let e=_(this.keyType);if(e>=0){v(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(this.keyType,t)}if(this.keyType===12||this.keyType===13){let e={offset:this.offset},t=g(this.payload,e,`DictMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(this.keyType,n)}throw Error(`Unsupported dictionary key type`)}readValue(){switch(this.valueType){case 12:case 13:{let e={offset:this.offset},t=g(this.payload,e,`DictMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(this.valueType,n)}case 11:{let e={offset:this.offset},t=g(this.payload,e,`DictMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(11,n)}case 9:{let e=y(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(9,t)}case 10:{let e=b(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(10,t)}case 3:case 5:case 7:case 8:case 2:case 4:case 6:case 14:case 1:{let e=_(this.valueType);v(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(this.valueType,t)}default:throw Error(`Unsupported dictionary value type ${o[this.valueType]}`)}}},m=class{key;value;constructor(e,t){this.key=e,this.value=t}},h=class e{bytes;constructor(e){this.bytes=e}static fromString(t){if(!t)throw Error(`Guid string is empty`);let n=t.replace(/-/g,``);if(n.length!==32)throw Error(`Guid string must be 32 hex characters`);let r=new Uint8Array(16),i=e.parseHexSlice(n,0,8),a=e.parseHexSlice(n,8,4),o=e.parseHexSlice(n,12,4);e.writeUInt32LE(r,0,i),e.writeUInt16LE(r,4,a),e.writeUInt16LE(r,6,o);for(let t=0;t<8;t++)r[8+t]=e.parseHexSlice(n,16+t*2,2);return new e(r)}static fromBytes(t){if(t.length!==16)throw Error(`Guid byte array must be 16 bytes`);return new e(Uint8Array.from(t))}static createZero(){return new e(new Uint8Array(16))}static createRandom(){let t=new Uint8Array(16),n=globalThis.crypto;if(n?.getRandomValues)n.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return t[6]=t[6]&15|64,t[8]=t[8]&63|128,new e(t)}toString(){let t=this.bytes;return[e.toHex(e.readUInt32LE(t,0),8),e.toHex(e.readUInt16LE(t,4),4),e.toHex(e.readUInt16LE(t,6),4),re(t.subarray(8,10)),re(t.subarray(10,16))].join(`-`)}asBytes(){return this.bytes.slice()}static parseHexSlice(e,t,n){let r=e.substr(t,n),i=Number.parseInt(r,16);if(Number.isNaN(i))throw Error(`Guid string contains invalid characters`);return i>>>0}static writeUInt32LE(e,t,n){let r=n>>>0;e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24&255}static writeUInt16LE(e,t,n){let r=n&65535;e[t]=r&255,e[t+1]=r>>>8&255}static readUInt32LE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}static readUInt16LE(e,t){return(e[t]|e[t+1]<<8)&65535}static toHex(e,t){return(e>>>0).toString(16).padStart(t,`0`)}};function g(e,t,n){if(t.offset>=e.length)throw Error(n);let r=0,i=0,a=0;for(;t.offset<e.length;){let n=e[t.offset++];if(a++,r|=(n&127)<<i,!(n&128)){if(a!==ee(r))throw Error(`Teleport VarUInt is not canonical`);return r>>>0}if(i+=7,i>=35)throw Error(`Teleport VarUInt exceeds 32-bit range`)}throw Error(n)}function ee(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}function _(e){switch(e){case 3:case 5:case 7:return 4;case 4:case 6:case 8:return 8;case 14:return 16;case 2:return 1;case 1:return 0;default:return-1}}function te(e){if(e===9||e===11||e===10||e===1)throw Error(`Dictionary keys must be primitive Teleport types`)}function v(e,t,n){if(t<0||n<0||t+n>e.length)throw Error(`Teleport payload exceeds bounds`)}function ne(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function y(e,t){if(t>=e.length)throw Error(`Array payload exceeds bounds`);let n=e[t],r=n>>4&15;if(n&15)throw Error(`Array flags must be zero`);let i={offset:t+1},a=g(e,i,`ArrayMalformed`),o=_(r);if(o>=0){let n=o*a;return v(e,i.offset,n),i.offset+n-t}let s=i.offset;for(let t=0;t<a;t++)s=x(r,e,s,`ArrayMalformed`);return s-t}function b(e,t){if(t+2>e.length)throw Error(`Dictionary payload too short`);let n=e[t]>>4&15,r=e[t+1]>>4&15;if(e[t]&15||e[t+1]&15)throw Error(`Dictionary key/value flags must be zero`);te(n);let i={offset:t+2},a=g(e,i,`DictMalformed`),o=i.offset;for(let t=0;t<a;t++)o=x(n,e,o,`DictMalformed`),o=x(r,e,o,`DictMalformed`);return o-t}function x(e,t,n,r){let i=_(e);if(i>=0)return v(t,n,i),n+i;switch(e){case 12:case 13:{let e={offset:n},i=g(t,e,r);return v(t,e.offset,i),e.offset+i}case 11:{let e={offset:n},i=g(t,e,r);return v(t,e.offset,i),e.offset+i}case 9:return n+y(t,n);case 10:return n+b(t,n);default:throw Error(`Unsupported Teleport type ${o[e]}`)}}function re(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function S(e){return e instanceof Uint8Array?e:new Uint8Array(e)}let ie=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Opus=1]=`Opus`,e[e.Mp3=2]=`Mp3`,e[e.RawPcm16=3]=`RawPcm16`,e}({}),ae=function(e){return e[e.Unknown=0]=`Unknown`,e[e.MobileWeb=1]=`MobileWeb`,e[e.MobileApp=2]=`MobileApp`,e[e.DesktopWeb=3]=`DesktopWeb`,e[e.DesktopApp=4]=`DesktopApp`,e}({}),oe=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Backend=2]=`Backend`,e[e.Server=4]=`Server`,e[e.Plugin=8]=`Plugin`,e[e.Browser=16]=`Browser`,e[e.Native=32]=`Native`,e}({}),se=function(e){return e[e.Unknown=0]=`Unknown`,e[e.MessagePack=1]=`MessagePack`,e[e.MemoryPack=2]=`MemoryPack`,e[e.Json=4]=`Json`,e[e.Teleport=8]=`Teleport`,e[e.All=15]=`All`,e}({}),ce=function(e){return e[e.Css=0]=`Css`,e[e.Flutter=1]=`Flutter`,e}({}),le=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Machine=1]=`Machine`,e[e.Human=2]=`Human`,e}({}),ue=function(e){return e[e.Unknown=0]=`Unknown`,e[e.H264=1]=`H264`,e[e.Vp8=2]=`Vp8`,e[e.Vp9=3]=`Vp9`,e[e.Av1=4]=`Av1`,e}({}),de=function(e){return e[e.Unknown=0]=`Unknown`,e[e.DotNet=1]=`DotNet`,e[e.TypeScript=2]=`TypeScript`,e[e.Cpp=3]=`Cpp`,e[e.Dart=4]=`Dart`,e[e.Rust=5]=`Rust`,e}({}),fe=function(e){return e[e.Local=0]=`Local`,e[e.Cloud=1]=`Cloud`,e}({}),C=function(e){return e[e.NONE=0]=`NONE`,e[e.CONSTANT_GROUP_BITS=15]=`CONSTANT_GROUP_BITS`,e[e.CONSTANT_GROUP_OFFSET=16]=`CONSTANT_GROUP_OFFSET`,e[e.GROUP_CORE=65536]=`GROUP_CORE`,e[e.CORE_AUTH_RESPONSE=65537]=`CORE_AUTH_RESPONSE`,e[e.CORE_AUTH_TICKET=65538]=`CORE_AUTH_TICKET`,e[e.CORE_GLOBAL_STATE=65539]=`CORE_GLOBAL_STATE`,e[e.CORE_ON_SERVER_STATUS_PING=65540]=`CORE_ON_SERVER_STATUS_PING`,e[e.CORE_ON_USER_JOINED=65541]=`CORE_ON_USER_JOINED`,e[e.CORE_ON_USER_LEFT=65542]=`CORE_ON_USER_LEFT`,e[e.CORE_ON_CLIENT_JOINED=65543]=`CORE_ON_CLIENT_JOINED`,e[e.CORE_ON_CLIENT_LEFT=65544]=`CORE_ON_CLIENT_LEFT`,e[e.CORE_ON_SERVER_STARTED=65545]=`CORE_ON_SERVER_STARTED`,e[e.CORE_ON_SERVER_STOPPED=65546]=`CORE_ON_SERVER_STOPPED`,e[e.CORE_ON_SERVER_STOPPING=65547]=`CORE_ON_SERVER_STOPPING`,e[e.CORE_ON_CLIENT_READY=65548]=`CORE_ON_CLIENT_READY`,e[e.CORE_CLIENT_READY=65549]=`CORE_CLIENT_READY`,e[e.CORE_SERVER_INIT=65550]=`CORE_SERVER_INIT`,e[e.CORE_ON_PLUGIN_RELOADED=65551]=`CORE_ON_PLUGIN_RELOADED`,e[e.CORE_DYNAMIC_CONFIG=65555]=`CORE_DYNAMIC_CONFIG`,e[e.CORE_PROXY_RPC_AUTH_TICKET=65556]=`CORE_PROXY_RPC_AUTH_TICKET`,e[e.CORE_UPDATE_CLIENT_CONTEXT=65558]=`CORE_UPDATE_CLIENT_CONTEXT`,e[e.CORE_BACKGROUND_WORK_ACTIVE=65559]=`CORE_BACKGROUND_WORK_ACTIVE`,e[e.CORE_RESET_IDLE=65560]=`CORE_RESET_IDLE`,e[e.CORE_CLIENT_DISCONNECTING=65561]=`CORE_CLIENT_DISCONNECTING`,e[e.CORE_ON_APP_READY=65562]=`CORE_ON_APP_READY`,e[e.CORE_ON_FRONTEND_RELOADED=65563]=`CORE_ON_FRONTEND_RELOADED`,e[e.CORE_ON_USER_DATA_ERASED=65564]=`CORE_ON_USER_DATA_ERASED`,e[e.CORE_WEBRTC_OFFER=65566]=`CORE_WEBRTC_OFFER`,e[e.CORE_WEBRTC_ANSWER=65567]=`CORE_WEBRTC_ANSWER`,e[e.CORE_WEBRTC_ICE_CANDIDATE=65568]=`CORE_WEBRTC_ICE_CANDIDATE`,e[e.CORE_WEBRTC_READY=65569]=`CORE_WEBRTC_READY`,e[e.CORE_WEBRTC_AUDIO_SEGMENT=65570]=`CORE_WEBRTC_AUDIO_SEGMENT`,e[e.CORE_WEBRTC_TRACK_MAP=65571]=`CORE_WEBRTC_TRACK_MAP`,e[e.CORE_WEBRTC_VIDEO_CAPTURE=65572]=`CORE_WEBRTC_VIDEO_CAPTURE`,e[e.CORE_WEBRTC_ICE_SERVERS_REQUEST=65573]=`CORE_WEBRTC_ICE_SERVERS_REQUEST`,e[e.CORE_WEBRTC_ICE_SERVERS_RESPONSE=65574]=`CORE_WEBRTC_ICE_SERVERS_RESPONSE`,e[e.CORE_WEBRTC_CLOSE=65575]=`CORE_WEBRTC_CLOSE`,e[e.CORE_RELAY_AGENT_AUTH=65576]=`CORE_RELAY_AGENT_AUTH`,e[e.CORE_RELAY_AGENT_AUTH_RESULT=65577]=`CORE_RELAY_AGENT_AUTH_RESULT`,e[e.CORE_RELAY_HEARTBEAT=65578]=`CORE_RELAY_HEARTBEAT`,e[e.CORE_RELAY_TCP_CONNECTION_OPENED=65579]=`CORE_RELAY_TCP_CONNECTION_OPENED`,e[e.CORE_RELAY_TCP_CONNECTION_CLOSED=65580]=`CORE_RELAY_TCP_CONNECTION_CLOSED`,e[e.CORE_RELAY_TCP_DATA=65581]=`CORE_RELAY_TCP_DATA`,e[e.CORE_RELAY_UDP_DATA=65582]=`CORE_RELAY_UDP_DATA`,e[e.CORE_RELAY_ADD_TUNNEL=65583]=`CORE_RELAY_ADD_TUNNEL`,e[e.CORE_RELAY_TUNNEL_ADDED=65584]=`CORE_RELAY_TUNNEL_ADDED`,e[e.CORE_RELAY_REMOVE_TUNNEL=65585]=`CORE_RELAY_REMOVE_TUNNEL`,e[e.CORE_IKON_SERVER_ENDPOINT_HOST_INFO=65586]=`CORE_IKON_SERVER_ENDPOINT_HOST_INFO`,e[e.CORE_CLIENT_INITIALIZATION=65587]=`CORE_CLIENT_INITIALIZATION`,e[e.CORE_CLIENT_LIFECYCLE_BATCH=65588]=`CORE_CLIENT_LIFECYCLE_BATCH`,e[e.CORE_APP_CONFIG=65589]=`CORE_APP_CONFIG`,e[e.GROUP_KEEPALIVE=131072]=`GROUP_KEEPALIVE`,e[e.KEEPALIVE_REQUEST=131073]=`KEEPALIVE_REQUEST`,e[e.KEEPALIVE_RESPONSE=131074]=`KEEPALIVE_RESPONSE`,e[e.GROUP_EVENTS=262144]=`GROUP_EVENTS`,e[e.EVENTS_PROFILE_UPDATE=262145]=`EVENTS_PROFILE_UPDATE`,e[e.EVENTS_SPEECH_PLAYBACK_COMPLETE=262147]=`EVENTS_SPEECH_PLAYBACK_COMPLETE`,e[e.GROUP_ANALYTICS=524288]=`GROUP_ANALYTICS`,e[e.ANALYTICS_LOGS=524289]=`ANALYTICS_LOGS`,e[e.ANALYTICS_EVENTS=524290]=`ANALYTICS_EVENTS`,e[e.ANALYTICS_USAGES=524291]=`ANALYTICS_USAGES`,e[e.ANALYTICS_USAGE=524292]=`ANALYTICS_USAGE`,e[e.ANALYTICS_SPECIAL_LOG=524293]=`ANALYTICS_SPECIAL_LOG`,e[e.ANALYTICS_PROCESSING_UPDATE=524294]=`ANALYTICS_PROCESSING_UPDATE`,e[e.ANALYTICS_REACTIVE_PROCESSING_UPDATE=524295]=`ANALYTICS_REACTIVE_PROCESSING_UPDATE`,e[e.ANALYTICS_IKON_PROXY_SERVER_STATS=524296]=`ANALYTICS_IKON_PROXY_SERVER_STATS`,e[e.ANALYTICS_IKON_RELAY_SERVER_STATS=524297]=`ANALYTICS_IKON_RELAY_SERVER_STATS`,e[e.ANALYTICS_IKON_TURN_SERVER_STATS=524298]=`ANALYTICS_IKON_TURN_SERVER_STATS`,e[e.ANALYTICS_IKON_HOST_SERVER_STATS=524299]=`ANALYTICS_IKON_HOST_SERVER_STATS`,e[e.GROUP_ACTIONS=1048576]=`GROUP_ACTIONS`,e[e.ACTION_CALL=1048577]=`ACTION_CALL`,e[e.ACTION_ACTIVE=1048578]=`ACTION_ACTIVE`,e[e.ACTION_TEXT_OUTPUT=1048579]=`ACTION_TEXT_OUTPUT`,e[e.ACTION_TEXT_OUTPUT_DELTA=1048580]=`ACTION_TEXT_OUTPUT_DELTA`,e[e.ACTION_TEXT_OUTPUT_DELTA_FULL=1048581]=`ACTION_TEXT_OUTPUT_DELTA_FULL`,e[e.ACTION_SET_STATE=1048582]=`ACTION_SET_STATE`,e[e.ACTION_TAP=1048583]=`ACTION_TAP`,e[e.ACTION_PAN=1048584]=`ACTION_PAN`,e[e.ACTION_ZOOM=1048585]=`ACTION_ZOOM`,e[e.ACTION_OPEN_EXTERNAL_URL=1048592]=`ACTION_OPEN_EXTERNAL_URL`,e[e.ACTION_FUNCTION_REGISTER=1048600]=`ACTION_FUNCTION_REGISTER`,e[e.ACTION_FUNCTION_CALL=1048601]=`ACTION_FUNCTION_CALL`,e[e.ACTION_FUNCTION_RESULT=1048602]=`ACTION_FUNCTION_RESULT`,e[e.ACTION_GENERATE_ANSWER=1048603]=`ACTION_GENERATE_ANSWER`,e[e.ACTION_REGENERATE_ANSWER=1048604]=`ACTION_REGENERATE_ANSWER`,e[e.ACTION_CLEAR_STATE=1048606]=`ACTION_CLEAR_STATE`,e[e.ACTION_CLASSIFICATION_RESULT=1048609]=`ACTION_CLASSIFICATION_RESULT`,e[e.ACTION_AUDIO_STOP=1048610]=`ACTION_AUDIO_STOP`,e[e.ACTION_CALL_TEXT=1048611]=`ACTION_CALL_TEXT`,e[e.ACTION_CANCEL_GENERATION=1048613]=`ACTION_CANCEL_GENERATION`,e[e.ACTION_SPEECH_RECOGNIZED=1048615]=`ACTION_SPEECH_RECOGNIZED`,e[e.ACTION_CALL_RESULT=1048616]=`ACTION_CALL_RESULT`,e[e.ACTION_DOWNLOAD=1048618]=`ACTION_DOWNLOAD`,e[e.ACTION_PLAY_SOUND=1048621]=`ACTION_PLAY_SOUND`,e[e.ACTION_STOP_SOUND=1048623]=`ACTION_STOP_SOUND`,e[e.ACTION_START_RECORDING=1048624]=`ACTION_START_RECORDING`,e[e.ACTION_STOP_RECORDING=1048625]=`ACTION_STOP_RECORDING`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM=1048627]=`ACTION_FUNCTION_ENUMERATION_ITEM`,e[e.ACTION_FUNCTION_ENUMERATION_END=1048628]=`ACTION_FUNCTION_ENUMERATION_END`,e[e.ACTION_FUNCTION_CANCEL=1048629]=`ACTION_FUNCTION_CANCEL`,e[e.ACTION_FUNCTION_DISPOSE=1048630]=`ACTION_FUNCTION_DISPOSE`,e[e.ACTION_FUNCTION_ERROR=1048631]=`ACTION_FUNCTION_ERROR`,e[e.ACTION_FUNCTION_ACK=1048632]=`ACTION_FUNCTION_ACK`,e[e.ACTION_FUNCTION_AWAITING_APPROVAL=1048633]=`ACTION_FUNCTION_AWAITING_APPROVAL`,e[e.ACTION_FUNCTION_APPROVAL_REQUIRED=1048634]=`ACTION_FUNCTION_APPROVAL_REQUIRED`,e[e.ACTION_FUNCTION_APPROVAL_RESPONSE=1048635]=`ACTION_FUNCTION_APPROVAL_RESPONSE`,e[e.UI_UPDATE_ACK=1048636]=`UI_UPDATE_ACK`,e[e.ACTION_CALL2=1048637]=`ACTION_CALL2`,e[e.ACTION_FUNCTION_REGISTER_BATCH=1048638]=`ACTION_FUNCTION_REGISTER_BATCH`,e[e.ACTION_CUSTOM_USER_MESSAGE=1048641]=`ACTION_CUSTOM_USER_MESSAGE`,e[e.ACTION_URL_CHANGED=1048642]=`ACTION_URL_CHANGED`,e[e.ACTION_FILE_UPLOAD_PRE_START2=1048643]=`ACTION_FILE_UPLOAD_PRE_START2`,e[e.ACTION_FILE_UPLOAD_PRE_START_RESPONSE2=1048644]=`ACTION_FILE_UPLOAD_PRE_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_START2=1048645]=`ACTION_FILE_UPLOAD_START2`,e[e.ACTION_FILE_UPLOAD_START_RESPONSE2=1048646]=`ACTION_FILE_UPLOAD_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_DATA2=1048647]=`ACTION_FILE_UPLOAD_DATA2`,e[e.ACTION_FILE_UPLOAD_ACK2=1048648]=`ACTION_FILE_UPLOAD_ACK2`,e[e.ACTION_FILE_UPLOAD_END2=1048649]=`ACTION_FILE_UPLOAD_END2`,e[e.ACTION_FILE_UPLOAD_COMPLETE2=1048650]=`ACTION_FILE_UPLOAD_COMPLETE2`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM_BATCH=1048651]=`ACTION_FUNCTION_ENUMERATION_ITEM_BATCH`,e[e.ACTION_CALL_ACK=1048652]=`ACTION_CALL_ACK`,e[e.ACTION_TRIGGER_CRON=1048653]=`ACTION_TRIGGER_CRON`,e[e.ACTION_RESULT=1048654]=`ACTION_RESULT`,e[e.UI_RESYNC_REQUEST=1048655]=`UI_RESYNC_REQUEST`,e[e.ACTION_USER_DATA_ERASURE=1048656]=`ACTION_USER_DATA_ERASURE`,e[e.GROUP_UI=2097152]=`GROUP_UI`,e[e.UI_STREAM_BEGIN=2097153]=`UI_STREAM_BEGIN`,e[e.UI_STREAM_END=2097154]=`UI_STREAM_END`,e[e.UI_STYLES=2097188]=`UI_STYLES`,e[e.UI_UPDATE=2097190]=`UI_UPDATE`,e[e.UI_STYLES_BATCH=2097192]=`UI_STYLES_BATCH`,e[e.UI_STYLES_DELETE=2097193]=`UI_STYLES_DELETE`,e[e.GROUP_COMMON=4128768]=`GROUP_COMMON`,e[e.GROUP_AUDIO=4194304]=`GROUP_AUDIO`,e[e.AUDIO_STREAM_BEGIN=4194305]=`AUDIO_STREAM_BEGIN`,e[e.AUDIO_STREAM_END=4194306]=`AUDIO_STREAM_END`,e[e.AUDIO_FRAME=4194307]=`AUDIO_FRAME`,e[e.AUDIO_FRAME_VOLUME=4194308]=`AUDIO_FRAME_VOLUME`,e[e.AUDIO_FRAME2=4194309]=`AUDIO_FRAME2`,e[e.AUDIO_SHAPE_FRAME=4194310]=`AUDIO_SHAPE_FRAME`,e[e.AUDIO_PLAYBACK_REPORT=4194311]=`AUDIO_PLAYBACK_REPORT`,e[e.GROUP_VIDEO=8388608]=`GROUP_VIDEO`,e[e.VIDEO_STREAM_BEGIN=8388609]=`VIDEO_STREAM_BEGIN`,e[e.VIDEO_STREAM_END=8388610]=`VIDEO_STREAM_END`,e[e.VIDEO_FRAME=8388611]=`VIDEO_FRAME`,e[e.VIDEO_REQUEST_IDR_FRAME=8388612]=`VIDEO_REQUEST_IDR_FRAME`,e[e.VIDEO_INVALIDATE_FRAME=8388613]=`VIDEO_INVALIDATE_FRAME`,e[e.GROUP_ALL=16711680]=`GROUP_ALL`,e[e.GROUP_APP_LOCAL=1073741824]=`GROUP_APP_LOCAL`,e[e.CONSTANT_GROUP_MASK=2147418112]=`CONSTANT_GROUP_MASK`,e}({});function pe(e){let t={};return me(t),e&&Object.assign(t,e),t}function me(e){return e.StreamId=``,e.Description=``,e.SourceType=``,e.Codec=ie.Unknown,e.CodecDetails=``,e.SampleRate=0,e.Channels=0,e.ShapeSets=void 0,e.CorrelationId=void 0,e}function he(e,t){let n=t??pe();return me(n),ge(e,n),n}function ge(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 265814330:if(n.isNull){t.ShapeSets=void 0;break}t.ShapeSets=_e(n.asArray());break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 2431514951:if(n.isNull)throw Error();t.Channels=n.asInt32();break;case 2514959030:if(n.isNull){t.CorrelationId=void 0;break}t.CorrelationId=n.asString();break;case 2745379226:if(n.isNull)throw Error();t.CodecDetails=n.asString();break;case 3282782683:if(n.isNull)throw Error();t.SourceType=n.asString();break;case 3284746250:if(n.isNull)throw Error();t.Codec=n.asInt32();break;case 4101844078:if(n.isNull)throw Error();t.SampleRate=n.asInt32()}}function _e(e){let t=[],n;for(;(n=e.next())!==null;)t.push(be(n.asObject()));return t}function ve(e){let t={};return ye(t),e&&Object.assign(t,e),t}function ye(e){return e.SetId=0,e.Name=``,e.ShapeNames=[],e}function be(e,t){let n=t??ve();return ye(n),xe(e,n),n}function xe(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 1107713536:if(n.isNull)throw Error();t.Name=n.asString();break;case 1154362099:if(n.isNull)throw Error();t.SetId=n.asUInt32();break;case 1185721362:if(n.isNull)throw Error();t.ShapeNames=Se(n.asArray())}}function Se(e){let t=[],n;for(;(n=e.next())!==null;)t.push(n.asString());return t}function Ce(e){let t={};return we(t),e&&Object.assign(t,e),t}function we(e){return e.ContextType=oe.Unknown,e.UserType=le.Unknown,e.PayloadType=se.Unknown,e.Description=``,e.UserId=``,e.DeviceId=``,e.ProductId=``,e.VersionId=``,e.InstallId=``,e.Locale=``,e.SessionId=-1,e.IsInternal=!1,e.IsSnapshot=!1,e.SnapshotVariant=``,e.IsReady=!1,e.HasInput=!1,e.AuthSessionId=``,e.IsAnonymous=!1,e.IsGlobal=!1,e.ReceiveAllMessages=!1,e.PreciseJoinedAt=BigInt(0),e.UserAgent=``,e.ClientType=ae.Unknown,e.UniqueSessionId=``,e.Parameters=Object.create(null),e.SdkType=de.Unknown,e.SdkCapability=0,e.ViewportWidth=0,e.ViewportHeight=0,e.Theme=``,e.Timezone=``,e.IsTouchDevice=!1,e.InitialPath=``,e.StyleFormat=ce.Css,e.SupportsCompression=!0,e.IsSoftDisconnected=!1,e.SoftDisconnectAt=BigInt(0),e}function Te(e,t){let n=t??Ce();return we(n),Ee(e,n),n}function Ee(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 76337612:if(n.isNull)throw Error();t.DeviceId=n.asString();break;case 185396121:if(n.isNull)throw Error();t.InstallId=n.asString();break;case 250031587:if(n.isNull)throw Error();t.Theme=n.asString();break;case 388632637:if(n.isNull)throw Error();t.UserAgent=n.asString();break;case 417197284:if(n.isNull)throw Error();t.ContextType=n.asInt32();break;case 425972532:if(n.isNull)throw Error();t.SoftDisconnectAt=n.asUInt64();break;case 469070965:if(n.isNull)throw Error();t.HasInput=n.asBool();break;case 470595159:if(n.isNull)throw Error();t.UserType=n.asInt32();break;case 594855258:if(n.isNull)throw Error();t.InitialPath=n.asString();break;case 617065367:if(n.isNull)throw Error();t.IsSoftDisconnected=n.asBool();break;case 661691032:if(n.isNull)throw Error();t.SupportsCompression=n.asBool();break;case 781727218:if(n.isNull)throw Error();t.UserId=n.asString();break;case 834078886:if(n.isNull)throw Error();t.ProductId=n.asString();break;case 1043273762:if(n.isNull)throw Error();t.AuthSessionId=n.asString();break;case 1236999138:if(n.isNull)throw Error();t.ReceiveAllMessages=n.asBool();break;case 1286979607:if(n.isNull)throw Error();t.ViewportHeight=n.asInt32();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 1437068682:if(n.isNull)throw Error();t.SdkCapability=n.asInt32();break;case 1668375353:if(n.isNull)throw Error();t.IsSnapshot=n.asBool();break;case 1715899485:if(n.isNull)throw Error();t.Locale=n.asString();break;case 1719830747:if(n.isNull)throw Error();t.IsAnonymous=n.asBool();break;case 1942830531:if(n.isNull)throw Error();t.SdkType=n.asInt32();break;case 1999510636:if(n.isNull)throw Error();t.SessionId=n.asInt32();break;case 2033288346:if(n.isNull)throw Error();t.ViewportWidth=n.asInt32();break;case 2079864626:if(n.isNull)throw Error();t.PreciseJoinedAt=n.asUInt64();break;case 2142346422:if(n.isNull)throw Error();t.PayloadType=n.asInt32();break;case 2228539873:if(n.isNull)throw Error();t.StyleFormat=n.asInt32();break;case 2232517119:if(n.isNull)throw Error();t.IsTouchDevice=n.asBool();break;case 2388060749:if(n.isNull)throw Error();t.IsGlobal=n.asBool();break;case 2504065971:if(n.isNull)throw Error();t.SnapshotVariant=n.asString();break;case 2598291686:if(n.isNull)throw Error();t.VersionId=n.asString();break;case 2719718823:if(n.isNull)throw Error();t.UniqueSessionId=n.asString();break;case 2810953526:if(n.isNull)throw Error();t.ClientType=n.asInt32();break;case 2840065720:if(n.isNull)throw Error();t.IsReady=n.asBool();break;case 2885165957:if(n.isNull)throw Error();t.Parameters=De(n.asDictionary());break;case 3542818975:if(n.isNull)throw Error();t.Timezone=n.asString();break;case 3586157513:if(n.isNull)throw Error();t.IsInternal=n.asBool()}}function De(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=n.value.asString()}return t}function Oe(e){let t={};return ke(t),e&&Object.assign(t,e),t}function ke(e){return e.FunctionId=h.fromBytes(new Uint8Array(16)),e.FunctionName=``,e.Parameters=[],e.ResultTypeName=``,e.IsEnumerable=!1,e.EnumerableItemTypeName=``,e.IsCancellable=!1,e.Description=``,e.LlmInlineResult=!1,e.LlmCallOnlyOnce=!1,e.RequiresInstance=!1,e.Versions=[],e}function Ae(e,t){let n=t??Oe();return ke(n),je(e,n),n}function je(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 703025676:if(n.isNull)throw Error();t.ResultTypeName=n.asString();break;case 814454131:if(n.isNull)throw Error();t.FunctionName=n.asString();break;case 972460562:if(n.isNull)throw Error();t.EnumerableItemTypeName=n.asString();break;case 976255570:if(n.isNull)throw Error();t.FunctionId=n.asGuid();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 1479280922:if(n.isNull)throw Error();t.IsCancellable=n.asBool();break;case 1533537016:if(n.isNull)throw Error();t.RequiresInstance=n.asBool();break;case 1909301063:if(n.isNull)throw Error();t.Versions=Me(n.asArray());break;case 2274386296:if(n.isNull)throw Error();t.LlmInlineResult=n.asBool();break;case 2603556958:if(n.isNull)throw Error();t.IsEnumerable=n.asBool();break;case 2885165957:if(n.isNull)throw Error();t.Parameters=Ne(n.asArray());break;case 3568439632:if(n.isNull)throw Error();t.LlmCallOnlyOnce=n.asBool()}}function Me(e){let t=[],n;for(;(n=e.next())!==null;)t.push(n.asString());return t}function Ne(e){let t=[],n;for(;(n=e.next())!==null;)t.push(Ie(n.asObject()));return t}function Pe(e){let t={};return Fe(t),e&&Object.assign(t,e),t}function Fe(e){return e.ParameterIndex=0,e.ParameterName=``,e.TypeName=``,e.HasDefaultValue=!1,e.DefaultValueJson=``,e.DefaultValueData=new Uint8Array,e.IsEnumerable=!1,e.EnumerableItemTypeName=``,e.Description=``,e}function Ie(e,t){let n=t??Pe();return Fe(n),Le(e,n),n}function Le(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 607861992:if(n.isNull)throw Error();t.HasDefaultValue=n.asBool();break;case 894485888:if(n.isNull)throw Error();t.DefaultValueJson=n.asString();break;case 972460562:if(n.isNull)throw Error();t.EnumerableItemTypeName=n.asString();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 1883521406:if(n.isNull)throw Error();t.DefaultValueData=n.asBinary();break;case 2603556958:if(n.isNull)throw Error();t.IsEnumerable=n.asBool();break;case 3609695522:if(n.isNull)throw Error();t.TypeName=n.asString();break;case 4075263697:if(n.isNull)throw Error();t.ParameterName=n.asString();break;case 4257460908:if(n.isNull)throw Error();t.ParameterIndex=n.asInt32()}}function Re(e){let t={};return ze(t),e&&Object.assign(t,e),t}function ze(e){return e.MimeType=``,e.Value=new Uint8Array,e}function Be(e,t){let n=t??Re();return ze(n),Ve(e,n),n}function Ve(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 1405462580:if(n.isNull)throw Error();t.Value=n.asBinary();break;case 2968276160:if(n.isNull)throw Error();t.MimeType=n.asString()}}function He(e){let t={};return Ue(t),e&&Object.assign(t,e),t}function Ue(e){return e.Category=``,e}function We(e,t){let n=t??He();return Ue(n),Ge(e,n),n}function Ge(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 3612929027:if(n.isNull)throw Error();t.Category=n.asString()}}function Ke(e){let t={};return qe(t),e&&Object.assign(t,e),t}function qe(e){return e.StyleId=``,e.Style=Object.create(null),e}function Je(e,t){return Ye(c.create(e),t)}function Ye(e,t){let n=t??Ke();return qe(n),Xe(e,n),n}function Xe(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 979822885:if(n.isNull)throw Error();t.StyleId=n.asString();break;case 2374537704:if(n.isNull)throw Error();t.Style=Qe(n.asDictionary())}}async function Ze(e,t){return Je(await i(e,2097188,1),t)}function Qe(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=n.value.asString()}return t}function $e(e){let t={};return et(t),e&&Object.assign(t,e),t}function et(e){return e.Styles=[],e}function tt(e,t){return nt(c.create(e),t)}function nt(e,t){let n=t??$e();return et(n),rt(e,n),n}function rt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 2136687806:if(n.isNull)throw Error();t.Styles=at(n.asArray())}}async function it(e,t){return tt(await i(e,2097192,1),t)}function at(e){let t=[],n;for(;(n=e.next())!==null;)t.push(ct(n.asObject()));return t}function ot(e){let t={};return st(t),e&&Object.assign(t,e),t}function st(e){return e.StyleId=``,e.Style=Object.create(null),e}function ct(e,t){let n=t??ot();return st(n),lt(e,n),n}function lt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 979822885:if(n.isNull)throw Error();t.StyleId=n.asString();break;case 2374537704:if(n.isNull)throw Error();t.Style=ut(n.asDictionary())}}function ut(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=n.value.asString()}return t}function dt(e){let t={};return ft(t),e&&Object.assign(t,e),t}function ft(e){return e.StyleIds=[],e}function pt(e,t){return mt(c.create(e),t)}function mt(e,t){let n=t??dt();return ft(n),ht(e,n),n}function ht(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 1415642792:if(n.isNull)throw Error();t.StyleIds=_t(n.asArray())}}async function gt(e,t){return pt(await i(e,2097193,1),t)}function _t(e){let t=[],n;for(;(n=e.next())!==null;)t.push(n.asString());return t}function vt(e){let t={};return w(t),e&&Object.assign(t,e),t}function w(e){return e.Json=``,e.Payloads=Object.create(null),e}function yt(e,t){return bt(c.create(e),t)}function bt(e,t){let n=t??vt();return w(n),xt(e,n),n}function xt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 425183262:if(n.isNull)throw Error();t.Json=n.asString();break;case 653781469:if(n.isNull)throw Error();t.Payloads=Ct(n.asDictionary())}}async function St(e,t){return yt(await i(e,2097190,1),t)}function Ct(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Be(n.value.asObject())}return t}function T(e){let t={};return E(t),e&&Object.assign(t,e),t}function E(e){return e.StreamId=``,e.Description=``,e.SourceType=``,e.Codec=ue.H264,e.CodecDetails=``,e.Width=0,e.Height=0,e.Framerate=30,e.CorrelationId=void 0,e}function wt(e,t){let n=t??T();return E(n),Tt(e,n),n}function Tt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 164808083:if(n.isNull)throw Error();t.Framerate=n.asFloat64();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 2514959030:if(n.isNull){t.CorrelationId=void 0;break}t.CorrelationId=n.asString();break;case 2745379226:if(n.isNull)throw Error();t.CodecDetails=n.asString();break;case 2950031986:if(n.isNull)throw Error();t.Height=n.asInt32();break;case 3282782683:if(n.isNull)throw Error();t.SourceType=n.asString();break;case 3284746250:if(n.isNull)throw Error();t.Codec=n.asInt32();break;case 4065070594:if(n.isNull)throw Error();t.Width=n.asInt32()}}function Et(e){let t={};return Dt(t),e&&Object.assign(t,e),t}function Dt(e){return e.Clients=Object.create(null),e.Functions=Object.create(null),e.UIStreams=Object.create(null),e.AudioStreams=Object.create(null),e.VideoStreams=Object.create(null),e.SpaceId=``,e.IkonServerId=``,e.AppSessionId=``,e.SessionIdentityHash=``,e.SpaceUrl=``,e.SessionUrl=``,e.FirstUserId=``,e.PrimaryUserId=``,e.OrganisationName=``,e.SpaceName=``,e.ServerRunType=fe.Local,e.PublicAccess=!1,e.DebugMode=!1,e.retiredFields=void 0,e}function Ot(e,t){return kt(c.create(e),t)}function kt(e,t){let n=t??Et();return Dt(n),At(e,n),n}function At(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 620476198:if(n.isNull)throw Error();t.IkonServerId=n.asString();break;case 693643444:if(n.isNull)throw Error();t.FirstUserId=n.asString();break;case 1144553441:if(n.isNull)throw Error();t.Clients=Mt(n.asDictionary());break;case 1731742060:if(n.isNull)throw Error();t.AppSessionId=n.asString();break;case 1931178803:if(n.isNull)throw Error();t.SessionIdentityHash=n.asString();break;case 2191393509:if(n.isNull)throw Error();t.SessionUrl=n.asString();break;case 2563358196:if(n.isNull)throw Error();t.SpaceUrl=n.asString();break;case 3042922213:if(n.isNull)throw Error();t.PublicAccess=n.asBool();break;case 3064612128:if(n.isNull)throw Error();t.ServerRunType=n.asInt32();break;case 3219210453:if(n.isNull)throw Error();t.OrganisationName=n.asString();break;case 3504054055:if(n.isNull)throw Error();t.DebugMode=n.asBool();break;case 3678477544:if(n.isNull)throw Error();t.Functions=Nt(n.asDictionary());break;case 3696445035:if(n.isNull)throw Error();t.UIStreams=Pt(n.asDictionary());break;case 3707543140:if(n.isNull)throw Error();t.SpaceId=n.asString();break;case 3712281496:if(n.isNull)throw Error();t.PrimaryUserId=n.asString();break;case 3895362455:if(n.isNull)throw Error();t.AudioStreams=Ft(n.asDictionary());break;case 3897397815:if(n.isNull)throw Error();t.VideoStreams=It(n.asDictionary());break;case 4225107827:if(n.isNull)throw Error();t.SpaceName=n.asString();break;case 976837618:if(n.isNull)break;(t.retiredFields??={}).SessionHash=n.asString();break;case 2271236852:if(n.isNull)break;(t.retiredFields??={}).SessionChannelUrl=n.asString();break;case 2277643855:if(n.isNull)break;(t.retiredFields??={}).ChannelUrl=n.asString();break;case 3914217035:if(n.isNull)break;(t.retiredFields??={}).ServerSessionId=n.asString()}}async function jt(e,t){return Ot(await i(e,65539,11),t)}function Mt(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asInt32();t[e]=Te(n.value.asObject())}return t}function Nt(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asInt32();t[e]=Lt(n.value.asArray())}return t}function Pt(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Bt(n.value.asObject())}return t}function Ft(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Wt(n.value.asObject())}return t}function It(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Jt(n.value.asObject())}return t}function Lt(e){let t=[],n;for(;(n=e.next())!==null;)t.push(Ae(n.asObject()));return t}function Rt(e){let t={};return zt(t),e&&Object.assign(t,e),t}function zt(e){return e.StreamId=``,e.ClientSessionId=0,e.TrackId=0,e.Info=He(),e}function Bt(e,t){let n=t??Rt();return zt(n),Vt(e,n),n}function Vt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 325678206:if(n.isNull)throw Error();t.ClientSessionId=n.asInt32();break;case 3469892363:if(n.isNull)throw Error();t.TrackId=n.asInt32();break;case 3645544153:if(n.isNull)throw Error();t.Info=We(n.asObject())}}function Ht(e){let t={};return Ut(t),e&&Object.assign(t,e),t}function Ut(e){return e.StreamId=``,e.ClientSessionId=0,e.TrackId=0,e.Info=pe(),e}function Wt(e,t){let n=t??Ht();return Ut(n),Gt(e,n),n}function Gt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 325678206:if(n.isNull)throw Error();t.ClientSessionId=n.asInt32();break;case 3469892363:if(n.isNull)throw Error();t.TrackId=n.asInt32();break;case 3645544153:if(n.isNull)throw Error();t.Info=he(n.asObject())}}function Kt(e){let t={};return qt(t),e&&Object.assign(t,e),t}function qt(e){return e.StreamId=``,e.ClientSessionId=0,e.TrackId=0,e.Info=T(),e}function Jt(e,t){let n=t??Kt();return qt(n),Yt(e,n),n}function Yt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 325678206:if(n.isNull)throw Error();t.ClientSessionId=n.asInt32();break;case 3469892363:if(n.isNull)throw Error();t.TrackId=n.asInt32();break;case 3645544153:if(n.isNull)throw Error();t.Info=wt(n.asObject())}}function D(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Xt(e){let t={},n=Object.keys(e);for(let r=0;r<n.length;r++){let i=n[r];t[i]=e[i]}return t}function Zt(e,t,n,r){if(!(e===void 0&&r)){if(Array.isArray(e)){let r=[];for(let i=0;i<e.length;i++){let a=e[i];if(typeof a!=`string`)throw Error(`Invalid styleIds entry at ${t}.styleIds[${i}] for element ${n}`);let o=a.trim();o.length!==0&&r.push(o)}return r}if(e!=null)throw Error(`Invalid styleIds for element ${n}`);return[]}}function O(e,t){if(!e||typeof e!=`object`)throw Error(`Invalid UI node at ${t}`);let n=e.Id,r=e.Type,i=e.Props,a=e.Children,o=e.StyleIds;if(typeof n!=`string`)throw Error(`Invalid or missing node id at ${t}`);if(typeof r!=`string`)throw Error(`Invalid or missing node type for ${n}`);let s={};if(i!=null){if(!D(i))throw Error(`Invalid props for node ${n}`);s=Xt(i)}let c=[];Array.isArray(a)&&(c=a.map((e,n)=>O(e??{},`${t}.children[${n}]`)));let l=Zt(o,t,n,!1),u=typeof e.SourceMarker==`string`?e.SourceMarker:void 0;return{id:n,type:r,props:s,children:c,styleIds:l??[],...u?{sourceMarker:u}:{}}}function Qt(e,t){if(!D(e))throw Error(`Invalid text delta at ${t}`);let n=e.NodeId,r=e.PropertyName,i=e.Start,a=e.End,o=e.InsertedText;if(typeof n!=`string`||n.length===0)throw Error(`Invalid text delta node id at ${t}`);if(typeof r!=`string`||r.length===0)throw Error(`Invalid text delta property name at ${t}`);if(typeof i!=`number`||!Number.isFinite(i))throw Error(`Invalid text delta start at ${t}`);if(typeof o!=`string`)throw Error(`Invalid text delta inserted text at ${t}`);let s;if(typeof a==`number`){if(!Number.isFinite(a))throw Error(`Invalid text delta end at ${t}`);s=a}else if(a!=null)throw Error(`Invalid text delta end at ${t}`);return{nodeId:n,propertyName:r,start:i,end:s,insertedText:o}}function $t(e,t){if(!D(e))throw Error(`Invalid child insert at ${t}`);let n=e.Index,r=e.Node;if(typeof n!=`number`||!Number.isFinite(n))throw Error(`Invalid child insert index at ${t}`);if(!D(r))throw Error(`Invalid child insert node at ${t}`);return{index:n,node:O(r,`${t}.node`)}}function en(e,t){if(!D(e))throw Error(`Invalid child move at ${t}`);let n=e.NodeId,r=e.FromIndex,i=e.ToIndex;if(typeof n!=`string`||n.length===0)throw Error(`Invalid child move nodeId at ${t}`);if(typeof r!=`number`||!Number.isFinite(r))throw Error(`Invalid child move fromIndex at ${t}`);if(typeof i!=`number`||!Number.isFinite(i))throw Error(`Invalid child move toIndex at ${t}`);return{nodeId:n,fromIndex:r,toIndex:i}}function tn(e,t){if(!D(e))throw Error(`Invalid child remove at ${t}`);let n=e.NodeId,r=e.Index;if(typeof n!=`string`||n.length===0)throw Error(`Invalid child remove nodeId at ${t}`);if(typeof r!=`number`||!Number.isFinite(r))throw Error(`Invalid child remove index at ${t}`);return{nodeId:n,index:r}}function nn(e,t){if(!D(e))throw Error(`Invalid node change at ${t}`);let n=e.nodeId;if(typeof n!=`string`||n.length===0)throw Error(`Invalid node change nodeId at ${t}`);let r=Array.isArray(e.inserts)?e.inserts.map((e,n)=>$t(e??{},`${t}.inserts[${n}]`)):void 0,i=Array.isArray(e.moves)?e.moves.map((e,n)=>en(e??{},`${t}.moves[${n}]`)):void 0,a=Array.isArray(e.removals)?e.removals.map((e,n)=>tn(e??{},`${t}.removals[${n}]`)):void 0,o;if(D(e.changedProps)){o=new Map;for(let[t,n]of Object.entries(e.changedProps)){if(!D(n))continue;let e=n.New;e==null?o.set(t,void 0):D(e)?o.set(t,Xt(e)):o.set(t,e)}}let s=Array.isArray(e.textUpdates)?e.textUpdates.map((e,n)=>Qt(e??{},`${t}.textUpdates[${n}]`)):void 0,c=e.styleIds,l=c===void 0?void 0:Zt(c,t,n,!0);return{nodeId:n,...r&&r.length>0?{inserts:r}:{},...i&&i.length>0?{moves:i}:{},...a&&a.length>0?{removals:a}:{},...o&&o.size>0?{changedProps:o}:{},...s&&s.length>0?{textUpdates:s}:{},...l===void 0?{}:{styleIds:l}}}function rn(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,r);return t}function an(e,t,n){if(!e||typeof e!=`object`)throw new k(`UI update graph is missing`);let r=O(e,`graph`);if(r.type!==`root`)throw new k(`UI update root element must have type "root"`);return{type:`full`,version:n,root:r,metadata:sn(r.props,t)}}function on(e,t,n){if(!Array.isArray(e))throw new k(`UI diff changes must be an array`);if(!D(t))throw new k(`UI diff metadata must be an object`);let r=t.viewId;if(typeof r!=`string`||r.length===0)throw new k(`UI diff metadata is missing viewId`);let i=e.map((e,t)=>nn(e??{},`changes[${t}]`)),a=typeof t.isUpdate==`boolean`?t.isUpdate:void 0;return{type:`diff`,version:n,changes:i,metadata:{viewId:r,...a===void 0?{}:{isUpdate:a}}}}function sn(e,t){let n=e.viewId;if(typeof n!=`string`||n.length===0)throw new k(`UI update root is missing viewId`);let r=n,i=typeof e.isUpdate==`boolean`?e.isUpdate:void 0;return D(t)&&(typeof t.viewId==`string`&&t.viewId.length>0&&(r=t.viewId),typeof t.isUpdate==`boolean`&&(i=t.isUpdate)),{viewId:r,...i===void 0?{}:{isUpdate:i}}}var k=class extends Error{causeError;constructor(e,t){super(e),this.causeError=t,this.name=`UiUpdateParseError`,t instanceof Error&&(this.stack=t.stack)}};function A(e){let t;try{t=JSON.parse(e.Json)}catch(e){throw new k(`Failed to parse UIUpdate.Json payload`,e)}if(!t||typeof t!=`object`)throw new k(`UI update snapshot must be an object`);let{type:n,version:r}=t;if(n!==`full`&&n!==`diff`)throw new k(`Unknown UI update type: ${String(n)}`);if(typeof r!=`number`)throw new k(`UI update version must be a number`);return{snapshot:n===`full`?an(t.graph,t.metadata,r):on(t.changes,t.metadata,r),payloads:e.Payloads?rn(e.Payloads):new Map}}const cn=new Map,ln={0:`DEBUG`,1:`INFO`,2:`WARN`,3:`ERROR`,4:`NONE`};function un(e,t){return`[${e}] ${t}`}function j(e,t,n,r){let i={timestamp:new Date().toISOString(),level:e,levelName:ln[e],component:t,message:n,args:r};for(let[t,n]of cn)if(e>=(n?.minLevel??2))try{t(i)}catch{}if(1<=e){let i=un(t,n);switch(e){case 0:console.debug(i,...r);break;case 1:console.info(i,...r);break;case 2:console.warn(i,...r);break;case 3:console.error(i,...r)}}}function dn(e){return{debug(t,...n){j(0,e,t,n)},info(t,...n){j(1,e,t,n)},warn(t,...n){j(2,e,t,n)},error(t,...n){j(3,e,t,n)}}}var fn=class{cache=new Map;getHandler(e,t,n){let r=`${e}:${t}`,i=this.cache.get(r);return i||(i=()=>n(t),this.cache.set(r,i)),i}getHandlerWithPayload(e,t,n){let r=`${e}:${t}:payload`,i=this.cache.get(r);return i||(i=e=>n(t,e),this.cache.set(r,i)),i}getBooleanHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getStringHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getNumberHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getNumberArrayHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getNullableBooleanHandler(e,t,n){let r=`${e}:${t}:nullable-bool`,i=this.cache.get(r);return i||(i=e=>n(t,e??null),this.cache.set(r,i)),i}invalidateNode(e){let t=`${e}:`;for(let e of this.cache.keys())e.startsWith(t)&&this.cache.delete(e)}invalidateHandler(e,t){this.cache.delete(`${e}:${t}`),this.cache.delete(`${e}:${t}:payload`),this.cache.delete(`${e}:${t}:nullable-bool`)}clear(){this.cache.clear()}get size(){return this.cache.size}};const pn=dn(`UiStreamStore`);var mn=class{views=new Map;listeners=new Set;payloads=new Map;snapshotMode=!1;snapshot={views:new Map,payloads:new Map,version:-1};rootViewId;nodeListeners=new Map;changedNodeIds=new Set;nodeVersions=new Map;structureChanged=!1;resyncNeeded=!1;viewsDirty=!0;payloadsDirty=!0;handlerCache=new fn;nodeIndex=new Map;indexedViews;apply(e){if(this.snapshotMode){if(e.snapshot.type!==`full`)return!1;this.snapshotMode=!1,this.views.clear(),this.payloads.clear(),this.rootViewId=void 0,this.viewsDirty=!0,this.payloadsDirty=!0,this.snapshot={views:new Map,payloads:new Map,version:-1}}let{snapshot:t,payloads:n}=e,{metadata:r}=t,{viewId:i}=r,a=this.views.get(i);a||(a={version:0},this.views.set(i,a));let o=t.type===`diff`&&r.isUpdate===!0;if(t.version<a.version||t.type===`diff`&&t.version>a.version+1)return this.resyncNeeded=!0,!1;if(t.version===a.version&&!o)return!1;let s=!1;this.rootViewId||(this.rootViewId=i,s=!0,this.structureChanged=!0);let c=a.root;if(t.type===`full`)a.root=t.root,a.version=t.version,s=!0,this.viewsDirty=!0,this.structureChanged=!0,t.root&&N(t.root,this.changedNodeIds);else{if(!c)return this.resyncNeeded=!0,!1;let e=gn(c,t.changes);e===c?a.root=e:(a.root=e,s=!0,this.viewsDirty=!0,I(c,e,this.changedNodeIds)),a.version=t.version}for(let[e,t]of n)this.payloads.get(e)!==t&&(this.payloads.set(e,t),s=!0,this.payloadsDirty=!0);return s?(this.commitSnapshot(),this.notify(),!0):(a.version=t.version,!1)}enterSnapshotMode(){this.snapshotMode=!0}consumeResyncNeeded(){let e=this.resyncNeeded;return this.resyncNeeded=!1,e}replaceFromWire(e){let t={rootViewId:e.rootViewId,views:new Map(e.views),payloads:new Map(e.payloads),version:e.version};return this.replaceSnapshot(t)}patchFromOp(e){this.snapshotMode=!0;let t=e.expectedBaseVersion;if(t!==void 0&&this.snapshot.version!==t)return!1;let n=!1,r=null,i=null,a=()=>(r||=new Map(this.snapshot.views),r),o=()=>(i||=new Map(this.snapshot.payloads),i);if(e.deleteViews&&e.deleteViews.length>0)for(let t of e.deleteViews)a().delete(t)&&(n=!0,this.structureChanged=!0);if(e.upsertViews&&e.upsertViews.length>0)for(let[t,r]of e.upsertViews){let e=a(),i=e.get(t);i!==r&&(e.set(t,r),n=!0,i?I(i,r,this.changedNodeIds):(N(r,this.changedNodeIds),this.structureChanged=!0))}if(e.deletePayloads&&e.deletePayloads.length>0)for(let t of e.deletePayloads)o().delete(t)&&(n=!0);if(e.upsertPayloads&&e.upsertPayloads.length>0)for(let[t,r]of e.upsertPayloads){let e=o();e.get(t)!==r&&(e.set(t,r),n=!0)}let s=e.rootViewId??this.snapshot.rootViewId;s!==this.snapshot.rootViewId&&(n=!0,this.structureChanged=!0);let c=e.nextVersion;if(c!==this.snapshot.version&&(n=!0),!n)return this.snapshot={...this.snapshot,version:c},!1;for(let e of this.changedNodeIds)this.nodeVersions.set(e,(this.nodeVersions.get(e)??0)+1);return this.snapshot={rootViewId:s,views:r??new Map(this.snapshot.views),payloads:i??new Map(this.snapshot.payloads),version:c},this.notify(),!0}replaceSnapshot(e){this.snapshotMode=!0;let t=this.snapshot,n=t.version!==e.version||t.rootViewId!==e.rootViewId||t.views.size!==e.views.size||t.payloads.size!==e.payloads.size;(t.rootViewId!==e.rootViewId||t.views.size!==e.views.size)&&(this.structureChanged=!0);for(let[n,r]of e.views){let e=t.views.get(n);e?I(e,r,this.changedNodeIds):(N(r,this.changedNodeIds),this.structureChanged=!0)}for(let e of this.changedNodeIds)this.nodeVersions.set(e,(this.nodeVersions.get(e)??0)+1);return this.snapshot=e,n&&this.notify(),n}clear(){(this.snapshot.rootViewId!==void 0&&this.snapshot.rootViewId.length!==0||this.snapshot.views.size!==0||this.snapshot.payloads.size!==0)&&(this.snapshotMode=!0,this.views.clear(),this.payloads.clear(),this.rootViewId=void 0,this.viewsDirty=!0,this.payloadsDirty=!0,this.snapshot={views:new Map,payloads:new Map,version:-1},this.structureChanged=!0,this.notify())}getSnapshot(){return this.snapshot}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}subscribeNode(e,t){let n=this.nodeListeners.get(e);return n||(n=new Set,this.nodeListeners.set(e,n)),n.add(t),()=>{n&&(n.delete(t),n.size===0&&this.nodeListeners.delete(e))}}getNode(e){let t=this.snapshot.views;return this.indexedViews!==t&&this.rebuildNodeIndex(t),this.nodeIndex.get(e)}rebuildNodeIndex(e){this.nodeIndex.clear();for(let t of e.values())P(t,this.nodeIndex);for(let[t,n]of e)this.nodeIndex.set(t,n);this.indexedViews=e}getNodeVersion(e){return this.nodeVersions.get(e)??0}notifyNodes(){if(this.changedNodeIds.size===0||this.nodeListeners.size===0){this.changedNodeIds.clear();return}for(let e of this.changedNodeIds){let t=this.nodeListeners.get(e);if(t)for(let e of t)e()}this.changedNodeIds.clear()}commitSnapshot(){let e,t;if(this.viewsDirty){let t=new Map;for(let[e,n]of this.views)n.root&&t.set(e,n.root);e=t,this.viewsDirty=!1}else e=this.snapshot.views;this.payloadsDirty?(t=new Map(this.payloads),this.payloadsDirty=!1):t=this.snapshot.payloads;let n=this.rootViewId&&this.views.has(this.rootViewId)?this.views.get(this.rootViewId)?.version:void 0;if(n===void 0)for(let e of this.views.values())n=n===void 0?e.version:Math.max(n,e.version);this.snapshot={rootViewId:this.rootViewId,views:e,payloads:t,version:n};for(let e of this.changedNodeIds)this.nodeVersions.set(e,(this.nodeVersions.get(e)??0)+1)}notify(){if(this.notifyNodes(),this.structureChanged){this.structureChanged=!1;for(let e of this.listeners)e()}}},hn=class{streams=new Map;listeners=new Set;apply(e,t){let n=this.getOrCreateStreamEntry(e).store.apply(t);return n&&this.notify(e),n}needsResync(e){let t=this.streams.get(e);return t?t.store.consumeResyncNeeded():!1}applyStoreOp(e){if(e.type===`ReplaceStreamSnapshot`){let t=this.getOrCreateStreamEntry(e.snapshot.streamId),n=t.category!==e.snapshot.category;return t.category=e.snapshot.category,t.store.replaceFromWire(e.snapshot)||n?(this.notify(e.snapshot.streamId),!0):!1}if(e.type===`PatchStreamSnapshot`){let t=this.getOrCreateStreamEntry(e.streamId),n=e.category!==void 0&&t.category!==e.category;return e.category!==void 0&&(t.category=e.category),t.store.patchFromOp(e)||n?(this.notify(e.streamId),!0):!1}if(e.type===`ClearStream`){let t=this.streams.get(e.streamId);return t?(t.store.clear(),this.notify(e.streamId),!0):!1}return e.type===`RemoveStream`?this.streams.delete(e.streamId)?(this.notify(e.streamId),!0):!1:e.type===`SetStreamCategory`&&(this.setCategory(e.streamId,e.category),!0)}applyStoreOps(e){for(let t of e)this.applyStoreOp(t)}clear(e){let t=this.streams.get(e);t&&(t.store.clear(),this.notify(e))}remove(e){this.streams.delete(e)&&this.notify(e)}enterSnapshotModeAll(){for(let e of this.streams.values())e.store.enterSnapshotMode()}setCategory(e,t){let n=this.getOrCreateStreamEntry(e);n.category!==t&&(n.category=t,this.notify(e))}getSnapshot(e){let t=this.streams.get(e);if(t)return{...t.store.getSnapshot(),streamId:e,category:t.category}}getSnapshots(){let e=[];for(let[t,n]of this.streams){let r=n.store.getSnapshot();e.push({...r,streamId:t,category:n.category})}return e}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getOrCreateStreamEntry(e){let t=this.streams.get(e);return t||(t={store:new mn},this.streams.set(e,t)),t}notify(e){for(let t of this.listeners)t(e)}};function gn(e,t,n){if(t.length===0)return e;let r=new Map;for(let e of t)r.set(e.nodeId,e);return M(e,r,n)}function M(e,t,n){let r=t.get(e.id),i=e,a=!1;if(r?.textUpdates&&r.textUpdates.length>0){let t=xn(e,r.textUpdates,n);i=t.node,a=t.changed}let o=!1,s=i.props;if(r?.changedProps&&r.changedProps.size>0)for(let[e,t]of r.changedProps.entries()){let n=s[e];if(t===void 0)(n!==void 0||e in s)&&(o||=(s=R(s),!0),delete s[e]);else if(z(t)){let r=R(t);B(r,n)||(o||=(s=R(s),!0),s[e]=r)}else B(t,n)||(o||=(s=R(s),!0),s[e]=t)}let c=!1,l=i.styleIds;r?.styleIds!==void 0&&(L(i.styleIds,r.styleIds)||(l=r.styleIds,c=!0));let u=i.children??[],d=u,f=!1;if(r?.removals&&r.removals.length>0||r?.moves&&r.moves.length>0||r?.inserts&&r.inserts.length>0){let e=d.slice();if(r?.removals&&r.removals.length>0){let t=[...r.removals].sort((e,t)=>t.index-e.index);for(let n of t)if(n.index>=0&&n.index<e.length&&e[n.index].id===n.nodeId)e.splice(n.index,1);else{let t=e.findIndex(e=>e.id===n.nodeId);t>=0&&e.splice(t,1)}f=!0}let t=new Map;if(r?.moves&&r.moves.length>0){for(let n of r.moves){let r=e.findIndex(e=>e.id===n.nodeId);r>=0&&(t.set(n.nodeId,e[r]),e.splice(r,1))}f=!0}let i=[];if(r?.moves)for(let e of r.moves){let n=t.get(e.nodeId);n&&i.push({index:e.toIndex,node:n,isInsert:!1})}if(r?.inserts){for(let n of r.inserts)(e.some(e=>e.id===n.node.id)||t.has(n.node.id))&&pn.warn(`Duplicate node id '${n.node.id}' (type '${n.node.type}') inserted next to an existing sibling — UI tree diverged from the server`),i.push({index:n.index,node:n.node,isInsert:!0});f=!0}i.sort((e,t)=>e.index-t.index);for(let t of i){let r=Math.min(t.index,e.length);e.splice(r,0,t.node),t.isInsert&&n&&N(t.node,n)}d=e}let p;for(let e=0;e<d.length;e++){let r=d[e],i=M(r,t,n);i!==r&&(p||=d.slice(),p[e]=i)}p&&(d=p,f=!0);let m=a||o||c,h=m||f;return m&&n&&n.add(e.id),h?!o&&!f&&!c?i:{id:e.id,type:e.type,props:o?s:i.props,children:f?d:u,styleIds:c?l:i.styleIds,...e.sourceMarker?{sourceMarker:e.sourceMarker}:{}}:e}function N(e,t){if(t.add(e.id),e.children)for(let n of e.children)N(n,t)}function P(e,t){if(t.set(e.id,e),e.children)for(let n of e.children)P(n,t)}const F=[];function _n(e){for(;F.length<=e;)F.push(new Map);return F[e].clear(),F[e]}function I(e,t,n){vn(e,t,n,0)}function vn(e,t,n,r){if(e===t)return;(e.type!==t.type||!yn(e.props,t.props)||!L(e.styleIds,t.styleIds))&&n.add(t.id);let i=e.children??[],a=t.children??[];if(i!==a){let e=_n(r);for(let t of i)e.set(t.id,t);let o=!1;for(let t=0;t<a.length;t++){let s=a[t],c=e.get(s.id);c?(vn(c,s,n,r+1),!o&&t<i.length&&i[t].id!==s.id&&(o=!0)):(N(s,n),o=!0)}(i.length!==a.length||o)&&n.add(t.id)}}function yn(e,t){return B(e,t)}function L(e,t){return B(e,t)}function bn(e,t){if(t.length===0)return e;let n=[...t].sort((e,t)=>e.start-t.start),r=e,i=0;for(let e of n){let t=Cn(e.start+i,0,r.length);if(e.end==null){let n=r.slice(t),a=wn(n,e.insertedText);r=r.slice(0,t)+e.insertedText+n.slice(a),i+=e.insertedText.length-a;continue}let n=Cn(e.end+i,t,r.length),a=n-t;r=r.slice(0,t)+e.insertedText+r.slice(n),i+=e.insertedText.length-a}return r}function xn(e,t,n){if(t.length===0)return{node:e,changed:!1};let r=new Map;for(let e of t){let t=r.get(e.nodeId);t?t.push(e):r.set(e.nodeId,[e])}return Sn(e,r,n)}function Sn(e,t,n){let r=t.get(e.id)??[],i=!1,a=e.props;if(r.length>0){let e=new Map;for(let t of r){let n=e.get(t.propertyName);n?n.push(t):e.set(t.propertyName,[t])}for(let[t,n]of e.entries()){let e=a[t],r=bn(typeof e==`string`?e:``,n);i||=(a=R(a),!0),a[t]=r}}let o=!1,s=e.children??[],c=s;if(s.length>0){let e;for(let r=0;r<s.length;r++){let i=s[r],a=Sn(i,t,n);a.changed&&(e||=[...s],e[r]=a.node)}e&&(c=e,o=!0)}return!i&&!o?{node:e,changed:!1}:(i&&n&&n.add(e.id),{node:{id:e.id,type:e.type,props:i?a:e.props,children:o?c:s,styleIds:e.styleIds,...e.sourceMarker?{sourceMarker:e.sourceMarker}:{}},changed:!0})}function Cn(e,t,n){return Math.max(t,Math.min(n,e))}function wn(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e.charCodeAt(r)===t.charCodeAt(r);)r++;return r}function R(e){let t={},n=Object.keys(e);for(let r=0;r<n.length;r++){let i=n[r];t[i]=e[i]}return t}function z(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function B(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!B(e[n],t[n]))return!1;return!0}if(z(e)&&z(t)){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!B(e[r],t[r]))return!1;return!0}return!1}const V=new hn,H=new Map,U=new Map,W=new Set;let Tn=16,En=50,G=[],K=null,q=null,J=0,Y=0;const X=new Map,Z=new Map;function Dn(){return typeof performance<`u`?performance.now():Date.now()}function On(){try{return crypto.randomUUID()}catch{return`${Date.now()}_${Math.random().toString(16).slice(2)}`}}function kn(e){let t=[];for(let n of e.views)t.push(n);let n=[];for(let t of e.payloads)n.push(t);return{streamId:e.streamId,category:e.category,version:e.version??-1,rootViewId:e.rootViewId,views:t,payloads:n}}function An(e,t,n){if(!n||n.version===-1)return{type:`ReplaceStreamSnapshot`,snapshot:kn(t)};let r,i;for(let[e,i]of t.views)n.views.get(e)!==i&&(r??=[]).push([e,i]);for(let e of n.views.keys())t.views.has(e)||(i??=[]).push(e);let a,o;for(let[e,r]of t.payloads)n.payloads.get(e)!==r&&(a??=[]).push([e,r]);for(let e of n.payloads.keys())t.payloads.has(e)||(o??=[]).push(e);return{type:`PatchStreamSnapshot`,streamId:e,category:t.category,nextVersion:t.version??-1,expectedBaseVersion:n.version??-1,rootViewId:t.rootViewId,upsertViews:r,deleteViews:i,upsertPayloads:a,deletePayloads:o}}function Q(){K||=setTimeout(jn,Tn),q||=setTimeout(jn,En)}function $(e){G.push(e),Q()}function jn(){if(K&&=(clearTimeout(K),null),q&&=(clearTimeout(q),null),G.length===0&&X.size===0&&Z.size===0){J=0,Y=0;return}let e=[];for(let[t,n]of X)e.push({trackId:t,version:n.version,senderId:n.senderId});let t=[];for(let[e,n]of Z)t.push({trackId:e,senderId:n});let n={batchId:On(),createdAtMs:Dn(),ops:G,...e.length>0?{acks:e}:{},...t.length>0?{resyncs:t}:{},stats:{uiMessagesConsumed:J,bytesConsumed:Y}};G=[],J=0,Y=0,X.clear(),Z.clear(),self.postMessage(n)}function Mn(e){return`${e.senderId}_${e.trackId}`}async function Nn(e){let t=await jt(e),n=new Set;for(let e of Object.values(t.UIStreams??{})){let t=e.StreamId;n.add(t);let r=e.Info?.Category;V.getSnapshot(t)?.category!==r&&(V.setCategory(t,r),$({type:`SetStreamCategory`,streamId:t,category:r}))}for(let e of V.getSnapshots())W.has(e.streamId)||n.has(e.streamId)||(V.remove(e.streamId),U.delete(e.streamId),$({type:`RemoveStream`,streamId:e.streamId}))}function Pn(e){if(W.size!==0){for(let t of W)t!==e&&(V.remove(t),U.delete(t),$({type:`RemoveStream`,streamId:t}));W.clear()}}async function Fn(e){let t=r(e),n=Mn(t),i=A(await St(e)),a=X.get(t.trackId);(a===void 0||i.snapshot.version>a.version)&&(X.set(t.trackId,{version:i.snapshot.version,senderId:t.senderId}),Q());let o=V.apply(n,i);if(V.needsResync(n)&&(Z.set(t.trackId,t.senderId),Q()),!o)return;let s=V.getSnapshot(n);if(!s)return;let c=U.get(n);U.set(n,s),$(An(n,s,c)),Pn(n)}async function In(e){let t=await Ze(e);if(!t.StyleId)return;let n={styleId:t.StyleId,css:t.Style?.css,common:t.Style?.common},r=H.get(n.styleId);r&&r.css===n.css&&r.common===n.common||(H.set(n.styleId,n),$({type:`UpsertUiStyle`,style:n}))}async function Ln(e){let t=await it(e);if(t.Styles)for(let e of t.Styles){if(!e.StyleId)continue;let t={styleId:e.StyleId,css:e.Style?.css,common:e.Style?.common},n=H.get(t.styleId);n&&n.css===t.css&&n.common===t.common||(H.set(t.styleId,t),$({type:`UpsertUiStyle`,style:t}))}}async function Rn(e){let t=await gt(e);if(!(!t.StyleIds||t.StyleIds.length===0))for(let e of t.StyleIds)H.delete(e)&&$({type:`RemoveUiStyle`,styleId:e})}function zn(e){if(!V.getSnapshots().some(e=>e.rootViewId)){for(let t of e.styles){let e=H.get(t.styleId);e&&e.css===t.css&&e.common===t.common||(H.set(t.styleId,t),$({type:`UpsertUiStyle`,style:t}))}if(e.bootJson&&e.bootStreamId){let t=A({Json:e.bootJson});if(V.apply(e.bootStreamId,t)){let t=V.getSnapshot(e.bootStreamId);t&&(U.set(e.bootStreamId,t),W.add(e.bootStreamId),$({type:`ReplaceStreamSnapshot`,snapshot:kn(t),fromSeed:!0}))}}for(let t of e.liveStreams??[])if(V.applyStoreOp({type:`ReplaceStreamSnapshot`,snapshot:t})){let e=V.getSnapshot(t.streamId);e&&U.set(t.streamId,e),$({type:`ReplaceStreamSnapshot`,snapshot:t,fromSeed:!0})}V.enterSnapshotModeAll()}}async function Bn(e){let r=new Uint8Array(e);Y+=r.byteLength;let i=t(r);switch(n(i)){case C.CORE_GLOBAL_STATE:await Nn(i),J++;return;case C.UI_UPDATE:try{await Fn(i)}catch(e){e instanceof k;return}finally{J++}return;case C.UI_STYLES:await In(i),J++;return;case C.UI_STYLES_BATCH:await Ln(i),J++;return;case C.UI_STYLES_DELETE:await Rn(i),J++;return;default:return}}self.addEventListener(`message`,e=>{let t=e.data;if(t.type===`configure`){typeof t.flushIntervalMs==`number`&&Number.isFinite(t.flushIntervalMs)&&t.flushIntervalMs>=0&&(Tn=t.flushIntervalMs),typeof t.maxLatencyMs==`number`&&Number.isFinite(t.maxLatencyMs)&&t.maxLatencyMs>=0&&(En=t.maxLatencyMs);return}if(t.type===`clear`){G=[],U.clear(),X.clear(),Z.clear(),H.clear();for(let e of V.getSnapshots())V.remove(e.streamId);return}if(t.type===`snapshotMode`){V.enterSnapshotModeAll();return}if(t.type===`seed`){zn(t);return}t.type===`protocol`&&Bn(t.message).catch(()=>{})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e){return e}function t(e){if(e.length<8)throw Error(`Protocol message too short`);return(e[4]|e[5]<<8|e[6]<<16|e[7]<<24)>>>0}function n(e){let t=g(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(t.length<27)throw Error(`Protocol payload too short`);let r=n.getUint32(0,!0),i=n.getUint32(4,!0),a=n.getUint32(8,!0),o=n.getUint32(12,!0),s=n.getUint32(16,!0),c=n.getUint32(20,!0),l=n.getUint8(24),u=n.getUint8(25),d=n.getUint8(26);if(27+c*4>t.length)throw Error(`Protocol header exceeds payload length`);let f=[],p=27;for(let e=0;e<c;e++)f.push(n.getUint32(p,!0)),p+=4;return{length:r,opcode:i,senderId:a,trackId:o,sequenceId:s,targetIds:f,payloadVersion:l,payloadType:u,flags:d}}function r(t,n,r,i,a){let o=a?.trackId??0,s=a?.sequenceId??0,c=a?.flags??0,l=a?.targetIds??[],u=a?.payloadType??8,d=27+l.length*4,f=d+n.length,p=new Uint8Array(f),m=new DataView(p.buffer);m.setUint32(0,f,!0),m.setUint32(4,t>>>0,!0),m.setUint32(8,i>>>0,!0),m.setUint32(12,o>>>0,!0),m.setUint32(16,s>>>0,!0),m.setUint32(20,l.length>>>0,!0),m.setUint8(24,r&255),m.setUint8(25,u&255),m.setUint8(26,c&255);let h=27;for(let e=0;e<l.length;e++)m.setUint32(h,l[e]>>>0,!0),h+=4;return p.set(n,d),e(p)}let i=function(e){return e[e.Null=1]=`Null`,e[e.Bool=2]=`Bool`,e[e.Int32=3]=`Int32`,e[e.Int64=4]=`Int64`,e[e.UInt32=5]=`UInt32`,e[e.UInt64=6]=`UInt64`,e[e.Float32=7]=`Float32`,e[e.Float64=8]=`Float64`,e[e.Array=9]=`Array`,e[e.Dict=10]=`Dict`,e[e.Object=11]=`Object`,e[e.String=12]=`String`,e[e.Binary=13]=`Binary`,e[e.Guid=14]=`Guid`,e}({});const a=new TextEncoder;new TextDecoder(`utf-8`,{fatal:!0});var o=class e{buffer=new d;cached;constructor(e=1){this.buffer.writeByte(161),this.buffer.writeVarUInt(e>>>0)}writeInt32Field(e,t){this.writeFixedField(e,3,()=>this.buffer.writeInt32(t|0))}writeUInt32Field(e,t){this.writeFixedField(e,5,()=>this.buffer.writeUInt32(t>>>0))}writeInt64Field(e,t){this.writeFixedField(e,4,()=>this.buffer.writeBigInt64(t))}writeUInt64Field(e,t){this.writeFixedField(e,6,()=>this.buffer.writeBigUInt64(t))}writeFloat32Field(e,t){this.writeFixedField(e,7,()=>this.buffer.writeFloat32(t))}writeFloat64Field(e,t){this.writeFixedField(e,8,()=>this.buffer.writeFloat64(t))}writeBoolField(e,t){this.writeFixedField(e,2,()=>this.buffer.writeByte(+!!t))}writeGuidField(e,t){let n=t instanceof u?t.asBytes():t;if(n.length!==16)throw Error(`Guid payload must be 16 bytes`);this.writeFixedField(e,14,()=>this.buffer.writeBytes(n))}writeStringField(e,t){let n=a.encode(t??``);this.writeVariableField(e,12,n)}writeBinaryField(e,t){this.writeVariableField(e,13,t)}writeObjectField(t,n,r){let i=new e(n);r(i);let a=i.finish();this.writeVariableField(t,11,a)}writeArrayField(e,t,n){let r=new s(t);n(r);let i=r.finish();this.writeVariableField(e,9,i)}writeDictionaryField(e,t,n,r){let i=new c(t,n);r(i);let a=i.finish();this.writeVariableField(e,10,a)}finish(){return this.cached||=(this.buffer.writeByte(162),this.buffer.toUint8Array()),this.cached}writeFixedField(e,t,n){this.writeFieldHeader(e,t,0),n()}writeVariableField(e,t,n){this.writeFieldHeader(e,t,n.length),this.buffer.writeBytes(n)}writeFieldHeader(e,t,n){this.buffer.writeUInt32(e>>>0),this.buffer.writeByte(f(t)),p(t)&&this.buffer.writeVarUInt(n>>>0)}},s=class e{elementType;payload=new d;count=0;constructor(e){this.elementType=e}writeInt32(e){this.ensureElementType(3),this.count++,this.payload.writeInt32(e|0)}writeUInt32(e){this.ensureElementType(5),this.count++,this.payload.writeUInt32(e>>>0)}writeInt64(e){this.ensureElementType(4),this.count++,this.payload.writeBigInt64(e)}writeUInt64(e){this.ensureElementType(6),this.count++,this.payload.writeBigUInt64(e)}writeFloat32(e){this.ensureElementType(7),this.count++,this.payload.writeFloat32(e)}writeFloat64(e){this.ensureElementType(8),this.count++,this.payload.writeFloat64(e)}writeBool(e){this.ensureElementType(2),this.count++,this.payload.writeByte(+!!e)}writeGuid(e){this.ensureElementType(14),this.count++;let t=e instanceof u?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t)}writeString(e){this.ensureElementType(12),this.count++;let t=a.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t)}writeBinary(e){this.ensureElementType(13),this.count++,this.payload.writeVarUInt(e.length),this.payload.writeBytes(e)}writeObject(e,t){this.ensureElementType(11),this.count++;let n=new o(e);t(n);let r=n.finish();this.payload.writeVarUInt(r.length),this.payload.writeBytes(r)}writeArray(t,n){this.ensureElementType(9),this.count++;let r=new e(t);n(r);let i=r.finish();this.payload.writeBytes(i)}writeDictionary(e,t,n){this.ensureElementType(10),this.count++;let r=new c(e,t);n(r);let i=r.finish();this.payload.writeBytes(i)}finish(){let e=new d;return e.writeByte(f(this.elementType)),e.writeVarUInt(this.count),e.writeBytes(this.payload.toUint8Array()),e.toUint8Array()}ensureElementType(e){if(this.elementType!==e)throw Error(`Array element type is ${i[this.elementType]}, expected ${i[e]}`)}},c=class{keyType;valueType;payload=new d;count=0;entryOpen=!1;constructor(e,t){this.keyType=e,this.valueType=t,m(e)}beginEntry(){if(this.entryOpen)throw Error(`Previous dictionary entry not completed`);return this.count++,this.entryOpen=!0,new l(this.keyType,this.valueType,this.payload,()=>{this.entryOpen=!1})}finish(){if(this.entryOpen)throw Error(`Dictionary entry not completed`);let e=new d;return e.writeByte(f(this.keyType)),e.writeByte(f(this.valueType)),e.writeVarUInt(this.count),e.writeBytes(this.payload.toUint8Array()),e.toUint8Array()}},l=class{keyType;valueType;payload;onComplete;keyWritten=!1;valueWritten=!1;completed=!1;constructor(e,t,n,r){this.keyType=e,this.valueType=t,this.payload=n,this.onComplete=r}writeKeyInt32(e){this.ensureKeyType(3),this.payload.writeInt32(e|0),this.keyWritten=!0}writeKeyUInt32(e){this.ensureKeyType(5),this.payload.writeUInt32(e>>>0),this.keyWritten=!0}writeKeyInt64(e){this.ensureKeyType(4),this.payload.writeBigInt64(e),this.keyWritten=!0}writeKeyUInt64(e){this.ensureKeyType(6),this.payload.writeBigUInt64(e),this.keyWritten=!0}writeKeyFloat32(e){this.ensureKeyType(7),this.payload.writeFloat32(e),this.keyWritten=!0}writeKeyFloat64(e){this.ensureKeyType(8),this.payload.writeFloat64(e),this.keyWritten=!0}writeKeyBool(e){this.ensureKeyType(2),this.payload.writeByte(+!!e),this.keyWritten=!0}writeKeyGuid(e){this.ensureKeyType(14);let t=e instanceof u?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t),this.keyWritten=!0}writeKeyString(e){this.ensureKeyType(12);let t=a.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t),this.keyWritten=!0}writeKeyBinary(e){this.ensureKeyType(13),this.payload.writeVarUInt(e.length),this.payload.writeBytes(e),this.keyWritten=!0}writeValueInt32(e){this.ensureValueType(3),this.payload.writeInt32(e|0),this.valueWritten=!0}writeValueUInt32(e){this.ensureValueType(5),this.payload.writeUInt32(e>>>0),this.valueWritten=!0}writeValueInt64(e){this.ensureValueType(4),this.payload.writeBigInt64(e),this.valueWritten=!0}writeValueUInt64(e){this.ensureValueType(6),this.payload.writeBigUInt64(e),this.valueWritten=!0}writeValueFloat32(e){this.ensureValueType(7),this.payload.writeFloat32(e),this.valueWritten=!0}writeValueFloat64(e){this.ensureValueType(8),this.payload.writeFloat64(e),this.valueWritten=!0}writeValueBool(e){this.ensureValueType(2),this.payload.writeByte(+!!e),this.valueWritten=!0}writeValueGuid(e){this.ensureValueType(14);let t=e instanceof u?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t),this.valueWritten=!0}writeNullValue(){this.ensureValueType(1),this.valueWritten=!0}writeValueBinary(e){this.ensureValueType(13),this.payload.writeVarUInt(e.length),this.payload.writeBytes(e),this.valueWritten=!0}writeValueString(e){this.ensureValueType(12);let t=a.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t),this.valueWritten=!0}writeValueObject(e,t){this.ensureValueType(11);let n=new o(e);t(n);let r=n.finish();this.payload.writeVarUInt(r.length),this.payload.writeBytes(r),this.valueWritten=!0}writeValueArray(e,t){this.ensureValueType(9);let n=new s(e);t(n);let r=n.finish();this.payload.writeBytes(r),this.valueWritten=!0}writeValueDictionary(e,t,n){this.ensureValueType(10);let r=new c(e,t);n(r);let i=r.finish();this.payload.writeBytes(i),this.valueWritten=!0}complete(){if(!this.completed){if(!this.keyWritten||!this.valueWritten)throw Error(`Dictionary entry must write both key and value`);this.completed=!0,this.onComplete()}}ensureKeyType(e){if(this.keyType!==e)throw Error(`Dictionary key type is ${i[this.keyType]}, expected ${i[e]}`)}ensureValueType(e){if(this.valueType!==e)throw Error(`Dictionary value type is ${i[this.valueType]}, expected ${i[e]}`)}},u=class e{bytes;constructor(e){this.bytes=e}static fromString(t){if(!t)throw Error(`Guid string is empty`);let n=t.replace(/-/g,``);if(n.length!==32)throw Error(`Guid string must be 32 hex characters`);let r=new Uint8Array(16),i=e.parseHexSlice(n,0,8),a=e.parseHexSlice(n,8,4),o=e.parseHexSlice(n,12,4);e.writeUInt32LE(r,0,i),e.writeUInt16LE(r,4,a),e.writeUInt16LE(r,6,o);for(let t=0;t<8;t++)r[8+t]=e.parseHexSlice(n,16+t*2,2);return new e(r)}static fromBytes(t){if(t.length!==16)throw Error(`Guid byte array must be 16 bytes`);return new e(Uint8Array.from(t))}static createZero(){return new e(new Uint8Array(16))}static createRandom(){let t=new Uint8Array(16),n=globalThis.crypto;if(n?.getRandomValues)n.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return t[6]=t[6]&15|64,t[8]=t[8]&63|128,new e(t)}toString(){let t=this.bytes;return[e.toHex(e.readUInt32LE(t,0),8),e.toHex(e.readUInt16LE(t,4),4),e.toHex(e.readUInt16LE(t,6),4),h(t.subarray(8,10)),h(t.subarray(10,16))].join(`-`)}asBytes(){return this.bytes.slice()}static parseHexSlice(e,t,n){let r=e.substr(t,n),i=Number.parseInt(r,16);if(Number.isNaN(i))throw Error(`Guid string contains invalid characters`);return i>>>0}static writeUInt32LE(e,t,n){let r=n>>>0;e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24&255}static writeUInt16LE(e,t,n){let r=n&65535;e[t]=r&255,e[t+1]=r>>>8&255}static readUInt32LE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}static readUInt16LE(e,t){return(e[t]|e[t+1]<<8)&65535}static toHex(e,t){return(e>>>0).toString(16).padStart(t,`0`)}},d=class e{static INITIAL_CAPACITY=256;buffer;dataView;length=0;constructor(){this.buffer=new Uint8Array(e.INITIAL_CAPACITY),this.dataView=new DataView(this.buffer.buffer)}ensureCapacity(e){let t=this.length+e;if(t<=this.buffer.length)return;let n=this.buffer.length;for(;n<t;)n*=2;let r=new Uint8Array(n);r.set(this.buffer.subarray(0,this.length)),this.buffer=r,this.dataView=new DataView(this.buffer.buffer)}writeByte(e){this.ensureCapacity(1),this.buffer[this.length++]=e&255}writeBytes(e){this.ensureCapacity(e.length),this.buffer.set(e,this.length),this.length+=e.length}writeUInt32(e){this.ensureCapacity(4),this.dataView.setUint32(this.length,e>>>0,!0),this.length+=4}writeInt32(e){this.ensureCapacity(4),this.dataView.setInt32(this.length,e|0,!0),this.length+=4}writeFloat32(e){this.ensureCapacity(4),this.dataView.setFloat32(this.length,e,!0),this.length+=4}writeFloat64(e){this.ensureCapacity(8),this.dataView.setFloat64(this.length,e,!0),this.length+=8}writeBigInt64(e){this.ensureCapacity(8),this.dataView.setBigInt64(this.length,e,!0),this.length+=8}writeBigUInt64(e){this.ensureCapacity(8),this.dataView.setBigUint64(this.length,e,!0),this.length+=8}writeVarUInt(e){let t=e>>>0;for(;t>=128;)this.ensureCapacity(1),this.buffer[this.length++]=t&127|128,t>>>=7;this.ensureCapacity(1),this.buffer[this.length++]=t&127}toUint8Array(){return this.buffer.slice(0,this.length)}};function f(e,t=0){if(t&240)throw Error(`Teleport flags must fit into 4 bits`);return(e&15)<<4|t&15}function p(e){return e===12||e===13||e===9||e===11||e===10}function m(e){if(e===9||e===11||e===10||e===1)throw Error(`Dictionary keys must be primitive Teleport types`)}function h(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function g(e){return e instanceof Uint8Array?e:new Uint8Array(e)}let _=function(e){return e[e.Unknown=0]=`Unknown`,e[e.H264=1]=`H264`,e[e.Vp8=2]=`Vp8`,e[e.Vp9=3]=`Vp9`,e[e.Av1=4]=`Av1`,e}({}),v=function(e){return e[e.NONE=0]=`NONE`,e[e.CONSTANT_GROUP_BITS=15]=`CONSTANT_GROUP_BITS`,e[e.CONSTANT_GROUP_OFFSET=16]=`CONSTANT_GROUP_OFFSET`,e[e.GROUP_CORE=65536]=`GROUP_CORE`,e[e.CORE_AUTH_RESPONSE=65537]=`CORE_AUTH_RESPONSE`,e[e.CORE_AUTH_TICKET=65538]=`CORE_AUTH_TICKET`,e[e.CORE_GLOBAL_STATE=65539]=`CORE_GLOBAL_STATE`,e[e.CORE_ON_SERVER_STATUS_PING=65540]=`CORE_ON_SERVER_STATUS_PING`,e[e.CORE_ON_USER_JOINED=65541]=`CORE_ON_USER_JOINED`,e[e.CORE_ON_USER_LEFT=65542]=`CORE_ON_USER_LEFT`,e[e.CORE_ON_CLIENT_JOINED=65543]=`CORE_ON_CLIENT_JOINED`,e[e.CORE_ON_CLIENT_LEFT=65544]=`CORE_ON_CLIENT_LEFT`,e[e.CORE_ON_SERVER_STARTED=65545]=`CORE_ON_SERVER_STARTED`,e[e.CORE_ON_SERVER_STOPPED=65546]=`CORE_ON_SERVER_STOPPED`,e[e.CORE_ON_SERVER_STOPPING=65547]=`CORE_ON_SERVER_STOPPING`,e[e.CORE_ON_CLIENT_READY=65548]=`CORE_ON_CLIENT_READY`,e[e.CORE_CLIENT_READY=65549]=`CORE_CLIENT_READY`,e[e.CORE_SERVER_INIT=65550]=`CORE_SERVER_INIT`,e[e.CORE_ON_PLUGIN_RELOADED=65551]=`CORE_ON_PLUGIN_RELOADED`,e[e.CORE_DYNAMIC_CONFIG=65555]=`CORE_DYNAMIC_CONFIG`,e[e.CORE_PROXY_RPC_AUTH_TICKET=65556]=`CORE_PROXY_RPC_AUTH_TICKET`,e[e.CORE_UPDATE_CLIENT_CONTEXT=65558]=`CORE_UPDATE_CLIENT_CONTEXT`,e[e.CORE_BACKGROUND_WORK_ACTIVE=65559]=`CORE_BACKGROUND_WORK_ACTIVE`,e[e.CORE_RESET_IDLE=65560]=`CORE_RESET_IDLE`,e[e.CORE_CLIENT_DISCONNECTING=65561]=`CORE_CLIENT_DISCONNECTING`,e[e.CORE_ON_APP_READY=65562]=`CORE_ON_APP_READY`,e[e.CORE_ON_FRONTEND_RELOADED=65563]=`CORE_ON_FRONTEND_RELOADED`,e[e.CORE_ON_USER_DATA_ERASED=65564]=`CORE_ON_USER_DATA_ERASED`,e[e.CORE_WEBRTC_OFFER=65566]=`CORE_WEBRTC_OFFER`,e[e.CORE_WEBRTC_ANSWER=65567]=`CORE_WEBRTC_ANSWER`,e[e.CORE_WEBRTC_ICE_CANDIDATE=65568]=`CORE_WEBRTC_ICE_CANDIDATE`,e[e.CORE_WEBRTC_READY=65569]=`CORE_WEBRTC_READY`,e[e.CORE_WEBRTC_AUDIO_SEGMENT=65570]=`CORE_WEBRTC_AUDIO_SEGMENT`,e[e.CORE_WEBRTC_TRACK_MAP=65571]=`CORE_WEBRTC_TRACK_MAP`,e[e.CORE_WEBRTC_VIDEO_CAPTURE=65572]=`CORE_WEBRTC_VIDEO_CAPTURE`,e[e.CORE_WEBRTC_ICE_SERVERS_REQUEST=65573]=`CORE_WEBRTC_ICE_SERVERS_REQUEST`,e[e.CORE_WEBRTC_ICE_SERVERS_RESPONSE=65574]=`CORE_WEBRTC_ICE_SERVERS_RESPONSE`,e[e.CORE_WEBRTC_CLOSE=65575]=`CORE_WEBRTC_CLOSE`,e[e.CORE_RELAY_AGENT_AUTH=65576]=`CORE_RELAY_AGENT_AUTH`,e[e.CORE_RELAY_AGENT_AUTH_RESULT=65577]=`CORE_RELAY_AGENT_AUTH_RESULT`,e[e.CORE_RELAY_HEARTBEAT=65578]=`CORE_RELAY_HEARTBEAT`,e[e.CORE_RELAY_TCP_CONNECTION_OPENED=65579]=`CORE_RELAY_TCP_CONNECTION_OPENED`,e[e.CORE_RELAY_TCP_CONNECTION_CLOSED=65580]=`CORE_RELAY_TCP_CONNECTION_CLOSED`,e[e.CORE_RELAY_TCP_DATA=65581]=`CORE_RELAY_TCP_DATA`,e[e.CORE_RELAY_UDP_DATA=65582]=`CORE_RELAY_UDP_DATA`,e[e.CORE_RELAY_ADD_TUNNEL=65583]=`CORE_RELAY_ADD_TUNNEL`,e[e.CORE_RELAY_TUNNEL_ADDED=65584]=`CORE_RELAY_TUNNEL_ADDED`,e[e.CORE_RELAY_REMOVE_TUNNEL=65585]=`CORE_RELAY_REMOVE_TUNNEL`,e[e.CORE_IKON_SERVER_ENDPOINT_HOST_INFO=65586]=`CORE_IKON_SERVER_ENDPOINT_HOST_INFO`,e[e.CORE_CLIENT_INITIALIZATION=65587]=`CORE_CLIENT_INITIALIZATION`,e[e.CORE_CLIENT_LIFECYCLE_BATCH=65588]=`CORE_CLIENT_LIFECYCLE_BATCH`,e[e.CORE_APP_CONFIG=65589]=`CORE_APP_CONFIG`,e[e.GROUP_KEEPALIVE=131072]=`GROUP_KEEPALIVE`,e[e.KEEPALIVE_REQUEST=131073]=`KEEPALIVE_REQUEST`,e[e.KEEPALIVE_RESPONSE=131074]=`KEEPALIVE_RESPONSE`,e[e.GROUP_EVENTS=262144]=`GROUP_EVENTS`,e[e.EVENTS_PROFILE_UPDATE=262145]=`EVENTS_PROFILE_UPDATE`,e[e.EVENTS_SPEECH_PLAYBACK_COMPLETE=262147]=`EVENTS_SPEECH_PLAYBACK_COMPLETE`,e[e.GROUP_ANALYTICS=524288]=`GROUP_ANALYTICS`,e[e.ANALYTICS_LOGS=524289]=`ANALYTICS_LOGS`,e[e.ANALYTICS_EVENTS=524290]=`ANALYTICS_EVENTS`,e[e.ANALYTICS_USAGES=524291]=`ANALYTICS_USAGES`,e[e.ANALYTICS_USAGE=524292]=`ANALYTICS_USAGE`,e[e.ANALYTICS_SPECIAL_LOG=524293]=`ANALYTICS_SPECIAL_LOG`,e[e.ANALYTICS_PROCESSING_UPDATE=524294]=`ANALYTICS_PROCESSING_UPDATE`,e[e.ANALYTICS_REACTIVE_PROCESSING_UPDATE=524295]=`ANALYTICS_REACTIVE_PROCESSING_UPDATE`,e[e.ANALYTICS_IKON_PROXY_SERVER_STATS=524296]=`ANALYTICS_IKON_PROXY_SERVER_STATS`,e[e.ANALYTICS_IKON_RELAY_SERVER_STATS=524297]=`ANALYTICS_IKON_RELAY_SERVER_STATS`,e[e.ANALYTICS_IKON_TURN_SERVER_STATS=524298]=`ANALYTICS_IKON_TURN_SERVER_STATS`,e[e.ANALYTICS_IKON_HOST_SERVER_STATS=524299]=`ANALYTICS_IKON_HOST_SERVER_STATS`,e[e.GROUP_ACTIONS=1048576]=`GROUP_ACTIONS`,e[e.ACTION_CALL=1048577]=`ACTION_CALL`,e[e.ACTION_ACTIVE=1048578]=`ACTION_ACTIVE`,e[e.ACTION_TEXT_OUTPUT=1048579]=`ACTION_TEXT_OUTPUT`,e[e.ACTION_TEXT_OUTPUT_DELTA=1048580]=`ACTION_TEXT_OUTPUT_DELTA`,e[e.ACTION_TEXT_OUTPUT_DELTA_FULL=1048581]=`ACTION_TEXT_OUTPUT_DELTA_FULL`,e[e.ACTION_SET_STATE=1048582]=`ACTION_SET_STATE`,e[e.ACTION_TAP=1048583]=`ACTION_TAP`,e[e.ACTION_PAN=1048584]=`ACTION_PAN`,e[e.ACTION_ZOOM=1048585]=`ACTION_ZOOM`,e[e.ACTION_FILE_UPLOAD_BEGIN=1048586]=`ACTION_FILE_UPLOAD_BEGIN`,e[e.ACTION_FILE_UPLOAD_DATA=1048587]=`ACTION_FILE_UPLOAD_DATA`,e[e.ACTION_FILE_UPLOAD_ACK=1048588]=`ACTION_FILE_UPLOAD_ACK`,e[e.ACTION_FILE_UPLOAD_END=1048589]=`ACTION_FILE_UPLOAD_END`,e[e.ACTION_FILE_UPLOAD_RESULT=1048590]=`ACTION_FILE_UPLOAD_RESULT`,e[e.ACTION_OPEN_EXTERNAL_URL=1048592]=`ACTION_OPEN_EXTERNAL_URL`,e[e.ACTION_FUNCTION_REGISTER=1048600]=`ACTION_FUNCTION_REGISTER`,e[e.ACTION_FUNCTION_CALL=1048601]=`ACTION_FUNCTION_CALL`,e[e.ACTION_FUNCTION_RESULT=1048602]=`ACTION_FUNCTION_RESULT`,e[e.ACTION_GENERATE_ANSWER=1048603]=`ACTION_GENERATE_ANSWER`,e[e.ACTION_REGENERATE_ANSWER=1048604]=`ACTION_REGENERATE_ANSWER`,e[e.ACTION_CLEAR_STATE=1048606]=`ACTION_CLEAR_STATE`,e[e.ACTION_CLASSIFICATION_RESULT=1048609]=`ACTION_CLASSIFICATION_RESULT`,e[e.ACTION_AUDIO_STOP=1048610]=`ACTION_AUDIO_STOP`,e[e.ACTION_CALL_TEXT=1048611]=`ACTION_CALL_TEXT`,e[e.ACTION_CANCEL_GENERATION=1048613]=`ACTION_CANCEL_GENERATION`,e[e.ACTION_SPEECH_RECOGNIZED=1048615]=`ACTION_SPEECH_RECOGNIZED`,e[e.ACTION_CALL_RESULT=1048616]=`ACTION_CALL_RESULT`,e[e.ACTION_DOWNLOAD=1048618]=`ACTION_DOWNLOAD`,e[e.ACTION_PLAY_SOUND=1048621]=`ACTION_PLAY_SOUND`,e[e.ACTION_STOP_SOUND=1048623]=`ACTION_STOP_SOUND`,e[e.ACTION_START_RECORDING=1048624]=`ACTION_START_RECORDING`,e[e.ACTION_STOP_RECORDING=1048625]=`ACTION_STOP_RECORDING`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM=1048627]=`ACTION_FUNCTION_ENUMERATION_ITEM`,e[e.ACTION_FUNCTION_ENUMERATION_END=1048628]=`ACTION_FUNCTION_ENUMERATION_END`,e[e.ACTION_FUNCTION_CANCEL=1048629]=`ACTION_FUNCTION_CANCEL`,e[e.ACTION_FUNCTION_DISPOSE=1048630]=`ACTION_FUNCTION_DISPOSE`,e[e.ACTION_FUNCTION_ERROR=1048631]=`ACTION_FUNCTION_ERROR`,e[e.ACTION_FUNCTION_ACK=1048632]=`ACTION_FUNCTION_ACK`,e[e.ACTION_FUNCTION_AWAITING_APPROVAL=1048633]=`ACTION_FUNCTION_AWAITING_APPROVAL`,e[e.ACTION_FUNCTION_APPROVAL_REQUIRED=1048634]=`ACTION_FUNCTION_APPROVAL_REQUIRED`,e[e.ACTION_FUNCTION_APPROVAL_RESPONSE=1048635]=`ACTION_FUNCTION_APPROVAL_RESPONSE`,e[e.UI_UPDATE_ACK=1048636]=`UI_UPDATE_ACK`,e[e.ACTION_CALL2=1048637]=`ACTION_CALL2`,e[e.ACTION_FUNCTION_REGISTER_BATCH=1048638]=`ACTION_FUNCTION_REGISTER_BATCH`,e[e.ACTION_FILE_UPLOAD_CALLBACK=1048640]=`ACTION_FILE_UPLOAD_CALLBACK`,e[e.ACTION_CUSTOM_USER_MESSAGE=1048641]=`ACTION_CUSTOM_USER_MESSAGE`,e[e.ACTION_URL_CHANGED=1048642]=`ACTION_URL_CHANGED`,e[e.ACTION_FILE_UPLOAD_PRE_START2=1048643]=`ACTION_FILE_UPLOAD_PRE_START2`,e[e.ACTION_FILE_UPLOAD_PRE_START_RESPONSE2=1048644]=`ACTION_FILE_UPLOAD_PRE_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_START2=1048645]=`ACTION_FILE_UPLOAD_START2`,e[e.ACTION_FILE_UPLOAD_START_RESPONSE2=1048646]=`ACTION_FILE_UPLOAD_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_DATA2=1048647]=`ACTION_FILE_UPLOAD_DATA2`,e[e.ACTION_FILE_UPLOAD_ACK2=1048648]=`ACTION_FILE_UPLOAD_ACK2`,e[e.ACTION_FILE_UPLOAD_END2=1048649]=`ACTION_FILE_UPLOAD_END2`,e[e.ACTION_FILE_UPLOAD_COMPLETE2=1048650]=`ACTION_FILE_UPLOAD_COMPLETE2`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM_BATCH=1048651]=`ACTION_FUNCTION_ENUMERATION_ITEM_BATCH`,e[e.ACTION_CALL_ACK=1048652]=`ACTION_CALL_ACK`,e[e.ACTION_TRIGGER_CRON=1048653]=`ACTION_TRIGGER_CRON`,e[e.ACTION_RESULT=1048654]=`ACTION_RESULT`,e[e.UI_RESYNC_REQUEST=1048655]=`UI_RESYNC_REQUEST`,e[e.ACTION_USER_DATA_ERASURE=1048656]=`ACTION_USER_DATA_ERASURE`,e[e.GROUP_UI=2097152]=`GROUP_UI`,e[e.UI_STREAM_BEGIN=2097153]=`UI_STREAM_BEGIN`,e[e.UI_STREAM_END=2097154]=`UI_STREAM_END`,e[e.UI_STYLES=2097188]=`UI_STYLES`,e[e.UI_UPDATE=2097190]=`UI_UPDATE`,e[e.UI_STYLES_BATCH=2097192]=`UI_STYLES_BATCH`,e[e.UI_STYLES_DELETE=2097193]=`UI_STYLES_DELETE`,e[e.GROUP_COMMON=4128768]=`GROUP_COMMON`,e[e.GROUP_AUDIO=4194304]=`GROUP_AUDIO`,e[e.AUDIO_STREAM_BEGIN=4194305]=`AUDIO_STREAM_BEGIN`,e[e.AUDIO_STREAM_END=4194306]=`AUDIO_STREAM_END`,e[e.AUDIO_FRAME=4194307]=`AUDIO_FRAME`,e[e.AUDIO_FRAME_VOLUME=4194308]=`AUDIO_FRAME_VOLUME`,e[e.AUDIO_FRAME2=4194309]=`AUDIO_FRAME2`,e[e.AUDIO_SHAPE_FRAME=4194310]=`AUDIO_SHAPE_FRAME`,e[e.AUDIO_PLAYBACK_REPORT=4194311]=`AUDIO_PLAYBACK_REPORT`,e[e.GROUP_VIDEO=8388608]=`GROUP_VIDEO`,e[e.VIDEO_STREAM_BEGIN=8388609]=`VIDEO_STREAM_BEGIN`,e[e.VIDEO_STREAM_END=8388610]=`VIDEO_STREAM_END`,e[e.VIDEO_FRAME=8388611]=`VIDEO_FRAME`,e[e.VIDEO_REQUEST_IDR_FRAME=8388612]=`VIDEO_REQUEST_IDR_FRAME`,e[e.VIDEO_INVALIDATE_FRAME=8388613]=`VIDEO_INVALIDATE_FRAME`,e[e.GROUP_ALL=16711680]=`GROUP_ALL`,e[e.GROUP_APP_LOCAL=1073741824]=`GROUP_APP_LOCAL`,e[e.CONSTANT_GROUP_MASK=2147418112]=`CONSTANT_GROUP_MASK`,e}({});function y(e){let t={};return ee(t),e&&Object.assign(t,e),t}function ee(e){return e.Data=new Uint8Array,e.FrameNumber=0,e.IsKey=!1,e.TimestampInUs=BigInt(0),e.DurationInUs=0,e}function b(e){let t=new o(1);return x(e,t),t.finish()}function x(e,t){t.writeUInt64Field(271275304,e.TimestampInUs),t.writeUInt32Field(2541432218,e.DurationInUs>>>0),t.writeBinaryField(2986785889,e.Data),t.writeBoolField(3105403172,e.IsKey),t.writeInt32Field(3456383222,e.FrameNumber|0)}function S(e,t,n){return r(8388611,b(e),1,t,n)}function C(e){let t={};return te(t),e&&Object.assign(t,e),t}function te(e){return e.StreamId=``,e.Description=``,e.SourceType=``,e.Codec=_.H264,e.CodecDetails=``,e.Width=0,e.Height=0,e.Framerate=30,e.CorrelationId=void 0,e}function w(e){let t=new o(6);return T(e,t),t.finish()}function T(e,t){t.writeStringField(161083277,e.StreamId),t.writeFloat64Field(164808083,e.Framerate),t.writeStringField(1368629611,e.Description);let n=e.CorrelationId;n!=null&&t.writeStringField(2514959030,n),t.writeStringField(2745379226,e.CodecDetails),t.writeInt32Field(2950031986,e.Height|0),t.writeStringField(3282782683,e.SourceType),t.writeInt32Field(3284746250,e.Codec),t.writeInt32Field(4065070594,e.Width|0)}function E(e,t,n){return r(8388609,w(e),6,t,n)}function D(e){let t={};return e&&Object.assign(t,e),t}function O(e){return new o(1).finish()}function k(e,t,n){return r(8388610,O(e),1,t,n)}const A=[`avc1.42001f`,`avc1.4d001f`,`avc1.42001e`,`avc1.4d001e`,`avc1.640028`,`avc1.4d0028`];A[0];const j=[`vp09.00.10.08`,`vp09.00.20.08`,`vp09.00.30.08`,`vp09.00.40.08`];j[0];const M=[`av01.0.04M.08`,`av01.0.05M.08`,`av01.0.08M.08`,`av01.0.01M.08`];M[0];const N=[`h264`,`vp8`,`vp9`,`av1`];function P(e){let t=N.slice();if(!Array.isArray(e)||e.length===0)return t;let n=[];for(let t of e)N.includes(t)&&!n.includes(t)&&n.push(t);if(n.length===0)return t;for(let e of t)n.includes(e)||n.push(e);return n}const F=[{width:1920,height:1080},{width:1280,height:720},{width:960,height:540},{width:640,height:480},{width:640,height:360}],I=e=>self.postMessage(e);let L=null,R=null;function z(e,t){let n=e instanceof Error?e:Error(String(e));I({type:`error`,captureId:t,error:{name:n.name,message:n.message,stack:n.stack}})}function ne(e){return e===`h264`?_.H264:e===`vp8`?_.Vp8:e===`vp9`?_.Vp9:e===`av1`?_.Av1:_.Unknown}const B={[_.Unknown]:[],[_.H264]:A,[_.Vp8]:[`vp8`],[_.Vp9]:j,[_.Av1]:M};function V(e,t,n,r){let i=e*t,a=n/30*.1,o=Math.floor(i*a);return Math.max(5e4,Math.floor(r??Math.max(5e5,Math.min(o,8e6))))}function H(e,t){let n=[{width:e,height:t}];for(let r of F)(r.width<e||r.height<t)&&(n.some(e=>e.width===r.width&&e.height===r.height)||n.push(r));return n}async function U(e,t,n,r,i,a,o){let s={codec:t,width:n,height:r,bitrate:i,framerate:a,latencyMode:`realtime`,...e===_.H264?{avc:{format:`annexb`}}:{}};if(typeof VideoEncoder?.isConfigSupported!=`function`)return null;if(o){let e={...s,hardwareAcceleration:o};try{let t=await VideoEncoder.isConfigSupported(e);if(t.supported){let n=t.config??e;return{config:n,isHardwareAccelerated:n.hardwareAcceleration===`prefer-hardware`}}}catch{}}try{let e=await VideoEncoder.isConfigSupported(s);if(e.supported)return{config:e.config??s,isHardwareAccelerated:!1}}catch{}return null}async function W(e,t,n,r){let i=Math.max(1,Math.floor(n?.framerate??30)),a=P(n?.preferredCodecs),o=n?.hardwareAcceleration===`preferSoftware`?[`prefer-software`,`prefer-hardware`,void 0]:[`prefer-hardware`,`prefer-software`,void 0],s=H(e,t),c=a;if(r){let e={[_.H264]:`h264`,[_.Vp8]:`vp8`,[_.Vp9]:`vp9`,[_.Av1]:`av1`}[r];e&&!a.includes(e)?c=[e,...a]:e&&(c=[e,...a.filter(t=>t!==e)])}for(let e of s){let t=V(e.width,e.height,i,n?.bitrate);for(let n of o)for(let r of c){let a=ne(r),o=B[a]??[];for(let r of o){let o=await U(a,r,e.width,e.height,t,i,n);if(o)return{codec:a,config:o.config,isHardwareAccelerated:o.isHardwareAccelerated}}}}throw Error(`No supported video encoder configuration`)}function G(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.slice().buffer}function K(e){if(!L)return;let t=G(e);L.postMessage({type:`send`,message:t},[t])}const q=new Map,J=new Map,Y=[];function X(e){for(let t=0;t<Y.length;t++)if(Y[t].length>=e){let n=Y[t];return Y.splice(t,1),n.length===e?n:new Uint8Array(n.buffer,0,e)}return new Uint8Array(e)}function Z(e){Y.length<8&&e.buffer.byteLength>0&&Y.push(new Uint8Array(e.buffer))}function Q(e){try{e.encoder.close()}catch{}}function re(e,t){try{if(e.stopped||e.isReconfiguring)return;if(e.kind===`screen`&&e.minFrameIntervalUs>0){let n=t.timestamp??0,r=n-e.lastEncodedTimestamp;if(e.lastEncodedTimestamp>0&&r<e.minFrameIntervalUs)return;e.lastEncodedTimestamp=n}if(e.encoder.encodeQueueSize>3)return;e.frameCounter+=1;let n=e.forceKeyframe||e.frameCounter>0&&e.frameCounter%e.keyFrameIntervalFrames===0;e.forceKeyframe=!1,e.encoder.encode(t,{keyFrame:n})}catch(t){z(t,e.captureId),e.forceKeyframe=!0}finally{try{t.close()}catch{}}}async function ie(e){try{for(;!e.stopped;){let t=await e.reader.read();if(t.done)break;let n=t.value;n&&re(e,n)}}catch(t){e.stopped||z(t,e.captureId)}}async function ae(e){if(!L)throw Error(`Video capture worker missing send port`);if(q.has(e.captureId))return;let t=Math.max(1,Math.floor(e.width)),n=Math.max(1,Math.floor(e.height)),r=await W(t,n,e.options),i=Math.max(1,Math.floor(e.options?.keyFrameIntervalFrames??90)),a=r.config.width??t,o=r.config.height??n,s=r.config.framerate??30,c=r.config.bitrate??0,l=e.trackSettings?.frameRate,u=l??s,d=e.options?.framerate??30,f=e.kind===`screen`?Math.floor(1e6/d):0,p=new VideoEncoder({output:t=>{let n=q.get(e.captureId);if(!n||n.stopped)return;let r=X(t.byteLength);t.copyTo(r);let i=S(y({Data:r,FrameNumber:n.frameCounter,IsKey:t.type===`key`,TimestampInUs:BigInt(Math.max(0,Math.round(t.timestamp??0))),DurationInUs:Math.max(0,Math.round(t.duration??0))}),n.senderId,{trackId:n.trackId});Z(r),K(i)},error:t=>{z(t,e.captureId)}});p.configure(r.config);let m=r.isHardwareAccelerated?`hardware`:`software`,h=e.kind===`screen`?`${Math.round(d)}fps (throttled from ${l===void 0?`?`:Math.round(l)}fps)`:l===void 0?`${Math.round(s)}fps (configured)`:`${Math.round(u)}fps (track)`;I({type:`debug`,message:`Encoder configured: codec=${r.config.codec}, ${a}x${o}@${h}, bitrate=${c}bps, hw=${m}`});let g=e.readable.getReader(),_={captureId:e.captureId,streamId:e.streamId,sourceType:e.sourceType,kind:e.kind,senderId:e.senderId,trackId:e.trackId,width:a,height:o,framerate:u,codec:r.codec,encoder:p,encoderConfig:r.config,options:e.options,correlationId:e.correlationId,reader:g,frameCounter:0,keyFrameIntervalFrames:i,forceKeyframe:!0,stopped:!1,isReconfiguring:!1,isHardwareAccelerated:r.isHardwareAccelerated,targetFramerate:d,lastEncodedTimestamp:0,minFrameIntervalUs:f};q.set(e.captureId,_),J.set(e.trackId,e.captureId);let v=e.kind===`screen`?d:u;K(E(C({StreamId:e.streamId,Description:`${e.kind}:${e.streamId}`,SourceType:e.sourceType,Codec:_.codec,CodecDetails:r.config.codec,Width:a,Height:o,Framerate:v,CorrelationId:e.correlationId}),e.senderId,{trackId:e.trackId})),I({type:`started`,captureId:e.captureId,codec:_.codec,width:a,height:o}),ie(_)}async function $(e){let t=q.get(e);if(t){t.stopped=!0,q.delete(e),J.delete(t.trackId);try{await t.reader.cancel()}catch{}try{await t.encoder.flush()}catch{}Q(t),K(k(D({}),t.senderId,{trackId:t.trackId})),I({type:`stopped`,captureId:t.captureId})}}async function oe(e,t,n){let r=q.get(e);if(!r||r.stopped||r.width===t&&r.height===n)return;r.isReconfiguring=!0,I({type:`debug`,message:`Window resize detected: ${r.width}x${r.height} -> ${t}x${n}`});try{await r.encoder.flush()}catch{}r.width=t,r.height=n;let i=await W(t,n,r.options,r.codec);Q(r),r.codec=i.codec,r.encoderConfig=i.config,r.isHardwareAccelerated=i.isHardwareAccelerated,r.encoder=new VideoEncoder({output:t=>{let n=q.get(e);if(!n||n.stopped)return;let r=X(t.byteLength);t.copyTo(r);let i=S(y({Data:r,FrameNumber:n.frameCounter,IsKey:t.type===`key`,TimestampInUs:BigInt(Math.max(0,Math.round(t.timestamp??0))),DurationInUs:Math.max(0,Math.round(t.duration??0))}),n.senderId,{trackId:n.trackId});Z(r),K(i)},error:t=>{z(t,e)}}),r.encoder.configure(i.config),r.forceKeyframe=!0;let a=i.config.width??t,o=i.config.height??n,s=r.kind===`screen`?r.targetFramerate:r.framerate;K(E(C({StreamId:r.streamId,Description:`${r.kind}:${r.streamId}`,SourceType:r.sourceType,Codec:r.codec,CodecDetails:i.config.codec,Width:a,Height:o,Framerate:s,CorrelationId:r.correlationId}),r.senderId,{trackId:r.trackId})),r.isReconfiguring=!1;let c=i.isHardwareAccelerated?`hardware`:`software`,l=r.kind===`screen`?`${Math.round(r.targetFramerate)}fps (throttled)`:`${Math.round(r.framerate)}fps`;I({type:`debug`,message:`Encoder reconfigured: codec=${i.config.codec}, ${a}x${o}@${l}, bitrate=${i.config.bitrate??0}bps, hw=${c}`})}async function se(e,t){let n=q.get(e);if(!n||n.stopped)return;let r=P(n.options?.preferredCodecs),i=P(t.preferredCodecs),a=JSON.stringify(r)!==JSON.stringify(i),o=n.options?.bitrate!==t.bitrate,s=n.options?.framerate!==t.framerate,c=t.width!==void 0&&n.options?.width!==t.width,l=t.height!==void 0&&n.options?.height!==t.height;if(!a&&!o&&!s&&!c&&!l)return;n.isReconfiguring=!0,I({type:`debug`,message:`Options update: codec=${a}, bitrate=${o}, framerate=${s}, width=${c}, height=${l}`}),n.options=t,n.kind===`camera`&&(c&&t.width!==void 0&&(n.width=t.width),l&&t.height!==void 0&&(n.height=t.height));try{await n.encoder.flush()}catch{}let u=await W(n.width,n.height,t);Q(n),n.codec=u.codec,n.encoderConfig=u.config,n.isHardwareAccelerated=u.isHardwareAccelerated,n.framerate=u.config.framerate??n.framerate,n.encoder=new VideoEncoder({output:t=>{let n=q.get(e);if(!n||n.stopped)return;let r=X(t.byteLength);t.copyTo(r);let i=S(y({Data:r,FrameNumber:n.frameCounter,IsKey:t.type===`key`,TimestampInUs:BigInt(Math.max(0,Math.round(t.timestamp??0))),DurationInUs:Math.max(0,Math.round(t.duration??0))}),n.senderId,{trackId:n.trackId});Z(r),K(i)},error:t=>{z(t,e)}}),n.encoder.configure(u.config),n.forceKeyframe=!0,n.kind===`screen`&&s&&t.framerate!==void 0&&(n.targetFramerate=t.framerate,n.minFrameIntervalUs=Math.floor(1e6/t.framerate),n.lastEncodedTimestamp=0);let d=u.config.width??n.width,f=u.config.height??n.height;K(E(C({StreamId:n.streamId,Description:`${n.kind}:${n.streamId}`,SourceType:n.sourceType,Codec:n.codec,CodecDetails:u.config.codec,Width:d,Height:f,Framerate:n.kind===`screen`?n.targetFramerate:n.framerate,CorrelationId:n.correlationId}),n.senderId,{trackId:n.trackId})),n.isReconfiguring=!1;let p=u.isHardwareAccelerated?`hardware`:`software`,m=n.kind===`screen`?`${Math.round(n.targetFramerate)}fps (throttled)`:`${Math.round(n.framerate)}fps`;I({type:`debug`,message:`Encoder reconfigured (options): codec=${u.config.codec}, ${d}x${f}@${m}, bitrate=${u.config.bitrate??0}bps, hw=${p}`})}function ce(r){let i=e(new Uint8Array(r));if(t(i)!==v.VIDEO_REQUEST_IDR_FRAME)return;let a=n(i),o=J.get(a.trackId);if(!o)return;let s=q.get(o);s&&(s.forceKeyframe=!0)}async function le(){let e=Array.from(q.keys()).map(e=>$(e).catch(()=>{}));if(await Promise.all(e),R){try{R.close()}catch{}R=null}if(L){try{L.close()}catch{}L=null}}self.addEventListener(`message`,e=>{let t=e.data;if(t.type===`attachSendPort`){if(L)try{L.close()}catch{}L=t.port;try{L.start?.()}catch{}return}if(t.type===`attachProtocolPort`){if(R)try{R.close()}catch{}R=t.port,R.addEventListener(`message`,e=>{let t=e.data;t?.type===`protocol`&&t.message instanceof ArrayBuffer&&ce(t.message)});try{R.start?.()}catch{}return}if(t.type===`start`){ae(t).catch(e=>z(e,t.captureId));return}if(t.type===`stop`){$(t.captureId).catch(e=>z(e,t.captureId));return}if(t.type===`updateDimensions`){oe(t.captureId,t.width,t.height).catch(e=>z(e,t.captureId));return}if(t.type===`updateOptions`){se(t.captureId,t.options).catch(e=>z(e,t.captureId));return}t.type===`dispose`&&le().catch(()=>{})});
|
|
1
|
+
function e(e){return e}function t(e){if(e.length<8)throw Error(`Protocol message too short`);return(e[4]|e[5]<<8|e[6]<<16|e[7]<<24)>>>0}function n(e){let t=g(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(t.length<27)throw Error(`Protocol payload too short`);let r=n.getUint32(0,!0),i=n.getUint32(4,!0),a=n.getUint32(8,!0),o=n.getUint32(12,!0),s=n.getUint32(16,!0),c=n.getUint32(20,!0),l=n.getUint8(24),u=n.getUint8(25),d=n.getUint8(26);if(27+c*4>t.length)throw Error(`Protocol header exceeds payload length`);let f=[],p=27;for(let e=0;e<c;e++)f.push(n.getUint32(p,!0)),p+=4;return{length:r,opcode:i,senderId:a,trackId:o,sequenceId:s,targetIds:f,payloadVersion:l,payloadType:u,flags:d}}function r(t,n,r,i,a){let o=a?.trackId??0,s=a?.sequenceId??0,c=a?.flags??0,l=a?.targetIds??[],u=a?.payloadType??8,d=27+l.length*4,f=d+n.length,p=new Uint8Array(f),m=new DataView(p.buffer);m.setUint32(0,f,!0),m.setUint32(4,t>>>0,!0),m.setUint32(8,i>>>0,!0),m.setUint32(12,o>>>0,!0),m.setUint32(16,s>>>0,!0),m.setUint32(20,l.length>>>0,!0),m.setUint8(24,r&255),m.setUint8(25,u&255),m.setUint8(26,c&255);let h=27;for(let e=0;e<l.length;e++)m.setUint32(h,l[e]>>>0,!0),h+=4;return p.set(n,d),e(p)}let i=function(e){return e[e.Null=1]=`Null`,e[e.Bool=2]=`Bool`,e[e.Int32=3]=`Int32`,e[e.Int64=4]=`Int64`,e[e.UInt32=5]=`UInt32`,e[e.UInt64=6]=`UInt64`,e[e.Float32=7]=`Float32`,e[e.Float64=8]=`Float64`,e[e.Array=9]=`Array`,e[e.Dict=10]=`Dict`,e[e.Object=11]=`Object`,e[e.String=12]=`String`,e[e.Binary=13]=`Binary`,e[e.Guid=14]=`Guid`,e}({});const a=new TextEncoder;new TextDecoder(`utf-8`,{fatal:!0});var o=class e{buffer=new d;cached;constructor(e=1){this.buffer.writeByte(161),this.buffer.writeVarUInt(e>>>0)}writeInt32Field(e,t){this.writeFixedField(e,3,()=>this.buffer.writeInt32(t|0))}writeUInt32Field(e,t){this.writeFixedField(e,5,()=>this.buffer.writeUInt32(t>>>0))}writeInt64Field(e,t){this.writeFixedField(e,4,()=>this.buffer.writeBigInt64(t))}writeUInt64Field(e,t){this.writeFixedField(e,6,()=>this.buffer.writeBigUInt64(t))}writeFloat32Field(e,t){this.writeFixedField(e,7,()=>this.buffer.writeFloat32(t))}writeFloat64Field(e,t){this.writeFixedField(e,8,()=>this.buffer.writeFloat64(t))}writeBoolField(e,t){this.writeFixedField(e,2,()=>this.buffer.writeByte(+!!t))}writeGuidField(e,t){let n=t instanceof u?t.asBytes():t;if(n.length!==16)throw Error(`Guid payload must be 16 bytes`);this.writeFixedField(e,14,()=>this.buffer.writeBytes(n))}writeStringField(e,t){let n=a.encode(t??``);this.writeVariableField(e,12,n)}writeBinaryField(e,t){this.writeVariableField(e,13,t)}writeObjectField(t,n,r){let i=new e(n);r(i);let a=i.finish();this.writeVariableField(t,11,a)}writeArrayField(e,t,n){let r=new s(t);n(r);let i=r.finish();this.writeVariableField(e,9,i)}writeDictionaryField(e,t,n,r){let i=new c(t,n);r(i);let a=i.finish();this.writeVariableField(e,10,a)}finish(){return this.cached||=(this.buffer.writeByte(162),this.buffer.toUint8Array()),this.cached}writeFixedField(e,t,n){this.writeFieldHeader(e,t,0),n()}writeVariableField(e,t,n){this.writeFieldHeader(e,t,n.length),this.buffer.writeBytes(n)}writeFieldHeader(e,t,n){this.buffer.writeUInt32(e>>>0),this.buffer.writeByte(f(t)),p(t)&&this.buffer.writeVarUInt(n>>>0)}},s=class e{elementType;payload=new d;count=0;constructor(e){this.elementType=e}writeInt32(e){this.ensureElementType(3),this.count++,this.payload.writeInt32(e|0)}writeUInt32(e){this.ensureElementType(5),this.count++,this.payload.writeUInt32(e>>>0)}writeInt64(e){this.ensureElementType(4),this.count++,this.payload.writeBigInt64(e)}writeUInt64(e){this.ensureElementType(6),this.count++,this.payload.writeBigUInt64(e)}writeFloat32(e){this.ensureElementType(7),this.count++,this.payload.writeFloat32(e)}writeFloat64(e){this.ensureElementType(8),this.count++,this.payload.writeFloat64(e)}writeBool(e){this.ensureElementType(2),this.count++,this.payload.writeByte(+!!e)}writeGuid(e){this.ensureElementType(14),this.count++;let t=e instanceof u?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t)}writeString(e){this.ensureElementType(12),this.count++;let t=a.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t)}writeBinary(e){this.ensureElementType(13),this.count++,this.payload.writeVarUInt(e.length),this.payload.writeBytes(e)}writeObject(e,t){this.ensureElementType(11),this.count++;let n=new o(e);t(n);let r=n.finish();this.payload.writeVarUInt(r.length),this.payload.writeBytes(r)}writeArray(t,n){this.ensureElementType(9),this.count++;let r=new e(t);n(r);let i=r.finish();this.payload.writeBytes(i)}writeDictionary(e,t,n){this.ensureElementType(10),this.count++;let r=new c(e,t);n(r);let i=r.finish();this.payload.writeBytes(i)}finish(){let e=new d;return e.writeByte(f(this.elementType)),e.writeVarUInt(this.count),e.writeBytes(this.payload.toUint8Array()),e.toUint8Array()}ensureElementType(e){if(this.elementType!==e)throw Error(`Array element type is ${i[this.elementType]}, expected ${i[e]}`)}},c=class{keyType;valueType;payload=new d;count=0;entryOpen=!1;constructor(e,t){this.keyType=e,this.valueType=t,m(e)}beginEntry(){if(this.entryOpen)throw Error(`Previous dictionary entry not completed`);return this.count++,this.entryOpen=!0,new l(this.keyType,this.valueType,this.payload,()=>{this.entryOpen=!1})}finish(){if(this.entryOpen)throw Error(`Dictionary entry not completed`);let e=new d;return e.writeByte(f(this.keyType)),e.writeByte(f(this.valueType)),e.writeVarUInt(this.count),e.writeBytes(this.payload.toUint8Array()),e.toUint8Array()}},l=class{keyType;valueType;payload;onComplete;keyWritten=!1;valueWritten=!1;completed=!1;constructor(e,t,n,r){this.keyType=e,this.valueType=t,this.payload=n,this.onComplete=r}writeKeyInt32(e){this.ensureKeyType(3),this.payload.writeInt32(e|0),this.keyWritten=!0}writeKeyUInt32(e){this.ensureKeyType(5),this.payload.writeUInt32(e>>>0),this.keyWritten=!0}writeKeyInt64(e){this.ensureKeyType(4),this.payload.writeBigInt64(e),this.keyWritten=!0}writeKeyUInt64(e){this.ensureKeyType(6),this.payload.writeBigUInt64(e),this.keyWritten=!0}writeKeyFloat32(e){this.ensureKeyType(7),this.payload.writeFloat32(e),this.keyWritten=!0}writeKeyFloat64(e){this.ensureKeyType(8),this.payload.writeFloat64(e),this.keyWritten=!0}writeKeyBool(e){this.ensureKeyType(2),this.payload.writeByte(+!!e),this.keyWritten=!0}writeKeyGuid(e){this.ensureKeyType(14);let t=e instanceof u?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t),this.keyWritten=!0}writeKeyString(e){this.ensureKeyType(12);let t=a.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t),this.keyWritten=!0}writeKeyBinary(e){this.ensureKeyType(13),this.payload.writeVarUInt(e.length),this.payload.writeBytes(e),this.keyWritten=!0}writeValueInt32(e){this.ensureValueType(3),this.payload.writeInt32(e|0),this.valueWritten=!0}writeValueUInt32(e){this.ensureValueType(5),this.payload.writeUInt32(e>>>0),this.valueWritten=!0}writeValueInt64(e){this.ensureValueType(4),this.payload.writeBigInt64(e),this.valueWritten=!0}writeValueUInt64(e){this.ensureValueType(6),this.payload.writeBigUInt64(e),this.valueWritten=!0}writeValueFloat32(e){this.ensureValueType(7),this.payload.writeFloat32(e),this.valueWritten=!0}writeValueFloat64(e){this.ensureValueType(8),this.payload.writeFloat64(e),this.valueWritten=!0}writeValueBool(e){this.ensureValueType(2),this.payload.writeByte(+!!e),this.valueWritten=!0}writeValueGuid(e){this.ensureValueType(14);let t=e instanceof u?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t),this.valueWritten=!0}writeNullValue(){this.ensureValueType(1),this.valueWritten=!0}writeValueBinary(e){this.ensureValueType(13),this.payload.writeVarUInt(e.length),this.payload.writeBytes(e),this.valueWritten=!0}writeValueString(e){this.ensureValueType(12);let t=a.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t),this.valueWritten=!0}writeValueObject(e,t){this.ensureValueType(11);let n=new o(e);t(n);let r=n.finish();this.payload.writeVarUInt(r.length),this.payload.writeBytes(r),this.valueWritten=!0}writeValueArray(e,t){this.ensureValueType(9);let n=new s(e);t(n);let r=n.finish();this.payload.writeBytes(r),this.valueWritten=!0}writeValueDictionary(e,t,n){this.ensureValueType(10);let r=new c(e,t);n(r);let i=r.finish();this.payload.writeBytes(i),this.valueWritten=!0}complete(){if(!this.completed){if(!this.keyWritten||!this.valueWritten)throw Error(`Dictionary entry must write both key and value`);this.completed=!0,this.onComplete()}}ensureKeyType(e){if(this.keyType!==e)throw Error(`Dictionary key type is ${i[this.keyType]}, expected ${i[e]}`)}ensureValueType(e){if(this.valueType!==e)throw Error(`Dictionary value type is ${i[this.valueType]}, expected ${i[e]}`)}},u=class e{bytes;constructor(e){this.bytes=e}static fromString(t){if(!t)throw Error(`Guid string is empty`);let n=t.replace(/-/g,``);if(n.length!==32)throw Error(`Guid string must be 32 hex characters`);let r=new Uint8Array(16),i=e.parseHexSlice(n,0,8),a=e.parseHexSlice(n,8,4),o=e.parseHexSlice(n,12,4);e.writeUInt32LE(r,0,i),e.writeUInt16LE(r,4,a),e.writeUInt16LE(r,6,o);for(let t=0;t<8;t++)r[8+t]=e.parseHexSlice(n,16+t*2,2);return new e(r)}static fromBytes(t){if(t.length!==16)throw Error(`Guid byte array must be 16 bytes`);return new e(Uint8Array.from(t))}static createZero(){return new e(new Uint8Array(16))}static createRandom(){let t=new Uint8Array(16),n=globalThis.crypto;if(n?.getRandomValues)n.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return t[6]=t[6]&15|64,t[8]=t[8]&63|128,new e(t)}toString(){let t=this.bytes;return[e.toHex(e.readUInt32LE(t,0),8),e.toHex(e.readUInt16LE(t,4),4),e.toHex(e.readUInt16LE(t,6),4),h(t.subarray(8,10)),h(t.subarray(10,16))].join(`-`)}asBytes(){return this.bytes.slice()}static parseHexSlice(e,t,n){let r=e.substr(t,n),i=Number.parseInt(r,16);if(Number.isNaN(i))throw Error(`Guid string contains invalid characters`);return i>>>0}static writeUInt32LE(e,t,n){let r=n>>>0;e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24&255}static writeUInt16LE(e,t,n){let r=n&65535;e[t]=r&255,e[t+1]=r>>>8&255}static readUInt32LE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}static readUInt16LE(e,t){return(e[t]|e[t+1]<<8)&65535}static toHex(e,t){return(e>>>0).toString(16).padStart(t,`0`)}},d=class e{static INITIAL_CAPACITY=256;buffer;dataView;length=0;constructor(){this.buffer=new Uint8Array(e.INITIAL_CAPACITY),this.dataView=new DataView(this.buffer.buffer)}ensureCapacity(e){let t=this.length+e;if(t<=this.buffer.length)return;let n=this.buffer.length;for(;n<t;)n*=2;let r=new Uint8Array(n);r.set(this.buffer.subarray(0,this.length)),this.buffer=r,this.dataView=new DataView(this.buffer.buffer)}writeByte(e){this.ensureCapacity(1),this.buffer[this.length++]=e&255}writeBytes(e){this.ensureCapacity(e.length),this.buffer.set(e,this.length),this.length+=e.length}writeUInt32(e){this.ensureCapacity(4),this.dataView.setUint32(this.length,e>>>0,!0),this.length+=4}writeInt32(e){this.ensureCapacity(4),this.dataView.setInt32(this.length,e|0,!0),this.length+=4}writeFloat32(e){this.ensureCapacity(4),this.dataView.setFloat32(this.length,e,!0),this.length+=4}writeFloat64(e){this.ensureCapacity(8),this.dataView.setFloat64(this.length,e,!0),this.length+=8}writeBigInt64(e){this.ensureCapacity(8),this.dataView.setBigInt64(this.length,e,!0),this.length+=8}writeBigUInt64(e){this.ensureCapacity(8),this.dataView.setBigUint64(this.length,e,!0),this.length+=8}writeVarUInt(e){let t=e>>>0;for(;t>=128;)this.ensureCapacity(1),this.buffer[this.length++]=t&127|128,t>>>=7;this.ensureCapacity(1),this.buffer[this.length++]=t&127}toUint8Array(){return this.buffer.slice(0,this.length)}};function f(e,t=0){if(t&240)throw Error(`Teleport flags must fit into 4 bits`);return(e&15)<<4|t&15}function p(e){return e===12||e===13||e===9||e===11||e===10}function m(e){if(e===9||e===11||e===10||e===1)throw Error(`Dictionary keys must be primitive Teleport types`)}function h(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function g(e){return e instanceof Uint8Array?e:new Uint8Array(e)}let _=function(e){return e[e.Unknown=0]=`Unknown`,e[e.H264=1]=`H264`,e[e.Vp8=2]=`Vp8`,e[e.Vp9=3]=`Vp9`,e[e.Av1=4]=`Av1`,e}({}),v=function(e){return e[e.NONE=0]=`NONE`,e[e.CONSTANT_GROUP_BITS=15]=`CONSTANT_GROUP_BITS`,e[e.CONSTANT_GROUP_OFFSET=16]=`CONSTANT_GROUP_OFFSET`,e[e.GROUP_CORE=65536]=`GROUP_CORE`,e[e.CORE_AUTH_RESPONSE=65537]=`CORE_AUTH_RESPONSE`,e[e.CORE_AUTH_TICKET=65538]=`CORE_AUTH_TICKET`,e[e.CORE_GLOBAL_STATE=65539]=`CORE_GLOBAL_STATE`,e[e.CORE_ON_SERVER_STATUS_PING=65540]=`CORE_ON_SERVER_STATUS_PING`,e[e.CORE_ON_USER_JOINED=65541]=`CORE_ON_USER_JOINED`,e[e.CORE_ON_USER_LEFT=65542]=`CORE_ON_USER_LEFT`,e[e.CORE_ON_CLIENT_JOINED=65543]=`CORE_ON_CLIENT_JOINED`,e[e.CORE_ON_CLIENT_LEFT=65544]=`CORE_ON_CLIENT_LEFT`,e[e.CORE_ON_SERVER_STARTED=65545]=`CORE_ON_SERVER_STARTED`,e[e.CORE_ON_SERVER_STOPPED=65546]=`CORE_ON_SERVER_STOPPED`,e[e.CORE_ON_SERVER_STOPPING=65547]=`CORE_ON_SERVER_STOPPING`,e[e.CORE_ON_CLIENT_READY=65548]=`CORE_ON_CLIENT_READY`,e[e.CORE_CLIENT_READY=65549]=`CORE_CLIENT_READY`,e[e.CORE_SERVER_INIT=65550]=`CORE_SERVER_INIT`,e[e.CORE_ON_PLUGIN_RELOADED=65551]=`CORE_ON_PLUGIN_RELOADED`,e[e.CORE_DYNAMIC_CONFIG=65555]=`CORE_DYNAMIC_CONFIG`,e[e.CORE_PROXY_RPC_AUTH_TICKET=65556]=`CORE_PROXY_RPC_AUTH_TICKET`,e[e.CORE_UPDATE_CLIENT_CONTEXT=65558]=`CORE_UPDATE_CLIENT_CONTEXT`,e[e.CORE_BACKGROUND_WORK_ACTIVE=65559]=`CORE_BACKGROUND_WORK_ACTIVE`,e[e.CORE_RESET_IDLE=65560]=`CORE_RESET_IDLE`,e[e.CORE_CLIENT_DISCONNECTING=65561]=`CORE_CLIENT_DISCONNECTING`,e[e.CORE_ON_APP_READY=65562]=`CORE_ON_APP_READY`,e[e.CORE_ON_FRONTEND_RELOADED=65563]=`CORE_ON_FRONTEND_RELOADED`,e[e.CORE_ON_USER_DATA_ERASED=65564]=`CORE_ON_USER_DATA_ERASED`,e[e.CORE_WEBRTC_OFFER=65566]=`CORE_WEBRTC_OFFER`,e[e.CORE_WEBRTC_ANSWER=65567]=`CORE_WEBRTC_ANSWER`,e[e.CORE_WEBRTC_ICE_CANDIDATE=65568]=`CORE_WEBRTC_ICE_CANDIDATE`,e[e.CORE_WEBRTC_READY=65569]=`CORE_WEBRTC_READY`,e[e.CORE_WEBRTC_AUDIO_SEGMENT=65570]=`CORE_WEBRTC_AUDIO_SEGMENT`,e[e.CORE_WEBRTC_TRACK_MAP=65571]=`CORE_WEBRTC_TRACK_MAP`,e[e.CORE_WEBRTC_VIDEO_CAPTURE=65572]=`CORE_WEBRTC_VIDEO_CAPTURE`,e[e.CORE_WEBRTC_ICE_SERVERS_REQUEST=65573]=`CORE_WEBRTC_ICE_SERVERS_REQUEST`,e[e.CORE_WEBRTC_ICE_SERVERS_RESPONSE=65574]=`CORE_WEBRTC_ICE_SERVERS_RESPONSE`,e[e.CORE_WEBRTC_CLOSE=65575]=`CORE_WEBRTC_CLOSE`,e[e.CORE_RELAY_AGENT_AUTH=65576]=`CORE_RELAY_AGENT_AUTH`,e[e.CORE_RELAY_AGENT_AUTH_RESULT=65577]=`CORE_RELAY_AGENT_AUTH_RESULT`,e[e.CORE_RELAY_HEARTBEAT=65578]=`CORE_RELAY_HEARTBEAT`,e[e.CORE_RELAY_TCP_CONNECTION_OPENED=65579]=`CORE_RELAY_TCP_CONNECTION_OPENED`,e[e.CORE_RELAY_TCP_CONNECTION_CLOSED=65580]=`CORE_RELAY_TCP_CONNECTION_CLOSED`,e[e.CORE_RELAY_TCP_DATA=65581]=`CORE_RELAY_TCP_DATA`,e[e.CORE_RELAY_UDP_DATA=65582]=`CORE_RELAY_UDP_DATA`,e[e.CORE_RELAY_ADD_TUNNEL=65583]=`CORE_RELAY_ADD_TUNNEL`,e[e.CORE_RELAY_TUNNEL_ADDED=65584]=`CORE_RELAY_TUNNEL_ADDED`,e[e.CORE_RELAY_REMOVE_TUNNEL=65585]=`CORE_RELAY_REMOVE_TUNNEL`,e[e.CORE_IKON_SERVER_ENDPOINT_HOST_INFO=65586]=`CORE_IKON_SERVER_ENDPOINT_HOST_INFO`,e[e.CORE_CLIENT_INITIALIZATION=65587]=`CORE_CLIENT_INITIALIZATION`,e[e.CORE_CLIENT_LIFECYCLE_BATCH=65588]=`CORE_CLIENT_LIFECYCLE_BATCH`,e[e.CORE_APP_CONFIG=65589]=`CORE_APP_CONFIG`,e[e.GROUP_KEEPALIVE=131072]=`GROUP_KEEPALIVE`,e[e.KEEPALIVE_REQUEST=131073]=`KEEPALIVE_REQUEST`,e[e.KEEPALIVE_RESPONSE=131074]=`KEEPALIVE_RESPONSE`,e[e.GROUP_EVENTS=262144]=`GROUP_EVENTS`,e[e.EVENTS_PROFILE_UPDATE=262145]=`EVENTS_PROFILE_UPDATE`,e[e.EVENTS_SPEECH_PLAYBACK_COMPLETE=262147]=`EVENTS_SPEECH_PLAYBACK_COMPLETE`,e[e.GROUP_ANALYTICS=524288]=`GROUP_ANALYTICS`,e[e.ANALYTICS_LOGS=524289]=`ANALYTICS_LOGS`,e[e.ANALYTICS_EVENTS=524290]=`ANALYTICS_EVENTS`,e[e.ANALYTICS_USAGES=524291]=`ANALYTICS_USAGES`,e[e.ANALYTICS_USAGE=524292]=`ANALYTICS_USAGE`,e[e.ANALYTICS_SPECIAL_LOG=524293]=`ANALYTICS_SPECIAL_LOG`,e[e.ANALYTICS_PROCESSING_UPDATE=524294]=`ANALYTICS_PROCESSING_UPDATE`,e[e.ANALYTICS_REACTIVE_PROCESSING_UPDATE=524295]=`ANALYTICS_REACTIVE_PROCESSING_UPDATE`,e[e.ANALYTICS_IKON_PROXY_SERVER_STATS=524296]=`ANALYTICS_IKON_PROXY_SERVER_STATS`,e[e.ANALYTICS_IKON_RELAY_SERVER_STATS=524297]=`ANALYTICS_IKON_RELAY_SERVER_STATS`,e[e.ANALYTICS_IKON_TURN_SERVER_STATS=524298]=`ANALYTICS_IKON_TURN_SERVER_STATS`,e[e.ANALYTICS_IKON_HOST_SERVER_STATS=524299]=`ANALYTICS_IKON_HOST_SERVER_STATS`,e[e.GROUP_ACTIONS=1048576]=`GROUP_ACTIONS`,e[e.ACTION_CALL=1048577]=`ACTION_CALL`,e[e.ACTION_ACTIVE=1048578]=`ACTION_ACTIVE`,e[e.ACTION_TEXT_OUTPUT=1048579]=`ACTION_TEXT_OUTPUT`,e[e.ACTION_TEXT_OUTPUT_DELTA=1048580]=`ACTION_TEXT_OUTPUT_DELTA`,e[e.ACTION_TEXT_OUTPUT_DELTA_FULL=1048581]=`ACTION_TEXT_OUTPUT_DELTA_FULL`,e[e.ACTION_SET_STATE=1048582]=`ACTION_SET_STATE`,e[e.ACTION_TAP=1048583]=`ACTION_TAP`,e[e.ACTION_PAN=1048584]=`ACTION_PAN`,e[e.ACTION_ZOOM=1048585]=`ACTION_ZOOM`,e[e.ACTION_OPEN_EXTERNAL_URL=1048592]=`ACTION_OPEN_EXTERNAL_URL`,e[e.ACTION_FUNCTION_REGISTER=1048600]=`ACTION_FUNCTION_REGISTER`,e[e.ACTION_FUNCTION_CALL=1048601]=`ACTION_FUNCTION_CALL`,e[e.ACTION_FUNCTION_RESULT=1048602]=`ACTION_FUNCTION_RESULT`,e[e.ACTION_GENERATE_ANSWER=1048603]=`ACTION_GENERATE_ANSWER`,e[e.ACTION_REGENERATE_ANSWER=1048604]=`ACTION_REGENERATE_ANSWER`,e[e.ACTION_CLEAR_STATE=1048606]=`ACTION_CLEAR_STATE`,e[e.ACTION_CLASSIFICATION_RESULT=1048609]=`ACTION_CLASSIFICATION_RESULT`,e[e.ACTION_AUDIO_STOP=1048610]=`ACTION_AUDIO_STOP`,e[e.ACTION_CALL_TEXT=1048611]=`ACTION_CALL_TEXT`,e[e.ACTION_CANCEL_GENERATION=1048613]=`ACTION_CANCEL_GENERATION`,e[e.ACTION_SPEECH_RECOGNIZED=1048615]=`ACTION_SPEECH_RECOGNIZED`,e[e.ACTION_CALL_RESULT=1048616]=`ACTION_CALL_RESULT`,e[e.ACTION_DOWNLOAD=1048618]=`ACTION_DOWNLOAD`,e[e.ACTION_PLAY_SOUND=1048621]=`ACTION_PLAY_SOUND`,e[e.ACTION_STOP_SOUND=1048623]=`ACTION_STOP_SOUND`,e[e.ACTION_START_RECORDING=1048624]=`ACTION_START_RECORDING`,e[e.ACTION_STOP_RECORDING=1048625]=`ACTION_STOP_RECORDING`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM=1048627]=`ACTION_FUNCTION_ENUMERATION_ITEM`,e[e.ACTION_FUNCTION_ENUMERATION_END=1048628]=`ACTION_FUNCTION_ENUMERATION_END`,e[e.ACTION_FUNCTION_CANCEL=1048629]=`ACTION_FUNCTION_CANCEL`,e[e.ACTION_FUNCTION_DISPOSE=1048630]=`ACTION_FUNCTION_DISPOSE`,e[e.ACTION_FUNCTION_ERROR=1048631]=`ACTION_FUNCTION_ERROR`,e[e.ACTION_FUNCTION_ACK=1048632]=`ACTION_FUNCTION_ACK`,e[e.ACTION_FUNCTION_AWAITING_APPROVAL=1048633]=`ACTION_FUNCTION_AWAITING_APPROVAL`,e[e.ACTION_FUNCTION_APPROVAL_REQUIRED=1048634]=`ACTION_FUNCTION_APPROVAL_REQUIRED`,e[e.ACTION_FUNCTION_APPROVAL_RESPONSE=1048635]=`ACTION_FUNCTION_APPROVAL_RESPONSE`,e[e.UI_UPDATE_ACK=1048636]=`UI_UPDATE_ACK`,e[e.ACTION_CALL2=1048637]=`ACTION_CALL2`,e[e.ACTION_FUNCTION_REGISTER_BATCH=1048638]=`ACTION_FUNCTION_REGISTER_BATCH`,e[e.ACTION_CUSTOM_USER_MESSAGE=1048641]=`ACTION_CUSTOM_USER_MESSAGE`,e[e.ACTION_URL_CHANGED=1048642]=`ACTION_URL_CHANGED`,e[e.ACTION_FILE_UPLOAD_PRE_START2=1048643]=`ACTION_FILE_UPLOAD_PRE_START2`,e[e.ACTION_FILE_UPLOAD_PRE_START_RESPONSE2=1048644]=`ACTION_FILE_UPLOAD_PRE_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_START2=1048645]=`ACTION_FILE_UPLOAD_START2`,e[e.ACTION_FILE_UPLOAD_START_RESPONSE2=1048646]=`ACTION_FILE_UPLOAD_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_DATA2=1048647]=`ACTION_FILE_UPLOAD_DATA2`,e[e.ACTION_FILE_UPLOAD_ACK2=1048648]=`ACTION_FILE_UPLOAD_ACK2`,e[e.ACTION_FILE_UPLOAD_END2=1048649]=`ACTION_FILE_UPLOAD_END2`,e[e.ACTION_FILE_UPLOAD_COMPLETE2=1048650]=`ACTION_FILE_UPLOAD_COMPLETE2`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM_BATCH=1048651]=`ACTION_FUNCTION_ENUMERATION_ITEM_BATCH`,e[e.ACTION_CALL_ACK=1048652]=`ACTION_CALL_ACK`,e[e.ACTION_TRIGGER_CRON=1048653]=`ACTION_TRIGGER_CRON`,e[e.ACTION_RESULT=1048654]=`ACTION_RESULT`,e[e.UI_RESYNC_REQUEST=1048655]=`UI_RESYNC_REQUEST`,e[e.ACTION_USER_DATA_ERASURE=1048656]=`ACTION_USER_DATA_ERASURE`,e[e.GROUP_UI=2097152]=`GROUP_UI`,e[e.UI_STREAM_BEGIN=2097153]=`UI_STREAM_BEGIN`,e[e.UI_STREAM_END=2097154]=`UI_STREAM_END`,e[e.UI_STYLES=2097188]=`UI_STYLES`,e[e.UI_UPDATE=2097190]=`UI_UPDATE`,e[e.UI_STYLES_BATCH=2097192]=`UI_STYLES_BATCH`,e[e.UI_STYLES_DELETE=2097193]=`UI_STYLES_DELETE`,e[e.GROUP_COMMON=4128768]=`GROUP_COMMON`,e[e.GROUP_AUDIO=4194304]=`GROUP_AUDIO`,e[e.AUDIO_STREAM_BEGIN=4194305]=`AUDIO_STREAM_BEGIN`,e[e.AUDIO_STREAM_END=4194306]=`AUDIO_STREAM_END`,e[e.AUDIO_FRAME=4194307]=`AUDIO_FRAME`,e[e.AUDIO_FRAME_VOLUME=4194308]=`AUDIO_FRAME_VOLUME`,e[e.AUDIO_FRAME2=4194309]=`AUDIO_FRAME2`,e[e.AUDIO_SHAPE_FRAME=4194310]=`AUDIO_SHAPE_FRAME`,e[e.AUDIO_PLAYBACK_REPORT=4194311]=`AUDIO_PLAYBACK_REPORT`,e[e.GROUP_VIDEO=8388608]=`GROUP_VIDEO`,e[e.VIDEO_STREAM_BEGIN=8388609]=`VIDEO_STREAM_BEGIN`,e[e.VIDEO_STREAM_END=8388610]=`VIDEO_STREAM_END`,e[e.VIDEO_FRAME=8388611]=`VIDEO_FRAME`,e[e.VIDEO_REQUEST_IDR_FRAME=8388612]=`VIDEO_REQUEST_IDR_FRAME`,e[e.VIDEO_INVALIDATE_FRAME=8388613]=`VIDEO_INVALIDATE_FRAME`,e[e.GROUP_ALL=16711680]=`GROUP_ALL`,e[e.GROUP_APP_LOCAL=1073741824]=`GROUP_APP_LOCAL`,e[e.CONSTANT_GROUP_MASK=2147418112]=`CONSTANT_GROUP_MASK`,e}({});function y(e){let t={};return ee(t),e&&Object.assign(t,e),t}function ee(e){return e.Data=new Uint8Array,e.FrameNumber=0,e.IsKey=!1,e.TimestampInUs=BigInt(0),e.DurationInUs=0,e}function b(e){let t=new o(1);return x(e,t),t.finish()}function x(e,t){t.writeUInt64Field(271275304,e.TimestampInUs),t.writeUInt32Field(2541432218,e.DurationInUs>>>0),t.writeBinaryField(2986785889,e.Data),t.writeBoolField(3105403172,e.IsKey),t.writeInt32Field(3456383222,e.FrameNumber|0)}function S(e,t,n){return r(8388611,b(e),1,t,n)}function C(e){let t={};return te(t),e&&Object.assign(t,e),t}function te(e){return e.StreamId=``,e.Description=``,e.SourceType=``,e.Codec=_.H264,e.CodecDetails=``,e.Width=0,e.Height=0,e.Framerate=30,e.CorrelationId=void 0,e}function w(e){let t=new o(6);return T(e,t),t.finish()}function T(e,t){t.writeStringField(161083277,e.StreamId),t.writeFloat64Field(164808083,e.Framerate),t.writeStringField(1368629611,e.Description);let n=e.CorrelationId;n!=null&&t.writeStringField(2514959030,n),t.writeStringField(2745379226,e.CodecDetails),t.writeInt32Field(2950031986,e.Height|0),t.writeStringField(3282782683,e.SourceType),t.writeInt32Field(3284746250,e.Codec),t.writeInt32Field(4065070594,e.Width|0)}function E(e,t,n){return r(8388609,w(e),6,t,n)}function D(e){let t={};return e&&Object.assign(t,e),t}function O(e){return new o(1).finish()}function k(e,t,n){return r(8388610,O(e),1,t,n)}const A=[`avc1.42001f`,`avc1.4d001f`,`avc1.42001e`,`avc1.4d001e`,`avc1.640028`,`avc1.4d0028`];A[0];const j=[`vp09.00.10.08`,`vp09.00.20.08`,`vp09.00.30.08`,`vp09.00.40.08`];j[0];const M=[`av01.0.04M.08`,`av01.0.05M.08`,`av01.0.08M.08`,`av01.0.01M.08`];M[0];const N=[`h264`,`vp8`,`vp9`,`av1`];function P(e){let t=N.slice();if(!Array.isArray(e)||e.length===0)return t;let n=[];for(let t of e)N.includes(t)&&!n.includes(t)&&n.push(t);if(n.length===0)return t;for(let e of t)n.includes(e)||n.push(e);return n}const F=[{width:1920,height:1080},{width:1280,height:720},{width:960,height:540},{width:640,height:480},{width:640,height:360}],I=e=>self.postMessage(e);let L=null,R=null;function z(e,t){let n=e instanceof Error?e:Error(String(e));I({type:`error`,captureId:t,error:{name:n.name,message:n.message,stack:n.stack}})}function ne(e){return e===`h264`?_.H264:e===`vp8`?_.Vp8:e===`vp9`?_.Vp9:e===`av1`?_.Av1:_.Unknown}const B={[_.Unknown]:[],[_.H264]:A,[_.Vp8]:[`vp8`],[_.Vp9]:j,[_.Av1]:M};function V(e,t,n,r){let i=e*t,a=n/30*.1,o=Math.floor(i*a);return Math.max(5e4,Math.floor(r??Math.max(5e5,Math.min(o,8e6))))}function H(e,t){let n=[{width:e,height:t}];for(let r of F)(r.width<e||r.height<t)&&(n.some(e=>e.width===r.width&&e.height===r.height)||n.push(r));return n}async function U(e,t,n,r,i,a,o){let s={codec:t,width:n,height:r,bitrate:i,framerate:a,latencyMode:`realtime`,...e===_.H264?{avc:{format:`annexb`}}:{}};if(typeof VideoEncoder?.isConfigSupported!=`function`)return null;if(o){let e={...s,hardwareAcceleration:o};try{let t=await VideoEncoder.isConfigSupported(e);if(t.supported){let n=t.config??e;return{config:n,isHardwareAccelerated:n.hardwareAcceleration===`prefer-hardware`}}}catch{}}try{let e=await VideoEncoder.isConfigSupported(s);if(e.supported)return{config:e.config??s,isHardwareAccelerated:!1}}catch{}return null}async function W(e,t,n,r){let i=Math.max(1,Math.floor(n?.framerate??30)),a=P(n?.preferredCodecs),o=n?.hardwareAcceleration===`preferSoftware`?[`prefer-software`,`prefer-hardware`,void 0]:[`prefer-hardware`,`prefer-software`,void 0],s=H(e,t),c=a;if(r){let e={[_.H264]:`h264`,[_.Vp8]:`vp8`,[_.Vp9]:`vp9`,[_.Av1]:`av1`}[r];e&&!a.includes(e)?c=[e,...a]:e&&(c=[e,...a.filter(t=>t!==e)])}for(let e of s){let t=V(e.width,e.height,i,n?.bitrate);for(let n of o)for(let r of c){let a=ne(r),o=B[a]??[];for(let r of o){let o=await U(a,r,e.width,e.height,t,i,n);if(o)return{codec:a,config:o.config,isHardwareAccelerated:o.isHardwareAccelerated}}}}throw Error(`No supported video encoder configuration`)}function G(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.slice().buffer}function K(e){if(!L)return;let t=G(e);L.postMessage({type:`send`,message:t},[t])}const q=new Map,J=new Map,Y=[];function X(e){for(let t=0;t<Y.length;t++)if(Y[t].length>=e){let n=Y[t];return Y.splice(t,1),n.length===e?n:new Uint8Array(n.buffer,0,e)}return new Uint8Array(e)}function Z(e){Y.length<8&&e.buffer.byteLength>0&&Y.push(new Uint8Array(e.buffer))}function Q(e){try{e.encoder.close()}catch{}}function re(e,t){try{if(e.stopped||e.isReconfiguring)return;if(e.kind===`screen`&&e.minFrameIntervalUs>0){let n=t.timestamp??0,r=n-e.lastEncodedTimestamp;if(e.lastEncodedTimestamp>0&&r<e.minFrameIntervalUs)return;e.lastEncodedTimestamp=n}if(e.encoder.encodeQueueSize>3)return;e.frameCounter+=1;let n=e.forceKeyframe||e.frameCounter>0&&e.frameCounter%e.keyFrameIntervalFrames===0;e.forceKeyframe=!1,e.encoder.encode(t,{keyFrame:n})}catch(t){z(t,e.captureId),e.forceKeyframe=!0}finally{try{t.close()}catch{}}}async function ie(e){try{for(;!e.stopped;){let t=await e.reader.read();if(t.done)break;let n=t.value;n&&re(e,n)}}catch(t){e.stopped||z(t,e.captureId)}}async function ae(e){if(!L)throw Error(`Video capture worker missing send port`);if(q.has(e.captureId))return;let t=Math.max(1,Math.floor(e.width)),n=Math.max(1,Math.floor(e.height)),r=await W(t,n,e.options),i=Math.max(1,Math.floor(e.options?.keyFrameIntervalFrames??90)),a=r.config.width??t,o=r.config.height??n,s=r.config.framerate??30,c=r.config.bitrate??0,l=e.trackSettings?.frameRate,u=l??s,d=e.options?.framerate??30,f=e.kind===`screen`?Math.floor(1e6/d):0,p=new VideoEncoder({output:t=>{let n=q.get(e.captureId);if(!n||n.stopped)return;let r=X(t.byteLength);t.copyTo(r);let i=S(y({Data:r,FrameNumber:n.frameCounter,IsKey:t.type===`key`,TimestampInUs:BigInt(Math.max(0,Math.round(t.timestamp??0))),DurationInUs:Math.max(0,Math.round(t.duration??0))}),n.senderId,{trackId:n.trackId});Z(r),K(i)},error:t=>{z(t,e.captureId)}});p.configure(r.config);let m=r.isHardwareAccelerated?`hardware`:`software`,h=e.kind===`screen`?`${Math.round(d)}fps (throttled from ${l===void 0?`?`:Math.round(l)}fps)`:l===void 0?`${Math.round(s)}fps (configured)`:`${Math.round(u)}fps (track)`;I({type:`debug`,message:`Encoder configured: codec=${r.config.codec}, ${a}x${o}@${h}, bitrate=${c}bps, hw=${m}`});let g=e.readable.getReader(),_={captureId:e.captureId,streamId:e.streamId,sourceType:e.sourceType,kind:e.kind,senderId:e.senderId,trackId:e.trackId,width:a,height:o,framerate:u,codec:r.codec,encoder:p,encoderConfig:r.config,options:e.options,correlationId:e.correlationId,reader:g,frameCounter:0,keyFrameIntervalFrames:i,forceKeyframe:!0,stopped:!1,isReconfiguring:!1,isHardwareAccelerated:r.isHardwareAccelerated,targetFramerate:d,lastEncodedTimestamp:0,minFrameIntervalUs:f};q.set(e.captureId,_),J.set(e.trackId,e.captureId);let v=e.kind===`screen`?d:u;K(E(C({StreamId:e.streamId,Description:`${e.kind}:${e.streamId}`,SourceType:e.sourceType,Codec:_.codec,CodecDetails:r.config.codec,Width:a,Height:o,Framerate:v,CorrelationId:e.correlationId}),e.senderId,{trackId:e.trackId})),I({type:`started`,captureId:e.captureId,codec:_.codec,width:a,height:o}),ie(_)}async function $(e){let t=q.get(e);if(t){t.stopped=!0,q.delete(e),J.delete(t.trackId);try{await t.reader.cancel()}catch{}try{await t.encoder.flush()}catch{}Q(t),K(k(D({}),t.senderId,{trackId:t.trackId})),I({type:`stopped`,captureId:t.captureId})}}async function oe(e,t,n){let r=q.get(e);if(!r||r.stopped||r.width===t&&r.height===n)return;r.isReconfiguring=!0,I({type:`debug`,message:`Window resize detected: ${r.width}x${r.height} -> ${t}x${n}`});try{await r.encoder.flush()}catch{}r.width=t,r.height=n;let i=await W(t,n,r.options,r.codec);Q(r),r.codec=i.codec,r.encoderConfig=i.config,r.isHardwareAccelerated=i.isHardwareAccelerated,r.encoder=new VideoEncoder({output:t=>{let n=q.get(e);if(!n||n.stopped)return;let r=X(t.byteLength);t.copyTo(r);let i=S(y({Data:r,FrameNumber:n.frameCounter,IsKey:t.type===`key`,TimestampInUs:BigInt(Math.max(0,Math.round(t.timestamp??0))),DurationInUs:Math.max(0,Math.round(t.duration??0))}),n.senderId,{trackId:n.trackId});Z(r),K(i)},error:t=>{z(t,e)}}),r.encoder.configure(i.config),r.forceKeyframe=!0;let a=i.config.width??t,o=i.config.height??n,s=r.kind===`screen`?r.targetFramerate:r.framerate;K(E(C({StreamId:r.streamId,Description:`${r.kind}:${r.streamId}`,SourceType:r.sourceType,Codec:r.codec,CodecDetails:i.config.codec,Width:a,Height:o,Framerate:s,CorrelationId:r.correlationId}),r.senderId,{trackId:r.trackId})),r.isReconfiguring=!1;let c=i.isHardwareAccelerated?`hardware`:`software`,l=r.kind===`screen`?`${Math.round(r.targetFramerate)}fps (throttled)`:`${Math.round(r.framerate)}fps`;I({type:`debug`,message:`Encoder reconfigured: codec=${i.config.codec}, ${a}x${o}@${l}, bitrate=${i.config.bitrate??0}bps, hw=${c}`})}async function se(e,t){let n=q.get(e);if(!n||n.stopped)return;let r=P(n.options?.preferredCodecs),i=P(t.preferredCodecs),a=JSON.stringify(r)!==JSON.stringify(i),o=n.options?.bitrate!==t.bitrate,s=n.options?.framerate!==t.framerate,c=t.width!==void 0&&n.options?.width!==t.width,l=t.height!==void 0&&n.options?.height!==t.height;if(!a&&!o&&!s&&!c&&!l)return;n.isReconfiguring=!0,I({type:`debug`,message:`Options update: codec=${a}, bitrate=${o}, framerate=${s}, width=${c}, height=${l}`}),n.options=t,n.kind===`camera`&&(c&&t.width!==void 0&&(n.width=t.width),l&&t.height!==void 0&&(n.height=t.height));try{await n.encoder.flush()}catch{}let u=await W(n.width,n.height,t);Q(n),n.codec=u.codec,n.encoderConfig=u.config,n.isHardwareAccelerated=u.isHardwareAccelerated,n.framerate=u.config.framerate??n.framerate,n.encoder=new VideoEncoder({output:t=>{let n=q.get(e);if(!n||n.stopped)return;let r=X(t.byteLength);t.copyTo(r);let i=S(y({Data:r,FrameNumber:n.frameCounter,IsKey:t.type===`key`,TimestampInUs:BigInt(Math.max(0,Math.round(t.timestamp??0))),DurationInUs:Math.max(0,Math.round(t.duration??0))}),n.senderId,{trackId:n.trackId});Z(r),K(i)},error:t=>{z(t,e)}}),n.encoder.configure(u.config),n.forceKeyframe=!0,n.kind===`screen`&&s&&t.framerate!==void 0&&(n.targetFramerate=t.framerate,n.minFrameIntervalUs=Math.floor(1e6/t.framerate),n.lastEncodedTimestamp=0);let d=u.config.width??n.width,f=u.config.height??n.height;K(E(C({StreamId:n.streamId,Description:`${n.kind}:${n.streamId}`,SourceType:n.sourceType,Codec:n.codec,CodecDetails:u.config.codec,Width:d,Height:f,Framerate:n.kind===`screen`?n.targetFramerate:n.framerate,CorrelationId:n.correlationId}),n.senderId,{trackId:n.trackId})),n.isReconfiguring=!1;let p=u.isHardwareAccelerated?`hardware`:`software`,m=n.kind===`screen`?`${Math.round(n.targetFramerate)}fps (throttled)`:`${Math.round(n.framerate)}fps`;I({type:`debug`,message:`Encoder reconfigured (options): codec=${u.config.codec}, ${d}x${f}@${m}, bitrate=${u.config.bitrate??0}bps, hw=${p}`})}function ce(r){let i=e(new Uint8Array(r));if(t(i)!==v.VIDEO_REQUEST_IDR_FRAME)return;let a=n(i),o=J.get(a.trackId);if(!o)return;let s=q.get(o);s&&(s.forceKeyframe=!0)}async function le(){let e=Array.from(q.keys()).map(e=>$(e).catch(()=>{}));if(await Promise.all(e),R){try{R.close()}catch{}R=null}if(L){try{L.close()}catch{}L=null}}self.addEventListener(`message`,e=>{let t=e.data;if(t.type===`attachSendPort`){if(L)try{L.close()}catch{}L=t.port;try{L.start?.()}catch{}return}if(t.type===`attachProtocolPort`){if(R)try{R.close()}catch{}R=t.port,R.addEventListener(`message`,e=>{let t=e.data;t?.type===`protocol`&&t.message instanceof ArrayBuffer&&ce(t.message)});try{R.start?.()}catch{}return}if(t.type===`start`){ae(t).catch(e=>z(e,t.captureId));return}if(t.type===`stop`){$(t.captureId).catch(e=>z(e,t.captureId));return}if(t.type===`updateDimensions`){oe(t.captureId,t.width,t.height).catch(e=>z(e,t.captureId));return}if(t.type===`updateOptions`){se(t.captureId,t.options).catch(e=>z(e,t.captureId));return}t.type===`dispose`&&le().catch(()=>{})});
|