@talkjs/core 1.6.3 → 1.7.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.
@@ -1,2 +1,2 @@
1
- "use strict";var e,t,n,s,r=Object.defineProperty,i=Object.defineProperties,a=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable,c=e=>{throw TypeError(e)},h=(e,t,n)=>t in e?r(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,d=(e,t)=>{for(var n in t||(t={}))u.call(t,n)&&h(e,n,t[n]);if(o)for(var n of o(t))l.call(t,n)&&h(e,n,t[n]);return e},p=(e,t)=>i(e,a(t)),f=(e,t)=>{var n={};for(var s in e)u.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&o)for(var s of o(e))t.indexOf(s)<0&&l.call(e,s)&&(n[s]=e[s]);return n},m=(e,t,n)=>t.has(e)||c("Cannot "+n),g=(e,t,n)=>(m(e,t,"read from private field"),n?n.call(e):t.get(e)),v=(e,t,n)=>t.has(e)?c("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),b=(e,t,n,s)=>(m(e,t,"write to private field"),s?s.call(e,n):t.set(e,n),n),y=(e,t,n)=>new Promise(((s,r)=>{var i=e=>{try{o(n.next(e))}catch(rt){r(rt)}},a=e=>{try{o(n.throw(e))}catch(rt){r(rt)}},o=e=>e.done?s(e.value):Promise.resolve(e.value).then(i,a);o((n=n.apply(e,t)).next())}));function w(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if("*"!==t[n]&&e[n]!==t[n])return!1;return!0}function C(e){return e<=0?Promise.resolve():new Promise((t=>setTimeout(t,e)))}function A(e,t){return e*(1-t+2*Math.random()*t)}Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=()=>!0;function k(e,t,n){return y(this,arguments,(function*(e,t,{initialDelay:n,maxDelay:s,log:r,shouldRetry:i=E}){return t().catch((a=>y(this,null,(function*(){if(0===e)throw a;if(!(yield i(a)))throw a;const o=1e3*n*1.2,u=A(s?Math.min(1e3*s,o):o,.05);return C(u).then((()=>k(e-1,t,{initialDelay:u/1e3,maxDelay:s,log:r,shouldRetry:i})))}))))}))}function x(){const e={},t=new Promise((function(t,n){e.resolve=t,e.reject=n}));return e.promise=t,e}class T{constructor(e,t,n){this.layer=e,this.states=t,this.transitions=n,this._state=t[0]}get state(){return this._state}transition(e){const t=this.transitions[e];if(!t)return;if(!this.canTransition(e))return;const n=this.state;this._state=t.to,t.afterTransition({from:n,to:this.state})}canTransition(e){const t=this.transitions[e];return!!t&&("ANY"===t.from||t.from.includes(this.state))}}function I(e){return{ok:!0,value:e}}function D(e){return{ok:!1,where:"client",value:e}}function S(e){return{ok:!1,where:"server",value:e}}function M(){const e={},t=new Promise((t=>{e.ok=e=>y(this,null,(function*(){return t(I(e))})),e.clientErr=e=>t(D(e)),e.serverErr=e=>t(S(e)),e.resolve=e=>t(e)}));return e.promise=t,e}function F(e,t){if(t.ok)return t.value.data;if("SESSION_DESTROYED"===t.value)throw new Error(`${e} failed because the session was destroyed`);if("server"===t.where)throw new Error(B(e,t.value));throw"unreachable"}function B(e,t){let n;return n=Array.isArray(t.reasons)?t.reasons.join():JSON.stringify(t.reasons),`${e} failed, got status ${t.status} ${t.errorCode}, reasons: ${n}`}let R=null;class N{constructor(e,t){this.realtimeUrl=e,this.handlers=t,this.socket=null,this.stateMachine=new T("ReconnectingSocket",["STOPPED","CONNECTING","READY","DISCONNECTED","TERMINATED"],{startWs:{from:["STOPPED","DISCONNECTED"],to:"CONNECTING",afterTransition:()=>{const e=new(function(){if(R)return R;if(globalThis.WebSocket)return globalThis.WebSocket;throw new Error("Missing WebSocket implementation")}())(this.realtimeUrl+"&talkjs-time="+Date.now());this.socket=e,e.addEventListener("open",(()=>{this.socket===e&&this.stateMachine.transition("onOpen")})),e.addEventListener("close",(()=>{this.socket===e&&this.stateMachine.transition("onClose")})),e.addEventListener("message",(t=>{this.socket===e&&this.handlers.onMessage(t)}))}},onOpen:{from:["CONNECTING"],to:"READY",afterTransition:()=>{this.handlers.onOpen()}},onClose:{from:["CONNECTING","READY"],to:"DISCONNECTED",afterTransition:e=>y(this,[e],(function*({from:e}){"READY"===e&&this.handlers.onClose(),this.socket=null;const t=A(1e4,.5);setTimeout((()=>{"DISCONNECTED"===this.stateMachine.state&&this.stateMachine.transition("startWs")}),t)}))},stopWs:{from:["CONNECTING","DISCONNECTED","READY"],to:"STOPPED",afterTransition:({from:e})=>{"READY"===e&&this.handlers.onClose();const t=this.socket;this.socket=null,null==t||t.close(1e3)}},destroy:{from:"ANY",to:"TERMINATED",afterTransition:()=>{const e=this.socket;this.socket=null,null==e||e.close(1e3)}}})}stopWs(){this.stateMachine.transition("stopWs")}startWs(){this.stateMachine.transition("startWs")}send(e){return"READY"===this.stateMachine.state?(this.socket.send(e),I(void 0)):D("SOCKET_NOT_READY")}terminate(){const e=this.socket;this.stateMachine.canTransition("onClose")&&this.stateMachine.transition("onClose"),e&&("terminate"in e?e.terminate():e.close(1e3))}destroy(){this.stateMachine.transition("destroy")}}class _{constructor(e,t){this.handlers=t,this.socket=new N(e,{onOpen:()=>this.handlers.onOpen(),onClose:()=>this.handlers.onClose(),onMessage:e=>this.onWebSocketMessage(e)})}call(e,t){const n=`/${t.path.map((e=>encodeURIComponent(e))).join("/")}`,s=JSON.stringify([e,t.method,n,t.data,t.headers]);return this.socket.send(s)}stopWs(){this.socket.stopWs()}startWs(){this.socket.startWs()}destroy(){this.socket.destroy()}terminate(){this.socket.terminate()}onWebSocketMessage(e){try{const t=JSON.parse(e.data);if("PUBLISH"===t[1]){const e=t[0],n=JSON.stringify([e,"ACK"]);this.socket.send(n);const s=t.slice(2),r=[];s.forEach((e=>{"session.expired"===e.type?this.handlers.onAuthExpired():"upstream.restarting"===e.type?this.handlers.onUpstreamRestarting():r.push(e)})),r.length>0&&this.handlers.onPublish(e,r)}else{const e=t[0],n=t[1],s=t[2];this.handlers.onResponse(e,n,s)}}catch(t){}}}class O{constructor(e){this.delayMs=e,this.timeout=void 0}schedule(e){this.stop(),this.timeout=setTimeout((()=>{void 0!==this.timeout&&(this.stop(),e())}),this.delayMs)}stop(){void 0!==this.timeout&&(clearTimeout(this.timeout),this.timeout=void 0)}}const P="undefined"!=typeof window&&null!=(e=window.queueMicrotask)?e:setTimeout;class j{constructor(){this.i=-1}next(){return this.i++,this.i}reset(){this.i=-1}}class ${constructor(e,t){this.handlers=t,this.seqCounter=new j,this.responseHandlers={},this.heartbeats=new U(this),this.socket=new _(e,{onUpstreamRestarting:()=>{this.heartbeats.serverActive(),this.handlers.onUpstreamRestarting()},onOpen:()=>{this.heartbeats.clientActive(),this.heartbeats.serverActive(),this.handlers.onReady()},onClose:()=>{this.heartbeats.stop(),Object.values(this.responseHandlers).forEach((e=>{e.clientErr("WEBSOCKET_DISCONNECTED")})),this.responseHandlers={},this.seqCounter.reset(),this.handlers.onNotReady()},onResponse:(e,t,n)=>{this.heartbeats.serverActive(),this.onResponse(e,t,n)},onPublish:(e,t)=>{this.heartbeats.serverActive(),this.handlers.onPublish(e,t),this.heartbeats.clientActive()},onAuthExpired:()=>{this.heartbeats.serverActive(),this.handlers.onAuthExpired()}})}sync(){return y(this,null,(function*(){yield new Promise((e=>P((()=>e()))));const e=Object.values(this.responseHandlers).map((e=>e.promise.catch((()=>{}))));return Promise.all(e)}))}call(e){const t=this.seqCounter.next(),n=M();this.responseHandlers[t]=n;const s=this.socket.call(t,e);return s.ok||(n.resolve(s),delete this.responseHandlers[t]),this.heartbeats.clientActive(),n.promise}onResponse(e,t,n){return y(this,null,(function*(){const s=this.responseHandlers[e];s&&(200===t?s.ok({status:t,data:n}):s.serverErr({status:t,errorCode:n.errorCode,reasons:n.reasons}),delete this.responseHandlers[e])}))}stopWs(){this.socket.stopWs()}startWs(){this.socket.startWs()}destroy(){this.heartbeats.stop(),Object.values(this.responseHandlers).forEach((e=>{e.clientErr("WEBSOCKET_DISCONNECTED")})),this.responseHandlers={},this.socket.destroy()}terminate(){this.socket.terminate()}}class U{constructor(e){this.connection=e,this.clientInactivityTimer=new O(25e3),this.serverInactivityTimer=new O(1e4),this.serverTimeoutTimer=new O(5e3)}clientActive(){this.clientInactivityTimer.schedule((()=>{this.sendHeartbeat()}))}serverActive(){this.serverTimeoutTimer.stop(),this.serverInactivityTimer.schedule((()=>{this.sendHeartbeat(),this.serverTimeoutTimer.schedule((()=>{this.connection.terminate()}))}))}stop(){this.clientInactivityTimer.stop(),this.serverInactivityTimer.stop(),this.serverTimeoutTimer.stop()}sendHeartbeat(){this.connection.call({method:"GET",path:["ping"],data:{},headers:{}}).catch((()=>{}))}}class W{constructor(e,t,n){this.authProvider=t,this.handlers=n,this.stateMachine=new T("AuthenticatedConnection",["WAITING_FOR_WS","LOGGING_IN","RENEWING_SESSION","READY","TERMINATED"],{logIn:{from:["WAITING_FOR_WS"],to:"LOGGING_IN",afterTransition:()=>y(this,null,(function*(){yield this.renewSession()}))},logInFailed:{from:["LOGGING_IN"],to:"LOGGING_IN",afterTransition:()=>y(this,null,(function*(){this.authProvider.invalidateAndRefresh(),yield this.renewSession()}))},scheduledReauth:{from:["READY"],to:"RENEWING_SESSION",afterTransition:()=>y(this,null,(function*(){yield this.renewSession()}))},scheduledReauthFailed:{from:["RENEWING_SESSION"],to:"RENEWING_SESSION",afterTransition:()=>y(this,null,(function*(){this.authProvider.invalidateAndRefresh(),yield this.renewSession()}))},authenticated:{from:["LOGGING_IN","RENEWING_SESSION"],to:"READY",afterTransition:({from:e})=>{"LOGGING_IN"===e&&this.handlers.onReady()}},authExpired:{from:["READY","RENEWING_SESSION"],to:"LOGGING_IN",afterTransition:()=>y(this,null,(function*(){this.handlers.onNotReady(),this.authProvider.invalidateAndRefresh(),yield this.renewSession()}))},wsDisconnected:{from:["READY","LOGGING_IN","RENEWING_SESSION"],to:"WAITING_FOR_WS",afterTransition:({from:e})=>{"READY"!==e&&"RENEWING_SESSION"!==e||this.handlers.onNotReady(),this.authProvider.clearScheduledRefresh()}},destroy:{from:"ANY",to:"TERMINATED",afterTransition:()=>{this.authProvider.clearScheduledRefresh(),this.connection.destroy()}}}),this.connection=new $(e,{onUpstreamRestarting:()=>this.handlers.onUpstreamRestarting(),onReady:()=>this.stateMachine.transition("logIn"),onNotReady:()=>{this.stateMachine.transition("wsDisconnected")},onAuthExpired:()=>{this.stateMachine.transition("authExpired")},onPublish:(e,t)=>{this.handlers.onPublish(e,t)}}),t.onTokenChanged((()=>{"READY"===this.stateMachine.state&&this.stateMachine.transition("scheduledReauth")}))}sync(){return y(this,null,(function*(){return this.connection.sync()}))}call(e){const t=this.connection.call(e);return t.then((e=>{e.ok||"server"!==e.where||401!==e.value.status||"READY"!==this.stateMachine.state&&"RENEWING_SESSION"!==this.stateMachine.state||this.stateMachine.transition("authExpired")})),t}stopWs(){this.connection.stopWs()}startWs(){this.connection.startWs(),this.authProvider.getToken().catch((()=>{}))}destroy(){this.stateMachine.transition("destroy")}renewSession(){return y(this,null,(function*(){const e=yield this.authProvider.getToken().catch((()=>{}));if(!e)return;const t=yield this.connection.call({method:"POST",path:["session","renew"],data:{token:e},headers:{}});if(!t.ok&&"client"===t.where)return;const n=t.value;if(n.status,200===n.status){const t=n.data.expiresInSeconds;return void(null!==t&&t<120?(console.warn(`[TalkJS] Authenticated with a token that expires in ${t}s. Treating it as already expired and refreshing. Newly generated tokens should last at least 10 minutes.`),"LOGGING_IN"===this.stateMachine.state?this.stateMachine.transition("logInFailed"):"RENEWING_SESSION"===this.stateMachine.state&&this.stateMachine.transition("scheduledReauthFailed")):(this.authProvider.scheduleRefresh(t),this.authProvider.emitTokenAccepted(e),this.stateMachine.canTransition("authenticated")&&this.stateMachine.transition("authenticated")))}if(401===n.status)return void("LOGGING_IN"===this.stateMachine.state?this.stateMachine.transition("logInFailed"):"RENEWING_SESSION"===this.stateMachine.state&&this.stateMachine.transition("scheduledReauthFailed"));if(400===n.status)return void this.authProvider.emitTokenRefreshFailed(B("Authentication",n));if(402===n.status)return void this.authProvider.emitTokenRefreshFailed(B("Authentication",n));const s=5e3*Math.random()+5e3;setTimeout((()=>{this.call({method:"POST",path:["session","renew"],data:{token:e},headers:{}}).catch((()=>{}))}),s)}))}}class q{constructor(e,t,n){this.handlers=n,this.stateMachine=new T("StopStartConnection",["STOPPED","WAITING_FOR_WS","READY","TERMINATED"],{unexpectedDisconnect:{from:["READY"],to:"WAITING_FOR_WS",afterTransition:()=>{this.inactivityTimer.stop(),this.handlers.onNotReady()}},stop:{from:["WAITING_FOR_WS","READY"],to:"STOPPED",afterTransition:()=>{this.connection.stopWs(),this.inactivityTimer.stop(),this.handlers.onNotReady()}},start:{from:["STOPPED"],to:"WAITING_FOR_WS",afterTransition:()=>{this.connection.startWs()}},ready:{from:["WAITING_FOR_WS"],to:"READY",afterTransition:()=>{this.pendingCalls=0,this.activeSubscriptions=0,this.inactivityTimer.schedule((()=>{this.stateMachine.transition("stop")})),this.handlers.onReady()}},destroy:{from:"ANY",to:"TERMINATED",afterTransition:()=>{this.inactivityTimer.stop(),this.connection.destroy()}}}),this.pendingCalls=0,this.activeSubscriptions=0,this.inactivityTimer=new O(3e3),this.connection=new W(e,t,{onUpstreamRestarting:()=>{this.handlers.onUpstreamRestarting()},onReady:()=>{this.stateMachine.transition("ready")},onNotReady:()=>{"READY"===this.stateMachine.state&&this.stateMachine.transition("unexpectedDisconnect")},onPublish:(e,t)=>{this.handlers.onPublish(e,t)}})}get inactive(){return 0===this.pendingCalls&&0===this.activeSubscriptions}sync(){return y(this,null,(function*(){return this.connection.sync()}))}ensureStarted(){this.stateMachine.canTransition("start")&&this.stateMachine.transition("start")}call(e){return y(this,null,(function*(){this.inactivityTimer.stop(),this.pendingCalls++,this.logTrace("Called",e.path,e.data);const t=yield this.connection.call(e);return this.pendingCalls--,this.logTrace("Received",e.path,e.data),"SUBSCRIBE"===e.method&&t.ok?(this.activeSubscriptions++,this.logTrace("Subscribed",e.path,e.data)):"UNSUBSCRIBE"===e.method&&t.ok&&(this.activeSubscriptions--,this.logTrace("Unsubscribed",e.path,e.data)),this.inactive&&this.inactivityTimer.schedule((()=>{this.stateMachine.transition("stop")})),t}))}destroy(){this.stateMachine.transition("destroy")}isConnected(){return"READY"===this.stateMachine.state}logTrace(e,t,n){}}class H{constructor(e,t,n){this.handlers=n,this.stateMachine=new T("QueuedConnection",["NOT_READY","PROCESSING_QUEUE","READY","TERMINATED"],{processQueue:{from:["NOT_READY"],to:"PROCESSING_QUEUE",afterTransition:()=>{this.sendQueuedCalls()}},ready:{from:["PROCESSING_QUEUE"],to:"READY",afterTransition:()=>{this.handlers.onReady()}},notReady:{from:["PROCESSING_QUEUE","READY"],to:"NOT_READY",afterTransition:()=>{Object.values(this.subscribeQueue).forEach((e=>e.deferred.ok({status:200,data:{}}))),this.subscribeQueue={},this.handlers.onSubscriptionsLost()}},destroy:{from:"ANY",to:"TERMINATED",afterTransition:()=>{for(var e;this.callQueue.length;){const t=null==(e=this.callQueue.shift())?void 0:e.deferred;null==t||t.clientErr("SESSION_DESTROYED")}this.connection.destroy()}}}),this.subscribeQueue={},this.callQueue=[],this.connection=new q(e,t,{onUpstreamRestarting:()=>{this.handlers.onUpstreamRestarting()},onReady:()=>{this.stateMachine.transition("processQueue")},onNotReady:()=>{this.stateMachine.transition("notReady")},onPublish:(e,t)=>{this.handlers.onPublish(e,t)}})}sync(){return y(this,null,(function*(){return this.connection.sync()}))}call(e){return"READY"===this.stateMachine.state?this.connection.call(e):("NOT_READY"===this.stateMachine.state&&this.connection.ensureStarted(),"SUBSCRIBE"===e.method||"UNSUBSCRIBE"===e.method?this._subscribe(e):this._call(e))}_subscribe(e){const t=e.path.join("/"),n=this.subscribeQueue[t];if(n&&n.params.method===e.method)return n.deferred.promise;n&&n.params.method!==e.method&&(n.deferred.ok({status:200,data:{}}),delete this.subscribeQueue[t]);const s={deferred:M(),params:e};return this.subscribeQueue[t]=s,s.deferred.promise}_call(e){const t={deferred:M(),params:e};return this.callQueue.push(t),t.deferred.promise}dequeue(){for(const e in this.subscribeQueue){const t=this.subscribeQueue[e];return delete this.subscribeQueue[e],t}return this.callQueue.shift()}destroy(){this.stateMachine.transition("destroy")}sendQueuedCalls(){return y(this,null,(function*(){let e=0;for(;"PROCESSING_QUEUE"===this.stateMachine.state;){e++;const t=this.dequeue();if(!t)return void this.stateMachine.transition("ready");this.connection.call(t.params).then((e=>{t.deferred.resolve(e)})),e>50&&(yield new Promise((e=>setTimeout(e,100))))}}))}isConnected(){return"READY"===this.stateMachine.state||"PROCESSING_QUEUE"===this.stateMachine.state}}function L(e){return Object.freeze(e)}function G(e){return L(e.map((e=>function(e){switch(e.type){case"text":return Object.freeze({type:"text",children:z(e.children)});case"file":case"location":return Object.freeze(e)}}(e))))}function z(e){return L(e.map((e=>function(e){if("string"==typeof e)return e;switch(e.type){case"bold":case"italic":case"strikethrough":case"bulletList":case"bulletPoint":case"link":case"actionLink":case"actionButton":return Object.freeze(p(d({},e),{children:z(e.children)}));case"mention":case"autoLink":case"codeSpan":case"customEmoji":return Object.freeze(e)}}(e))))}function J(e,t){return void 0===t?e:t}function Y(e,t){return void 0===t?e:L(t)}function Q(e,t){if(void 0===t)return e;if(null===t)return L({});const n=d({},e);for(const s in t){const e=t[s];null===e?delete n[s]:n[s]=e}return L(n)}function V(e,t){if(e===t)return!0;if(!e||!t)return!1;if("object"!=typeof e||"object"!=typeof t)return!1;if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!V(e[n],t[n]))return!1}else{const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(const s of n){if(!Object.hasOwnProperty.call(t,s))return!1;if(!V(e[s],t[s]))return!1}}return!0}const Z="undefined"!=typeof window&&null!=(t=window.queueMicrotask)?t:setTimeout;class K{constructor(e,t,n){this.headers=e,this.clearPendingBatch=t,this.sendCalls=n,this.sent=!1,Z((()=>this.send()))}send(){this.sent||(this.sent=!0,this.clearPendingBatch(),this.sendCalls())}destroy(){this.sent=!0}}class X extends K{constructor(e,t,n){super(t,n,(()=>{this.sendSubscribe(),this.sendGet()})),this.connection=e,this.getCalls=[],this.subscribeCalls=[]}canPush(e){return X.isCorrectBatchTypeFor(e)&&V(this.headers,e.headers)}static isCorrectBatchTypeFor(e){const t=w(e.path,["users","*"]),n="GET"===e.method||"SUBSCRIBE"===e.method;return t&&n}push(e){const t=e.path[1],n=M();return"GET"===e.method?this.getCalls.push({userId:t,deferred:n}):this.subscribeCalls.push({userId:t,deferred:n}),1e3!==this.getCalls.length&&1e3!==this.subscribeCalls.length||this.send(),n.promise}sendGet(){return y(this,null,(function*(){if(0===this.getCalls.length)return;const e=[...new Set(this.getCalls.map((e=>e.userId)))],t=yield this.connection.call({method:"GET",path:["users"],data:{ids:e,includePrivateFields:!1},headers:this.headers});if(t.ok)for(const n of this.getCalls){const e=t.value.data[n.userId];e?n.deferred.ok({status:200,data:e}):n.deferred.serverErr({status:404,errorCode:"NOT_FOUND",reasons:["No user with that ID exists"]})}else this.getCalls.forEach((e=>e.deferred.resolve(t)))}))}sendSubscribe(){if(0===this.subscribeCalls.length)return;const e=[...new Set(this.subscribeCalls.map((e=>e.userId)))];this.connection.call({method:"SUBSCRIBE",path:["users"],data:{ids:e},headers:this.headers}).then((e=>this.subscribeCalls.forEach((t=>t.deferred.resolve(e)))))}}class ee extends K{constructor(e,t,n,s){super(n,s,(()=>this.sendMutate())),this.conversationId=e,this.connection=t,this.calls=[]}canPush(e){return!(!ee.isCorrectBatchTypeFor(e)||e.path[1]!==this.conversationId||!V(this.headers,e.headers))}static isCorrectBatchTypeFor(e){return!(!w(e.path,["conversations","*","participants","*"])||"PUT"!==e.method&&"POST"!==e.method&&"PATCH"!==e.method)}push(e){const t=e.path[3],n=M();return this.calls.push({action:{id:t,method:e.method,params:e.data},deferred:n}),100===this.calls.length&&this.send(),n.promise}sendMutate(){return y(this,null,(function*(){const e=this.calls.map((e=>e.action)),t=yield this.connection.call({method:"POST",path:["conversations",this.conversationId,"participants"],data:{actions:e},headers:this.headers});if(!t.ok)return void this.calls.forEach((e=>e.deferred.resolve(t)));const n=t.value.data.responses;for(let s=0;s<n.length;s++){const e=this.calls[s].deferred,t=n[s];200===t.status?e.ok(p(d({},t),{data:{}})):e.serverErr(t)}}))}}class te{constructor(e,t,n){this.pendingBatch=null,this.connection=new H(e,t,n)}sync(){return y(this,null,(function*(){return this.connection.sync()}))}call(e){return y(this,null,(function*(){var t;if(null==(t=this.pendingBatch)?void 0:t.canPush(e))return this.pendingBatch.push(e);this.pendingBatch&&this.pendingBatch.send();const n=this.createEmptyBatchFor(e);return n?(this.pendingBatch=n,n.push(e)):this.connection.call(e)}))}destroy(){var e;this.connection.destroy(),null==(e=this.pendingBatch)||e.destroy()}isConnected(){return this.connection.isConnected()}createEmptyBatchFor(e){var t,n;if(X.isCorrectBatchTypeFor(e))return new X(this.connection,null!=(t=e.headers)?t:{},(()=>this.pendingBatch=null));if(ee.isCorrectBatchTypeFor(e)){const t=e.path[1];return new ee(t,this.connection,null!=(n=e.headers)?n:{},(()=>this.pendingBatch=null))}return null}}const ne={200:"RESOLVE",400:"RESOLVE",401:"RETRY",402:"RESOLVE",403:"RESOLVE",404:"RESOLVE",405:"RESOLVE",409:"RESOLVE",429:"DELAY",500:"DELAY"};class se{constructor(e,t,n){this.throttler=new re,this.alive=!0,this.connection=new te(e,t,n)}sync(){return y(this,null,(function*(){return this.connection.sync()}))}call(e){return y(this,null,(function*(){let t=0;for(;this.alive;){const n=yield this.connection.call(e);if((n.ok||"client"!==n.where||"SOCKET_NOT_READY"!==n.value)&&(n.ok||"server"!==n.where||500!==n.value.status)||t++,10===t)return n;if(n.ok||"client"!==n.where){const e=n.value,t=e.status,s=ne[t];if("RESOLVE"===s)return this.throttler.resetDelay(),n;if("RETRY"===s)continue;if("DELAY"===s){yield this.throttler.wait();continue}return console.warn("[TalkJS] Unexpected status code",t),e}if("SESSION_DESTROYED"===n.value)return D("SESSION_DESTROYED");"WEBSOCKET_DISCONNECTED"!==n.value&&("SOCKET_NOT_READY"!==n.value?n.value:yield this.throttler.wait())}return D("SESSION_DESTROYED")}))}destroy(){this.alive=!1,this.connection.destroy()}isConnected(){return this.connection.isConnected()}}class re{constructor(){this.initialDelayMs=200,this.exponentialFactor=1.2,this.maxDelayMs=3e4,this.currentDelayMs=this.initialDelayMs,this.lastCall=0}getCurrentDelay(){return this.currentDelayMs}wait(){const e=(new Date).getTime(),t=A(this.currentDelayMs,.05),n=this.lastCall+t,s=Math.max(0,n-e);return this.lastCall=e+s,this.currentDelayMs=Math.min(t*this.exponentialFactor,this.maxDelayMs),C(s)}resetDelay(){this.currentDelayMs=this.initialDelayMs}}function ie(e){return e.map((e=>encodeURIComponent(e))).join()}class ae{constructor(){this.paths={}}add(e){this.paths[ie(e)]=e}delete(e){delete this.paths[ie(e)]}has(e){return Object.hasOwnProperty.call(this.paths,ie(e))}clear(){this.paths={}}forEach(e){Object.values(this.paths).forEach((t=>e(t)))}}class oe{constructor(e,t,n){this.handlers=n,this.targetSubscriptions=new ae,this.connection=new se(e,t,{onUpstreamRestarting:()=>this.handlers.onUpstreamRestarting(),onSubscriptionsLost:()=>{this.targetSubscriptions.forEach((e=>{this.resubscribe(e)})),this.handlers.onResubscribeSent()},onReady:()=>this.handlers.onReady(),onPublish:(e,t)=>{this.handlers.onPublish(e,t)}})}sync(){return y(this,null,(function*(){return this.connection.sync()}))}call(e){return this.connection.call(e)}subscribe(e){return y(this,null,(function*(){return this.targetSubscriptions.add(e),this.connection.call({method:"SUBSCRIBE",path:e,data:{},headers:{}})}))}unsubscribe(e){return y(this,null,(function*(){return this.targetSubscriptions.delete(e),this.connection.call({method:"UNSUBSCRIBE",path:e,data:{},headers:{}})}))}resubscribe(e){return y(this,null,(function*(){const t=yield this.connection.call({method:"SUBSCRIBE",path:e,data:{},headers:{}});t.ok||this.handlers.onResubscribeError(e,t)}))}destroy(){this.targetSubscriptions.clear(),this.connection.destroy()}isConnected(){return this.connection.isConnected()}}class ue{constructor(){this.prev=Promise.resolve()}runExclusive(e){return y(this,null,(function*(){const t=this.prev.then((()=>e()));return this.prev=t,t}))}sync(){return y(this,null,(function*(){return this.runExclusive((()=>{}))}))}}class le{constructor(e){this.initialised=!1,this.getPointer=void 0,this.pendingStates=[e],e.resultPromise.then((()=>this.initialised=!0))}get pendingPointer(){if(0!==this.pendingStates.length)return this.pendingStates[this.pendingStates.length-1]}get mostRecentState(){var e;return null!=(e=this.pendingPointer)?e:this.getPointer}canAppendState(e){var t,n;const s=null==(t=this.getPointer)?void 0:t.seq;if(void 0!==s&&e<=s)return!1;const r=null==(n=this.pendingPointer)?void 0:n.seq;return!(void 0!==r&&e<r)}set(e){if(!this.canAppendState(e.seq))throw"Appending in the past";this.pendingStates.push(e)}mutate(e,t){if(!this.initialised)return;if(!this.canAppendState(e))throw"Mutating in the past";const n=this.mostRecentState.resultPromise.then((e=>e.ok?t(e):e));this.pendingStates.push({seq:e,resultPromise:n})}get(e){for(;this.pendingStates.length>0&&(void 0===this.getPointer||this.pendingStates[0].seq<=e);)this.getPointer=this.pendingStates.shift();return this.getPointer}}class ce extends le{constructor(e,t){super(e),this.onTeardown=t,this._error=null,this._lastGoodState=Promise.resolve(void 0),this.registerNewState(e.resultPromise)}get error(){return this._error}get lastGoodState(){return this._lastGoodState}mutate(e,t){super.mutate(e,t),this.registerNewState(this.mostRecentState.resultPromise)}set(e){super.set(e),this.registerNewState(this.mostRecentState.resultPromise)}registerNewState(e){const t=this.lastGoodState;this._lastGoodState=e.then((e=>e.ok?e.value:t)),e.then((e=>{e.ok||this.setError(e)}))}setError(e){var t;this._error||(this._error=e,null==(t=this.onTeardown)||t.call(this,e),this.lastGoodState.then((e=>{void 0!==e&&this.teardownNested(e)})))}}class he extends ce{constructor(e,t){const n=new Promise((e=>setTimeout(e))).then((()=>this.fetchInitial(e)));super({seq:e,resultPromise:n},t.onTeardown),this.initialSeq=e,this.getDeepMutex=new ue,this.lastDeep=void 0}refetchInitial(e){return y(this,null,(function*(){const t=this.mostRecentState.resultPromise,n=this.fetchInitial(e),[s,r]=yield Promise.all([t,n]);return void 0!==s&&s.ok&&r.ok&&this.equal(s.value,r.value)?s:r}))}refetch(e){if(null!==this.error)return;const t={seq:e,resultPromise:this.refetchInitial(e)};this.set(t)}changedBetween(e,t){return y(this,null,(function*(){if(e>=t)return!1;const n=this.get(t),s=yield n.resultPromise;return!!s.ok&&(s.value.lastChanged>Math.max(this.initialSeq,e)&&s.value.lastChanged<=t||(yield this.anyChildChanged(e,t,s.value)))}))}getDeep(e){return y(this,null,(function*(){return this.getDeepMutex.runExclusive((()=>y(this,null,(function*(){var t;if(null!==this.error)return this.error;const n=null==(t=this.lastDeep)?void 0:t.seq;if(e===n)return this.lastDeep.deep;if(void 0!==n){if(e<n)throw`Trying to load seq ${e} when we have previously loaded seq ${n}`;if(!(yield this.changedBetween(n,e)))return this.lastDeep.seq=e,this.lastDeep.deep}const s=this.get(e).resultPromise,r=s.then((t=>t.ok?this.loadNested(e,t.value):t));this.lastDeep={seq:e,shallow:s,deep:r};const i=yield r;return i.ok||this.setError(i),i}))))}))}}class de extends he{constructor(e,t,n){super(e,n),this.emitMutex=t,this.externallyIdleTimer=new pe,this.externallyIdle=!0,this.internallyIdleTimer=new pe,this.internallyIdle=!0,this.referencedByOtherStores=0,this.listeners=[],this.lastEmitSeq=void 0,this.lastEmitResult=void 0,t.runExclusive((()=>y(this,null,(function*(){yield this.emit(e)}))))}registerInternalSubscription(){this.internallyIdleTimer.stop(),this.internallyIdle=!1,this.referencedByOtherStores++;let e=!0;return()=>{e&&(e=!1,this.referencedByOtherStores--,0===this.referencedByOtherStores&&this.internallyIdleTimer.restart((()=>{this.internallyIdle=!0,this.tryFullyUnsubscribe()}),this.unsubscribeDebounceMs),this.tryFullyUnsubscribe())}}get onlyUsedInternally(){return 0===this.listeners.length}listen(e){this.externallyIdleTimer.stop(),this.externallyIdle=!1,this.listeners.push(e),void 0!==this.lastEmitResult&&e(this.lastEmitResult);let t=!0;return()=>{t&&(t=!1,this.listeners=this.listeners.filter((t=>t!==e)),0===this.listeners.length&&this.externallyIdleTimer.restart((()=>{this.externallyIdle=!0,this.tryFullyUnsubscribe()}),this.unsubscribeDebounceMs))}}tryFullyUnsubscribe(){this.externallyIdle&&this.internallyIdle&&this.setError(D("UNSUBSCRIBED"))}emit(e){return y(this,null,(function*(){var t;if(this.lastEmitSeq&&this.lastEmitSeq>=e)return;if(!1===(null==(t=this.lastEmitResult)?void 0:t.ok))return;this.lastEmitSeq=e;const n=yield this.getDeep(e);n!==this.lastEmitResult&&(this.lastEmitResult=n,this.listeners.forEach((e=>e(n))))}))}}class pe{constructor(){this.timerId=void 0}restart(e,t){void 0!==this.timerId&&clearTimeout(this.timerId),this.timerId=setTimeout((()=>e()),t)}stop(){clearTimeout(this.timerId)}}var fe,me={};function ge(e,t){const n=t.lastIndex;let s;const r=[];for(;null!==(s=t.exec(e));)r.push(s),""===s[0]&&(t.lastIndex+=1);return t.lastIndex=n,r}function ve(e){const t=e.replace(/%2F/g,"/").replace(/^.*?\/([^/]+?)(?:\?.*)?$/,"$1");return decodeURIComponent(t)}function be(e,t){e()||t||(t=e.toString().replace(/^function\s*\(\)\s*\{\s*return\s*(.*);\s*\}\s*$/,"`$1`")+" was not true")}!function(){if(fe)return me;function e(e){return String.fromCharCode(parseInt(e.slice(1),16))}function t(e){return`%${`00${e.charCodeAt(0).toString(16)}`.slice(-2)}`}fe=1,Object.defineProperty(me,"__esModule",{value:!0}),me.encode=function(t){return btoa(encodeURIComponent(t).replace(/%[0-9A-F]{2}/g,e))},me.decode=function(e){return decodeURIComponent(Array.from(atob(e),t).join(""))}}(),(e=>{function t(e,t){(function(e,t){switch(t){case"undefined":return void 0===e;case String:return"string"==typeof e||e instanceof String;case Boolean:return"boolean"==typeof e||e instanceof Boolean;case Number:return"number"==typeof e||e instanceof Number;default:return e instanceof t}})(e,t)||(t.name,String(e))}e.defined=function(e){},e.has=function(e,t){e[t]},e.is=t,e.equals=function(e,t){},e.oneOf=function(e,t){t.includes(e)||JSON.stringify(t)},e.isArray=function(e,n){t(e,Array),e&&e.length>0&&t(e[0],n)},e.optional=function(e,n){void 0!==e&&t(e,n)},e.falsy=function(e){},e.never=function(e){}})(be||(be={}));const ye=be,we=/^\/.*[^\\]\/[im]*$/;function Ce(e){return!!we.test(e)&&!Ae(e).test("")}function Ae(e){const t=e.match(/^\/(.*[^\\])\/(.*)$/);if(!t)throw new Error(`Expected ${e} to be a (non-empty) regex`);let n=t[2]||"";return n=n.replace(/[^im]/g,"")+"g",new RegExp(t[1],n)}class Ee{constructor({mode:e,allowedHostnames:t,allowedPhoneNrs:n,allowedMatches:s,forbiddenMatches:r,forbiddenWords:i,suppressLinks:a,suppressEmailAddresses:o,suppressPhoneNumbers:u,replacement:l}){if(ye.oneOf(e,["all","otherOnly","off"]),this.mode=e,this.suppressLinks=!1!==a,this.suppressEmailAddresses=!1!==o,this.suppressPhoneNumbers=!1!==u,this.allowedHostnames=t||[],this.allowedPhoneNrs=(n||[]).filter((e=>e)).map((e=>e.replace(/[^0-9]/g,""))),this.allowedMatches=(s||[]).filter(Ce).map((e=>Ae(e))),this.forbiddenMatches=(r||[]).filter(Ce).map((e=>Ae(e))),i){const e=i.split("\n").map((e=>e.trim().toLowerCase())).filter((e=>e.length>0&&!e.startsWith("#"))).map((e=>e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")));e.length&&this.forbiddenMatches.push(new RegExp(`\\b(${e.join("|")})\\b`,"gi"))}ye((()=>this.allowedMatches.every((e=>e.flags.includes("g")))),"All regexes in `suppressContactInfo.allowedMatches` must be global. Check `allowedMatches`!"),ye((()=>this.forbiddenMatches.every((e=>e.flags.includes("g")))),"All regexes in `suppressContactInfo.forbiddenMatches` must be global. Check `forbiddenMatches`!"),l=null==l?void 0:l.trim(),this.replacement=l&&l.length>0?l:void 0}shouldSuppress({isContentBySender:e}){return"all"===this.mode||"otherOnly"===this.mode&&!e}}function ke(e,t){return e.map((e=>function(e,t){if("text"===e.type)return xe(e.children,function(e){var t,n,s,r,i,a,o,u,l,c,h,d,p;let f="";return e.t&&(f=`(${e.t("CONTACT_INFORMATION_HIDDEN")})`),{formattedLinks:null!=(t=e.formattedLinks)?t:"plaintext",markup:null!=(n=e.markup)&&n,useFallbackMentions:null!=(s=e.useFallbackMentions)&&s,sameTabLinkRules:null!=(r=e.sameTabLinkRules)?r:[],enableEmojiImageFallback:null!=(i=e.enableEmojiImageFallback)&&i,highlight:null!=(a=e.highlight)?a:[],contactInfo:null!=(o=e.contactInfo)&&o,suppression:null!=(u=e.suppression)?u:new Ee({mode:"off"}),contactInfoHiddenText:null!=(h=null!=(c=e.contactInfoHiddenText)?c:null==(l=e.suppression)?void 0:l.replacement)?h:f,customEmojiUrls:null!=(d=e.customEmojiUrls)?d:{},enableActions:null==(p=e.enableActions)||p}}(t));if("file"===e.type&&"video"===e.subtype)return`🎥 ${ve(e.url)}`;if("file"===e.type&&"image"===e.subtype)return`📷 ${ve(e.url)}`;if("file"===e.type&&"audio"===e.subtype)return`🎧 ${ve(e.url)}`;if("file"===e.type&&"voice"===e.subtype){const t=e.duration;return void 0===t?"🎙️":`🎙️ (${Math.floor(t/60)}:${Math.floor(t%60).toString().padStart(2,"0")})`}return"file"===e.type?(e.subtype,`📎 ${ve(e.url)}`):"location"===e.type?"📍":""}(e,t))).join("\n\n")}function xe(e,t){return e.flatMap((e=>{if("string"==typeof e)return e;switch(e.type){case"blockquote":case"bold":case"italic":case"strikethrough":case"link":case"actionlink":case"actionLink":case"actionbutton":case"actionButton":return xe(e.children,t);case"bulletlist":case"bulletList":return"\n"+xe(e.children,t);case"bulletpoint":case"bulletPoint":return"- "+xe(e.children,t)+"\n";case"autolink":case"autoLink":case"codeblock":case"codeBlock":case"codespan":case"codeSpan":case"emoji":case"customemoji":case"customEmoji":return e.text;case"suppressed":return t.contactInfoHiddenText;case"mention":return`@${e.text}`}})).join("")}function Te(e){return L({id:e.id,name:e.name,custom:L(e.custom),locale:e.locale,photoUrl:e.photoUrl,role:e.role,welcomeMessage:e.welcomeMessage})}function Ie(e,t){return L({user:t,access:e.access,notify:e.notify,joinedAt:e.joinedAt})}function De(e){const t=Object.entries(e).map((([e,t])=>L({emoji:e,count:t.count,currentUserReacted:t.currentUserReacted})));return t.sort(((e,t)=>e.emoji.localeCompare(t.emoji))),L(t)}class Se extends de{constructor(e,t,n,s,r){super(e,s,r),this.userId=t,this.realtimeClient=n,this.unsubscribeDebounceMs=3e4}fetchInitial(e){return y(this,null,(function*(){const t=yield this.realtimeClient.call({method:"GET",path:["users",this.userId],data:{includePrivateFields:!1},flags:{bypassCache:!0}});return t.ok?I({snapshot:Te(t.value.data),lastChanged:e}):"server"===t.where&&404===t.value.status?I({snapshot:null,lastChanged:e}):t}))}equal(e,t){return V(e.snapshot,t.snapshot)}loadNested(e,t){return y(this,null,(function*(){return I(t)}))}userCreated(e,t){this.mutate(e,(n=>null!==n.value.snapshot?n:I({snapshot:Te(t.state),lastChanged:e})))}userEdited(e,t){this.mutate(e,(n=>{const s=n.value.snapshot;return null===s?(console.warn("[TalkJS] Received a 'used edited' event for a user that we thought didn't exist."),n):I({snapshot:{id:s.id,name:J(s.name,t.diff.name),custom:Q(s.custom,t.diff.custom),locale:J(s.locale,t.diff.locale),photoUrl:J(s.photoUrl,t.diff.photoUrl),role:J(s.role,t.diff.role),welcomeMessage:J(s.welcomeMessage,t.diff.welcomeMessage)},lastChanged:e})}))}getFromCache(){return y(this,null,(function*(){const e=yield this.mostRecentState.resultPromise;return e.ok?null===e.value.snapshot?S({status:404,errorCode:"USER_NOT_FOUND",reasons:["That user does not exist yet"]}):I({status:200,data:{id:e.value.snapshot.id,name:e.value.snapshot.name,custom:e.value.snapshot.custom,locale:e.value.snapshot.locale,photoUrl:e.value.snapshot.photoUrl,role:e.value.snapshot.role,welcomeMessage:e.value.snapshot.welcomeMessage}}):D("NOT_IN_CACHE")}))}teardownNested(e){}anyChildChanged(e,t,n){return y(this,null,(function*(){return!1}))}}class Me extends he{constructor(e,t,n,s){super(e,{}),this.conversationId=t,this.message=n,this.realtimeClient=s}get messageId(){return"string"==typeof this.message?this.message:this.message.id}fetchInitial(e){return y(this,null,(function*(){let t;if("object"==typeof this.message)t=this.message;else{const e=yield this.realtimeClient.call({method:"GET",path:["me","conversations",this.conversationId,"messages",this.message],data:{},flags:{bypassCache:!0}});if(!e.ok)return e;t=e.value.data}return I({lastChanged:e,sender:null===t.senderId?null:this.realtimeClient.internalSubscribe(["users",t.senderId]),data:{id:t.id,type:t.type,custom:L(t.custom),createdAt:t.createdAt,editedAt:t.editedAt,referencedMessageId:t.referencedMessageId,origin:t.origin,plaintext:ke(t.content,{}),content:G(t.content),reactions:De(t.reactions)}})}))}refetch(e){throw"Do not call refetch on message data stores, it can return outdated data. Destroy and remake them instead"}equal(e,t){return V(e.data,t.data)}teardownNested(e){var t;null==(t=e.sender)||t.unsubscribe()}anyChildChanged(e,t,n){return y(this,null,(function*(){var s;const r=null==(s=n.sender)?void 0:s.store;return!0===(yield null==r?void 0:r.changedBetween(e,t))}))}loadNested(e,t){return y(this,null,(function*(){var n,s,r;const i=yield null==(s=null==(n=t.sender)?void 0:n.store)?void 0:s.getDeep(e);if(!1===(null==i?void 0:i.ok))return i;if(null===t.data)return I({snapshot:null});const a=null==i?void 0:i.value;return I({snapshot:L({sender:null!=(r=null==a?void 0:a.snapshot)?r:null,id:t.data.id,type:t.data.type,custom:L(t.data.custom),createdAt:t.data.createdAt,editedAt:t.data.editedAt,origin:t.data.origin,plaintext:t.data.plaintext,content:t.data.content,referencedMessageId:t.data.referencedMessageId,reactions:t.data.reactions})})}))}messageEdited(e,t){this.mutate(e,(n=>{if(null===n.value.data)return n;const s=n.value.data.content,r=(i=s,void 0===(a=t.diff.content)?i:G(a));var i,a;const o=s===r?n.value.data.plaintext:ke(r,{});return I({lastChanged:e,sender:n.value.sender,data:{id:n.value.data.id,type:n.value.data.type,createdAt:n.value.data.createdAt,origin:n.value.data.origin,referencedMessageId:n.value.data.referencedMessageId,editedAt:J(n.value.data.editedAt,t.diff.editedAt),custom:Q(n.value.data.custom,t.diff.custom),plaintext:o,content:r,reactions:Fe(n.value.data.reactions,t.diff.reactions)}})}))}messageDeleted(e,t){this.mutate(e,(n=>null===n.value.data?n:this.messageId===t.messageId?(this.teardownNested(n.value),I({lastChanged:e,sender:null,data:null})):n.value.data.referencedMessageId===t.messageId?I({lastChanged:e,sender:n.value.sender,data:{id:n.value.data.id,type:n.value.data.type,createdAt:n.value.data.createdAt,origin:n.value.data.origin,referencedMessageId:null,editedAt:n.value.data.editedAt,custom:n.value.data.custom,plaintext:n.value.data.plaintext,content:n.value.data.content,reactions:n.value.data.reactions}}):n))}getFromCache(){return y(this,null,(function*(){var e;const t=yield this.mostRecentState.resultPromise;if(!t.ok)return D("NOT_IN_CACHE");if(null===t.value.data)return S({status:404,errorCode:"MESSAGE_NOT_FOUND",reasons:["No message with that ID exists"]});const n=t.value,{sender:s}=n,r=f(n,["sender"]),i={};return r.data.reactions.forEach((e=>{i[e.emoji]={count:e.count,currentUserReacted:e.currentUserReacted}})),I({status:200,data:p(d({},r.data),{senderId:null!=(e=null==s?void 0:s.store.userId)?e:null,reactions:i})})}))}}function Fe(e,t){if(void 0===t)return e;const n=e.map((e=>{const n=t[e.emoji];return void 0===n?e:L(null===n?p(d({},e),{count:0}):{emoji:e.emoji,count:J(e.count,n.count),currentUserReacted:J(e.currentUserReacted,n.currentUserReacted)})})).filter((e=>e.count>0)),s=new Set(n.map((e=>e.emoji)));for(const r in t){const e=t[r];e&&!s.has(r)&&n.push(L({emoji:r,count:e.count,currentUserReacted:e.currentUserReacted}))}return n.sort(((e,t)=>e.emoji.localeCompare(t.emoji))),L(n)}class Be extends he{constructor(e,t,n,s){super(e,{}),this.createdAt=t,this.dataStore=n,this.referencedDataStore=s}get messageId(){return this.dataStore.messageId}fetchInitial(e){return y(this,null,(function*(){return I({lastChanged:e,dataStore:this.dataStore,referencedDataStore:this.referencedDataStore})}))}refetch(e){throw"Do not call refetch on message stores, it can return outdated data. Destroy and remake them instead"}equal(e,t){return!0}teardownNested(e){}anyChildChanged(e,t,n){return y(this,arguments,(function*(e,t,{dataStore:n,referencedDataStore:s}){return!0===(yield n.changedBetween(e,t))||!0===(yield null==s?void 0:s.changedBetween(e,t))}))}loadNested(e,t){return y(this,null,(function*(){var n,s,r;const i=yield t.dataStore.getDeep(e);if(!i.ok)return i;const a=i.value;if(null===a.snapshot)return I({snapshot:null});const o=yield null==(n=t.referencedDataStore)?void 0:n.getDeep(e);if(o&&!o.ok)return o;const u=null!=(s=null==o?void 0:o.value)?s:null,l=null!=(r=null==u?void 0:u.snapshot)?r:null;return I({snapshot:L({id:a.snapshot.id,type:a.snapshot.type,sender:a.snapshot.sender,custom:L(a.snapshot.custom),createdAt:a.snapshot.createdAt,editedAt:a.snapshot.editedAt,referencedMessage:l,origin:a.snapshot.origin,plaintext:a.snapshot.plaintext,content:a.snapshot.content,reactions:a.snapshot.reactions})})}))}}class Re extends de{constructor(e,t,n,s,r){super(e,s,r),this.conversationId=t,this.realtimeClient=n,this.handlers=r,this.unsubscribeDebounceMs=1e4,this.pendingLoadMore=void 0}listen(e){return this.onlyUsedInternally&&this.mostRecentState.resultPromise.then((e=>{if(e.ok&&null!==e.value.inWindow){const t=30-e.value.inWindow.length;t>0&&this._loadMoreMessages(t)}})),super.listen(e)}fetchInitial(e){return y(this,null,(function*(){const t=this.onlyUsedInternally?1:30,n=yield Ne({realtimeClient:this.realtimeClient,conversationId:this.conversationId,count:t});return n.ok?null===n.value.messages?I({lastChanged:e,lastMessageChanged:e,stores:null,inWindow:null,windowEnd:null}):_e({seq:e,messages:n.value.messages,cursor:n.value.nextCursor,conversationId:this.conversationId,realtimeClient:this.realtimeClient}):n}))}teardownNested(e){if(e.stores){const t=D("TERMINATED");Object.values(e.stores).forEach((e=>e.setError(t))),e.inWindow.forEach((e=>e.setError(t)))}}anyChildChanged(e,t,n){return y(this,null,(function*(){for(const s in n.stores){const r=n.stores[s];if(!0===(yield null==r?void 0:r.changedBetween(e,t)))return!0}return!1}))}lastMessageChangedBetween(e,t){return y(this,null,(function*(){if(e>=t)return!1;const n=yield this.get(t).resultPromise;if(!n.ok)return!1;if(n.value.lastMessageChanged>e)return!0;if(null===n.value.stores)return!1;const s=n.value.inWindow[0];return void 0!==s&&!0===(yield s.changedBetween(e,t))}))}equal(e,t){return null===e.stores&&null===t.stores||null!==e.stores&&null!==t.stores&&!!V(Object.keys(e.stores),Object.keys(t.stores))&&!!V(e.inWindow.map((e=>e.messageId)),t.inWindow.map((e=>e.messageId)))&&V(e.windowEnd,t.windowEnd)}loadNested(e,t){return y(this,null,(function*(){if(null===t.stores)return I({snapshot:null,loadedAll:!0});const n=yield Promise.all(t.inWindow.map((t=>t.getDeep(e)))),s=n.find((e=>!e.ok));return s||I({snapshot:L(n.filter((e=>null!==e.value.snapshot)).map((e=>e.value.snapshot))),loadedAll:null===t.windowEnd})}))}loadMore(e){return y(this,null,(function*(){if(this.pendingLoadMore)return this.pendingLoadMore;const t=x();this.pendingLoadMore=t.promise,yield this._loadMoreMessages(e),t.resolve(),this.pendingLoadMore=void 0}))}_loadMoreMessages(e=30){return y(this,null,(function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return;if(null===t.value.windowEnd)return;const n=t.value.windowEnd.cursor,s=yield Ne({count:e,cursor:n,conversationId:this.conversationId,realtimeClient:this.realtimeClient});yield this.handlers.onLoadedMore({type:"virtual.messages.loadedmore",conversationId:this.conversationId,data:s})}))}loadedMore(e,t){this.mutate(e,(n=>null===n.value.windowEnd?n:t.data.ok?null===t.data.value.messages?(console.warn("[TalkJS] When loading more messages, the conversation no longer existed. We should have been told about this."),n):_e({seq:e,prevState:n.value,messages:t.data.value.messages,cursor:t.data.value.nextCursor,conversationId:this.conversationId,realtimeClient:this.realtimeClient}):t.data))}messageCreated(e,t){this.mutate(e,(n=>{if(null===n.value.stores)return console.warn("[TalkJS] Received a 'message.created' event for a nonexistent conversation."),n;if(n.value.windowEnd&&t.state.createdAt<n.value.windowEnd.oldestMessageTs)return n;if(Object.hasOwnProperty.call(n.value.stores,t.state.id))return n;const s=d({},n.value.stores),r=new Me(e,this.conversationId,t.state,this.realtimeClient);s[t.state.id]=r;const i=t.state.referencedMessageId;let a;null===i?a=null:i in s?a=s[i]:(a=new Me(e,this.conversationId,i,this.realtimeClient),s[i]=a);const o=new Be(e,t.state.createdAt,r,a),u=[...n.value.inWindow,o];u.sort(((e,t)=>t.createdAt-e.createdAt));const l=u[0].messageId===t.messageId?e:n.value.lastMessageChanged;return I({lastChanged:e,lastMessageChanged:l,stores:s,inWindow:u,windowEnd:n.value.windowEnd})}))}messageEdited(e,t){this.mutate(e,(n=>{var s;return null===n.value.stores?(console.warn("[TalkJS] Received a 'message.edited' event for a nonexistent conversation."),n):(null==(s=n.value.stores[t.messageId])||s.messageEdited(e,t),n)}))}messageDeleted(e,t){this.mutate(e,(n=>{if(null===n.value.stores)return console.warn("[TalkJS] Received a 'message.deleted' event for a conversation that we thought didn't exist."),n;if(Object.values(n.value.stores).forEach((n=>n.messageDeleted(e,t))),void 0===n.value.stores[t.messageId])return n;const s=d({},n.value.stores);delete s[t.messageId];const r=n.value.inWindow.filter((e=>e.messageId!==t.messageId));if(t.newLastMessage&&0===r.length){const n=new Me(e,this.conversationId,t.newLastMessage,this.realtimeClient);s[n.messageId]=n;const i=t.newLastMessage.referencedMessageId;let a;null===i?a=null:i in s?a=s[i]:(a=new Me(e,this.conversationId,i,this.realtimeClient),s[i]=a);const o=new Be(e,t.newLastMessage.createdAt,n,a);r.push(o)}const i=void 0!==t.newLastMessage?e:n.value.lastMessageChanged;return I({lastChanged:e,lastMessageChanged:i,stores:s,inWindow:r,windowEnd:n.value.windowEnd})}))}conversationCleared(e,t){this.mutate(e,(t=>{var n;return 0===(null==(n=t.value.inWindow)?void 0:n.length)&&null===t.value.windowEnd?t:(this.teardownNested(t.value),I({lastChanged:e,lastMessageChanged:e,stores:{},inWindow:[],windowEnd:null}))}))}sideCreated(e,t){const n=this.fetchInitial(e);this.mutate(e,(e=>null!==e.value.stores?(n.then((e=>{e.ok&&this.teardownNested(e.value)})),e):n))}sideDeleted(e,t){this.mutate(e,(t=>null===t.value.stores?t:(this.teardownNested(t.value),I({lastChanged:e,lastMessageChanged:e,stores:null,inWindow:null,windowEnd:null}))))}getMessageFromCache(e){return y(this,null,(function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return D("NOT_IN_CACHE");if(null===t.value.stores)return D("NOT_IN_CACHE");const n=t.value.stores[e];return void 0===n?D("NOT_IN_CACHE"):n.getFromCache()}))}}function Ne(e){return y(this,arguments,(function*({cursor:e,realtimeClient:t,conversationId:n,count:s}){const r={limit:s,cursor:e},i=yield t.call({method:"GET",path:["me","conversations",n,"messages"],data:r,flags:{bypassCache:!0}});if(i.ok){const{data:e,cursor:t}=i.value.data;return I({messages:e,nextCursor:t})}return!i.ok&&"server"===i.where&&404===i.value.status||!i.ok&&"server"===i.where&&403===i.value.status&&"NOT_A_PARTICIPANT"===i.value.errorCode?I({messages:null,nextCursor:null}):i}))}function _e({seq:e,prevState:t,messages:n,cursor:s,conversationId:r,realtimeClient:i}){var a,o,u,l;const c=t?d({},t.stores):{};for(const d of n)if(void 0===c[d.id]){const t=new Me(e,r,d,i);c[t.messageId]=t}for(const d of n){const t=d.referencedMessageId;if(t&&void 0===c[t]){const n=new Me(e,r,t,i);c[n.messageId]=n}}const h=t?[...t.inWindow]:[];for(const d of n)h.push(new Be(e,d.createdAt,c[d.id],d.referencedMessageId?c[d.referencedMessageId]:null));h.sort(((e,t)=>t.createdAt-e.createdAt));const p=(null==(o=null==(a=null==t?void 0:t.inWindow)?void 0:a[0])?void 0:o.messageId)===(null==(u=null==h?void 0:h[0])?void 0:u.messageId)&&null!=(l=null==t?void 0:t.lastMessageChanged)?l:e;return I(null===s?{lastChanged:e,lastMessageChanged:p,stores:c,inWindow:h,windowEnd:null}:{lastChanged:e,lastMessageChanged:p,stores:c,inWindow:h,windowEnd:{cursor:s,oldestMessageTs:n[n.length-1].createdAt}})}class Oe extends de{constructor(e,t,n,s,r){super(e,s,r),this.convData=t,this.realtimeClient=n,this.unsubscribeDebounceMs=3e4}fetchInitial(e){return y(this,null,(function*(){return I({lastChanged:e,convData:this.convData})}))}teardownNested(e){e.convData.unsubscribe()}anyChildChanged(e,t,n){return y(this,null,(function*(){return n.convData.store.changedBetween(e,t)}))}equal(e,t){return!0}loadNested(e,t){return y(this,null,(function*(){return t.convData.store.getDeep(e)}))}getFromCache(){return y(this,null,(function*(){return this.convData.store.getFromCache()}))}}function Pe(e,t){for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t(e[n],n)}function je(e,t){return function(e){let n={};return Pe(e,((e,s)=>{const[r,i]=(([e,n])=>[e,t(n,e)])([s,e],0);n[r]=i})),n}(e)}class $e extends de{constructor(e,t,n,s,r){super(e,s,r),this.conversationId=t,this.realtimeClient=n,this.unsubscribeDebounceMs=1e4}fetchInitial(e){return y(this,null,(function*(){const t=yield this.realtimeClient.call({method:"GET",path:["me","conversations",this.conversationId,"typing"],data:{},flags:{bypassCache:!0}});if(!t.ok&&"server"===t.where&&404===t.value.status)return I({data:null,lastChanged:e});if(!t.ok&&"server"===t.where&&403===t.value.status&&"NOT_A_PARTICIPANT"===t.value.errorCode)return I({data:null,lastChanged:e});if(!t.ok)return t;const n=t.value.data;return n.many?I({data:{usersTyping:null,many:!0},userSubscriptions:{},lastChanged:e}):I({data:n,userSubscriptions:je(n.usersTyping,((e,t)=>this.realtimeClient.internalSubscribe(["users",t]))),lastChanged:e})}))}equal(e,t){return V(e.data,t.data)}loadNested(e,t){return y(this,null,(function*(){if(null===t.data)return I({snapshot:null,lastChanged:t.lastChanged});if(t.data.many)return I({snapshot:L({many:!0}),lastChanged:t.lastChanged});const n=Object.entries(t.data.usersTyping).sort((([e,t],[n,s])=>t-s)).map((([e,t])=>e)).map((n=>t.userSubscriptions[n].store.getDeep(e))),s=yield Promise.all(n),r=s.find((e=>!e.ok));if(r)return r;const i=s.map((e=>e.value)),a=i.map((e=>e.snapshot)),o=i.map((e=>e.lastChanged)),u=Math.max(t.lastChanged,...o);return I({snapshot:L({users:L(a),many:!1}),lastChanged:u})}))}typingAvailable(e,t){this.mutate(e,(()=>I({data:t.state,userSubscriptions:t.state.many?{}:je(t.state.usersTyping,((e,t)=>this.realtimeClient.internalSubscribe(["users",t]))),lastChanged:e})))}typingChanged(e,t){this.mutate(e,(n=>{if(null===n.value.data)return n;if(void 0===t.diff.many){if(!0===n.value.data.many)return n;const s=d({},n.value.data.usersTyping),r=d({},n.value.userSubscriptions);return Pe(t.diff.usersTyping,((e,t)=>{var n;"number"==typeof e?(s[t]=e,r[t]=this.realtimeClient.internalSubscribe(["users",t])):null===e&&(delete s[t],null==(n=r[t])||n.unsubscribe(),delete r[t])})),I({data:{usersTyping:s,many:!1},userSubscriptions:r,lastChanged:e})}if(!0===t.diff.many)return n.value.data.many?n:I({data:{usersTyping:null,many:!0},userSubscriptions:{},lastChanged:e});if(!1===t.diff.many){if(!1===n.value.data.many)return n;const s=je(t.diff.usersTyping,((e,t)=>this.realtimeClient.internalSubscribe(["users",t])));return I({data:t.diff,userSubscriptions:s,lastChanged:e})}throw t.diff,"Unreachable"}))}sideDeleted(e,t){this.mutate(e,(t=>null===t.value.data?t:I({data:null,lastChanged:e})))}teardownNested(e){e.data&&Pe(e.userSubscriptions,(e=>e.unsubscribe()))}anyChildChanged(e,t,n){return y(this,null,(function*(){var s;if(null===n.data)return!1;for(const r in n.userSubscriptions){const i=n.userSubscriptions[r];if(!0===(yield null==(s=null==i?void 0:i.store)?void 0:s.changedBetween(e,t)))return!0}return!1}))}}class Ue extends he{constructor(e,t,n,s){super(e,{}),this.conversationId=t,this.participantData=n,this.realtimeClient=s}fetchInitial(e){return y(this,null,(function*(){return I({lastChanged:e,user:this.realtimeClient.internalSubscribe(["users",this.participantData.id]),data:this.participantData})}))}refetch(e){throw"Do not call refetch on participant data stores, it can return outdated data. Destroy and remake them instead"}equal(e,t){var n,s,r,i;return(null==(s=null==(n=e.user)?void 0:n.store)?void 0:s.userId)===(null==(i=null==(r=t.user)?void 0:r.store)?void 0:i.userId)&&V(e.data,t.data)}teardownNested(e){var t;null==(t=e.user)||t.unsubscribe()}anyChildChanged(e,t,n){return y(this,null,(function*(){var s;const r=null==(s=n.user)?void 0:s.store;return!0===(yield null==r?void 0:r.changedBetween(e,t))}))}loadNested(e,t){return y(this,null,(function*(){if(null===t.data)return I({snapshot:null});const n=yield t.user.store.getDeep(e);if(!1===n.ok)return n;const s=n.value.snapshot;return I({snapshot:Ie(t.data,s)})}))}participantEdited(e,t){this.mutate(e,(n=>null===n.value.data?n:I({lastChanged:e,user:n.value.user,data:{id:n.value.data.id,access:J(n.value.data.access,t.diff.access),notify:J(n.value.data.notify,t.diff.notify),joinedAt:n.value.data.joinedAt}})))}participantDeleted(e,t){this.mutate(e,(t=>null===t.value.data?t:(this.teardownNested(t.value),I({lastChanged:e,user:null,data:null}))))}getFromCache(){return y(this,null,(function*(){const e=yield this.mostRecentState.resultPromise;return e.ok?null===e.value.data?S({status:404,errorCode:"PARTICIPANT_NOT_FOUND",reasons:["No participant with that ID exists"]}):I({status:200,data:e.value.data}):D("NOT_IN_CACHE")}))}}class We extends de{constructor(e,t,n,s,r){super(e,s,r),this.conversationId=t,this.realtimeClient=n,this.handlers=r,this.unsubscribeDebounceMs=3e4,this.pendingLoadMore=void 0}fetchInitial(e){return y(this,null,(function*(){const t=yield qe({realtimeClient:this.realtimeClient,conversationId:this.conversationId,count:10});return t.ok?null===t.value.participants?I({lastChanged:e,stores:null,inWindow:null,windowEnd:null}):He({seq:e,participants:t.value.participants,cursor:t.value.nextCursor,conversationId:this.conversationId,realtimeClient:this.realtimeClient}):t}))}teardownNested(e){if(e.stores){const t=D("TERMINATED");Object.values(e.stores).forEach((e=>e.setError(t)))}}anyChildChanged(e,t,n){return y(this,null,(function*(){for(const s in n.stores){const r=n.stores[s];if(!0===(yield null==r?void 0:r.changedBetween(e,t)))return!0}return!1}))}equal(e,t){return null===e.stores&&null===t.stores||null!==e.stores&&null!==t.stores&&!!V(Object.keys(e.stores),Object.keys(t.stores))&&V(e.windowEnd,t.windowEnd)}loadNested(e,t){return y(this,null,(function*(){if(null===t.stores)return I({snapshot:null,loadedAll:!0});const n=yield Promise.all(Object.values(t.stores).map((t=>t.getDeep(e)))),s=n.find((e=>!e.ok));if(s)return s;const r=n.filter((e=>null!==e.value.snapshot)).map((e=>e.value.snapshot));return r.sort(((e,t)=>t.joinedAt-e.joinedAt)),I({snapshot:L(r),loadedAll:null===t.windowEnd})}))}loadMore(e){return y(this,null,(function*(){if(this.pendingLoadMore)return this.pendingLoadMore;const t=x();this.pendingLoadMore=t.promise,yield this._loadMoreParticipants(e),t.resolve(),this.pendingLoadMore=void 0}))}_loadMoreParticipants(e=10){return y(this,null,(function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return;if(null===t.value.windowEnd)return;const n=t.value.windowEnd.cursor,s=yield qe({count:e,cursor:n,conversationId:this.conversationId,realtimeClient:this.realtimeClient});yield this.handlers.onLoadedMore({type:"virtual.participants.loadedmore",conversationId:this.conversationId,data:s})}))}loadedMore(e,t){this.mutate(e,(n=>null===n.value.windowEnd?n:t.data.ok?null===t.data.value.participants?(console.warn("[TalkJS] When loading more participants, the conversation no longer existed. We should have been told about this."),n):He({seq:e,prevStores:n.value.stores,participants:t.data.value.participants,cursor:t.data.value.nextCursor,conversationId:this.conversationId,realtimeClient:this.realtimeClient}):t.data))}participantCreated(e,t){this.mutate(e,(n=>{if(null===n.value.stores)return console.warn("[TalkJS] Received a 'participant.created' event for a nonexistent conversation."),n;if(n.value.windowEnd&&t.state.joinedAt<n.value.windowEnd.oldestParticipantTs)return n;if(Object.hasOwnProperty.call(n.value.stores,t.state.id))return n;const s=d({},n.value.stores),r=new Ue(e,this.conversationId,t.state,this.realtimeClient);return s[t.state.id]=r,I({lastChanged:e,stores:s,windowEnd:n.value.windowEnd})}))}participantEdited(e,t){this.mutate(e,(n=>{var s;return null===n.value.stores?(console.warn("[TalkJS] Received a 'participant.edited' event for a nonexistent conversation."),n):(null==(s=n.value.stores[t.userId])||s.participantEdited(e,t),n)}))}participantDeleted(e,t){this.mutate(e,(n=>{if(null===n.value.stores)return console.warn("[TalkJS] Received a 'participant.deleted' event for a conversation that we thought didn't exist."),n;const s=n.value.stores[t.userId];if(void 0===s)return n;s.participantDeleted(e,t);const r=d({},n.value.stores);return delete r[t.userId],I({lastChanged:e,stores:r,windowEnd:n.value.windowEnd})}))}sideCreated(e,t){const n=this.fetchInitial(e);this.mutate(e,(e=>null!==e.value.stores?(n.then((e=>{e.ok&&this.teardownNested(e.value)})),e):n))}sideDeleted(e,t){this.mutate(e,(t=>null===t.value.stores?t:(this.teardownNested(t.value),I({lastChanged:e,stores:null,inWindow:null,windowEnd:null}))))}getParticipantFromCache(e){return y(this,null,(function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return D("NOT_IN_CACHE");if(null===t.value.stores)return D("NOT_IN_CACHE");const n=t.value.stores[e];return void 0===n?D("NOT_IN_CACHE"):n.getFromCache()}))}}function qe(e){return y(this,arguments,(function*({cursor:e,realtimeClient:t,conversationId:n,count:s}){const r={limit:s,cursor:e},i=yield t.call({method:"GET",path:["me","conversations",n,"participants"],data:r,flags:{bypassCache:!0}});if(i.ok){const{data:e,cursor:t}=i.value.data;return I({participants:e,nextCursor:t})}return!i.ok&&"server"===i.where&&404===i.value.status||!i.ok&&"server"===i.where&&403===i.value.status&&"NOT_A_PARTICIPANT"===i.value.errorCode?I({participants:null,nextCursor:null}):i}))}function He({seq:e,prevStores:t,participants:n,cursor:s,conversationId:r,realtimeClient:i}){const a=t?d({},t):{};for(const o of n)if(void 0===a[o.id]){const t=new Ue(e,r,o,i);a[o.id]=t}return I(null===s?{lastChanged:e,stores:a,windowEnd:null}:{lastChanged:e,stores:a,windowEnd:{cursor:s,oldestParticipantTs:n[n.length-1].joinedAt}})}class Le extends de{constructor(e,t,n,s,r){super(e,s,r),this.getConvDataStore=t,this.realtimeClient=n,this.handlers=r,this.unsubscribeDebounceMs=1e4,this.pendingLoadMore=void 0}fetchInitial(e){return y(this,null,(function*(){const t=yield Ge({realtimeClient:this.realtimeClient,count:20});return t.ok?null===t.value.conversations?I({lastChanged:e,stores:null,windowEnd:null}):ze({seq:e,conversations:t.value.conversations,cursor:t.value.nextCursor,getConvDataStore:this.getConvDataStore}):t}))}teardownNested(e){null!==e.stores&&Object.values(e.stores).forEach((e=>e.unsubscribe()))}anyChildChanged(e,t,n){return y(this,null,(function*(){var s;for(const r in n.stores){const i=n.stores[r];if(!0===(yield null==(s=null==i?void 0:i.store)?void 0:s.changedBetween(e,t)))return!0}return!1}))}equal(e,t){return null===e.stores&&null===t.stores||null!==e.stores&&null!==t.stores&&!!V(Object.keys(e.stores),Object.keys(t.stores))&&V(e.windowEnd,t.windowEnd)}loadNested(e,t){return y(this,null,(function*(){if(null===t.stores)return I({snapshot:L([]),loadedAll:!0});const n=yield Promise.all(Object.values(t.stores).map((t=>t.store.getDeep(e)))),s=n.find((e=>!e.ok));if(s)return s;const r=n.filter((e=>null!==e.value.snapshot)).map((e=>e.value.snapshot));return r.sort(((e,t)=>{var n,s,r,i;const a=null!=(s=null==(n=e.lastMessage)?void 0:n.createdAt)?s:e.joinedAt;return(null!=(i=null==(r=t.lastMessage)?void 0:r.createdAt)?i:t.joinedAt)-a})),I({snapshot:L(r),loadedAll:null===t.windowEnd})}))}loadMore(e){return y(this,null,(function*(){if(this.pendingLoadMore)return this.pendingLoadMore;const t=x();this.pendingLoadMore=t.promise,yield this._loadMoreConversations(e),t.resolve(),this.pendingLoadMore=void 0}))}_loadMoreConversations(e=20){return y(this,null,(function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return;if(null===t.value.windowEnd)return;const n=t.value.windowEnd.cursor,s=yield Ge({count:e,cursor:n,realtimeClient:this.realtimeClient});yield this.handlers.onLoadedMore({type:"virtual.conversations.loadedmore",data:s})}))}getConvFromCache(e){return y(this,null,(function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return D("NOT_IN_CACHE");if(null===t.value.stores)return S({status:404,errorCode:"USER_NOT_FOUND",reasons:["No user with that ID exists"]});const n=t.value.stores[e];return void 0===n?D("NOT_IN_CACHE"):n.store.getFromCache()}))}loadedMore(e,t){this.mutate(e,(n=>null===n.value.windowEnd?n:t.data.ok?null===t.data.value.conversations?(console.warn("[TalkJS] When loading more conversations, the user stopped existing, which should be impossible."),n):ze({seq:e,prevStores:n.value.stores,conversations:t.data.value.conversations,cursor:t.data.value.nextCursor,getConvDataStore:this.getConvDataStore}):t.data))}userCreated(e,t){this.mutate(e,(e=>null!==e.value.stores?e:I({lastChanged:e.value.lastChanged,stores:{},windowEnd:null})))}sideCreated(e,t){const n=this.getConvDataStore(t.state);this.mutate(e,(s=>{let r=s.value.stores;return null===r&&(console.warn("[TalkJS] Received a 'side.created' event when we thought your user didn't exist."),r={}),Object.hasOwnProperty.call(r,t.conversationId)?(n.unsubscribe(),s):I({lastChanged:e,stores:p(d({},r),{[t.conversationId]:n}),windowEnd:s.value.windowEnd})}))}sideDeleted(e,t){this.mutate(e,(n=>{var s;if(!Object.hasOwnProperty.call(n.value.stores,t.conversationId))return n;const r=d({},n.value.stores);return null==(s=r[t.conversationId])||s.unsubscribe(),delete r[t.conversationId],I({lastChanged:e,stores:r,windowEnd:n.value.windowEnd})}))}sideEdited(e,t){const n=t.diff.lastMessageAt;void 0!==n&&this.mutate(e,(s=>{var r;if(null===s.value.stores)return console.warn("[TalkJS] Received a 'side.edited' event when we thought your user didn't exist."),s;if(null===s.value.windowEnd)return s;const i=Object.hasOwnProperty.call(s.value.stores,t.conversationId);if(i&&n<s.value.windowEnd.oldestMessageTs){const n=d({},s.value.stores);return null==(r=n[t.conversationId])||r.unsubscribe(),delete n[t.conversationId],I({lastChanged:e,stores:n,windowEnd:s.value.windowEnd})}if(!i&&n>=s.value.windowEnd.oldestMessageTs){const n=this.getConvDataStore(t.conversationId);return I({lastChanged:e,stores:p(d({},s.value.stores),{[t.conversationId]:n}),windowEnd:s.value.windowEnd})}return s}))}}function Ge(e){return y(this,arguments,(function*({cursor:e,realtimeClient:t,count:n}){const s={limit:n,cursor:e},r=yield t.call({method:"GET",path:["me","conversations"],data:s,flags:{bypassCache:!0}});if(r.ok){const{data:e,cursor:t}=r.value.data;return I({conversations:e,nextCursor:t})}return r.ok||"server"!==r.where||404!==r.value.status||"USER_NOT_FOUND"!==r.value.errorCode?r:I({conversations:null,nextCursor:null})}))}function ze({seq:e,prevStores:t,conversations:n,cursor:s,getConvDataStore:r}){const i=t?d({},t):{};for(const a of n)void 0===i[a.id]&&(i[a.id]=r(a));return I(null===s?{lastChanged:e,stores:i,windowEnd:null}:{lastChanged:e,stores:i,windowEnd:{cursor:s,oldestMessageTs:Math.min(...n.map((e=>e.lastMessageAt)))}})}class Je extends de{constructor(e,t,n,s,r){super(e,s,r),this.conversation=t,this.realtimeClient=n,this.unsubscribeDebounceMs=0}get conversationId(){return"string"==typeof this.conversation?this.conversation:this.conversation.id}fetchInitial(e){return y(this,null,(function*(){const t=this.realtimeClient.internalSubscribe(["me","conversations",this.conversationId,"messages"]);if("object"==typeof this.conversation)return I({lastChanged:e,snapshot:this.conversation,messageWindow:t});const n=yield this.realtimeClient.call({method:"GET",path:["me","conversations",this.conversationId],data:{},flags:{bypassCache:!0}});let s;if(n.ok)s=n.value.data;else if("server"===n.where&&404===n.value.status)s=null;else{if("server"!==n.where||403!==n.value.status||"NOT_A_PARTICIPANT"!==n.value.errorCode)return t.unsubscribe(),n;s=null}return I({lastChanged:e,snapshot:s,messageWindow:t})}))}teardownNested(e){var t;null==(t=e.messageWindow)||t.unsubscribe()}anyChildChanged(e,t,n){return y(this,null,(function*(){return!0===(yield n.messageWindow.store.lastMessageChangedBetween(e,t))}))}equal(e,t){return V(e.snapshot,t.snapshot)}loadNested(e,t){return y(this,null,(function*(){var n;if(!t.snapshot)return I({snapshot:null,loadedAll:!0});const s=yield t.messageWindow.store.getDeep(e);if(!s.ok)return s;const r=s.value.snapshot,i=null!=(n=null==r?void 0:r[0])?n:null;return I({snapshot:L(p(d({},t.snapshot),{custom:L(t.snapshot.custom),welcomeMessages:L(t.snapshot.welcomeMessages),lastMessage:i}))})}))}participantEdited(e,t){this.mutate(e,(n=>null===n.value.snapshot?(console.warn("[TalkJS] Received a 'participant.edited' event for a conversation that we thought didn't exist."),n):I({lastChanged:e,snapshot:Ye(n.value.snapshot,t.diff),messageWindow:n.value.messageWindow})))}conversationEdited(e,t){this.mutate(e,(n=>null===n.value.snapshot?(console.warn("[TalkJS] Received a 'conversation.edited' event for a conversation that we thought didn't exist."),n):I({lastChanged:e,snapshot:Ye(n.value.snapshot,t.diff),messageWindow:n.value.messageWindow})))}sideEdited(e,t){this.mutate(e,(n=>null===n.value.snapshot?(console.warn("[TalkJS] Received a 'side.edited' event for a conversation that we thought didn't exist."),n):I({lastChanged:e,snapshot:Ye(n.value.snapshot,t.diff),messageWindow:n.value.messageWindow})))}sideCreated(e,t){this.mutate(e,(n=>n.value.snapshot?n:I({lastChanged:e,snapshot:t.state,messageWindow:n.value.messageWindow})))}sideDeleted(e,t){this.mutate(e,(t=>null===t.value.snapshot?t:I({lastChanged:e,snapshot:null,messageWindow:t.value.messageWindow})))}getFromCache(){return y(this,null,(function*(){const e=yield this.mostRecentState.resultPromise;return e.ok&&e.value.snapshot?I({status:200,data:e.value.snapshot}):D("NOT_IN_CACHE")}))}}function Ye(e,t){const n=t;return{id:e.id,createdAt:e.createdAt,subject:J(e.subject,n.subject),photoUrl:J(e.photoUrl,n.photoUrl),welcomeMessages:Y(e.welcomeMessages,n.welcomeMessages),custom:Q(e.custom,n.custom),lastMessageAt:J(e.lastMessageAt,n.lastMessageAt),unreadMessageCount:J(e.unreadMessageCount,n.unreadMessageCount),isUnread:J(e.isUnread,n.isUnread),access:J(e.access,n.access),notify:J(e.notify,n.notify),readUntil:J(e.readUntil,n.readUntil),everyoneReadUntil:J(e.everyoneReadUntil,n.everyoneReadUntil),joinedAt:e.joinedAt}}class Qe extends de{constructor(e,t,n,s,r){super(e,s,r),this.userId=t,this.realtimeClient=n,this.unsubscribeDebounceMs=3e4}fetchInitial(e){return y(this,null,(function*(){const t=this.realtimeClient.internalSubscribe(["users",this.userId]),n=yield this.realtimeClient.call({method:"GET",path:["users",this.userId,"online"],data:{},flags:{bypassCache:!0}});return n.ok||"server"!==n.where||404!==n.value.status||"USER_NOT_FOUND"!==n.value.errorCode?n.ok?I({lastChanged:e,user:t,data:n.value.data}):n:I({lastChanged:e,user:t,data:null})}))}equal(e,t){return V(e.data,t.data)}teardownNested(e){e.user.unsubscribe()}anyChildChanged(e,t,n){return y(this,null,(function*(){return n.user.store.changedBetween(e,t)}))}loadNested(e,t){return y(this,null,(function*(){const n=yield t.user.store.getDeep(e);if(!n.ok)return n;const s=n.value.snapshot;return null===t.data||null===s?I({snapshot:null}):I({snapshot:L(p(d({},t.data),{user:s}))})}))}userCreated(e,t){const n=this.fetchInitial(e);this.mutate(e,(e=>null!==e.value.data?(n.then((e=>{e.ok&&this.teardownNested(e.value)})),e):n))}userOnlineChanged(e,t){this.mutate(e,(n=>null===n.value.data?n:I({lastChanged:e,user:n.value.user,data:t.diff})))}getFromCache(){return y(this,null,(function*(){const e=yield this.mostRecentState.resultPromise;if(!e.ok)return D("NOT_IN_CACHE");if(null===e.value.data)return S({status:404,errorCode:"USER_NOT_FOUND",reasons:["No user with that ID exists"]});const t=e.value,{user:n}=t,s=f(t,["user"]);return I({status:200,data:d({},s.data)})}))}}class Ve{constructor(e,t,n){this.realtimeClient=n,this.convDataStores={},this.storeMap={},this.emitMutex=new ue,this.virtualSeqOffset=0,this.realPublishSeq=0,this.refetchOnNextNetworkLoss=!0,this.connection=new oe(e,t,{onUpstreamRestarting:()=>{this.refetchOnNextNetworkLoss=!1},onReady:()=>{this.refetchOnNextNetworkLoss=!0},onResubscribeSent:()=>{if(this.virtualSeqOffset+=this.realPublishSeq,this.realPublishSeq=0,this.refetchOnNextNetworkLoss){this.virtualSeqOffset++;const e=this.virtualSeq;this.refetchAll(e),this.emitAll(e)}},onResubscribeError:(e,t)=>{var n;null==(n=this.storeMap[Ze(e)])||n.setError(t)},onPublish:(e,t)=>{this.realPublishSeq=e;const n=this.virtualSeq;for(const s of t)this.handlePublish(n,s);this.emitAll(n)}})}get virtualSeq(){return this.realPublishSeq+this.virtualSeqOffset}sync(){return y(this,null,(function*(){yield this.connection.sync(),yield this.emitMutex.sync()}))}refetchAll(e){Object.values(this.storeMap).forEach((t=>null==t?void 0:t.refetch(e)))}emitAll(e){return this.emitMutex.runExclusive((()=>y(this,null,(function*(){const t=Object.values(this.storeMap).map((t=>null==t?void 0:t.emit(e)));yield Promise.all(t)}))))}handlePublish(e,t){var n,s,r,i,a,o,u,l,c,h,d,p,f,m,g,v,b,y,w,C,A,E,k,x,T,I,D,S,M,F;switch(t.type){case"user.created":return null==(n=this.storeMap[`/users/${t.userId}`])||n.userCreated(e,t),null==(s=this.storeMap["/me/conversations"])||s.userCreated(e,t),void(null==(r=this.storeMap[`/users/${t.userId}/online`])||r.userCreated(e,t));case"user.edited":return void(null==(i=this.storeMap[`/users/${t.userId}`])||i.userEdited(e,t));case"side.created":return null==(a=this.convDataStores[t.conversationId])||a.sideCreated(e,t),null==(o=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||o.sideCreated(e,t),null==(u=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||u.sideCreated(e,t),void(null==(l=this.storeMap["/me/conversations"])||l.sideCreated(e,t));case"side.edited":return null==(c=this.convDataStores[t.conversationId])||c.sideEdited(e,t),void(null==(h=this.storeMap["/me/conversations"])||h.sideEdited(e,t));case"side.deleted":return null==(d=this.convDataStores[t.conversationId])||d.sideDeleted(e,t),null==(p=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||p.sideDeleted(e,t),null==(f=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||f.sideDeleted(e,t),null==(m=this.storeMap[`/me/conversations/${t.conversationId}/typing`])||m.sideDeleted(e,t),void(null==(g=this.storeMap["/me/conversations"])||g.sideDeleted(e,t));case"conversation.edited":return void(null==(v=this.convDataStores[t.conversationId])||v.conversationEdited(e,t));case"message.created":return void(null==(b=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||b.messageCreated(e,t));case"message.edited":return void(null==(y=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||y.messageEdited(e,t));case"message.deleted":return void(null==(w=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||w.messageDeleted(e,t));case"typing.available":return void(null==(C=this.storeMap[`/me/conversations/${t.conversationId}/typing`])||C.typingAvailable(e,t));case"typing.changed":return void(null==(A=this.storeMap[`/me/conversations/${t.conversationId}/typing`])||A.typingChanged(e,t));case"conversation.cleared":return void(null==(E=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||E.conversationCleared(e,t));case"participant.edited":return null==(k=this.convDataStores[t.conversationId])||k.participantEdited(e,t),void(null==(x=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||x.participantEdited(e,t));case"participant.created":return void(null==(T=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||T.participantCreated(e,t));case"participant.deleted":return void(null==(I=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||I.participantDeleted(e,t));case"user.online.changed":return void(null==(D=this.storeMap[`/users/${t.userId}/online`])||D.userOnlineChanged(e,t));case"virtual.conversations.loadedmore":return void(null==(S=this.storeMap["/me/conversations"])||S.loadedMore(e,t));case"virtual.messages.loadedmore":return void(null==(M=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||M.loadedMore(e,t));case"virtual.participants.loadedmore":return void(null==(F=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||F.loadedMore(e,t))}}call(e){return y(this,arguments,(function*({method:e,path:t,data:n,headers:s,flags:r}){if(!0!==(null==r?void 0:r.bypassCache)&&"GET"===e){const e=Ze(t);if(e in this.storeMap){const t=e,n=this.storeMap[t];if(n&&"getFromCache"in n){yield this.sync();const e=yield n.getFromCache();if("NOT_IN_CACHE"!==e.value)return e}}else if(w(t,["me","conversations","*","messages","*"])){const e=this.storeMap[`/me/conversations/${t[2]}/messages`];if(e){yield this.sync();const n=yield e.getMessageFromCache(t[4]);if("NOT_IN_CACHE"!==n.value)return n}}else if(w(t,["me","conversations","*","participants","*"])){const e=this.storeMap[`/me/conversations/${t[2]}/participants`];if(e){yield this.sync();const n=yield e.getParticipantFromCache(t[4]);if("NOT_IN_CACHE"!==n.value)return n}}else if(w(t,["me","conversations","*"])){const e=this.storeMap["/me/conversations"];if(e){yield this.sync();const n=yield e.getConvFromCache(t[2]);if("NOT_IN_CACHE"!==n.value)return n}}}return this.connection.call({method:e,path:t,data:n,headers:null!=s?s:{}})}))}subscribe(e,t){const n=this.getOrCreateStore(e),s=x(),r=x();s.promise.catch((()=>{})),r.promise.catch((()=>{}));const i={state:{type:"pending",latestSnapshot:void 0},connected:s.promise,terminated:r.promise,loadMore:e=>y(this,null,(function*(){"loadMore"in n&&(yield n.loadMore(e))})),unsubscribe:()=>{}},a=n.listen((n=>{if(n.ok){const e=!("loadedAll"in n.value)||n.value.loadedAll,r={type:"active",latestSnapshot:n.value.snapshot,loadedAll:e};i.state=r,null==t||t(n.value.snapshot,e),s.resolve(r)}else if("pending"===i.state.type||"active"===i.state.type){if("server"===n.where){const t={type:"error",error:new Error(B(`Subscribe to ${e.join("/")}`,n.value))};return i.state=t,r.resolve(t),void s.reject("Subscription encountered an error during initial connection")}if("SESSION_DESTROYED"===n.value){const e={type:"error",error:new Error("Session was destroyed causing all subscriptions to be terminated")};return i.state=e,r.resolve(e),void s.reject("Subscription encountered an error during initial connection")}if("UNSUBSCRIBED"===n.value)return;if("TERMINATED"===n.value)return;n.value}}));return i.unsubscribe=()=>{if("pending"===i.state.type||"active"===i.state.type){a();const e={type:"unsubscribed"};i.state=e,r.resolve(e),s.reject("Subscription was unsubscribed before connecting")}},i}onVirtualPublish(e){return y(this,null,(function*(){this.virtualSeqOffset++;const t=this.virtualSeq;this.handlePublish(t,e),yield this.emitAll(t)}))}getOrCreateStore(e){const t=Ze(e);if(t in this.storeMap)return this.storeMap[t];this.connection.subscribe(e).then((e=>{e.ok||n.setError(e)}));const n=this.instantiateStore(e,(()=>{delete this.storeMap[t],this.connection.unsubscribe(e)}));return this.storeMap[t]=n,n}destroy(){this.storeMap={},this.convDataStores={},this.connection.destroy()}isConnected(){return this.connection.isConnected()}instantiateStore(e,t){if(w(e,["users","*"]))return new Se(this.virtualSeq,e[1],this.realtimeClient,this.emitMutex,{onTeardown:t});if(w(e,["me","conversations","*"]))return new Oe(this.virtualSeq,this.subscribeConvData(e[2]),this.realtimeClient,this.emitMutex,{onTeardown:t});if(w(e,["me","conversations","*","messages"]))return new Re(this.virtualSeq,e[2],this.realtimeClient,this.emitMutex,{onTeardown:t,onLoadedMore:e=>this.onVirtualPublish(e)});if(w(e,["me","conversations","*","participants"]))return new We(this.virtualSeq,e[2],this.realtimeClient,this.emitMutex,{onTeardown:t,onLoadedMore:e=>this.onVirtualPublish(e)});if(w(e,["me","conversations","*","typing"]))return new $e(this.virtualSeq,e[2],this.realtimeClient,this.emitMutex,{onTeardown:t});if(w(e,["me","conversations"]))return new Le(this.virtualSeq,(e=>this.subscribeConvData(e)),this.realtimeClient,this.emitMutex,{onTeardown:t,onLoadedMore:e=>this.onVirtualPublish(e)});if(w(e,["users","*","online"]))return new Qe(this.virtualSeq,e[1],this.realtimeClient,this.emitMutex,{onTeardown:t});throw"Unreachable"}subscribeConvData(e){const t="string"==typeof e?e:e.id;if(Object.hasOwnProperty.call(this.convDataStores,t)){const e=this.convDataStores[t];return{store:e,unsubscribe:e.registerInternalSubscription()}}const n=new Je(this.virtualSeq,e,this.realtimeClient,this.emitMutex,{onTeardown:()=>{delete this.convDataStores[t]}});return this.convDataStores[t]=n,{store:n,unsubscribe:n.registerInternalSubscription()}}}function Ze(e){return`/${e.join("/")}`}class Ke{constructor(e,t){this.id=e,this._realtimeClient=t}get brandedId(){return this.id}get(){return y(this,null,(function*(){const e=yield this._realtimeClient.getUser(this.brandedId);return qn("Get user "+this.id,e)}))}set(e){return y(this,null,(function*(){null===e.role&&(e.role="default");const t="string"==typeof e.email?[e.email]:e.email,n="string"==typeof e.phone?[e.phone]:e.phone,s=yield this._realtimeClient.call({method:"PUT",path:["users",this.brandedId],data:p(d({},e),{email:t,phone:n})});F("Set user "+this.id,s)}))}createIfNotExists(e){return y(this,null,(function*(){void 0===e.role&&(e.role="default");const t="string"==typeof e.email?[e.email]:e.email,n="string"==typeof e.phone?[e.phone]:e.phone,s=yield this._realtimeClient.call({method:"POST",path:["users",this.brandedId],data:p(d({},e),{email:t,phone:n})});(s.ok||"server"!==s.where||409!=s.value.status)&&F(`Create user ${this.id} if not exists`,s)}))}subscribe(e){return this._realtimeClient.subscribe(["users",this.brandedId],e)}subscribeOnline(e){return this._realtimeClient.subscribe(["users",this.brandedId,"online"],e)}}class Xe{constructor(e,t,n){this.userId=e,this.conversationId=t,this._realtimeClient=n}get brandedUserId(){return this.userId}get brandedConversationId(){return this.conversationId}get(){return y(this,null,(function*(){const e=yield this._realtimeClient.call({method:"GET",path:["me","conversations",this.brandedConversationId,"participants",this.brandedUserId],data:{}}),t=yield this._realtimeClient.call({method:"GET",path:["users",this.brandedUserId],data:{includePrivateFields:!1}}),[n,s]=yield Promise.all([e,t]);return(n.ok||"server"!==n.where||404!==n.value.status)&&(s.ok||"server"!==s.where||404!==s.value.status)?Ie(F(`Get participant ${this.userId} in conversation ${this.conversationId}`,n),Te(F(`Get user ${this.userId}`,s))):null}))}set(){return y(this,arguments,(function*(e={}){const t=yield this._realtimeClient.call({method:"PUT",path:["conversations",this.brandedConversationId,"participants",this.brandedUserId],data:e});F(`Set participant ${this.userId} in conversation ${this.conversationId}`,t)}))}edit(){return y(this,arguments,(function*(e={}){const t=yield this._realtimeClient.call({method:"PATCH",path:["conversations",this.brandedConversationId,"participants",this.brandedUserId],data:e});F(`Edit participant ${this.userId} in conversation ${this.conversationId}`,t)}))}createIfNotExists(){return y(this,arguments,(function*(e={}){const t=yield this._realtimeClient.call({method:"POST",path:["conversations",this.brandedConversationId,"participants",this.brandedUserId],data:e});(t.ok||"server"!==t.where||409!==t.value.status)&&F(`Add participant ${this.userId} to conversation ${this.conversationId}`,t)}))}delete(){return y(this,null,(function*(){const e=yield this._realtimeClient.call({method:"DELETE",path:["conversations",this.brandedConversationId,"participants",this.brandedUserId],data:{}});(e.ok||"server"!==e.where||404!==e.value.status)&&F(`Remove participant ${this.userId} from conversation ${this.conversationId}`,e)}))}}function et(e){const t="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz";let n=0;const s=[],r=e===n;n=e;const i=new Array(8);for(let o=7;o>=0;o--)i[o]=t.charAt(e%64),e=Math.floor(e/64);if(0!==e)throw new Error("We should have converted the entire timestamp.");let a=i.join("");if(r){let e;for(e=11;e>=0&&63===s[e];e--)s[e]=0;s[e]++}else for(let o=0;o<12;o++)s[o]=Math.floor(64*Math.random());for(let o=0;o<12;o++)a+=t.charAt(s[o]);if(20!=a.length)throw new Error("Length should be 20.");return a}const tt=(e,t,n=void 0)=>e.reduce(((e,s,r)=>e.concat((e=>{if("string"==typeof e)return t(e,n);switch(e.type){case"bold":case"italic":case"strikethrough":case"blockquote":case"bulletlist":case"bulletList":case"bulletpoint":case"bulletPoint":return[{type:e.type,children:tt(e.children,t,e.type)}];case"link":return[{type:e.type,url:e.url,children:tt(e.children,t,e.type)}];case"actionlink":case"actionLink":case"actionbutton":case"actionButton":return[{type:e.type,action:e.action,params:e.params,children:tt(e.children,t,e.type)}];case"mention":case"autolink":case"autoLink":case"codeblock":case"codeBlock":case"codespan":case"codeSpan":case"suppressed":case"emoji":case"customemoji":case"customEmoji":return[e]}})(s))),[]);function nt(e,t){return n=>{const s=n;let r=0;const i=[];for(const a of ge(n,e)){a.index-r>0&&i.push(s.substring(r,a.index));const e=t(a);Array.isArray(e)?i.push(...e):i.push(e),r=a.index+a[0].length}return r<n.length&&i.push(n.substring(r)),i}}const st="’'()[]{}<>:,‒–—―…!.«»-‐?‘’“”;/⁄␠·&@*\\•^¤¢$€£¥₩₪†‡°¡¿¬#№%‰‱¶′§~¨_|¦⁂☞∴‽※".replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");var rt,it=((rt=it||{})[rt.italic=1]="italic",rt[rt.strikethrough=2]="strikethrough",rt[rt.bold=4]="bold",rt);const at=[0,1,2,3,4,5,6].map((e=>{const t=[];return 1&e||t.push(/_([^\s_].*?[^\s_])_|_([^\s_])_/),2&e||t.push(/~([^\s~].*?[^\s~])~|~([^\s~])~/),4&e||t.push(/\*([^\s*].*?[^\s*])\*|\*([^\s*])\*/),new RegExp(t.map((e=>e.source)).join("|"),"g")})),ot={_:1,"*":4,"~":2};function ut(e){return lt(e,0)}function lt(e,t=0){const n=at[t],s=n?function(e){const t=nt(ct.getOrCompute(e,(()=>new RegExp(`(?:^|[\\s${st}])(?:${e.source})(?=[\\s${st}]|$)`,"g"))),(e=>{const t=e[0][1],n=e[1]||e[2]||e[3]||e[4]||e[5]||e[6];return[" ",{type:it[ot[t]],children:[n]}]}));return e=>{const[n,...s]=t(" "+e);return n.length>1&&s.unshift(n.substring(1)),s}}(n):()=>[e];return tt(s(e),((e,n)=>"bold"===n||"italic"===n||"strikethrough"===n?lt(e,t|it[n]):[e]))}const ct=function(){const e=function(){try{return new WeakMap}catch(e){const t={has:()=>!1,get:()=>{},set:()=>t};return t}}();return{getOrCompute(t,n){if(e.has(t))return e.get(t);const s=n();return e.set(t,s),s}}}();function ht(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1}function dt(e,t){for(var n=e.length-1;n>=0;n--)!0===t(e[n])&&e.splice(n,1)}function pt(e){throw new Error("Unhandled case for value: '"+e+"'")}var ft=function(){function e(e){void 0===e&&(e={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=e.tagName||"",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||""}return e.prototype.setTagName=function(e){return this.tagName=e,this},e.prototype.getTagName=function(){return this.tagName||""},e.prototype.setAttr=function(e,t){return this.getAttrs()[e]=t,this},e.prototype.getAttr=function(e){return this.getAttrs()[e]},e.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},e.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},e.prototype.setClass=function(e){return this.setAttr("class",e)},e.prototype.addClass=function(e){for(var t,n=this.getClass(),s=this.whitespaceRegex,r=n?n.split(s):[],i=e.split(s);t=i.shift();)-1===ht(r,t)&&r.push(t);return this.getAttrs().class=r.join(" "),this},e.prototype.removeClass=function(e){for(var t,n=this.getClass(),s=this.whitespaceRegex,r=n?n.split(s):[],i=e.split(s);r.length&&(t=i.shift());){var a=ht(r,t);-1!==a&&r.splice(a,1)}return this.getAttrs().class=r.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(e){return-1!==(" "+this.getClass()+" ").indexOf(" "+e+" ")},e.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},e.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var e=this.getTagName(),t=this.buildAttrsStr();return["<",e,t=t?" "+t:"",">",this.getInnerHtml(),"</",e,">"].join("")},e.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var e=this.getAttrs(),t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n+'="'+e[n]+'"');return t.join(" ")},e}(),mt=function(){function e(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||""}return e.prototype.build=function(e){return new ft({tagName:"a",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},e.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},n=this.createCssClass(e);return n&&(t.class=n),this.newWindow&&(t.target="_blank",t.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length<e.getAnchorText().length&&(t.title=e.getAnchorHref()),t},e.prototype.createCssClass=function(e){var t=this.className;if(t){for(var n=[t],s=e.getCssClassSuffixes(),r=0,i=s.length;r<i;r++)n.push(t+"-"+s[r]);return n.join(" ")}return""},e.prototype.processAnchorText=function(e){return this.doTruncate(e)},e.prototype.doTruncate=function(e){var t=this.truncate;if(!t||!t.length)return e;var n,s,r,i,a=t.length,o=t.location;return"smart"===o?function(e,t,n){var s,r;null==n?(n="&hellip;",r=3,s=8):(r=n.length,s=n.length);var i=function(e){var t="";return e.scheme&&e.host&&(t+=e.scheme+"://"),e.host&&(t+=e.host),e.path&&(t+="/"+e.path),e.query&&(t+="?"+e.query),e.fragment&&(t+="#"+e.fragment),t},a=function(e,t){var s=t/2,r=Math.ceil(s),i=-1*Math.floor(s),a="";return i<0&&(a=e.substr(i)),e.substr(0,r)+n+a};if(e.length<=t)return e;var o,u,l,c=t-r,h=(o={},(l=(u=e).match(/^([a-z]+):\/\//i))&&(o.scheme=l[1],u=u.substr(l[0].length)),(l=u.match(/^(.*?)(?=(\?|#|\/|$))/i))&&(o.host=l[1],u=u.substr(l[0].length)),(l=u.match(/^\/(.*?)(?=(\?|#|$))/i))&&(o.path=l[1],u=u.substr(l[0].length)),(l=u.match(/^\?(.*?)(?=(#|$))/i))&&(o.query=l[1],u=u.substr(l[0].length)),(l=u.match(/^#(.*?)$/i))&&(o.fragment=l[1]),o);if(h.query){var d=h.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);d&&(h.query=h.query.substr(0,d[1].length),e=i(h))}if(e.length<=t)return e;if(h.host&&(h.host=h.host.replace(/^www\./,""),e=i(h)),e.length<=t)return e;var p="";if(h.host&&(p+=h.host),p.length>=c)return h.host.length==t?(h.host.substr(0,t-r)+n).substr(0,c+s):a(p,c).substr(0,c+s);var f="";if(h.path&&(f+="/"+h.path),h.query&&(f+="?"+h.query),f){if((p+f).length>=c)return(p+f).length==t?(p+f).substr(0,t):(p+a(f,c-p.length)).substr(0,c+s);p+=f}if(h.fragment){var m="#"+h.fragment;if((p+m).length>=c)return(p+m).length==t?(p+m).substr(0,t):(p+a(m,c-p.length)).substr(0,c+s);p+=m}if(h.scheme&&h.host){var g=h.scheme+"://";if((p+g).length<c)return(g+p).substr(0,t)}if(p.length<=t)return p;var v="";return c>0&&(v=p.substr(-1*Math.floor(c/2))),(p.substr(0,Math.ceil(c/2))+n+v).substr(0,c+s)}(e,a):"middle"===o?function(e,t,n){if(e.length<=t)return e;var s,r;null==n?(n="&hellip;",s=8,r=3):(s=n.length,r=n.length);var i=t-r,a="";return i>0&&(a=e.substr(-1*Math.floor(i/2))),(e.substr(0,Math.ceil(i/2))+n+a).substr(0,i+s)}(e,a):(s=a,r=void 0,(n=e).length>s&&(null==r?(r="&hellip;",i=3):i=r.length,n=n.substring(0,s-i)+r),n)},e}(),gt=function(){function e(e){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(e){this.offset=e},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.getType()]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}(),vt=function(e,t){return(vt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function bt(e,t){function n(){this.constructor=e}vt(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var yt,wt=function(){return wt=Object.assign||function(e){for(var t,n=1,s=arguments.length;n<s;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},wt.apply(this,arguments)},Ct=function(e){function t(t){var n=e.call(this,t)||this;return n.email="",n.email=t.email,n}return bt(t,e),t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(gt),At=function(e){function t(t){var n=e.call(this,t)||this;return n.serviceName="",n.hashtag="",n.serviceName=t.serviceName,n.hashtag=t.hashtag,n}return bt(t,e),t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var e=this.serviceName,t=this.hashtag;switch(e){case"twitter":return"https://twitter.com/hashtag/"+t;case"facebook":return"https://www.facebook.com/hashtag/"+t;case"instagram":return"https://instagram.com/explore/tags/"+t;default:throw new Error("Unknown service name to point hashtag to: "+e)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t}(gt),Et=function(e){function t(t){var n=e.call(this,t)||this;return n.serviceName="twitter",n.mention="",n.mention=t.mention,n.serviceName=t.serviceName,n}return bt(t,e),t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;default:throw new Error("Unknown service name to point mention to: "+this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var t=e.prototype.getCssClassSuffixes.call(this),n=this.getServiceName();return n&&t.push(n),t},t}(gt),kt=function(e){function t(t){var n=e.call(this,t)||this;return n.number="",n.plusSign=!1,n.number=t.number,n.plusSign=t.plusSign,n}return bt(t,e),t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(gt),xt=function(e){function t(t){var n=e.call(this,t)||this;return n.url="",n.urlMatchType="scheme",n.protocolUrlMatch=!1,n.protocolRelativeMatch=!1,n.stripPrefix={scheme:!0,www:!0},n.stripTrailingSlash=!0,n.decodePercentEncoding=!0,n.schemePrefixRegex=/^(https?:\/\/)?/i,n.wwwPrefixRegex=/^(https?:\/\/)?(www\.)?/i,n.protocolRelativeRegex=/^\/\//,n.protocolPrepended=!1,n.urlMatchType=t.urlMatchType,n.url=t.url,n.protocolUrlMatch=t.protocolUrlMatch,n.protocolRelativeMatch=t.protocolRelativeMatch,n.stripPrefix=t.stripPrefix,n.stripTrailingSlash=t.stripTrailingSlash,n.decodePercentEncoding=t.decodePercentEncoding,n}return bt(t,e),t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var e=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(e=this.url="http://"+e,this.protocolPrepended=!0),e},t.prototype.getAnchorHref=function(){return this.getUrl().replace(/&amp;/g,"&")},t.prototype.getAnchorText=function(){var e=this.getMatchedText();return this.protocolRelativeMatch&&(e=this.stripProtocolRelativePrefix(e)),this.stripPrefix.scheme&&(e=this.stripSchemePrefix(e)),this.stripPrefix.www&&(e=this.stripWwwPrefix(e)),this.stripTrailingSlash&&(e=this.removeTrailingSlash(e)),this.decodePercentEncoding&&(e=this.removePercentEncoding(e)),e},t.prototype.stripSchemePrefix=function(e){return e.replace(this.schemePrefixRegex,"")},t.prototype.stripWwwPrefix=function(e){return e.replace(this.wwwPrefixRegex,"$1")},t.prototype.stripProtocolRelativePrefix=function(e){return e.replace(this.protocolRelativeRegex,"")},t.prototype.removeTrailingSlash=function(e){return"/"===e.charAt(e.length-1)&&(e=e.slice(0,-1)),e},t.prototype.removePercentEncoding=function(e){var t=e.replace(/%22/gi,"&quot;").replace(/%26/gi,"&amp;").replace(/%27/gi,"&#39;").replace(/%3C/gi,"&lt;").replace(/%3E/gi,"&gt;");try{return decodeURIComponent(t)}catch(n){return t}},t}(gt),Tt=function(e){this.__jsduckDummyDocProp=null,this.tagBuilder=e.tagBuilder},It=/[A-Za-z]/,Dt=/[\d]/,St=/[\D]/,Mt=/\s/,Ft=/['"]/,Bt=/[\x00-\x1F\x7F]/,Rt=/A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source,Nt=Rt+/\u2700-\u27bf\udde6-\uddff\ud800-\udbff\udc00-\udfff\ufe0e\ufe0f\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0\ud83c\udffb-\udfff\u200d\u3299\u3297\u303d\u3030\u24c2\ud83c\udd70-\udd71\udd7e-\udd7f\udd8e\udd91-\udd9a\udde6-\uddff\ude01-\ude02\ude1a\ude2f\ude32-\ude3a\ude50-\ude51\u203c\u2049\u25aa-\u25ab\u25b6\u25c0\u25fb-\u25fe\u00a9\u00ae\u2122\u2139\udc04\u2600-\u26FF\u2b05\u2b06\u2b07\u2b1b\u2b1c\u2b50\u2b55\u231a\u231b\u2328\u23cf\u23e9-\u23f3\u23f8-\u23fa\udccf\u2935\u2934\u2190-\u21ff/.source+/\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F/.source,_t=/0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19/.source,Ot=Nt+_t,Pt=Nt+_t,jt="(?:["+_t+"]{1,3}\\.){3}["+_t+"]{1,3}",$t="["+Pt+"](?:["+Pt+"\\-]{0,61}["+Pt+"])?",Ut=function(e){return"(?=("+$t+"))\\"+e},Wt=function(e){return"(?:"+Ut(e)+"(?:\\."+Ut(e+1)+"){0,126}|"+jt+")"},qt=new RegExp("["+Pt+"]"),Ht=/(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--3oq18vl8pn36a|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|afamilycompany|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|spreadbetting|travelchannel|wolterskluwer|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|rightathome|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pbt977c|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nationwide|newholland|nextdirect|onyourside|properties|protection|prudential|realestate|republican|restaurant|schaeffler|swiftcover|tatamotors|technology|telefonica|university|vistaprint|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|fujixerox|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|honeywell|institute|insurance|kuokgroup|ladbrokes|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|scjohnson|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--tckwe|xn--vhquv|yodobashi|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|budapest|builders|business|capetown|catering|catholic|chrysler|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|esurance|etisalat|everbank|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|movistar|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|symantec|training|uconnect|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|cartier|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|iselect|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lancome|lanxess|lasalle|latrobe|leclerc|liaison|limited|lincoln|markets|metlife|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|shriram|singles|staples|starhub|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|الجزائر|العليان|پاکستان|كاثوليك|موبايلي|இந்தியா|abarth|abbott|abbvie|active|africa|agency|airbus|airtel|alipay|alsace|alstom|anquan|aramco|author|bayern|beauty|berlin|bharti|blanco|bostik|boston|broker|camera|career|caseih|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|mobily|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|piaget|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|warman|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|dodge|drive|dubai|earth|edeka|email|epost|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glade|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|intel|irish|iveco|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|lixil|loans|locus|lotte|lotto|lupin|macys|mango|media|miami|money|mopar|movie|nadex|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|zippo|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|aigo|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|doha|duck|duns|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|raid|read|reit|rent|rest|rich|rmit|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scor|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|グーグル|クラウド|ポイント|大众汽车|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bnl|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceb|ceo|cfa|cfd|com|crs|csc|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jcp|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|off|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|qvc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|srl|srt|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ストア|セール|みんな|中文网|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|工行|广东|微博|慈善|手机|手表|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|珠宝|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/,Lt=new RegExp("["+Pt+"!#$%&'*+/=?^_`{|}~-]"),Gt=new RegExp("^"+Ht.source+"$"),zt=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.localPartCharRegex=Lt,t.strictTldRegex=Gt,t}return bt(t,e),t.prototype.parseMatches=function(e){for(var t=this.tagBuilder,n=this.localPartCharRegex,s=this.strictTldRegex,r=[],i=e.length,a=new Jt,o={m:"a",a:"i",i:"l",l:"t",t:"o",o:":"},u=0,l=0,c=a;u<i;){var h=e.charAt(u);switch(l){case 0:"m"===(d=h)?w(1):n.test(d)&&w();break;case 1:p(e.charAt(u-1),h);break;case 2:f(h);break;case 3:m(h);break;case 4:g(h);break;case 5:v(h);break;case 6:b(h);break;case 7:y(h);break;default:pt(l)}u++}var d;return A(),r;function p(e,t){":"===e?n.test(t)?(l=2,c=new Jt(wt(wt({},c),{hasMailtoPrefix:!0}))):C():o[e]===t||(n.test(t)?l=2:"."===t?l=3:"@"===t?l=4:C())}function f(e){"."===e?l=3:"@"===e?l=4:n.test(e)||C()}function m(e){"."===e||"@"===e?C():n.test(e)?l=2:C()}function g(e){qt.test(e)?l=5:C()}function v(e){"."===e?l=7:"-"===e?l=6:qt.test(e)||A()}function b(e){"-"===e||"."===e?A():qt.test(e)?l=5:A()}function y(e){"."===e||"-"===e?A():qt.test(e)?(l=5,c=new Jt(wt(wt({},c),{hasDomainDot:!0}))):A()}function w(e){void 0===e&&(e=2),l=e,c=new Jt({idx:u})}function C(){l=0,c=a}function A(){if(c.hasDomainDot){var n=e.slice(c.idx,u);/[-.]$/.test(n)&&(n=n.slice(0,-1));var i=c.hasMailtoPrefix?n.slice(7):n;(function(e){var t=(e.split(".").pop()||"").toLowerCase();return s.test(t)})(i)&&r.push(new Ct({tagBuilder:t,matchedText:n,offset:c.idx,email:i}))}C()}},t}(Tt),Jt=function(e){void 0===e&&(e={}),this.idx=void 0!==e.idx?e.idx:-1,this.hasMailtoPrefix=!!e.hasMailtoPrefix,this.hasDomainDot=!!e.hasDomainDot},Yt=function(){function e(){}return e.isValid=function(e,t){return!(t&&!this.isValidUriScheme(t)||this.urlMatchDoesNotHaveProtocolOrDot(e,t)||this.urlMatchDoesNotHaveAtLeastOneWordChar(e,t)&&!this.isValidIpAddress(e)||this.containsMultipleDots(e))},e.isValidIpAddress=function(e){var t=new RegExp(this.hasFullProtocolRegex.source+this.ipRegex.source);return null!==e.match(t)},e.containsMultipleDots=function(e){var t=e;return this.hasFullProtocolRegex.test(e)&&(t=e.split("://")[1]),t.split("/")[0].indexOf("..")>-1},e.isValidUriScheme=function(e){var t=e.match(this.uriSchemeRegex),n=t&&t[0].toLowerCase();return"javascript:"!==n&&"vbscript:"!==n},e.urlMatchDoesNotHaveProtocolOrDot=function(e,t){return!(!e||t&&this.hasFullProtocolRegex.test(t)||-1!==e.indexOf("."))},e.urlMatchDoesNotHaveAtLeastOneWordChar=function(e,t){return!(!e||!t||this.hasFullProtocolRegex.test(t)||this.hasWordCharAfterProtocolRegex.test(e))},e.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,e.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,e.hasWordCharAfterProtocolRegex=new RegExp(":[^\\s]*?["+Rt+"]"),e.ipRegex=/[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/,e}(),Qt=(yt=new RegExp("[/?#](?:["+Pt+"\\-+&@#/%=~_()|'$*\\[\\]{}?!:,.;^✓]*["+Pt+"\\-+&@#/%=~_()|'$*\\[\\]{}✓])?"),new RegExp(["(?:","(",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\/\/)(?!\d+\/?)(?:\/\/)?)/.source,Wt(2),")","|","(","(//)?",/(?:www\.)/.source,Wt(6),")","|","(","(//)?",Wt(10)+"\\.",Ht.source,"(?![-"+Ot+"])",")",")","(?::[0-9]+)?","(?:"+yt.source+")?"].join(""),"gi")),Vt=new RegExp("["+Pt+"]"),Zt=function(e){function t(t){var n=e.call(this,t)||this;return n.stripPrefix={scheme:!0,www:!0},n.stripTrailingSlash=!0,n.decodePercentEncoding=!0,n.matcherRegex=Qt,n.wordCharRegExp=Vt,n.stripPrefix=t.stripPrefix,n.stripTrailingSlash=t.stripTrailingSlash,n.decodePercentEncoding=t.decodePercentEncoding,n}return bt(t,e),t.prototype.parseMatches=function(e){for(var t,n=this.matcherRegex,s=this.stripPrefix,r=this.stripTrailingSlash,i=this.decodePercentEncoding,a=this.tagBuilder,o=[],u=function(){var n=t[0],u=t[1],c=t[4],h=t[5],d=t[9],p=t.index,f=h||d,m=e.charAt(p-1);if(!Yt.isValid(n,u))return"continue";if(p>0&&"@"===m)return"continue";if(p>0&&f&&l.wordCharRegExp.test(m))return"continue";if(/\?$/.test(n)&&(n=n.substr(0,n.length-1)),l.matchHasUnbalancedClosingParen(n))n=n.substr(0,n.length-1);else{var g=l.matchHasInvalidCharAfterTld(n,u);g>-1&&(n=n.substr(0,g))}var v=["http://","https://"].find((function(e){return!!u&&-1!==u.indexOf(e)}));if(v){var b=n.indexOf(v);n=n.substr(b),u=u.substr(b),p+=b}var y=u?"scheme":c?"www":"tld",w=!!u;o.push(new xt({tagBuilder:a,matchedText:n,offset:p,urlMatchType:y,url:n,protocolUrlMatch:w,protocolRelativeMatch:!!f,stripPrefix:s,stripTrailingSlash:r,decodePercentEncoding:i}))},l=this;null!==(t=n.exec(e));)u();return o},t.prototype.matchHasUnbalancedClosingParen=function(e){var t,n=e.charAt(e.length-1);if(")"===n)t="(";else if("]"===n)t="[";else{if("}"!==n)return!1;t="{"}for(var s=0,r=0,i=e.length-1;r<i;r++){var a=e.charAt(r);a===t?s++:a===n&&(s=Math.max(s-1,0))}return 0===s},t.prototype.matchHasInvalidCharAfterTld=function(e,t){if(!e)return-1;var n=0;t&&(n=e.indexOf(":"),e=e.slice(n));var s=new RegExp("^((.?//)?[-."+Pt+"]*[-"+Pt+"]\\.[-"+Pt+"]+)").exec(e);return null===s?-1:(n+=s[1].length,e=e.slice(s[1].length),/^[^-.A-Za-z0-9:\/?#]/.test(e)?n:-1)},t}(Tt),Kt=new RegExp("#[_"+Pt+"]{1,139}(?![_"+Pt+"])","g"),Xt=new RegExp("[^"+Pt+"]"),en=function(e){function t(t){var n=e.call(this,t)||this;return n.serviceName="twitter",n.matcherRegex=Kt,n.nonWordCharRegex=Xt,n.serviceName=t.serviceName,n}return bt(t,e),t.prototype.parseMatches=function(e){for(var t,n=this.matcherRegex,s=this.nonWordCharRegex,r=this.serviceName,i=this.tagBuilder,a=[];null!==(t=n.exec(e));){var o=t.index,u=e.charAt(o-1);if(0===o||s.test(u)){var l=t[0],c=t[0].slice(1);a.push(new At({tagBuilder:i,matchedText:l,offset:o,serviceName:r,hashtag:c}))}}return a},t}(Tt),tn=new RegExp(/(?:(?:(?:(\+)?\d{1,3}[-\040.]?)?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\040.]?(?:\d[-\040.]?){6,12}\d+))([,;]+[0-9]+#?)*/.source+"|"+/(0([1-9]{1}-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/.source,"g"),nn=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.matcherRegex=tn,t}return bt(t,e),t.prototype.parseMatches=function(e){for(var t,n=this.matcherRegex,s=this.tagBuilder,r=[];null!==(t=n.exec(e));){var i=t[0],a=i.replace(/[^0-9,;#]/g,""),o=!(!t[1]&&!t[2]),u=0==t.index?"":e.substr(t.index-1,1),l=e.substr(t.index+i.length,1),c=!u.match(/\d/)&&!l.match(/\d/);this.testMatch(t[3])&&this.testMatch(i)&&c&&r.push(new kt({tagBuilder:s,matchedText:i,offset:t.index,number:a,plusSign:o}))}return r},t.prototype.testMatch=function(e){return St.test(e)},t}(Tt),sn=new RegExp("@[_"+Pt+"]{1,50}(?![_"+Pt+"])","g"),rn=new RegExp("@[_."+Pt+"]{1,30}(?![_"+Pt+"])","g"),an=new RegExp("@[-_."+Pt+"]{1,50}(?![-_"+Pt+"])","g"),on=new RegExp("[^"+Pt+"]"),un=function(e){function t(t){var n=e.call(this,t)||this;return n.serviceName="twitter",n.matcherRegexes={twitter:sn,instagram:rn,soundcloud:an},n.nonWordCharRegex=on,n.serviceName=t.serviceName,n}return bt(t,e),t.prototype.parseMatches=function(e){var t,n=this.serviceName,s=this.matcherRegexes[this.serviceName],r=this.nonWordCharRegex,i=this.tagBuilder,a=[];if(!s)return a;for(;null!==(t=s.exec(e));){var o=t.index,u=e.charAt(o-1);if(0===o||r.test(u)){var l=t[0].replace(/\.+$/g,""),c=l.slice(1);a.push(new Et({tagBuilder:i,matchedText:l,offset:o,serviceName:n,mention:c}))}}return a},t}(Tt);var ln=function(e){void 0===e&&(e={}),this.idx=void 0!==e.idx?e.idx:-1,this.type=e.type||"tag",this.name=e.name||"",this.isOpening=!!e.isOpening,this.isClosing=!!e.isClosing},cn=function(){function e(t){void 0===t&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(t.urls),this.email="boolean"==typeof t.email?t.email:this.email,this.phone="boolean"==typeof t.phone?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow="boolean"==typeof t.newWindow?t.newWindow:this.newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(t.stripPrefix),this.stripTrailingSlash="boolean"==typeof t.stripTrailingSlash?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding="boolean"==typeof t.decodePercentEncoding?t.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=t.sanitizeHtml||!1;var n=this.mention;if(!1!==n&&"twitter"!==n&&"instagram"!==n&&"soundcloud"!==n)throw new Error("invalid `mention` cfg - see docs");var s=this.hashtag;if(!1!==s&&"twitter"!==s&&"facebook"!==s&&"instagram"!==s)throw new Error("invalid `hashtag` cfg - see docs");this.truncate=this.normalizeTruncateCfg(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,n){return new e(n).link(t)},e.parse=function(t,n){return new e(n).parse(t)},e.prototype.normalizeUrlsCfg=function(e){return null==e&&(e=!0),"boolean"==typeof e?{schemeMatches:e,wwwMatches:e,tldMatches:e}:{schemeMatches:"boolean"!=typeof e.schemeMatches||e.schemeMatches,wwwMatches:"boolean"!=typeof e.wwwMatches||e.wwwMatches,tldMatches:"boolean"!=typeof e.tldMatches||e.tldMatches}},e.prototype.normalizeStripPrefixCfg=function(e){return null==e&&(e=!0),"boolean"==typeof e?{scheme:e,www:e}:{scheme:"boolean"!=typeof e.scheme||e.scheme,www:"boolean"!=typeof e.www||e.www}},e.prototype.normalizeTruncateCfg=function(e){return"number"==typeof e?{length:e,location:"end"}:function(e,t){for(var n in t)t.hasOwnProperty(n)&&void 0===e[n]&&(e[n]=t[n]);return e}(e||{},{length:Number.POSITIVE_INFINITY,location:"end"})},e.prototype.parse=function(e){var t=this,n=["a","style","script"],s=0,r=[];return function(e,t){for(var n,s=t.onOpenTag,r=t.onCloseTag,i=t.onText,a=t.onComment,o=t.onDoctype,u=new ln,l=0,c=e.length,h=0,d=0,p=u;l<c;){var f=e.charAt(l);switch(h){case 0:"<"===f&&_();break;case 1:m(f);break;case 2:v(f);break;case 3:g(f);break;case 4:b(f);break;case 5:y(f);break;case 6:w(f);break;case 7:C(f);break;case 8:A(f);break;case 9:E(f);break;case 10:k(f);break;case 11:x(f);break;case 12:T(f);break;case 13:"--"===e.substr(l,2)?(l+=2,p=new ln(wt(wt({},p),{type:"comment"})),h=14):"DOCTYPE"===e.substr(l,7).toUpperCase()?(l+=7,p=new ln(wt(wt({},p),{type:"doctype"})),h=20):N();break;case 14:I(f);break;case 15:D(f);break;case 16:S(f);break;case 17:M(f);break;case 18:F(f);break;case 19:B(f);break;case 20:R(f);break;default:pt(h)}l++}function m(e){"!"===e?h=13:"/"===e?(h=2,p=new ln(wt(wt({},p),{isClosing:!0}))):"<"===e?_():It.test(e)?(h=3,p=new ln(wt(wt({},p),{isOpening:!0}))):(h=0,p=u)}function g(e){Mt.test(e)?(p=new ln(wt(wt({},p),{name:P()})),h=4):"<"===e?_():"/"===e?(p=new ln(wt(wt({},p),{name:P()})),h=12):">"===e?(p=new ln(wt(wt({},p),{name:P()})),O()):It.test(e)||Dt.test(e)||":"===e||N()}function v(e){">"===e?N():It.test(e)?h=3:N()}function b(e){Mt.test(e)||("/"===e?h=12:">"===e?O():"<"===e?_():"="===e||Ft.test(e)||Bt.test(e)?N():h=5)}function y(e){Mt.test(e)?h=6:"/"===e?h=12:"="===e?h=7:">"===e?O():"<"===e?_():Ft.test(e)&&N()}function w(e){Mt.test(e)||("/"===e?h=12:"="===e?h=7:">"===e?O():"<"===e?_():Ft.test(e)?N():h=5)}function C(e){Mt.test(e)||('"'===e?h=8:"'"===e?h=9:/[>=`]/.test(e)?N():"<"===e?_():h=10)}function A(e){'"'===e&&(h=11)}function E(e){"'"===e&&(h=11)}function k(e){Mt.test(e)?h=4:">"===e?O():"<"===e&&_()}function x(e){Mt.test(e)?h=4:"/"===e?h=12:">"===e?O():"<"===e?_():(h=4,l--)}function T(e){">"===e?(p=new ln(wt(wt({},p),{isClosing:!0})),O()):h=4}function I(e){"-"===e?h=15:">"===e?N():h=16}function D(e){"-"===e?h=18:">"===e?N():h=16}function S(e){"-"===e&&(h=17)}function M(e){h="-"===e?18:16}function F(e){">"===e?O():"!"===e?h=19:"-"===e||(h=16)}function B(e){"-"===e?h=17:">"===e?O():h=16}function R(e){">"===e?O():"<"===e&&_()}function N(){h=0,p=u}function _(){h=1,p=new ln({idx:l})}function O(){var t=e.slice(d,p.idx);t&&i(t,d),"comment"===p.type?a(p.idx):"doctype"===p.type?o(p.idx):(p.isOpening&&s(p.name,p.idx),p.isClosing&&r(p.name,p.idx)),N(),d=l+1}function P(){var t=p.idx+(p.isClosing?2:1);return e.slice(t,l).toLowerCase()}d<l&&(n=e.slice(d,l),i(n,d),d=l+1)}(e,{onOpenTag:function(e){n.indexOf(e)>=0&&s++},onText:function(e,n){if(0===s){var i=function(e,t){if(!t.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var n,s=[],r=0;n=t.exec(e);)s.push(e.substring(r,n.index)),s.push(n[0]),r=n.index+n[0].length;return s.push(e.substring(r)),s}(e,/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi),a=n;i.forEach((function(e,n){if(n%2==0){var s=t.parseText(e,a);r.push.apply(r,s)}a+=e.length}))}},onCloseTag:function(e){n.indexOf(e)>=0&&(s=Math.max(s-1,0))},onComment:function(e){},onDoctype:function(e){}}),r=this.compactMatches(r),r=this.removeUnwantedMatches(r)},e.prototype.compactMatches=function(e){e.sort((function(e,t){return e.getOffset()-t.getOffset()}));for(var t=0;t<e.length-1;t++){var n=e[t],s=n.getOffset(),r=n.getMatchedText().length,i=s+r;if(t+1<e.length){if(e[t+1].getOffset()===s){var a=e[t+1].getMatchedText().length>r?t:t+1;e.splice(a,1);continue}e[t+1].getOffset()<i&&e.splice(t+1,1)}}return e},e.prototype.removeUnwantedMatches=function(e){return this.hashtag||dt(e,(function(e){return"hashtag"===e.getType()})),this.email||dt(e,(function(e){return"email"===e.getType()})),this.phone||dt(e,(function(e){return"phone"===e.getType()})),this.mention||dt(e,(function(e){return"mention"===e.getType()})),this.urls.schemeMatches||dt(e,(function(e){return"url"===e.getType()&&"scheme"===e.getUrlMatchType()})),this.urls.wwwMatches||dt(e,(function(e){return"url"===e.getType()&&"www"===e.getUrlMatchType()})),this.urls.tldMatches||dt(e,(function(e){return"url"===e.getType()&&"tld"===e.getUrlMatchType()})),e},e.prototype.parseText=function(e,t){void 0===t&&(t=0),t=t||0;for(var n=this.getMatchers(),s=[],r=0,i=n.length;r<i;r++){for(var a=n[r].parseMatches(e),o=0,u=a.length;o<u;o++)a[o].setOffset(t+a[o].getOffset());s.push.apply(s,a)}return s},e.prototype.link=function(e){if(!e)return"";this.sanitizeHtml&&(e=e.replace(/</g,"&lt;").replace(/>/g,"&gt;"));for(var t=this.parse(e),n=[],s=0,r=0,i=t.length;r<i;r++){var a=t[r];n.push(e.substring(s,a.getOffset())),n.push(this.createMatchReturnVal(a)),s=a.getOffset()+a.getMatchedText().length}return n.push(e.substring(s)),n.join("")},e.prototype.createMatchReturnVal=function(e){var t;return this.replaceFn&&(t=this.replaceFn.call(this.context,e)),"string"==typeof t?t:!1===t?e.getMatchedText():t instanceof ft?t.toAnchorString():e.buildTag().toAnchorString()},e.prototype.getMatchers=function(){if(this.matchers)return this.matchers;var e=this.getTagBuilder(),t=[new en({tagBuilder:e,serviceName:this.hashtag}),new zt({tagBuilder:e}),new nn({tagBuilder:e}),new un({tagBuilder:e,serviceName:this.mention}),new Zt({tagBuilder:e,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})];return this.matchers=t},e.prototype.getTagBuilder=function(){var e=this.tagBuilder;return e||(e=this.tagBuilder=new mt({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),e},e.version="3.14.3",e.AnchorTagBuilder=mt,e.HtmlTag=ft,e.matcher={Email:zt,Hashtag:en,Matcher:Tt,Mention:un,Phone:nn,Url:Zt},e.match={Email:Ct,Hashtag:At,Match:gt,Mention:Et,Phone:kt,Url:xt},e}();function hn(e,t=e){return{type:"autolink",url:e,text:t}}const dn=nt(/<!!mention:([^>\s]*?)\|(.*?)>/gm,(([e,t,n])=>function(e,t){return{type:"mention",id:e,text:t}}(decodeURIComponent(t),n))),pn=nt(/<!!customemoji:(.*?)>/gm,(([e,t])=>function(e){return{type:"customemoji",text:e}}(t))),fn=nt(/<((?:https?|mailto):.*?)\|(.*?)>/gi,(([e,t,n])=>function(e,t=[]){return{type:"link",url:e,children:t}}(t,[n]))),mn=nt(/<actionlink:([^|]+)[|]([^>]*)>/gi,(([e,t,n])=>{const{action:s,params:r}=vn(t);return function(e,t,n=[]){return{type:"actionlink",action:e,params:t,children:n}}(s,r,[n])})),gn=nt(/<actionbutton:([^|]+)[|]([^>]*)>/gi,(([e,t,n])=>{const{action:s,params:r}=vn(t);return function(e,t,n=[]){return{type:"actionbutton",action:e,params:t,children:n}}(s,r,[n])}));function vn(e){const t=e.indexOf("?");return-1===t?{action:e,params:{}}:{action:e.slice(0,t),params:Object.fromEntries(new URLSearchParams(e.slice(t)))}}const bn=nt(/(?:^|\n)(?:\s*[-*+]\s+[^\n]+(?:\n|$))+/g,(([e])=>function(e=[]){return{type:"bulletlist",children:e}}([e.startsWith("\n")?e.slice(1):e]))),yn=nt(/^\s*[-*+]\s+([^\n]+)(?:\n|$)/gm,(([e,t])=>({type:"bulletpoint",children:[t]}))),wn=e=>{const t=/(?:^|[^-:/\w])([(+]?[0-9](?:[-_+ ().]?[0-9]){5,11}[0-9])(?:[^-:/\w]|$)/g;let n=0;const s=[];for(const r of ge(e,t)){const t=r[0],i=r[1],a=t.startsWith(i)?r.index:r.index+1;a-n>0&&s.push(e.substring(n,a));const o=hn("tel:"+i.replace(/[^0-9+]/g,""),i);s.push(o),n=a+i.length}return n<e.length&&s.push(e.substring(n)),s},Cn=e=>fn(e).flatMap((e=>"string"==typeof e?An(e):["<",...An(e.url),...An("|"+e.children[0]+">")])),An=e=>{const t=cn.parse(e,{urls:!0,email:!0,phone:!1,hashtag:!1,mention:!1}),n=[];let s=0;for(const r of t){const t=r.getOffset(),i=r.getMatchedText(),a=i.length;let o=i;r instanceof Ct?o="mailto:"+r.getEmail():r instanceof xt&&(o=r.getUrl()),t>s&&n.push(e.substring(s,t)),n.push(hn(o,i)),s=t+a}return s<e.length&&n.push(e.substring(s)),n},En=["Codeblock","Codespan","FormattedLink","Wikitext","Autolink","Actions","Mention","Mention","BulletPoint","CustomEmoji"];const kn=function(){const e=RegExp("[^\n]+\n?|\n","g");return t=>Array.from(t.match(e)||[])}();function xn(e,t={except:[]}){let n=function(e,t){let n=[e];return n=In(n,t.multilineSteps),n=In(n,[kn]),n=In(n,t.singlelineSteps),n=Dn(n),n}(e,function(e={except:[]}){var t;const n={multilineSteps:[],singlelineSteps:[]},s=null!=(t=e.except)?t:En.filter((t=>!e.only.includes(t)));return s.includes("BulletPoint")||n.multilineSteps.push(bn,yn),s.includes("Mention")||n.singlelineSteps.push(dn),s.includes("CustomEmoji")||n.singlelineSteps.push(pn),s.includes("Codespan")||n.multilineSteps.push(nt(/```([^]+?)```/g,(([e,t])=>({type:"codespan",text:t.replace(/<!!mention:.*?\|([^>]*)>/gim,"@$1").replace(/<!!customemoji:(.*?)>/gim,"$1")})))),s.includes("FormattedLink")||n.singlelineSteps.push(fn),s.includes("Actions")||(n.singlelineSteps.push(mn),n.singlelineSteps.push(gn)),s.includes("Wikitext")||n.singlelineSteps.push(ut),s.includes("Autolink")||n.singlelineSteps.push(Cn,wn),n}(t));return n=Sn(n,!1),n}function Tn(e){return xn(e,{except:["FormattedLink","Actions"]})}function In(e,t){return t.reduce(((e,t)=>tt(e,t)),e)}function Dn(e){const t=[];let n=-1;for(const s of e)"string"==typeof s?"string"==typeof t[n]?t[n]+=s:t[++n]=s:t[++n]="children"in s?p(d({},s),{children:Dn(s.children)}):s;return t}function Sn(e,t){const n=[];let s=[];for(let r=0;r<e.length;r++){const i=e[r];if("string"==typeof i)s.push(i);else if("children"in i){s.length>0&&(n.push(s.join("")),s=[]);const e=Sn(i.children,t||"link"===i.type||"actionbutton"===i.type||"actionlink"===i.type);n.push(p(d({},i),{children:e}))}else"autolink"===i.type&&t?s.push(i.text):(s.length>0&&(n.push(s.join("")),s=[]),n.push(i))}return s.length>0&&(n.push(s.join("")),s=[]),n}class Mn{constructor(e,t,n,s){this.emoji=e,this.messageId=t,this.conversationId=n,this._realtimeClient=s}get brandedMessageId(){return this.messageId}get brandedConversationId(){return this.conversationId}add(){return y(this,null,(function*(){const e=yield this._realtimeClient.call({method:"PUT",path:["conversations",this.brandedConversationId,"messages",this.brandedMessageId,"reactions",this.emoji,this._realtimeClient.userId],data:{}});F(`Add ${this.emoji} reaction on message ${this.messageId} in conversation ${this.conversationId}`,e)}))}remove(){return y(this,null,(function*(){const e=yield this._realtimeClient.call({method:"DELETE",path:["conversations",this.brandedConversationId,"messages",this.brandedMessageId,"reactions",this.emoji,this._realtimeClient.userId],data:{}});(e.ok||"server"!==e.where||404!==e.value.status)&&F(`Remove ${this.emoji} reaction from message ${this.messageId} in conversation ${this.conversationId}`,e)}))}}class Fn{constructor(e,t,n){this.id=e,this.conversationId=t,this._realtimeClient=n}get brandedId(){return this.id}get brandedConversationId(){return this.conversationId}reaction(e){if("string"!=typeof e)throw new Error(`Creating ReactionRef failed because emoji "${e}" is not a string`);if(""===e)throw new Error(`Creating ReactionRef failed because emoji "${e}" is an empty string`);return this._realtimeClient.refs.reaction(this.brandedConversationId,this.brandedId,e)}get(){return y(this,null,(function*(){const e=yield this._realtimeClient.call({method:"GET",path:["me","conversations",this.brandedConversationId,"messages",this.brandedId],data:{}});if(!e.ok&&"server"===e.where&&404===e.value.status)return null;if(!e.ok&&"server"===e.where&&403===e.value.status&&"NOT_A_PARTICIPANT"===e.value.errorCode)return null;const t=F("Get message "+this.id,e),n=yield this._realtimeClient.hydrateMessageData(t,this.brandedConversationId);return qn("Get message "+this.id,n)}))}edit(e){return y(this,null,(function*(){const t={content:Bn(e),custom:"string"==typeof e?void 0:e.custom},n=yield this._realtimeClient.call({method:"PATCH",path:["conversations",this.brandedConversationId,"messages",this.brandedId],data:t});F(`Edit message ${this.id} in conversation ${this.conversationId}`,n)}))}delete(){return y(this,null,(function*(){const e=yield this._realtimeClient.call({method:"DELETE",path:["conversations",this.brandedConversationId,"messages",this.brandedId],data:{}});(e.ok||"server"!==e.where||404!==e.value.status)&&F(`Delete message ${this.id} in conversation ${this.conversationId}`,e)}))}}function Bn(e){return"string"==typeof e?[{type:"text",children:xn(e)}]:"text"in e&&e.text?[{type:"text",children:xn(e.text)}]:"content"in e&&e.content?e.content:void 0}class Rn{constructor(e,t){this.id=e,this._realtimeClient=t,this.uselessObjForTypeCheck={subject:null,photoUrl:null,welcomeMessages:null,custom:null,access:null,notify:null}}get brandedId(){return this.id}get brandedUserId(){return this._realtimeClient.userId}participant(e){if("string"==typeof e){if(""===e)throw new Error(`Creating ParticipantRef failed because ID "${e}" is an empty string`);return this._realtimeClient.refs.participant(this.brandedId,e)}if("brandedId"in e)return this._realtimeClient.refs.participant(this.brandedId,e.id);throw new Error(`Creating ParticipantRef failed because user "${e}" is not a string or a UserRef`)}message(e){if("string"!=typeof e)throw new Error(`Creating MessageRef failed because ID "${e}" is not a string`);if(""===e)throw new Error(`Creating MessageRef failed because ID "${e}" is an empty string`);return this._realtimeClient.refs.message(this.brandedId,e)}get(){return y(this,null,(function*(){const e=this.subscribe(),t=yield e.connected.catch((()=>{throw new Error("GET Conversation failed, could not fetch conversation")}));yield this._realtimeClient.sync();const n=e.state;if(e.unsubscribe(),"active"===n.type)return n.latestSnapshot;if("pending"===n.type)return t.latestSnapshot;if("unsubscribed"===n.type)return t.latestSnapshot;throw"error"===n.type?n.error:"Unreachable"}))}set(e){return y(this,null,(function*(){const t=this._realtimeClient.call({method:"PUT",path:["conversations",this.brandedId],data:e}),n=this._realtimeClient.call({method:"PUT",path:["conversations",this.brandedId,"participants",this.brandedUserId],data:e}),s=yield t;var r;!s.ok&&"server"===s.where&&403===s.value.status&&"UNAUTHORIZED_TO_EDIT"===s.value.errorCode&&(void 0===(r=e).subject&&void 0===r.photoUrl&&void 0===r.welcomeMessages&&null!==r.custom&&(void 0===r.custom||!Object.values(r.custom).some((e=>void 0!==e))))||F("Set conversation "+this.id,s);const i=yield n;!i.ok&&"server"===i.where&&403===i.value.status&&"UNAUTHORIZED_TO_EDIT_PARTICIPANT"===i.value.errorCode&&function(e){return void 0===e.access&&void 0===e.notify}(e)||F("Set your participation in conversation "+this.id,i)}))}createIfNotExists(){return y(this,arguments,(function*(e={}){const t=this._realtimeClient.call({method:"POST",path:["conversations",this.brandedId],data:e}),n=this._realtimeClient.call({method:"POST",path:["conversations",this.brandedId,"participants",this.brandedUserId],data:e}),s=yield t;(s.ok||"server"!==s.where||409!==s.value.status)&&F("Create conversation "+this.id,yield t);const r=yield n;(r.ok||"server"!==r.where||409!==r.value.status)&&F("Join conversation "+this.id,yield n)}))}markAsRead(){return y(this,null,(function*(){const e=yield this._realtimeClient.call({method:"POST",path:["me","conversations",this.brandedId,"read"],data:{}});F(`Mark ${this.id} as read`,e)}))}markAsUnread(){return y(this,null,(function*(){const e=yield this._realtimeClient.call({method:"POST",path:["me","conversations",this.brandedId,"unread"],data:{}});F(`Mark ${this.id} as unread`,e)}))}send(e){return y(this,null,(function*(){const t={content:Nn(e),referencedMessageId:_n(e),custom:"string"==typeof e?void 0:e.custom,idempotencyKey:et((new Date).getTime())},n=yield this._realtimeClient.call({method:"POST",path:["conversations",this.brandedId,"messages"],data:t}),s=F("Send message to conversation "+this.id,n);return this._realtimeClient.refs.message(this.brandedId,s.id)}))}subscribeMessages(e){return this._realtimeClient.subscribe(["me","conversations",this.brandedId,"messages"],e)}subscribeParticipants(e){return this._realtimeClient.subscribe(["me","conversations",this.brandedId,"participants"],e)}subscribe(e){return this._realtimeClient.subscribe(["me","conversations",this.brandedId],e)}subscribeTyping(e){return this._realtimeClient.subscribe(["me","conversations",this.brandedId,"typing"],e)}markAsTyping(){return y(this,null,(function*(){const e=yield this._realtimeClient.call({method:"POST",path:["me","conversations",this.brandedId,"typing"],data:{}});F(`Set user as typing in ${this.id}`,e)}))}}function Nn(e){return"string"==typeof e?[{type:"text",children:Tn(e)}]:"text"in e?[{type:"text",children:Tn(e.text)}]:e.content}function _n(e){if("string"==typeof e)return;const t=e.referencedMessage;return void 0!==t?"string"==typeof t?t:t.id:void 0}const On="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},Pn=globalThis.FinalizationRegistry,jn=void 0!==Pn?Pn:class{constructor(e){}register(e,t,n){}unregister(e){}};class $n{constructor(e){this.client=e,this.users=new Map,this.conversations=new Map,this.participants=new Map,this.messages=new Map,this.reactions=new Map,this.registry=new jn((({map:e,key:t})=>{e.delete(t)}))}user(e){var t;const n=null==(t=this.users.get(e))?void 0:t.deref();if(n)return n;const s=L(new Ke(e,this.client));return this.users.set(e,new On(s)),this.registry.register(s,{map:this.users,key:e}),s}conversation(e){var t;const n=null==(t=this.conversations.get(e))?void 0:t.deref();if(n)return n;const s=L(new Rn(e,this.client));return this.conversations.set(e,new On(s)),this.registry.register(s,{map:this.conversations,key:e}),s}participant(e,t){var n;const s=`[${e}][${t}]`,r=null==(n=this.participants.get(s))?void 0:n.deref();if(r)return r;const i=L(new Xe(t,e,this.client));return this.participants.set(s,new On(i)),this.registry.register(i,{map:this.participants,key:s}),i}message(e,t){var n;const s=`[${e}][${t}]`,r=null==(n=this.messages.get(s))?void 0:n.deref();if(r)return r;const i=L(new Fn(t,e,this.client));return this.messages.set(s,new On(i)),this.registry.register(i,{map:this.messages,key:s}),i}reaction(e,t,n){var s;const r=`[${e}][${t}][${n}]`,i=null==(s=this.reactions.get(r))?void 0:s.deref();if(i)return i;const a=L(new Mn(n,t,e,this.client));return this.reactions.set(r,new On(a)),this.registry.register(a,{map:this.reactions,key:r}),a}}class Un{constructor(e,t,n){this.userId=t,this.refs=new $n(this),this.alive=!0,this.connection=new Ve(e,n,this),n.onTokenRefreshFailed((()=>{this.destroy()}))}call(e){return y(this,null,(function*(){return this.alive?this.connection.call(e):D("SESSION_DESTROYED")}))}subscribe(e,t){return this.connection.subscribe(e,t)}internalSubscribe(e){const t=this.connection.getOrCreateStore(e);return{store:t,unsubscribe:t.registerInternalSubscription()}}destroy(){this.alive=!1,this.connection.destroy()}isConnected(){return this.connection.isConnected()}sync(){return y(this,null,(function*(){yield this.connection.sync()}))}hydrateMessageData(e,t){return y(this,null,(function*(){const n=null===e.senderId?Promise.resolve(I(null)):this.getUser(e.senderId),s=null===e.referencedMessageId?Promise.resolve(I(null)):this.getReferencedMessage(t,e.referencedMessageId),r=yield n;if(!r.ok)return r;const i=yield s;if(!i.ok)return i;var a,o,u;return I((a=e,o=r.value,u=i.value,L({id:a.id,type:a.type,sender:o,referencedMessage:u,custom:L(a.custom),createdAt:a.createdAt,editedAt:a.editedAt,origin:a.origin,content:a.content,reactions:De(a.reactions),plaintext:ke(a.content,{})})))}))}getReferencedMessage(e,t){return y(this,null,(function*(){const n=yield this.call({method:"GET",path:["me","conversations",e,"messages",t],data:{}});if(!n.ok&&"server"===n.where&&404===n.value.status)return I(null);if(!n.ok&&"server"===n.where&&403===n.value.status&&"NOT_A_PARTICIPANT"===n.value.errorCode)return I(null);if(!n.ok)return Wn(n,`Fetching referenced message ${t} in conversation ${e}`);const s=n.value.data,r=yield this.getUser(s.senderId);if(!r.ok)return r;var i,a;return I((i=s,a=r.value,L({id:i.id,type:i.type,sender:a,referencedMessageId:i.referencedMessageId,custom:L(i.custom),createdAt:i.createdAt,editedAt:i.editedAt,origin:i.origin,content:i.content,reactions:De(i.reactions),plaintext:ke(i.content,{})})))}))}getUser(e){return y(this,null,(function*(){const t=yield this.call({method:"GET",path:["users",e],data:{includePrivateFields:!1}});return t.ok||"server"!==t.where||404!==t.value.status?t.ok?I(Te(t.value.data)):Wn(t,"Get user "+e):I(null)}))}}function Wn(e,t){return"server"===e.where?S(p(d({},e.value),{operation:t})):e}function qn(e,t){var n;if(t.ok)return t.value;throw"SESSION_DESTROYED"===t.value?new Error(`${e} failed because the session was destroyed`):new Error(B(null!=(n=t.value.operation)?n:e,t.value))}class Hn{constructor(e,t,n){this.realtimeWsApiUrl=e,this.internalHttpApiUrl=t,this.restApiHttpUrl=n}getBokensUrl(e,t,n){return this.internalHttpApiUrl+`/${e}/bokens/${encodeURIComponent(t)}?signature=${encodeURIComponent(null!=n?n:"")}`}getRealtimeWsUrl(e,t,n,s,r){const i=encodeURIComponent(t);return this.realtimeWsApiUrl+`/${e}/realtime/${i}?talkjs-client-build=${null!=r?r:"standalone"}&talkjs-core=${n}&talkjs-client-id=${s}`}static fromHost(e){var t;const n=new Hn("wss://realtime.talkjs.com/v1","https://app.talkjs.com/api/v0","https://api.talkjs.com/v1");if(!e)return n;if("@currentHost"===e){if("undefined"==typeof location)throw new Error("You can only use @currentHost in a browser.");e=(null!=(t=window.top)?t:window).location.host}if(e.endsWith("talkjs.com")){const t=e.match(/^(?:\w+-)?([^.]+)\.talkjs\.com$/);if(t){const e=t[1];return["app","cdn","api","realtime"].includes(e)?n:new Hn(`wss://realtime-${e}.talkjs.com/v1`,`https://app-${e}.talkjs.com/api/v0`,`https://api-${e}.talkjs.com/v1`)}return n}return e.includes("localhost")||e.includes("localtest.me")||/^\d+\.\d+\.\d+\.\d+(:\d+)?$/.test(e)?new Hn(`ws://${e}/public_api/v1`,`http://${e}/api/v0`,`http://${e}/public_api/v1`):new Hn(`wss://${e}/public_api/v1`,`https://${e}/api/v0`,`https://${e}/public_api/v1`)}}function Ln({method:e,url:t,data:n,options:s,attempts:r,shouldRetry:i,authProvider:a,errorTracker:o}){var u;(!r||r<=0)&&(r=1);const l={"x-talkjs-client-build":"jssdk-dev","x-talkjs-client-date":"2026-01-19T10:53:42.725Z"};return n instanceof FormData||(l["Content-Type"]=null!=(u=null==s?void 0:s.contentType)?u:"application/json"),k(r,(()=>y(this,null,(function*(){if(a){const e=yield a.getToken();l.Authorization=`Bearer ${e}`}return fetch(t,{method:e,headers:l,body:n}).then((e=>{if(e.ok)return e;throw e}))}))),{initialDelay:.2,log:void 0,shouldRetry:n=>y(this,null,(function*(){return a&&401===n.status?(null==o||o.log(`401 error from ${e} ${t}, ${yield a.getToken()}`),a.invalidateAndRefresh(),!0):i?i(n):!("status"in n&&n.status>=400&&n.status<500)}))}).catch((n=>{if(Math.random()<.1&&!t.toString().startsWith("https://capture.trackjs.com")){const s=`Network Error for ${e} ${t}`;"undefined"!=typeof window&&(n instanceof Response?n.clone().text().then((e=>null==o?void 0:o.log(`${s} ${n.status} ${e} (10% logged)`))):null==o||o.log(`${s} ${n} (10% logged)`)),console.error("[TalkJS]",s)}throw n}))}class Gn{constructor(e){var t,r,i,a;v(this,n),v(this,s),this._timeCreated=Date.now(),b(this,n,null!=(r=null==(t=globalThis.document)?void 0:t.referrer)?r:""),b(this,s,(null!=(a=null==(i=globalThis.location)?void 0:i.href)?a:globalThis.HermesInternal)?"React Native Hermes":""),this._trackJSData={customer:{application:"",correlationId:"",sessionId:"",token:"",userId:"",version:"dev-2026-01-19T10:53:42.725Z"},entry:"direct",environment:{age:Date.now()-this._timeCreated,dependencies:{},originalUrl:g(this,s),referrer:g(this,n),userAgent:window.navigator.userAgent},metadata:[],nav:[],network:[],url:g(this,s),stack:"",timestamp:(new Date).toISOString(),version:"dev-2026-01-19T10:53:42.725Z",throttled:0},this._url=`https://capture.trackjs.com/capture?token=${e}`,this._trackJSData.customer.token=e}setData({appId:e,meId:t,sessionId:n}){this._trackJSData.customer.userId=e,this._trackJSData.customer.sessionId=`${e}/${t}`,this._trackJSData.customer.correlationId=n}log(e){return y(this,null,(function*(){try{const t=p(d({},this._trackJSData),{message:e});yield Ln({method:"POST",url:this._url,data:JSON.stringify(t),options:{contentType:"text/plain"}})}catch(t){console.error("[TalkJS] Failed when sending an error report. Error: ",t)}}))}}n=new WeakMap,s=new WeakMap;const zn={log:e=>Promise.resolve(),setData:e=>{}};class Jn{constructor(e,t={}){this._onSubscription=t,this._handlers={};for(const n in e)Object.hasOwnProperty.call(e,n)&&(this._handlers[n]=[])}emit(e,t){for(const s of this._handlers[e])try{s(t)}catch(n){console.error(`[TalkJS] '${String(e)}' handler threw an error:`,n)}}emitAsync(e,t){return y(this,null,(function*(){try{const n=this._handlers[e].map((e=>e(t)));yield Promise.all(n)}catch(n){console.error(`[TalkJS] '${String(e)}' handler threw an error:`,n)}}))}supports(e){return e in this._handlers}on(e,t){var n,s;if(!this.supports(e))throw new Error(`Unknown event type '${String(e)}'`);null==(s=(n=this._onSubscription)[e])||s.call(n),this._handlers[e].push(t)}off(e,t){if(!Object.hasOwnProperty.call(this._handlers,e))throw new Error(`Unknown event type '${String(e)}'`);const n=this._handlers[e].indexOf(t);-1!==n&&this._handlers[e].splice(n,1)}removeAllListeners(){for(const e in this._handlers)this._handlers[e]=[]}handles(e){return this._handlers[e].length>0}subscribe(e,t){return this.on(e,t),{unsubscribe:()=>this.off(e,t)}}}class Yn{constructor(e){this.handlers=e,this.tokenResult=null,this.pendingToken=null}getTokenResult(){return y(this,null,(function*(){if(this.tokenResult)return this.tokenResult;if(this.pendingToken)return this.pendingToken.promise;const e=x();return this.pendingToken=e,this.handlers.onNeedToken(),e.promise}))}setTokenResult(e){this.pendingToken&&(this.pendingToken.resolve(e),this.pendingToken=null),this.tokenResult=e,this.handlers.onChange(e)}refreshToken(){this.pendingToken||(this.pendingToken=x(),this.handlers.onNeedToken())}invalidateAndRefresh(){this.tokenResult=null,this.refreshToken()}}class Qn{constructor(e,t,n,s){this.apiUrls=e,this.appId=t,this.userId=n,this.signature=s,this.inner=new Yn({onChange:e=>{e.ok?this.eventEmitter.emit("tokenChanged",e.value):this.emitTokenRefreshFailed(e.value)},onNeedToken:()=>y(this,null,(function*(){if(this._usingBokens&&!this.signature&&!this._calledBokens&&(yield new Promise((e=>setTimeout(e,1)))),this._usingBokens)yield this.sendBokenRequest().then((e=>this.inner.setTokenResult(I(e)))).catch((e=>this.inner.setTokenResult(S(e))));else if(this.onNeedToken)this.onNeedToken();else{const e=D("Cannot refresh token, no `onNeedToken` provided.");this.inner.setTokenResult(e)}}))}),this._usingBokens=!0,this._calledBokens=!1,this.onNeedToken=void 0,this.eventEmitter=new Jn({tokenChanged(e){},tokenRefreshFailed(e){},tokenAccepted(e){}}),this.sessionExpiryWarningTimeoutId=void 0;const r="undefined"!=typeof window&&e.restApiHttpUrl.includes("api.talkjs.com");this.errorTracker=r?new Gn("970cd0be0fb74630b75c8451051299dc"):zn}get usingBokens(){return this._usingBokens}getToken(){return y(this,null,(function*(){const e=yield this.inner.getTokenResult();if(e.ok)return e.value;throw e.value}))}checkCanSetAuth(){if(this._calledBokens)throw new Error("[TalkJS] Cannot switch to JWT authentication once connected to TalkJS servers. To use JWTs, call `setToken` or set `onNeedToken` before triggering any requests or mounting any components. We recommend setting up authentication in your app's entry point (App.jsx, main.js, or similar) so it runs first.")}setToken(e){this.checkCanSetAuth(),setTimeout((()=>this.checkJwt(e)),200),this._usingBokens=!1,this.inner.setTokenResult(I(e))}setTokenError(e){this._usingBokens=!1,this.inner.setTokenResult(D(e))}refreshToken(){this.inner.refreshToken()}invalidateAndRefresh(){this.inner.invalidateAndRefresh()}setOnNeedToken(e){this.checkCanSetAuth(),this._usingBokens=!1,this.onNeedToken=e}onTokenChanged(e){return this.eventEmitter.on("tokenChanged",e),()=>{this.eventEmitter.off("tokenChanged",e)}}onTokenRefreshFailed(e){return this.eventEmitter.on("tokenRefreshFailed",e),()=>{this.eventEmitter.off("tokenRefreshFailed",e)}}emitTokenRefreshFailed(e){this.eventEmitter.emit("tokenRefreshFailed",e)}onTokenAccepted(e){return this.eventEmitter.on("tokenAccepted",e),()=>{this.eventEmitter.off("tokenAccepted",e)}}emitTokenAccepted(e){this.eventEmitter.emit("tokenAccepted",e)}clearScheduledRefresh(){this.sessionExpiryWarningTimeoutId&&clearTimeout(this.sessionExpiryWarningTimeoutId)}scheduleRefresh(e){if(this.clearScheduledRefresh(),null===e)return;const t=void 0!==this.onNeedToken;e<120&&!t?console.warn(`[TalkJS] TalkJS will stop working in ${e} seconds due to auth token expiry. Token expires in ${e} seconds, and cannot be refreshed because no \`onNeedToken\` callback was provided. Non-refreshable tokens are recommended to expire at least 24 hours in the future.`):e<120&&t?console.warn(`[TalkJS] TalkJS auth token will expire and need to be refreshed in ${e} seconds. Refreshable JWTs are recommended to expire at least 30 minutes in the future, to improve performance and reduce unnecessary refreshes.`):e<3300&&!t&&console.warn(`[TalkJS debug] TalkJS will stop working in ${Math.round(e/60)} minutes due to auth token expiry. Non-refreshable tokens are recommended to expire at least 24 hours in the future. Alternatively, set \`onNeedToken\` with a callback that will run whenever a new token is needed.`);const n=e>600?e-300:e/2,s=Math.min(1728e6,1e3*n);this.sessionExpiryWarningTimeoutId=setTimeout((()=>{void 0!==this.onNeedToken&&this.refreshToken()}),s)}checkJwt(e){!function(e){if(!("string"==typeof e||e instanceof String)){if(void 0===e)throw"Token was undefined";throw"Token must be a string, got: "+e}}(e);const t=[];let n,s,r;if("string"==typeof e?n=e:t.push(`Token type is ${typeof e} instead of a string.`),n)try{const e=function(e){const t=e.split(".");if(3!==t.length)throw"Token does not contain exactly two `.`. Check that you generated your JWT correctly. It should be `<header>.<payload>.<signature>`.";return{header:Vn(t[0]),payload:Vn(t[1])}}(n);s=e.header,r=e.payload}catch(i){t.push(i)}if(s){const e=this.checkJwtHeader(s);t.push(...e)}if(r){const e=this.checkJwtPayload(r);t.push(...e)}if(t.length)if(this.usingBokens)this.errorTracker.log(`JWT Errors detected by AuthProvider when using bokens: ${t.join("\n")}`);else{console.warn("[TalkJS] Authentication token appears to be generated incorrectly. Will still attempt to authenticate, but TalkJS may not work as expected. See below for a description of any problems and how to fix them.");const n=t.length>1;t.forEach(((e,t)=>{const s=n?`Reason ${t+1}:`:"Reason:";console.warn(`[TalkJS] ${s} ${e}`)})),console.warn(`[TalkJS]: Authentication token: "${e}"`)}}checkJwtHeader(e){const t=[],n=e.alg;return void 0===n?t.push('Token header must contain `"alg": "HS256"`, but no `alg` was specified.'):"string"!=typeof n?t.push(`Token header must contain \`"alg": "HS256"\`, but \`alg\` was ${typeof n} instead of a string. Make sure you wrap the value in "".`):"HS256"!==n&&t.push(`Token header must contain \`"alg": "HS256"\`, but \`alg\` was set to "${n}" instead. HS256 is the only supported algorithm.`),t}checkJwtPayload(e){const t=[],n=e.iss;void 0===n?t.push(`Token payload must contain an \`iss\` claim set to your app ID (${this.appId}), but \`iss\` was missing.`):"string"!=typeof n?t.push(`Token payload must contain an \`iss\` claim set to your app ID (${this.appId}), but \`iss\` was ${typeof n} instead of a string. Make sure you wrap the value in "".`):n!==this.appId&&t.push(`Token payload must contain an \`iss\` claim set to your app ID (${this.appId}), but \`iss\` was set to "${n}" instead.`);const s=e.sub;void 0===s?t.push(`Token payload must contain a \`sub\` claim set to your user ID (${this.userId}), but \`sub\` was missing.`):"string"!=typeof s?t.push(`Token payload must contain a \`sub\` claim set to your user ID (${this.userId}), but \`sub\` was ${typeof s} instead of a string. Make sure you wrap the value in "".`):s!==this.userId&&t.push(`Token payload must contain a \`sub\` claim set to your userId ID (${this.userId}), but \`sub\` was set to "${s}" instead.`);const r=e.tokenType;void 0===r?t.push('Token payload must contain a `"tokenType": "user"` claim, but no `tokenType` was specified.'):"string"!=typeof r?t.push(`Token payload must contain a \`"tokenType": "user"\` claim, but \`tokenType\` was ${typeof r} instead of a string. Make sure you wrap the value in "".`):"user"!==r&&t.push(`Token payload must contain a \`"tokenType": "user"\` claim, but \`tokenType\` was set to "${r}" instead.`);const i=e.exp;void 0===i||("number"!=typeof i?t.push(`Token payload contains an \`exp\` claim, but \`exp\` was ${typeof r} instead of a number. If set, \`exp\` should be the expiry date as a number of seconds since 1970-01-01. Don't wrap the value in "".`):i<1e9?t.push(`Token payload contains an \`exp\` claim, but \`exp\` is very small (${i}, representing ${new Date(1e3*i).toLocaleDateString()}). If set, \`exp\` should be the expiry date as a number of seconds since 1970-01-01.`):i>1e11?t.push(`Token payload contains an \`exp\` claim, but \`exp\` is very small (${i}, representing ${new Date(1e3*i).toLocaleDateString()}). If set, \`exp\` should be the expiry date as a number of seconds since 1970-01-01. Double-check that you are using seconds and not milliseconds or nanoseconds.`):i<(new Date).getTime()/1e3&&t.push(`Token payload contains an \`exp\` claim, but \`exp\` (${i}, representing ${new Date(1e3*i).toLocaleDateString()}) appears to be in the past, meaning the token will be rejected. This error can also happen if your device's clock is set incorrectly, in which case the token will still work.`));const a=e.nbf;return void 0===a||("number"!=typeof a?t.push(`Token payload contains a \`nbf\` (not-before) claim, but \`nbf\` was ${typeof r} instead of a number. If set, \`nbf\` should be the date when the JWT becomes valid, as a number of seconds since 1970-01-01.`):a>1e11&&t.push(`Token payload contains a \`nbf\` (not-before) claim, but \`nbf\` is very large (${a}, representing ${new Date(1e3*a).toLocaleDateString()}). If set, \`nbf\` should be the date when the JWT becomes valid, as a number of seconds since 1970-01-01. Double-check that you are using seconds and not milliseconds or nanoseconds.`)),t}sendBokenRequest(){return y(this,null,(function*(){this._calledBokens=!0;let e=0;const t=this.apiUrls.getBokensUrl(this.appId,this.userId,this.signature),n=yield Ln({method:"GET",url:t,attempts:1e4,shouldRetry:t=>{if(t instanceof Error)return!0;if(401===t.status)throw"Check that you provided a valid signature.";if(404===t.status)throw"Check that you specified the correct App ID.";if(429===t.status||502===t.status)return!0;if(t.status>=400&&t.status<500)throw`Unexpected HTTP ${t.status} response when fetching auth token. Check that you configured the session correctly.`;if(e++,e>=5)throw`Unexpected HTTP ${t.status} response when fetching auth token, retrying did not help.`;return!0},errorTracker:this.errorTracker});return(yield n.json()).boken}))}}function Vn(e){try{const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=decodeURIComponent(atob(t).split("").map((e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join(""));return JSON.parse(n)}catch(t){throw`Could not base64-decode and JSON-parse token section: ${e}. Check that you base-64 encoded the section correctly.`}}const Zn=new class{constructor(){this.registry={}}getOrCreate(e){const t=this.key(e),n=this.registry[t];if(n)return n;const s=new Kn(e);return this.registry[t]=s,s}deregister(e,t){const n=this.key({appId:e,userId:t});delete this.registry[n]}key({appId:e,userId:t}){return`${e}:${t}`}};class Kn{constructor(e){this._onNeedToken=void 0,function(e){function t(e,t){if(!e)throw new Error("[TalkJS] TalkSession: "+t)}t(e&&"object"==typeof e,"Expected an object argument in `getTalkSession`."),t(e.appId&&"string"==typeof e.appId,"The `appId` property of the `getTalkSession` options is required and it must be a non-empty string."),t("string"==typeof e.userId,"The `userId` property of the `getTalkSession` options is required and it must be a string."),void 0!==e.token&&t(e.token&&"string"==typeof e.token,"The `token` property of the `getTalkSession` options must be a non-empty string."),void 0!==e.tokenFetcher&&t("function"==typeof e.tokenFetcher,"The `tokenFetcher` property of the `getTalkSession` options must be a function.")}(e);const{appId:t,userId:n,token:s,tokenFetcher:r,signature:i}=e;this._appId=t,this._apiUrls=e.apiUrls?new Hn(e.apiUrls.realtimeWsApiUrl,e.apiUrls.internalHttpApiUrl,e.apiUrls.restApiHttpUrl):Hn.fromHost(e.host),this._authProvider=new Qn(this._apiUrls,t,n,i),s&&this._authProvider.setToken(s),r&&this._authProvider.setOnNeedToken((()=>y(this,null,(function*(){try{const e=yield r();this._authProvider.setToken(e)}catch(e){this._authProvider.setTokenError(`${e}`)}}))));const a=Math.random().toString().split(".")[1];this._realtimeClient=new Un(this._apiUrls.getRealtimeWsUrl(t,n,"1.6.2",a,e.clientBuild),n,this._authProvider),this.currentUser=this.user(n),this._terminationReason=x(),this._terminationReason.promise.then((e=>{console.error(`[TalkJS] ${e}`)})),function(e,t){return y(this,null,(function*(){return Ln({method:"GET",url:`${t}/${e}`}).then((e=>y(this,null,(function*(){return 200===e.status||404!==e.status&&(console.warn(`[TalkJS] Received unexpected ${e.status} status code when validating app ID. Assuming that the app ID is valid.`),!0)})))).catch((e=>{if("string"!=typeof e&&"status"in e){const t=e;return 200===t.status||404!==t.status&&(console.warn(`[TalkJS] Received unexpected ${t.status} status code when validating app ID. Assuming that the app ID is valid.`),!0)}return console.warn("[TalkJS] Encountered network issues when validating app ID. Assuming that the app ID is valid."),!0}))}))}(this._appId,this._apiUrls.internalHttpApiUrl).then((e=>{e||this.terminate(new Error(`The app ID ${this._appId} does not exist. Make sure you are using the correct app ID as found on the TalkJS dashboard. App IDs are case-sensitive.`))})),this._authProvider.onTokenRefreshFailed((e=>{this.terminate(new Error(`Could not authenticate, cannot recover automatically: ${e}`))}))}setToken(e){this._authProvider.setToken(e)}get onNeedToken(){return this._onNeedToken}set onNeedToken(e){this._onNeedToken=e,void 0===e?this._authProvider.setOnNeedToken(void 0):this._authProvider.setOnNeedToken((()=>{try{e()}catch(t){console.error("[TalkJS] error when calling `onNeedToken` - your auth token will expire soon.",t)}}))}onError(e){const t=x();return Promise.race([t.promise,this._terminationReason.promise]).then((t=>{"UNSUBSCRIBED"!==t&&e(t)})),{unsubscribe:()=>t.resolve("UNSUBSCRIBED")}}user(e){if("string"!=typeof e)throw new Error(`Creating UserRef failed because ID "${e}" is not a string`);if(""===e)throw new Error(`Creating UserRef failed because ID "${e}" is an empty string`);return this._realtimeClient.refs.user(e)}conversation(e){if("string"!=typeof e)throw new Error(`Creating ConversationRef failed because ID "${e}" is not a string`);if(""===e)throw new Error(`Creating ConversationRef failed because ID "${e}" is an empty string`);return this._realtimeClient.refs.conversation(e)}subscribeConversations(e){return this._realtimeClient.subscribe(["me","conversations"],e)}terminate(e){Zn.deregister(this._appId,this.currentUser.id),this._terminationReason.resolve(e),this._realtimeClient.destroy()}_isConnected(){return this._realtimeClient.isConnected()}uploadFile(e,t){return Xn(`${this._apiUrls.restApiHttpUrl}/${this._appId}/files`,this._authProvider,e,t)}uploadImage(e,t){return Xn(`${this._apiUrls.restApiHttpUrl}/${this._appId}/files`,this._authProvider,e,d({subtype:"image"},t))}uploadVideo(e,t){return Xn(`${this._apiUrls.restApiHttpUrl}/${this._appId}/files`,this._authProvider,e,d({subtype:"video"},t))}uploadAudio(e,t){return Xn(`${this._apiUrls.restApiHttpUrl}/${this._appId}/files`,this._authProvider,e,d({subtype:"audio"},t))}uploadVoice(e,t){return Xn(`${this._apiUrls.restApiHttpUrl}/${this._appId}/files`,this._authProvider,e,d({subtype:"voice"},t))}}function Xn(e,t,n,s){return y(this,arguments,(function*(e,t,n,{subtype:s,filename:r,width:i,height:a,duration:o}){const u=new FormData;return u.set("file",n,r),void 0!==s&&u.set("subtype",s),void 0!==i&&u.set("width",i.toString()),void 0!==a&&u.set("height",a.toString()),void 0!==o&&u.set("duration",o.toString()),Ln({method:"POST",url:e,data:u,authProvider:t,errorTracker:t.errorTracker}).then((e=>e.json())).then((e=>e.fileToken)).catch((e=>y(this,null,(function*(){if(e instanceof Response){const t=yield e.json(),n=`Unexpected response when uploading file, status code ${e.status} ${t.errorCode}, ${t.reasons}`;throw new Error(n)}throw e}))))}))}exports.getTalkSession=function(e){if(!e)throw new Error("[TalkJS] Must provide an options object to `getTalkSession`");return e.forceCreateNew?new Kn(e):Zn.getOrCreate(e)},exports.registerPolyfills=function({WebSocket:e}){R=e};
1
+ "use strict";var e,t,n,s,r=Object.defineProperty,i=Object.defineProperties,a=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,l=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable,u=e=>{throw TypeError(e)},h=(e,t,n)=>t in e?r(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,d=(e,t)=>{for(var n in t||(t={}))l.call(t,n)&&h(e,n,t[n]);if(o)for(var n of o(t))c.call(t,n)&&h(e,n,t[n]);return e},p=(e,t)=>i(e,a(t)),f=(e,t)=>{var n={};for(var s in e)l.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&o)for(var s of o(e))t.indexOf(s)<0&&c.call(e,s)&&(n[s]=e[s]);return n},m=(e,t,n)=>t.has(e)||u("Cannot "+n),g=(e,t,n)=>(m(e,t,"read from private field"),n?n.call(e):t.get(e)),v=(e,t,n)=>t.has(e)?u("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),b=(e,t,n,s)=>(m(e,t,"write to private field"),s?s.call(e,n):t.set(e,n),n),y=(e,t,n)=>new Promise((s,r)=>{var i=e=>{try{o(n.next(e))}catch(it){r(it)}},a=e=>{try{o(n.throw(e))}catch(it){r(it)}},o=e=>e.done?s(e.value):Promise.resolve(e.value).then(i,a);o((n=n.apply(e,t)).next())});function w(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if("*"!==t[n]&&e[n]!==t[n])return!1;return!0}function k(e){return e<=0?Promise.resolve():new Promise(t=>setTimeout(t,e))}function C(e,t){return e*(1-t+2*Math.random()*t)}Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=()=>!0;function I(e,t,n){return y(this,arguments,function*(e,t,{initialDelay:n,maxDelay:s,log:r,shouldRetry:i=T}){return t().catch(a=>y(null,null,function*(){if(0===e)throw a;if(!(yield i(a)))throw a;const o=1e3*n*1.2,l=C(s?Math.min(1e3*s,o):o,.05);return k(l).then(()=>I(e-1,t,{initialDelay:l/1e3,maxDelay:s,log:r,shouldRetry:i}))}))})}function x(){const e={},t=new Promise(function(t,n){e.resolve=t,e.reject=n});return e.promise=t,e}class S{constructor(e,t,n){this.layer=e,this.states=t,this.transitions=n,this._state=t[0]}get state(){return this._state}transition(e){const t=this.transitions[e];if(!t)return;if(!this.canTransition(e))return;const n=this.state;this._state=t.to,t.afterTransition({from:n,to:this.state})}canTransition(e){const t=this.transitions[e];return!!t&&("ANY"===t.from||t.from.includes(this.state))}}function E(e){return{ok:!0,value:e}}function M(e){return{ok:!1,where:"client",value:e}}function A(e){return{ok:!1,where:"server",value:e}}function N(){const e={},t=new Promise(t=>{e.ok=e=>y(null,null,function*(){return t(E(e))}),e.clientErr=e=>t(M(e)),e.serverErr=e=>t(A(e)),e.resolve=e=>t(e)});return e.promise=t,e}function R(e){return e.filter(e=>e.ok).map(e=>e.value)}function _(e,t){if(t.ok)return t.value.data;if("SESSION_DESTROYED"===t.value)throw new Error(`${e} failed because the session was destroyed`);if("server"===t.where)throw new Error(D(e,t.value));throw"unreachable"}function D(e,t){let n;return n=Array.isArray(t.reasons)?t.reasons.join():JSON.stringify(t.reasons),`${e} failed, got status ${t.status} ${t.errorCode}, reasons: ${n}`}let O=null;class P{constructor(e,t){this.realtimeUrl=e,this.handlers=t,this.socket=null,this.stateMachine=new S("ReconnectingSocket",["STOPPED","CONNECTING","READY","DISCONNECTED","TERMINATED"],{startWs:{from:["STOPPED","DISCONNECTED"],to:"CONNECTING",afterTransition:()=>{const e=new(function(){if(O)return O;if(globalThis.WebSocket)return globalThis.WebSocket;throw new Error("Missing WebSocket implementation")}())(this.realtimeUrl+"&talkjs-time="+Date.now());this.socket=e,e.addEventListener("open",()=>{this.socket===e&&this.stateMachine.transition("onOpen")}),e.addEventListener("close",()=>{this.socket===e&&this.stateMachine.transition("onClose")}),e.addEventListener("message",t=>{this.socket===e&&this.handlers.onMessage(t)})}},onOpen:{from:["CONNECTING"],to:"READY",afterTransition:()=>{this.handlers.onOpen()}},onClose:{from:["CONNECTING","READY"],to:"DISCONNECTED",afterTransition:e=>y(this,[e],function*({from:e}){"READY"===e&&this.handlers.onClose(),this.socket=null;const t=C(1e4,.5);setTimeout(()=>{"DISCONNECTED"===this.stateMachine.state&&this.stateMachine.transition("startWs")},t)})},stopWs:{from:["CONNECTING","DISCONNECTED","READY"],to:"STOPPED",afterTransition:({from:e})=>{"READY"===e&&this.handlers.onClose();const t=this.socket;this.socket=null,null==t||t.close(1e3)}},destroy:{from:"ANY",to:"TERMINATED",afterTransition:()=>{const e=this.socket;this.socket=null,null==e||e.close(1e3)}}})}stopWs(){this.stateMachine.transition("stopWs")}startWs(){this.stateMachine.transition("startWs")}send(e){return"READY"===this.stateMachine.state?(this.socket.send(e),E(void 0)):M("SOCKET_NOT_READY")}terminate(){const e=this.socket;this.stateMachine.canTransition("onClose")&&this.stateMachine.transition("onClose"),e&&("terminate"in e?e.terminate():e.close(1e3))}destroy(){this.stateMachine.transition("destroy")}}class j{constructor(e,t){this.handlers=t,this.socket=new P(e,{onOpen:()=>this.handlers.onOpen(),onClose:()=>this.handlers.onClose(),onMessage:e=>this.onWebSocketMessage(e)})}call(e,t){const n=`/${t.path.map(e=>encodeURIComponent(e)).join("/")}`,s=JSON.stringify([e,t.method,n,t.data,t.headers]);return this.socket.send(s)}stopWs(){this.socket.stopWs()}startWs(){this.socket.startWs()}destroy(){this.socket.destroy()}terminate(){this.socket.terminate()}onWebSocketMessage(e){try{const t=JSON.parse(e.data);if("PUBLISH"===t[1]){const e=t[0],n=JSON.stringify([e,"ACK"]);this.socket.send(n);const s=t.slice(2),r=[];s.forEach(e=>{"session.expired"===e.type?this.handlers.onAuthExpired():"upstream.restarting"===e.type?this.handlers.onUpstreamRestarting():r.push(e)}),r.length>0&&this.handlers.onPublish(e,r)}else{const e=t[0],n=t[1],s=t[2];this.handlers.onResponse(e,n,s)}}catch(t){}}}class ${constructor(e){this.delayMs=e,this.timeout=void 0}schedule(e){this.stop(),this.timeout=setTimeout(()=>{void 0!==this.timeout&&(this.stop(),e())},this.delayMs)}stop(){void 0!==this.timeout&&(clearTimeout(this.timeout),this.timeout=void 0)}}const U="undefined"!=typeof window&&null!=(e=window.queueMicrotask)?e:setTimeout;class W{constructor(){this.i=-1}next(){return this.i++,this.i}reset(){this.i=-1}}class q{constructor(e,t){this.handlers=t,this.seqCounter=new W,this.responseHandlers={},this.heartbeats=new B(this),this.socket=new j(e,{onUpstreamRestarting:()=>{this.heartbeats.serverActive(),this.handlers.onUpstreamRestarting()},onOpen:()=>{this.heartbeats.clientActive(),this.heartbeats.serverActive(),this.handlers.onReady()},onClose:()=>{this.heartbeats.stop(),Object.values(this.responseHandlers).forEach(e=>{e.clientErr("WEBSOCKET_DISCONNECTED")}),this.responseHandlers={},this.seqCounter.reset(),this.handlers.onNotReady()},onResponse:(e,t,n)=>{this.heartbeats.serverActive(),this.onResponse(e,t,n)},onPublish:(e,t)=>{this.heartbeats.serverActive(),this.handlers.onPublish(e,t),this.heartbeats.clientActive()},onAuthExpired:()=>{this.heartbeats.serverActive(),this.handlers.onAuthExpired()}})}sync(){return y(this,null,function*(){yield new Promise(e=>U(()=>e()));const e=Object.values(this.responseHandlers).map(e=>e.promise.catch(()=>{}));return Promise.all(e)})}call(e){const t=this.seqCounter.next(),n=N();this.responseHandlers[t]=n;const s=this.socket.call(t,e);return s.ok||(n.resolve(s),delete this.responseHandlers[t]),this.heartbeats.clientActive(),n.promise}onResponse(e,t,n){return y(this,null,function*(){const s=this.responseHandlers[e];s&&(200===t?s.ok({status:t,data:n}):s.serverErr({status:t,errorCode:n.errorCode,reasons:n.reasons}),delete this.responseHandlers[e])})}stopWs(){this.socket.stopWs()}startWs(){this.socket.startWs()}destroy(){this.heartbeats.stop(),Object.values(this.responseHandlers).forEach(e=>{e.clientErr("WEBSOCKET_DISCONNECTED")}),this.responseHandlers={},this.socket.destroy()}terminate(){this.socket.terminate()}}class B{constructor(e){this.connection=e,this.clientInactivityTimer=new $(25e3),this.serverInactivityTimer=new $(1e4),this.serverTimeoutTimer=new $(5e3)}clientActive(){this.clientInactivityTimer.schedule(()=>{this.sendHeartbeat()})}serverActive(){this.serverTimeoutTimer.stop(),this.serverInactivityTimer.schedule(()=>{this.sendHeartbeat(),this.serverTimeoutTimer.schedule(()=>{this.connection.terminate()})})}stop(){this.clientInactivityTimer.stop(),this.serverInactivityTimer.stop(),this.serverTimeoutTimer.stop()}sendHeartbeat(){this.connection.call({method:"GET",path:["ping"],data:{},headers:{}}).catch(()=>{})}}class L{constructor(e,t,n){this.authProvider=t,this.handlers=n,this.stateMachine=new S("AuthenticatedConnection",["WAITING_FOR_WS","LOGGING_IN","RENEWING_SESSION","READY","TERMINATED"],{logIn:{from:["WAITING_FOR_WS"],to:"LOGGING_IN",afterTransition:()=>y(this,null,function*(){yield this.renewSession()})},logInFailed:{from:["LOGGING_IN"],to:"LOGGING_IN",afterTransition:()=>y(this,null,function*(){this.authProvider.invalidateAndRefresh(),yield this.renewSession()})},scheduledReauth:{from:["READY"],to:"RENEWING_SESSION",afterTransition:()=>y(this,null,function*(){yield this.renewSession()})},scheduledReauthFailed:{from:["RENEWING_SESSION"],to:"RENEWING_SESSION",afterTransition:()=>y(this,null,function*(){this.authProvider.invalidateAndRefresh(),yield this.renewSession()})},authenticated:{from:["LOGGING_IN","RENEWING_SESSION"],to:"READY",afterTransition:({from:e})=>{"LOGGING_IN"===e&&this.handlers.onReady()}},authExpired:{from:["READY","RENEWING_SESSION"],to:"LOGGING_IN",afterTransition:()=>y(this,null,function*(){this.handlers.onNotReady(),this.authProvider.invalidateAndRefresh(),yield this.renewSession()})},wsDisconnected:{from:["READY","LOGGING_IN","RENEWING_SESSION"],to:"WAITING_FOR_WS",afterTransition:({from:e})=>{"READY"!==e&&"RENEWING_SESSION"!==e||this.handlers.onNotReady(),this.authProvider.clearScheduledRefresh()}},destroy:{from:"ANY",to:"TERMINATED",afterTransition:()=>{this.authProvider.clearScheduledRefresh(),this.connection.destroy()}}}),this.connection=new q(e,{onUpstreamRestarting:()=>this.handlers.onUpstreamRestarting(),onReady:()=>this.stateMachine.transition("logIn"),onNotReady:()=>{this.stateMachine.transition("wsDisconnected")},onAuthExpired:()=>{this.stateMachine.transition("authExpired")},onPublish:(e,t)=>{this.handlers.onPublish(e,t)}}),t.onTokenChanged(()=>{"READY"===this.stateMachine.state&&this.stateMachine.transition("scheduledReauth")})}sync(){return y(this,null,function*(){return this.connection.sync()})}call(e){const t=this.connection.call(e);return t.then(e=>{e.ok||"server"!==e.where||401!==e.value.status||"READY"!==this.stateMachine.state&&"RENEWING_SESSION"!==this.stateMachine.state||this.stateMachine.transition("authExpired")}),t}stopWs(){this.connection.stopWs()}startWs(){this.connection.startWs(),this.authProvider.getToken().catch(()=>{})}destroy(){this.stateMachine.transition("destroy")}renewSession(){return y(this,null,function*(){const e=yield this.authProvider.getToken().catch(()=>{});if(!e)return;const t=yield this.connection.call({method:"POST",path:["session","renew"],data:{token:e},headers:{}});if(!t.ok&&"client"===t.where)return;const n=t.value;if(n.status,200===n.status){const t=n.data.expiresInSeconds;return void(null!==t&&t<120?(console.warn(`[TalkJS] Authenticated with a token that expires in ${t}s. Treating it as already expired and refreshing. Newly generated tokens should last at least 10 minutes.`),"LOGGING_IN"===this.stateMachine.state?this.stateMachine.transition("logInFailed"):"RENEWING_SESSION"===this.stateMachine.state&&this.stateMachine.transition("scheduledReauthFailed")):(this.authProvider.scheduleRefresh(t),this.authProvider.emitTokenAccepted(e),this.stateMachine.canTransition("authenticated")&&this.stateMachine.transition("authenticated")))}if(401===n.status)return void("LOGGING_IN"===this.stateMachine.state?this.stateMachine.transition("logInFailed"):"RENEWING_SESSION"===this.stateMachine.state&&this.stateMachine.transition("scheduledReauthFailed"));if(400===n.status)return void this.authProvider.emitTokenRefreshFailed(D("Authentication",n));if(402===n.status)return void this.authProvider.emitTokenRefreshFailed(D("Authentication",n));const s=5e3*Math.random()+5e3;setTimeout(()=>{this.call({method:"POST",path:["session","renew"],data:{token:e},headers:{}}).catch(()=>{})},s)})}}class G{constructor(e,t,n){this.handlers=n,this.stateMachine=new S("StopStartConnection",["STOPPED","WAITING_FOR_WS","READY","TERMINATED"],{unexpectedDisconnect:{from:["READY"],to:"WAITING_FOR_WS",afterTransition:()=>{this.inactivityTimer.stop(),this.handlers.onNotReady()}},stop:{from:["WAITING_FOR_WS","READY"],to:"STOPPED",afterTransition:()=>{this.connection.stopWs(),this.inactivityTimer.stop(),this.handlers.onNotReady()}},start:{from:["STOPPED"],to:"WAITING_FOR_WS",afterTransition:()=>{this.connection.startWs()}},ready:{from:["WAITING_FOR_WS"],to:"READY",afterTransition:()=>{this.pendingCalls=0,this.activeSubscriptions=0,this.inactivityTimer.schedule(()=>{this.stateMachine.transition("stop")}),this.handlers.onReady()}},destroy:{from:"ANY",to:"TERMINATED",afterTransition:()=>{this.inactivityTimer.stop(),this.connection.destroy()}}}),this.pendingCalls=0,this.activeSubscriptions=0,this.inactivityTimer=new $(3e3),this.connection=new L(e,t,{onUpstreamRestarting:()=>{this.handlers.onUpstreamRestarting()},onReady:()=>{this.stateMachine.transition("ready")},onNotReady:()=>{"READY"===this.stateMachine.state&&this.stateMachine.transition("unexpectedDisconnect")},onPublish:(e,t)=>{this.handlers.onPublish(e,t)}})}get inactive(){return 0===this.pendingCalls&&0===this.activeSubscriptions}sync(){return y(this,null,function*(){return this.connection.sync()})}ensureStarted(){this.stateMachine.canTransition("start")&&this.stateMachine.transition("start")}call(e){return y(this,null,function*(){this.inactivityTimer.stop(),this.pendingCalls++,this.logTrace("Called",e.path,e.data);const t=yield this.connection.call(e);return this.pendingCalls--,this.logTrace("Received",e.path,e.data),"SUBSCRIBE"===e.method&&t.ok?(this.activeSubscriptions++,this.logTrace("Subscribed",e.path,e.data)):"UNSUBSCRIBE"===e.method&&t.ok&&(this.activeSubscriptions--,this.logTrace("Unsubscribed",e.path,e.data)),this.inactive&&this.inactivityTimer.schedule(()=>{this.stateMachine.transition("stop")}),t})}destroy(){this.stateMachine.transition("destroy")}isConnected(){return"READY"===this.stateMachine.state}logTrace(e,t,n){}}class F{constructor(e,t,n){this.handlers=n,this.stateMachine=new S("QueuedConnection",["NOT_READY","PROCESSING_QUEUE","READY","TERMINATED"],{processQueue:{from:["NOT_READY"],to:"PROCESSING_QUEUE",afterTransition:()=>{this.sendQueuedCalls()}},ready:{from:["PROCESSING_QUEUE"],to:"READY",afterTransition:()=>{this.handlers.onReady()}},notReady:{from:["PROCESSING_QUEUE","READY"],to:"NOT_READY",afterTransition:()=>{Object.values(this.subscribeQueue).forEach(e=>e.deferred.ok({status:200,data:{}})),this.subscribeQueue={},this.handlers.onSubscriptionsLost()}},destroy:{from:"ANY",to:"TERMINATED",afterTransition:()=>{for(var e;this.callQueue.length;){const t=null==(e=this.callQueue.shift())?void 0:e.deferred;null==t||t.clientErr("SESSION_DESTROYED")}this.connection.destroy()}}}),this.subscribeQueue={},this.callQueue=[],this.connection=new G(e,t,{onUpstreamRestarting:()=>{this.handlers.onUpstreamRestarting()},onReady:()=>{this.stateMachine.transition("processQueue")},onNotReady:()=>{this.stateMachine.transition("notReady")},onPublish:(e,t)=>{this.handlers.onPublish(e,t)}})}sync(){return y(this,null,function*(){return this.connection.sync()})}call(e){return"READY"===this.stateMachine.state?this.connection.call(e):("NOT_READY"===this.stateMachine.state&&this.connection.ensureStarted(),"SUBSCRIBE"===e.method||"UNSUBSCRIBE"===e.method?this._subscribe(e):this._call(e))}_subscribe(e){const t=e.path.join("/"),n=this.subscribeQueue[t];if(n&&n.params.method===e.method)return n.deferred.promise;n&&n.params.method!==e.method&&(n.deferred.ok({status:200,data:{}}),delete this.subscribeQueue[t]);const s={deferred:N(),params:e};return this.subscribeQueue[t]=s,s.deferred.promise}_call(e){const t={deferred:N(),params:e};return this.callQueue.push(t),t.deferred.promise}dequeue(){for(const e in this.subscribeQueue){const t=this.subscribeQueue[e];return delete this.subscribeQueue[e],t}return this.callQueue.shift()}destroy(){this.stateMachine.transition("destroy")}sendQueuedCalls(){return y(this,null,function*(){let e=0;for(;"PROCESSING_QUEUE"===this.stateMachine.state;){e++;const t=this.dequeue();if(!t)return void this.stateMachine.transition("ready");this.connection.call(t.params).then(e=>{t.deferred.resolve(e)}),e>50&&(yield new Promise(e=>setTimeout(e,100)))}})}isConnected(){return"READY"===this.stateMachine.state||"PROCESSING_QUEUE"===this.stateMachine.state}}function H(e){return Object.freeze(e)}function J(e){return H(e.map(e=>function(e){switch(e.type){case"text":return Object.freeze({type:"text",children:z(e.children)});case"file":case"location":return Object.freeze(e)}}(e)))}function z(e){return H(e.map(e=>function(e){if("string"==typeof e)return e;switch(e.type){case"bold":case"italic":case"strikethrough":case"bulletList":case"bulletPoint":case"link":case"actionLink":case"actionButton":return Object.freeze(p(d({},e),{children:z(e.children)}));case"mention":case"autoLink":case"codeSpan":case"customEmoji":return Object.freeze(e)}}(e)))}function Y(e,t){return void 0===t?e:t}function Q(e,t){return void 0===t?e:H(t)}function V(e,t){if(void 0===t)return e;if(null===t)return H({});const n=d({},e);for(const s in t){const e=t[s];null===e?delete n[s]:n[s]=e}return H(n)}function K(e,t){if(e===t)return!0;if(!e||!t)return!1;if("object"!=typeof e||"object"!=typeof t)return!1;if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!K(e[n],t[n]))return!1}else{const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(const s of n){if(!Object.hasOwnProperty.call(t,s))return!1;if(!K(e[s],t[s]))return!1}}return!0}const Z="undefined"!=typeof window&&null!=(t=window.queueMicrotask)?t:setTimeout;class X{constructor(e,t,n){this.headers=e,this.clearPendingBatch=t,this.sendCalls=n,this.sent=!1,Z(()=>this.send())}send(){this.sent||(this.sent=!0,this.clearPendingBatch(),this.sendCalls())}destroy(){this.sent=!0}}class ee extends X{constructor(e,t,n){super(t,n,()=>{this.sendSubscribe(),this.sendGet()}),this.connection=e,this.getCalls=[],this.subscribeCalls=[]}canPush(e){return ee.isCorrectBatchTypeFor(e)&&K(this.headers,e.headers)}static isCorrectBatchTypeFor(e){const t=w(e.path,["users","*"]),n="GET"===e.method||"SUBSCRIBE"===e.method;return t&&n}push(e){const t=e.path[1],n=N();return"GET"===e.method?this.getCalls.push({userId:t,deferred:n}):this.subscribeCalls.push({userId:t,deferred:n}),1e3!==this.getCalls.length&&1e3!==this.subscribeCalls.length||this.send(),n.promise}sendGet(){return y(this,null,function*(){if(0===this.getCalls.length)return;const e=[...new Set(this.getCalls.map(e=>e.userId))],t=yield this.connection.call({method:"GET",path:["users"],data:{ids:e,includePrivateFields:!1},headers:this.headers});if(t.ok)for(const n of this.getCalls){const e=t.value.data[n.userId];e?n.deferred.ok({status:200,data:e}):n.deferred.serverErr({status:404,errorCode:"NOT_FOUND",reasons:["No user with that ID exists"]})}else this.getCalls.forEach(e=>e.deferred.resolve(t))})}sendSubscribe(){if(0===this.subscribeCalls.length)return;const e=[...new Set(this.subscribeCalls.map(e=>e.userId))];this.connection.call({method:"SUBSCRIBE",path:["users"],data:{ids:e},headers:this.headers}).then(e=>this.subscribeCalls.forEach(t=>t.deferred.resolve(e)))}}class te extends X{constructor(e,t,n,s){super(n,s,()=>this.sendMutate()),this.conversationId=e,this.connection=t,this.calls=[]}canPush(e){return!(!te.isCorrectBatchTypeFor(e)||e.path[1]!==this.conversationId||!K(this.headers,e.headers))}static isCorrectBatchTypeFor(e){return!(!w(e.path,["conversations","*","participants","*"])||"PUT"!==e.method&&"POST"!==e.method&&"PATCH"!==e.method)}push(e){const t=e.path[3],n=N();return this.calls.push({action:{id:t,method:e.method,params:e.data},deferred:n}),100===this.calls.length&&this.send(),n.promise}sendMutate(){return y(this,null,function*(){const e=this.calls.map(e=>e.action),t=yield this.connection.call({method:"POST",path:["conversations",this.conversationId,"participants"],data:{actions:e},headers:this.headers});if(!t.ok)return void this.calls.forEach(e=>e.deferred.resolve(t));const n=t.value.data.responses;for(let s=0;s<n.length;s++){const e=this.calls[s].deferred,t=n[s];200===t.status?e.ok(p(d({},t),{data:{}})):e.serverErr(t)}})}}class ne{constructor(e,t,n){this.pendingBatch=null,this.connection=new F(e,t,n)}sync(){return y(this,null,function*(){return this.connection.sync()})}call(e){return y(this,null,function*(){var t;if(null==(t=this.pendingBatch)?void 0:t.canPush(e))return this.pendingBatch.push(e);this.pendingBatch&&this.pendingBatch.send();const n=this.createEmptyBatchFor(e);return n?(this.pendingBatch=n,n.push(e)):this.connection.call(e)})}destroy(){var e;this.connection.destroy(),null==(e=this.pendingBatch)||e.destroy()}isConnected(){return this.connection.isConnected()}createEmptyBatchFor(e){var t,n;if(ee.isCorrectBatchTypeFor(e))return new ee(this.connection,null!=(t=e.headers)?t:{},()=>this.pendingBatch=null);if(te.isCorrectBatchTypeFor(e)){const t=e.path[1];return new te(t,this.connection,null!=(n=e.headers)?n:{},()=>this.pendingBatch=null)}return null}}const se={200:"RESOLVE",400:"RESOLVE",401:"RETRY",402:"RESOLVE",403:"RESOLVE",404:"RESOLVE",405:"RESOLVE",409:"RESOLVE",429:"DELAY",500:"DELAY"};class re{constructor(e,t,n){this.throttler=new ie,this.alive=!0,this.connection=new ne(e,t,n)}sync(){return y(this,null,function*(){return this.connection.sync()})}call(e){return y(this,null,function*(){let t=0;for(;this.alive;){const n=yield this.connection.call(e);if((n.ok||"client"!==n.where||"SOCKET_NOT_READY"!==n.value)&&(n.ok||"server"!==n.where||500!==n.value.status)||t++,10===t)return n;if(n.ok||"client"!==n.where){const e=n.value,t=e.status,s=se[t];if("RESOLVE"===s)return this.throttler.resetDelay(),n;if("RETRY"===s)continue;if("DELAY"===s){yield this.throttler.wait();continue}return console.warn("[TalkJS] Unexpected status code",t),e}if("SESSION_DESTROYED"===n.value)return M("SESSION_DESTROYED");"WEBSOCKET_DISCONNECTED"!==n.value&&("SOCKET_NOT_READY"!==n.value?n.value:yield this.throttler.wait())}return M("SESSION_DESTROYED")})}destroy(){this.alive=!1,this.connection.destroy()}isConnected(){return this.connection.isConnected()}}class ie{constructor(){this.initialDelayMs=200,this.exponentialFactor=1.2,this.maxDelayMs=3e4,this.currentDelayMs=this.initialDelayMs,this.lastCall=0}getCurrentDelay(){return this.currentDelayMs}wait(){const e=(new Date).getTime(),t=C(this.currentDelayMs,.05),n=this.lastCall+t,s=Math.max(0,n-e);return this.lastCall=e+s,this.currentDelayMs=Math.min(t*this.exponentialFactor,this.maxDelayMs),k(s)}resetDelay(){this.currentDelayMs=this.initialDelayMs}}function ae(e){return e.map(e=>encodeURIComponent(e)).join()}class oe{constructor(){this.paths={}}add(e){this.paths[ae(e)]=e}delete(e){delete this.paths[ae(e)]}has(e){return Object.hasOwnProperty.call(this.paths,ae(e))}clear(){this.paths={}}forEach(e){Object.values(this.paths).forEach(t=>e(t))}}class le{constructor(e,t,n){this.handlers=n,this.targetSubscriptions=new oe,this.connection=new re(e,t,{onUpstreamRestarting:()=>this.handlers.onUpstreamRestarting(),onSubscriptionsLost:()=>{this.targetSubscriptions.forEach(e=>{this.resubscribe(e)}),this.handlers.onResubscribeSent()},onReady:()=>this.handlers.onReady(),onPublish:(e,t)=>{this.handlers.onPublish(e,t)}})}sync(){return y(this,null,function*(){return this.connection.sync()})}call(e){return this.connection.call(e)}subscribe(e){return y(this,null,function*(){return this.targetSubscriptions.add(e),this.connection.call({method:"SUBSCRIBE",path:e,data:{},headers:{}})})}unsubscribe(e){return y(this,null,function*(){return this.targetSubscriptions.delete(e),this.connection.call({method:"UNSUBSCRIBE",path:e,data:{},headers:{}})})}resubscribe(e){return y(this,null,function*(){const t=yield this.connection.call({method:"SUBSCRIBE",path:e,data:{},headers:{}});t.ok||this.handlers.onResubscribeError(e,t)})}destroy(){this.targetSubscriptions.clear(),this.connection.destroy()}isConnected(){return this.connection.isConnected()}}class ce{constructor(){this.prev=Promise.resolve()}runExclusive(e){return y(this,null,function*(){const t=this.prev.then(()=>e());return this.prev=t,t})}sync(){return y(this,null,function*(){return this.runExclusive(()=>{})})}}class ue{constructor(e){this.initialised=!1,this.getPointer=void 0,this.pendingStates=[e],e.resultPromise.then(()=>this.initialised=!0)}get pendingPointer(){if(0!==this.pendingStates.length)return this.pendingStates[this.pendingStates.length-1]}get mostRecentState(){var e;return null!=(e=this.pendingPointer)?e:this.getPointer}canAppendState(e){var t,n;const s=null==(t=this.getPointer)?void 0:t.seq;if(void 0!==s&&e<=s)return!1;const r=null==(n=this.pendingPointer)?void 0:n.seq;return!(void 0!==r&&e<r)}set(e){if(!this.canAppendState(e.seq))throw"Appending in the past";this.pendingStates.push(e)}mutate(e,t){if(!this.initialised)return;if(!this.canAppendState(e))throw"Mutating in the past";const n=this.mostRecentState.resultPromise.then(e=>e.ok?t(e):e);this.pendingStates.push({seq:e,resultPromise:n})}get(e){for(;this.pendingStates.length>0&&(void 0===this.getPointer||this.pendingStates[0].seq<=e);)this.getPointer=this.pendingStates.shift();return this.getPointer}}class he extends ue{constructor(e,t){super(e),this.onTeardown=t,this._error=null,this._lastGoodState=Promise.resolve(void 0),this.registerNewState(e.resultPromise)}get error(){return this._error}get lastGoodState(){return this._lastGoodState}mutate(e,t){super.mutate(e,t),this.registerNewState(this.mostRecentState.resultPromise)}set(e){super.set(e),this.registerNewState(this.mostRecentState.resultPromise)}registerNewState(e){const t=this.lastGoodState;this._lastGoodState=e.then(e=>e.ok?e.value:t),e.then(e=>{e.ok||this.setError(e)})}setError(e){var t;this._error||(this._error=e,null==(t=this.onTeardown)||t.call(this,e),this.lastGoodState.then(e=>{void 0!==e&&this.teardownNested(e)}))}}class de extends he{constructor(e,t){const n=new Promise(e=>setTimeout(e)).then(()=>this.fetchInitial(e));super({seq:e,resultPromise:n},t.onTeardown),this.initialSeq=e,this.getDeepMutex=new ce,this.lastDeep=void 0}refetchInitial(e){return y(this,null,function*(){const t=this.mostRecentState.resultPromise,n=this.fetchInitial(e),[s,r]=yield Promise.all([t,n]);return void 0!==s&&s.ok&&r.ok&&this.equal(s.value,r.value)?s:r})}refetch(e){if(null!==this.error)return;const t={seq:e,resultPromise:this.refetchInitial(e)};this.set(t)}changedBetween(e,t){return y(this,null,function*(){if(e>=t)return!1;const n=this.get(t),s=yield n.resultPromise;return!!s.ok&&(s.value.lastChanged>Math.max(this.initialSeq,e)&&s.value.lastChanged<=t||(yield this.anyChildChanged(e,t,s.value)))})}getDeep(e){return y(this,null,function*(){return this.getDeepMutex.runExclusive(()=>y(this,null,function*(){var t;if(null!==this.error)return this.error;const n=null==(t=this.lastDeep)?void 0:t.seq;if(e===n)return this.lastDeep.deep;if(void 0!==n){if(e<n)throw`Trying to load seq ${e} when we have previously loaded seq ${n}`;if(!(yield this.changedBetween(n,e)))return this.lastDeep.seq=e,this.lastDeep.deep}const s=this.get(e).resultPromise,r=s.then(t=>t.ok?this.loadNested(e,t.value):t);this.lastDeep={seq:e,shallow:s,deep:r};const i=yield r;return i.ok||this.setError(i),i}))})}}class pe extends de{constructor(e,t,n){super(e,n),this.emitMutex=t,this.externallyIdleTimer=new fe,this.externallyIdle=!0,this.internallyIdleTimer=new fe,this.internallyIdle=!0,this.referencedByOtherStores=0,this.listeners=[],this.lastEmitSeq=void 0,this.lastEmitResult=void 0,t.runExclusive(()=>y(this,null,function*(){yield this.emit(e)}))}registerInternalSubscription(){this.internallyIdleTimer.stop(),this.internallyIdle=!1,this.referencedByOtherStores++;let e=!0;return()=>{e&&(e=!1,this.referencedByOtherStores--,0===this.referencedByOtherStores&&this.internallyIdleTimer.restart(()=>{this.internallyIdle=!0,this.tryFullyUnsubscribe()},this.unsubscribeDebounceMs),this.tryFullyUnsubscribe())}}get onlyUsedInternally(){return 0===this.listeners.length}listen(e){this.externallyIdleTimer.stop(),this.externallyIdle=!1,this.listeners.push(e),void 0!==this.lastEmitResult&&e(this.lastEmitResult);let t=!0;return()=>{t&&(t=!1,this.listeners=this.listeners.filter(t=>t!==e),0===this.listeners.length&&this.externallyIdleTimer.restart(()=>{this.externallyIdle=!0,this.tryFullyUnsubscribe()},this.unsubscribeDebounceMs))}}tryFullyUnsubscribe(){this.externallyIdle&&this.internallyIdle&&this.setError(M("UNSUBSCRIBED"))}emit(e){return y(this,null,function*(){var t;if(this.lastEmitSeq&&this.lastEmitSeq>=e)return;if(!1===(null==(t=this.lastEmitResult)?void 0:t.ok))return;this.lastEmitSeq=e;const n=yield this.getDeep(e);n!==this.lastEmitResult&&(this.lastEmitResult=n,this.listeners.forEach(e=>e(n)))})}}class fe{constructor(){this.timerId=void 0}restart(e,t){void 0!==this.timerId&&clearTimeout(this.timerId),this.timerId=setTimeout(()=>e(),t)}stop(){clearTimeout(this.timerId)}}var me,ge={};function ve(e,t){const n=t.lastIndex;let s;const r=[];for(;null!==(s=t.exec(e));)r.push(s),""===s[0]&&(t.lastIndex+=1);return t.lastIndex=n,r}function be(e){const t=e.replace(/%2F/g,"/").replace(/^.*?\/([^/]+?)(?:\?.*)?$/,"$1");return decodeURIComponent(t)}function ye(e,t){e()||t||(t=e.toString().replace(/^function\s*\(\)\s*\{\s*return\s*(.*);\s*\}\s*$/,"`$1`")+" was not true")}!function(){if(me)return ge;function e(e){return String.fromCharCode(parseInt(e.slice(1),16))}function t(e){return`%${`00${e.charCodeAt(0).toString(16)}`.slice(-2)}`}me=1,Object.defineProperty(ge,"__esModule",{value:!0}),ge.encode=function(t){return btoa(encodeURIComponent(t).replace(/%[0-9A-F]{2}/g,e))},ge.decode=function(e){return decodeURIComponent(Array.from(atob(e),t).join(""))}}(),(e=>{function t(e,t){(function(e,t){switch(t){case"undefined":return void 0===e;case String:return"string"==typeof e||e instanceof String;case Boolean:return"boolean"==typeof e||e instanceof Boolean;case Number:return"number"==typeof e||e instanceof Number;default:return e instanceof t}})(e,t)||(t.name,String(e))}e.defined=function(e){},e.has=function(e,t){e[t]},e.is=t,e.equals=function(e,t){},e.oneOf=function(e,t){t.includes(e)||JSON.stringify(t)},e.isArray=function(e,n){t(e,Array),e&&e.length>0&&t(e[0],n)},e.optional=function(e,n){void 0!==e&&t(e,n)},e.falsy=function(e){},e.never=function(e){}})(ye||(ye={}));const we=ye,ke=/^\/.*[^\\]\/[im]*$/;function Ce(e){return!!ke.test(e)&&!Te(e).test("")}function Te(e){const t=e.match(/^\/(.*[^\\])\/(.*)$/);if(!t)throw new Error(`Expected ${e} to be a (non-empty) regex`);let n=t[2]||"";return n=n.replace(/[^im]/g,"")+"g",new RegExp(t[1],n)}class Ie{constructor({mode:e,allowedHostnames:t,allowedPhoneNrs:n,allowedMatches:s,forbiddenMatches:r,forbiddenWords:i,suppressLinks:a,suppressEmailAddresses:o,suppressPhoneNumbers:l,replacement:c}){if(we.oneOf(e,["all","otherOnly","off"]),this.mode=e,this.suppressLinks=!1!==a,this.suppressEmailAddresses=!1!==o,this.suppressPhoneNumbers=!1!==l,this.allowedHostnames=t||[],this.allowedPhoneNrs=(n||[]).filter(e=>e).map(e=>e.replace(/[^0-9]/g,"")),this.allowedMatches=(s||[]).filter(Ce).map(e=>Te(e)),this.forbiddenMatches=(r||[]).filter(Ce).map(e=>Te(e)),i){const e=i.split("\n").map(e=>e.trim().toLowerCase()).filter(e=>e.length>0&&!e.startsWith("#")).map(e=>e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"));e.length&&this.forbiddenMatches.push(new RegExp(`\\b(${e.join("|")})\\b`,"gi"))}we(()=>this.allowedMatches.every(e=>e.flags.includes("g")),"All regexes in `suppressContactInfo.allowedMatches` must be global. Check `allowedMatches`!"),we(()=>this.forbiddenMatches.every(e=>e.flags.includes("g")),"All regexes in `suppressContactInfo.forbiddenMatches` must be global. Check `forbiddenMatches`!"),c=null==c?void 0:c.trim(),this.replacement=c&&c.length>0?c:void 0}shouldSuppress({isContentBySender:e}){return"all"===this.mode||"otherOnly"===this.mode&&!e}}function xe(e,t){return e.map(e=>function(e,t){if("text"===e.type)return Se(e.children,function(e){var t,n,s,r,i,a,o,l,c,u,h,d,p;let f="";return e.t&&(f=`(${e.t("CONTACT_INFORMATION_HIDDEN")})`),{formattedLinks:null!=(t=e.formattedLinks)?t:"plaintext",markup:null!=(n=e.markup)&&n,useFallbackMentions:null!=(s=e.useFallbackMentions)&&s,sameTabLinkRules:null!=(r=e.sameTabLinkRules)?r:[],enableEmojiImageFallback:null!=(i=e.enableEmojiImageFallback)&&i,highlight:null!=(a=e.highlight)?a:[],contactInfo:null!=(o=e.contactInfo)&&o,suppression:null!=(l=e.suppression)?l:new Ie({mode:"off"}),contactInfoHiddenText:null!=(h=null!=(u=e.contactInfoHiddenText)?u:null==(c=e.suppression)?void 0:c.replacement)?h:f,customEmojiUrls:null!=(d=e.customEmojiUrls)?d:{},enableActions:null==(p=e.enableActions)||p}}(t));if("file"===e.type&&"video"===e.subtype)return`🎥 ${be(e.url)}`;if("file"===e.type&&"image"===e.subtype)return`📷 ${be(e.url)}`;if("file"===e.type&&"audio"===e.subtype)return`🎧 ${be(e.url)}`;if("file"===e.type&&"voice"===e.subtype){const t=e.duration;return void 0===t?"🎙️":`🎙️ (${Math.floor(t/60)}:${Math.floor(t%60).toString().padStart(2,"0")})`}return"file"===e.type?(e.subtype,`📎 ${be(e.url)}`):"location"===e.type?"📍":""}(e,t)).join("\n\n")}function Se(e,t){return e.flatMap(e=>{if("string"==typeof e)return e;switch(e.type){case"blockquote":case"bold":case"italic":case"strikethrough":case"link":case"actionlink":case"actionLink":case"actionbutton":case"actionButton":return Se(e.children,t);case"bulletlist":case"bulletList":return"\n"+Se(e.children,t);case"bulletpoint":case"bulletPoint":return"- "+Se(e.children,t)+"\n";case"autolink":case"autoLink":case"codeblock":case"codeBlock":case"codespan":case"codeSpan":case"emoji":case"customemoji":case"customEmoji":return e.text;case"suppressed":return t.contactInfoHiddenText;case"mention":return`@${e.text}`}}).join("")}function Ee(e){return H({id:e.id,name:e.name,custom:H(e.custom),locale:e.locale,photoUrl:e.photoUrl,role:e.role,welcomeMessage:e.welcomeMessage})}function Me(e,t){return H({user:t,access:e.access,notify:e.notify,joinedAt:e.joinedAt})}function Ae(e){const t=Object.entries(e).map(([e,t])=>H({emoji:e,count:t.count,currentUserReacted:t.currentUserReacted}));return t.sort((e,t)=>e.emoji.localeCompare(t.emoji)),H(t)}class Ne extends pe{constructor(e,t,n,s,r){super(e,s,r),this.userId=t,this.realtimeClient=n,this.unsubscribeDebounceMs=3e4}fetchInitial(e){return y(this,null,function*(){const t=yield this.realtimeClient.call({method:"GET",path:["users",this.userId],data:{includePrivateFields:!1},flags:{bypassCache:!0}});return t.ok?E({snapshot:Ee(t.value.data),lastChanged:e}):"server"===t.where&&404===t.value.status?E({snapshot:null,lastChanged:e}):t})}equal(e,t){return K(e.snapshot,t.snapshot)}loadNested(e,t){return y(this,null,function*(){return E(t)})}userCreated(e,t){this.mutate(e,n=>null!==n.value.snapshot?n:E({snapshot:Ee(t.state),lastChanged:e}))}userEdited(e,t){this.mutate(e,n=>{const s=n.value.snapshot;return null===s?(console.warn("[TalkJS] Received a 'used edited' event for a user that we thought didn't exist."),n):E({snapshot:{id:s.id,name:Y(s.name,t.diff.name),custom:V(s.custom,t.diff.custom),locale:Y(s.locale,t.diff.locale),photoUrl:Y(s.photoUrl,t.diff.photoUrl),role:Y(s.role,t.diff.role),welcomeMessage:Y(s.welcomeMessage,t.diff.welcomeMessage)},lastChanged:e})})}getFromCache(){return y(this,null,function*(){const e=yield this.mostRecentState.resultPromise;return e.ok?null===e.value.snapshot?A({status:404,errorCode:"USER_NOT_FOUND",reasons:["That user does not exist yet"]}):E({status:200,data:{id:e.value.snapshot.id,name:e.value.snapshot.name,custom:e.value.snapshot.custom,locale:e.value.snapshot.locale,photoUrl:e.value.snapshot.photoUrl,role:e.value.snapshot.role,welcomeMessage:e.value.snapshot.welcomeMessage}}):M("NOT_IN_CACHE")})}teardownNested(e){}anyChildChanged(e,t,n){return y(this,null,function*(){return!1})}}class Re extends de{constructor(e,t,n,s){super(e,{}),this.conversationId=t,this.message=n,this.realtimeClient=s}get messageId(){return"string"==typeof this.message?this.message:this.message.id}fetchInitial(e){return y(this,null,function*(){let t;if("object"==typeof this.message)t=this.message;else{const e=yield this.realtimeClient.call({method:"GET",path:["me","conversations",this.conversationId,"messages",this.message],data:{},flags:{bypassCache:!0}});if(!e.ok)return e;t=e.value.data}return E({lastChanged:e,sender:null===t.senderId?null:this.realtimeClient.internalSubscribe(["users",t.senderId]),data:{id:t.id,type:t.type,custom:H(t.custom),createdAt:t.createdAt,editedAt:t.editedAt,referencedMessageId:t.referencedMessageId,origin:t.origin,plaintext:xe(t.content,{}),content:J(t.content),reactions:Ae(t.reactions)}})})}refetch(e){throw"Do not call refetch on message data stores, it can return outdated data. Destroy and remake them instead"}equal(e,t){return K(e.data,t.data)}teardownNested(e){var t;null==(t=e.sender)||t.unsubscribe()}anyChildChanged(e,t,n){return y(this,null,function*(){var s;const r=null==(s=n.sender)?void 0:s.store;return!0===(yield null==r?void 0:r.changedBetween(e,t))})}loadNested(e,t){return y(this,null,function*(){var n,s,r;const i=yield null==(s=null==(n=t.sender)?void 0:n.store)?void 0:s.getDeep(e);if(!1===(null==i?void 0:i.ok))return i;if(null===t.data)return E({snapshot:null});const a=null==i?void 0:i.value;return E({snapshot:H({sender:null!=(r=null==a?void 0:a.snapshot)?r:null,id:t.data.id,type:t.data.type,custom:H(t.data.custom),createdAt:t.data.createdAt,editedAt:t.data.editedAt,origin:t.data.origin,plaintext:t.data.plaintext,content:t.data.content,referencedMessageId:t.data.referencedMessageId,reactions:t.data.reactions})})})}messageEdited(e,t){this.mutate(e,n=>{if(null===n.value.data)return n;const s=n.value.data.content,r=(i=s,void 0===(a=t.diff.content)?i:J(a));var i,a;const o=s===r?n.value.data.plaintext:xe(r,{});return E({lastChanged:e,sender:n.value.sender,data:{id:n.value.data.id,type:n.value.data.type,createdAt:n.value.data.createdAt,origin:n.value.data.origin,referencedMessageId:n.value.data.referencedMessageId,editedAt:Y(n.value.data.editedAt,t.diff.editedAt),custom:V(n.value.data.custom,t.diff.custom),plaintext:o,content:r,reactions:_e(n.value.data.reactions,t.diff.reactions)}})})}messageDeleted(e,t){this.mutate(e,n=>null===n.value.data?n:this.messageId===t.messageId?(this.teardownNested(n.value),E({lastChanged:e,sender:null,data:null})):n.value.data.referencedMessageId===t.messageId?E({lastChanged:e,sender:n.value.sender,data:{id:n.value.data.id,type:n.value.data.type,createdAt:n.value.data.createdAt,origin:n.value.data.origin,referencedMessageId:null,editedAt:n.value.data.editedAt,custom:n.value.data.custom,plaintext:n.value.data.plaintext,content:n.value.data.content,reactions:n.value.data.reactions}}):n)}getFromCache(){return y(this,null,function*(){var e;const t=yield this.mostRecentState.resultPromise;if(!t.ok)return M("NOT_IN_CACHE");if(null===t.value.data)return A({status:404,errorCode:"MESSAGE_NOT_FOUND",reasons:["No message with that ID exists"]});const n=t.value,{sender:s}=n,r=f(n,["sender"]),i={};return r.data.reactions.forEach(e=>{i[e.emoji]={count:e.count,currentUserReacted:e.currentUserReacted}}),E({status:200,data:p(d({},r.data),{senderId:null!=(e=null==s?void 0:s.store.userId)?e:null,reactions:i})})})}}function _e(e,t){if(void 0===t)return e;const n=e.map(e=>{const n=t[e.emoji];return void 0===n?e:H(null===n?p(d({},e),{count:0}):{emoji:e.emoji,count:Y(e.count,n.count),currentUserReacted:Y(e.currentUserReacted,n.currentUserReacted)})}).filter(e=>e.count>0),s=new Set(n.map(e=>e.emoji));for(const r in t){const e=t[r];e&&!s.has(r)&&n.push(H({emoji:r,count:e.count,currentUserReacted:e.currentUserReacted}))}return n.sort((e,t)=>e.emoji.localeCompare(t.emoji)),H(n)}class De extends de{constructor(e,t,n,s){super(e,{}),this.createdAt=t,this.dataStore=n,this.referencedDataStore=s}get messageId(){return this.dataStore.messageId}fetchInitial(e){return y(this,null,function*(){return E({lastChanged:e,dataStore:this.dataStore,referencedDataStore:this.referencedDataStore})})}refetch(e){throw"Do not call refetch on message stores, it can return outdated data. Destroy and remake them instead"}equal(e,t){return!0}teardownNested(e){}anyChildChanged(e,t,n){return y(this,arguments,function*(e,t,{dataStore:n,referencedDataStore:s}){return!0===(yield n.changedBetween(e,t))||!0===(yield null==s?void 0:s.changedBetween(e,t))})}loadNested(e,t){return y(this,null,function*(){var n,s,r;const i=yield t.dataStore.getDeep(e);if(!i.ok)return i;const a=i.value;if(null===a.snapshot)return E({snapshot:null});const o=yield null==(n=t.referencedDataStore)?void 0:n.getDeep(e);if(o&&!o.ok)return o;const l=null!=(s=null==o?void 0:o.value)?s:null,c=null!=(r=null==l?void 0:l.snapshot)?r:null;return E({snapshot:H({id:a.snapshot.id,type:a.snapshot.type,sender:a.snapshot.sender,custom:H(a.snapshot.custom),createdAt:a.snapshot.createdAt,editedAt:a.snapshot.editedAt,referencedMessage:c,origin:a.snapshot.origin,plaintext:a.snapshot.plaintext,content:a.snapshot.content,reactions:a.snapshot.reactions})})})}}class Oe extends pe{constructor(e,t,n,s,r){super(e,s,r),this.conversationId=t,this.realtimeClient=n,this.handlers=r,this.unsubscribeDebounceMs=1e4,this.pendingLoadMore=void 0}listen(e){return this.onlyUsedInternally&&this.mostRecentState.resultPromise.then(e=>{if(e.ok&&null!==e.value.inWindow){const t=30-e.value.inWindow.length;t>0&&this._loadMoreMessages(t)}}),super.listen(e)}fetchInitial(e){return y(this,null,function*(){const t=this.onlyUsedInternally?1:30,n=yield Pe({realtimeClient:this.realtimeClient,conversationId:this.conversationId,count:t});return n.ok?null===n.value.messages?E({lastChanged:e,lastMessageChanged:e,stores:null,inWindow:null,windowEnd:null}):je({seq:e,messages:n.value.messages,cursor:n.value.nextCursor,conversationId:this.conversationId,realtimeClient:this.realtimeClient}):n})}teardownNested(e){if(e.stores){const t=M("TERMINATED");Object.values(e.stores).forEach(e=>e.setError(t)),e.inWindow.forEach(e=>e.setError(t))}}anyChildChanged(e,t,n){return y(this,null,function*(){for(const s in n.stores){const r=n.stores[s];if(!0===(yield null==r?void 0:r.changedBetween(e,t)))return!0}return!1})}lastMessageChangedBetween(e,t){return y(this,null,function*(){if(e>=t)return!1;const n=yield this.get(t).resultPromise;if(!n.ok)return!1;if(n.value.lastMessageChanged>e)return!0;if(null===n.value.stores)return!1;const s=n.value.inWindow[0];return void 0!==s&&!0===(yield s.changedBetween(e,t))})}equal(e,t){return null===e.stores&&null===t.stores||null!==e.stores&&null!==t.stores&&!!K(Object.keys(e.stores),Object.keys(t.stores))&&!!K(e.inWindow.map(e=>e.messageId),t.inWindow.map(e=>e.messageId))&&K(e.windowEnd,t.windowEnd)}loadNested(e,t){return y(this,null,function*(){if(null===t.stores)return E({snapshot:null,loadedAll:!0});const n=yield Promise.all(t.inWindow.map(t=>t.getDeep(e))),s=n.find(e=>!e.ok);return s||E({snapshot:H(n.filter(e=>null!==e.value.snapshot).map(e=>e.value.snapshot)),loadedAll:null===t.windowEnd})})}loadMore(e){return y(this,null,function*(){if(this.pendingLoadMore)return this.pendingLoadMore;const t=x();this.pendingLoadMore=t.promise,yield this._loadMoreMessages(e),t.resolve(),this.pendingLoadMore=void 0})}_loadMoreMessages(e=30){return y(this,null,function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return;if(null===t.value.windowEnd)return;const n=t.value.windowEnd.cursor,s=yield Pe({count:e,cursor:n,conversationId:this.conversationId,realtimeClient:this.realtimeClient});yield this.handlers.onLoadedMore({type:"virtual.messages.loadedmore",conversationId:this.conversationId,data:s})})}loadedMore(e,t){this.mutate(e,n=>null===n.value.windowEnd?n:t.data.ok?null===t.data.value.messages?(console.warn("[TalkJS] When loading more messages, the conversation no longer existed. We should have been told about this."),n):je({seq:e,prevState:n.value,messages:t.data.value.messages,cursor:t.data.value.nextCursor,conversationId:this.conversationId,realtimeClient:this.realtimeClient}):t.data)}messageCreated(e,t){this.mutate(e,n=>{if(null===n.value.stores)return console.warn("[TalkJS] Received a 'message.created' event for a nonexistent conversation."),n;if(n.value.windowEnd&&t.state.createdAt<n.value.windowEnd.oldestMessageTs)return n;if(Object.hasOwnProperty.call(n.value.stores,t.state.id))return n;const s=d({},n.value.stores),r=new Re(e,this.conversationId,t.state,this.realtimeClient);s[t.state.id]=r;const i=t.state.referencedMessageId;let a;null===i?a=null:i in s?a=s[i]:(a=new Re(e,this.conversationId,i,this.realtimeClient),s[i]=a);const o=new De(e,t.state.createdAt,r,a),l=[...n.value.inWindow,o];l.sort((e,t)=>t.createdAt-e.createdAt);const c=l[0].messageId===t.messageId?e:n.value.lastMessageChanged;return E({lastChanged:e,lastMessageChanged:c,stores:s,inWindow:l,windowEnd:n.value.windowEnd})})}messageEdited(e,t){this.mutate(e,n=>{var s;return null===n.value.stores?(console.warn("[TalkJS] Received a 'message.edited' event for a nonexistent conversation."),n):(null==(s=n.value.stores[t.messageId])||s.messageEdited(e,t),n)})}messageDeleted(e,t){this.mutate(e,n=>{if(null===n.value.stores)return console.warn("[TalkJS] Received a 'message.deleted' event for a conversation that we thought didn't exist."),n;if(Object.values(n.value.stores).forEach(n=>n.messageDeleted(e,t)),void 0===n.value.stores[t.messageId])return n;const s=d({},n.value.stores);delete s[t.messageId];const r=n.value.inWindow.filter(e=>e.messageId!==t.messageId);if(t.newLastMessage&&0===r.length){const n=new Re(e,this.conversationId,t.newLastMessage,this.realtimeClient);s[n.messageId]=n;const i=t.newLastMessage.referencedMessageId;let a;null===i?a=null:i in s?a=s[i]:(a=new Re(e,this.conversationId,i,this.realtimeClient),s[i]=a);const o=new De(e,t.newLastMessage.createdAt,n,a);r.push(o)}const i=void 0!==t.newLastMessage?e:n.value.lastMessageChanged;return E({lastChanged:e,lastMessageChanged:i,stores:s,inWindow:r,windowEnd:n.value.windowEnd})})}conversationCleared(e,t){this.mutate(e,t=>{var n;return 0===(null==(n=t.value.inWindow)?void 0:n.length)&&null===t.value.windowEnd?t:(this.teardownNested(t.value),E({lastChanged:e,lastMessageChanged:e,stores:{},inWindow:[],windowEnd:null}))})}sideCreated(e,t){const n=this.fetchInitial(e);this.mutate(e,e=>null!==e.value.stores?(n.then(e=>{e.ok&&this.teardownNested(e.value)}),e):n)}sideDeleted(e,t){this.mutate(e,t=>null===t.value.stores?t:(this.teardownNested(t.value),E({lastChanged:e,lastMessageChanged:e,stores:null,inWindow:null,windowEnd:null})))}getMessageFromCache(e){return y(this,null,function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return M("NOT_IN_CACHE");if(null===t.value.stores)return M("NOT_IN_CACHE");const n=t.value.stores[e];return void 0===n?M("NOT_IN_CACHE"):n.getFromCache()})}}function Pe(e){return y(this,arguments,function*({cursor:e,realtimeClient:t,conversationId:n,count:s}){const r={limit:s,cursor:e},i=yield t.call({method:"GET",path:["me","conversations",n,"messages"],data:r,flags:{bypassCache:!0}});if(i.ok){const{data:e,cursor:t}=i.value.data;return E({messages:e,nextCursor:t})}return!i.ok&&"server"===i.where&&404===i.value.status||!i.ok&&"server"===i.where&&403===i.value.status&&"NOT_A_PARTICIPANT"===i.value.errorCode?E({messages:null,nextCursor:null}):i})}function je({seq:e,prevState:t,messages:n,cursor:s,conversationId:r,realtimeClient:i}){var a,o,l,c;const u=t?d({},t.stores):{};for(const d of n)if(void 0===u[d.id]){const t=new Re(e,r,d,i);u[t.messageId]=t}for(const d of n){const t=d.referencedMessageId;if(t&&void 0===u[t]){const n=new Re(e,r,t,i);u[n.messageId]=n}}const h=t?[...t.inWindow]:[];for(const d of n)h.push(new De(e,d.createdAt,u[d.id],d.referencedMessageId?u[d.referencedMessageId]:null));h.sort((e,t)=>t.createdAt-e.createdAt);const p=(null==(o=null==(a=null==t?void 0:t.inWindow)?void 0:a[0])?void 0:o.messageId)===(null==(l=null==h?void 0:h[0])?void 0:l.messageId)&&null!=(c=null==t?void 0:t.lastMessageChanged)?c:e;return E(null===s?{lastChanged:e,lastMessageChanged:p,stores:u,inWindow:h,windowEnd:null}:{lastChanged:e,lastMessageChanged:p,stores:u,inWindow:h,windowEnd:{cursor:s,oldestMessageTs:n[n.length-1].createdAt}})}class $e extends pe{constructor(e,t,n,s,r){super(e,s,r),this.convData=t,this.realtimeClient=n,this.unsubscribeDebounceMs=3e4}fetchInitial(e){return y(this,null,function*(){return E({lastChanged:e,convData:this.convData})})}teardownNested(e){e.convData.unsubscribe()}anyChildChanged(e,t,n){return y(this,null,function*(){return n.convData.store.changedBetween(e,t)})}equal(e,t){return!0}loadNested(e,t){return y(this,null,function*(){return t.convData.store.getDeep(e)})}getFromCache(){return y(this,null,function*(){return this.convData.store.getFromCache()})}}function Ue(e,t){for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t(e[n],n)}function We(e,t){return function(e){let n={};return Ue(e,(e,s)=>{const[r,i]=(([e,n])=>[e,t(n,e)])([s,e],0);n[r]=i}),n}(e)}class qe extends pe{constructor(e,t,n,s,r){super(e,s,r),this.conversationId=t,this.realtimeClient=n,this.unsubscribeDebounceMs=1e4}fetchInitial(e){return y(this,null,function*(){const t=yield this.realtimeClient.call({method:"GET",path:["me","conversations",this.conversationId,"typing"],data:{},flags:{bypassCache:!0}});if(!t.ok&&"server"===t.where&&404===t.value.status)return E({data:null,lastChanged:e});if(!t.ok&&"server"===t.where&&403===t.value.status&&"NOT_A_PARTICIPANT"===t.value.errorCode)return E({data:null,lastChanged:e});if(!t.ok)return t;const n=t.value.data;return n.many?E({data:{usersTyping:null,many:!0},userSubscriptions:{},lastChanged:e}):E({data:n,userSubscriptions:We(n.usersTyping,(e,t)=>this.realtimeClient.internalSubscribe(["users",t])),lastChanged:e})})}equal(e,t){return K(e.data,t.data)}loadNested(e,t){return y(this,null,function*(){if(null===t.data)return E({snapshot:null,lastChanged:t.lastChanged});if(t.data.many)return E({snapshot:H({many:!0}),lastChanged:t.lastChanged});const n=Object.entries(t.data.usersTyping).sort(([e,t],[n,s])=>t-s).map(([e,t])=>e).map(n=>t.userSubscriptions[n].store.getDeep(e)),s=yield Promise.all(n),r=s.find(e=>!e.ok);if(r)return r;const i=s.map(e=>e.value),a=i.map(e=>e.snapshot),o=i.map(e=>e.lastChanged),l=Math.max(t.lastChanged,...o);return E({snapshot:H({users:H(a),many:!1}),lastChanged:l})})}typingAvailable(e,t){this.mutate(e,()=>E({data:t.state,userSubscriptions:t.state.many?{}:We(t.state.usersTyping,(e,t)=>this.realtimeClient.internalSubscribe(["users",t])),lastChanged:e}))}typingChanged(e,t){this.mutate(e,n=>{if(null===n.value.data)return n;if(void 0===t.diff.many){if(!0===n.value.data.many)return n;const s=d({},n.value.data.usersTyping),r=d({},n.value.userSubscriptions);return Ue(t.diff.usersTyping,(e,t)=>{var n;"number"==typeof e?(s[t]=e,r[t]=this.realtimeClient.internalSubscribe(["users",t])):null===e&&(delete s[t],null==(n=r[t])||n.unsubscribe(),delete r[t])}),E({data:{usersTyping:s,many:!1},userSubscriptions:r,lastChanged:e})}if(!0===t.diff.many)return n.value.data.many?n:E({data:{usersTyping:null,many:!0},userSubscriptions:{},lastChanged:e});if(!1===t.diff.many){if(!1===n.value.data.many)return n;const s=We(t.diff.usersTyping,(e,t)=>this.realtimeClient.internalSubscribe(["users",t]));return E({data:t.diff,userSubscriptions:s,lastChanged:e})}throw t.diff,"Unreachable"})}sideDeleted(e,t){this.mutate(e,t=>null===t.value.data?t:E({data:null,lastChanged:e}))}teardownNested(e){e.data&&Ue(e.userSubscriptions,e=>e.unsubscribe())}anyChildChanged(e,t,n){return y(this,null,function*(){var s;if(null===n.data)return!1;for(const r in n.userSubscriptions){const i=n.userSubscriptions[r];if(!0===(yield null==(s=null==i?void 0:i.store)?void 0:s.changedBetween(e,t)))return!0}return!1})}}class Be extends de{constructor(e,t,n,s){super(e,{}),this.conversationId=t,this.participantData=n,this.realtimeClient=s}fetchInitial(e){return y(this,null,function*(){return E({lastChanged:e,user:this.realtimeClient.internalSubscribe(["users",this.participantData.id]),data:this.participantData})})}refetch(e){throw"Do not call refetch on participant data stores, it can return outdated data. Destroy and remake them instead"}equal(e,t){var n,s,r,i;return(null==(s=null==(n=e.user)?void 0:n.store)?void 0:s.userId)===(null==(i=null==(r=t.user)?void 0:r.store)?void 0:i.userId)&&K(e.data,t.data)}teardownNested(e){var t;null==(t=e.user)||t.unsubscribe()}anyChildChanged(e,t,n){return y(this,null,function*(){var s;const r=null==(s=n.user)?void 0:s.store;return!0===(yield null==r?void 0:r.changedBetween(e,t))})}loadNested(e,t){return y(this,null,function*(){if(null===t.data)return E({snapshot:null});const n=yield t.user.store.getDeep(e);if(!1===n.ok)return n;const s=n.value.snapshot;return E({snapshot:Me(t.data,s)})})}participantEdited(e,t){this.mutate(e,n=>null===n.value.data?n:E({lastChanged:e,user:n.value.user,data:{id:n.value.data.id,access:Y(n.value.data.access,t.diff.access),notify:Y(n.value.data.notify,t.diff.notify),joinedAt:n.value.data.joinedAt}}))}participantDeleted(e,t){this.mutate(e,t=>null===t.value.data?t:(this.teardownNested(t.value),E({lastChanged:e,user:null,data:null})))}getFromCache(){return y(this,null,function*(){const e=yield this.mostRecentState.resultPromise;return e.ok?null===e.value.data?A({status:404,errorCode:"PARTICIPANT_NOT_FOUND",reasons:["No participant with that ID exists"]}):E({status:200,data:e.value.data}):M("NOT_IN_CACHE")})}}class Le extends pe{constructor(e,t,n,s,r){super(e,s,r),this.conversationId=t,this.realtimeClient=n,this.handlers=r,this.unsubscribeDebounceMs=3e4,this.pendingLoadMore=void 0}fetchInitial(e){return y(this,null,function*(){const t=yield Ge({realtimeClient:this.realtimeClient,conversationId:this.conversationId,count:10});return t.ok?null===t.value.participants?E({lastChanged:e,stores:null,inWindow:null,windowEnd:null}):Fe({seq:e,participants:t.value.participants,cursor:t.value.nextCursor,conversationId:this.conversationId,realtimeClient:this.realtimeClient}):t})}teardownNested(e){if(e.stores){const t=M("TERMINATED");Object.values(e.stores).forEach(e=>e.setError(t))}}anyChildChanged(e,t,n){return y(this,null,function*(){for(const s in n.stores){const r=n.stores[s];if(!0===(yield null==r?void 0:r.changedBetween(e,t)))return!0}return!1})}equal(e,t){return null===e.stores&&null===t.stores||null!==e.stores&&null!==t.stores&&!!K(Object.keys(e.stores),Object.keys(t.stores))&&K(e.windowEnd,t.windowEnd)}loadNested(e,t){return y(this,null,function*(){if(null===t.stores)return E({snapshot:null,loadedAll:!0});const n=yield Promise.all(Object.values(t.stores).map(t=>t.getDeep(e))),s=n.find(e=>!e.ok);if(s)return s;const r=n.filter(e=>null!==e.value.snapshot).map(e=>e.value.snapshot);return r.sort((e,t)=>t.joinedAt-e.joinedAt),E({snapshot:H(r),loadedAll:null===t.windowEnd})})}loadMore(e){return y(this,null,function*(){if(this.pendingLoadMore)return this.pendingLoadMore;const t=x();this.pendingLoadMore=t.promise,yield this._loadMoreParticipants(e),t.resolve(),this.pendingLoadMore=void 0})}_loadMoreParticipants(e=10){return y(this,null,function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return;if(null===t.value.windowEnd)return;const n=t.value.windowEnd.cursor,s=yield Ge({count:e,cursor:n,conversationId:this.conversationId,realtimeClient:this.realtimeClient});yield this.handlers.onLoadedMore({type:"virtual.participants.loadedmore",conversationId:this.conversationId,data:s})})}loadedMore(e,t){this.mutate(e,n=>null===n.value.windowEnd?n:t.data.ok?null===t.data.value.participants?(console.warn("[TalkJS] When loading more participants, the conversation no longer existed. We should have been told about this."),n):Fe({seq:e,prevStores:n.value.stores,participants:t.data.value.participants,cursor:t.data.value.nextCursor,conversationId:this.conversationId,realtimeClient:this.realtimeClient}):t.data)}participantCreated(e,t){this.mutate(e,n=>{if(null===n.value.stores)return console.warn("[TalkJS] Received a 'participant.created' event for a nonexistent conversation."),n;if(n.value.windowEnd&&t.state.joinedAt<n.value.windowEnd.oldestParticipantTs)return n;if(Object.hasOwnProperty.call(n.value.stores,t.state.id))return n;const s=d({},n.value.stores),r=new Be(e,this.conversationId,t.state,this.realtimeClient);return s[t.state.id]=r,E({lastChanged:e,stores:s,windowEnd:n.value.windowEnd})})}participantEdited(e,t){this.mutate(e,n=>{var s;return null===n.value.stores?(console.warn("[TalkJS] Received a 'participant.edited' event for a nonexistent conversation."),n):(null==(s=n.value.stores[t.userId])||s.participantEdited(e,t),n)})}participantDeleted(e,t){this.mutate(e,n=>{if(null===n.value.stores)return console.warn("[TalkJS] Received a 'participant.deleted' event for a conversation that we thought didn't exist."),n;const s=n.value.stores[t.userId];if(void 0===s)return n;s.participantDeleted(e,t);const r=d({},n.value.stores);return delete r[t.userId],E({lastChanged:e,stores:r,windowEnd:n.value.windowEnd})})}sideCreated(e,t){const n=this.fetchInitial(e);this.mutate(e,e=>null!==e.value.stores?(n.then(e=>{e.ok&&this.teardownNested(e.value)}),e):n)}sideDeleted(e,t){this.mutate(e,t=>null===t.value.stores?t:(this.teardownNested(t.value),E({lastChanged:e,stores:null,inWindow:null,windowEnd:null})))}getParticipantFromCache(e){return y(this,null,function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return M("NOT_IN_CACHE");if(null===t.value.stores)return M("NOT_IN_CACHE");const n=t.value.stores[e];return void 0===n?M("NOT_IN_CACHE"):n.getFromCache()})}}function Ge(e){return y(this,arguments,function*({cursor:e,realtimeClient:t,conversationId:n,count:s}){const r={limit:s,cursor:e},i=yield t.call({method:"GET",path:["me","conversations",n,"participants"],data:r,flags:{bypassCache:!0}});if(i.ok){const{data:e,cursor:t}=i.value.data;return E({participants:e,nextCursor:t})}return!i.ok&&"server"===i.where&&404===i.value.status||!i.ok&&"server"===i.where&&403===i.value.status&&"NOT_A_PARTICIPANT"===i.value.errorCode?E({participants:null,nextCursor:null}):i})}function Fe({seq:e,prevStores:t,participants:n,cursor:s,conversationId:r,realtimeClient:i}){const a=t?d({},t):{};for(const o of n)if(void 0===a[o.id]){const t=new Be(e,r,o,i);a[o.id]=t}return E(null===s?{lastChanged:e,stores:a,windowEnd:null}:{lastChanged:e,stores:a,windowEnd:{cursor:s,oldestParticipantTs:n[n.length-1].joinedAt}})}class He extends pe{constructor(e,t,n,s,r){super(e,s,r),this.getConvDataStore=t,this.realtimeClient=n,this.handlers=r,this.unsubscribeDebounceMs=1e4,this.pendingLoadMore=void 0}fetchInitial(e){return y(this,null,function*(){const t=yield Je({realtimeClient:this.realtimeClient,count:20});return t.ok?null===t.value.conversations?E({lastChanged:e,stores:null,windowEnd:null}):ze({seq:e,conversations:t.value.conversations,cursor:t.value.nextCursor,getConvDataStore:this.getConvDataStore}):t})}teardownNested(e){null!==e.stores&&Object.values(e.stores).forEach(e=>e.unsubscribe())}anyChildChanged(e,t,n){return y(this,null,function*(){var s;for(const r in n.stores){const i=n.stores[r];if(!0===(yield null==(s=null==i?void 0:i.store)?void 0:s.changedBetween(e,t)))return!0}return!1})}equal(e,t){return null===e.stores&&null===t.stores||null!==e.stores&&null!==t.stores&&!!K(Object.keys(e.stores),Object.keys(t.stores))&&K(e.windowEnd,t.windowEnd)}loadNested(e,t){return y(this,null,function*(){if(null===t.stores)return E({snapshot:H([]),loadedAll:!0});const n=yield Promise.all(Object.values(t.stores).map(t=>t.store.getDeep(e))),s=n.find(e=>!e.ok);if(s)return s;const r=n.filter(e=>null!==e.value.snapshot).map(e=>e.value.snapshot);return r.sort((e,t)=>{var n,s,r,i;const a=null!=(s=null==(n=e.lastMessage)?void 0:n.createdAt)?s:e.joinedAt;return(null!=(i=null==(r=t.lastMessage)?void 0:r.createdAt)?i:t.joinedAt)-a}),E({snapshot:H(r),loadedAll:null===t.windowEnd})})}loadMore(e){return y(this,null,function*(){if(this.pendingLoadMore)return this.pendingLoadMore;const t=x();this.pendingLoadMore=t.promise,yield this._loadMoreConversations(e),t.resolve(),this.pendingLoadMore=void 0})}_loadMoreConversations(e=20){return y(this,null,function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return;if(null===t.value.windowEnd)return;const n=t.value.windowEnd.cursor,s=yield Je({count:e,cursor:n,realtimeClient:this.realtimeClient});yield this.handlers.onLoadedMore({type:"virtual.conversations.loadedmore",data:s})})}getConvFromCache(e){return y(this,null,function*(){const t=yield this.mostRecentState.resultPromise;if(!t.ok)return M("NOT_IN_CACHE");if(null===t.value.stores)return A({status:404,errorCode:"USER_NOT_FOUND",reasons:["No user with that ID exists"]});const n=t.value.stores[e];return void 0===n?M("NOT_IN_CACHE"):n.store.getFromCache()})}loadedMore(e,t){this.mutate(e,n=>null===n.value.windowEnd?n:t.data.ok?null===t.data.value.conversations?(console.warn("[TalkJS] When loading more conversations, the user stopped existing, which should be impossible."),n):ze({seq:e,prevStores:n.value.stores,conversations:t.data.value.conversations,cursor:t.data.value.nextCursor,getConvDataStore:this.getConvDataStore}):t.data)}userCreated(e,t){this.mutate(e,e=>null!==e.value.stores?e:E({lastChanged:e.value.lastChanged,stores:{},windowEnd:null}))}sideCreated(e,t){const n=this.getConvDataStore(t.state);this.mutate(e,s=>{let r=s.value.stores;return null===r&&(console.warn("[TalkJS] Received a 'side.created' event when we thought your user didn't exist."),r={}),Object.hasOwnProperty.call(r,t.conversationId)?(n.unsubscribe(),s):E({lastChanged:e,stores:p(d({},r),{[t.conversationId]:n}),windowEnd:s.value.windowEnd})})}sideDeleted(e,t){this.mutate(e,n=>{var s;if(!Object.hasOwnProperty.call(n.value.stores,t.conversationId))return n;const r=d({},n.value.stores);return null==(s=r[t.conversationId])||s.unsubscribe(),delete r[t.conversationId],E({lastChanged:e,stores:r,windowEnd:n.value.windowEnd})})}sideEdited(e,t){const n=t.diff.lastMessageAt;void 0!==n&&this.mutate(e,s=>{var r;if(null===s.value.stores)return console.warn("[TalkJS] Received a 'side.edited' event when we thought your user didn't exist."),s;if(null===s.value.windowEnd)return s;const i=Object.hasOwnProperty.call(s.value.stores,t.conversationId);if(i&&n<s.value.windowEnd.oldestMessageTs){const n=d({},s.value.stores);return null==(r=n[t.conversationId])||r.unsubscribe(),delete n[t.conversationId],E({lastChanged:e,stores:n,windowEnd:s.value.windowEnd})}if(!i&&n>=s.value.windowEnd.oldestMessageTs){const n=this.getConvDataStore(t.conversationId);return E({lastChanged:e,stores:p(d({},s.value.stores),{[t.conversationId]:n}),windowEnd:s.value.windowEnd})}return s})}}function Je(e){return y(this,arguments,function*({cursor:e,realtimeClient:t,count:n}){const s={limit:n,cursor:e},r=yield t.call({method:"GET",path:["me","conversations"],data:s,flags:{bypassCache:!0}});if(r.ok){const{data:e,cursor:t}=r.value.data;return E({conversations:e,nextCursor:t})}return r.ok||"server"!==r.where||404!==r.value.status||"USER_NOT_FOUND"!==r.value.errorCode?r:E({conversations:null,nextCursor:null})})}function ze({seq:e,prevStores:t,conversations:n,cursor:s,getConvDataStore:r}){const i=t?d({},t):{};for(const a of n)void 0===i[a.id]&&(i[a.id]=r(a));return E(null===s?{lastChanged:e,stores:i,windowEnd:null}:{lastChanged:e,stores:i,windowEnd:{cursor:s,oldestMessageTs:Math.min(...n.map(e=>e.lastMessageAt))}})}class Ye extends pe{constructor(e,t,n,s,r){super(e,s,r),this.conversation=t,this.realtimeClient=n,this.unsubscribeDebounceMs=0}get conversationId(){return"string"==typeof this.conversation?this.conversation:this.conversation.id}fetchInitial(e){return y(this,null,function*(){const t=this.realtimeClient.internalSubscribe(["me","conversations",this.conversationId,"messages"]);if("object"==typeof this.conversation)return E({lastChanged:e,snapshot:this.conversation,messageWindow:t});const n=yield this.realtimeClient.call({method:"GET",path:["me","conversations",this.conversationId],data:{},flags:{bypassCache:!0}});let s;if(n.ok)s=n.value.data;else if("server"===n.where&&404===n.value.status)s=null;else{if("server"!==n.where||403!==n.value.status||"NOT_A_PARTICIPANT"!==n.value.errorCode)return t.unsubscribe(),n;s=null}return E({lastChanged:e,snapshot:s,messageWindow:t})})}teardownNested(e){var t;null==(t=e.messageWindow)||t.unsubscribe()}anyChildChanged(e,t,n){return y(this,null,function*(){return!0===(yield n.messageWindow.store.lastMessageChangedBetween(e,t))})}equal(e,t){return K(e.snapshot,t.snapshot)}loadNested(e,t){return y(this,null,function*(){var n;if(!t.snapshot)return E({snapshot:null,loadedAll:!0});const s=yield t.messageWindow.store.getDeep(e);if(!s.ok)return s;const r=s.value.snapshot,i=null!=(n=null==r?void 0:r[0])?n:null;return E({snapshot:H(p(d({},t.snapshot),{custom:H(t.snapshot.custom),welcomeMessages:H(t.snapshot.welcomeMessages),lastMessage:i}))})})}participantEdited(e,t){this.mutate(e,n=>null===n.value.snapshot?(console.warn("[TalkJS] Received a 'participant.edited' event for a conversation that we thought didn't exist."),n):E({lastChanged:e,snapshot:Qe(n.value.snapshot,t.diff),messageWindow:n.value.messageWindow}))}conversationEdited(e,t){this.mutate(e,n=>null===n.value.snapshot?(console.warn("[TalkJS] Received a 'conversation.edited' event for a conversation that we thought didn't exist."),n):E({lastChanged:e,snapshot:Qe(n.value.snapshot,t.diff),messageWindow:n.value.messageWindow}))}sideEdited(e,t){this.mutate(e,n=>null===n.value.snapshot?(console.warn("[TalkJS] Received a 'side.edited' event for a conversation that we thought didn't exist."),n):E({lastChanged:e,snapshot:Qe(n.value.snapshot,t.diff),messageWindow:n.value.messageWindow}))}sideCreated(e,t){this.mutate(e,n=>n.value.snapshot?n:E({lastChanged:e,snapshot:t.state,messageWindow:n.value.messageWindow}))}sideDeleted(e,t){this.mutate(e,t=>null===t.value.snapshot?t:E({lastChanged:e,snapshot:null,messageWindow:t.value.messageWindow}))}getFromCache(){return y(this,null,function*(){const e=yield this.mostRecentState.resultPromise;return e.ok&&e.value.snapshot?E({status:200,data:e.value.snapshot}):M("NOT_IN_CACHE")})}}function Qe(e,t){const n=t;return{id:e.id,createdAt:e.createdAt,subject:Y(e.subject,n.subject),photoUrl:Y(e.photoUrl,n.photoUrl),welcomeMessages:Q(e.welcomeMessages,n.welcomeMessages),custom:V(e.custom,n.custom),lastMessageAt:Y(e.lastMessageAt,n.lastMessageAt),unreadMessageCount:Y(e.unreadMessageCount,n.unreadMessageCount),isUnread:Y(e.isUnread,n.isUnread),access:Y(e.access,n.access),notify:Y(e.notify,n.notify),readUntil:Y(e.readUntil,n.readUntil),everyoneReadUntil:Y(e.everyoneReadUntil,n.everyoneReadUntil),joinedAt:e.joinedAt}}class Ve extends pe{constructor(e,t,n,s,r){super(e,s,r),this.userId=t,this.realtimeClient=n,this.unsubscribeDebounceMs=3e4}fetchInitial(e){return y(this,null,function*(){const t=this.realtimeClient.internalSubscribe(["users",this.userId]),n=yield this.realtimeClient.call({method:"GET",path:["users",this.userId,"online"],data:{},flags:{bypassCache:!0}});return n.ok||"server"!==n.where||404!==n.value.status||"USER_NOT_FOUND"!==n.value.errorCode?n.ok?E({lastChanged:e,user:t,data:n.value.data}):n:E({lastChanged:e,user:t,data:null})})}equal(e,t){return K(e.data,t.data)}teardownNested(e){e.user.unsubscribe()}anyChildChanged(e,t,n){return y(this,null,function*(){return n.user.store.changedBetween(e,t)})}loadNested(e,t){return y(this,null,function*(){const n=yield t.user.store.getDeep(e);if(!n.ok)return n;const s=n.value.snapshot;return null===t.data||null===s?E({snapshot:null}):E({snapshot:H(p(d({},t.data),{user:s}))})})}userCreated(e,t){const n=this.fetchInitial(e);this.mutate(e,e=>null!==e.value.data?(n.then(e=>{e.ok&&this.teardownNested(e.value)}),e):n)}userOnlineChanged(e,t){this.mutate(e,n=>null===n.value.data?n:E({lastChanged:e,user:n.value.user,data:t.diff}))}getFromCache(){return y(this,null,function*(){const e=yield this.mostRecentState.resultPromise;if(!e.ok)return M("NOT_IN_CACHE");if(null===e.value.data)return A({status:404,errorCode:"USER_NOT_FOUND",reasons:["No user with that ID exists"]});const t=e.value,{user:n}=t,s=f(t,["user"]);return E({status:200,data:d({},s.data)})})}}class Ke{constructor(e,t,n){this.realtimeClient=n,this.convDataStores={},this.storeMap={},this.emitMutex=new ce,this.virtualSeqOffset=0,this.realPublishSeq=0,this.refetchOnNextNetworkLoss=!0,this.connection=new le(e,t,{onUpstreamRestarting:()=>{this.refetchOnNextNetworkLoss=!1},onReady:()=>{this.refetchOnNextNetworkLoss=!0},onResubscribeSent:()=>{if(this.virtualSeqOffset+=this.realPublishSeq,this.realPublishSeq=0,this.refetchOnNextNetworkLoss){this.virtualSeqOffset++;const e=this.virtualSeq;this.refetchAll(e),this.emitAll(e)}},onResubscribeError:(e,t)=>{var n;null==(n=this.storeMap[Ze(e)])||n.setError(t)},onPublish:(e,t)=>{this.realPublishSeq=e;const n=this.virtualSeq;for(const s of t)this.handlePublish(n,s);this.emitAll(n)}})}get virtualSeq(){return this.realPublishSeq+this.virtualSeqOffset}sync(){return y(this,null,function*(){yield this.connection.sync(),yield this.emitMutex.sync()})}refetchAll(e){Object.values(this.storeMap).forEach(t=>null==t?void 0:t.refetch(e))}emitAll(e){return this.emitMutex.runExclusive(()=>y(this,null,function*(){const t=Object.values(this.storeMap).map(t=>null==t?void 0:t.emit(e));yield Promise.all(t)}))}handlePublish(e,t){var n,s,r,i,a,o,l,c,u,h,d,p,f,m,g,v,b,y,w,k,C,T,I,x,S,E,M,A,N,R;switch(t.type){case"user.created":return null==(n=this.storeMap[`/users/${t.userId}`])||n.userCreated(e,t),null==(s=this.storeMap["/me/conversations"])||s.userCreated(e,t),void(null==(r=this.storeMap[`/users/${t.userId}/online`])||r.userCreated(e,t));case"user.edited":return void(null==(i=this.storeMap[`/users/${t.userId}`])||i.userEdited(e,t));case"side.created":return null==(a=this.convDataStores[t.conversationId])||a.sideCreated(e,t),null==(o=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||o.sideCreated(e,t),null==(l=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||l.sideCreated(e,t),void(null==(c=this.storeMap["/me/conversations"])||c.sideCreated(e,t));case"side.edited":return null==(u=this.convDataStores[t.conversationId])||u.sideEdited(e,t),void(null==(h=this.storeMap["/me/conversations"])||h.sideEdited(e,t));case"side.deleted":return null==(d=this.convDataStores[t.conversationId])||d.sideDeleted(e,t),null==(p=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||p.sideDeleted(e,t),null==(f=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||f.sideDeleted(e,t),null==(m=this.storeMap[`/me/conversations/${t.conversationId}/typing`])||m.sideDeleted(e,t),void(null==(g=this.storeMap["/me/conversations"])||g.sideDeleted(e,t));case"conversation.edited":return void(null==(v=this.convDataStores[t.conversationId])||v.conversationEdited(e,t));case"message.created":return void(null==(b=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||b.messageCreated(e,t));case"message.edited":return void(null==(y=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||y.messageEdited(e,t));case"message.deleted":return void(null==(w=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||w.messageDeleted(e,t));case"typing.available":return void(null==(k=this.storeMap[`/me/conversations/${t.conversationId}/typing`])||k.typingAvailable(e,t));case"typing.changed":return void(null==(C=this.storeMap[`/me/conversations/${t.conversationId}/typing`])||C.typingChanged(e,t));case"conversation.cleared":return void(null==(T=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||T.conversationCleared(e,t));case"participant.edited":return null==(I=this.convDataStores[t.conversationId])||I.participantEdited(e,t),void(null==(x=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||x.participantEdited(e,t));case"participant.created":return void(null==(S=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||S.participantCreated(e,t));case"participant.deleted":return void(null==(E=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||E.participantDeleted(e,t));case"user.online.changed":return void(null==(M=this.storeMap[`/users/${t.userId}/online`])||M.userOnlineChanged(e,t));case"virtual.conversations.loadedmore":return void(null==(A=this.storeMap["/me/conversations"])||A.loadedMore(e,t));case"virtual.messages.loadedmore":return void(null==(N=this.storeMap[`/me/conversations/${t.conversationId}/messages`])||N.loadedMore(e,t));case"virtual.participants.loadedmore":return void(null==(R=this.storeMap[`/me/conversations/${t.conversationId}/participants`])||R.loadedMore(e,t))}}call(e){return y(this,arguments,function*({method:e,path:t,data:n,headers:s,flags:r}){if(!0!==(null==r?void 0:r.bypassCache)&&"GET"===e){const e=Ze(t);if(e in this.storeMap){const t=e,n=this.storeMap[t];if(n&&"getFromCache"in n){yield this.sync();const e=yield n.getFromCache();if("NOT_IN_CACHE"!==e.value)return e}}else if(w(t,["me","conversations","*","messages","*"])){const e=this.storeMap[`/me/conversations/${t[2]}/messages`];if(e){yield this.sync();const n=yield e.getMessageFromCache(t[4]);if("NOT_IN_CACHE"!==n.value)return n}}else if(w(t,["me","conversations","*","participants","*"])){const e=this.storeMap[`/me/conversations/${t[2]}/participants`];if(e){yield this.sync();const n=yield e.getParticipantFromCache(t[4]);if("NOT_IN_CACHE"!==n.value)return n}}else if(w(t,["me","conversations","*"])){const e=this.storeMap["/me/conversations"];if(e){yield this.sync();const n=yield e.getConvFromCache(t[2]);if("NOT_IN_CACHE"!==n.value)return n}}}return this.connection.call({method:e,path:t,data:n,headers:null!=s?s:{}})})}subscribe(e,t){const n=this.getOrCreateStore(e),s=x(),r=x();s.promise.catch(()=>{}),r.promise.catch(()=>{});const i={state:{type:"pending",latestSnapshot:void 0},connected:s.promise,terminated:r.promise,loadMore:e=>y(this,null,function*(){"loadMore"in n&&(yield n.loadMore(e))}),unsubscribe:()=>{}},a=n.listen(n=>{if(n.ok){const e=!("loadedAll"in n.value)||n.value.loadedAll,r={type:"active",latestSnapshot:n.value.snapshot,loadedAll:e};i.state=r,null==t||t(n.value.snapshot,e),s.resolve(r)}else if("pending"===i.state.type||"active"===i.state.type){if("server"===n.where){const t={type:"error",error:new Error(D(`Subscribe to ${e.join("/")}`,n.value))};return i.state=t,r.resolve(t),void s.reject("Subscription encountered an error during initial connection")}if("SESSION_DESTROYED"===n.value){const e={type:"error",error:new Error("Session was destroyed causing all subscriptions to be terminated")};return i.state=e,r.resolve(e),void s.reject("Subscription encountered an error during initial connection")}if("UNSUBSCRIBED"===n.value)return;if("TERMINATED"===n.value)return;n.value}});return i.unsubscribe=()=>{if("pending"===i.state.type||"active"===i.state.type){a();const e={type:"unsubscribed"};i.state=e,r.resolve(e),s.reject("Subscription was unsubscribed before connecting")}},i}onVirtualPublish(e){return y(this,null,function*(){this.virtualSeqOffset++;const t=this.virtualSeq;this.handlePublish(t,e),yield this.emitAll(t)})}getOrCreateStore(e){const t=Ze(e);if(t in this.storeMap)return this.storeMap[t];this.connection.subscribe(e).then(e=>{e.ok||n.setError(e)});const n=this.instantiateStore(e,()=>{delete this.storeMap[t],this.connection.unsubscribe(e)});return this.storeMap[t]=n,n}destroy(){this.storeMap={},this.convDataStores={},this.connection.destroy()}isConnected(){return this.connection.isConnected()}instantiateStore(e,t){if(w(e,["users","*"]))return new Ne(this.virtualSeq,e[1],this.realtimeClient,this.emitMutex,{onTeardown:t});if(w(e,["me","conversations","*"]))return new $e(this.virtualSeq,this.subscribeConvData(e[2]),this.realtimeClient,this.emitMutex,{onTeardown:t});if(w(e,["me","conversations","*","messages"]))return new Oe(this.virtualSeq,e[2],this.realtimeClient,this.emitMutex,{onTeardown:t,onLoadedMore:e=>this.onVirtualPublish(e)});if(w(e,["me","conversations","*","participants"]))return new Le(this.virtualSeq,e[2],this.realtimeClient,this.emitMutex,{onTeardown:t,onLoadedMore:e=>this.onVirtualPublish(e)});if(w(e,["me","conversations","*","typing"]))return new qe(this.virtualSeq,e[2],this.realtimeClient,this.emitMutex,{onTeardown:t});if(w(e,["me","conversations"]))return new He(this.virtualSeq,e=>this.subscribeConvData(e),this.realtimeClient,this.emitMutex,{onTeardown:t,onLoadedMore:e=>this.onVirtualPublish(e)});if(w(e,["users","*","online"]))return new Ve(this.virtualSeq,e[1],this.realtimeClient,this.emitMutex,{onTeardown:t});throw"Unreachable"}subscribeConvData(e){const t="string"==typeof e?e:e.id;if(Object.hasOwnProperty.call(this.convDataStores,t)){const e=this.convDataStores[t];return{store:e,unsubscribe:e.registerInternalSubscription()}}const n=new Ye(this.virtualSeq,e,this.realtimeClient,this.emitMutex,{onTeardown:()=>{delete this.convDataStores[t]}});return this.convDataStores[t]=n,{store:n,unsubscribe:n.registerInternalSubscription()}}}function Ze(e){return`/${e.join("/")}`}class Xe{constructor(e,t){this.id=e,this._realtimeClient=t}get brandedId(){return this.id}get(){return y(this,null,function*(){const e=yield this._realtimeClient.getUser(this.brandedId);return br("Get user "+this.id,e)})}set(e){return y(this,null,function*(){null===e.role&&(e.role="default");const t="string"==typeof e.email?[e.email]:e.email,n="string"==typeof e.phone?[e.phone]:e.phone,s=yield this._realtimeClient.call({method:"PUT",path:["users",this.brandedId],data:p(d({},e),{email:t,phone:n})});_("Set user "+this.id,s)})}createIfNotExists(e){return y(this,null,function*(){void 0===e.role&&(e.role="default");const t="string"==typeof e.email?[e.email]:e.email,n="string"==typeof e.phone?[e.phone]:e.phone,s=yield this._realtimeClient.call({method:"POST",path:["users",this.brandedId],data:p(d({},e),{email:t,phone:n})});(s.ok||"server"!==s.where||409!=s.value.status)&&_(`Create user ${this.id} if not exists`,s)})}subscribe(e){return this._realtimeClient.subscribe(["users",this.brandedId],e)}subscribeOnline(e){return this._realtimeClient.subscribe(["users",this.brandedId,"online"],e)}}class et{constructor(e,t,n){this.userId=e,this.conversationId=t,this._realtimeClient=n}get brandedUserId(){return this.userId}get brandedConversationId(){return this.conversationId}get(){return y(this,null,function*(){const e=yield this._realtimeClient.call({method:"GET",path:["me","conversations",this.brandedConversationId,"participants",this.brandedUserId],data:{}}),t=yield this._realtimeClient.call({method:"GET",path:["users",this.brandedUserId],data:{includePrivateFields:!1}}),[n,s]=yield Promise.all([e,t]);return(n.ok||"server"!==n.where||404!==n.value.status)&&(s.ok||"server"!==s.where||404!==s.value.status)?Me(_(`Get participant ${this.userId} in conversation ${this.conversationId}`,n),Ee(_(`Get user ${this.userId}`,s))):null})}set(){return y(this,arguments,function*(e={}){const t=yield this._realtimeClient.call({method:"PUT",path:["conversations",this.brandedConversationId,"participants",this.brandedUserId],data:e});_(`Set participant ${this.userId} in conversation ${this.conversationId}`,t)})}edit(){return y(this,arguments,function*(e={}){const t=yield this._realtimeClient.call({method:"PATCH",path:["conversations",this.brandedConversationId,"participants",this.brandedUserId],data:e});_(`Edit participant ${this.userId} in conversation ${this.conversationId}`,t)})}createIfNotExists(){return y(this,arguments,function*(e={}){const t=yield this._realtimeClient.call({method:"POST",path:["conversations",this.brandedConversationId,"participants",this.brandedUserId],data:e});(t.ok||"server"!==t.where||409!==t.value.status)&&_(`Add participant ${this.userId} to conversation ${this.conversationId}`,t)})}delete(){return y(this,null,function*(){const e=yield this._realtimeClient.call({method:"DELETE",path:["conversations",this.brandedConversationId,"participants",this.brandedUserId],data:{}});(e.ok||"server"!==e.where||404!==e.value.status)&&_(`Remove participant ${this.userId} from conversation ${this.conversationId}`,e)})}}function tt(e){const t="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz";let n=0;const s=[],r=e===n;n=e;const i=new Array(8);for(let o=7;o>=0;o--)i[o]=t.charAt(e%64),e=Math.floor(e/64);if(0!==e)throw new Error("We should have converted the entire timestamp.");let a=i.join("");if(r){let e;for(e=11;e>=0&&63===s[e];e--)s[e]=0;s[e]++}else for(let o=0;o<12;o++)s[o]=Math.floor(64*Math.random());for(let o=0;o<12;o++)a+=t.charAt(s[o]);if(20!=a.length)throw new Error("Length should be 20.");return a}const nt=(e,t,n=void 0)=>e.reduce((e,s,r)=>e.concat((e=>{if("string"==typeof e)return t(e,n);switch(e.type){case"bold":case"italic":case"strikethrough":case"blockquote":case"bulletlist":case"bulletList":case"bulletpoint":case"bulletPoint":return[{type:e.type,children:nt(e.children,t,e.type)}];case"link":return[{type:e.type,url:e.url,children:nt(e.children,t,e.type)}];case"actionlink":case"actionLink":case"actionbutton":case"actionButton":return[{type:e.type,action:e.action,params:e.params,children:nt(e.children,t,e.type)}];case"mention":case"autolink":case"autoLink":case"codeblock":case"codeBlock":case"codespan":case"codeSpan":case"suppressed":case"emoji":case"customemoji":case"customEmoji":return[e]}})(s)),[]);function st(e,t){return n=>{const s=n;let r=0;const i=[];for(const a of ve(n,e)){a.index-r>0&&i.push(s.substring(r,a.index));const e=t(a);Array.isArray(e)?i.push(...e):i.push(e),r=a.index+a[0].length}return r<n.length&&i.push(n.substring(r)),i}}const rt="’'()[]{}<>:,‒–—―…!.«»-‐?‘’“”;/⁄␠·&@*\\•^¤¢$€£¥₩₪†‡°¡¿¬#№%‰‱¶′§~¨_|¦⁂☞∴‽※".replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");var it,at=((it=at||{})[it.italic=1]="italic",it[it.strikethrough=2]="strikethrough",it[it.bold=4]="bold",it);const ot=[0,1,2,3,4,5,6].map(e=>{const t=[];return 1&e||t.push(/_([^\s_].*?[^\s_])_|_([^\s_])_/),2&e||t.push(/~([^\s~].*?[^\s~])~|~([^\s~])~/),4&e||t.push(/\*([^\s*].*?[^\s*])\*|\*([^\s*])\*/),new RegExp(t.map(e=>e.source).join("|"),"g")}),lt={_:1,"*":4,"~":2};function ct(e){return ut(e,0)}function ut(e,t=0){const n=ot[t],s=n?function(e){const t=st(ht.getOrCompute(e,()=>new RegExp(`(?:^|[\\s${rt}])(?:${e.source})(?=[\\s${rt}]|$)`,"g")),e=>{const t=e[0][1],n=e[1]||e[2]||e[3]||e[4]||e[5]||e[6];return[" ",{type:at[lt[t]],children:[n]}]});return e=>{const[n,...s]=t(" "+e);return n.length>1&&s.unshift(n.substring(1)),s}}(n):()=>[e];return nt(s(e),(e,n)=>"bold"===n||"italic"===n||"strikethrough"===n?ut(e,t|at[n]):[e])}const ht=function(){const e=function(){try{return new WeakMap}catch(e){const t={has:()=>!1,get:()=>{},set:()=>t};return t}}();return{getOrCompute(t,n){if(e.has(t))return e.get(t);const s=n();return e.set(t,s),s}}}();var dt=function(e,t){return(dt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function pt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}dt(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var ft=function(){return ft=Object.assign||function(e){for(var t,n=1,s=arguments.length;n<s;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},ft.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError;var mt=Object.prototype.hasOwnProperty;function gt(e){return"boolean"==typeof e}function vt(e,t){for(var n=e.length-1;n>=0;n--)!0===t(e[n])&&e.splice(n,1)}function bt(e){throw new Error("Unhandled case for value: '".concat(e,"'"))}var yt=/\s+/,wt=function(){function e(e){void 0===e&&(e={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=e.tagName||"",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||""}return e.prototype.setTagName=function(e){return this.tagName=e,this},e.prototype.getTagName=function(){return this.tagName},e.prototype.setAttr=function(e,t){return this.getAttrs()[e]=t,this},e.prototype.getAttr=function(e){return this.getAttrs()[e]},e.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},e.prototype.getAttrs=function(){return this.attrs},e.prototype.setClass=function(e){return this.setAttr("class",e)},e.prototype.addClass=function(e){for(var t,n=this.getClass(),s=n?n.split(yt):[],r=e.split(yt);t=r.shift();)-1===s.indexOf(t)&&s.push(t);return this.getAttrs().class=s.join(" "),this},e.prototype.removeClass=function(e){for(var t,n=this.getClass(),s=n?n.split(yt):[],r=e.split(yt);s.length&&(t=r.shift());){var i=s.indexOf(t);-1!==i&&s.splice(i,1)}return this.getAttrs().class=s.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(e){return-1!==(" "+this.getClass()+" ").indexOf(" "+e+" ")},e.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},e.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var e=this.getTagName(),t=this.buildAttrsStr();return["<",e,t=t?" "+t:"",">",this.getInnerHtml(),"</",e,">"].join("")},e.prototype.buildAttrsStr=function(){var e=this.getAttrs(),t=[];for(var n in e)mt.call(e,n)&&t.push(n+'="'+e[n]+'"');return t.join(" ")},e}();function kt(e){var t="";return e.scheme&&e.host&&(t+=e.scheme+"://"),e.host&&(t+=e.host),e.path&&(t+="/"+e.path),e.query&&(t+="?"+e.query),e.fragment&&(t+="#"+e.fragment),t}function Ct(e,t,n){var s=t/2,r=Math.ceil(s),i=-1*Math.floor(s),a="";return i<0&&(a=e.substr(i)),e.substr(0,r)+n+a}var Tt=function(){function e(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||""}return e.prototype.build=function(e){return new wt({tagName:"a",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},e.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},n=this.createCssClass(e);return n&&(t.class=n),this.newWindow&&(t.target="_blank",t.rel="noopener noreferrer"),this.truncate.length&&this.truncate.length<e.getAnchorText().length&&(t.title=e.getAnchorHref()),t},e.prototype.createCssClass=function(e){var t=this.className;if(t){for(var n=[t],s=e.getCssClassSuffixes(),r=0,i=s.length;r<i;r++)n.push(t+"-"+s[r]);return n.join(" ")}return""},e.prototype.processAnchorText=function(e){return this.doTruncate(e)},e.prototype.doTruncate=function(e){var t=this.truncate;if(!t.length)return e;var n,s,r,i,a=t.length,o=t.location;return"smart"===o?function(e,t,n){var s,r;if(null==n?(n="&hellip;",r=3,s=8):(r=n.length,s=n.length),e.length<=t)return e;var i,a,o,l=t-r,c=(i={},(o=(a=e).match(/^([a-z]+):\/\//i))&&(i.scheme=o[1],a=a.slice(o[0].length)),(o=a.match(/^(.*?)(?=(\?|#|\/|$))/i))&&(i.host=o[1],a=a.slice(o[0].length)),(o=a.match(/^\/(.*?)(?=(\?|#|$))/i))&&(i.path=o[1],a=a.slice(o[0].length)),(o=a.match(/^\?(.*?)(?=(#|$))/i))&&(i.query=o[1],a=a.slice(o[0].length)),(o=a.match(/^#(.*?)$/i))&&(i.fragment=o[1]),i);if(c.query){var u=c.query.match(/^(.*?)(?=(\?|#))(.*?)$/i);u&&(c.query=c.query.substr(0,u[1].length),e=kt(c))}if(e.length<=t)return e;if(c.host&&(c.host=c.host.replace(/^www\./,""),e=kt(c)),e.length<=t)return e;var h="";if(c.host&&(h+=c.host),h.length>=l)return c.host.length===t?(c.host.substr(0,t-r)+n).substr(0,l+s):Ct(h,l,n).substr(0,l+s);var d="";if(c.path&&(d+="/"+c.path),c.query&&(d+="?"+c.query),d){if((h+d).length>=l)return(h+d).length==t?(h+d).substr(0,t):(h+Ct(d,l-h.length,n)).substr(0,l+s);h+=d}if(c.fragment){var p="#"+c.fragment;if((h+p).length>=l)return(h+p).length==t?(h+p).substr(0,t):(h+Ct(p,l-h.length,n)).substr(0,l+s);h+=p}if(c.scheme&&c.host){var f=c.scheme+"://";if((h+f).length<l)return(f+h).substr(0,t)}if(h.length<=t)return h;var m="";return l>0&&(m=h.substr(-1*Math.floor(l/2))),(h.substr(0,Math.ceil(l/2))+n+m).substr(0,l+s)}(e,a):"middle"===o?function(e,t,n){if(e.length<=t)return e;var s,r;null==n?(n="&hellip;",s=8,r=3):(s=n.length,r=n.length);var i=t-r,a="";return i>0&&(a=e.substr(-1*Math.floor(i/2))),(e.substr(0,Math.ceil(i/2))+n+a).substr(0,i+s)}(e,a):(s=a,r=void 0,(n=e).length>s&&(null==r?(r="&hellip;",i=3):i=r.length,n=n.substring(0,s-i)+r),n)},e}(),It=function(){function e(e){this._=null,this.matchedText="",this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(e){this.offset=e},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.type]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}();function xt(e){return e>=65&&e<=90||e>=97&&e<=122}function St(e){return e>=48&&e<=57}function Et(e){return 34==e||39==e}function Mt(e){return e<8232?e<160?e>=9&&e<=13||32==e:e<5760?160==e:5760==e||e>=8192&&e<=8202:e<8287?e>=8232&&e<=8233||8239==e:e<12288?8287==e:12288==e||65279==e}function At(e){return e<4800?e<2949?e<2451?e<1425?e<768?e<192?e<169?e<65?e>=48&&e<=57:e>=65&&e<=90||e>=97&&e<=122:e<181?e>=169&&e<=170||174==e:181==e||186==e:e<710?e<216?e>=192&&e<=214:e>=216&&e<=246||e>=248&&e<=705:e<748?e>=710&&e<=721||e>=736&&e<=740:748==e||750==e:e<910?e<895?e<886?e>=768&&e<=884:e>=886&&e<=887||e>=890&&e<=893:e<904?895==e||902==e:e>=904&&e<=906||908==e:e<1155?e<931?e>=910&&e<=929:e>=931&&e<=1013||e>=1015&&e<=1153:e<1369?e>=1155&&e<=1327||e>=1329&&e<=1366:1369==e||e>=1377&&e<=1415:e<1808?e<1552?e<1476?e<1471?e>=1425&&e<=1469:1471==e||e>=1473&&e<=1474:e<1488?e>=1476&&e<=1477||1479==e:e>=1488&&e<=1514||e>=1520&&e<=1522:e<1749?e<1568?e>=1552&&e<=1562:e>=1568&&e<=1641||e>=1646&&e<=1747:e<1770?e>=1749&&e<=1756||e>=1759&&e<=1768:e>=1770&&e<=1788||1791==e:e<2230?e<2042?e<1869?e>=1808&&e<=1866:e>=1869&&e<=1969||e>=1984&&e<=2037:e<2112?2042==e||e>=2048&&e<=2093:e>=2112&&e<=2139||e>=2208&&e<=2228:e<2406?e<2260?e>=2230&&e<=2237:e>=2260&&e<=2273||e>=2275&&e<=2403:e<2437?e>=2406&&e<=2415||e>=2417&&e<=2435:e>=2437&&e<=2444||e>=2447&&e<=2448:e<2693?e<2579?e<2519?e<2486?e<2474?e>=2451&&e<=2472:e>=2474&&e<=2480||2482==e:e<2503?e>=2486&&e<=2489||e>=2492&&e<=2500:e>=2503&&e<=2504||e>=2507&&e<=2510:e<2534?e<2524?2519==e:e>=2524&&e<=2525||e>=2527&&e<=2531:e<2565?e>=2534&&e<=2545||e>=2561&&e<=2563:e>=2565&&e<=2570||e>=2575&&e<=2576:e<2631?e<2613?e<2602?e>=2579&&e<=2600:e>=2602&&e<=2608||e>=2610&&e<=2611:e<2620?e>=2613&&e<=2614||e>=2616&&e<=2617:2620==e||e>=2622&&e<=2626:e<2649?e<2635?e>=2631&&e<=2632:e>=2635&&e<=2637||2641==e:e<2662?e>=2649&&e<=2652||2654==e:e>=2662&&e<=2677||e>=2689&&e<=2691:e<2821?e<2759?e<2730?e<2703?e>=2693&&e<=2701:e>=2703&&e<=2705||e>=2707&&e<=2728:e<2741?e>=2730&&e<=2736||e>=2738&&e<=2739:e>=2741&&e<=2745||e>=2748&&e<=2757:e<2784?e<2763?e>=2759&&e<=2761:e>=2763&&e<=2765||2768==e:e<2809?e>=2784&&e<=2787||e>=2790&&e<=2799:2809==e||e>=2817&&e<=2819:e<2887?e<2858?e<2831?e>=2821&&e<=2828:e>=2831&&e<=2832||e>=2835&&e<=2856:e<2869?e>=2858&&e<=2864||e>=2866&&e<=2867:e>=2869&&e<=2873||e>=2876&&e<=2884:e<2911?e<2902?e>=2887&&e<=2888||e>=2891&&e<=2893:e>=2902&&e<=2903||e>=2908&&e<=2909:e<2929?e>=2911&&e<=2915||e>=2918&&e<=2927:2929==e||e>=2946&&e<=2947:e<3517?e<3205?e<3046?e<2984?e<2969?e<2958?e>=2949&&e<=2954:e>=2958&&e<=2960||e>=2962&&e<=2965:e<2974?e>=2969&&e<=2970||2972==e:e>=2974&&e<=2975||e>=2979&&e<=2980:e<3014?e<2990?e>=2984&&e<=2986:e>=2990&&e<=3001||e>=3006&&e<=3010:e<3024?e>=3014&&e<=3016||e>=3018&&e<=3021:3024==e||3031==e:e<3142?e<3086?e<3072?e>=3046&&e<=3055:e>=3072&&e<=3075||e>=3077&&e<=3084:e<3114?e>=3086&&e<=3088||e>=3090&&e<=3112:e>=3114&&e<=3129||e>=3133&&e<=3140:e<3160?e<3146?e>=3142&&e<=3144:e>=3146&&e<=3149||e>=3157&&e<=3158:e<3174?e>=3160&&e<=3162||e>=3168&&e<=3171:e>=3174&&e<=3183||e>=3200&&e<=3203:e<3333?e<3274?e<3242?e<3214?e>=3205&&e<=3212:e>=3214&&e<=3216||e>=3218&&e<=3240:e<3260?e>=3242&&e<=3251||e>=3253&&e<=3257:e>=3260&&e<=3268||e>=3270&&e<=3272:e<3296?e<3285?e>=3274&&e<=3277:e>=3285&&e<=3286||3294==e:e<3313?e>=3296&&e<=3299||e>=3302&&e<=3311:e>=3313&&e<=3314||e>=3329&&e<=3331:e<3423?e<3389?e<3342?e>=3333&&e<=3340:e>=3342&&e<=3344||e>=3346&&e<=3386:e<3402?e>=3389&&e<=3396||e>=3398&&e<=3400:e>=3402&&e<=3406||e>=3412&&e<=3415:e<3458?e<3430?e>=3423&&e<=3427:e>=3430&&e<=3439||e>=3450&&e<=3455:e<3482?e>=3458&&e<=3459||e>=3461&&e<=3478:e>=3482&&e<=3505||e>=3507&&e<=3515:e<3804?e<3722?e<3570?e<3535?e<3520?3517==e:e>=3520&&e<=3526||3530==e:e<3544?e>=3535&&e<=3540||3542==e:e>=3544&&e<=3551||e>=3558&&e<=3567:e<3664?e<3585?e>=3570&&e<=3571:e>=3585&&e<=3642||e>=3648&&e<=3662:e<3716?e>=3664&&e<=3673||e>=3713&&e<=3714:3716==e||e>=3719&&e<=3720:e<3754?e<3737?e<3725?3722==e:3725==e||e>=3732&&e<=3735:e<3749?e>=3737&&e<=3743||e>=3745&&e<=3747:3749==e||3751==e:e<3776?e<3757?e>=3754&&e<=3755:e>=3757&&e<=3769||e>=3771&&e<=3773:e<3784?e>=3776&&e<=3780||3782==e:e>=3784&&e<=3789||e>=3792&&e<=3801:e<4176?e<3902?e<3872?e<3840?e>=3804&&e<=3807:3840==e||e>=3864&&e<=3865:e<3895?e>=3872&&e<=3881||3893==e:3895==e||3897==e:e<3974?e<3913?e>=3902&&e<=3911:e>=3913&&e<=3948||e>=3953&&e<=3972:e<4038?e>=3974&&e<=3991||e>=3993&&e<=4028:4038==e||e>=4096&&e<=4169:e<4688?e<4301?e<4256?e>=4176&&e<=4253:e>=4256&&e<=4293||4295==e:e<4348?4301==e||e>=4304&&e<=4346:e>=4348&&e<=4680||e>=4682&&e<=4685:e<4746?e<4698?e>=4688&&e<=4694||4696==e:e>=4698&&e<=4701||e>=4704&&e<=4744:e<4786?e>=4746&&e<=4749||e>=4752&&e<=4784:e>=4786&&e<=4789||e>=4792&&e<=4798:e<11035?e<7416?e<6176?e<5873?e<4992?e<4824?e<4802?4800==e:e>=4802&&e<=4805||e>=4808&&e<=4822:e<4888?e>=4824&&e<=4880||e>=4882&&e<=4885:e>=4888&&e<=4954||e>=4957&&e<=4959:e<5121?e<5024?e>=4992&&e<=5007:e>=5024&&e<=5109||e>=5112&&e<=5117:e<5761?e>=5121&&e<=5740||e>=5743&&e<=5759:e>=5761&&e<=5786||e>=5792&&e<=5866:e<6002?e<5920?e<5888?e>=5873&&e<=5880:e>=5888&&e<=5900||e>=5902&&e<=5908:e<5984?e>=5920&&e<=5940||e>=5952&&e<=5971:e>=5984&&e<=5996||e>=5998&&e<=6e3:e<6108?e<6016?e>=6002&&e<=6003:e>=6016&&e<=6099||6103==e:e<6155?e>=6108&&e<=6109||e>=6112&&e<=6121:e>=6155&&e<=6157||e>=6160&&e<=6169:e<6783?e<6512?e<6400?e<6272?e>=6176&&e<=6263:e>=6272&&e<=6314||e>=6320&&e<=6389:e<6448?e>=6400&&e<=6430||e>=6432&&e<=6443:e>=6448&&e<=6459||e>=6470&&e<=6509:e<6608?e<6528?e>=6512&&e<=6516:e>=6528&&e<=6571||e>=6576&&e<=6601:e<6688?e>=6608&&e<=6617||e>=6656&&e<=6683:e>=6688&&e<=6750||e>=6752&&e<=6780:e<7040?e<6832?e<6800?e>=6783&&e<=6793:e>=6800&&e<=6809||6823==e:e<6992?e>=6832&&e<=6846||e>=6912&&e<=6987:e>=6992&&e<=7001||e>=7019&&e<=7027:e<7245?e<7168?e>=7040&&e<=7155:e>=7168&&e<=7223||e>=7232&&e<=7241:e<7376?e>=7245&&e<=7293||e>=7296&&e<=7304:e>=7376&&e<=7378||e>=7380&&e<=7414:e<8450?e<8130?e<8025?e<7960?e<7424?e>=7416&&e<=7417:e>=7424&&e<=7669||e>=7675&&e<=7957:e<8008?e>=7960&&e<=7965||e>=7968&&e<=8005:e>=8008&&e<=8013||e>=8016&&e<=8023:e<8031?e<8027?8025==e:8027==e||8029==e:e<8118?e>=8031&&e<=8061||e>=8064&&e<=8116:e>=8118&&e<=8124||8126==e:e<8205?e<8150?e<8134?e>=8130&&e<=8132:e>=8134&&e<=8140||e>=8144&&e<=8147:e<8178?e>=8150&&e<=8155||e>=8160&&e<=8172:e>=8178&&e<=8180||e>=8182&&e<=8188:e<8305?e<8252?8205==e:8252==e||8265==e:e<8336?8305==e||8319==e:e>=8336&&e<=8348||e>=8400&&e<=8432:e<8579?e<8486?e<8469?e<8455?8450==e:8455==e||e>=8458&&e<=8467:e<8482?8469==e||e>=8473&&e<=8477:8482==e||8484==e:e<8495?e<8488?8486==e:8488==e||e>=8490&&e<=8493:e<8517?e>=8495&&e<=8505||e>=8508&&e<=8511:e>=8517&&e<=8521||8526==e:e<9410?e<9e3?e<8592?e>=8579&&e<=8580:e>=8592&&e<=8703||e>=8986&&e<=8987:e<9193?9e3==e||9167==e:e>=9193&&e<=9203||e>=9208&&e<=9210:e<9723?e<9654?9410==e||e>=9642&&e<=9643:9654==e||9664==e:e<10548?e>=9723&&e<=9726||e>=9728&&e<=10175:e>=10548&&e<=10549||e>=11013&&e<=11015:e<43259?e<12445?e<11688?e<11520?e<11264?e<11088?e>=11035&&e<=11036:11088==e||11093==e:e<11360?e>=11264&&e<=11310||e>=11312&&e<=11358:e>=11360&&e<=11492||e>=11499&&e<=11507:e<11568?e<11559?e>=11520&&e<=11557:11559==e||11565==e:e<11647?e>=11568&&e<=11623||11631==e:e>=11647&&e<=11670||e>=11680&&e<=11686:e<11744?e<11712?e<11696?e>=11688&&e<=11694:e>=11696&&e<=11702||e>=11704&&e<=11710:e<11728?e>=11712&&e<=11718||e>=11720&&e<=11726:e>=11728&&e<=11734||e>=11736&&e<=11742:e<12330?e<11823?e>=11744&&e<=11775:11823==e||e>=12293&&e<=12294:e<12353?e>=12330&&e<=12341||e>=12347&&e<=12349:e>=12353&&e<=12438||e>=12441&&e<=12442:e<42512?e<12951?e<12549?e<12449?e>=12445&&e<=12447:e>=12449&&e<=12538||e>=12540&&e<=12543:e<12704?e>=12549&&e<=12589||e>=12593&&e<=12686:e>=12704&&e<=12730||e>=12784&&e<=12799:e<19968?e<12953?12951==e:12953==e||e>=13312&&e<=19893:e<42192?e>=19968&&e<=40917||e>=40960&&e<=42124:e>=42192&&e<=42237||e>=42240&&e<=42508:e<42891?e<42623?e<42560?e>=42512&&e<=42539:e>=42560&&e<=42610||e>=42612&&e<=42621:e<42775?e>=42623&&e<=42725||e>=42736&&e<=42737:e>=42775&&e<=42783||e>=42786&&e<=42888:e<43072?e<42928?e>=42891&&e<=42926:e>=42928&&e<=42935||e>=42999&&e<=43047:e<43216?e>=43072&&e<=43123||e>=43136&&e<=43205:e>=43216&&e<=43225||e>=43232&&e<=43255:e<55243?e<43744?e<43488?e<43312?e<43261?43259==e:43261==e||e>=43264&&e<=43309:e<43392?e>=43312&&e<=43347||e>=43360&&e<=43388:e>=43392&&e<=43456||e>=43471&&e<=43481:e<43600?e<43520?e>=43488&&e<=43518:e>=43520&&e<=43574||e>=43584&&e<=43597:e<43642?e>=43600&&e<=43609||e>=43616&&e<=43638:e>=43642&&e<=43714||e>=43739&&e<=43741:e<43824?e<43785?e<43762?e>=43744&&e<=43759:e>=43762&&e<=43766||e>=43777&&e<=43782:e<43808?e>=43785&&e<=43790||e>=43793&&e<=43798:e>=43808&&e<=43814||e>=43816&&e<=43822:e<44012?e<43868?e>=43824&&e<=43866:e>=43868&&e<=43877||e>=43888&&e<=44010:e<44032?e>=44012&&e<=44013||e>=44016&&e<=44025:e>=44032&&e<=55203||e>=55216&&e<=55238:e<64848?e<64298?e<64112?e<55296?e>=55243&&e<=55291:e>=55296&&e<=57343||e>=63744&&e<=64109:e<64275?e>=64112&&e<=64217||e>=64256&&e<=64262:e>=64275&&e<=64279||e>=64285&&e<=64296:e<64320?e<64312?e>=64298&&e<=64310:e>=64312&&e<=64316||64318==e:e<64326?e>=64320&&e<=64321||e>=64323&&e<=64324:e>=64326&&e<=64433||e>=64467&&e<=64829:e<65296?e<65024?e<64914?e>=64848&&e<=64911:e>=64914&&e<=64967||e>=65008&&e<=65019:e<65136?e>=65024&&e<=65039||e>=65056&&e<=65071:e>=65136&&e<=65140||e>=65142&&e<=65276:e<65474?e<65345?e>=65296&&e<=65305||e>=65313&&e<=65338:e>=65345&&e<=65370||e>=65382&&e<=65470:e<65490?e>=65474&&e<=65479||e>=65482&&e<=65487:e>=65490&&e<=65495||e>=65498&&e<=65500}function Nt(e){return e<58?e<44?33==e:44==e||46==e:e<63?e>=58&&e<=59:63==e||94==e}function Rt(e){return e<91?40==e:91==e||123==e}function _t(e){return e<93?41==e:93==e||125==e}var Dt=/^(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|banamex|bauhaus|bestbuy|booking|brother|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|yamaxun|youtube|zuerich|католик|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kindle|kosher|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|nagoya|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|loans|locus|lotte|lotto|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|scb|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)$/,Ot=/https?:\/\//i,Pt=new RegExp("^"+Ot.source,"i"),jt=/^(javascript|vbscript):/i,$t=/^[A-Za-z][-.+A-Za-z0-9]*:(\/\/)?([^:/]*)/,Ut=/^(?:\/\/)?([^/#?:]+)/,Wt=xt;function qt(e){return xt(e)||St(e)||43===e||45===e||46===e}var Bt=At;function Lt(e){return 95===e||Bt(e)}function Gt(e){return At(e)||((t=e)<91?t<47?t>=35&&t<=43||45==t:t<61?47==t:61==t||64==t:t<95?91==t||93==t:t<123?95==t:t>=123&&t<=126||10003==t)||Nt(e);var t}function Ft(e){return 47===e||63===e||35===e}function Ht(e){return Dt.test(e.toLowerCase())}var Jt=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,zt=/[:/?#]/,Yt=/^(https?:\/\/)?(?:www\.)?/i,Qt=/^\/\//,Vt=function(e){function t(t){var n=e.call(this,t)||this;return n.type="url",n.url="",n.urlMatchType="scheme",n.protocolRelativeMatch=!1,n.stripPrefix={scheme:!0,www:!0},n.stripTrailingSlash=!0,n.decodePercentEncoding=!0,n.protocolPrepended=!1,n.urlMatchType=t.urlMatchType,n.url=t.url,n.protocolRelativeMatch=t.protocolRelativeMatch,n.stripPrefix=t.stripPrefix,n.stripTrailingSlash=t.stripTrailingSlash,n.decodePercentEncoding=t.decodePercentEncoding,n}return pt(t,e),t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var e=this.url;return this.protocolRelativeMatch||"scheme"===this.urlMatchType||this.protocolPrepended||(e=this.url="http://"+e,this.protocolPrepended=!0),e},t.prototype.getAnchorHref=function(){return this.getUrl().replace(/&amp;/g,"&")},t.prototype.getAnchorText=function(){var e,t=this.getMatchedText();return this.protocolRelativeMatch&&(t=t.replace(Qt,"")),this.stripPrefix.scheme&&(t=t.replace(Pt,"")),this.stripPrefix.www&&(t=(e=t).includes("www.")?e.replace(Yt,"$1"):e),this.stripTrailingSlash&&(t=function(e){return"/"===e.charAt(e.length-1)&&(e=e.slice(0,-1)),e}(t)),this.decodePercentEncoding&&(t=function(e){var t=e.replace(/%(?:22|26|27|3C|3E)/gi,function(e){return"%22"===e?"&quot;":"%26"===e?"&amp;":"%27"===e?"&#39;":"%3C"===e||"%3c"===e?"&lt;":"&gt;"});if(t.includes("%"))try{return decodeURIComponent(t)}catch(n){}return t}(t)),t},t}(It),Kt=/^mailto:/i,Zt=At;function Xt(e){return Zt(e)||((t=e)<47?t<42?33==t||t>=35&&t<=39:t>=42&&t<=43||45==t:t<63?47==t||61==t:t<94?63==t:t>=94&&t<=96||t>=123&&t<=126);var t}var en=function(e){function t(t){var n=e.call(this,t)||this;return n.type="email",n.email="",n.email=t.email,n}return pt(t,e),t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(It);function tn(e){return 95===e||At(e)}var nn=["twitter","facebook","instagram","tiktok","youtube"],sn=function(e){function t(t){var n=e.call(this,t)||this;return n.type="hashtag",n.serviceName="twitter",n.hashtag="",n.serviceName=t.serviceName,n.hashtag=t.hashtag,n}return pt(t,e),t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var e=this.serviceName,t=this.hashtag;switch(e){case"twitter":return"https://twitter.com/hashtag/"+t;case"facebook":return"https://www.facebook.com/hashtag/"+t;case"instagram":return"https://instagram.com/explore/tags/"+t;case"tiktok":return"https://www.tiktok.com/tag/"+t;case"youtube":return"https://youtube.com/hashtag/"+t;default:bt(e)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t.prototype.getCssClassSuffixes=function(){var t=e.prototype.getCssClassSuffixes.call(this),n=this.getServiceName();return n&&t.push(n),t},t}(It),rn={twitter:/^@\w{1,15}$/,instagram:/^@[_\w]{1,30}$/,soundcloud:/^@[-a-z0-9_]{3,25}$/,tiktok:/^@[.\w]{1,23}[\w]$/,youtube:/^@[-.·\w]{3,30}$/};function an(e){return 45===e||46===e||95===e||xt(e)||St(e)}var on=["twitter","instagram","soundcloud","tiktok","youtube"],ln=function(e){function t(t){var n=e.call(this,t)||this;return n.type="mention",n.serviceName="twitter",n.mention="",n.mention=t.mention,n.serviceName=t.serviceName,n}return pt(t,e),t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;case"tiktok":return"https://www.tiktok.com/@"+this.mention;case"youtube":return"https://youtube.com/@"+this.mention;default:bt(this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var t=e.prototype.getCssClassSuffixes.call(this),n=this.getServiceName();return n&&t.push(n),t},t}(It),cn=/[-. ()]/,un=new RegExp("^".concat(/(?:(?:(?:(\+)?\d{1,3}[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\d[-. ]?){6,12}\d+))([,;]+[0-9]+#?)*/.source,"|").concat(/(0([1-9]-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/.source,"$"));function hn(e){return 45===e||46===e||32===e}function dn(e){return 44===e||59===e}var pn=function(e){function t(t){var n=e.call(this,t)||this;return n.type="phone",n.number="",n.plusSign=!1,n.number=t.number,n.plusSign=t.plusSign,n}return pt(t,e),t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(It),fn=function(){function e(e,t){this.charIdx=0,this.matches=[],this._stateMachines=[],this.schemeUrlMachinesCount=0,this.text=e,this.tagBuilder=t.tagBuilder,this.stripPrefix=t.stripPrefix,this.stripTrailingSlash=t.stripTrailingSlash,this.decodePercentEncoding=t.decodePercentEncoding,this.hashtagServiceName=t.hashtagServiceName,this.mentionServiceName=t.mentionServiceName}return Object.defineProperty(e.prototype,"stateMachines",{get:function(){return this._stateMachines},enumerable:!1,configurable:!0}),e.prototype.addMachine=function(e){this._stateMachines.push(e),us(e)&&this.schemeUrlMachinesCount++},e.prototype.removeMachine=function(e){this._stateMachines=this._stateMachines.filter(function(t){return t!==e}),us(e)&&this.schemeUrlMachinesCount--},e.prototype.hasSchemeUrlMachine=function(){return this.schemeUrlMachinesCount>0},e}();function mn(e,t,n){var s=e.charIdx;if(35===n)e.addMachine({type:2,startIdx:s,state:28,acceptStateReached:!1});else if(64===n)e.addMachine(function(e){return{type:3,startIdx:e,state:30,acceptStateReached:!1}}(s));else if(47===n)e.addMachine(ls(s,11));else if(43===n)e.addMachine(cs(s,37));else if(40===n)e.addMachine(cs(s,32));else{if(St(n)&&(e.addMachine(cs(s,38)),e.addMachine(function(e){return{type:0,startIdx:e,state:13,acceptStateReached:!1,matchType:2,octetsEncountered:1}}(s))),Zt(n)){var r="m"===t.toLowerCase()?15:22;e.addMachine(function(e,t){return{type:1,startIdx:e,state:t,acceptStateReached:!1}}(s,r))}Wt(n)&&e.addMachine(os(s,0)),At(n)&&e.addMachine(ls(s,5))}}function gn(e,t,n){58===n?t.state=2:45===n?t.state=1:qt(n)||e.removeMachine(t)}function vn(e,t,n){var s=e.charIdx;45===n||(47===n?(e.removeMachine(t),e.addMachine(ls(s,11))):qt(n)?t.state=0:e.removeMachine(t))}function bn(e,t,n){var s=e.charIdx;47===n?t.state=3:46===n?e.removeMachine(t):Bt(n)?(t.state=5,Wt(n)&&e.addMachine(os(s,0))):e.removeMachine(t)}function yn(e,t,n){47===n?t.state=4:Gt(n)?(t.state=10,t.acceptStateReached=!0):rs(e,t)}function wn(e,t,n,s){47===s?(t.state=10,t.acceptStateReached=!0):Bt(s)?(t.state=5,t.acceptStateReached=!0):e.removeMachine(t)}function kn(e,t,n){47===n?t.state=12:e.removeMachine(t)}function Cn(e,t,n){Bt(n)?t.state=5:e.removeMachine(t)}function Tn(e,t,n){46===n?t.state=7:45===n?t.state=6:58===n?t.state=8:Ft(n)?t.state=10:Lt(n)||rs(e,t)}function In(e,t,n,s){45===s||(46===s?rs(e,t):Bt(s)?t.state=5:rs(e,t))}function xn(e,t,n,s){46===s?rs(e,t):Bt(s)?(t.state=5,t.acceptStateReached=!0):rs(e,t)}function Sn(e,t,n){46===n?t.state=14:58===n?t.state=8:St(n)||(Ft(n)?t.state=10:At(n)?e.removeMachine(t):rs(e,t))}function En(e,t,n){St(n)?(t.octetsEncountered++,4===t.octetsEncountered&&(t.acceptStateReached=!0),t.state=13):rs(e,t)}function Mn(e,t,n){St(n)?t.state=9:rs(e,t)}function An(e,t,n){St(n)||(Ft(n)?t.state=10:rs(e,t))}function Nn(e,t,n){Gt(n)||rs(e,t)}function Rn(e,t,n,s){"a"===n.toLowerCase()?t.state=16:Un(e,t,s)}function _n(e,t,n,s){"i"===n.toLowerCase()?t.state=17:Un(e,t,s)}function Dn(e,t,n,s){"l"===n.toLowerCase()?t.state=18:Un(e,t,s)}function On(e,t,n,s){"t"===n.toLowerCase()?t.state=19:Un(e,t,s)}function Pn(e,t,n,s){"o"===n.toLowerCase()?t.state=20:Un(e,t,s)}function jn(e,t,n){58===n?t.state=21:Un(e,t,n)}function $n(e,t,n){Xt(n)?t.state=22:e.removeMachine(t)}function Un(e,t,n){46===n?t.state=23:64===n?t.state=24:Xt(n)?t.state=22:e.removeMachine(t)}function Wn(e,t,n){46===n||64===n?e.removeMachine(t):Xt(n)?t.state=22:e.removeMachine(t)}function qn(e,t,n){Bt(n)?t.state=25:e.removeMachine(t)}function Bn(e,t,n){46===n?t.state=27:45===n?t.state=26:Lt(n)||rs(e,t)}function Ln(e,t,n){45===n||46===n?rs(e,t):Lt(n)?t.state=25:rs(e,t)}function Gn(e,t,n){46===n||45===n?rs(e,t):Bt(n)?(t.state=25,t.acceptStateReached=!0):rs(e,t)}function Fn(e,t,n){tn(n)?(t.state=29,t.acceptStateReached=!0):e.removeMachine(t)}function Hn(e,t,n){tn(n)||rs(e,t)}function Jn(e,t,n){an(n)?(t.state=31,t.acceptStateReached=!0):e.removeMachine(t)}function zn(e,t,n){an(n)||(At(n)?e.removeMachine(t):rs(e,t))}function Yn(e,t,n,s){St(s)?t.state=38:(e.removeMachine(t),mn(e,n,s))}function Qn(e,t,n,s){St(s)?t.state=33:e.removeMachine(t),mn(e,n,s)}function Vn(e,t,n){St(n)?t.state=34:e.removeMachine(t)}function Kn(e,t,n){St(n)?t.state=35:e.removeMachine(t)}function Zn(e,t,n){41===n?t.state=36:e.removeMachine(t)}function Xn(e,t,n,s){St(s)?t.state=38:hn(s)?t.state=39:e.removeMachine(t)}function es(e,t,n,s){var r=e.charIdx;t.acceptStateReached=!0,dn(s)?t.state=40:35===s?t.state=41:St(s)||(40===s?t.state=32:hn(s)?t.state=39:(rs(e,t),Wt(s)&&e.addMachine(os(r,0))))}function ts(e,t,n,s){St(s)?t.state=38:40===s?t.state=32:(rs(e,t),mn(e,n,s))}function ns(e,t,n){dn(n)||(35===n?t.state=41:St(n)?t.state=38:rs(e,t))}function ss(e,t,n){dn(n)?t.state=40:St(n)?e.removeMachine(t):rs(e,t)}function rs(e,t){var n,s=e.matches,r=e.text,i=e.charIdx,a=e.tagBuilder,o=e.stripPrefix,l=e.stripTrailingSlash,c=e.decodePercentEncoding,u=e.hashtagServiceName,h=e.mentionServiceName;if(e.removeMachine(t),t.acceptStateReached){var d,p,f=t.startIdx,m=r.slice(t.startIdx,i);switch(m=function(e){for(var t={"(":0,"{":0,"[":0},n=0;n<e.length;n++){var s=e.charAt(n);Rt(i=e.charCodeAt(n))?t[s]++:_t(i)&&t[as[s]]--}for(var r=e.length-1;r>=0;){var i;if(s=e.charAt(r),_t(i=e.charCodeAt(r))){var a=as[s];if(!(t[a]<0))break;t[a]++,r--}else{if(!Nt(i))break;r--}}return e.slice(0,r+1)}(m),t.type){case 0:if(64===r.charCodeAt(t.startIdx-1))return;switch(t.matchType){case 0:var g=Ot.exec(m);if(g&&(f+=g.index,m=m.slice(g.index)),!function(e){if(jt.test(e))return!1;var t=e.match($t);if(!t)return!1;var n=!!t[1],s=t[2];return!!n||!(-1===s.indexOf(".")||!/[A-Za-z]/.test(s))}(m))return;break;case 1:if(!function(e){var t=e.match(Ut);if(!t)return!1;var n=t[0].split(".");return!(n.length<2||!Ht(n[n.length-1]))}(m))return;break;case 2:if(p=m.split(zt,1)[0],!Jt.test(p))return;break;default:bt(t)}s.push(new Vt({tagBuilder:a,matchedText:m,offset:f,urlMatchType:is(t.matchType),url:m,protocolRelativeMatch:"//"===m.slice(0,2),stripPrefix:o,stripTrailingSlash:l,decodePercentEncoding:c}));break;case 1:Ht(m.split(".").pop())&&s.push(new en({tagBuilder:a,matchedText:m,offset:f,email:m.replace(Kt,"")}));break;case 2:m.length<=140&&s.push(new sn({tagBuilder:a,matchedText:m,offset:f,serviceName:u,hashtag:m.slice(1)}));break;case 3:n=m,rn[h].test(n)&&s.push(new ln({tagBuilder:a,matchedText:m,offset:f,serviceName:h,mention:m.slice(1)}));break;case 4:if(("+"===(d=m=m.replace(/ +$/g,"")).charAt(0)||cn.test(d))&&un.test(d)){var v=m.replace(/[^0-9,;#]/g,"");s.push(new pn({tagBuilder:a,matchedText:m,offset:f,number:v,plusSign:"+"===m.charAt(0)}))}break;default:bt(t)}}}function is(e){switch(e){case 0:return"scheme";case 1:return"tld";case 2:return"ipV4";default:bt(e)}}var as={")":"(","}":"{","]":"["};function os(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:0}}function ls(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:1}}function cs(e,t){return{type:4,startIdx:e,state:t,acceptStateReached:!1}}function us(e){return 0===e.type&&0===e.matchType}var hs=function(e){void 0===e&&(e={}),this.idx=void 0!==e.idx?e.idx:-1,this.type=e.type||"tag",this.name=e.name||"",this.isOpening=!!e.isOpening,this.isClosing=!!e.isClosing},ds=new hs,ps=function(e,t){this.charIdx=0,this.state=0,this.currentDataIdx=0,this.currentTag=ds,this.html=e,this.callbacks=t};function fs(e,t){"<"===t&&js(e)}function ms(e,t,n){"!"===t?e.state=13:"/"===t?(e.state=2,e.currentTag=new hs(ft(ft({},e.currentTag),{isClosing:!0}))):"<"===t?js(e):xt(n)?(e.state=3,e.currentTag=new hs(ft(ft({},e.currentTag),{isOpening:!0}))):(e.state=0,e.currentTag=ds)}function gs(e,t,n){Mt(n)?(e.currentTag=new hs(ft(ft({},e.currentTag),{name:Us(e)})),e.state=4):"<"===t?js(e):"/"===t?(e.currentTag=new hs(ft(ft({},e.currentTag),{name:Us(e)})),e.state=12):">"===t?(e.currentTag=new hs(ft(ft({},e.currentTag),{name:Us(e)})),$s(e)):xt(n)||St(n)||":"===t||Ps(e)}function vs(e,t,n){">"===t?Ps(e):xt(n)?e.state=3:Ps(e)}function bs(e,t,n){var s;Mt(n)||("/"===t?e.state=12:">"===t?$s(e):"<"===t?js(e):"="===t||Et(n)||(s=n)>=0&&s<=31||127==s?Ps(e):e.state=5)}function ys(e,t,n){Mt(n)?e.state=6:"/"===t?e.state=12:"="===t?e.state=7:">"===t?$s(e):"<"===t?js(e):Et(n)&&Ps(e)}function ws(e,t,n){Mt(n)||("/"===t?e.state=12:"="===t?e.state=7:">"===t?$s(e):"<"===t?js(e):Et(n)?Ps(e):e.state=5)}function ks(e,t,n){Mt(n)||('"'===t?e.state=8:"'"===t?e.state=9:/[>=`]/.test(t)?Ps(e):"<"===t?js(e):e.state=10)}function Cs(e,t){'"'===t&&(e.state=11)}function Ts(e,t){"'"===t&&(e.state=11)}function Is(e,t,n){Mt(n)?e.state=4:">"===t?$s(e):"<"===t&&js(e)}function xs(e,t,n){Mt(n)?e.state=4:"/"===t?e.state=12:">"===t?$s(e):"<"===t?js(e):(e.state=4,e.charIdx--)}function Ss(e,t){">"===t?(e.currentTag=new hs(ft(ft({},e.currentTag),{isClosing:!0})),$s(e)):Ps(e)}function Es(e){var t=e.html,n=e.charIdx;"--"===t.slice(n,n+2)?(e.charIdx++,e.currentTag=new hs(ft(ft({},e.currentTag),{type:"comment"})),e.state=14):"DOCTYPE"===t.slice(n,n+7).toUpperCase()?(e.charIdx+=6,e.currentTag=new hs(ft(ft({},e.currentTag),{type:"doctype"})),e.state=20):Ps(e)}function Ms(e,t){"-"===t?e.state=15:">"===t?Ps(e):e.state=16}function As(e,t){"-"===t?e.state=18:">"===t?Ps(e):e.state=16}function Ns(e,t){"-"===t&&(e.state=17)}function Rs(e,t){e.state="-"===t?18:16}function _s(e,t){">"===t?$s(e):"!"===t?e.state=19:"-"===t||(e.state=16)}function Ds(e,t){"-"===t?e.state=17:">"===t?$s(e):e.state=16}function Os(e,t){">"===t?$s(e):"<"===t&&js(e)}function Ps(e){e.state=0,e.currentTag=ds}function js(e){e.state=1,e.currentTag=new hs({idx:e.charIdx})}function $s(e){var t=e.html.slice(e.currentDataIdx,e.currentTag.idx);t&&e.callbacks.onText(t,e.currentDataIdx);var n=e.currentTag;"comment"===n.type?e.callbacks.onComment(n.idx):"doctype"===n.type?e.callbacks.onDoctype(n.idx):(n.isOpening&&e.callbacks.onOpenTag(n.name,n.idx),n.isClosing&&e.callbacks.onCloseTag(n.name,n.idx)),Ps(e),e.currentDataIdx=e.charIdx+1}function Us(e){var t=e.currentTag.idx+(e.currentTag.isClosing?2:1);return e.html.slice(t,e.charIdx).toLowerCase()}var Ws=function(){function e(t){var n;void 0===t&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=(null==(n=t.urls)&&(n=!0),gt(n)?{schemeMatches:n,tldMatches:n,ipV4Matches:n}:{schemeMatches:!gt(n.schemeMatches)||n.schemeMatches,tldMatches:!gt(n.tldMatches)||n.tldMatches,ipV4Matches:!gt(n.ipV4Matches)||n.ipV4Matches}),this.email=gt(t.email)?t.email:this.email,this.phone=gt(t.phone)?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=gt(t.newWindow)?t.newWindow:this.newWindow,this.stripPrefix=function(e){return null==e&&(e=!0),gt(e)?{scheme:e,www:e}:{scheme:!gt(e.scheme)||e.scheme,www:!gt(e.www)||e.www}}(t.stripPrefix),this.stripTrailingSlash=gt(t.stripTrailingSlash)?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=gt(t.decodePercentEncoding)?t.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=t.sanitizeHtml||!1;var s=this.mention;if(!1!==s&&-1===on.indexOf(s))throw new Error("invalid `mention` cfg '".concat(s,"' - see docs"));var r,i=this.hashtag;if(!1!==i&&-1===nn.indexOf(i))throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate="number"==typeof(r=t.truncate)?{length:r,location:"end"}:ft({length:Number.POSITIVE_INFINITY,location:"end"},r),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,n){return new e(n).link(t)},e.parse=function(t,n){return new e(n).parse(t)},e.prototype.parse=function(e){var t=this,n=["a","style","script"],s=0,r=[];return function(e,t){for(var n=new ps(e,t),s=e.length;n.charIdx<s;){var r=e.charAt(n.charIdx),i=e.charCodeAt(n.charIdx);switch(n.state){case 0:fs(n,r);break;case 1:ms(n,r,i);break;case 2:vs(n,r,i);break;case 3:gs(n,r,i);break;case 4:bs(n,r,i);break;case 5:ys(n,r,i);break;case 6:ws(n,r,i);break;case 7:ks(n,r,i);break;case 8:Cs(n,r);break;case 9:Ts(n,r);break;case 10:Is(n,r,i);break;case 11:xs(n,r,i);break;case 12:Ss(n,r);break;case 13:Es(n);break;case 14:Ms(n,r);break;case 15:As(n,r);break;case 16:Ns(n,r);break;case 17:Rs(n,r);break;case 18:_s(n,r);break;case 19:Ds(n,r);break;case 20:Os(n,r);break;default:bt(n.state)}n.charIdx++}var a,o;n.currentDataIdx<n.charIdx&&(o=(a=n).html.slice(a.currentDataIdx,a.charIdx),a.callbacks.onText(o,a.currentDataIdx),a.currentDataIdx=a.charIdx+1)}(e,{onOpenTag:function(e){n.indexOf(e)>=0&&s++},onText:function(e,n){if(0===s){var i=e.split(/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi),a=n;i.forEach(function(e,n){if(n%2==0){var s=t.parseText(e,a);r.push.apply(r,function(e,t,n){if(n||2===arguments.length)for(var s,r=0,i=t.length;r<i;r++)!s&&r in t||(s||(s=Array.prototype.slice.call(t,0,r)),s[r]=t[r]);return e.concat(s||Array.prototype.slice.call(t))}([],function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var s,r,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(s=i.next()).done;)a.push(s.value)}catch(o){r={error:o}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return a}(s),!1))}a+=e.length})}},onCloseTag:function(e){n.indexOf(e)>=0&&(s=Math.max(s-1,0))},onComment:function(){},onDoctype:function(){}}),r=this.compactMatches(r),r=this.removeUnwantedMatches(r)},e.prototype.compactMatches=function(e){e.sort(qs);for(var t=0;t<e.length-1;){var n=e[t],s=n.getOffset(),r=n.getMatchedText().length;if(t+1<e.length&&e[t+1].getOffset()===s){var i=e[t+1].getMatchedText().length>r?t:t+1;e.splice(i,1)}else t++}return e},e.prototype.removeUnwantedMatches=function(e){return this.hashtag||vt(e,function(e){return"hashtag"===e.getType()}),this.email||vt(e,function(e){return"email"===e.getType()}),this.phone||vt(e,function(e){return"phone"===e.getType()}),this.mention||vt(e,function(e){return"mention"===e.getType()}),this.urls.schemeMatches||vt(e,function(e){return"url"===e.getType()&&"scheme"===e.getUrlMatchType()}),this.urls.tldMatches||vt(e,function(e){return"url"===e.getType()&&"tld"===e.getUrlMatchType()}),this.urls.ipV4Matches||vt(e,function(e){return"url"===e.getType()&&"ipV4"===e.getUrlMatchType()}),e},e.prototype.parseText=function(e,t){t=t||0;for(var n=function(e,t){for(var n=new fn(e,t);n.charIdx<n.text.length;n.charIdx++){var s=e.charAt(n.charIdx),r=e.charCodeAt(n.charIdx);if(0===n.stateMachines.length)mn(n,s,r);else{for(var i=n.stateMachines.length-1;i>=0;i--){var a=n.stateMachines[i];switch(a.state){case 11:kn(n,a,r);break;case 12:Cn(n,a,r);break;case 0:gn(n,a,r);break;case 1:vn(n,a,r);break;case 2:bn(n,a,r);break;case 3:yn(n,a,r);break;case 4:wn(n,a,0,r);break;case 5:Tn(n,a,r);break;case 6:In(n,a,0,r);break;case 7:xn(n,a,0,r);break;case 13:Sn(n,a,r);break;case 14:En(n,a,r);break;case 8:Mn(n,a,r);break;case 9:An(n,a,r);break;case 10:Nn(n,a,r);break;case 15:Rn(n,a,s,r);break;case 16:_n(n,a,s,r);break;case 17:Dn(n,a,s,r);break;case 18:On(n,a,s,r);break;case 19:Pn(n,a,s,r);break;case 20:jn(n,a,r);break;case 21:$n(n,a,r);break;case 22:Un(n,a,r);break;case 23:Wn(n,a,r);break;case 24:qn(n,a,r);break;case 25:Bn(n,a,r);break;case 26:Ln(n,a,r);break;case 27:Gn(n,a,r);break;case 28:Fn(n,a,r);break;case 29:Hn(n,a,r);break;case 30:Jn(n,a,r);break;case 31:zn(n,a,r);break;case 32:Qn(n,a,s,r);break;case 33:Vn(n,a,r);break;case 34:Kn(n,a,r);break;case 35:Zn(n,a,r);break;case 36:Xn(n,a,0,r);break;case 37:Yn(n,a,s,r);break;case 38:es(n,a,0,r);break;case 39:ts(n,a,s,r);break;case 40:ns(n,a,r);break;case 41:ss(n,a,r);break;default:bt(a.state)}}if(!n.hasSchemeUrlMachine()&&n.charIdx>0&&Wt(r)){var o=n.text.charCodeAt(n.charIdx-1);Wt(o)||n.addMachine(os(n.charIdx,0))}}}for(var l=n.stateMachines.length-1;l>=0;l--)n.stateMachines.forEach(function(e){return rs(n,e)});return n.matches}(e,{tagBuilder:this.getTagBuilder(),stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding,hashtagServiceName:this.hashtag,mentionServiceName:this.mention||"twitter"}),s=0,r=n.length;s<r;s++)n[s].setOffset(t+n[s].getOffset());return n},e.prototype.link=function(e){if(!e)return"";this.sanitizeHtml&&(e=e.replace(/</g,"&lt;").replace(/>/g,"&gt;"));for(var t=this.parse(e),n=new Array(2*t.length+1),s=0,r=0,i=t.length;r<i;r++){var a=t[r];n.push(e.substring(s,a.getOffset())),n.push(this.createMatchReturnVal(a)),s=a.getOffset()+a.getMatchedText().length}return n.push(e.substring(s)),n.join("")},e.prototype.createMatchReturnVal=function(e){var t;return this.replaceFn&&(t=this.replaceFn.call(this.context,e)),"string"==typeof t?t:!1===t?e.getMatchedText():t instanceof wt?t.toAnchorString():e.buildTag().toAnchorString()},e.prototype.getTagBuilder=function(){var e=this.tagBuilder;return e||(e=this.tagBuilder=new Tt({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),e},e.version="4.1.5",e}();function qs(e,t){return e.getOffset()-t.getOffset()}function Bs(e,t=e){return{type:"autolink",url:e,text:t}}const Ls=st(/<!!mention:([^>\s]*?)\|(.*?)>/gm,([e,t,n])=>function(e,t){return{type:"mention",id:e,text:t}}(decodeURIComponent(t),n)),Gs=st(/<!!customemoji:(.*?)>/gm,([e,t])=>function(e){return{type:"customemoji",text:e}}(t)),Fs=st(/<((?:https?|mailto):.*?)\|(.*?)>/gi,([e,t,n])=>function(e,t=[]){return{type:"link",url:e,children:t}}(t,[n])),Hs=st(/<actionlink:([^|]+)[|]([^>]*)>/gi,([e,t,n])=>{const{action:s,params:r}=zs(t);return function(e,t,n=[]){return{type:"actionlink",action:e,params:t,children:n}}(s,r,[n])}),Js=st(/<actionbutton:([^|]+)[|]([^>]*)>/gi,([e,t,n])=>{const{action:s,params:r}=zs(t);return function(e,t,n=[]){return{type:"actionbutton",action:e,params:t,children:n}}(s,r,[n])});function zs(e){const t=e.indexOf("?");return-1===t?{action:e,params:{}}:{action:e.slice(0,t),params:Object.fromEntries(new URLSearchParams(e.slice(t)))}}const Ys=st(/(?:^|\n)(?:\s*[-*+]\s+[^\n]+(?:\n|$))+/g,([e])=>function(e=[]){return{type:"bulletlist",children:e}}([e.startsWith("\n")?e.slice(1):e])),Qs=st(/^\s*[-*+]\s+([^\n]+)(?:\n|$)/gm,([e,t])=>({type:"bulletpoint",children:[t]})),Vs=e=>{const t=/(?:^|[^-:/\w])([(+]?[0-9](?:[-_+ ().]?[0-9]){5,11}[0-9])(?:[^-:/\w]|$)/g;let n=0;const s=[];for(const r of ve(e,t)){const t=r[0],i=r[1],a=t.startsWith(i)?r.index:r.index+1;a-n>0&&s.push(e.substring(n,a));const o=Bs("tel:"+i.replace(/[^0-9+]/g,""),i);s.push(o),n=a+i.length}return n<e.length&&s.push(e.substring(n)),s},Ks=e=>Fs(e).flatMap(e=>"string"==typeof e?Zs(e):["<",...Zs(e.url),...Zs("|"+e.children[0]+">")]),Zs=e=>{const t=Ws.parse(e,{urls:!0,email:!0,phone:!1,hashtag:!1,mention:!1}),n=[];let s=0;for(const r of t){const t=r.getOffset(),i=r.getMatchedText(),a=i.length;let o=i;r instanceof en?o="mailto:"+r.getEmail():r instanceof Vt&&(o=r.getUrl()),t>s&&n.push(e.substring(s,t)),n.push(Bs(o,i)),s=t+a}return s<e.length&&n.push(e.substring(s)),n},Xs=["Codeblock","Codespan","FormattedLink","Wikitext","Autolink","Actions","Mention","Mention","BulletPoint","CustomEmoji"];const er=function(){const e=RegExp("[^\n]+\n?|\n","g");return t=>Array.from(t.match(e)||[])}();function tr(e,t={except:[]}){let n=function(e,t){let n=[e];return n=sr(n,t.multilineSteps),n=sr(n,[er]),n=sr(n,t.singlelineSteps),n=rr(n),n}(e,function(e={except:[]}){var t;const n={multilineSteps:[],singlelineSteps:[]},s=null!=(t=e.except)?t:Xs.filter(t=>!e.only.includes(t));return s.includes("BulletPoint")||n.multilineSteps.push(Ys,Qs),s.includes("Mention")||n.singlelineSteps.push(Ls),s.includes("CustomEmoji")||n.singlelineSteps.push(Gs),s.includes("Codespan")||n.multilineSteps.push(st(/```([^]+?)```/g,([e,t])=>({type:"codespan",text:t.replace(/<!!mention:.*?\|([^>]*)>/gim,"@$1").replace(/<!!customemoji:(.*?)>/gim,"$1")}))),s.includes("FormattedLink")||n.singlelineSteps.push(Fs),s.includes("Actions")||(n.singlelineSteps.push(Hs),n.singlelineSteps.push(Js)),s.includes("Wikitext")||n.singlelineSteps.push(ct),s.includes("Autolink")||n.singlelineSteps.push(Ks,Vs),n}(t));return n=ir(n,!1),n}function nr(e){return tr(e,{except:["FormattedLink","Actions"]})}function sr(e,t){return t.reduce((e,t)=>nt(e,t),e)}function rr(e){const t=[];let n=-1;for(const s of e)"string"==typeof s?"string"==typeof t[n]?t[n]+=s:t[++n]=s:t[++n]="children"in s?p(d({},s),{children:rr(s.children)}):s;return t}function ir(e,t){const n=[];let s=[];for(let r=0;r<e.length;r++){const i=e[r];if("string"==typeof i)s.push(i);else if("children"in i){s.length>0&&(n.push(s.join("")),s=[]);const e=ir(i.children,t||"link"===i.type||"actionbutton"===i.type||"actionlink"===i.type);n.push(p(d({},i),{children:e}))}else"autolink"===i.type&&t?s.push(i.text):(s.length>0&&(n.push(s.join("")),s=[]),n.push(i))}return s.length>0&&(n.push(s.join("")),s=[]),n}class ar{constructor(e,t,n,s){this.emoji=e,this.messageId=t,this.conversationId=n,this._realtimeClient=s}get brandedMessageId(){return this.messageId}get brandedConversationId(){return this.conversationId}add(){return y(this,null,function*(){const e=yield this._realtimeClient.call({method:"PUT",path:["conversations",this.brandedConversationId,"messages",this.brandedMessageId,"reactions",this.emoji,this._realtimeClient.userId],data:{}});_(`Add ${this.emoji} reaction on message ${this.messageId} in conversation ${this.conversationId}`,e)})}remove(){return y(this,null,function*(){const e=yield this._realtimeClient.call({method:"DELETE",path:["conversations",this.brandedConversationId,"messages",this.brandedMessageId,"reactions",this.emoji,this._realtimeClient.userId],data:{}});(e.ok||"server"!==e.where||404!==e.value.status)&&_(`Remove ${this.emoji} reaction from message ${this.messageId} in conversation ${this.conversationId}`,e)})}}class or{constructor(e,t,n){this.id=e,this.conversationId=t,this._realtimeClient=n}get brandedId(){return this.id}get brandedConversationId(){return this.conversationId}reaction(e){if("string"!=typeof e)throw new Error(`Creating ReactionRef failed because emoji "${e}" is not a string`);if(""===e)throw new Error(`Creating ReactionRef failed because emoji "${e}" is an empty string`);return this._realtimeClient.refs.reaction(this.brandedConversationId,this.brandedId,e)}get(){return y(this,null,function*(){const e=yield this._realtimeClient.call({method:"GET",path:["me","conversations",this.brandedConversationId,"messages",this.brandedId],data:{}});if(!e.ok&&"server"===e.where&&404===e.value.status)return null;if(!e.ok&&"server"===e.where&&403===e.value.status&&"NOT_A_PARTICIPANT"===e.value.errorCode)return null;const t=_("Get message "+this.id,e),n=yield this._realtimeClient.hydrateMessageData(t,this.brandedConversationId);return br("Get message "+this.id,n)})}edit(e){return y(this,null,function*(){const t={content:lr(e),custom:"string"==typeof e?void 0:e.custom},n=yield this._realtimeClient.call({method:"PATCH",path:["conversations",this.brandedConversationId,"messages",this.brandedId],data:t});_(`Edit message ${this.id} in conversation ${this.conversationId}`,n)})}delete(){return y(this,null,function*(){const e=yield this._realtimeClient.call({method:"DELETE",path:["conversations",this.brandedConversationId,"messages",this.brandedId],data:{}});(e.ok||"server"!==e.where||404!==e.value.status)&&_(`Delete message ${this.id} in conversation ${this.conversationId}`,e)})}}function lr(e){return"string"==typeof e?[{type:"text",children:tr(e)}]:"text"in e&&e.text?[{type:"text",children:tr(e.text)}]:"content"in e&&e.content?e.content:void 0}class cr{constructor(e,t){this.id=e,this._realtimeClient=t,this.uselessObjForTypeCheck={subject:null,photoUrl:null,welcomeMessages:null,custom:null,access:null,notify:null}}get brandedId(){return this.id}get brandedUserId(){return this._realtimeClient.userId}participant(e){if("string"==typeof e){if(""===e)throw new Error(`Creating ParticipantRef failed because ID "${e}" is an empty string`);return this._realtimeClient.refs.participant(this.brandedId,e)}if("brandedId"in e)return this._realtimeClient.refs.participant(this.brandedId,e.id);throw new Error(`Creating ParticipantRef failed because user "${e}" is not a string or a UserRef`)}message(e){if("string"!=typeof e)throw new Error(`Creating MessageRef failed because ID "${e}" is not a string`);if(""===e)throw new Error(`Creating MessageRef failed because ID "${e}" is an empty string`);return this._realtimeClient.refs.message(this.brandedId,e)}get(){return y(this,null,function*(){const e=this.subscribe(),t=yield e.connected.catch(()=>{throw new Error("GET Conversation failed, could not fetch conversation")});yield this._realtimeClient.sync();const n=e.state;if(e.unsubscribe(),"active"===n.type)return n.latestSnapshot;if("pending"===n.type)return t.latestSnapshot;if("unsubscribed"===n.type)return t.latestSnapshot;throw"error"===n.type?n.error:"Unreachable"})}set(e){return y(this,null,function*(){const t=this._realtimeClient.call({method:"PUT",path:["conversations",this.brandedId],data:e}),n=this._realtimeClient.call({method:"PUT",path:["conversations",this.brandedId,"participants",this.brandedUserId],data:e}),s=yield t;var r;!s.ok&&"server"===s.where&&403===s.value.status&&"UNAUTHORIZED_TO_EDIT"===s.value.errorCode&&(void 0===(r=e).subject&&void 0===r.photoUrl&&void 0===r.welcomeMessages&&null!==r.custom&&(void 0===r.custom||!Object.values(r.custom).some(e=>void 0!==e)))||_("Set conversation "+this.id,s);const i=yield n;!i.ok&&"server"===i.where&&403===i.value.status&&"UNAUTHORIZED_TO_EDIT_PARTICIPANT"===i.value.errorCode&&function(e){return void 0===e.access&&void 0===e.notify}(e)||_("Set your participation in conversation "+this.id,i)})}createIfNotExists(){return y(this,arguments,function*(e={}){const t=this._realtimeClient.call({method:"POST",path:["conversations",this.brandedId],data:e}),n=this._realtimeClient.call({method:"POST",path:["conversations",this.brandedId,"participants",this.brandedUserId],data:e}),s=yield t;(s.ok||"server"!==s.where||409!==s.value.status)&&_("Create conversation "+this.id,yield t);const r=yield n;(r.ok||"server"!==r.where||409!==r.value.status)&&_("Join conversation "+this.id,yield n)})}markAsRead(){return y(this,null,function*(){const e=yield this._realtimeClient.call({method:"POST",path:["me","conversations",this.brandedId,"read"],data:{}});_(`Mark ${this.id} as read`,e)})}markAsUnread(){return y(this,null,function*(){const e=yield this._realtimeClient.call({method:"POST",path:["me","conversations",this.brandedId,"unread"],data:{}});_(`Mark ${this.id} as unread`,e)})}send(e){return y(this,null,function*(){const t={content:ur(e),referencedMessageId:hr(e),custom:"string"==typeof e?void 0:e.custom,idempotencyKey:tt((new Date).getTime())},n=yield this._realtimeClient.call({method:"POST",path:["conversations",this.brandedId,"messages"],data:t}),s=_("Send message to conversation "+this.id,n);return this._realtimeClient.refs.message(this.brandedId,s.id)})}subscribeMessages(e){return this._realtimeClient.subscribe(["me","conversations",this.brandedId,"messages"],e)}subscribeParticipants(e){return this._realtimeClient.subscribe(["me","conversations",this.brandedId,"participants"],e)}subscribe(e){return this._realtimeClient.subscribe(["me","conversations",this.brandedId],e)}subscribeTyping(e){return this._realtimeClient.subscribe(["me","conversations",this.brandedId,"typing"],e)}markAsTyping(){return y(this,null,function*(){const e=yield this._realtimeClient.call({method:"POST",path:["me","conversations",this.brandedId,"typing"],data:{}});_(`Set user as typing in ${this.id}`,e)})}}function ur(e){return"string"==typeof e?[{type:"text",children:nr(e)}]:"text"in e?[{type:"text",children:nr(e.text)}]:e.content}function hr(e){if("string"==typeof e)return;const t=e.referencedMessage;return void 0!==t?"string"==typeof t?t:t.id:void 0}const dr="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},pr=globalThis.FinalizationRegistry,fr=void 0!==pr?pr:class{constructor(e){}register(e,t,n){}unregister(e){}};class mr{constructor(e){this.client=e,this.users=new Map,this.conversations=new Map,this.participants=new Map,this.messages=new Map,this.reactions=new Map,this.registry=new fr(({map:e,key:t})=>{e.delete(t)})}user(e){var t;const n=null==(t=this.users.get(e))?void 0:t.deref();if(n)return n;const s=H(new Xe(e,this.client));return this.users.set(e,new dr(s)),this.registry.register(s,{map:this.users,key:e}),s}conversation(e){var t;const n=null==(t=this.conversations.get(e))?void 0:t.deref();if(n)return n;const s=H(new cr(e,this.client));return this.conversations.set(e,new dr(s)),this.registry.register(s,{map:this.conversations,key:e}),s}participant(e,t){var n;const s=`[${e}][${t}]`,r=null==(n=this.participants.get(s))?void 0:n.deref();if(r)return r;const i=H(new et(t,e,this.client));return this.participants.set(s,new dr(i)),this.registry.register(i,{map:this.participants,key:s}),i}message(e,t){var n;const s=`[${e}][${t}]`,r=null==(n=this.messages.get(s))?void 0:n.deref();if(r)return r;const i=H(new or(t,e,this.client));return this.messages.set(s,new dr(i)),this.registry.register(i,{map:this.messages,key:s}),i}reaction(e,t,n){var s;const r=`[${e}][${t}][${n}]`,i=null==(s=this.reactions.get(r))?void 0:s.deref();if(i)return i;const a=H(new ar(n,t,e,this.client));return this.reactions.set(r,new dr(a)),this.registry.register(a,{map:this.reactions,key:r}),a}}class gr{constructor(e,t,n){this.userId=t,this.refs=new mr(this),this.alive=!0,this.connection=new Ke(e,n,this),n.onTokenRefreshFailed(()=>{this.destroy()})}call(e){return y(this,null,function*(){return this.alive?this.connection.call(e):M("SESSION_DESTROYED")})}subscribe(e,t){return this.connection.subscribe(e,t)}internalSubscribe(e){const t=this.connection.getOrCreateStore(e);return{store:t,unsubscribe:t.registerInternalSubscription()}}destroy(){this.alive=!1,this.connection.destroy()}isConnected(){return this.connection.isConnected()}sync(){return y(this,null,function*(){yield this.connection.sync()})}hydrateMessageData(e,t){return y(this,null,function*(){const n=null===e.senderId?Promise.resolve(E(null)):this.getUser(e.senderId),s=null===e.referencedMessageId?Promise.resolve(E(null)):this.getReferencedMessage(t,e.referencedMessageId),r=yield n;if(!r.ok)return r;const i=yield s;if(!i.ok)return i;var a,o,l;return E((a=e,o=r.value,l=i.value,H({id:a.id,type:a.type,sender:o,referencedMessage:l,custom:H(a.custom),createdAt:a.createdAt,editedAt:a.editedAt,origin:a.origin,content:a.content,reactions:Ae(a.reactions),plaintext:xe(a.content,{})})))})}hydrateConvData(e,t){return y(this,null,function*(){const n=this.listMessages(e.id,{limit:1},t),s=yield this.call({method:"GET",path:["me","conversations",e.id],data:{},headers:t});if(!s.ok&&"server"===s.where&&404===s.value.status)return E(null);const r=_("Get conversation "+e.id,s),i=br("Get last message in conversation "+e.id,yield n);var a,o;return E((a=r,o=0===i.length?null:i[0],H({id:a.id,subject:a.subject,photoUrl:a.photoUrl,welcomeMessages:H(a.welcomeMessages),custom:H(a.custom),createdAt:a.createdAt,joinedAt:a.joinedAt,lastMessageAt:a.lastMessageAt,unreadMessageCount:a.unreadMessageCount,isUnread:a.isUnread,access:a.access,notify:a.notify,lastMessage:o,readUntil:a.readUntil,everyoneReadUntil:a.everyoneReadUntil})))})}listMessages(e,t,n){return y(this,null,function*(){const s=yield this.call({method:"GET",path:["me","conversations",e,"messages"],data:t,headers:n});if(!s.ok)return vr(s,"Listing messages in "+e);const r=s.value.data.data,i=yield Promise.all(r.map(t=>this.hydrateMessageData(t,e))),a=i.find(e=>!e.ok);return void 0===a||a.ok?E(i.map(({value:e})=>e)):a})}getReferencedMessage(e,t){return y(this,null,function*(){const n=yield this.call({method:"GET",path:["me","conversations",e,"messages",t],data:{}});if(!n.ok&&"server"===n.where&&404===n.value.status)return E(null);if(!n.ok&&"server"===n.where&&403===n.value.status&&"NOT_A_PARTICIPANT"===n.value.errorCode)return E(null);if(!n.ok)return vr(n,`Fetching referenced message ${t} in conversation ${e}`);const s=n.value.data,r=yield this.getUser(s.senderId);if(!r.ok)return r;var i,a;return E((i=s,a=r.value,H({id:i.id,type:i.type,sender:a,referencedMessageId:i.referencedMessageId,custom:H(i.custom),createdAt:i.createdAt,editedAt:i.editedAt,origin:i.origin,content:i.content,reactions:Ae(i.reactions),plaintext:xe(i.content,{})})))})}getUser(e){return y(this,null,function*(){const t=yield this.call({method:"GET",path:["users",e],data:{includePrivateFields:!1}});return t.ok||"server"!==t.where||404!==t.value.status?t.ok?E(Ee(t.value.data)):vr(t,"Get user "+e):E(null)})}}function vr(e,t){return"server"===e.where?A(p(d({},e.value),{operation:t})):e}function br(e,t){var n;if(t.ok)return t.value;throw"SESSION_DESTROYED"===t.value?new Error(`${e} failed because the session was destroyed`):new Error(D(null!=(n=t.value.operation)?n:e,t.value))}class yr{constructor(e,t,n){this.realtimeWsApiUrl=e,this.internalHttpApiUrl=t,this.restApiHttpUrl=n}getBokensUrl(e,t,n){return this.internalHttpApiUrl+`/${e}/bokens/${encodeURIComponent(t)}?signature=${encodeURIComponent(null!=n?n:"")}`}getRealtimeWsUrl(e,t,n,s,r){const i=encodeURIComponent(t);return this.realtimeWsApiUrl+`/${e}/realtime/${i}?talkjs-client-build=${null!=r?r:"standalone"}&talkjs-core=${n}&talkjs-client-id=${s}`}static fromHost(e){var t;const n=new yr("wss://realtime.talkjs.com/v1","https://app.talkjs.com/api/v0","https://api.talkjs.com/v1");if(!e)return n;if("@currentHost"===e){if("undefined"==typeof location)throw new Error("You can only use @currentHost in a browser.");e=(null!=(t=window.top)?t:window).location.host}if(e.endsWith("talkjs.com")){const t=e.match(/^(?:\w+-)?([^.]+)\.talkjs\.com$/);if(t){const e=t[1];return["app","cdn","api","realtime"].includes(e)?n:new yr(`wss://realtime-${e}.talkjs.com/v1`,`https://app-${e}.talkjs.com/api/v0`,`https://api-${e}.talkjs.com/v1`)}return n}return e.includes("localhost")||e.includes("localtest.me")||/^\d+\.\d+\.\d+\.\d+(:\d+)?$/.test(e)?new yr(`ws://${e}/public_api/v1`,`http://${e}/api/v0`,`http://${e}/public_api/v1`):new yr(`wss://${e}/public_api/v1`,`https://${e}/api/v0`,`https://${e}/public_api/v1`)}}function wr({method:e,url:t,data:n,options:s,attempts:r,shouldRetry:i,authProvider:a,errorTracker:o,abortSignal:l}){var c;(!r||r<=0)&&(r=1);const u={"x-talkjs-client-build":"jssdk-dev","x-talkjs-client-date":"2026-01-27T09:14:45.741Z"};return n instanceof FormData||(u["Content-Type"]=null!=(c=null==s?void 0:s.contentType)?c:"application/json"),I(r,()=>y(null,null,function*(){if(a){const e=yield a.getToken();u.Authorization=`Bearer ${e}`}return fetch(t,{method:e,headers:u,body:n,signal:l}).then(e=>{if(e.ok)return e;throw e})}),{initialDelay:.2,log:void 0,shouldRetry:n=>y(null,null,function*(){return a&&401===n.status?(null==o||o.log(`401 error from ${e} ${t}, ${yield a.getToken()}`),a.invalidateAndRefresh(),!0):i?i(n):!("object"==typeof n&&"status"in n&&n.status>=400&&n.status<500)})}).catch(n=>{if(Math.random()<.1&&!t.toString().startsWith("https://capture.trackjs.com")){const s=`Network Error for ${e} ${t}`;"undefined"!=typeof window&&(n instanceof Response?n.clone().text().then(e=>null==o?void 0:o.log(`${s} ${n.status} ${e} (10% logged)`)):null==o||o.log(`${s} ${n} (10% logged)`)),console.error("[TalkJS]",s)}throw n})}class kr{constructor(e){var t,r,i,a;v(this,n),v(this,s),this._timeCreated=Date.now(),b(this,n,null!=(r=null==(t=globalThis.document)?void 0:t.referrer)?r:""),b(this,s,(null!=(a=null==(i=globalThis.location)?void 0:i.href)?a:globalThis.HermesInternal)?"React Native Hermes":""),this._trackJSData={customer:{application:"",correlationId:"",sessionId:"",token:"",userId:"",version:"dev-2026-01-27T09:14:45.741Z"},entry:"direct",environment:{age:Date.now()-this._timeCreated,dependencies:{},originalUrl:g(this,s),referrer:g(this,n),userAgent:window.navigator.userAgent},metadata:[],nav:[],network:[],url:g(this,s),stack:"",timestamp:(new Date).toISOString(),version:"dev-2026-01-27T09:14:45.741Z",throttled:0},this._url=`https://capture.trackjs.com/capture?token=${e}`,this._trackJSData.customer.token=e}setData({appId:e,meId:t,sessionId:n}){this._trackJSData.customer.userId=e,this._trackJSData.customer.sessionId=`${e}/${t}`,this._trackJSData.customer.correlationId=n}log(e){return y(this,null,function*(){try{const t=p(d({},this._trackJSData),{message:e});yield wr({method:"POST",url:this._url,data:JSON.stringify(t),options:{contentType:"text/plain"}})}catch(t){console.error("[TalkJS] Failed when sending an error report. Error: ",t)}})}}n=new WeakMap,s=new WeakMap;const Cr={log:e=>Promise.resolve(),setData:e=>{}};class Tr{constructor(e,t={}){this._onSubscription=t,this._handlers={};for(const n in e)Object.hasOwnProperty.call(e,n)&&(this._handlers[n]=[])}emit(e,t){for(const s of this._handlers[e])try{s(t)}catch(n){console.error(`[TalkJS] '${String(e)}' handler threw an error:`,n)}}emitAsync(e,t){return y(this,null,function*(){try{const n=this._handlers[e].map(e=>e(t));yield Promise.all(n)}catch(n){console.error(`[TalkJS] '${String(e)}' handler threw an error:`,n)}})}supports(e){return e in this._handlers}on(e,t){var n,s;if(!this.supports(e))throw new Error(`Unknown event type '${String(e)}'`);null==(s=(n=this._onSubscription)[e])||s.call(n),this._handlers[e].push(t)}off(e,t){if(!Object.hasOwnProperty.call(this._handlers,e))throw new Error(`Unknown event type '${String(e)}'`);const n=this._handlers[e].indexOf(t);-1!==n&&this._handlers[e].splice(n,1)}removeAllListeners(){for(const e in this._handlers)this._handlers[e]=[]}handles(e){return this._handlers[e].length>0}subscribe(e,t){return this.on(e,t),{unsubscribe:()=>this.off(e,t)}}}class Ir{constructor(e){this.handlers=e,this.tokenResult=null,this.pendingToken=null}getTokenResult(){return y(this,null,function*(){if(this.tokenResult)return this.tokenResult;if(this.pendingToken)return this.pendingToken.promise;const e=x();return this.pendingToken=e,this.handlers.onNeedToken(),e.promise})}setTokenResult(e){this.pendingToken&&(this.pendingToken.resolve(e),this.pendingToken=null),this.tokenResult=e,this.handlers.onChange(e)}refreshToken(){this.pendingToken||(this.pendingToken=x(),this.handlers.onNeedToken())}invalidateAndRefresh(){this.tokenResult=null,this.refreshToken()}}class xr{constructor(e,t,n,s){this.apiUrls=e,this.appId=t,this.userId=n,this.signature=s,this.inner=new Ir({onChange:e=>{e.ok?this.eventEmitter.emit("tokenChanged",e.value):this.emitTokenRefreshFailed(e.value)},onNeedToken:()=>y(this,null,function*(){if(this._usingBokens&&!this.signature&&!this._calledBokens&&(yield new Promise(e=>setTimeout(e,1))),this._usingBokens)yield this.sendBokenRequest().then(e=>this.inner.setTokenResult(E(e))).catch(e=>this.inner.setTokenResult(A(e)));else if(this.onNeedToken)this.onNeedToken();else{const e=M("Cannot refresh token, no `onNeedToken` provided.");this.inner.setTokenResult(e)}})}),this._usingBokens=!0,this._calledBokens=!1,this.onNeedToken=void 0,this.eventEmitter=new Tr({tokenChanged(e){},tokenRefreshFailed(e){},tokenAccepted(e){}}),this.sessionExpiryWarningTimeoutId=void 0;const r="undefined"!=typeof window&&e.restApiHttpUrl.includes("api.talkjs.com");this.errorTracker=r?new kr("970cd0be0fb74630b75c8451051299dc"):Cr}get usingBokens(){return this._usingBokens}getToken(){return y(this,null,function*(){const e=yield this.inner.getTokenResult();if(e.ok)return e.value;throw e.value})}checkCanSetAuth(){if(this._calledBokens)throw new Error("[TalkJS] Cannot switch to JWT authentication once connected to TalkJS servers. To use JWTs, call `setToken` or set `onNeedToken` before triggering any requests or mounting any components. We recommend setting up authentication in your app's entry point (App.jsx, main.js, or similar) so it runs first.")}setToken(e){this.checkCanSetAuth(),setTimeout(()=>this.checkJwt(e),200),this._usingBokens=!1,this.inner.setTokenResult(E(e))}setTokenError(e){this._usingBokens=!1,this.inner.setTokenResult(M(e))}refreshToken(){this.inner.refreshToken()}invalidateAndRefresh(){this.inner.invalidateAndRefresh()}setOnNeedToken(e){this.checkCanSetAuth(),this._usingBokens=!1,this.onNeedToken=e}onTokenChanged(e){return this.eventEmitter.on("tokenChanged",e),()=>{this.eventEmitter.off("tokenChanged",e)}}onTokenRefreshFailed(e){return this.eventEmitter.on("tokenRefreshFailed",e),()=>{this.eventEmitter.off("tokenRefreshFailed",e)}}emitTokenRefreshFailed(e){this.eventEmitter.emit("tokenRefreshFailed",e)}onTokenAccepted(e){return this.eventEmitter.on("tokenAccepted",e),()=>{this.eventEmitter.off("tokenAccepted",e)}}emitTokenAccepted(e){this.eventEmitter.emit("tokenAccepted",e)}clearScheduledRefresh(){this.sessionExpiryWarningTimeoutId&&clearTimeout(this.sessionExpiryWarningTimeoutId)}scheduleRefresh(e){if(this.clearScheduledRefresh(),null===e)return;const t=void 0!==this.onNeedToken;e<120&&!t?console.warn(`[TalkJS] TalkJS will stop working in ${e} seconds due to auth token expiry. Token expires in ${e} seconds, and cannot be refreshed because no \`onNeedToken\` callback was provided. Non-refreshable tokens are recommended to expire at least 24 hours in the future.`):e<120&&t?console.warn(`[TalkJS] TalkJS auth token will expire and need to be refreshed in ${e} seconds. Refreshable JWTs are recommended to expire at least 30 minutes in the future, to improve performance and reduce unnecessary refreshes.`):e<3300&&!t&&console.warn(`[TalkJS debug] TalkJS will stop working in ${Math.round(e/60)} minutes due to auth token expiry. Non-refreshable tokens are recommended to expire at least 24 hours in the future. Alternatively, set \`onNeedToken\` with a callback that will run whenever a new token is needed.`);const n=e>600?e-300:e/2,s=Math.min(1728e6,1e3*n);this.sessionExpiryWarningTimeoutId=setTimeout(()=>{void 0!==this.onNeedToken&&this.refreshToken()},s)}checkJwt(e){!function(e){if(!("string"==typeof e||e instanceof String)){if(void 0===e)throw"Token was undefined";throw"Token must be a string, got: "+e}}(e);const t=[];let n,s,r;if("string"==typeof e?n=e:t.push(`Token type is ${typeof e} instead of a string.`),n)try{const e=function(e){const t=e.split(".");if(3!==t.length)throw"Token does not contain exactly two `.`. Check that you generated your JWT correctly. It should be `<header>.<payload>.<signature>`.";return{header:Sr(t[0]),payload:Sr(t[1])}}(n);s=e.header,r=e.payload}catch(i){t.push(i)}if(s){const e=this.checkJwtHeader(s);t.push(...e)}if(r){const e=this.checkJwtPayload(r);t.push(...e)}if(t.length)if(this.usingBokens)this.errorTracker.log(`JWT Errors detected by AuthProvider when using bokens: ${t.join("\n")}`);else{console.warn("[TalkJS] Authentication token appears to be generated incorrectly. Will still attempt to authenticate, but TalkJS may not work as expected. See below for a description of any problems and how to fix them.");const n=t.length>1;t.forEach((e,t)=>{const s=n?`Reason ${t+1}:`:"Reason:";console.warn(`[TalkJS] ${s} ${e}`)}),console.warn(`[TalkJS]: Authentication token: "${e}"`)}}checkJwtHeader(e){const t=[],n=e.alg;return void 0===n?t.push('Token header must contain `"alg": "HS256"`, but no `alg` was specified.'):"string"!=typeof n?t.push(`Token header must contain \`"alg": "HS256"\`, but \`alg\` was ${typeof n} instead of a string. Make sure you wrap the value in "".`):"HS256"!==n&&t.push(`Token header must contain \`"alg": "HS256"\`, but \`alg\` was set to "${n}" instead. HS256 is the only supported algorithm.`),t}checkJwtPayload(e){const t=[],n=e.iss;void 0===n?t.push(`Token payload must contain an \`iss\` claim set to your app ID (${this.appId}), but \`iss\` was missing.`):"string"!=typeof n?t.push(`Token payload must contain an \`iss\` claim set to your app ID (${this.appId}), but \`iss\` was ${typeof n} instead of a string. Make sure you wrap the value in "".`):n!==this.appId&&t.push(`Token payload must contain an \`iss\` claim set to your app ID (${this.appId}), but \`iss\` was set to "${n}" instead.`);const s=e.sub;void 0===s?t.push(`Token payload must contain a \`sub\` claim set to your user ID (${this.userId}), but \`sub\` was missing.`):"string"!=typeof s?t.push(`Token payload must contain a \`sub\` claim set to your user ID (${this.userId}), but \`sub\` was ${typeof s} instead of a string. Make sure you wrap the value in "".`):s!==this.userId&&t.push(`Token payload must contain a \`sub\` claim set to your userId ID (${this.userId}), but \`sub\` was set to "${s}" instead.`);const r=e.tokenType;void 0===r?t.push('Token payload must contain a `"tokenType": "user"` claim, but no `tokenType` was specified.'):"string"!=typeof r?t.push(`Token payload must contain a \`"tokenType": "user"\` claim, but \`tokenType\` was ${typeof r} instead of a string. Make sure you wrap the value in "".`):"user"!==r&&t.push(`Token payload must contain a \`"tokenType": "user"\` claim, but \`tokenType\` was set to "${r}" instead.`);const i=e.exp;void 0===i||("number"!=typeof i?t.push(`Token payload contains an \`exp\` claim, but \`exp\` was ${typeof r} instead of a number. If set, \`exp\` should be the expiry date as a number of seconds since 1970-01-01. Don't wrap the value in "".`):i<1e9?t.push(`Token payload contains an \`exp\` claim, but \`exp\` is very small (${i}, representing ${new Date(1e3*i).toLocaleDateString()}). If set, \`exp\` should be the expiry date as a number of seconds since 1970-01-01.`):i>1e11?t.push(`Token payload contains an \`exp\` claim, but \`exp\` is very small (${i}, representing ${new Date(1e3*i).toLocaleDateString()}). If set, \`exp\` should be the expiry date as a number of seconds since 1970-01-01. Double-check that you are using seconds and not milliseconds or nanoseconds.`):i<(new Date).getTime()/1e3&&t.push(`Token payload contains an \`exp\` claim, but \`exp\` (${i}, representing ${new Date(1e3*i).toLocaleDateString()}) appears to be in the past, meaning the token will be rejected. This error can also happen if your device's clock is set incorrectly, in which case the token will still work.`));const a=e.nbf;return void 0===a||("number"!=typeof a?t.push(`Token payload contains a \`nbf\` (not-before) claim, but \`nbf\` was ${typeof r} instead of a number. If set, \`nbf\` should be the date when the JWT becomes valid, as a number of seconds since 1970-01-01.`):a>1e11&&t.push(`Token payload contains a \`nbf\` (not-before) claim, but \`nbf\` is very large (${a}, representing ${new Date(1e3*a).toLocaleDateString()}). If set, \`nbf\` should be the date when the JWT becomes valid, as a number of seconds since 1970-01-01. Double-check that you are using seconds and not milliseconds or nanoseconds.`)),t}sendBokenRequest(){return y(this,null,function*(){this._calledBokens=!0;let e=0;const t=this.apiUrls.getBokensUrl(this.appId,this.userId,this.signature),n=yield wr({method:"GET",url:t,attempts:1e4,shouldRetry:t=>{if(t instanceof Error)return!0;if(401===t.status)throw"Check that you provided a valid signature.";if(404===t.status)throw"Check that you specified the correct App ID.";if(429===t.status||502===t.status)return!0;if(t.status>=400&&t.status<500)throw`Unexpected HTTP ${t.status} response when fetching auth token. Check that you configured the session correctly.`;if(e++,e>=5)throw`Unexpected HTTP ${t.status} response when fetching auth token, retrying did not help.`;return!0},errorTracker:this.errorTracker});return(yield n.json()).boken})}}function Sr(e){try{const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=decodeURIComponent(atob(t).split("").map(e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)).join(""));return JSON.parse(n)}catch(t){throw`Could not base64-decode and JSON-parse token section: ${e}. Check that you base-64 encoded the section correctly.`}}const Er=new class{constructor(){this.registry={}}getOrCreate(e){const t=this.key(e),n=this.registry[t];if(n)return n;const s=new Mr(e);return this.registry[t]=s,s}deregister(e,t){const n=this.key({appId:e,userId:t});delete this.registry[n]}key({appId:e,userId:t}){return`${e}:${t}`}};class Mr{constructor(e){this._onNeedToken=void 0,function(e){function t(e,t){if(!e)throw new Error("[TalkJS] TalkSession: "+t)}t(e&&"object"==typeof e,"Expected an object argument in `getTalkSession`."),t(e.appId&&"string"==typeof e.appId,"The `appId` property of the `getTalkSession` options is required and it must be a non-empty string."),t("string"==typeof e.userId,"The `userId` property of the `getTalkSession` options is required and it must be a string."),void 0!==e.token&&t(e.token&&"string"==typeof e.token,"The `token` property of the `getTalkSession` options must be a non-empty string."),void 0!==e.tokenFetcher&&t("function"==typeof e.tokenFetcher,"The `tokenFetcher` property of the `getTalkSession` options must be a function.")}(e);const{appId:t,userId:n,token:s,tokenFetcher:r,signature:i}=e;this._appId=t,this._apiUrls=e.apiUrls?new yr(e.apiUrls.realtimeWsApiUrl,e.apiUrls.internalHttpApiUrl,e.apiUrls.restApiHttpUrl):yr.fromHost(e.host),this._authProvider=new xr(this._apiUrls,t,n,i),s&&this._authProvider.setToken(s),r&&this._authProvider.setOnNeedToken(()=>y(this,null,function*(){try{const e=yield r();this._authProvider.setToken(e)}catch(e){this._authProvider.setTokenError(`${e}`)}}));const a=Math.random().toString().split(".")[1];this._realtimeClient=new gr(this._apiUrls.getRealtimeWsUrl(t,n,"1.6.3",a,e.clientBuild),n,this._authProvider),this.currentUser=this.user(n),this._terminationReason=x(),this._terminationReason.promise.then(e=>{console.error(`[TalkJS] ${e}`)}),function(e,t){return y(this,null,function*(){return wr({method:"GET",url:`${t}/${e}`}).then(e=>y(null,null,function*(){return 200===e.status||404!==e.status&&(console.warn(`[TalkJS] Received unexpected ${e.status} status code when validating app ID. Assuming that the app ID is valid.`),!0)})).catch(e=>{if("string"!=typeof e&&"status"in e){const t=e;return 200===t.status||404!==t.status&&(console.warn(`[TalkJS] Received unexpected ${t.status} status code when validating app ID. Assuming that the app ID is valid.`),!0)}return console.warn("[TalkJS] Encountered network issues when validating app ID. Assuming that the app ID is valid."),!0})})}(this._appId,this._apiUrls.internalHttpApiUrl).then(e=>{e||this.terminate(new Error(`The app ID ${this._appId} does not exist. Make sure you are using the correct app ID as found on the TalkJS dashboard. App IDs are case-sensitive.`))}),this._authProvider.onTokenRefreshFailed(e=>{this.terminate(new Error(`Could not authenticate, cannot recover automatically: ${e}`))})}setToken(e){this._authProvider.setToken(e)}get onNeedToken(){return this._onNeedToken}set onNeedToken(e){this._onNeedToken=e,void 0===e?this._authProvider.setOnNeedToken(void 0):this._authProvider.setOnNeedToken(()=>{try{e()}catch(t){console.error("[TalkJS] error when calling `onNeedToken` - your auth token will expire soon.",t)}})}onError(e){const t=x();return Promise.race([t.promise,this._terminationReason.promise]).then(t=>{"UNSUBSCRIBED"!==t&&e(t)}),{unsubscribe:()=>t.resolve("UNSUBSCRIBED")}}user(e){if("string"!=typeof e)throw new Error(`Creating UserRef failed because ID "${e}" is not a string`);if(""===e)throw new Error(`Creating UserRef failed because ID "${e}" is an empty string`);return this._realtimeClient.refs.user(e)}conversation(e){if("string"!=typeof e)throw new Error(`Creating ConversationRef failed because ID "${e}" is not a string`);if(""===e)throw new Error(`Creating ConversationRef failed because ID "${e}" is an empty string`);return this._realtimeClient.refs.conversation(e)}subscribeConversations(e){return this._realtimeClient.subscribe(["me","conversations"],e)}searchMessages(e){let t;return{setQuery:n=>t&&t.searchString===n?t.currentState:(t&&t.cancel(),n&&""!==n?(t=new Nr(e,n,`${this._apiUrls.restApiHttpUrl}/${this._appId}/me/messages/search`,e=>y(this,null,function*(){const[t,n]=yield Promise.all([this.conversation(e.conversationId).get(),this._realtimeClient.hydrateMessageData(e,e.conversationId)]);return null===t?M("Message belongs to nonexistent conversation"):n.ok?E({conversation:t,message:n.value}):n}),this._authProvider),t.loadMore(3)):(t=void 0,null==e||e([],"loadedAll"),Promise.resolve({results:[],loadedAll:!0}))),loadMore:e=>t?t.loadMore(null!=e?e:10):Promise.resolve({results:[],loadedAll:!0})}}searchConversations(e){let t;return{setQuery:n=>t&&t.searchString===n?t.currentState:(t&&t.cancel(),n&&""!==n?(t=new Nr(e,n,`${this._apiUrls.restApiHttpUrl}/${this._appId}/me/conversations/search`,e=>y(this,null,function*(){const t=yield this._realtimeClient.hydrateConvData(e);if(!t.ok)return t;const n=t.value;return null===n?A({status:404,errorCode:"CONVERSATION_NOT_FOUND",reasons:["No conversation with that ID was found"]}):E(n)}),this._authProvider),t.loadMore(3)):(t=void 0,null==e||e([],"loadedAll"),Promise.resolve({results:[],loadedAll:!0}))),loadMore:e=>t?t.loadMore(null!=e?e:10):Promise.resolve({results:[],loadedAll:!0})}}terminate(e){Er.deregister(this._appId,this.currentUser.id),this._terminationReason.resolve(e),this._realtimeClient.destroy()}_isConnected(){return this._realtimeClient.isConnected()}uploadFile(e,t){return Ar(`${this._apiUrls.restApiHttpUrl}/${this._appId}/files`,this._authProvider,e,t)}uploadImage(e,t){return Ar(`${this._apiUrls.restApiHttpUrl}/${this._appId}/files`,this._authProvider,e,d({subtype:"image"},t))}uploadVideo(e,t){return Ar(`${this._apiUrls.restApiHttpUrl}/${this._appId}/files`,this._authProvider,e,d({subtype:"video"},t))}uploadAudio(e,t){return Ar(`${this._apiUrls.restApiHttpUrl}/${this._appId}/files`,this._authProvider,e,d({subtype:"audio"},t))}uploadVoice(e,t){return Ar(`${this._apiUrls.restApiHttpUrl}/${this._appId}/files`,this._authProvider,e,d({subtype:"voice"},t))}}function Ar(e,t,n,s){return y(this,arguments,function*(e,t,n,{subtype:s,filename:r,width:i,height:a,duration:o}){const l=new FormData;return l.set("file",n,r),void 0!==s&&l.set("subtype",s),void 0!==i&&l.set("width",i.toString()),void 0!==a&&l.set("height",a.toString()),void 0!==o&&l.set("duration",o.toString()),wr({method:"POST",url:e,data:l,authProvider:t,errorTracker:t.errorTracker}).then(e=>e.json()).then(e=>e.fileToken).catch(e=>y(null,null,function*(){if(e instanceof Response){const t=yield e.json(),n=`Unexpected response when uploading file, status code ${e.status} ${t.errorCode}, ${t.reasons}`;throw new Error(n)}throw e}))})}class Nr{constructor(e,t,n,s,r){this.onResults=e,this.searchString=t,this.baseUrl=n,this.hydrateData=s,this.authProvider=r,this.error=void 0,this.lastCompletedQueryState={results:[],loadedAll:!1},this.currentCursor=void 0,this.cancelQuery=()=>{},null==e||e([],"searching")}get currentState(){return this.loadingDeferred?this.loadingDeferred.promise:Promise.resolve(this.lastCompletedQueryState)}cancel(){this.cancelQuery()}buildUrl(e){const t=new URL(this.baseUrl);return void 0===this.currentCursor&&t.searchParams.append("searchString",encodeURIComponent(this.searchString)),void 0!==this.currentCursor&&t.searchParams.append("cursor",this.currentCursor),t.searchParams.append("limit",e.toString()),t.toString()}loadMore(e){return y(this,null,function*(){var t,n;if(this.error)throw this.error;if(this.loadingDeferred)return this.loadingDeferred.promise;if(this.lastCompletedQueryState.loadedAll)return Promise.resolve(this.lastCompletedQueryState);this.loadingDeferred=x(),this.loadingDeferred.promise.catch(()=>{});const s=new AbortController;this.cancelQuery=()=>{s.abort()};const r=this.buildUrl(e),i=[],a=yield this._performSearch(r,s,e=>{const t=this.hydrateData(e);i.push(t),void 0!==this.onResults&&Promise.all(i).then(e=>{const t=R(e),n=H([...this.lastCompletedQueryState.results,...t]);this.onResults(n,"searching")})}),o=a.ok?a.value:void 0;if(yield Promise.all(i).then(e=>{var t;const n=R(e),s=H([...this.lastCompletedQueryState.results,...n]),r=void 0===o;this.lastCompletedQueryState=H({results:s,loadedAll:r}),this.currentCursor=o;const i=r?"loadedAll":"canLoadMore";null==(t=this.onResults)||t.call(this,s,i)}),a.ok)return null==(t=this.loadingDeferred)||t.resolve(this.lastCompletedQueryState),this.loadingDeferred=void 0,this.lastCompletedQueryState;throw null==(n=this.loadingDeferred)||n.reject(a.value),this.loadingDeferred=void 0,this.error=a.value,a.value})}_performSearch(e,t,n){return y(this,null,function*(){let s;return wr({method:"GET",url:e,authProvider:this.authProvider,errorTracker:this.authProvider.errorTracker,abortSignal:t.signal}).then(e=>y(this,null,function*(){if(!e.body)return A("Search response was missing body");const t=e.body.getReader(),r=new TextDecoder;let i="",a=!0;const o=(e,t)=>{if(a)a=!1;else try{if(e.startsWith("]")){const t=`{"data":[${e}`,n=JSON.parse(t);return void(s=n.cursor)}let n=e;n.startsWith(",")&&(n=n.slice(1)),t(JSON.parse(n))}catch(n){console.warn("[TalkJS] Error during search, received unexpected data, ignoring. Some search results may be missing.")}};for(;;){const{done:e,value:s}=yield t.read();if(e)break;i+=r.decode(s,{stream:!0});const a=i.split("\n");i=a.pop()||"";for(const t of a)o(t,n)}i+=r.decode();const l=i.split("\n");for(const e of l)o(e,n);return E(s)})).catch(e=>y(this,null,function*(){if(e instanceof DOMException&&"AbortError"===e.name)return E(void 0);if(e instanceof Response){const t=yield e.clone().json();return A(D("Search",{status:e.status,errorCode:t.errorCode,reasons:t.reasons}))}return A(e)}))})}}exports.getTalkSession=function(e){if(!e)throw new Error("[TalkJS] Must provide an options object to `getTalkSession`");return e.forceCreateNew?new Mr(e):Er.getOrCreate(e)},exports.registerPolyfills=function({WebSocket:e}){O=e};
2
2
  //# sourceMappingURL=talkSession.cjs.map