@developer.notchatbot/webchat 1.2.11 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/types.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export interface SendMessagePayload {
|
|
|
13
13
|
};
|
|
14
14
|
chatbotUid: string;
|
|
15
15
|
newMessages: any[];
|
|
16
|
+
note?: string;
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* Creates a fallback bot message for error scenarios
|
|
@@ -30,6 +31,7 @@ export declare const createFallbackMessage: () => Message;
|
|
|
30
31
|
*/
|
|
31
32
|
export declare const buildMessagePayload: (conversationId: string, messages: Message[], newMessages: Message[], config: {
|
|
32
33
|
apiKey: string;
|
|
34
|
+
note?: string;
|
|
33
35
|
}, sessionId: string) => SendMessagePayload;
|
|
34
36
|
/**
|
|
35
37
|
* Sends messages to the chat API
|
|
@@ -16423,7 +16423,8 @@ const um = /* @__PURE__ */ Lu(lm), Mo = (e, t, n, r, o, i) => Pe(void 0, null, f
|
|
|
16423
16423
|
conversationId: e,
|
|
16424
16424
|
conversation: l,
|
|
16425
16425
|
chatbotUid: r.apiKey,
|
|
16426
|
-
newMessages: a
|
|
16426
|
+
newMessages: a,
|
|
16427
|
+
note: r.note
|
|
16427
16428
|
};
|
|
16428
16429
|
}, wd = (e) => Pe(void 0, null, function* () {
|
|
16429
16430
|
try {
|
|
@@ -16612,7 +16613,7 @@ También puedes pedir hablar con nuestro equipo de los sueños!`, xd = (e) => ({
|
|
|
16612
16613
|
f,
|
|
16613
16614
|
be,
|
|
16614
16615
|
ae,
|
|
16615
|
-
{ apiKey: e.apiKey || "" },
|
|
16616
|
+
{ apiKey: e.apiKey || "", note: e.note },
|
|
16616
16617
|
P
|
|
16617
16618
|
), ve = yield wd(ce);
|
|
16618
16619
|
if (ve) {
|
|
@@ -142,8 +142,8 @@ Please report this to https://github.com/markedjs/marked.`,e){const r="<p>An err
|
|
|
142
142
|
`+M+`
|
|
143
143
|
`+W+`
|
|
144
144
|
`+_+`
|
|
145
|
-
`;G.mac=G.mac||h(X,V),a.default.logAction(a.default.LOG_MINOR,"Auth.getTokenRequest()","generated signed request"),T(null,G)})},I.prototype.getAuthParams=function(O){this.method=="basic"?O(null,{key:this.key}):this._ensureValidAuthCredentials(!1,function(A,T){if(A){O(A);return}if(!T)throw new Error("Auth.getAuthParams(): _ensureValidAuthCredentials returned no error or tokenDetails");O(null,{access_token:T.token})})},I.prototype.getAuthHeaders=function(O){this.method=="basic"?O(null,{authorization:"Basic "+this.basicKey}):this._ensureValidAuthCredentials(!1,function(A,T){if(A){O(A);return}if(!T)throw new Error("Auth.getAuthParams(): _ensureValidAuthCredentials returned no error or tokenDetails");O(null,{authorization:"Bearer "+l.toBase64(T.token)})})},I.prototype.getTimestamp=function(O,A){!this.isTimeOffsetSet()&&(O||this.authOptions.queryTime)?this.client.time(A):A(null,this.getTimestampUsingOffset())},I.prototype.getTimestampUsingOffset=function(){return l.now()+(this.client.serverTimeOffset||0)},I.prototype.isTimeOffsetSet=function(){return this.client.serverTimeOffset!==null},I.prototype._saveBasicOptions=function(O){this.method="basic",this.key=O.key,this.basicKey=l.toBase64(O.key),this.authOptions=O||{},"clientId"in O&&this._userSetClientId(O.clientId)},I.prototype._saveTokenOptions=function(O,A){this.method="token",O&&(this.tokenParams=O),A&&(A.token&&(A.tokenDetails=typeof A.token=="string"?{token:A.token}:A.token),A.tokenDetails&&(this.tokenDetails=A.tokenDetails),"clientId"in A&&this._userSetClientId(A.clientId),this.authOptions=A)},I.prototype._ensureValidAuthCredentials=function(O,A){var T=this,j=this.tokenDetails;if(j){if(this._tokenClientIdMismatch(j.clientId)){A(new m.default("Mismatch between clientId in token ("+j.clientId+") and current clientId ("+this.clientId+")",40102,403));return}if(!this.isTimeOffsetSet()||!j.expires||j.expires>=this.getTimestampUsingOffset()){a.default.logAction(a.default.LOG_MINOR,"Auth.getToken()","using cached token; expires = "+j.expires),A(null,j);return}a.default.logAction(a.default.LOG_MINOR,"Auth.getToken()","deleting expired token"),this.tokenDetails=null}if((this.waitingForTokenRequest||(this.waitingForTokenRequest=d.default.create())).push(A),!(this.currentTokenRequestId!==null&&!O)){var B=this.currentTokenRequestId=L();this.requestToken(this.tokenParams,this.authOptions,function(z,$){if(T.currentTokenRequestId>B){a.default.logAction(a.default.LOG_MINOR,"Auth._ensureValidAuthCredentials()","Discarding token request response; overtaken by newer one");return}T.currentTokenRequestId=null;var V=T.waitingForTokenRequest||b;if(T.waitingForTokenRequest=null,z){V(z);return}V(null,T.tokenDetails=$)})}},I.prototype._userSetClientId=function(O){if(typeof O=="string"||O===null){if(O==="*")throw new m.default('Can’t use "*" as a clientId as that string is reserved. (To change the default token request behaviour to use a wildcard clientId, instantiate the library with {defaultTokenParams: {clientId: "*"}}), or if calling authorize(), pass it in as a tokenParam: authorize({clientId: "*"}, authOptions)',40012,400);var A=this._uncheckedSetClientId(O);if(A)throw A}else throw new m.default("clientId must be either a string or null",40012,400)},I.prototype._uncheckedSetClientId=function(O){if(this._tokenClientIdMismatch(O)){var A="Unexpected clientId mismatch: client has "+this.clientId+", requested "+O,T=new m.default(A,40102,401);return a.default.logAction(a.default.LOG_ERROR,"Auth._uncheckedSetClientId()",A),T}else return this.clientId=this.tokenParams.clientId=O,null},I.prototype._tokenClientIdMismatch=function(O){return!!(this.clientId&&this.clientId!=="*"&&O&&O!=="*"&&this.clientId!==O)},I.isTokenErr=function(O){return O.code&&O.code>=40140&&O.code<40150},I.prototype.revokeTokens=function(O,A,T){if(w(this.client.options))throw new m.default("Cannot revoke tokens when using token auth",40162,401);var j=this.client.options.keyName,B;if(typeof A=="function"?(T=A,B={}):B=A!=null?A:{},T===void 0){if(this.client.options.promises)return l.promisify(this,"revokeTokens",[O,B]);T=b}var z=T,$=i.__assign({targets:O.map(function(D){return"".concat(D.type,":").concat(D.value)})},B),V=this.client.options.useBinaryProtocol?l.Format.msgpack:l.Format.json,G=l.defaultPostHeaders(this.client.options,V);this.client.options.headers&&l.mixin(G,this.client.options.headers);var M=l.encodeBody($,V);C.default.post(this.client,"/keys/".concat(j,"/revokeTokens"),M,G,{newBatchResponse:"true"},null,function(D,U,_,W){if(D){z(D);return}var X=W?U:l.decodeBody(U,V);z(null,X)})},I}();r.default=N},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a.Get="get",a.Delete="delete",a.Post="post",a.Put="put",a.Patch="patch"})(i||(i={})),r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.HttpPaginatedResponse=r.PaginatedResult=void 0;var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(2)),d=i.__importDefault(o(15)),m=i.__importDefault(o(14));function x(P){var b=P.match(/^\.\/(\w+)\?(.*)$/);return b&&b[2]&&a.parseQueryString(b[2])}function R(P){typeof P=="string"&&(P=P.split(","));for(var b={},p=0;p<P.length;p++){var g=P[p].match(/^\s*<(.+)>;\s*rel="(\w+)"$/);if(g){var S=x(g[1]);S&&(b[g[2]]=S)}}return b}function y(P,b,p){return!(p&&(b||typeof P.code=="number"))}var E=function(){function P(b,p,g,S,h,f){this.rest=b,this.path=p,this.headers=g,this.envelope=S!=null?S:null,this.bodyHandler=h,this.useHttpPaginatedResponse=f||!1}return P.prototype.get=function(b,p){var g=this;d.default.get(this.rest,this.path,this.headers,b,this.envelope,function(S,h,f,c,s){g.handlePage(S,h,f,c,s,p)})},P.prototype.delete=function(b,p){var g=this;d.default.delete(this.rest,this.path,this.headers,b,this.envelope,function(S,h,f,c,s){g.handlePage(S,h,f,c,s,p)})},P.prototype.post=function(b,p,g){var S=this;d.default.post(this.rest,this.path,p,this.headers,b,this.envelope,function(h,f,c,s,w){g&&S.handlePage(h,f,c,s,w,g)})},P.prototype.put=function(b,p,g){var S=this;d.default.put(this.rest,this.path,p,this.headers,b,this.envelope,function(h,f,c,s,w){g&&S.handlePage(h,f,c,s,w,g)})},P.prototype.patch=function(b,p,g){var S=this;d.default.patch(this.rest,this.path,p,this.headers,b,this.envelope,function(h,f,c,s,w){g&&S.handlePage(h,f,c,s,w,g)})},P.prototype.handlePage=function(b,p,g,S,h,f){if(b&&y(b,p,this.useHttpPaginatedResponse)){l.default.logAction(l.default.LOG_ERROR,"PaginatedResource.handlePage()","Unexpected error getting resource: err = "+a.inspectError(b)),f==null||f(b);return}var c,s,w;try{c=h==m.default.NoContent?[]:this.bodyHandler(p,g||{},S)}catch(v){f==null||f(b||v);return}g&&(s=g.Link||g.link)&&(w=R(s)),this.useHttpPaginatedResponse?f(null,new C(this,c,g||{},h,w,b)):f(null,new u(this,c,w))},P}(),u=function(){function P(b,p,g){var S=this;this.resource=b,this.items=p;var h=this;g&&("first"in g&&(this.first=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"first",[]);h.get(g.first,f)}),"current"in g&&(this.current=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"current",[]);h.get(g.current,f)}),this.next=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"next",[]);"next"in g?h.get(g.next,f):f(null,null)},this.hasNext=function(){return"next"in g},this.isLast=function(){var f;return!(!((f=S.hasNext)===null||f===void 0)&&f.call(S))})}return P.prototype.get=function(b,p){var g=this.resource;d.default.get(g.rest,g.path,g.headers,b,g.envelope,function(S,h,f,c,s){g.handlePage(S,h,f,c,s,p)})},P}();r.PaginatedResult=u;var C=function(P){i.__extends(b,P);function b(p,g,S,h,f,c){var s=P.call(this,p,g,f)||this;return s.statusCode=h,s.success=h<300&&h>=200,s.headers=S,s.errorCode=c&&c.code,s.errorMessage=c&&c.message,s}return b.prototype.toJSON=function(){return{items:this.items,statusCode:this.statusCode,success:this.success,headers:this.headers,errorCode:this.errorCode,errorMessage:this.errorMessage}},b}(u);r.HttpPaginatedResponse=C,r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.isRetriable=void 0;var i=o(0),a=i.__importDefault(o(4)),l={DISCONNECTED:80003,SUSPENDED:80002,FAILED:8e4,CLOSING:80017,CLOSED:80017,UNKNOWN_CONNECTION_ERR:50002,UNKNOWN_CHANNEL_ERR:50001},d={disconnected:function(){return a.default.fromValues({statusCode:400,code:l.DISCONNECTED,message:"Connection to server temporarily unavailable"})},suspended:function(){return a.default.fromValues({statusCode:400,code:l.SUSPENDED,message:"Connection to server unavailable"})},failed:function(){return a.default.fromValues({statusCode:400,code:l.FAILED,message:"Connection failed or disconnected by server"})},closing:function(){return a.default.fromValues({statusCode:400,code:l.CLOSING,message:"Connection closing"})},closed:function(){return a.default.fromValues({statusCode:400,code:l.CLOSED,message:"Connection closed"})},unknownConnectionErr:function(){return a.default.fromValues({statusCode:500,code:l.UNKNOWN_CONNECTION_ERR,message:"Internal connection error"})},unknownChannelErr:function(){return a.default.fromValues({statusCode:500,code:l.UNKNOWN_CONNECTION_ERR,message:"Internal channel error"})}};function m(x){return!x.statusCode||!x.code||x.statusCode>=500?!0:Object.values(l).includes(x.code)}r.isRetriable=m,r.default=d},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a[a.REQ_SEND=0]="REQ_SEND",a[a.REQ_RECV=1]="REQ_RECV",a[a.REQ_RECV_POLL=2]="REQ_RECV_POLL",a[a.REQ_RECV_STREAM=3]="REQ_RECV_STREAM"})(i||(i={})),r.default=i},function(n,r,o){(function(i,a){n.exports=a(o(6),o(5),o(58),o(11),o(40),o(32),o(25),o(27),o(28),o(59),o(60))})(this,function(i){return i})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(2)),l=function(){function d(m){this.members=m||[]}return d.prototype.call=function(){for(var m=[],x=0;x<arguments.length;x++)m[x]=arguments[x];for(var R=0,y=this.members;R<y.length;R++){var E=y[R];if(E)try{E.apply(void 0,m)}catch(u){a.default.logAction(a.default.LOG_ERROR,"Multicaster multiple callback handler","Unexpected exception: "+u+"; stack = "+u.stack)}}},d.prototype.push=function(){for(var m,x=[],R=0;R<arguments.length;R++)x[R]=arguments[R];(m=this.members).push.apply(m,x)},d.create=function(m){var x=new d(m);return Object.assign(function(){for(var R=[],y=0;y<arguments.length;y++)R[y]=arguments[y];return x.call.apply(x,R)},{push:function(R){return x.push(R)}})},d}();r.default=l},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){(function(){var a=i,l=a.lib,d=l.Base,m=a.enc,x=m.Utf8,R=a.algo;R.HMAC=d.extend({init:function(y,E){y=this._hasher=new y.init,typeof E=="string"&&(E=x.parse(E));var u=y.blockSize,C=u*4;E.sigBytes>C&&(E=y.finalize(E)),E.clamp();for(var P=this._oKey=E.clone(),b=this._iKey=E.clone(),p=P.words,g=b.words,S=0;S<u;S++)p[S]^=1549556828,g[S]^=909522486;P.sigBytes=b.sigBytes=C,this.reset()},reset:function(){var y=this._hasher;y.reset(),y.update(this._iKey)},update:function(y){return this._hasher.update(y),this},finalize:function(y){var E=this._hasher,u=E.finalize(y);E.reset();var C=E.finalize(this._oKey.clone().concat(u));return C}})})()})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(10)),l=i.__importStar(o(1)),d=i.__importDefault(o(7)),m=i.__importDefault(o(2)),x=i.__importDefault(o(21)),R=i.__importDefault(o(4)),y=i.__importDefault(o(3)),E=a.default.Action,u=a.default.fromValues({action:E.CLOSE}),C=a.default.fromValues({action:E.DISCONNECT}),P=function(b){i.__extends(p,b);function p(g,S,h,f){var c=b.call(this)||this;return f&&(h.format=void 0,h.heartbeats=!0),c.connectionManager=g,g.registerProposedTransport(c),c.auth=S,c.params=h,c.timeouts=h.options.timeouts,c.format=h.format,c.isConnected=!1,c.isFinished=!1,c.isDisposed=!1,c.maxIdleInterval=null,c.idleTimer=null,c.lastActivity=null,c}return p.prototype.connect=function(){},p.prototype.close=function(){this.isConnected&&this.requestClose(),this.finish("closed",x.default.closed())},p.prototype.disconnect=function(g){this.isConnected&&this.requestDisconnect(),this.finish("disconnected",g||x.default.disconnected())},p.prototype.fail=function(g){this.isConnected&&this.requestDisconnect(),this.finish("failed",g||x.default.failed())},p.prototype.finish=function(g,S){var h;this.isFinished||(this.isFinished=!0,this.isConnected=!1,this.maxIdleInterval=null,clearTimeout((h=this.idleTimer)!==null&&h!==void 0?h:void 0),this.idleTimer=null,this.emit(g,S),this.dispose())},p.prototype.onProtocolMessage=function(g){switch(m.default.shouldLog(m.default.LOG_MICRO)&&m.default.logAction(m.default.LOG_MICRO,"Transport.onProtocolMessage()","received on "+this.shortName+": "+a.default.stringify(g)+"; connectionId = "+this.connectionManager.connectionId),this.onActivity(),g.action){case E.HEARTBEAT:m.default.logAction(m.default.LOG_MICRO,"Transport.onProtocolMessage()",this.shortName+" heartbeat; connectionId = "+this.connectionManager.connectionId),this.emit("heartbeat",g.id);break;case E.CONNECTED:this.onConnect(g),this.emit("connected",g.error,g.connectionId,g.connectionDetails,g);break;case E.CLOSED:this.onClose(g);break;case E.DISCONNECTED:this.onDisconnect(g);break;case E.ACK:this.emit("ack",g.msgSerial,g.count);break;case E.NACK:this.emit("nack",g.msgSerial,g.count,g.error);break;case E.SYNC:this.connectionManager.onChannelMessage(g,this);break;case E.ACTIVATE:break;case E.AUTH:this.auth.authorize(function(S){S&&m.default.logAction(m.default.LOG_ERROR,"Transport.onProtocolMessage()","Ably requested re-authentication, but unable to obtain a new token: "+l.inspectError(S))});break;case E.ERROR:if(m.default.logAction(m.default.LOG_MINOR,"Transport.onProtocolMessage()","received error action; connectionId = "+this.connectionManager.connectionId+"; err = "+y.default.Config.inspect(g.error)+(g.channel?", channel: "+g.channel:"")),g.channel===void 0){this.onFatalError(g);break}this.connectionManager.onChannelMessage(g,this);break;default:this.connectionManager.onChannelMessage(g,this)}},p.prototype.onConnect=function(g){if(this.isConnected=!0,!g.connectionDetails)throw new Error("Transport.onConnect(): Connect message recieved without connectionDetails");var S=g.connectionDetails.maxIdleInterval;S&&(this.maxIdleInterval=S+this.timeouts.realtimeRequestTimeout,this.onActivity())},p.prototype.onDisconnect=function(g){var S=g&&g.error;m.default.logAction(m.default.LOG_MINOR,"Transport.onDisconnect()","err = "+l.inspectError(S)),this.finish("disconnected",S)},p.prototype.onFatalError=function(g){var S=g&&g.error;m.default.logAction(m.default.LOG_MINOR,"Transport.onFatalError()","err = "+l.inspectError(S)),this.finish("failed",S)},p.prototype.onClose=function(g){var S=g&&g.error;m.default.logAction(m.default.LOG_MINOR,"Transport.onClose()","err = "+l.inspectError(S)),this.finish("closed",S)},p.prototype.requestClose=function(){m.default.logAction(m.default.LOG_MINOR,"Transport.requestClose()",""),this.send(u)},p.prototype.requestDisconnect=function(){m.default.logAction(m.default.LOG_MINOR,"Transport.requestDisconnect()",""),this.send(C)},p.prototype.ping=function(g){var S={action:a.default.Action.HEARTBEAT};g&&(S.id=g),this.send(a.default.fromValues(S))},p.prototype.dispose=function(){m.default.logAction(m.default.LOG_MINOR,"Transport.dispose()",""),this.isDisposed=!0,this.off()},p.prototype.onActivity=function(){this.maxIdleInterval&&(this.lastActivity=this.connectionManager.lastActivity=l.now(),this.setIdleTimer(this.maxIdleInterval+100))},p.prototype.setIdleTimer=function(g){var S=this;this.idleTimer||(this.idleTimer=setTimeout(function(){S.onIdleTimerExpire()},g))},p.prototype.onIdleTimerExpire=function(){if(!this.lastActivity||!this.maxIdleInterval)throw new Error("Transport.onIdleTimerExpire(): lastActivity/maxIdleInterval not set");this.idleTimer=null;var g=l.now()-this.lastActivity,S=this.maxIdleInterval-g;if(S<=0){var h="No activity seen from realtime in "+g+"ms; assuming connection has dropped";m.default.logAction(m.default.LOG_ERROR,"Transport.onIdleTimerExpire()",h),this.disconnect(new R.default(h,80003,408))}else this.setIdleTimer(S+100)},p.tryConnect=function(g,S,h,f,c){var s=new g(S,h,f),w,v=function(L){clearTimeout(w),c({event:this.event,error:L})},k=S.options.timeouts.realtimeRequestTimeout;w=setTimeout(function(){s.off(["preconnect","disconnected","failed"]),s.dispose(),v.call({event:"disconnected"},new R.default("Timeout waiting for transport to indicate itself viable",5e4,500))},k),s.on(["failed","disconnected"],v),s.on("preconnect",function(){m.default.logAction(m.default.LOG_MINOR,"Transport.tryConnect()","viable transport "+s),clearTimeout(w),s.off(["failed","disconnected"],v),c(null,s)}),s.connect()},p}(d.default);r.default=P},function(n,r,o){(function(i,a){n.exports=a(o(6),o(40),o(25))})(this,function(i){return function(){var a=i,l=a.lib,d=l.Base,m=l.WordArray,x=a.algo,R=x.MD5,y=x.EvpKDF=d.extend({cfg:d.extend({keySize:128/32,hasher:R,iterations:1}),init:function(E){this.cfg=this.cfg.extend(E)},compute:function(E,u){for(var C,P=this.cfg,b=P.hasher.create(),p=m.create(),g=p.words,S=P.keySize,h=P.iterations;g.length<S;){C&&b.update(C),C=b.update(E).finalize(u),b.reset();for(var f=1;f<h;f++)C=b.finalize(C),b.reset();p.concat(C)}return p.sigBytes=S*4,p}});a.EvpKDF=function(E,u,C){return y.create(C).compute(E,u)}}(),i.EvpKDF})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(27))})(this,function(i){i.lib.Cipher||function(a){var l=i,d=l.lib,m=d.Base,x=d.WordArray,R=d.BufferedBlockAlgorithm,y=l.enc;y.Utf8;var E=y.Base64,u=l.algo,C=u.EvpKDF,P=d.Cipher=R.extend({cfg:m.extend(),createEncryptor:function(N,I){return this.create(this._ENC_XFORM_MODE,N,I)},createDecryptor:function(N,I){return this.create(this._DEC_XFORM_MODE,N,I)},init:function(N,I,O){this.cfg=this.cfg.extend(O),this._xformMode=N,this._key=I,this.reset()},reset:function(){R.reset.call(this),this._doReset()},process:function(N){return this._append(N),this._process()},finalize:function(N){N&&this._append(N);var I=this._doFinalize();return I},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function N(I){return typeof I=="string"?L:w}return function(I){return{encrypt:function(O,A,T){return N(A).encrypt(I,O,A,T)},decrypt:function(O,A,T){return N(A).decrypt(I,O,A,T)}}}}()});d.StreamCipher=P.extend({_doFinalize:function(){var N=this._process(!0);return N},blockSize:1});var b=l.mode={},p=d.BlockCipherMode=m.extend({createEncryptor:function(N,I){return this.Encryptor.create(N,I)},createDecryptor:function(N,I){return this.Decryptor.create(N,I)},init:function(N,I){this._cipher=N,this._iv=I}}),g=b.CBC=function(){var N=p.extend();N.Encryptor=N.extend({processBlock:function(O,A){var T=this._cipher,j=T.blockSize;I.call(this,O,A,j),T.encryptBlock(O,A),this._prevBlock=O.slice(A,A+j)}}),N.Decryptor=N.extend({processBlock:function(O,A){var T=this._cipher,j=T.blockSize,B=O.slice(A,A+j);T.decryptBlock(O,A),I.call(this,O,A,j),this._prevBlock=B}});function I(O,A,T){var j,B=this._iv;B?(j=B,this._iv=a):j=this._prevBlock;for(var z=0;z<T;z++)O[A+z]^=j[z]}return N}(),S=l.pad={},h=S.Pkcs7={pad:function(N,I){for(var O=I*4,A=O-N.sigBytes%O,T=A<<24|A<<16|A<<8|A,j=[],B=0;B<A;B+=4)j.push(T);var z=x.create(j,A);N.concat(z)},unpad:function(N){var I=N.words[N.sigBytes-1>>>2]&255;N.sigBytes-=I}};d.BlockCipher=P.extend({cfg:P.cfg.extend({mode:g,padding:h}),reset:function(){var N;P.reset.call(this);var I=this.cfg,O=I.iv,A=I.mode;this._xformMode==this._ENC_XFORM_MODE?N=A.createEncryptor:(N=A.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==N?this._mode.init(this,O&&O.words):(this._mode=N.call(A,this,O&&O.words),this._mode.__creator=N)},_doProcessBlock:function(N,I){this._mode.processBlock(N,I)},_doFinalize:function(){var N,I=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(I.pad(this._data,this.blockSize),N=this._process(!0)):(N=this._process(!0),I.unpad(N)),N},blockSize:128/32});var f=d.CipherParams=m.extend({init:function(N){this.mixIn(N)},toString:function(N){return(N||this.formatter).stringify(this)}}),c=l.format={},s=c.OpenSSL={stringify:function(N){var I,O=N.ciphertext,A=N.salt;return A?I=x.create([1398893684,1701076831]).concat(A).concat(O):I=O,I.toString(E)},parse:function(N){var I,O=E.parse(N),A=O.words;return A[0]==1398893684&&A[1]==1701076831&&(I=x.create(A.slice(2,4)),A.splice(0,4),O.sigBytes-=16),f.create({ciphertext:O,salt:I})}},w=d.SerializableCipher=m.extend({cfg:m.extend({format:s}),encrypt:function(N,I,O,A){A=this.cfg.extend(A);var T=N.createEncryptor(O,A),j=T.finalize(I),B=T.cfg;return f.create({ciphertext:j,key:O,iv:B.iv,algorithm:N,mode:B.mode,padding:B.padding,blockSize:N.blockSize,formatter:A.format})},decrypt:function(N,I,O,A){A=this.cfg.extend(A),I=this._parse(I,A.format);var T=N.createDecryptor(O,A).finalize(I.ciphertext);return T},_parse:function(N,I){return typeof N=="string"?I.parse(N,this):N}}),v=l.kdf={},k=v.OpenSSL={execute:function(N,I,O,A){A||(A=x.random(64/8));var T=C.create({keySize:I+O}).compute(N,A),j=x.create(T.words.slice(I),O*4);return T.sigBytes=I*4,f.create({key:T,iv:j,salt:A})}},L=d.PasswordBasedCipher=w.extend({cfg:w.cfg.extend({kdf:k}),encrypt:function(N,I,O,A){A=this.cfg.extend(A);var T=A.kdf.execute(O,N.keySize,N.ivSize);A.iv=T.iv;var j=w.encrypt.call(this,N,I,T.key,A);return j.mixIn(T),j},decrypt:function(N,I,O,A){A=this.cfg.extend(A),I=this._parse(I,A.format);var T=A.kdf.execute(O,N.keySize,N.ivSize,I.salt);A.iv=T.iv;var j=w.decrypt.call(this,N,I,T.key,A);return j}})}()})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.Request=r.createRequest=void 0;var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(12)),d=i.__importDefault(o(3)),m=i.__importDefault(o(7)),x=o(4),R=i.__importDefault(o(8)),y=i.__importDefault(o(2)),E=i.__importDefault(o(22)),u=a.getGlobalObject(),C=function(){},P=u._ablyjs_jsonp={};P._=function(c){return P["_"+c]||C};var b=1,p="jsonp";function g(c,s,w,v,k,L,N){return L=L||R.default.TIMEOUTS,new h(void 0,c,s,a.copy(w),v,k,L,N)}r.createRequest=g;var S=function(c){i.__extends(s,c);function s(w,v,k){var L=c.call(this,w,v,k)||this;return L.shortName=p,k.stream=!1,L}return s.isAvailable=function(){return d.default.Config.jsonpSupported&&d.default.Config.allowComet},s.prototype.toString=function(){return"JSONPTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},s.prototype.createRequest=function(w,v,k,L,N,I,O){return I=(this===null||this===void 0?void 0:this.timeouts)||I||R.default.TIMEOUTS,g(w,v,k,L,N,I,O)},s}(l.default),h=function(c){i.__extends(s,c);function s(w,v,k,L,N,I,O,A){var T=c.call(this)||this;return w===void 0&&(w=b++),T.id=w,T.uri=v,T.params=L||{},T.params.rnd=a.cheapRandStr(),k&&(k["X-Ably-Version"]&&(T.params.v=k["X-Ably-Version"]),k["X-Ably-Lib"]&&(T.params.lib=k["X-Ably-Lib"])),T.body=N,T.method=A,T.requestMode=I,T.timeouts=O,T.requestComplete=!1,T}return s.prototype.exec=function(){var w=this,v=this.id,k=this.body,L=this.method,N=this.uri,I=this.params;I.callback="_ablyjs_jsonp._("+v+")",I.envelope="jsonp",k&&(I.body=k),L&&L!=="get"&&(I.method=L);var O=this.script=document.createElement("script"),A=N+a.toQueryString(I);O.src=A,O.src.split("/").slice(-1)[0]!==A.split("/").slice(-1)[0]&&y.default.logAction(y.default.LOG_ERROR,"JSONP Request.exec()","Warning: the browser appears to have truncated the script URI. This will likely result in the request failing due to an unparseable body param"),O.async=!0,O.type="text/javascript",O.charset="UTF-8",O.onerror=function(B){w.complete(new x.PartialErrorInfo("JSONP script error (event: "+d.default.Config.inspect(B)+")",null,400))},P["_"+v]=function(B){if(B.statusCode){var z=B.response;if(B.statusCode==204)w.complete(null,null,null,B.statusCode);else if(!z)w.complete(new x.PartialErrorInfo("Invalid server response: no envelope detected",null,500));else if(B.statusCode<400||a.isArray(z))w.complete(null,z,B.headers,B.statusCode);else{var $=z.error||new x.PartialErrorInfo("Error response received from server",null,B.statusCode);w.complete($)}}else w.complete(null,B)};var T=this.requestMode==E.default.REQ_SEND?this.timeouts.httpRequestTimeout:this.timeouts.recvTimeout;this.timer=setTimeout(this.abort.bind(this),T);var j=document.getElementsByTagName("head")[0];j.insertBefore(O,j.firstChild)},s.prototype.complete=function(w,v,k,L){if(k=k||{},!this.requestComplete){this.requestComplete=!0;var N=void 0;v&&(N=typeof v=="string"?"text/plain":"application/json",k["content-type"]=N,this.emit("data",v)),this.emit("complete",w,v,k,!0,L),this.dispose()}},s.prototype.abort=function(){this.dispose()},s.prototype.dispose=function(){var w=this.timer;w&&(clearTimeout(w),this.timer=null);var v=this.script;v.parentNode&&v.parentNode.removeChild(v),delete P[this.id],this.emit("disposed")},s}(m.default);r.Request=h;function f(c){return u.JSONPTransport=S,S.isAvailable()&&(c.supportedTransports[p]=S),S}r.default=f},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(2)),d=i.__importDefault(o(8)),m=i.__importDefault(o(18)),x=i.__importDefault(o(46)),R=i.__importDefault(o(20)),y=i.__importDefault(o(33)),E=i.__importDefault(o(4)),u=i.__importDefault(o(49)),C=i.__importDefault(o(19)),P=i.__importDefault(o(3)),b=i.__importDefault(o(9)),p=i.__importDefault(o(16)),g=i.__importDefault(o(15)),S=function(){},h=function(){function c(s){if(!s){var w="no options provided";throw l.default.logAction(l.default.LOG_ERROR,"Rest()",w),new Error(w)}var v=d.default.objectifyOptions(s);v.log?(l.default.setLog(v.log.level,v.log.handler),l.default.deprecated("The `log` client option","Equivalent functionality is provided by the `logLevel` and `logHandler` client options. Update your client options code of the form `{ log: { level: logLevel, handler: logHandler } }` to instead be `{ logLevel, logHandler }`.")):l.default.setLog(v.logLevel,v.logHandler),l.default.logAction(l.default.LOG_MICRO,"Rest()","initialized with clientOptions "+P.default.Config.inspect(s));var k=this.options=d.default.normaliseOptions(v);if(k.key){var L=k.key.match(/^([^:\s]+):([^:.\s]+)$/);if(!L){var w="invalid key parameter";throw l.default.logAction(l.default.LOG_ERROR,"Rest()",w),new E.default(w,40400,404)}k.keyName=L[1],k.keySecret=L[2]}if("clientId"in k)if(typeof k.clientId=="string"||k.clientId===null){if(k.clientId==="*")throw new E.default('Can’t use "*" as a clientId as that string is reserved. (To change the default token request behaviour to use a wildcard clientId, use {defaultTokenParams: {clientId: "*"}})',40012,400)}else throw new E.default("clientId must be either a string or null",40012,400);l.default.logAction(l.default.LOG_MINOR,"Rest()","started; version = "+d.default.version),this.baseUri=this.authority=function(N){return d.default.getHttpScheme(k)+N+":"+d.default.getPort(k,!1)},this._currentFallback=null,this.serverTimeOffset=null,this.http=new P.default.Http(k),this.auth=new m.default(this,k),this.channels=new f(this),this.push=new x.default(this)}return c.prototype.stats=function(s,w){if(w===void 0)if(typeof s=="function")w=s,s=null;else{if(this.options.promises)return a.promisify(this,"stats",[s]);w=S}var v=a.defaultGetHeaders(this.options),k=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,L=this.http.supportsLinkHeaders?void 0:k;this.options.headers&&a.mixin(v,this.options.headers),new R.default(this,"/stats",v,L,function(N,I,O){for(var A=O?N:JSON.parse(N),T=0;T<A.length;T++)A[T]=u.default.fromValues(A[T]);return A}).get(s,w)},c.prototype.time=function(s,w){var v=this;if(w===void 0){if(typeof s=="function")w=s,s=null;else if(this.options.promises)return a.promisify(this,"time",[s])}var k=w||S,L=a.defaultGetHeaders(this.options);this.options.headers&&a.mixin(L,this.options.headers);var N=function(I){return v.authority(I)+"/time"};this.http.do(C.default.Get,this,N,L,null,s,function(I,O,A,T){if(I){k(I);return}T||(O=JSON.parse(O));var j=O[0];if(!j){k(new E.default("Internal error (unexpected result type from GET /time)",5e4,500));return}v.serverTimeOffset=j-a.now(),k(null,j)})},c.prototype.request=function(s,w,v,k,L,N){var I=this.options.useBinaryProtocol,O=I?P.default.Config.msgpack.encode:JSON.stringify,A=I?P.default.Config.msgpack.decode:JSON.parse,T=I?a.Format.msgpack:a.Format.json,j=this.http.supportsLinkHeaders?void 0:T;v=v||{};var B=s.toLowerCase(),z=B=="get"?a.defaultGetHeaders(this.options,T):a.defaultPostHeaders(this.options,T);if(N===void 0){if(this.options.promises)return a.promisify(this,"request",[s,w,v,k,L]);N=S}typeof k!="string"&&(k=O(k)),this.options.headers&&a.mixin(z,this.options.headers),L&&a.mixin(z,L);var $=new R.default(this,w,z,j,function(V,G,M){return a.ensureArray(M?V:A(V))},!0);if(!a.arrIn(P.default.Http.methods,B))throw new E.default("Unsupported method "+B,40500,405);a.arrIn(P.default.Http.methodsWithBody,B)?$[B](v,k,N):$[B](v,N)},c.prototype.batchPublish=function(s,w){if(w===void 0){if(this.options.promises)return a.promisify(this,"batchPublish",[s]);w=S}var v=w,k,L;a.isArray(s)?(k=s,L=!1):(k=[s],L=!0);var N=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,I=a.defaultPostHeaders(this.options,N);this.options.headers&&a.mixin(I,this.options.headers);var O=a.encodeBody(k,N);g.default.post(this,"/messages",O,I,{newBatchResponse:"true"},null,function(A,T,j,B){if(A){v(A);return}var z=B?T:a.decodeBody(T,N);L?v(null,z[0]):v(null,z)})},c.prototype.batchPresence=function(s,w){if(w===void 0){if(this.options.promises)return a.promisify(this,"batchPresence",[s]);w=S}var v=w,k=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,L=a.defaultPostHeaders(this.options,k);this.options.headers&&a.mixin(L,this.options.headers);var N=s.join(",");g.default.get(this,"/presence",L,{newBatchResponse:"true",channels:N},null,function(I,O,A,T){if(I){v(I);return}var j=T?O:a.decodeBody(O,k);v(null,j)})},c.prototype.setLog=function(s){l.default.setLog(s.level,s.handler)},c.Promise=function(s){return s=d.default.objectifyOptions(s),s.promises=!0,new c(s)},c.Callbacks=c,c.Platform=P.default,c.Message=b.default,c.PresenceMessage=p.default,c}(),f=function(){function c(s){this.rest=s,this.all=Object.create(null)}return c.prototype.get=function(s,w){s=String(s);var v=this.all[s];return v?w&&v.setOptions(w):this.all[s]=v=new y.default(this.rest,s,w),v},c.prototype.release=function(s){delete this.all[String(s)]},c}();r.default=h},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return i.enc.Utf8})},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(a){var l=i,d=l.lib,m=d.WordArray,x=d.Hasher,R=l.algo,y=[],E=[];(function(){function P(S){for(var h=a.sqrt(S),f=2;f<=h;f++)if(!(S%f))return!1;return!0}function b(S){return(S-(S|0))*4294967296|0}for(var p=2,g=0;g<64;)P(p)&&(g<8&&(y[g]=b(a.pow(p,1/2))),E[g]=b(a.pow(p,1/3)),g++),p++})();var u=[],C=R.SHA256=x.extend({_doReset:function(){this._hash=new m.init(y.slice(0))},_doProcessBlock:function(P,b){for(var p=this._hash.words,g=p[0],S=p[1],h=p[2],f=p[3],c=p[4],s=p[5],w=p[6],v=p[7],k=0;k<64;k++){if(k<16)u[k]=P[b+k]|0;else{var L=u[k-15],N=(L<<25|L>>>7)^(L<<14|L>>>18)^L>>>3,I=u[k-2],O=(I<<15|I>>>17)^(I<<13|I>>>19)^I>>>10;u[k]=N+u[k-7]+O+u[k-16]}var A=c&s^~c&w,T=g&S^g&h^S&h,j=(g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22),B=(c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25),z=v+B+A+E[k]+u[k],$=j+T;v=w,w=s,s=c,c=f+z|0,f=h,h=S,S=g,g=z+$|0}p[0]=p[0]+g|0,p[1]=p[1]+S|0,p[2]=p[2]+h|0,p[3]=p[3]+f|0,p[4]=p[4]+c|0,p[5]=p[5]+s|0,p[6]=p[6]+w|0,p[7]=p[7]+v|0},_doFinalize:function(){var P=this._data,b=P.words,p=this._nDataBytes*8,g=P.sigBytes*8;return b[g>>>5]|=128<<24-g%32,b[(g+64>>>9<<4)+14]=a.floor(p/4294967296),b[(g+64>>>9<<4)+15]=p,P.sigBytes=b.length*4,this._process(),this._hash},clone:function(){var P=x.clone.call(this);return P._hash=this._hash.clone(),P}});l.SHA256=x._createHelper(C),l.HmacSHA256=x._createHmacHelper(C)}(Math),i.SHA256})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(2)),m=i.__importDefault(o(34)),x=i.__importDefault(o(9)),R=i.__importDefault(o(4)),y=i.__importDefault(o(20)),E=i.__importDefault(o(15)),u=i.__importDefault(o(3));function C(){}var P=9;function b(S){return a.arrEvery(S,function(h){return!h.id})}function p(S){var h=S||{};if(h.cipher){if(!u.default.Crypto)throw new Error("Encryption not enabled; use ably.encryption.js instead");var f=u.default.Crypto.getCipher(h.cipher);h.cipher=f.cipherParams,h.channelCipher=f.cipher}else"cipher"in h&&(h.cipher=void 0,h.channelCipher=null);return h}var g=function(S){i.__extends(h,S);function h(f,c,s){var w=S.call(this)||this;return d.default.logAction(d.default.LOG_MINOR,"Channel()","started; name = "+c),w.rest=f,w.name=c,w.basePath="/channels/"+encodeURIComponent(c),w.presence=new m.default(w),w.channelOptions=p(s),w}return h.prototype.setOptions=function(f){this.channelOptions=p(f)},h.prototype.history=function(f,c){if(d.default.logAction(d.default.LOG_MICRO,"Channel.history()","channel = "+this.name),c===void 0)if(typeof f=="function")c=f,f=null;else{if(this.rest.options.promises)return a.promisify(this,"history",arguments);c=C}this._history(f,c)},h.prototype._history=function(f,c){var s=this.rest,w=s.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,v=this.rest.http.supportsLinkHeaders?void 0:w,k=a.defaultGetHeaders(s.options,w);s.options.headers&&a.mixin(k,s.options.headers);var L=this.channelOptions;new y.default(s,this.basePath+"/messages",k,v,function(N,I,O){return x.default.fromResponseBody(N,L,O?void 0:w)}).get(f,c)},h.prototype.publish=function(){var f=this,c=arguments.length,s=arguments[0],w=arguments[1],v=arguments[c-1],k,L;if(typeof v!="function"){if(this.rest.options.promises)return a.promisify(this,"publish",arguments);v=C}if(typeof s=="string"||s===null)k=[x.default.fromValues({name:s,data:w})],L=arguments[2];else if(a.isObject(s))k=[x.default.fromValues(s)],L=arguments[1];else if(a.isArray(s))k=x.default.fromValuesArray(s),L=arguments[1];else throw new R.default("The single-argument form of publish() expects a message object or an array of message objects",40013,400);(typeof L!="object"||!L)&&(L={});var N=this.rest,I=N.options,O=I.useBinaryProtocol?a.Format.msgpack:a.Format.json,A=N.options.idempotentRestPublishing,T=a.defaultPostHeaders(N.options,O);if(I.headers&&a.mixin(T,I.headers),A&&b(k)){var j=a.randomString(P);a.arrForEach(k,function(B,z){B.id=j+":"+z.toString()})}x.default.encodeArray(k,this.channelOptions,function(B){if(B){v(B);return}var z=x.default.getMessagesSize(k),$=I.maxMessageSize;if(z>$){v(new R.default("Maximum size of messages that can be published at once exceeded ( was "+z+" bytes; limit is "+$+" bytes)",40009,400));return}f._publish(x.default.serialize(k,O),T,L,v)})},h.prototype._publish=function(f,c,s,w){E.default.post(this.rest,this.basePath+"/messages",f,c,s,null,w)},h.prototype.status=function(f){if(typeof f!="function"&&this.rest.options.promises)return a.promisify(this,"status",[]);var c=this.rest.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,s=a.defaultPostHeaders(this.rest.options,c);E.default.get(this.rest,this.basePath,s,{},c,f||C)},h}(l.default);r.default=g},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(2)),m=i.__importDefault(o(20)),x=i.__importDefault(o(16));function R(){}var y=function(E){i.__extends(u,E);function u(C){var P=E.call(this)||this;return P.channel=C,P.basePath=C.basePath+"/presence",P}return u.prototype.get=function(C,P){if(d.default.logAction(d.default.LOG_MICRO,"Presence.get()","channel = "+this.channel.name),P===void 0)if(typeof C=="function")P=C,C=null;else{if(this.channel.rest.options.promises)return a.promisify(this,"get",arguments);P=R}var b=this.channel.rest,p=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,g=this.channel.rest.http.supportsLinkHeaders?void 0:p,S=a.defaultGetHeaders(b.options,p);b.options.headers&&a.mixin(S,b.options.headers);var h=this.channel.channelOptions;new m.default(b,this.basePath,S,g,function(f,c,s){return x.default.fromResponseBody(f,h,s?void 0:p)}).get(C,P)},u.prototype.history=function(C,P){return d.default.logAction(d.default.LOG_MICRO,"Presence.history()","channel = "+this.channel.name),this._history(C,P)},u.prototype._history=function(C,P){if(P===void 0)if(typeof C=="function")P=C,C=null;else{if(this.channel.rest.options.promises)return a.promisify(this,"_history",[C]);P=R}var b=this.channel.rest,p=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,g=this.channel.rest.http.supportsLinkHeaders?void 0:p,S=a.defaultGetHeaders(b.options,p);b.options.headers&&a.mixin(S,b.options.headers);var h=this.channel.channelOptions;new m.default(b,this.basePath+"/history",S,g,function(f,c,s){return x.default.fromResponseBody(f,h,s?void 0:p)}).get(C,P)},u}(l.default);r.default=y},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0}),r.TransportParams=void 0;var a=o(0),l=a.__importDefault(o(10)),d=a.__importStar(o(1)),m=a.__importStar(o(52)),x=a.__importStar(o(8)),R=a.__importDefault(o(3)),y=a.__importDefault(o(7)),E=a.__importDefault(o(36)),u=a.__importDefault(o(2)),C=a.__importDefault(o(37)),P=a.__importStar(o(21)),b=a.__importStar(o(4)),p=a.__importDefault(o(18)),g=a.__importDefault(o(9)),S=a.__importDefault(o(24)),h=a.__importDefault(o(53)),f=a.__importDefault(o(26)),c=a.__importDefault(o(14)),s=function(){var V;return typeof R.default.WebStorage!="undefined"&&((V=R.default.WebStorage)===null||V===void 0?void 0:V.localSupported)},w=function(){var V;return typeof R.default.WebStorage!="undefined"&&((V=R.default.WebStorage)===null||V===void 0?void 0:V.sessionSupported)},v=l.default.Action,k=function(){},L="ably-transport-preference",N="ably-connection-recovery";function I(){var V,G;return w()&&((G=(V=R.default.WebStorage)===null||V===void 0?void 0:V.getSession)===null||G===void 0?void 0:G.call(V,N))}function O(V){var G,M;return w()&&((M=(G=R.default.WebStorage)===null||G===void 0?void 0:G.setSession)===null||M===void 0?void 0:M.call(G,N,V))}function A(){var V,G;return w()&&((G=(V=R.default.WebStorage)===null||V===void 0?void 0:V.removeSession)===null||G===void 0?void 0:G.call(V,N))}function T(V,G){return d.arrIndexOf(R.default.Defaults.transportPreferenceOrder,V.shortName)>d.arrIndexOf(R.default.Defaults.transportPreferenceOrder,G.shortName)}function j(V,G,M){var D;if(V.channel!==G.channel||(D=V.action)!==v.PRESENCE&&D!==v.MESSAGE||D!==G.action)return!1;var U=D===v.PRESENCE?"presence":"messages",_=V[U].concat(G[U]),W=g.default.getMessagesSize(_);return W>M||!d.allSame(_,"clientId")||!d.arrEvery(_,function(X){return!X.id})?!1:(V[U]=_,!0)}function B(V){try{return JSON.parse(V)}catch(G){return null}}var z=function(){function V(G,M,D,U){this.options=G,this.host=M,this.mode=D,this.connectionKey=U,this.format=G.useBinaryProtocol?d.Format.msgpack:d.Format.json}return V.prototype.getConnectParams=function(G){var M=G?d.copy(G):{},D=this.options;switch(this.mode){case"upgrade":M.upgrade=this.connectionKey;break;case"resume":M.resume=this.connectionKey;break;case"recover":{var U=B(D.recover);U&&(M.recover=U.connectionKey);break}}return D.clientId!==void 0&&(M.clientId=D.clientId),D.echoMessages===!1&&(M.echo="false"),this.format!==void 0&&(M.format=this.format),this.stream!==void 0&&(M.stream=this.stream),this.heartbeats!==void 0&&(M.heartbeats=this.heartbeats),M.v=x.default.protocolVersion,M.agent=(0,x.getAgentString)(this.options),D.transportParams!==void 0&&d.mixin(M,D.transportParams),M},V.prototype.toString=function(){var G="[mode="+this.mode;return this.host&&(G+=",host="+this.host),this.connectionKey&&(G+=",connectionKey="+this.connectionKey),this.format&&(G+=",format="+this.format),G+="]",G},V}();r.TransportParams=z;var $=function(V){a.__extends(G,V);function G(M,D){var U=V.call(this)||this;U.disconnectedRetryCount=0,G.initTransports(),U.realtime=M,U.options=D;var _=D.timeouts,W=_.preferenceConnectTimeout+_.realtimeRequestTimeout;if(U.states={initialized:{state:"initialized",terminal:!1,queueEvents:!0,sendEvents:!1,failState:"disconnected"},connecting:{state:"connecting",terminal:!1,queueEvents:!0,sendEvents:!1,retryDelay:W,failState:"disconnected"},connected:{state:"connected",terminal:!1,queueEvents:!1,sendEvents:!0,failState:"disconnected"},synchronizing:{state:"connected",terminal:!1,queueEvents:!0,sendEvents:!1,forceQueueEvents:!0,failState:"disconnected"},disconnected:{state:"disconnected",terminal:!1,queueEvents:!0,sendEvents:!1,retryDelay:_.disconnectedRetryTimeout,failState:"disconnected"},suspended:{state:"suspended",terminal:!1,queueEvents:!1,sendEvents:!1,retryDelay:_.suspendedRetryTimeout,failState:"suspended"},closing:{state:"closing",terminal:!1,queueEvents:!1,sendEvents:!1,retryDelay:_.realtimeRequestTimeout,failState:"closed"},closed:{state:"closed",terminal:!0,queueEvents:!1,sendEvents:!1,failState:"closed"},failed:{state:"failed",terminal:!0,queueEvents:!1,sendEvents:!1,failState:"failed"}},U.state=U.states.initialized,U.errorReason=null,U.queuedMessages=new E.default,U.msgSerial=0,U.connectionDetails=void 0,U.connectionId=void 0,U.connectionKey=void 0,U.connectionStateTtl=_.connectionStateTtl,U.maxIdleInterval=null,U.transports=d.intersect(D.transports||x.default.defaultTransports,G.supportedTransports),U.baseTransport=d.intersect(x.default.baseTransportOrder,U.transports)[0],U.upgradeTransports=d.intersect(U.transports,x.default.upgradeTransports),U.transportPreference=null,U.httpHosts=x.default.getHosts(D),U.activeProtocol=null,U.proposedTransports=[],U.pendingTransports=[],U.host=null,U.lastAutoReconnectAttempt=null,U.lastActivity=null,U.forceFallbackHost=!1,U.connectCounter=0,u.default.logAction(u.default.LOG_MINOR,"Realtime.ConnectionManager()","started"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","requested transports = ["+(D.transports||x.default.defaultTransports)+"]"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","available transports = ["+U.transports+"]"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","http hosts = ["+U.httpHosts+"]"),!U.transports.length){var X="no requested transports available";throw u.default.logAction(u.default.LOG_ERROR,"realtime.ConnectionManager()",X),new Error(X)}var q=R.default.Config.addEventListener;return q&&(w()&&typeof D.recover=="function"&&q("beforeunload",U.persistConnection.bind(U)),D.closeOnUnload===!0&&q("beforeunload",function(){u.default.logAction(u.default.LOG_MAJOR,"Realtime.ConnectionManager()","beforeunload event has triggered the connection to close as closeOnUnload is true"),U.requestState({state:"closing"})}),q("online",function(){U.state==U.states.disconnected||U.state==U.states.suspended?(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager caught browser ‘online’ event","reattempting connection"),U.requestState({state:"connecting"})):U.state==U.states.connecting&&(U.pendingTransports.forEach(function(re){re.off()}),U.disconnectAllTransports(),U.startConnect())}),q("offline",function(){U.state==U.states.connected&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager caught browser ‘offline’ event","disconnecting active transport"),U.disconnectAllTransports())})),U}return G.initTransports=function(){(0,h.default)(G),d.arrForEach(R.default.Transports,function(M){M(G)})},G.prototype.createTransportParams=function(M,D){return new z(this.options,M,D,this.connectionKey)},G.prototype.getTransportParams=function(M){var D=this,U=function(_){if(D.connectionKey){_("resume");return}if(typeof D.options.recover=="string"){_("recover");return}var W=D.options.recover,X=I();if(X&&typeof W=="function"){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Calling clientOptions-provided recover function with last session data"),W(X,function(q){q?(D.options.recover=X.recoveryKey,_("recover")):_("clean")});return}_("clean")};U(function(_){var W=D.createTransportParams(null,_);if(_==="recover"){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Transport recovery mode = recover; recoveryKey = "+D.options.recover);var X=B(D.options.recover);X&&(D.msgSerial=X.msgSerial)}else u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Transport params = "+W.toString());M(W)})},G.prototype.tryATransport=function(M,D,U){var _=this;u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.tryATransport()","trying "+D),f.default.tryConnect(G.supportedTransports[D],this,this.realtime.auth,M,function(W,X){var q=_.state;if(q==_.states.closing||q==_.states.closed||q==_.states.failed){X&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.tryATransport()","connection "+q.state+" while we were attempting the transport; closing "+X),X.close()),U(!0);return}if(W){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.tryATransport()","transport "+D+" "+W.event+", err: "+W.error.toString()),p.default.isTokenErr(W.error)&&!(_.errorReason&&p.default.isTokenErr(_.errorReason))?(_.errorReason=W.error,_.realtime.auth._forceNewToken(null,null,function(re){if(re){_.actOnErrorFromAuthorize(re);return}_.tryATransport(M,D,U)})):W.event==="failed"?(_.notifyState({state:"failed",error:W.error}),U(!0)):W.event==="disconnected"&&((0,P.isRetriable)(W.error)?U(!1):(_.notifyState({state:_.states.connecting.failState,error:W.error}),U(!0)));return}u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.tryATransport()","viable transport "+D+"; setting pending"),_.setTransportPending(X,M),U(null,X)})},G.prototype.setTransportPending=function(M,D){var U=this,_=D.mode;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setTransportPending()","transport = "+M+"; mode = "+_),d.arrDeleteValue(this.proposedTransports,M),this.pendingTransports.push(M);var W=R.default.Defaults.transportPreferenceOrder[R.default.Defaults.transportPreferenceOrder.length-1];M.once("connected",function(q,re,ie){_=="upgrade"&&U.activeProtocol?M.shortName!==W&&d.arrIn(U.getUpgradePossibilities(),W)&&U.activeProtocol?setTimeout(function(){U.scheduleTransportActivation(q,M,re,ie)},U.options.timeouts.parallelUpgradeDelay):U.scheduleTransportActivation(q,M,re,ie):(U.activateTransport(q,M,re,ie),R.default.Config.nextTick(function(){U.connectImpl(D)})),_==="recover"&&U.options.recover&&(U.options.recover=null,U.unpersistConnection())});var X=this;M.on(["disconnected","closed","failed"],function(q){X.deactivateTransport(M,this.event,q)}),this.emit("transport.pending",M)},G.prototype.scheduleTransportActivation=function(M,D,U,_){var W=this,X=this.activeProtocol&&this.activeProtocol.getTransport(),q=function(){D.disconnect(),d.arrDeleteValue(W.pendingTransports,D)};if(this.state!==this.states.connected&&this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Current connection state ("+this.state.state+(this.state===this.states.synchronizing?", but with an upgrade already in progress":"")+") is not valid to upgrade in; abandoning upgrade to "+D.shortName),q();return}if(X&&!T(D,X)){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Proposed transport "+D.shortName+" is no better than current active transport "+X.shortName+" - abandoning upgrade"),q();return}u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Scheduling transport upgrade; transport = "+D);var re=null;if(!D.isConnected){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Proposed transport "+D.shortName+"is no longer connected; abandoning upgrade"),q();return}if(this.state===this.states.connected)u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.scheduleTransportActivation()","Currently connected, so temporarily pausing events until the upgrade is complete"),this.state=this.states.synchronizing,re=this.activeProtocol;else if(this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Current connection state ("+this.state.state+(this.state===this.states.synchronizing?", but with an upgrade already in progress":"")+") is not valid to upgrade in; abandoning upgrade to "+D.shortName),q();return}u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Syncing transport; transport = "+D);var ie=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Activating transport; transport = "+D),D.send(l.default.fromValues({action:v.ACTIVATE})),W.activateTransport(M,D,U,_),W.state===W.states.synchronizing?(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.scheduleTransportActivation()","Pre-upgrade protocol idle, sending queued messages on upgraded transport; transport = "+D),W.state=W.states.connected):u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Pre-upgrade protocol idle, but state is now "+W.state.state+", so leaving unchanged"),W.state.sendEvents&&W.sendQueuedMessages()};re?re.onceIdle(ie):ie()},G.prototype.activateTransport=function(M,D,U,_){var W=this;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","transport = "+D),M&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","error = "+M),U&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.activateTransport()","connectionId = "+U),_&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.activateTransport()","connectionDetails = "+JSON.stringify(_)),this.persistTransportPreference(D);var X=this.state,q=this.states.connected.state;if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","current state = "+X.state),X.state==this.states.closing.state||X.state==this.states.closed.state||X.state==this.states.failed.state)return u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","Disconnecting transport and abandoning"),D.disconnect(),!1;if(d.arrDeleteValue(this.pendingTransports,D),!D.isConnected)return u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","Declining to activate transport "+D+" since it appears to no longer be connected"),!1;var re=this.activeProtocol;this.activeProtocol=new m.default(D),this.host=D.params.host;var ie=_.connectionKey;if(ie&&this.connectionKey!=ie&&this.setConnection(U,_,!!M),this.onConnectionDetailsUpdate(_,D),R.default.Config.nextTick(function(){D.on("connected",function(Y,le,se){W.onConnectionDetailsUpdate(se,D),W.emit("update",new C.default(q,q,null,Y))})}),X.state===this.states.connected.state?M&&(this.errorReason=this.realtime.connection.errorReason=M,this.emit("update",new C.default(q,q,null,M))):(this.notifyState({state:"connected",error:M}),this.errorReason=this.realtime.connection.errorReason=M||null),this.emit("transport.active",D),re)if(re.messageQueue.count()>0&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","Previous active protocol (for transport "+re.transport.shortName+", new one is "+D.shortName+") finishing with "+re.messageQueue.count()+" messages still pending"),re.transport===D){var ee="Assumption violated: activating a transport that was also the transport for the previous active protocol; transport = "+D.shortName+"; stack = "+new Error().stack;u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()",ee)}else re.finish();return d.safeArrForEach(this.pendingTransports,function(Y){if(Y===D){var le="Assumption violated: activating a transport that is still marked as a pending transport; transport = "+D.shortName+"; stack = "+new Error().stack;u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()",le),d.arrDeleteValue(W.pendingTransports,D)}else Y.disconnect()}),d.safeArrForEach(this.proposedTransports,function(Y){Y===D?(u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","Assumption violated: activating a transport that is still marked as a proposed transport; transport = "+D.shortName+"; stack = "+new Error().stack),d.arrDeleteValue(W.proposedTransports,D)):Y.dispose()}),!0},G.prototype.deactivateTransport=function(M,D,U){var _=this.activeProtocol,W=_&&_.getTransport()===M,X=d.arrDeleteValue(this.pendingTransports,M),q=d.arrDeleteValue(this.proposedTransports,M),re=this.noTransportsScheduledForActivation();if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.deactivateTransport()","transport = "+M),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.deactivateTransport()","state = "+D+(W?"; was active":X?"; was pending":q?"; was proposed":"")+(re?"":"; another transport is scheduled for activation")),U&&U.message&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","reason = "+U.message),W&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","Getting, clearing, and requeuing "+this.activeProtocol.messageQueue.count()+" pending messages"),this.queuePendingMessages(_.getPendingMessages()),R.default.Config.nextTick(function(){_.clearPendingMessages()}),this.activeProtocol=this.host=null),this.emit("transport.inactive",M),W&&re||W&&D==="failed"||D==="closed"||_===null&&X&&this.pendingTransports.length===0){if(D==="disconnected"&&U&&U.statusCode>500&&this.httpHosts.length>1){this.unpersistTransportPreference(),this.forceFallbackHost=!0,this.notifyState({state:D,error:U,retryImmediately:!0});return}var ie=D==="failed"&&p.default.isTokenErr(U)?"disconnected":D;this.notifyState({state:ie,error:U});return}W&&D==="disconnected"&&this.state!==this.states.synchronizing&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","wasActive but another transport is connected and scheduled for activation, so going into the connecting state until it activates"),this.startSuspendTimer(),this.startTransitionTimer(this.states.connecting),this.notifyState({state:"connecting",error:U}))},G.prototype.noTransportsScheduledForActivation=function(){return d.isEmpty(this.pendingTransports)||this.pendingTransports.every(function(M){return!M.isConnected})},G.prototype.setConnection=function(M,D,U){var _=this.connectionId,W=_&&_!==M,X=!_&&U;(W||X)&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setConnection()","Resetting msgSerial"),this.msgSerial=0,this.queuedMessages.resetSendAttempted()),this.connectionId!==M&&u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setConnection()","New connectionId; reattaching any attached channels"),this.realtime.connection.id=this.connectionId=M,this.realtime.connection.key=this.connectionKey=D.connectionKey},G.prototype.clearConnection=function(){this.realtime.connection.id=this.connectionId=void 0,this.realtime.connection.key=this.connectionKey=void 0,this.msgSerial=0,this.unpersistConnection()},G.prototype.createRecoveryKey=function(){return this.connectionKey?JSON.stringify({connectionKey:this.connectionKey,msgSerial:this.msgSerial,channelSerials:this.realtime.channels.channelSerials()}):null},G.prototype.checkConnectionStateFreshness=function(){if(!(!this.lastActivity||!this.connectionId)){var M=d.now()-this.lastActivity;M>this.connectionStateTtl+this.maxIdleInterval&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.checkConnectionStateFreshness()","Last known activity from realtime was "+M+"ms ago; discarding connection state"),this.clearConnection(),this.states.connecting.failState="suspended")}},G.prototype.persistConnection=function(){if(w()){var M=this.createRecoveryKey();M&&O({recoveryKey:M,disconnectedAt:d.now(),location:i.location,clientId:this.realtime.auth.clientId})}},G.prototype.unpersistConnection=function(){A()},G.prototype.getError=function(){return this.errorReason||this.getStateError()},G.prototype.getStateError=function(){var M,D;return(D=(M=P.default)[this.state.state])===null||D===void 0?void 0:D.call(M)},G.prototype.activeState=function(){return this.state.queueEvents||this.state.sendEvents},G.prototype.enactStateChange=function(M){var D=M.current==="failed"?u.default.LOG_ERROR:u.default.LOG_MAJOR;u.default.logAction(D,"Connection state",M.current+(M.reason?"; reason: "+M.reason:"")),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.enactStateChange","setting new state: "+M.current+"; reason = "+(M.reason&&M.reason.message));var U=this.state=this.states[M.current];M.reason&&(this.errorReason=M.reason,this.realtime.connection.errorReason=M.reason),(U.terminal||U.state==="suspended")&&this.clearConnection(),this.emit("connectionstate",M)},G.prototype.startTransitionTimer=function(M){var D=this;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startTransitionTimer()","transitionState: "+M.state),this.transitionTimer&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startTransitionTimer()","clearing already-running timer"),clearTimeout(this.transitionTimer)),this.transitionTimer=setTimeout(function(){D.transitionTimer&&(D.transitionTimer=null,u.default.logAction(u.default.LOG_MINOR,"ConnectionManager "+M.state+" timer expired","requesting new state: "+M.failState),D.notifyState({state:M.failState}))},M.retryDelay)},G.prototype.cancelTransitionTimer=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.cancelTransitionTimer()",""),this.transitionTimer&&(clearTimeout(this.transitionTimer),this.transitionTimer=null)},G.prototype.startSuspendTimer=function(){var M=this;this.suspendTimer||(this.suspendTimer=setTimeout(function(){M.suspendTimer&&(M.suspendTimer=null,u.default.logAction(u.default.LOG_MINOR,"ConnectionManager suspend timer expired","requesting new state: suspended"),M.states.connecting.failState="suspended",M.notifyState({state:"suspended"}))},this.connectionStateTtl))},G.prototype.checkSuspendTimer=function(M){M!=="disconnected"&&M!=="suspended"&&M!=="connecting"&&this.cancelSuspendTimer()},G.prototype.cancelSuspendTimer=function(){this.states.connecting.failState="disconnected",this.suspendTimer&&(clearTimeout(this.suspendTimer),this.suspendTimer=null)},G.prototype.startRetryTimer=function(M){var D=this;this.retryTimer=setTimeout(function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager retry timer expired","retrying"),D.retryTimer=null,D.requestState({state:"connecting"})},M)},G.prototype.cancelRetryTimer=function(){this.retryTimer&&(clearTimeout(this.retryTimer),this.retryTimer=null)},G.prototype.notifyState=function(M){var D=this,U,_,W=M.state,X=W==="disconnected"&&(this.state===this.states.connected||this.state===this.states.synchronizing||M.retryImmediately||this.state===this.states.connecting&&M.error&&p.default.isTokenErr(M.error)&&!(this.errorReason&&p.default.isTokenErr(this.errorReason)));if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.notifyState()","new state: "+W+(X?"; will retry connection immediately":"")),W!=this.state.state&&(this.cancelTransitionTimer(),this.cancelRetryTimer(),this.checkSuspendTimer(M.state),(W==="suspended"||W==="connected")&&(this.disconnectedRetryCount=0),!this.state.terminal)){var q=this.states[M.state],re=q.retryDelay;q.state==="disconnected"&&(this.disconnectedRetryCount++,re=d.getRetryTime(q.retryDelay,this.disconnectedRetryCount));var ie=new C.default(this.state.state,q.state,re,M.error||((_=(U=P.default)[q.state])===null||_===void 0?void 0:_.call(U)));if(X){var ee=function(){D.state===D.states.disconnected&&(D.lastAutoReconnectAttempt=d.now(),D.requestState({state:"connecting"}))},Y=this.lastAutoReconnectAttempt&&d.now()-this.lastAutoReconnectAttempt+1;Y&&Y<1e3?(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.notifyState()","Last reconnect attempt was only "+Y+"ms ago, waiting another "+(1e3-Y)+"ms before trying again"),setTimeout(ee,1e3-Y)):R.default.Config.nextTick(ee)}else(W==="disconnected"||W==="suspended")&&this.startRetryTimer(re);(W==="disconnected"&&!X||W==="suspended"||q.terminal)&&R.default.Config.nextTick(function(){D.disconnectAllTransports()}),W=="connected"&&!this.activeProtocol&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.notifyState()","Broken invariant: attempted to go into connected state, but there is no active protocol"),this.enactStateChange(ie),this.state.sendEvents?this.sendQueuedMessages():this.state.queueEvents||(this.realtime.channels.propogateConnectionInterruption(W,ie.reason),this.failQueuedMessages(ie.reason))}},G.prototype.requestState=function(M){var D=this,U,_,W=M.state;if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.requestState()","requested state: "+W+"; current state: "+this.state.state),W!=this.state.state&&(this.cancelTransitionTimer(),this.cancelRetryTimer(),this.checkSuspendTimer(W),!(W=="connecting"&&this.state.state=="connected")&&!(W=="closing"&&this.state.state=="closed"))){var X=this.states[W],q=new C.default(this.state.state,X.state,null,M.error||((_=(U=P.default)[X.state])===null||_===void 0?void 0:_.call(U)));this.enactStateChange(q),W=="connecting"&&R.default.Config.nextTick(function(){D.startConnect()}),W=="closing"&&this.closeImpl()}},G.prototype.startConnect=function(){var M=this;if(this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startConnect()","Must be in connecting state to connect, but was "+this.state.state);return}var D=this.realtime.auth,U=++this.connectCounter,_=function(){M.checkConnectionStateFreshness(),M.getTransportParams(function(X){if(X.mode==="recover"&&X.options.recover){var q=B(X.options.recover);q&&M.realtime.channels.recoverChannels(q.channelSerials)}U===M.connectCounter&&M.connectImpl(X,U)})};if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startConnect()","starting connection"),this.startSuspendTimer(),this.startTransitionTimer(this.states.connecting),D.method==="basic")_();else{var W=function(X){U===M.connectCounter&&(X?M.actOnErrorFromAuthorize(X):_())};this.errorReason&&p.default.isTokenErr(this.errorReason)?D._forceNewToken(null,null,W):D._ensureValidAuthCredentials(!1,W)}},G.prototype.connectImpl=function(M,D){var U=this.state.state;U!==this.states.connecting.state&&U!==this.states.connected.state?u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectImpl()","Must be in connecting state to connect (or connected to upgrade), but was "+U):this.pendingTransports.length?u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectImpl()","Transports "+this.pendingTransports[0].toString()+" currently pending; taking no action"):U==this.states.connected.state?this.upgradeIfNeeded(M):this.transports.length>1&&this.getTransportPreference()?this.connectPreference(M,D):this.connectBase(M,D)},G.prototype.connectPreference=function(M,D){var U=this,_=this.getTransportPreference(),W=!1;d.arrIn(this.transports,_)||(this.unpersistTransportPreference(),this.connectImpl(M,D)),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectPreference()","Trying to connect with stored transport preference "+_);var X=setTimeout(function(){W=!0,U.state.state!==U.states.connected.state&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectPreference()","Shortcircuit connection attempt with "+_+" failed; clearing preference and trying from scratch"),U.disconnectAllTransports(),U.unpersistTransportPreference()),U.connectImpl(M,D)},this.options.timeouts.preferenceConnectTimeout);M.host=this.httpHosts[0],this.tryATransport(M,_,function(q,re){clearTimeout(X),W&&re?(re.off(),re.disconnect(),d.arrDeleteValue(U.pendingTransports,re)):!re&&!q&&(U.unpersistTransportPreference(),U.connectImpl(M,D))})},G.prototype.connectBase=function(M,D){var U=this,_=function(ie){U.notifyState({state:U.states.connecting.failState,error:ie})},W=this.httpHosts.slice(),X=function(ie,ee){D===U.connectCounter&&!ee&&!ie&&re()};u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectBase()","Trying to connect with base transport "+this.baseTransport);var q=W.shift();if(!q){_(new b.default("Unable to connect (no available host)",80003,404));return}M.host=q;var re=function(){if(!W.length){_(new b.default("Unable to connect (and no more fallback hosts to try)",80003,404));return}if(!U.realtime.http.checkConnectivity){_(new b.PartialErrorInfo("Internal error: Http.checkConnectivity not set",null,500));return}U.realtime.http.checkConnectivity(function(ie,ee){if(D===U.connectCounter){if(ie){_(ie);return}if(!ee){_(new b.default("Unable to connect (network unreachable)",80003,404));return}M.host=d.arrPopRandomElement(W),U.tryATransport(M,U.baseTransport,X)}})};if(this.forceFallbackHost&&W.length){this.forceFallbackHost=!1,re();return}this.tryATransport(M,this.baseTransport,X)},G.prototype.getUpgradePossibilities=function(){var M=this.activeProtocol.getTransport().shortName,D=d.arrIndexOf(this.upgradeTransports,M);return this.upgradeTransports.slice(D+1)},G.prototype.upgradeIfNeeded=function(M){var D=this,U=this.getUpgradePossibilities();u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.upgradeIfNeeded()","upgrade possibilities: "+R.default.Config.inspect(U)),U.length&&d.arrForEach(U,function(_){var W=D.createTransportParams(M.host,"upgrade");D.tryATransport(W,_,k)})},G.prototype.closeImpl=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.closeImpl()","closing connection"),this.cancelSuspendTimer(),this.startTransitionTimer(this.states.closing),d.safeArrForEach(this.pendingTransports,function(M){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Closing pending transport: "+M),M&&M.close()}),d.safeArrForEach(this.proposedTransports,function(M){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Disposing of proposed transport: "+M),M&&M.dispose()}),this.activeProtocol&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Closing active transport: "+this.activeProtocol.getTransport()),this.activeProtocol.getTransport().close()),this.notifyState({state:"closed"})},G.prototype.onAuthUpdated=function(M,D){var U=this,_;switch(this.state.state){case"connected":{if(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Sending AUTH message on active transport"),(this.pendingTransports.length||this.proposedTransports.length)&&this.state!==this.states.synchronizing){this.disconnectAllTransports(!0);var W=this.activeProtocol.getTransport().params;R.default.Config.nextTick(function(){U.state.state==="connected"&&U.upgradeIfNeeded(W)})}var X=(_=this.activeProtocol)===null||_===void 0?void 0:_.getTransport();X&&X.onAuthUpdated&&X.onAuthUpdated(M);var q=l.default.fromValues({action:v.AUTH,auth:{accessToken:M.token}});this.send(q);var re=function(){U.off(ie),D(null,M)},ie=function(Y){Y.current==="failed"&&(U.off(re),U.off(ie),D(Y.reason||U.getStateError()))};this.once("connectiondetails",re),this.on("connectionstate",ie);break}case"connecting":u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Aborting current connection attempts in order to start again with the new auth details"),this.disconnectAllTransports();default:{u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Connection state is "+this.state.state+"; waiting until either connected or failed");var ee=function(Y){switch(Y.current){case"connected":U.off(ee),D(null,M);break;case"failed":case"closed":case"suspended":U.off(ee),D(Y.reason||U.getStateError());break}};this.on("connectionstate",ee),this.state.state==="connecting"?this.startConnect():this.requestState({state:"connecting"})}}},G.prototype.disconnectAllTransports=function(M){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.disconnectAllTransports()","Disconnecting all transports"+(M?" except the active transport":"")),this.connectCounter++,d.safeArrForEach(this.pendingTransports,function(D){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disconnecting pending transport: "+D),D&&D.disconnect()}),this.pendingTransports=[],d.safeArrForEach(this.proposedTransports,function(D){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disposing of proposed transport: "+D),D&&D.dispose()}),this.proposedTransports=[],this.activeProtocol&&!M&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disconnecting active transport: "+this.activeProtocol.getTransport()),this.activeProtocol.getTransport().disconnect())},G.prototype.send=function(M,D,U){U=U||k;var _=this.state;if(_.sendEvents){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()","sending event"),this.sendImpl(new m.PendingMessage(M,U));return}var W=D&&_.queueEvents||_.forceQueueEvents;if(!W){var X="rejecting event, queueEvent was "+D+", state was "+_.state;u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()",X),U(this.errorReason||new b.default(X,9e4,400));return}u.default.shouldLog(u.default.LOG_MICRO)&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()","queueing msg; "+l.default.stringify(M)),this.queue(M,U)},G.prototype.sendImpl=function(M){var D=M.message;M.ackRequired&&!M.sendAttempted&&(D.msgSerial=this.msgSerial++);try{this.activeProtocol.send(M)}catch(U){u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.sendImpl()","Unexpected exception in transport.send(): "+U.stack)}},G.prototype.queue=function(M,D){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.queue()","queueing event");var U=this.queuedMessages.last(),_=this.options.maxMessageSize;U&&!U.sendAttempted&&j(U.message,M,_)?(U.merged||(U.callback=S.default.create([U.callback]),U.merged=!0),U.callback.push(D)):this.queuedMessages.push(new m.PendingMessage(M,D))},G.prototype.sendQueuedMessages=function(){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.sendQueuedMessages()","sending "+this.queuedMessages.count()+" queued messages");for(var M;M=this.queuedMessages.shift();)this.sendImpl(M)},G.prototype.queuePendingMessages=function(M){M&&M.length&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.queuePendingMessages()","queueing "+M.length+" pending messages"),this.queuedMessages.prepend(M))},G.prototype.failQueuedMessages=function(M){var D=this.queuedMessages.count();D>0&&(u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.failQueuedMessages()","failing "+D+" queued messages, err = "+d.inspectError(M)),this.queuedMessages.completeAllMessages(M))},G.prototype.onChannelMessage=function(M,D){var U=this.activeProtocol&&D===this.activeProtocol.getTransport(),_=d.arrIn(this.pendingTransports,D)&&this.state==this.states.synchronizing;U||_?this.realtime.channels.onChannelMessage(M):d.arrIndexOf([v.ACK,v.NACK,v.ERROR],M.action)>-1?this.realtime.channels.onChannelMessage(M):u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onChannelMessage()","received message "+JSON.stringify(M)+"on defunct transport; discarding")},G.prototype.ping=function(M,D){var U=this;if(M){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.ping()","transport = "+M);var _=function(){M.off("heartbeat",q),D(new b.default("Timeout waiting for heartbeat response",5e4,500))},W=d.now(),X=d.cheapRandStr(),q=function(le){if(le===X){M.off("heartbeat",q),clearTimeout(re);var se=d.now()-W;D(null,se)}},re=setTimeout(_,this.options.timeouts.realtimeRequestTimeout);M.on("heartbeat",q),M.ping(X);return}if(this.state.state!=="connected"){D(new b.default("Unable to ping service; not connected",4e4,400));return}var ie=!1,ee=function(le,se){U.off("transport.active",Y),ie||(ie=!0,D(le,se))},Y=function(){ie||(ie=!0,R.default.Config.nextTick(function(){U.ping(null,D)}))};this.on("transport.active",Y),this.ping(this.activeProtocol.getTransport(),ee)},G.prototype.abort=function(M){this.activeProtocol.getTransport().fail(M)},G.prototype.registerProposedTransport=function(M){this.proposedTransports.push(M)},G.prototype.getTransportPreference=function(){var M,D;return this.transportPreference||s()&&((D=(M=R.default.WebStorage)===null||M===void 0?void 0:M.get)===null||D===void 0?void 0:D.call(M,L))},G.prototype.persistTransportPreference=function(M){var D,U;d.arrIn(x.default.upgradeTransports,M.shortName)&&(this.transportPreference=M.shortName,s()&&((U=(D=R.default.WebStorage)===null||D===void 0?void 0:D.set)===null||U===void 0||U.call(D,L,M.shortName)))},G.prototype.unpersistTransportPreference=function(){var M,D;this.transportPreference=null,s()&&((D=(M=R.default.WebStorage)===null||M===void 0?void 0:M.remove)===null||D===void 0||D.call(M,L))},G.prototype.actOnErrorFromAuthorize=function(M){if(M.code===40171)this.notifyState({state:"failed",error:M});else if(M.code===40102)this.notifyState({state:"failed",error:M});else if(M.statusCode===c.default.Forbidden){var D="Client configured authentication provider returned 403; failing the connection";u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.actOnErrorFromAuthorize()",D),this.notifyState({state:"failed",error:new b.default(D,80019,403,M)})}else{var D="Client configured authentication provider request failed";u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.actOnErrorFromAuthorize",D),this.notifyState({state:this.state.failState,error:new b.default(D,80019,401,M)})}},G.prototype.onConnectionDetailsUpdate=function(M,D){if(M){this.connectionDetails=M,M.maxMessageSize&&(this.options.maxMessageSize=M.maxMessageSize);var U=M.clientId;if(U){var _=this.realtime.auth._uncheckedSetClientId(U);if(_){u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.onConnectionDetailsUpdate()",_.message),D.fail(_);return}}var W=M.connectionStateTtl;W&&(this.connectionStateTtl=W),this.maxIdleInterval=M.maxIdleInterval,this.emit("connectiondetails",M)}},G.supportedTransports={},G}(y.default);r.default=$}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(7)),l=i.__importDefault(o(2)),d=function(m){i.__extends(x,m);function x(){var R=m.call(this)||this;return R.messages=[],R}return x.prototype.count=function(){return this.messages.length},x.prototype.push=function(R){this.messages.push(R)},x.prototype.shift=function(){return this.messages.shift()},x.prototype.last=function(){return this.messages[this.messages.length-1]},x.prototype.copyAll=function(){return this.messages.slice()},x.prototype.append=function(R){this.messages.push.apply(this.messages,R)},x.prototype.prepend=function(R){this.messages.unshift.apply(this.messages,R)},x.prototype.completeMessages=function(R,y,E){l.default.logAction(l.default.LOG_MICRO,"MessageQueue.completeMessages()","serial = "+R+"; count = "+y),E=E||null;var u=this.messages;if(u.length===0)throw new Error("MessageQueue.completeMessages(): completeMessages called on any empty MessageQueue");var C=u[0];if(C){var P=C.message.msgSerial,b=R+y;if(b>P)for(var p=u.splice(0,b-P),g=0,S=p;g<S.length;g++){var h=S[g];h.callback(E)}u.length==0&&this.emit("idle")}},x.prototype.completeAllMessages=function(R){this.completeMessages(0,Number.MAX_SAFE_INTEGER||Number.MAX_VALUE,R)},x.prototype.resetSendAttempted=function(){for(var R=0,y=this.messages;R<y.length;R++){var E=y[R];E.sendAttempted=!1}},x.prototype.clear=function(){l.default.logAction(l.default.LOG_MICRO,"MessageQueue.clear()","clearing "+this.messages.length+" messages"),this.messages=[],this.emit("idle")},x}(a.default);r.default=d},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function a(l,d,m,x){this.previous=l,this.current=d,m&&(this.retryIn=m),x&&(this.reason=x)}return a}();r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(10)),l=i.__importDefault(o(7)),d=i.__importStar(o(1)),m=i.__importDefault(o(33)),x=i.__importDefault(o(2)),R=i.__importDefault(o(54)),y=i.__importDefault(o(9)),E=i.__importDefault(o(39)),u=i.__importStar(o(4)),C=i.__importDefault(o(16)),P=i.__importDefault(o(21)),b=a.default.Action,p=function(){};function g(f){if(f&&"params"in f&&!d.isObject(f.params))return new u.default("options.params must be an object",4e4,400);if(f&&"modes"in f){if(!d.isArray(f.modes))return new u.default("options.modes must be an array",4e4,400);for(var c=0;c<f.modes.length;c++){var s=f.modes[c];if(!s||typeof s!="string"||!d.arrIn(a.default.channelModes,String.prototype.toUpperCase.call(s)))return new u.default("Invalid channel mode: "+s,4e4,400)}}}var S=function(f){i.__extends(c,f);function c(s,w,v){var k=f.call(this,s,w,v)||this;return k.retryCount=0,k.history=function(L,N){if(x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.history()","channel = "+this.name),N===void 0)if(typeof L=="function")N=L,L=null;else{if(this.rest.options.promises)return d.promisify(this,"history",arguments);N=p}if(L&&L.untilAttach){if(this.state!=="attached"){N(new u.default("option untilAttach requires the channel to be attached",4e4,400));return}if(!this.properties.attachSerial){N(new u.default("untilAttach was specified and channel is attached, but attachSerial is not defined",4e4,400));return}delete L.untilAttach,L.from_serial=this.properties.attachSerial}m.default.prototype._history.call(this,L,N)},k.whenState=function(L,N){return l.default.prototype.whenState.call(k,L,k.state,N)},x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel()","started; name = "+w),k.realtime=s,k.presence=new R.default(k),k.connectionManager=s.connection.connectionManager,k.state="initialized",k.subscriptions=new l.default,k.syncChannelSerial=void 0,k.properties={attachSerial:void 0,channelSerial:void 0},k.setOptions(v),k.errorReason=null,k._requestedFlags=null,k._mode=null,k._attachResume=!1,k._decodingContext={channelOptions:k.channelOptions,plugins:s.options.plugins||{},baseEncodedPreviousPayload:void 0},k._lastPayload={messageId:null,protocolMessageChannelSerial:null,decodeFailureRecoveryInProgress:null},k._allChannelChanges=new l.default,k}return c.prototype.invalidStateError=function(){return new u.default("Channel operation failed as channel state is "+this.state,90001,400,this.errorReason||void 0)},c.processListenerArgs=function(s){return s=Array.prototype.slice.call(s),typeof s[0]=="function"&&s.unshift(null),s[s.length-1]==null&&s.pop(),s},c.prototype.setOptions=function(s,w){var v=this.channelOptions;if(!w&&this.rest.options.promises)return d.promisify(this,"setOptions",arguments);var k=w||function(N){N&&x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel.setOptions()","Set options failed: "+N.toString())},L=g(s);if(L){k(L);return}m.default.prototype.setOptions.call(this,s),this._decodingContext&&(this._decodingContext.channelOptions=this.channelOptions),this._shouldReattachToSetOptions(s,v)?(this.attachImpl(),this._allChannelChanges.once(["attached","update","detached","failed"],function(N){switch(this.event){case"update":case"attached":k==null||k(null);return;default:k==null||k(N.reason);return}})):k()},c.prototype._shouldReattachToSetOptions=function(s,w){if(!(this.state==="attached"||this.state==="attaching"))return!1;if(s!=null&&s.params){var v=h(s.params),k=h(w.params);if(Object.keys(v).length!==Object.keys(k).length||!d.shallowEquals(k,v))return!0}return!!(s!=null&&s.modes&&(!w.modes||!d.arrEquals(s.modes,w.modes)))},c.prototype.publish=function(){for(var s=this,w=[],v=0;v<arguments.length;v++)w[v]=arguments[v];var k=w[0],L=w.length,N=w[L-1];if(typeof N!="function"){if(this.realtime.options.promises)return d.promisify(this,"publish",arguments);N=p,++L}if(!this.connectionManager.activeState()){N(this.connectionManager.getError());return}if(L==2)if(d.isObject(k))k=[y.default.fromValues(k)];else if(d.isArray(k))k=y.default.fromValuesArray(k);else throw new u.default("The single-argument form of publish() expects a message object or an array of message objects",40013,400);else k=[y.default.fromValues({name:w[0],data:w[1]})];var I=this.realtime.options.maxMessageSize;y.default.encodeArray(k,this.channelOptions,function(O){if(O){N(O);return}var A=y.default.getMessagesSize(k);if(A>I){N(new u.default("Maximum size of messages that can be published at once exceeded ( was "+A+" bytes; limit is "+I+" bytes)",40009,400));return}s.__publish(k,N)})},c.prototype.__publish=function(s,w){x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.publish()","message count = "+s.length);var v=this.state;switch(v){case"failed":case"suspended":w(u.default.fromValues(this.invalidStateError()));break;default:{x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.publish()","sending message; channel state is "+v);var k=new a.default;k.action=b.MESSAGE,k.channel=this.name,k.messages=s,this.sendMessage(k,w);break}}},c.prototype.onEvent=function(s){x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.onEvent()","received message");for(var w=this.subscriptions,v=0;v<s.length;v++){var k=s[v];w.emit(k.name,k)}},c.prototype.attach=function(s,w){var v;if(typeof s=="function"?(w=s,v=null):v=s,!w){if(this.realtime.options.promises)return d.promisify(this,"attach",arguments);w=function(k){k&&x.default.logAction(x.default.LOG_MAJOR,"RealtimeChannel.attach()","Channel attach failed: "+k.toString())}}if(v)x.default.deprecated("The ability to pass an array of channel mode flags as the first argument of `RealtimeChannel.attach()`","To set channel mode flags, populate the `modes` property of the channel options object that you pass to `Channels.get()` or `RealtimeChannel.setOptions()`."),this._requestedFlags=v;else if(this.state==="attached"){w(null,null);return}this._attach(!1,null,w)},c.prototype._attach=function(s,w,v){v||(v=function(L){L&&x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel._attach()","Channel attach failed: "+L.toString())});var k=this.connectionManager;if(!k.activeState()){v(k.getError());return}(this.state!=="attaching"||s)&&this.requestState("attaching",w),this.once(function(L){switch(this.event){case"attached":v==null||v(null,L);break;case"detached":case"suspended":case"failed":v==null||v(L.reason||k.getError()||new u.default("Unable to attach; reason unknown; state = "+this.event,9e4,500));break;case"detaching":v==null||v(new u.default("Attach request superseded by a subsequent detach request",9e4,409));break}})},c.prototype.attachImpl=function(){x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.attachImpl()","sending ATTACH message");var s=a.default.fromValues({action:b.ATTACH,channel:this.name,params:this.channelOptions.params,channelSerial:this.properties.channelSerial});this._requestedFlags?s.encodeModesToFlags(this._requestedFlags):this.channelOptions.modes&&s.encodeModesToFlags(d.allToUpperCase(this.channelOptions.modes)),this._attachResume&&s.setFlag("ATTACH_RESUME"),this._lastPayload.decodeFailureRecoveryInProgress&&(s.channelSerial=this._lastPayload.protocolMessageChannelSerial),this.sendMessage(s,p)},c.prototype.detach=function(s){if(!s){if(this.realtime.options.promises)return d.promisify(this,"detach",arguments);s=p}var w=this.connectionManager;if(!w.activeState()){s(w.getError());return}switch(this.state){case"suspended":this.notifyState("detached"),s();break;case"detached":s();break;case"failed":s(new u.default("Unable to detach; channel state = failed",90001,400));break;default:this.requestState("detaching");case"detaching":this.once(function(v){switch(this.event){case"detached":s();break;case"attached":case"suspended":case"failed":s(v.reason||w.getError()||new u.default("Unable to detach; reason unknown; state = "+this.event,9e4,500));break;case"attaching":s(new u.default("Detach request superseded by a subsequent attach request",9e4,409));break}})}},c.prototype.detachImpl=function(s){x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.detach()","sending DETACH message");var w=a.default.fromValues({action:b.DETACH,channel:this.name});this.sendMessage(w,s||p)},c.prototype.subscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=c.processListenerArgs(s),k=v[0],L=v[1],N=v[2];if(!N&&this.realtime.options.promises)return d.promisify(this,"subscribe",[k,L]);if(this.state==="failed"){N==null||N(u.default.fromValues(this.invalidStateError()));return}return k&&typeof k=="object"&&!Array.isArray(k)?this._subscribeFilter(k,L):this.subscriptions.on(k,L),this.attach(N||p)},c.prototype._subscribeFilter=function(s,w){var v=function(k){var L,N,I,O,A,T,j={name:k.name,refTimeserial:(N=(L=k.extras)===null||L===void 0?void 0:L.ref)===null||N===void 0?void 0:N.timeserial,refType:(O=(I=k.extras)===null||I===void 0?void 0:I.ref)===null||O===void 0?void 0:O.type,isRef:!!(!((T=(A=k.extras)===null||A===void 0?void 0:A.ref)===null||T===void 0)&&T.timeserial),clientId:k.clientId};Object.entries(s).find(function(B){var z=B[0],$=B[1];return $!==void 0?j[z]!==$:!1})||w(k)};this._addFilteredSubscription(s,w,v),this.subscriptions.on(v)},c.prototype._addFilteredSubscription=function(s,w,v){var k;if(this.filteredSubscriptions||(this.filteredSubscriptions=new Map),this.filteredSubscriptions.has(w)){var L=this.filteredSubscriptions.get(w);L.set(s,((k=L==null?void 0:L.get(s))===null||k===void 0?void 0:k.concat(v))||[v])}else this.filteredSubscriptions.set(w,new Map([[s,[v]]]))},c.prototype._getAndDeleteFilteredSubscriptions=function(s,w){var v=this;if(!this.filteredSubscriptions)return[];if(!w&&s)return Array.from(this.filteredSubscriptions.entries()).map(function(I){var O,A=I[0],T=I[1],j=T.get(s);return T.delete(s),T.size===0&&((O=v.filteredSubscriptions)===null||O===void 0||O.delete(A)),j}).reduce(function(I,O){var A;return O?(A=I).concat.apply(A,O):I},[]);if(!w||!this.filteredSubscriptions.has(w))return[];var k=this.filteredSubscriptions.get(w);if(!s){var L=Array.from(k.values()).reduce(function(I,O){return I.concat.apply(I,O)},[]);return this.filteredSubscriptions.delete(w),L}var N=k.get(s);return k.delete(s),N||[]},c.prototype.unsubscribe=function(){for(var s=this,w,v=[],k=0;k<arguments.length;k++)v[k]=arguments[k];var L=c.processListenerArgs(v),N=L[0],I=L[1];if(typeof N=="object"&&!I||!((w=this.filteredSubscriptions)===null||w===void 0)&&w.has(I)){this._getAndDeleteFilteredSubscriptions(N,I).forEach(function(O){return s.subscriptions.off(O)});return}this.subscriptions.off(N,I)},c.prototype.sync=function(){switch(this.state){case"initialized":case"detaching":case"detached":throw new u.PartialErrorInfo("Unable to sync to channel; not attached",4e4)}var s=this.connectionManager;if(!s.activeState())throw s.getError();var w=a.default.fromValues({action:b.SYNC,channel:this.name});this.syncChannelSerial&&(w.channelSerial=this.syncChannelSerial),s.send(w)},c.prototype.sendMessage=function(s,w){this.connectionManager.send(s,this.realtime.options.queueMessages,w)},c.prototype.sendPresence=function(s,w){var v=a.default.fromValues({action:b.PRESENCE,channel:this.name,presence:d.isArray(s)?C.default.fromValuesArray(s):[C.default.fromValues(s)]});this.sendMessage(v,w)},c.prototype.onMessage=function(s){(s.action===b.ATTACHED||s.action===b.MESSAGE||s.action===b.PRESENCE)&&this.setChannelSerial(s.channelSerial);var w,v=!1;switch(s.action){case b.ATTACHED:{this.properties.attachSerial=s.channelSerial,this._mode=s.getMode(),this.params=s.params||{};var k=s.decodeModesFromFlags();this.modes=k&&d.allToLowerCase(k)||void 0;var L=s.hasFlag("RESUMED"),N=s.hasFlag("HAS_PRESENCE"),I=s.hasFlag("HAS_BACKLOG");if(this.state==="attached"){L||this.presence.onAttached(N);var O=new E.default(this.state,this.state,L,I,s.error);this._allChannelChanges.emit("update",O),(!L||this.channelOptions.updateOnAttached)&&this.emit("update",O)}else this.state==="detaching"?this.checkPendingState():this.notifyState("attached",s.error,L,N,I);break}case b.DETACHED:{var A=s.error?u.default.fromValues(s.error):new u.default("Channel detached",90001,404);this.state==="detaching"?this.notifyState("detached",A):this.state==="attaching"?this.notifyState("suspended",A):this.requestState("attaching",A);break}case b.SYNC:if(v=!0,w=this.syncChannelSerial=s.channelSerial,!s.presence)break;case b.PRESENCE:{for(var T=s.presence,j=s.id,B=s.connectionId,z=s.timestamp,$=this.channelOptions,V=void 0,G=0;G<T.length;G++)try{V=T[G],C.default.decode(V,$),V.connectionId||(V.connectionId=B),V.timestamp||(V.timestamp=z),V.id||(V.id=j+":"+G)}catch(X){x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel.onMessage()",X.toString())}this.presence.setPresence(T,v,w);break}case b.MESSAGE:{if(this.state!=="attached"){x.default.logAction(x.default.LOG_MAJOR,"RealtimeChannel.onMessage()",'Message "'+s.id+'" skipped as this channel "'+this.name+'" state is not "attached" (state is "'+this.state+'").');return}var M=s.messages,D=M[0],U=M[M.length-1],j=s.id,B=s.connectionId,z=s.timestamp;if(D.extras&&D.extras.delta&&D.extras.delta.from!==this._lastPayload.messageId){var _='Delta message decode failure - previous message not available for message "'+s.id+'" on this channel "'+this.name+'".';x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel.onMessage()",_),this._startDecodeFailureRecovery(new u.default(_,40018,400));break}for(var G=0;G<M.length;G++){var _=M[G];try{y.default.decode(_,this._decodingContext)}catch(Y){switch(x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel.onMessage()",Y.toString()),Y.code){case 40018:this._startDecodeFailureRecovery(Y);return;case 40019:case 40021:this.notifyState("failed",Y);return}}_.connectionId||(_.connectionId=B),_.timestamp||(_.timestamp=z),_.id||(_.id=j+":"+G)}this._lastPayload.messageId=U.id,this._lastPayload.protocolMessageChannelSerial=s.channelSerial,this.onEvent(M);break}case b.ERROR:{var W=s.error;W&&W.code==80016?this.checkPendingState():this.notifyState("failed",u.default.fromValues(W));break}default:x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel.onMessage()","Fatal protocol error: unrecognised action ("+s.action+")"),this.connectionManager.abort(P.default.unknownChannelErr())}},c.prototype._startDecodeFailureRecovery=function(s){var w=this;this._lastPayload.decodeFailureRecoveryInProgress||(x.default.logAction(x.default.LOG_MAJOR,"RealtimeChannel.onMessage()","Starting decode failure recovery process."),this._lastPayload.decodeFailureRecoveryInProgress=!0,this._attach(!0,s,function(){w._lastPayload.decodeFailureRecoveryInProgress=!1}))},c.prototype.onAttached=function(){x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel.onAttached","activating channel; name = "+this.name)},c.prototype.notifyState=function(s,w,v,k,L){if(x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.notifyState","name = "+this.name+", current state = "+this.state+", notifying state "+s),this.clearStateTimer(),d.arrIn(["detached","suspended","failed"],s)&&(this.properties.channelSerial=null),s!==this.state){this.presence.actOnChannelState(s,k,w),s==="suspended"&&this.connectionManager.state.sendEvents?this.startRetryTimer():this.cancelRetryTimer(),w&&(this.errorReason=w);var N=new E.default(this.state,s,v,L,w),I=s==="failed"?x.default.LOG_ERROR:x.default.LOG_MAJOR;x.default.logAction(I,'Channel state for channel "'+this.name+'"',s+(w?"; reason: "+w:"")),s!=="attaching"&&s!=="suspended"&&(this.retryCount=0),s==="attached"&&this.onAttached(),s==="attached"?this._attachResume=!0:(s==="detaching"||s==="failed")&&(this._attachResume=!1),this.state=s,this._allChannelChanges.emit(s,N),this.emit(s,N)}},c.prototype.requestState=function(s,w){x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel.requestState","name = "+this.name+", state = "+s),this.notifyState(s,w),this.checkPendingState()},c.prototype.checkPendingState=function(){var s=this.connectionManager.state;if(!(s.sendEvents||s.forceQueueEvents)){x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel.checkPendingState","sendEvents is false; state is "+this.connectionManager.state.state);return}switch(x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel.checkPendingState","name = "+this.name+", state = "+this.state),this.state){case"attaching":this.startStateTimerIfNotRunning(),this.attachImpl();break;case"detaching":this.startStateTimerIfNotRunning(),this.detachImpl();break;case"attached":this.sync();break}},c.prototype.timeoutPendingState=function(){switch(this.state){case"attaching":{var s=new u.default("Channel attach timed out",90007,408);this.notifyState("suspended",s);break}case"detaching":{var s=new u.default("Channel detach timed out",90007,408);this.notifyState("attached",s);break}default:this.checkPendingState();break}},c.prototype.startStateTimerIfNotRunning=function(){var s=this;this.stateTimer||(this.stateTimer=setTimeout(function(){x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel.startStateTimerIfNotRunning","timer expired"),s.stateTimer=null,s.timeoutPendingState()},this.realtime.options.timeouts.realtimeRequestTimeout))},c.prototype.clearStateTimer=function(){var s=this.stateTimer;s&&(clearTimeout(s),this.stateTimer=null)},c.prototype.startRetryTimer=function(){var s=this;if(!this.retryTimer){this.retryCount++;var w=d.getRetryTime(this.realtime.options.timeouts.channelRetryTimeout,this.retryCount);this.retryTimer=setTimeout(function(){s.state==="suspended"&&s.connectionManager.state.sendEvents&&(s.retryTimer=null,x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel retry timer expired","attempting a new attach"),s.requestState("attaching"))},w)}},c.prototype.cancelRetryTimer=function(){this.retryTimer&&(clearTimeout(this.retryTimer),this.retryTimer=null)},c.prototype.getReleaseErr=function(){var s=this.state;return s==="initialized"||s==="detached"||s==="failed"?null:new u.default("Can only release a channel in a state where there is no possibility of further updates from the server being received (initialized, detached, or failed); was "+s,90001,400)},c.prototype.setChannelSerial=function(s){x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.setChannelSerial()","Updating channel serial; serial = "+s+"; previous = "+this.properties.channelSerial),s&&(this.properties.channelSerial=s)},c}(m.default);function h(f){var c=f||{};c.agent;var s=i.__rest(c,["agent"]);return s}r.default=S},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function a(l,d,m,x,R){this.previous=l,this.current=d,d==="attached"&&(this.resumed=m,this.hasBacklog=x),R&&(this.reason=R)}return a}();r.default=i},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){var a=i,l=a.lib,d=l.WordArray,m=l.Hasher,x=a.algo,R=[],y=x.SHA1=m.extend({_doReset:function(){this._hash=new d.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(E,u){for(var C=this._hash.words,P=C[0],b=C[1],p=C[2],g=C[3],S=C[4],h=0;h<80;h++){if(h<16)R[h]=E[u+h]|0;else{var f=R[h-3]^R[h-8]^R[h-14]^R[h-16];R[h]=f<<1|f>>>31}var c=(P<<5|P>>>27)+S+R[h];h<20?c+=(b&p|~b&g)+1518500249:h<40?c+=(b^p^g)+1859775393:h<60?c+=(b&p|b&g|p&g)-1894007588:c+=(b^p^g)-899497514,S=g,g=p,p=b<<30|b>>>2,b=P,P=c}C[0]=C[0]+P|0,C[1]=C[1]+b|0,C[2]=C[2]+p|0,C[3]=C[3]+g|0,C[4]=C[4]+S|0},_doFinalize:function(){var E=this._data,u=E.words,C=this._nDataBytes*8,P=E.sigBytes*8;return u[P>>>5]|=128<<24-P%32,u[(P+64>>>9<<4)+14]=Math.floor(C/4294967296),u[(P+64>>>9<<4)+15]=C,E.sigBytes=u.length*4,this._process(),this._hash},clone:function(){var E=m.clone.call(this);return E._hash=this._hash.clone(),E}});a.SHA1=m._createHelper(y),a.HmacSHA1=m._createHmacHelper(y)}(),i.SHA1})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});function i(h){if(h===void 0)return"undefined";var f,c;if(h instanceof ArrayBuffer?(c="ArrayBuffer",f=new DataView(h)):h instanceof DataView&&(c="DataView",f=h),!f)return JSON.stringify(h);for(var s=[],w=0;w<h.byteLength;w++){if(w>20){s.push("...");break}var v=f.getUint8(w).toString(16);v.length===1&&(v="0"+v),s.push(v)}return"<"+c+" "+s.join(" ")+">"}function a(h,f,c){for(var s=0,w=c.length;s<w;s++){var v=c.charCodeAt(s);if(v<128){h.setUint8(f++,v>>>0&127|0);continue}if(v<2048){h.setUint8(f++,v>>>6&31|192),h.setUint8(f++,v>>>0&63|128);continue}if(v<65536){h.setUint8(f++,v>>>12&15|224),h.setUint8(f++,v>>>6&63|128),h.setUint8(f++,v>>>0&63|128);continue}if(v<1114112){h.setUint8(f++,v>>>18&7|240),h.setUint8(f++,v>>>12&63|128),h.setUint8(f++,v>>>6&63|128),h.setUint8(f++,v>>>0&63|128);continue}throw new Error("bad codepoint "+v)}}function l(h,f,c){for(var s="",w=f,v=f+c;w<v;w++){var k=h.getUint8(w);if(!(k&128)){s+=String.fromCharCode(k);continue}if((k&224)===192){s+=String.fromCharCode((k&15)<<6|h.getUint8(++w)&63);continue}if((k&240)===224){s+=String.fromCharCode((k&15)<<12|(h.getUint8(++w)&63)<<6|(h.getUint8(++w)&63)<<0);continue}if((k&248)===240){s+=String.fromCharCode((k&7)<<18|(h.getUint8(++w)&63)<<12|(h.getUint8(++w)&63)<<6|(h.getUint8(++w)&63)<<0);continue}throw new Error("Invalid byte "+k.toString(16))}return s}function d(h){for(var f=0,c=0,s=h.length;c<s;c++){var w=h.charCodeAt(c);if(w<128){f+=1;continue}if(w<2048){f+=2;continue}if(w<65536){f+=3;continue}if(w<1114112){f+=4;continue}throw new Error("bad codepoint "+w)}return f}function m(h,f){var c=S(h,f);if(c!==0){var s=new ArrayBuffer(c),w=new DataView(s);return g(h,w,0,f),s}}var x=65536*65536,R=1/x;function y(h,f){return f=f||0,h.getInt32(f)*x+h.getUint32(f+4)}function E(h,f){return f=f||0,h.getUint32(f)*x+h.getUint32(f+4)}function u(h,f,c){c<9223372036854776e3?(h.setInt32(f,Math.floor(c*R)),h.setInt32(f+4,c&-1)):(h.setUint32(f,2147483647),h.setUint32(f+4,2147483647))}function C(h,f,c){c<18446744073709552e3?(h.setUint32(f,Math.floor(c*R)),h.setInt32(f+4,c&-1)):(h.setUint32(f,4294967295),h.setUint32(f+4,4294967295))}var P=function(){function h(f,c){var s=this;this.map=function(w){for(var v={},k=0;k<w;k++){var L=s.parse();v[L]=s.parse()}return v},this.bin=function(w){var v=new ArrayBuffer(w);return new Uint8Array(v).set(new Uint8Array(s.view.buffer,s.offset,w),0),s.offset+=w,v},this.buf=this.bin,this.str=function(w){var v=l(s.view,s.offset,w);return s.offset+=w,v},this.array=function(w){for(var v=new Array(w),k=0;k<w;k++)v[k]=s.parse();return v},this.ext=function(w){return s.offset+=w,{type:s.view.getInt8(s.offset),data:s.buf(w)}},this.parse=function(){var w=s.view.getUint8(s.offset),v,k;if(!(w&128))return s.offset++,w;if((w&240)===128)return k=w&15,s.offset++,s.map(k);if((w&240)===144)return k=w&15,s.offset++,s.array(k);if((w&224)===160)return k=w&31,s.offset++,s.str(k);if((w&224)===224)return v=s.view.getInt8(s.offset),s.offset++,v;switch(w){case 192:return s.offset++,null;case 193:s.offset++;return;case 194:return s.offset++,!1;case 195:return s.offset++,!0;case 196:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.bin(k);case 197:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.bin(k);case 198:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.bin(k);case 199:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.ext(k);case 200:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.ext(k);case 201:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.ext(k);case 202:return v=s.view.getFloat32(s.offset+1),s.offset+=5,v;case 203:return v=s.view.getFloat64(s.offset+1),s.offset+=9,v;case 204:return v=s.view.getUint8(s.offset+1),s.offset+=2,v;case 205:return v=s.view.getUint16(s.offset+1),s.offset+=3,v;case 206:return v=s.view.getUint32(s.offset+1),s.offset+=5,v;case 207:return v=E(s.view,s.offset+1),s.offset+=9,v;case 208:return v=s.view.getInt8(s.offset+1),s.offset+=2,v;case 209:return v=s.view.getInt16(s.offset+1),s.offset+=3,v;case 210:return v=s.view.getInt32(s.offset+1),s.offset+=5,v;case 211:return v=y(s.view,s.offset+1),s.offset+=9,v;case 212:return k=1,s.offset++,s.ext(k);case 213:return k=2,s.offset++,s.ext(k);case 214:return k=4,s.offset++,s.ext(k);case 215:return k=8,s.offset++,s.ext(k);case 216:return k=16,s.offset++,s.ext(k);case 217:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.str(k);case 218:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.str(k);case 219:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.str(k);case 220:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.array(k);case 221:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.array(k);case 222:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.map(k);case 223:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.map(k)}throw new Error("Unknown type 0x"+w.toString(16))},this.offset=c||0,this.view=f}return h}();function b(h){var f=new DataView(h),c=new P(f),s=c.parse();if(c.offset!==h.byteLength)throw new Error(h.byteLength-c.offset+" trailing bytes");return s}function p(h,f){return Object.keys(h).filter(function(c){var s=h[c],w=typeof s;return(!f||s!=null)&&(w!=="function"||!!s.toJSON)})}function g(h,f,c,s){var w=typeof h;if(typeof h=="string"){var v=d(h);if(v<32)return f.setUint8(c,v|160),a(f,c+1,h),1+v;if(v<256)return f.setUint8(c,217),f.setUint8(c+1,v),a(f,c+2,h),2+v;if(v<65536)return f.setUint8(c,218),f.setUint16(c+1,v),a(f,c+3,h),3+v;if(v<4294967296)return f.setUint8(c,219),f.setUint32(c+1,v),a(f,c+5,h),5+v}if(ArrayBuffer.isView&&ArrayBuffer.isView(h)&&(h=h.buffer),h instanceof ArrayBuffer){var k=h.byteLength;if(k<256)return f.setUint8(c,196),f.setUint8(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+2),2+k;if(k<65536)return f.setUint8(c,197),f.setUint16(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+3),3+k;if(k<4294967296)return f.setUint8(c,198),f.setUint32(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+5),5+k}if(typeof h=="number"){if(Math.floor(h)!==h)return f.setUint8(c,203),f.setFloat64(c+1,h),9;if(h>=0){if(h<128)return f.setUint8(c,h),1;if(h<256)return f.setUint8(c,204),f.setUint8(c+1,h),2;if(h<65536)return f.setUint8(c,205),f.setUint16(c+1,h),3;if(h<4294967296)return f.setUint8(c,206),f.setUint32(c+1,h),5;if(h<18446744073709552e3)return f.setUint8(c,207),C(f,c+1,h),9;throw new Error("Number too big 0x"+h.toString(16))}if(h>=-32)return f.setInt8(c,h),1;if(h>=-128)return f.setUint8(c,208),f.setInt8(c+1,h),2;if(h>=-32768)return f.setUint8(c,209),f.setInt16(c+1,h),3;if(h>=-2147483648)return f.setUint8(c,210),f.setInt32(c+1,h),5;if(h>=-9223372036854776e3)return f.setUint8(c,211),u(f,c+1,h),9;throw new Error("Number too small -0x"+(-h).toString(16).substr(1))}if(w==="undefined")return s?0:(f.setUint8(c,212),f.setUint8(c+1,0),f.setUint8(c+2,0),3);if(h===null)return s?0:(f.setUint8(c,192),1);if(w==="boolean")return f.setUint8(c,h?195:194),1;if(typeof h.toJSON=="function")return g(h.toJSON(),f,c,s);if(w==="object"){var L,N=0,I=void 0,O=Array.isArray(h);if(O?L=h.length:(I=p(h,s),L=I.length),L<16?(f.setUint8(c,L|(O?144:128)),N=1):L<65536?(f.setUint8(c,O?220:222),f.setUint16(c+1,L),N=3):L<4294967296&&(f.setUint8(c,O?221:223),f.setUint32(c+1,L),N=5),O)for(var A=0;A<L;A++)N+=g(h[A],f,c+N,s);else if(I)for(var A=0;A<L;A++){var T=I[A];N+=g(T,f,c+N),N+=g(h[T],f,c+N,s)}return N}if(w==="function")return 0;throw new Error("Unknown type "+w)}function S(h,f){var c=typeof h;if(c==="string"){var s=d(h);if(s<32)return 1+s;if(s<256)return 2+s;if(s<65536)return 3+s;if(s<4294967296)return 5+s}if(ArrayBuffer.isView&&ArrayBuffer.isView(h)&&(h=h.buffer),h instanceof ArrayBuffer){var w=h.byteLength;if(w<256)return 2+w;if(w<65536)return 3+w;if(w<4294967296)return 5+w}if(typeof h=="number"){if(Math.floor(h)!==h)return 9;if(h>=0){if(h<128)return 1;if(h<256)return 2;if(h<65536)return 3;if(h<4294967296)return 5;if(h<18446744073709552e3)return 9;throw new Error("Number too big 0x"+h.toString(16))}if(h>=-32)return 1;if(h>=-128)return 2;if(h>=-32768)return 3;if(h>=-2147483648)return 5;if(h>=-9223372036854776e3)return 9;throw new Error("Number too small -0x"+h.toString(16).substr(1))}if(c==="boolean")return 1;if(h===null)return f?0:1;if(h===void 0)return f?0:3;if(typeof h.toJSON=="function")return S(h.toJSON(),f);if(c==="object"){var v,k=0;if(Array.isArray(h)){v=h.length;for(var L=0;L<v;L++)k+=S(h[L],f)}else{var N=p(h,f);v=N.length;for(var L=0;L<v;L++){var I=N[L];k+=S(I)+S(h[I],f)}}if(v<16)return 1+k;if(v<65536)return 3+k;if(v<4294967296)return 5+k;throw new Error("Array or object too long 0x"+v.toString(16))}if(c==="function")return 0;throw new Error("Unknown type "+c)}r.default={encode:m,decode:b,inspect:i,utf8Write:a,utf8Read:l,utf8ByteCount:d}},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(30)),l=i.__importDefault(o(50)),d=i.__importDefault(o(3)),m=i.__importDefault(o(4)),x=i.__importDefault(o(55)),R=i.__importDefault(o(57)),y=i.__importDefault(o(62)),E=i.__importDefault(o(64)),u=i.__importDefault(o(68)),C=i.__importDefault(o(2)),P=o(8),b=i.__importDefault(o(65)),p=i.__importDefault(o(66)),g=i.__importDefault(o(41)),S=(0,R.default)(E.default,x.default);d.default.Crypto=S,d.default.BufferUtils=x.default,d.default.Http=y.default,d.default.Config=E.default,d.default.Transports=u.default,d.default.WebStorage=b.default,a.default.Crypto=S,l.default.Crypto=S,C.default.initLogHandlers(),d.default.Defaults=(0,P.getDefaults)(p.default),d.default.Config.agent&&(d.default.Defaults.agent+=" "+d.default.Config.agent),d.default.Config.noUpgrade&&(d.default.Defaults.upgradeTransports=[]),r.default={ErrorInfo:m.default,Rest:a.default,Realtime:l.default,msgpack:g.default}},function(n){n.exports=JSON.parse('{"name":"ably","description":"Realtime client library for Ably, the realtime messaging service","version":"1.2.50","license":"Apache-2.0","bugs":{"url":"https://github.com/ably/ably-js/issues","email":"support@ably.com"},"main":"./build/ably-node.js","typings":"./ably.d.ts","react-native":{"./build/ably-node.js":"./build/ably-reactnative.js"},"browser":{"./build/ably-node.js":"./build/ably-commonjs.js"},"files":["build/**","ably.d.ts","callbacks.d.ts","callbacks.js","promises.d.ts","promises.js","resources/**","src/**","react/**"],"dependencies":{"@ably/msgpack-js":"^0.4.0","got":"^11.8.5","ws":"^8.14.2"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"devDependencies":{"@ably/vcdiff-decoder":"1.0.4","@arethetypeswrong/cli":"^0.13.1","@babel/preset-env":"^7.23.6","@testing-library/react":"^13.3.0","@types/crypto-js":"^4.0.1","@types/jmespath":"^0.15.2","@types/node":"^15.0.0","@types/request":"^2.48.7","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.14.0","@typescript-eslint/parser":"^5.14.0","@vitejs/plugin-react":"^1.3.2","async":"ably-forks/async#requirejs","aws-sdk":"^2.1413.0","babel-loader":"^8.3.0","chai":"^4.2.0","copy-webpack-plugin":"^6.4.1","cors":"^2.8.5","crypto-js":"ably-forks/crypto-js#crypto-lite","eslint":"^7.13.0","eslint-plugin-import":"^2.28.0","eslint-plugin-jsdoc":"^40.0.0","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-security":"^1.4.0","express":"^4.17.1","glob":"~4.4","google-closure-compiler":"^20180610.0.1","grunt":"^1.6.1","grunt-bump":"^0.3.1","grunt-cli":"~1.2.0","grunt-closure-tools":"^1.0.0","grunt-contrib-concat":"~0.5","grunt-shell":"~1.1","grunt-webpack":"^4.0.2","hexy":"~0.2","jmespath":"^0.16.0","jsdom":"^20.0.0","kexec":"ably-forks/node-kexec#update-for-node-12","minimist":"^1.2.5","mocha":"^8.1.3","mocha-junit-reporter":"^2.2.1","null-loader":"^4.0.1","playwright":"^1.39.0","prettier":"^2.5.1","react":">=18.1.0","react-dom":">=18.1.0","requirejs":"~2.1","shelljs":"~0.8","source-map-explorer":"^2.5.2","ts-loader":"^8.2.0","tsconfig-paths-webpack-plugin":"^4.0.1","tslib":"^2.3.1","typedoc":"^0.23.8","typescript":"^4.6.4","vite":"^4.4.9","vitest":"^0.18.0","webpack":"^4.44.2","webpack-cli":"^4.2.0","webpack-node-externals":"^3.0.0"},"engines":{"node":">=5.10.x"},"repository":"ably/ably-js","jspm":{"registry":"npm","directories":{"lib":"build"},"main":"ably"},"scripts":{"start:react":"npx vite serve","grunt":"grunt","test":"grunt test","test:node":"grunt test:node","test:node:skip-build":"grunt mocha","test:webserver":"grunt test:webserver","test:playwright":"node test/support/runPlaywrightTests.js","test:react":"vitest run","concat":"grunt concat","build":"grunt build:all && npm run build:react","build:node":"grunt build:node","build:browser":"grunt build:browser","build:react":"npm run build:react:mjs && npm run build:react:cjs && cp src/platform/react-hooks/res/package.react.json react/package.json","build:react:mjs":"tsc --project src/platform/react-hooks/tsconfig.mjs.json && cp src/platform/react-hooks/res/package.mjs.json react/mjs/package.json","build:react:cjs":"tsc --project src/platform/react-hooks/tsconfig.cjs.json && cp src/platform/react-hooks/res/package.cjs.json react/cjs/package.json","requirejs":"grunt requirejs","lint":"eslint .","lint:fix":"eslint --fix .","check-closure-compiler":"grunt check-closure-compiler","prepare":"npm run build","format":"prettier --write --ignore-path .gitignore --ignore-path .prettierignore src test ably.d.ts webpack.config.js Gruntfile.js scripts/cdn_deploy.js docs/chrome-mv3.md","format:check":"prettier --check --ignore-path .gitignore --ignore-path .prettierignore src test ably.d.ts webpack.config.js Gruntfile.js scripts/cdn_deploy.js","sourcemap":"source-map-explorer build/ably.min.js","sourcemap:noencryption":"source-map-explorer build/ably.noencryption.min.js","docs":"typedoc --entryPoints ably.d.ts --out docs/generated/default --readme docs/landing-pages/default.md && typedoc --entryPoints promises.d.ts --out docs/generated/promises --name \\"ably (Promise-based)\\" --readme docs/landing-pages/promises.md && cp docs/landing-pages/choose-library.html docs/generated/index.html"}}')},function(n,r){},function(n,r,o){(function(i,a){n.exports=a(o(6),o(32),o(25))})(this,function(i){return i.HmacSHA256})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(47)),d=i.__importDefault(o(15)),m=i.__importDefault(o(20)),x=i.__importDefault(o(4)),R=i.__importDefault(o(48)),y=function(){},E=function(){function b(p){this.rest=p,this.admin=new u(p)}return b}(),u=function(){function b(p){this.rest=p,this.deviceRegistrations=new C(p),this.channelSubscriptions=new P(p)}return b.prototype.publish=function(p,g,S){var h=this.rest,f=h.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(h.options,f),s={},w=a.mixin({recipient:p},g);if(typeof S!="function"){if(this.rest.options.promises)return a.promisify(this,"publish",arguments);S=y}h.options.headers&&a.mixin(c,h.options.headers),h.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var v=a.encodeBody(w,f);d.default.post(h,"/push/publish",v,c,s,null,function(k){return S(k)})},b}(),C=function(){function b(p){this.rest=p}return b.prototype.save=function(p,g){var S=this.rest,h=l.default.fromValues(p),f=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(S.options,f),s={};if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"save",arguments);g=y}S.options.headers&&a.mixin(c,S.options.headers),S.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var w=a.encodeBody(h,f);d.default.put(S,"/push/deviceRegistrations/"+encodeURIComponent(p.id),w,c,s,null,function(v,k,L,N){g(v,v?void 0:l.default.fromResponseBody(k,N?void 0:f))})},b.prototype.get=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(S.options,h),c=p.id||p;if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"get",arguments);g=y}if(typeof c!="string"||!c.length){g(new x.default("First argument to DeviceRegistrations#get must be a deviceId string or DeviceDetails",4e4,400));return}S.options.headers&&a.mixin(f,S.options.headers),d.default.get(S,"/push/deviceRegistrations/"+encodeURIComponent(c),f,{},null,function(s,w,v,k){g(s,s?void 0:l.default.fromResponseBody(w,k?void 0:h))})},b.prototype.list=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(S.options,h);if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"list",arguments);g=y}S.options.headers&&a.mixin(c,S.options.headers),new m.default(S,"/push/deviceRegistrations",c,f,function(s,w,v){return l.default.fromResponseBody(s,v?void 0:h)}).get(p,g)},b.prototype.remove=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(S.options,h),c={},s=p.id||p;if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"remove",arguments);g=y}if(typeof s!="string"||!s.length){g(new x.default("First argument to DeviceRegistrations#remove must be a deviceId string or DeviceDetails",4e4,400));return}S.options.headers&&a.mixin(f,S.options.headers),S.options.pushFullWait&&a.mixin(c,{fullWait:"true"}),d.default.delete(S,"/push/deviceRegistrations/"+encodeURIComponent(s),f,c,null,function(w){return g(w)})},b.prototype.removeWhere=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(S.options,h);if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"removeWhere",arguments);g=y}S.options.headers&&a.mixin(f,S.options.headers),S.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),d.default.delete(S,"/push/deviceRegistrations",f,p,null,function(c){return g(c)})},b}(),P=function(){function b(p){this.remove=b.prototype.removeWhere,this.rest=p}return b.prototype.save=function(p,g){var S=this.rest,h=R.default.fromValues(p),f=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(S.options,f),s={};if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"save",arguments);g=y}S.options.headers&&a.mixin(c,S.options.headers),S.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var w=a.encodeBody(h,f);d.default.post(S,"/push/channelSubscriptions",w,c,s,null,function(v,k,L,N){g(v,!v&&R.default.fromResponseBody(k,N?void 0:f))})},b.prototype.list=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(S.options,h);if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"list",arguments);g=y}S.options.headers&&a.mixin(c,S.options.headers),new m.default(S,"/push/channelSubscriptions",c,f,function(s,w,v){return R.default.fromResponseBody(s,v?void 0:h)}).get(p,g)},b.prototype.removeWhere=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(S.options,h);if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"removeWhere",arguments);g=y}S.options.headers&&a.mixin(f,S.options.headers),S.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),d.default.delete(S,"/push/channelSubscriptions",f,p,null,function(c){return g(c)})},b.prototype.listChannels=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(S.options,h);if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"listChannels",arguments);g=y}S.options.headers&&a.mixin(c,S.options.headers),S.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),new m.default(S,"/push/channels",c,f,function(s,w,v){for(var k=!v&&h?a.decodeBody(s,h):s,L=0;L<k.length;L++)k[L]=String(k[L]);return k}).get(p,g)},b}();r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(4)),d;(function(R){R.Phone="phone",R.Tablet="tablet",R.Desktop="desktop",R.TV="tv",R.Watch="watch",R.Car="car",R.Embedded="embedded",R.Other="other"})(d||(d={}));var m;(function(R){R.Android="android",R.IOS="ios",R.Browser="browser"})(m||(m={}));var x=function(){function R(){}return R.prototype.toJSON=function(){var y,E,u;return{id:this.id,deviceSecret:this.deviceSecret,platform:this.platform,formFactor:this.formFactor,clientId:this.clientId,metadata:this.metadata,deviceIdentityToken:this.deviceIdentityToken,push:{recipient:(y=this.push)===null||y===void 0?void 0:y.recipient,state:(E=this.push)===null||E===void 0?void 0:E.state,error:(u=this.push)===null||u===void 0?void 0:u.error}}},R.prototype.toString=function(){var y,E,u,C,P="[DeviceDetails";return this.id&&(P+="; id="+this.id),this.platform&&(P+="; platform="+this.platform),this.formFactor&&(P+="; formFactor="+this.formFactor),this.clientId&&(P+="; clientId="+this.clientId),this.metadata&&(P+="; metadata="+this.metadata),this.deviceIdentityToken&&(P+="; deviceIdentityToken="+JSON.stringify(this.deviceIdentityToken)),!((y=this.push)===null||y===void 0)&&y.recipient&&(P+="; push.recipient="+JSON.stringify(this.push.recipient)),!((E=this.push)===null||E===void 0)&&E.state&&(P+="; push.state="+this.push.state),!((u=this.push)===null||u===void 0)&&u.error&&(P+="; push.error="+JSON.stringify(this.push.error)),!((C=this.push)===null||C===void 0)&&C.metadata&&(P+="; push.metadata="+this.push.metadata),P+="]",P},R.fromResponseBody=function(y,E){return E&&(y=a.decodeBody(y,E)),a.isArray(y)?R.fromValuesArray(y):R.fromValues(y)},R.fromValues=function(y){return y.error=y.error&&l.default.fromValues(y.error),Object.assign(new R,y)},R.fromValuesArray=function(y){for(var E=y.length,u=new Array(E),C=0;C<E;C++)u[C]=R.fromValues(y[C]);return u},R.toRequestBody=a.encodeBody,R}();r.default=x},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=function(){function d(){}return d.prototype.toJSON=function(){return{channel:this.channel,deviceId:this.deviceId,clientId:this.clientId}},d.prototype.toString=function(){var m="[PushChannelSubscription";return this.channel&&(m+="; channel="+this.channel),this.deviceId&&(m+="; deviceId="+this.deviceId),this.clientId&&(m+="; clientId="+this.clientId),m+="]",m},d.fromResponseBody=function(m,x){return x&&(m=a.decodeBody(m,x)),a.isArray(m)?d.fromValuesArray(m):d.fromValues(m)},d.fromValues=function(m){return Object.assign(new d,m)},d.fromValuesArray=function(m){for(var x=m.length,R=new Array(x),y=0;y<x;y++)R[y]=d.fromValues(m[y]);return R},d.toRequestBody=a.encodeBody,d}();r.default=l},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=function(){function S(h){this.count=h&&h.count||0,this.data=h&&h.data||0,this.uncompressedData=h&&h.uncompressedData||0,this.failed=h&&h.failed||0,this.refused=h&&h.refused||0}return S}(),d=function(S){i.__extends(h,S);function h(f){var c=S.call(this,f)||this;return f&&f.category&&(c.category={},a.forInOwnNonNullProperties(f.category,function(s){c.category[s]=new l(f.category[s])})),c}return h}(l),m=function(){function S(h){this.peak=h&&h.peak||0,this.min=h&&h.min||0,this.mean=h&&h.mean||0,this.opened=h&&h.opened||0,this.refused=h&&h.refused||0}return S}(),x=function(){function S(h){this.succeeded=h&&h.succeeded||0,this.failed=h&&h.failed||0,this.refused=h&&h.refused||0}return S}(),R=function(){function S(h){this.plain=new m(h&&h.plain),this.tls=new m(h&&h.tls),this.all=new m(h&&h.all)}return S}(),y=function(){function S(h){this.messages=new d(h&&h.messages),this.presence=new d(h&&h.presence),this.all=new d(h&&h.all)}return S}(),E=function(){function S(h){this.realtime=new y(h&&h.realtime),this.rest=new y(h&&h.rest),this.webhook=new y(h&&h.webhook),this.sharedQueue=new y(h&&h.sharedQueue),this.externalQueue=new y(h&&h.externalQueue),this.httpEvent=new y(h&&h.httpEvent),this.push=new y(h&&h.push),this.all=new y(h&&h.all)}return S}(),u=function(){function S(h){this.all=new y(h&&h.all),this.inbound=new E(h&&h.inbound),this.outbound=new E(h&&h.outbound)}return S}(),C=function(){function S(h){this.all=new y(h&&h.all),this.producerPaid=new u(h&&h.producerPaid),this.consumerPaid=new u(h&&h.consumerPaid)}return S}(),P=function(){function S(h){this.messages=h&&h.messages||0;var f=h&&h.notifications;this.notifications={invalid:f&&f.invalid||0,attempted:f&&f.attempted||0,successful:f&&f.successful||0,failed:f&&f.failed||0},this.directPublishes=h&&h.directPublishes||0}return S}(),b=function(){function S(h){this.succeeded=h&&h.succeeded||0,this.skipped=h&&h.skipped||0,this.failed=h&&h.failed||0}return S}(),p=function(){function S(h){var f=this;this.delta=void 0,h&&h.delta&&(this.delta={},a.forInOwnNonNullProperties(h.delta,function(c){f.delta[c]=new b(h.delta[c])}))}return S}(),g=function(S){i.__extends(h,S);function h(f){var c=S.call(this,f)||this;return c.persisted=new y(f&&f.persisted),c.connections=new R(f&&f.connections),c.channels=new m(f&&f.channels),c.apiRequests=new x(f&&f.apiRequests),c.tokenRequests=new x(f&&f.tokenRequests),c.xchgProducer=new C(f&&f.xchgProducer),c.xchgConsumer=new C(f&&f.xchgConsumer),c.push=new P(f&&f.pushStats),c.processed=new p(f&&f.processed),c.inProgress=f&&f.inProgress||void 0,c.unit=f&&f.unit||void 0,c.intervalId=f&&f.intervalId||void 0,c}return h.fromValues=function(f){return new h(f)},h}(u);r.default=g},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(30)),d=i.__importDefault(o(7)),m=i.__importDefault(o(2)),x=i.__importDefault(o(51)),R=i.__importDefault(o(38)),y=i.__importDefault(o(8)),E=i.__importDefault(o(4)),u=i.__importDefault(o(10)),C=i.__importDefault(o(35)),P=i.__importDefault(o(3)),b=i.__importDefault(o(9)),p=function(S){i.__extends(h,S);function h(f){var c=S.call(this,f)||this;return m.default.logAction(m.default.LOG_MINOR,"Realtime()",""),c.connection=new x.default(c,c.options),c.channels=new g(c),f.autoConnect!==!1&&c.connect(),c}return h.prototype.connect=function(){m.default.logAction(m.default.LOG_MINOR,"Realtime.connect()",""),this.connection.connect()},h.prototype.close=function(){m.default.logAction(m.default.LOG_MINOR,"Realtime.close()",""),this.connection.close()},h.Promise=function(f){return f=y.default.objectifyOptions(f),f.promises=!0,new h(f)},h.Callbacks=h,h.Utils=a,h.ConnectionManager=C.default,h.Platform=P.default,h.ProtocolMessage=u.default,h.Message=b.default,h}(l.default),g=function(S){i.__extends(h,S);function h(f){var c=S.call(this)||this;return c.realtime=f,c.all=Object.create(null),f.connection.connectionManager.on("transport.active",function(){c.onTransportActive()}),c}return h.prototype.channelSerials=function(){for(var f={},c=0,s=a.keysArray(this.all,!0);c<s.length;c++){var w=s[c],v=this.all[w];v.properties.channelSerial&&(f[w]=v.properties.channelSerial)}return f},h.prototype.recoverChannels=function(f){for(var c=0,s=a.keysArray(f,!0);c<s.length;c++){var w=s[c],v=this.get(w);v.properties.channelSerial=f[w]}},h.prototype.onChannelMessage=function(f){var c=f.channel;if(c===void 0){m.default.logAction(m.default.LOG_ERROR,"Channels.onChannelMessage()","received event unspecified channel, action = "+f.action);return}var s=this.all[c];if(!s){m.default.logAction(m.default.LOG_ERROR,"Channels.onChannelMessage()","received event for non-existent channel: "+c);return}s.onMessage(f)},h.prototype.onTransportActive=function(){for(var f in this.all){var c=this.all[f];c.state==="attaching"||c.state==="detaching"?c.checkPendingState():c.state==="suspended"?c._attach(!1,null):c.state==="attached"&&c.requestState("attaching")}},h.prototype.propogateConnectionInterruption=function(f,c){var s={closing:"detached",closed:"detached",failed:"failed",suspended:"suspended"},w=["attaching","attached","detaching","suspended"],v=s[f];for(var k in this.all){var L=this.all[k];a.arrIn(w,L.state)&&L.notifyState(v,c)}},h.prototype.get=function(f,c){f=String(f);var s=this.all[f];if(!s)s=this.all[f]=new R.default(this.realtime,f,c);else if(c){if(s._shouldReattachToSetOptions(c,s.channelOptions))throw new E.default("Channels.get() cannot be used to set channel options that would cause the channel to reattach. Please, use RealtimeChannel.setOptions() instead.",4e4,400);s.setOptions(c)}return s},h.prototype.getDerived=function(f,c,s){if(c.filter){var w=a.toBase64(c.filter),v=a.matchDerivedChannel(f);f="[filter=".concat(w).concat(v.qualifierParam,"]").concat(v.channelName)}return this.get(f,s)},h.prototype.release=function(f){f=String(f);var c=this.all[f];if(c){var s=c.getReleaseErr();if(s)throw s;delete this.all[f]}},h}(d.default);r.default=p},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(35)),m=i.__importDefault(o(2)),x=i.__importDefault(o(37)),R=i.__importDefault(o(3));function y(){}var E=function(u){i.__extends(C,u);function C(P,b){var p=u.call(this)||this;return p.whenState=function(g,S){return l.default.prototype.whenState.call(p,g,p.state,S,new x.default(void 0,g))},p.ably=P,p.connectionManager=new d.default(P,b),p.state=p.connectionManager.state.state,p.key=void 0,p.id=void 0,p.errorReason=null,p.connectionManager.on("connectionstate",function(g){var S=p.state=g.current;R.default.Config.nextTick(function(){p.emit(S,g)})}),p.connectionManager.on("update",function(g){R.default.Config.nextTick(function(){p.emit("update",g)})}),p}return C.prototype.connect=function(){m.default.logAction(m.default.LOG_MINOR,"Connection.connect()",""),this.connectionManager.requestState({state:"connecting"})},C.prototype.ping=function(P){if(m.default.logAction(m.default.LOG_MINOR,"Connection.ping()",""),!P){if(this.ably.options.promises)return a.promisify(this,"ping",arguments);P=y}this.connectionManager.ping(null,P)},C.prototype.close=function(){m.default.logAction(m.default.LOG_MINOR,"Connection.close()","connectionKey = "+this.key),this.connectionManager.requestState({state:"closing"})},Object.defineProperty(C.prototype,"recoveryKey",{get:function(){return this.createRecoveryKey()},enumerable:!1,configurable:!0}),C.prototype.createRecoveryKey=function(){return this.connectionManager.createRecoveryKey()},C}(l.default);r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.PendingMessage=void 0;var i=o(0),a=i.__importDefault(o(10)),l=i.__importStar(o(1)),d=i.__importDefault(o(7)),m=i.__importDefault(o(2)),x=i.__importDefault(o(36)),R=i.__importDefault(o(4)),y=a.default.Action,E=function(){function C(P,b){this.message=P,this.callback=b,this.merged=!1;var p=P.action;this.sendAttempted=!1,this.ackRequired=p==y.MESSAGE||p==y.PRESENCE}return C}();r.PendingMessage=E;var u=function(C){i.__extends(P,C);function P(b){var p=C.call(this)||this;return p.transport=b,p.messageQueue=new x.default,b.on("ack",function(g,S){p.onAck(g,S)}),b.on("nack",function(g,S,h){p.onNack(g,S,h)}),p}return P.prototype.onAck=function(b,p){m.default.logAction(m.default.LOG_MICRO,"Protocol.onAck()","serial = "+b+"; count = "+p),this.messageQueue.completeMessages(b,p)},P.prototype.onNack=function(b,p,g){m.default.logAction(m.default.LOG_ERROR,"Protocol.onNack()","serial = "+b+"; count = "+p+"; err = "+l.inspectError(g)),g||(g=new R.default("Unable to send message; channel not responding",50001,500)),this.messageQueue.completeMessages(b,p,g)},P.prototype.onceIdle=function(b){var p=this.messageQueue;if(p.count()===0){b();return}p.once("idle",b)},P.prototype.send=function(b){b.ackRequired&&this.messageQueue.push(b),m.default.shouldLog(m.default.LOG_MICRO)&&m.default.logAction(m.default.LOG_MICRO,"Protocol.send()","sending msg; "+a.default.stringify(b.message)),b.sendAttempted=!0,this.transport.send(b.message)},P.prototype.getTransport=function(){return this.transport},P.prototype.getPendingMessages=function(){return this.messageQueue.copyAll()},P.prototype.clearPendingMessages=function(){return this.messageQueue.clear()},P.prototype.finish=function(){var b=this.transport;this.onceIdle(function(){b.disconnect()})},P}(d.default);r.default=u},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(3)),l=i.__importStar(o(1)),d=i.__importDefault(o(26)),m=i.__importDefault(o(8)),x=i.__importDefault(o(2)),R=i.__importDefault(o(10)),y=i.__importDefault(o(4)),E="web_socket";function u(b){return!!b.on}var C=function(b){i.__extends(p,b);function p(g,S,h){var f=b.call(this,g,S,h)||this;return f.shortName=E,h.heartbeats=a.default.Config.useProtocolHeartbeats,f.wsHost=m.default.getHost(h.options,h.host,!0),f}return p.isAvailable=function(){return!!a.default.Config.WebSocket},p.prototype.createWebSocket=function(g,S){return this.uri=g+l.toQueryString(S),new a.default.Config.WebSocket(this.uri)},p.prototype.toString=function(){return"WebSocketTransport; uri="+this.uri},p.prototype.connect=function(){x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.connect()","starting"),d.default.prototype.connect.call(this);var g=this,S=this.params,h=S.options,f=h.tls?"wss://":"ws://",c=f+this.wsHost+":"+m.default.getPort(h)+"/";x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.connect()","uri: "+c),this.auth.getAuthParams(function(s,w){if(!g.isDisposed){var v="";for(var k in w)v+=" "+k+": "+w[k]+";";if(x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.connect()","authParams:"+v+" err: "+s),s){g.disconnect(s);return}var L=S.getConnectParams(w);try{var N=g.wsConnection=g.createWebSocket(c,L);N.binaryType=a.default.Config.binaryType,N.onopen=function(){g.onWsOpen()},N.onclose=function(I){g.onWsClose(I)},N.onmessage=function(I){g.onWsData(I.data)},N.onerror=function(I){g.onWsError(I)},u(N)&&N.on("ping",function(){g.onActivity()})}catch(I){x.default.logAction(x.default.LOG_ERROR,"WebSocketTransport.connect()","Unexpected exception creating websocket: err = "+(I.stack||I.message)),g.disconnect(I)}}})},p.prototype.send=function(g){var S=this.wsConnection;if(!S){x.default.logAction(x.default.LOG_ERROR,"WebSocketTransport.send()","No socket connection");return}try{S.send(R.default.serialize(g,this.params.format))}catch(f){var h="Exception from ws connection when trying to send: "+l.inspectError(f);x.default.logAction(x.default.LOG_ERROR,"WebSocketTransport.send()",h),this.finish("disconnected",new y.default(h,5e4,500))}},p.prototype.onWsData=function(g){x.default.logAction(x.default.LOG_MICRO,"WebSocketTransport.onWsData()","data received; length = "+g.length+"; type = "+typeof g);try{this.onProtocolMessage(R.default.deserialize(g,this.format))}catch(S){x.default.logAction(x.default.LOG_ERROR,"WebSocketTransport.onWsData()","Unexpected exception handing channel message: "+S.stack)}},p.prototype.onWsOpen=function(){x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.onWsOpen()","opened WebSocket"),this.emit("preconnect")},p.prototype.onWsClose=function(g){var S,h;if(typeof g=="object"?(h=g.code,S=g.wasClean||h===1e3):(h=g,S=h==1e3),delete this.wsConnection,S){x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.onWsClose()","Cleanly closed WebSocket");var f=new y.default("Websocket closed",80003,400);this.finish("disconnected",f)}else{var c="Unclean disconnection of WebSocket ; code = "+h,f=new y.default(c,80003,400);x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.onWsClose()",c),this.finish("disconnected",f)}this.emit("disposed")},p.prototype.onWsError=function(g){var S=this;x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.onError()","Error from WebSocket: "+g.message),a.default.Config.nextTick(function(){S.disconnect(Error(g.message))})},p.prototype.dispose=function(){x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.dispose()",""),this.isDisposed=!0;var g=this.wsConnection;g&&(g.onmessage=function(){},delete this.wsConnection,a.default.Config.nextTick(function(){if(x.default.logAction(x.default.LOG_MICRO,"WebSocketTransport.dispose()","closing websocket"),!g)throw new Error("WebSocketTransport.dispose(): wsConnection is not defined");g.close()}))},p}(d.default);function P(b){return C.isAvailable()&&(b.supportedTransports[E]=C),C}r.default=P},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(34)),d=i.__importDefault(o(7)),m=i.__importDefault(o(2)),x=i.__importDefault(o(16)),R=i.__importStar(o(4)),y=i.__importDefault(o(38)),E=i.__importDefault(o(24)),u=i.__importDefault(o(39)),C=function(){};function P(f){return f.channel.realtime.auth.clientId}function b(f){var c=f.channel.realtime,s=c.auth.clientId;return(!s||s==="*")&&c.connection.state==="connected"}function p(f,c,s){switch(f.state){case"attached":case"suspended":s();break;case"initialized":case"detached":case"detaching":case"attaching":f.attach(function(w){w?c(w):s()});break;default:c(R.default.fromValues(f.invalidStateError()))}}function g(f,c){if(f.isSynthesized()||c.isSynthesized())return f.timestamp>=c.timestamp;var s=f.parseId(),w=c.parseId();return s.msgSerial===w.msgSerial?s.index>w.index:s.msgSerial>w.msgSerial}var S=function(f){i.__extends(c,f);function c(s){var w=f.call(this,s)||this;return w.channel=s,w.syncComplete=!1,w.members=new h(w,function(v){return v.clientId+":"+v.connectionId}),w._myMembers=new h(w,function(v){return v.clientId}),w.subscriptions=new d.default,w.pendingPresence=[],w}return c.prototype.enter=function(s,w){if(b(this))throw new R.default("clientId must be specified to enter a presence channel",40012,400);return this._enterOrUpdateClient(void 0,void 0,s,"enter",w)},c.prototype.update=function(s,w){if(b(this))throw new R.default("clientId must be specified to update presence data",40012,400);return this._enterOrUpdateClient(void 0,void 0,s,"update",w)},c.prototype.enterClient=function(s,w,v){return this._enterOrUpdateClient(void 0,s,w,"enter",v)},c.prototype.updateClient=function(s,w,v){return this._enterOrUpdateClient(void 0,s,w,"update",v)},c.prototype._enterOrUpdateClient=function(s,w,v,k,L){var N=this;if(!L)if(typeof v=="function")L=v,v=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"_enterOrUpdateClient",[s,w,v,k]);L=C}var I=this.channel;if(!I.connectionManager.activeState()){L(I.connectionManager.getError());return}m.default.logAction(m.default.LOG_MICRO,"RealtimePresence."+k+"Client()","channel = "+I.name+", id = "+s+", client = "+(w||"(implicit) "+P(this)));var O=x.default.fromData(v);O.action=k,s&&(O.id=s),w&&(O.clientId=w),x.default.encode(O,I.channelOptions,function(A){if(A){L(A);return}switch(I.state){case"attached":I.sendPresence(O,L);break;case"initialized":case"detached":I.attach();case"attaching":N.pendingPresence.push({presence:O,callback:L});break;default:A=new R.PartialErrorInfo("Unable to "+k+" presence channel while in "+I.state+" state",90001),A.code=90001,L(A)}})},c.prototype.leave=function(s,w){if(b(this))throw new R.default("clientId must have been specified to enter or leave a presence channel",40012,400);return this.leaveClient(void 0,s,w)},c.prototype.leaveClient=function(s,w,v){if(!v)if(typeof w=="function")v=w,w=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"leaveClient",[s,w]);v=C}var k=this.channel;if(!k.connectionManager.activeState()){v==null||v(k.connectionManager.getError());return}m.default.logAction(m.default.LOG_MICRO,"RealtimePresence.leaveClient()","leaving; channel = "+this.channel.name+", client = "+s);var L=x.default.fromData(w);switch(L.action="leave",s&&(L.clientId=s),k.state){case"attached":k.sendPresence(L,v);break;case"attaching":this.pendingPresence.push({presence:L,callback:v});break;case"initialized":case"failed":{var N=new R.PartialErrorInfo("Unable to leave presence channel (incompatible state)",90001);v==null||v(N);break}default:v==null||v(k.invalidStateError())}},c.prototype.get=function(s,w){var v=this,k=Array.prototype.slice.call(arguments);k.length==1&&typeof k[0]=="function"&&k.unshift(null),s=k[0],w=k[1];var L=!s||("waitForSync"in s?s.waitForSync:!0);if(!w){if(this.channel.realtime.options.promises)return a.promisify(this,"get",k);w=C}function N(I){w(null,s?I.list(s):I.values())}if(this.channel.state==="suspended"){L?w(R.default.fromValues({statusCode:400,code:91005,message:"Presence state is out of sync due to channel being in the SUSPENDED state"})):N(this.members);return}p(this.channel,w,function(){var I=v.members;L?I.waitSync(function(){N(I)}):N(I)})},c.prototype.history=function(s,w){if(m.default.logAction(m.default.LOG_MICRO,"RealtimePresence.history()","channel = "+this.name),w===void 0)if(typeof s=="function")w=s,s=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"history",arguments);w=C}s&&s.untilAttach&&(this.channel.state==="attached"?(delete s.untilAttach,s.from_serial=this.channel.properties.attachSerial):w(new R.default("option untilAttach requires the channel to be attached, was: "+this.channel.state,4e4,400))),l.default.prototype._history.call(this,s,w)},c.prototype.setPresence=function(s,w,v){m.default.logAction(m.default.LOG_MICRO,"RealtimePresence.setPresence()","received presence for "+s.length+" participants; syncChannelSerial = "+v);var k,L,N=this.members,I=this._myMembers,O=[],A=this.channel.connectionManager.connectionId;w&&(this.members.startSync(),v&&(L=v.match(/^[\w-]+:(.*)$/))&&(k=L[1]));for(var T=0;T<s.length;T++){var j=x.default.fromValues(s[T]);switch(j.action){case"leave":N.remove(j)&&O.push(j),j.connectionId===A&&!j.isSynthesized()&&I.remove(j);break;case"enter":case"present":case"update":N.put(j)&&O.push(j),j.connectionId===A&&I.put(j);break}}w&&!k&&(N.endSync(),this.channel.syncChannelSerial=null);for(var T=0;T<O.length;T++){var j=O[T];this.subscriptions.emit(j.action,j)}},c.prototype.onAttached=function(s){m.default.logAction(m.default.LOG_MINOR,"RealtimePresence.onAttached()","channel = "+this.channel.name+", hasPresence = "+s),s?this.members.startSync():(this._synthesizeLeaves(this.members.values()),this.members.clear()),this._ensureMyMembersPresent();var w=this.pendingPresence,v=w.length;if(v){this.pendingPresence=[];var k=[],L=E.default.create();m.default.logAction(m.default.LOG_MICRO,"RealtimePresence.onAttached","sending "+v+" queued presence messages");for(var N=0;N<v;N++){var I=w[N];k.push(I.presence),L.push(I.callback)}this.channel.sendPresence(k,L)}},c.prototype.actOnChannelState=function(s,w,v){switch(s){case"attached":this.onAttached(w);break;case"detached":case"failed":this._clearMyMembers(),this.members.clear();case"suspended":this.failPendingPresence(v);break}},c.prototype.failPendingPresence=function(s){if(this.pendingPresence.length){m.default.logAction(m.default.LOG_MINOR,"RealtimeChannel.failPendingPresence","channel; name = "+this.channel.name+", err = "+a.inspectError(s));for(var w=0;w<this.pendingPresence.length;w++)try{this.pendingPresence[w].callback(s)}catch(v){}this.pendingPresence=[]}},c.prototype._clearMyMembers=function(){this._myMembers.clear()},c.prototype._ensureMyMembersPresent=function(){var s=this,w=this._myMembers,v=function(N){if(N){var I="Presence auto-re-enter failed: "+N.toString(),O=new R.default(I,91004,400);m.default.logAction(m.default.LOG_ERROR,"RealtimePresence._ensureMyMembersPresent()",I);var A=new u.default(s.channel.state,s.channel.state,!0,!1,O);s.channel.emit("update",A)}};for(var k in w.map){var L=w.map[k];m.default.logAction(m.default.LOG_MICRO,"RealtimePresence._ensureMyMembersPresent()",'Auto-reentering clientId "'+L.clientId+'" into the presence set'),this._enterOrUpdateClient(L.id,L.clientId,L.data,"enter",v)}},c.prototype._synthesizeLeaves=function(s){var w=this.subscriptions;a.arrForEach(s,function(v){var k=x.default.fromValues({action:"leave",connectionId:v.connectionId,clientId:v.clientId,data:v.data,encoding:v.encoding,timestamp:a.now()});w.emit("leave",k)})},c.prototype.on=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];m.default.renamedMethod("RealtimePresence","on","subscribe"),this.subscribe.apply(this,s)},c.prototype.off=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];m.default.renamedMethod("RealtimePresence","off","unsubscribe"),this.unsubscribe.apply(this,s)},c.prototype.subscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=y.default.processListenerArgs(s),k=v[0],L=v[1],N=v[2],I=this.channel;if(!N){if(this.channel.realtime.options.promises)return a.promisify(this,"subscribe",[k,L]);N=C}if(I.state==="failed"){N(R.default.fromValues(I.invalidStateError()));return}this.subscriptions.on(k,L),I.attach(N)},c.prototype.unsubscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=y.default.processListenerArgs(s),k=v[0],L=v[1];this.subscriptions.off(k,L)},c}(l.default),h=function(f){i.__extends(c,f);function c(s,w){var v=f.call(this)||this;return v.presence=s,v.map=Object.create(null),v.syncInProgress=!1,v.residualMembers=null,v.memberKey=w,v}return c.prototype.get=function(s){return this.map[s]},c.prototype.getClient=function(s){var w=this.map,v=[];for(var k in w){var L=w[k];L.clientId==s&&L.action!="absent"&&v.push(L)}return v},c.prototype.list=function(s){var w=this.map,v=s&&s.clientId,k=s&&s.connectionId,L=[];for(var N in w){var I=w[N];I.action!=="absent"&&(v&&v!=I.clientId||k&&k!=I.connectionId||L.push(I))}return L},c.prototype.put=function(s){(s.action==="enter"||s.action==="update")&&(s=x.default.fromValues(s),s.action="present");var w=this.map,v=this.memberKey(s);this.residualMembers&&delete this.residualMembers[v];var k=w[v];return k&&!g(s,k)?!1:(w[v]=s,!0)},c.prototype.values=function(){var s=this.map,w=[];for(var v in s){var k=s[v];k.action!="absent"&&w.push(k)}return w},c.prototype.remove=function(s){var w=this.map,v=this.memberKey(s),k=w[v];return k&&!g(s,k)?!1:(this.syncInProgress?(s=x.default.fromValues(s),s.action="absent",w[v]=s):delete w[v],!0)},c.prototype.startSync=function(){var s=this.map,w=this.syncInProgress;m.default.logAction(m.default.LOG_MINOR,"PresenceMap.startSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),this.syncInProgress||(this.residualMembers=a.copy(s),this.setInProgress(!0))},c.prototype.endSync=function(){var s=this.map,w=this.syncInProgress;if(m.default.logAction(m.default.LOG_MINOR,"PresenceMap.endSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),w){for(var v in s){var k=s[v];k.action==="absent"&&delete s[v]}this.presence._synthesizeLeaves(a.valuesArray(this.residualMembers));for(var v in this.residualMembers)delete s[v];this.residualMembers=null,this.setInProgress(!1)}this.emit("sync")},c.prototype.waitSync=function(s){var w=this.syncInProgress;if(m.default.logAction(m.default.LOG_MINOR,"PresenceMap.waitSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),!w){s();return}this.once("sync",s)},c.prototype.clear=function(){this.map={},this.setInProgress(!1),this.residualMembers=null},c.prototype.setInProgress=function(s){m.default.logAction(m.default.LOG_MICRO,"PresenceMap.setInProgress()","inProgress = "+s),this.syncInProgress=s,this.presence.syncComplete=!s},c}(d.default);r.default=S},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=o(56),l=o(31),d=o(11),m=i.__importDefault(o(5)),x=i.__importDefault(o(3)),R=function(){function y(){this.base64CharSet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",this.hexCharSet="0123456789abcdef"}return y.prototype.isWordArray=function(E){return E!=null&&E.sigBytes!==void 0},y.prototype.isArrayBuffer=function(E){return E!=null&&E.constructor===ArrayBuffer},y.prototype.isTypedArray=function(E){return!!ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(E)},y.prototype.uint8ViewToBase64=function(E){for(var u="",C=this.base64CharSet,P=E.byteLength,b=P%3,p=P-b,g,S,h,f,c,s=0;s<p;s=s+3)c=E[s]<<16|E[s+1]<<8|E[s+2],g=(c&16515072)>>18,S=(c&258048)>>12,h=(c&4032)>>6,f=c&63,u+=C[g]+C[S]+C[h]+C[f];return b==1?(c=E[p],g=(c&252)>>2,S=(c&3)<<4,u+=C[g]+C[S]+"=="):b==2&&(c=E[p]<<8|E[p+1],g=(c&64512)>>10,S=(c&1008)>>4,h=(c&15)<<2,u+=C[g]+C[S]+C[h]+"="),u},y.prototype.base64ToArrayBuffer=function(E){for(var u=atob==null?void 0:atob(E),C=u.length,P=new Uint8Array(C),b=0;b<C;b++){var p=u.charCodeAt(b);P[b]=p}return P.buffer},y.prototype.isBuffer=function(E){return this.isArrayBuffer(E)||this.isWordArray(E)||this.isTypedArray(E)},y.prototype.toBuffer=function(E){if(!ArrayBuffer)throw new Error("Can't convert to Buffer: browser does not support the necessary types");if(this.isArrayBuffer(E))return new Uint8Array(E);if(this.isTypedArray(E))return new Uint8Array(E.buffer);if(this.isWordArray(E)){for(var u=new ArrayBuffer(E.sigBytes),C=new Uint8Array(u),P=0;P<E.sigBytes;P++)C[P]=E.words[P>>>2]>>>24-P%4*8&255;return C}throw new Error("BufferUtils.toBuffer expected an arraybuffer, typed array, or CryptoJS wordarray")},y.prototype.toArrayBuffer=function(E){return this.isArrayBuffer(E)?E:this.toBuffer(E).buffer},y.prototype.toWordArray=function(E){return this.isTypedArray(E)&&(E=E.buffer),this.isWordArray(E)?E:m.default.create(E)},y.prototype.base64Encode=function(E){return this.isWordArray(E)?(0,d.stringify)(E):this.uint8ViewToBase64(this.toBuffer(E))},y.prototype.base64Decode=function(E){return ArrayBuffer&&x.default.Config.atob?this.base64ToArrayBuffer(E):(0,d.parse)(E)},y.prototype.hexEncode=function(E){return(0,a.stringify)(this.toWordArray(E))},y.prototype.hexDecode=function(E){var u=(0,a.parse)(E);return ArrayBuffer?this.toArrayBuffer(u):u},y.prototype.utf8Encode=function(E){return x.default.Config.TextEncoder?new x.default.Config.TextEncoder().encode(E).buffer:(0,l.parse)(E)},y.prototype.utf8Decode=function(E){if(!this.isBuffer(E))throw new Error("Expected input of utf8decode to be an arraybuffer, typed array, or CryptoJS wordarray");return TextDecoder&&!this.isWordArray(E)?new TextDecoder().decode(E):(E=this.toWordArray(E),(0,l.stringify)(E))},y.prototype.bufferCompare=function(E,u){if(!E)return-1;if(!u)return 1;var C=this.toWordArray(E),P=this.toWordArray(u);C.clamp(),P.clamp();var b=C.sigBytes-P.sigBytes;if(b!=0)return b;for(var p=C.words,g=P.words,S=0;S<p.length;S++)if(b=p[S]-g[S],b!=0)return b;return 0},y.prototype.byteLength=function(E){return this.isArrayBuffer(E)||this.isTypedArray(E)?E.byteLength:this.isWordArray(E)?E.sigBytes:-1},y.prototype.typedArrayToBuffer=function(E){return E.buffer},y}();r.default=new R},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return i.enc.Hex})},function(n,r,o){o.r(r);var i=o(5),a=o.n(i),l=o(11),d=o(23),m=o.n(d),x=o(2),R=o.n(x),y=o(4),E=o.n(y),u=function(C,P){var b="aes",p=256,g="cbc",S=16,h=4,f=4294967296,c=2147483648,s;if(C.getRandomWordArray)s=C.getRandomWordArray;else if(typeof Uint32Array!="undefined"&&C.getRandomValues){var w=new Uint32Array(h);s=function(T,j){var B=T/4,z=B==h?w:new Uint32Array(B);C.getRandomValues(z,function($){typeof j!="undefined"&&j($,P.toWordArray(z))})}}else s=function(T,j){R.a.logAction(R.a.LOG_MAJOR,"Ably.Crypto.generateRandom()","Warning: the browser you are using does not support secure cryptographically secure randomness generation; falling back to insecure Math.random()");for(var B=T/4,z=new Array(B),$=0;$<B;$++)z[$]=Math.floor(Math.random()*f)-c;j(null,a.a.create(z))};function v(T){return T+S&-16}function k(T){if(T.algorithm==="aes"&&T.mode==="cbc"){if(T.keyLength===128||T.keyLength===256)return;throw new Error("Unsupported key length "+T.keyLength+" for aes-cbc encryption. Encryption key must be 128 or 256 bits (16 or 32 ASCII characters)")}}function L(T){return T.replace("_","/").replace("-","+")}var N=[a.a.create([269488144,269488144,269488144,269488144],16),a.a.create([16777216],1),a.a.create([33685504],2),a.a.create([50529024],3),a.a.create([67372036],4),a.a.create([84215045,83886080],5),a.a.create([101058054,101056512],6),a.a.create([117901063,117901056],7),a.a.create([134744072,134744072],8),a.a.create([151587081,151587081,150994944],9),a.a.create([168430090,168430090,168427520],10),a.a.create([185273099,185273099,185273088],11),a.a.create([202116108,202116108,202116108],12),a.a.create([218959117,218959117,218959117,218103808],13),a.a.create([235802126,235802126,235802126,235798528],14),a.a.create([252645135,252645135,252645135,252645135],15),a.a.create([269488144,269488144,269488144,269488144],16)];function I(){}function O(){this.algorithm=null,this.keyLength=null,this.mode=null,this.key=null}I.CipherParams=O,I.getDefaultParams=function(T){var j;if(typeof T=="function"||typeof T=="string"){if(R.a.deprecated("The ability to pass a callback to `Crypto.getDefaultParams()`","This method now directly returns its result, instead of returning it asynchronously via a callback. Please update your code so that it uses the return value of this method instead of passing a callback."),typeof T=="function")R.a.deprecated("The ability to call `Crypto.getDefaultParams()` without specifying an encryption key","Please update your code so that it instead passes an object whose `key` property contains an encryption key. That is, replace `Crypto.getDefaultParams()` with `Crypto.getDefaultParams({ key })`, where `key` is an encryption key that you have generated (for example from the `Crypto.generateRandomKey()` method)."),I.generateRandomKey(function(z){T(null,I.getDefaultParams({key:z}))});else if(typeof arguments[1]=="function")R.a.deprecated("The ability to pass the encryption key as the first argument of `Crypto.getDefaultParams()`","Please update your code so that it instead passes an object whose `key` property contains the key. That is, replace `Crypto.getDefaultParams(key)` with `Crypto.getDefaultParams({ key })`."),arguments[1](null,I.getDefaultParams({key:T}));else throw new Error("Invalid arguments for Crypto.getDefaultParams");return}if(!T.key)throw new Error("Crypto.getDefaultParams: a key is required");typeof T.key=="string"?j=Object(l.parse)(L(T.key)):j=P.toWordArray(T.key);var B=new O;if(B.key=j,B.algorithm=T.algorithm||b,B.keyLength=j.words.length*(4*8),B.mode=T.mode||g,T.keyLength&&T.keyLength!==B.keyLength)throw new Error("Crypto.getDefaultParams: a keyLength of "+T.keyLength+" was specified, but the key actually has length "+B.keyLength);return k(B),B},I.generateRandomKey=function(T,j){arguments.length==1&&typeof T=="function"&&(j=T,T=void 0),s((T||p)/8,function(B,z){j!==void 0&&j(B?E.a.fromValues(B):null,z)})},I.getCipher=function(T){var j=T instanceof O?T:I.getDefaultParams(T);return{cipherParams:j,cipher:new A(j,h,T.iv)}};function A(T,j,B){this.algorithm=T.algorithm+"-"+String(T.keyLength)+"-"+T.mode,this.cjsAlgorithm=T.algorithm.toUpperCase().replace(/-\d+$/,""),this.key=P.toWordArray(T.key),B&&(this.iv=P.toWordArray(B).clone()),this.blockLengthWords=j}return A.prototype.encrypt=function(T,j){R.a.logAction(R.a.LOG_MICRO,"CBCCipher.encrypt()",""),T=P.toWordArray(T);var B=T.sigBytes,z=v(B),$=this,V=function(){$.getIv(function(G,M){if(G){j(G);return}var D=$.encryptCipher.process(T.concat(N[z-B])),U=M.concat(D);j(null,U)})};this.encryptCipher?V():this.iv?(this.encryptCipher=m.a.algo[this.cjsAlgorithm].createEncryptor(this.key,{iv:this.iv}),V()):s(S,function(G,M){if(G){j(G);return}$.encryptCipher=m.a.algo[$.cjsAlgorithm].createEncryptor($.key,{iv:M}),$.iv=M,V()})},A.prototype.decrypt=function(T){R.a.logAction(R.a.LOG_MICRO,"CBCCipher.decrypt()",""),T=P.toWordArray(T);var j=this.blockLengthWords,B=T.words,z=a.a.create(B.slice(0,j)),$=a.a.create(B.slice(j)),V=m.a.algo[this.cjsAlgorithm].createDecryptor(this.key,{iv:z}),G=V.process($),M=V.finalize();return V.reset(),M&&M.sigBytes&&G.concat(M),G},A.prototype.getIv=function(T){if(this.iv){var j=this.iv;this.iv=null,T(null,j);return}var B=this;s(S,function(z,$){if(z){T(z);return}T(null,B.encryptCipher.process($))})},I};r.default=u},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){var a=i,l=a.lib,d=l.WordArray,m=a.enc;m.Utf16=m.Utf16BE={stringify:function(R){for(var y=R.words,E=R.sigBytes,u=[],C=0;C<E;C+=2){var P=y[C>>>2]>>>16-C%4*8&65535;u.push(String.fromCharCode(P))}return u.join("")},parse:function(R){for(var y=R.length,E=[],u=0;u<y;u++)E[u>>>1]|=R.charCodeAt(u)<<16-u%2*16;return d.create(E,y*2)}},m.Utf16LE={stringify:function(R){for(var y=R.words,E=R.sigBytes,u=[],C=0;C<E;C+=2){var P=x(y[C>>>2]>>>16-C%4*8&65535);u.push(String.fromCharCode(P))}return u.join("")},parse:function(R){for(var y=R.length,E=[],u=0;u<y;u++)E[u>>>1]|=x(R.charCodeAt(u)<<16-u%2*16);return d.create(E,y*2)}};function x(R){return R<<8&4278255360|R>>>8&16711935}}(),i.enc.Utf16})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(28))})(this,function(i){return function(a){var l=i,d=l.lib,m=d.CipherParams,x=l.enc,R=x.Hex,y=l.format;y.Hex={stringify:function(E){return E.ciphertext.toString(R)},parse:function(E){var u=R.parse(E);return m.create({ciphertext:u})}}}(),i.format.Hex})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(11),o(61),o(27),o(28))})(this,function(i){return function(){var a=i,l=a.lib,d=l.BlockCipher,m=a.algo,x=[],R=[],y=[],E=[],u=[],C=[],P=[],b=[],p=[],g=[];(function(){for(var f=[],c=0;c<256;c++)c<128?f[c]=c<<1:f[c]=c<<1^283;for(var s=0,w=0,c=0;c<256;c++){var v=w^w<<1^w<<2^w<<3^w<<4;v=v>>>8^v&255^99,x[s]=v,R[v]=s;var k=f[s],L=f[k],N=f[L],I=f[v]*257^v*16843008;y[s]=I<<24|I>>>8,E[s]=I<<16|I>>>16,u[s]=I<<8|I>>>24,C[s]=I;var I=N*16843009^L*65537^k*257^s*16843008;P[v]=I<<24|I>>>8,b[v]=I<<16|I>>>16,p[v]=I<<8|I>>>24,g[v]=I,s?(s=k^f[f[f[N^k]]],w^=f[f[w]]):s=w=1}})();var S=[0,1,2,4,8,16,32,64,128,27,54],h=m.AES=d.extend({_doReset:function(){var f;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var c=this._keyPriorReset=this._key,s=c.words,w=c.sigBytes/4,v=this._nRounds=w+6,k=(v+1)*4,L=this._keySchedule=[],N=0;N<k;N++)N<w?L[N]=s[N]:(f=L[N-1],N%w?w>6&&N%w==4&&(f=x[f>>>24]<<24|x[f>>>16&255]<<16|x[f>>>8&255]<<8|x[f&255]):(f=f<<8|f>>>24,f=x[f>>>24]<<24|x[f>>>16&255]<<16|x[f>>>8&255]<<8|x[f&255],f^=S[N/w|0]<<24),L[N]=L[N-w]^f);for(var I=this._invKeySchedule=[],O=0;O<k;O++){var N=k-O;if(O%4)var f=L[N];else var f=L[N-4];O<4||N<=4?I[O]=f:I[O]=P[x[f>>>24]]^b[x[f>>>16&255]]^p[x[f>>>8&255]]^g[x[f&255]]}}},encryptBlock:function(f,c){this._doCryptBlock(f,c,this._keySchedule,y,E,u,C,x)},decryptBlock:function(f,c){var s=f[c+1];f[c+1]=f[c+3],f[c+3]=s,this._doCryptBlock(f,c,this._invKeySchedule,P,b,p,g,R);var s=f[c+1];f[c+1]=f[c+3],f[c+3]=s},_doCryptBlock:function(f,c,s,w,v,k,L,N){for(var I=this._nRounds,O=f[c]^s[0],A=f[c+1]^s[1],T=f[c+2]^s[2],j=f[c+3]^s[3],B=4,z=1;z<I;z++){var $=w[O>>>24]^v[A>>>16&255]^k[T>>>8&255]^L[j&255]^s[B++],V=w[A>>>24]^v[T>>>16&255]^k[j>>>8&255]^L[O&255]^s[B++],G=w[T>>>24]^v[j>>>16&255]^k[O>>>8&255]^L[A&255]^s[B++],M=w[j>>>24]^v[O>>>16&255]^k[A>>>8&255]^L[T&255]^s[B++];O=$,A=V,T=G,j=M}var $=(N[O>>>24]<<24|N[A>>>16&255]<<16|N[T>>>8&255]<<8|N[j&255])^s[B++],V=(N[A>>>24]<<24|N[T>>>16&255]<<16|N[j>>>8&255]<<8|N[O&255])^s[B++],G=(N[T>>>24]<<24|N[j>>>16&255]<<16|N[O>>>8&255]<<8|N[A&255])^s[B++],M=(N[j>>>24]<<24|N[O>>>16&255]<<16|N[A>>>8&255]<<8|N[T&255])^s[B++];f[c]=$,f[c+1]=V,f[c+2]=G,f[c+3]=M},keySize:256/32});a.AES=d._createHelper(h)}(),i.AES})},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(a){var l=i,d=l.lib,m=d.WordArray,x=d.Hasher,R=l.algo,y=[];(function(){for(var p=0;p<64;p++)y[p]=a.abs(a.sin(p+1))*4294967296|0})();var E=R.MD5=x.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(p,g){for(var S=0;S<16;S++){var h=g+S,f=p[h];p[h]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}var c=this._hash.words,s=p[g+0],w=p[g+1],v=p[g+2],k=p[g+3],L=p[g+4],N=p[g+5],I=p[g+6],O=p[g+7],A=p[g+8],T=p[g+9],j=p[g+10],B=p[g+11],z=p[g+12],$=p[g+13],V=p[g+14],G=p[g+15],M=c[0],D=c[1],U=c[2],_=c[3];M=u(M,D,U,_,s,7,y[0]),_=u(_,M,D,U,w,12,y[1]),U=u(U,_,M,D,v,17,y[2]),D=u(D,U,_,M,k,22,y[3]),M=u(M,D,U,_,L,7,y[4]),_=u(_,M,D,U,N,12,y[5]),U=u(U,_,M,D,I,17,y[6]),D=u(D,U,_,M,O,22,y[7]),M=u(M,D,U,_,A,7,y[8]),_=u(_,M,D,U,T,12,y[9]),U=u(U,_,M,D,j,17,y[10]),D=u(D,U,_,M,B,22,y[11]),M=u(M,D,U,_,z,7,y[12]),_=u(_,M,D,U,$,12,y[13]),U=u(U,_,M,D,V,17,y[14]),D=u(D,U,_,M,G,22,y[15]),M=C(M,D,U,_,w,5,y[16]),_=C(_,M,D,U,I,9,y[17]),U=C(U,_,M,D,B,14,y[18]),D=C(D,U,_,M,s,20,y[19]),M=C(M,D,U,_,N,5,y[20]),_=C(_,M,D,U,j,9,y[21]),U=C(U,_,M,D,G,14,y[22]),D=C(D,U,_,M,L,20,y[23]),M=C(M,D,U,_,T,5,y[24]),_=C(_,M,D,U,V,9,y[25]),U=C(U,_,M,D,k,14,y[26]),D=C(D,U,_,M,A,20,y[27]),M=C(M,D,U,_,$,5,y[28]),_=C(_,M,D,U,v,9,y[29]),U=C(U,_,M,D,O,14,y[30]),D=C(D,U,_,M,z,20,y[31]),M=P(M,D,U,_,N,4,y[32]),_=P(_,M,D,U,A,11,y[33]),U=P(U,_,M,D,B,16,y[34]),D=P(D,U,_,M,V,23,y[35]),M=P(M,D,U,_,w,4,y[36]),_=P(_,M,D,U,L,11,y[37]),U=P(U,_,M,D,O,16,y[38]),D=P(D,U,_,M,j,23,y[39]),M=P(M,D,U,_,$,4,y[40]),_=P(_,M,D,U,s,11,y[41]),U=P(U,_,M,D,k,16,y[42]),D=P(D,U,_,M,I,23,y[43]),M=P(M,D,U,_,T,4,y[44]),_=P(_,M,D,U,z,11,y[45]),U=P(U,_,M,D,G,16,y[46]),D=P(D,U,_,M,v,23,y[47]),M=b(M,D,U,_,s,6,y[48]),_=b(_,M,D,U,O,10,y[49]),U=b(U,_,M,D,V,15,y[50]),D=b(D,U,_,M,N,21,y[51]),M=b(M,D,U,_,z,6,y[52]),_=b(_,M,D,U,k,10,y[53]),U=b(U,_,M,D,j,15,y[54]),D=b(D,U,_,M,w,21,y[55]),M=b(M,D,U,_,A,6,y[56]),_=b(_,M,D,U,G,10,y[57]),U=b(U,_,M,D,I,15,y[58]),D=b(D,U,_,M,$,21,y[59]),M=b(M,D,U,_,L,6,y[60]),_=b(_,M,D,U,B,10,y[61]),U=b(U,_,M,D,v,15,y[62]),D=b(D,U,_,M,T,21,y[63]),c[0]=c[0]+M|0,c[1]=c[1]+D|0,c[2]=c[2]+U|0,c[3]=c[3]+_|0},_doFinalize:function(){var p=this._data,g=p.words,S=this._nDataBytes*8,h=p.sigBytes*8;g[h>>>5]|=128<<24-h%32;var f=a.floor(S/4294967296),c=S;g[(h+64>>>9<<4)+15]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360,g[(h+64>>>9<<4)+14]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360,p.sigBytes=(g.length+1)*4,this._process();for(var s=this._hash,w=s.words,v=0;v<4;v++){var k=w[v];w[v]=(k<<8|k>>>24)&16711935|(k<<24|k>>>8)&4278255360}return s},clone:function(){var p=x.clone.call(this);return p._hash=this._hash.clone(),p}});function u(p,g,S,h,f,c,s){var w=p+(g&S|~g&h)+f+s;return(w<<c|w>>>32-c)+g}function C(p,g,S,h,f,c,s){var w=p+(g&h|S&~h)+f+s;return(w<<c|w>>>32-c)+g}function P(p,g,S,h,f,c,s){var w=p+(g^S^h)+f+s;return(w<<c|w>>>32-c)+g}function b(p,g,S,h,f,c,s){var w=p+(S^(g|~h))+f+s;return(w<<c|w>>>32-c)+g}l.MD5=x._createHelper(E),l.HmacMD5=x._createHmacHelper(E)}(Math),i.MD5})},function(n,r,o){var i;Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importDefault(o(3)),d=a.__importStar(o(1)),m=a.__importDefault(o(8)),x=o(4),R=a.__importDefault(o(19)),y=a.__importDefault(o(17)),E=a.__importDefault(o(22)),u=a.__importDefault(o(2)),C=o(29),P=a.__importDefault(o(63)),b=o(14);function p(h){var f=h.statusCode;return f===408&&!h.code||f===400&&!h.code||f>=500&&f<=504}function g(h){var f=h.connection,c=f&&f.connectionManager.host;return c?[c].concat(m.default.getFallbackHosts(h.options)):m.default.getHosts(h.options)}var S=(i=function(){function h(f){this.checksInProgress=null,this.checkConnectivity=void 0,this.supportsAuthHeaders=!1,this.supportsLinkHeaders=!1,this._getHosts=g,this.options=f||{};var c=this.options.connectivityCheckUrl||m.default.connectivityCheckUrl,s=this.options.connectivityCheckParams,w=!this.options.connectivityCheckUrl;l.default.Config.xhrSupported?(this.supportsAuthHeaders=!0,this.Request=function(v,k,L,N,I,O,A){var T=y.default.createRequest(L,N,I,O,E.default.REQ_SEND,k&&k.options.timeouts,v);return T.once("complete",A),T.exec(),T},this.options.disableConnectivityCheck?this.checkConnectivity=function(v){v(null,!0)}:this.checkConnectivity=function(v){u.default.logAction(u.default.LOG_MICRO,"(XHRRequest)Http.checkConnectivity()","Sending; "+c),this.doUri(R.default.Get,null,c,null,null,s,function(k,L,N,I,O){var A=!1;w?A=!k&&(L==null?void 0:L.replace(/\n/,""))=="yes":A=!k&&(0,b.isSuccessCode)(O),u.default.logAction(u.default.LOG_MICRO,"(XHRRequest)Http.checkConnectivity()","Result: "+A),v(null,A)})}):l.default.Config.jsonpSupported?(this.Request=function(v,k,L,N,I,O,A){var T=(0,C.createRequest)(L,N,I,O,E.default.REQ_SEND,k&&k.options.timeouts,v);return T.once("complete",A),l.default.Config.nextTick(function(){T.exec()}),T},this.options.disableConnectivityCheck?this.checkConnectivity=function(v){v(null,!0)}:this.checkConnectivity=function(v){var k=this,L=m.default.jsonpInternetUpUrl;if(this.checksInProgress){this.checksInProgress.push(v);return}this.checksInProgress=[v],u.default.logAction(u.default.LOG_MICRO,"(JSONP)Http.checkConnectivity()","Sending; "+L);var N=new C.Request("isTheInternetUp",L,null,null,null,E.default.REQ_SEND,m.default.TIMEOUTS);N.once("complete",function(I,O){var A=!I&&O;u.default.logAction(u.default.LOG_MICRO,"(JSONP)Http.checkConnectivity()","Result: "+A);for(var T=0;T<k.checksInProgress.length;T++)k.checksInProgress[T](null,A);k.checksInProgress=null}),l.default.Config.nextTick(function(){N.exec()})}):l.default.Config.fetchSupported?(this.supportsAuthHeaders=!0,this.Request=P.default,this.checkConnectivity=function(v){u.default.logAction(u.default.LOG_MICRO,"(Fetch)Http.checkConnectivity()","Sending; "+c),this.doUri(R.default.Get,null,c,null,null,null,function(k,L){var N=!k&&(L==null?void 0:L.replace(/\n/,""))=="yes";u.default.logAction(u.default.LOG_MICRO,"(Fetch)Http.checkConnectivity()","Result: "+N),v(null,N)})}):this.Request=function(v,k,L,N,I,O,A){A(new x.PartialErrorInfo("no supported HTTP transports available",null,400),null)}}return h.prototype.do=function(f,c,s,w,v,k,L){var N=this,I=typeof s=="function"?s:function(j){return c.baseUri(j)+s},O=c._currentFallback;if(O)if(O.validUntil>d.now()){if(!this.Request){L==null||L(new x.PartialErrorInfo("Request invoked before assigned to",null,500));return}this.Request(f,c,I(O.host),w,k,v,function(j){for(var B=[],z=1;z<arguments.length;z++)B[z-1]=arguments[z];if(j&&p(j)){c._currentFallback=null,N.do(f,c,s,w,v,k,L);return}L==null||L.apply(void 0,a.__spreadArray([j],B,!1))});return}else c._currentFallback=null;var A=g(c);if(A.length===1){this.doUri(f,c,I(A[0]),w,v,k,L);return}var T=function(j,B){var z=j.shift();N.doUri(f,c,I(z),w,v,k,function($){for(var V=[],G=1;G<arguments.length;G++)V[G-1]=arguments[G];if($&&p($)&&j.length){T(j,!0);return}B&&(c._currentFallback={host:z,validUntil:d.now()+c.options.timeouts.fallbackRetryTimeout}),L==null||L.apply(void 0,a.__spreadArray([$],V,!1))})};T(A)},h.prototype.doUri=function(f,c,s,w,v,k,L){if(!this.Request){L(new x.PartialErrorInfo("Request invoked before assigned to",null,500));return}this.Request(f,c,s,w,k,v,L)},h}(),i.methods=[R.default.Get,R.default.Delete,R.default.Post,R.default.Put,R.default.Patch],i.methodsWithoutBody=[R.default.Get,R.default.Delete],i.methodsWithBody=[R.default.Post,R.default.Put,R.default.Patch],i);r.default=S},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(4)),l=i.__importDefault(o(3)),d=i.__importDefault(o(8)),m=i.__importStar(o(1)),x=o(1);function R(u,C){return!!C.get("x-ably-errorcode")}function y(u,C){if(R(u,C))return u.error&&a.default.fromValues(u.error)}function E(u,C,P,b,p,g,S){var h=new Headers(b||{}),f=u?u.toUpperCase():m.isEmptyArg(g)?"GET":"POST",c=new AbortController,s=setTimeout(function(){c.abort(),S(new a.PartialErrorInfo("Request timed out",null,408))},C?C.options.timeouts.httpRequestTimeout:d.default.TIMEOUTS.httpRequestTimeout),w={method:f,headers:h,body:g};l.default.Config.isWebworker||(w.credentials=h.has("authorization")?"include":"same-origin"),(0,x.getGlobalObject)().fetch(P+"?"+new URLSearchParams(p||{}),w).then(function(v){clearTimeout(s);var k=v.headers.get("Content-Type"),L;k&&k.indexOf("application/x-msgpack")>-1?L=v.arrayBuffer():k&&k.indexOf("application/json")>-1?L=v.json():L=v.text(),L.then(function(N){var I=!!k&&k.indexOf("application/x-msgpack")===-1;if(v.ok)S(null,N,v.headers,I,v.status);else{var O=y(N,v.headers)||new a.PartialErrorInfo("Error response received from server: "+v.status+" body was: "+l.default.Config.inspect(N),null,v.status);S(O,N,v.headers,I,v.status)}})}).catch(function(v){clearTimeout(s),S(v)})}r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(41)),l=i.__importStar(o(1)),d=l.getGlobalObject();typeof Window=="undefined"&&typeof WorkerGlobalScope=="undefined"&&console.log("Warning: this distribution of Ably is intended for browsers. On nodejs, please use the 'ably' package on npm");function m(){var E=d.location;return!d.WebSocket||!E||!E.origin||E.origin.indexOf("http")>-1}var x=d.navigator&&d.navigator.userAgent.toString(),R=d.location&&d.location.href,y={agent:"browser",logTimestamps:!0,userAgent:x,currentUrl:R,noUpgrade:x&&!!x.match(/MSIE\s8\.0/),binaryType:"arraybuffer",WebSocket:d.WebSocket,fetchSupported:!!d.fetch,xhrSupported:d.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,jsonpSupported:typeof document!="undefined",allowComet:m(),streamingSupported:!0,useProtocolHeartbeats:!0,createHmac:null,msgpack:a.default,supportsBinary:!!d.TextDecoder,preferBinary:!1,ArrayBuffer:d.ArrayBuffer,atob:d.atob,nextTick:typeof d.setImmediate!="undefined"?d.setImmediate.bind(d):function(E){setTimeout(E,0)},addEventListener:d.addEventListener,inspect:JSON.stringify,stringByteSize:function(E){return d.TextDecoder&&new d.TextEncoder().encode(E).length||E.length},TextEncoder:d.TextEncoder,TextDecoder:d.TextDecoder,Promise:d.Promise,getRandomValues:function(E){if(E!==void 0)return function(u,C){E.getRandomValues(u),C&&C(null)}}(d.crypto||msCrypto)};r.default=y},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importStar(o(1)),d="ablyjs-storage-test",m=function(){function x(){try{i.sessionStorage.setItem(d,d),i.sessionStorage.removeItem(d),this.sessionSupported=!0}catch(R){this.sessionSupported=!1}try{i.localStorage.setItem(d,d),i.localStorage.removeItem(d),this.localSupported=!0}catch(R){this.localSupported=!1}}return x.prototype.get=function(R){return this._get(R,!1)},x.prototype.getSession=function(R){return this._get(R,!0)},x.prototype.remove=function(R){return this._remove(R,!1)},x.prototype.removeSession=function(R){return this._remove(R,!0)},x.prototype.set=function(R,y,E){return this._set(R,y,E,!1)},x.prototype.setSession=function(R,y,E){return this._set(R,y,E,!0)},x.prototype._set=function(R,y,E,u){var C={value:y};return E&&(C.expires=l.now()+E),this.storageInterface(u).setItem(R,JSON.stringify(C))},x.prototype._get=function(R,y){if(y&&!this.sessionSupported)throw new Error("Session Storage not supported");if(!y&&!this.localSupported)throw new Error("Local Storage not supported");var E=this.storageInterface(y).getItem(R);if(!E)return null;var u=JSON.parse(E);return u.expires&&u.expires<l.now()?(this.storageInterface(y).removeItem(R),null):u.value},x.prototype._remove=function(R,y){return this.storageInterface(y).removeItem(R)},x.prototype.storageInterface=function(R){return R?i.sessionStorage:i.localStorage},x}();r.default=new m}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(67)),l={connectivityCheckUrl:"https://internet-up.ably-realtime.com/is-the-internet-up.txt",jsonpInternetUpUrl:"https://internet-up.ably-realtime.com/is-the-internet-up-0-9.js",defaultTransports:[a.default.XhrPolling,a.default.XhrStreaming,a.default.JsonP,a.default.WebSocket],baseTransportOrder:[a.default.XhrPolling,a.default.XhrStreaming,a.default.JsonP,a.default.WebSocket],transportPreferenceOrder:[a.default.JsonP,a.default.XhrPolling,a.default.XhrStreaming,a.default.WebSocket],upgradeTransports:[a.default.XhrStreaming,a.default.WebSocket]};r.default=l},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a.WebSocket="web_socket",a.Comet="comet",a.XhrStreaming="xhr_streaming",a.XhrPolling="xhr_polling",a.JsonP="jsonp"})(i||(i={})),r.default=i},function(n,r,o){o.r(r);var i=o(29),a=o.n(i),l=o(1),d=o(3),m=o.n(d),x=o(12),R=o.n(x),y=o(17),E=o.n(y),u=function(p){var g="xhr_polling";function S(h,f,c){c.stream=!1,R.a.call(this,h,f,c),this.shortName=g}return l.inherits(S,R.a),S.isAvailable=function(){return m.a.Config.xhrSupported&&m.a.Config.allowComet},S.prototype.toString=function(){return"XHRPollingTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},S.prototype.createRequest=function(h,f,c,s,w){return E.a.createRequest(h,f,c,s,w,this.timeouts)},typeof p!="undefined"&&S.isAvailable()&&(p.supportedTransports[g]=S),S},C=u,P=function(p){var g="xhr_streaming";function S(h,f,c){R.a.call(this,h,f,c),this.shortName=g}return l.inherits(S,R.a),S.isAvailable=function(){return m.a.Config.xhrSupported&&m.a.Config.streamingSupported&&m.a.Config.allowComet},S.prototype.toString=function(){return"XHRStreamingTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},S.prototype.createRequest=function(h,f,c,s,w){return E.a.createRequest(h,f,c,s,w,this.timeouts)},typeof p!="undefined"&&S.isAvailable()&&(p.supportedTransports[g]=S),S},b=P;r.default=[a.a,C,b]}]).default})})(yd);var im=yd.exports;const am=me(im),Ai=(e,t,n,r,o,i)=>De(this,null,function*(){try{const a=new am.Realtime({token:e.token,clientId:e.clientId});a.connection.on("connected",()=>{i==null||i("connected")}),a.connection.on("failed",R=>{console.error("[❌ ABLY CONNECTION FAILED]",R),i==null||i("failed")}),a.connection.on("disconnected",()=>{i==null||i("disconnected")});const l=`room:${t}:${n}`,d=a.channels.get(l);d.subscribe("messages",R=>{var y;try{const E=(y=R.data)==null?void 0:y.message;if(E&&E.role==="employee"){const u={id:E.id||ut(),text:E.content||"",sender:"bot",timestamp:E.createdAt?new Date(E.createdAt):new Date,type:E.type};r(u)}}catch(E){console.error("[❌ MESSAGE PARSING ERROR]",E)}});const m=`room:${t}`;return a.channels.get(m).subscribe("message:livechat",R=>{try{const y=R.data;(y==null?void 0:y.type)==="toggleAI"&&y.conversationId===n&&(o==null||o(y.chatbotActivated))}catch(y){console.error("[❌ TOGGLE AI PARSING ERROR]",y)}}),{client:a,channel:d}}catch(a){throw console.error("[❌ ABLY INITIALIZATION ERROR]",a),a}}),sm=(e,t)=>De(this,null,function*(){try{const n=id(),r=yield fetch(`${n}?conversationId=${e}&chatbotUid=${t}`);return r.ok?yield r.json():(console.error("Failed to fetch conversation data:",r.statusText),null)}catch(n){return console.error("[❌ ABLY TOKEN FETCH ERROR]",n),null}}),wd=e=>{e&&e.close()},Ii=()=>({id:ut(),text:"Lo siento, hubo un problema con la conexión. Esta es una respuesta de demostración.",sender:"bot",timestamp:new Date().toISOString(),type:"text"}),bd=(e,t,n,r,o)=>{const i=vd(t,e),a=vd(n,e),l={id:e,senderId:o||"unknown",createdAt:new Date().toISOString(),chatbotActivated:!0,updatedAt:new Date().toISOString(),source:"IFRAME",website:typeof window!="undefined"?window.location.origin:"",messages:i};return{conversationId:e,conversation:l,chatbotUid:r.apiKey,newMessages:a}},xd=e=>De(this,null,function*(){try{const t=Gg(),n=yield fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});return n.ok?yield n.json():(console.error("WebChat: API request failed:",n.status,n.statusText),null)}catch(t){return console.error("WebChat: Error sending message to API:",t),null}}),Sd=e=>{if(e&&e.content){let t;return e.createdAt?t=e.createdAt.endsWith("Z")?e.createdAt:`${e.createdAt}Z`:t=new Date().toISOString(),{id:e.id||ut(),text:e.content,sender:"bot",timestamp:t,type:e.type}}return null},lm=e=>`¡Hola! Soy ${e||"tu asistente"}, ¿En qué te puedo ayudar?
|
|
145
|
+
`;G.mac=G.mac||h(X,V),a.default.logAction(a.default.LOG_MINOR,"Auth.getTokenRequest()","generated signed request"),T(null,G)})},I.prototype.getAuthParams=function(O){this.method=="basic"?O(null,{key:this.key}):this._ensureValidAuthCredentials(!1,function(A,T){if(A){O(A);return}if(!T)throw new Error("Auth.getAuthParams(): _ensureValidAuthCredentials returned no error or tokenDetails");O(null,{access_token:T.token})})},I.prototype.getAuthHeaders=function(O){this.method=="basic"?O(null,{authorization:"Basic "+this.basicKey}):this._ensureValidAuthCredentials(!1,function(A,T){if(A){O(A);return}if(!T)throw new Error("Auth.getAuthParams(): _ensureValidAuthCredentials returned no error or tokenDetails");O(null,{authorization:"Bearer "+l.toBase64(T.token)})})},I.prototype.getTimestamp=function(O,A){!this.isTimeOffsetSet()&&(O||this.authOptions.queryTime)?this.client.time(A):A(null,this.getTimestampUsingOffset())},I.prototype.getTimestampUsingOffset=function(){return l.now()+(this.client.serverTimeOffset||0)},I.prototype.isTimeOffsetSet=function(){return this.client.serverTimeOffset!==null},I.prototype._saveBasicOptions=function(O){this.method="basic",this.key=O.key,this.basicKey=l.toBase64(O.key),this.authOptions=O||{},"clientId"in O&&this._userSetClientId(O.clientId)},I.prototype._saveTokenOptions=function(O,A){this.method="token",O&&(this.tokenParams=O),A&&(A.token&&(A.tokenDetails=typeof A.token=="string"?{token:A.token}:A.token),A.tokenDetails&&(this.tokenDetails=A.tokenDetails),"clientId"in A&&this._userSetClientId(A.clientId),this.authOptions=A)},I.prototype._ensureValidAuthCredentials=function(O,A){var T=this,j=this.tokenDetails;if(j){if(this._tokenClientIdMismatch(j.clientId)){A(new m.default("Mismatch between clientId in token ("+j.clientId+") and current clientId ("+this.clientId+")",40102,403));return}if(!this.isTimeOffsetSet()||!j.expires||j.expires>=this.getTimestampUsingOffset()){a.default.logAction(a.default.LOG_MINOR,"Auth.getToken()","using cached token; expires = "+j.expires),A(null,j);return}a.default.logAction(a.default.LOG_MINOR,"Auth.getToken()","deleting expired token"),this.tokenDetails=null}if((this.waitingForTokenRequest||(this.waitingForTokenRequest=d.default.create())).push(A),!(this.currentTokenRequestId!==null&&!O)){var B=this.currentTokenRequestId=L();this.requestToken(this.tokenParams,this.authOptions,function(z,$){if(T.currentTokenRequestId>B){a.default.logAction(a.default.LOG_MINOR,"Auth._ensureValidAuthCredentials()","Discarding token request response; overtaken by newer one");return}T.currentTokenRequestId=null;var V=T.waitingForTokenRequest||b;if(T.waitingForTokenRequest=null,z){V(z);return}V(null,T.tokenDetails=$)})}},I.prototype._userSetClientId=function(O){if(typeof O=="string"||O===null){if(O==="*")throw new m.default('Can’t use "*" as a clientId as that string is reserved. (To change the default token request behaviour to use a wildcard clientId, instantiate the library with {defaultTokenParams: {clientId: "*"}}), or if calling authorize(), pass it in as a tokenParam: authorize({clientId: "*"}, authOptions)',40012,400);var A=this._uncheckedSetClientId(O);if(A)throw A}else throw new m.default("clientId must be either a string or null",40012,400)},I.prototype._uncheckedSetClientId=function(O){if(this._tokenClientIdMismatch(O)){var A="Unexpected clientId mismatch: client has "+this.clientId+", requested "+O,T=new m.default(A,40102,401);return a.default.logAction(a.default.LOG_ERROR,"Auth._uncheckedSetClientId()",A),T}else return this.clientId=this.tokenParams.clientId=O,null},I.prototype._tokenClientIdMismatch=function(O){return!!(this.clientId&&this.clientId!=="*"&&O&&O!=="*"&&this.clientId!==O)},I.isTokenErr=function(O){return O.code&&O.code>=40140&&O.code<40150},I.prototype.revokeTokens=function(O,A,T){if(w(this.client.options))throw new m.default("Cannot revoke tokens when using token auth",40162,401);var j=this.client.options.keyName,B;if(typeof A=="function"?(T=A,B={}):B=A!=null?A:{},T===void 0){if(this.client.options.promises)return l.promisify(this,"revokeTokens",[O,B]);T=b}var z=T,$=i.__assign({targets:O.map(function(D){return"".concat(D.type,":").concat(D.value)})},B),V=this.client.options.useBinaryProtocol?l.Format.msgpack:l.Format.json,G=l.defaultPostHeaders(this.client.options,V);this.client.options.headers&&l.mixin(G,this.client.options.headers);var M=l.encodeBody($,V);C.default.post(this.client,"/keys/".concat(j,"/revokeTokens"),M,G,{newBatchResponse:"true"},null,function(D,U,_,W){if(D){z(D);return}var X=W?U:l.decodeBody(U,V);z(null,X)})},I}();r.default=N},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a.Get="get",a.Delete="delete",a.Post="post",a.Put="put",a.Patch="patch"})(i||(i={})),r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.HttpPaginatedResponse=r.PaginatedResult=void 0;var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(2)),d=i.__importDefault(o(15)),m=i.__importDefault(o(14));function x(P){var b=P.match(/^\.\/(\w+)\?(.*)$/);return b&&b[2]&&a.parseQueryString(b[2])}function R(P){typeof P=="string"&&(P=P.split(","));for(var b={},p=0;p<P.length;p++){var g=P[p].match(/^\s*<(.+)>;\s*rel="(\w+)"$/);if(g){var S=x(g[1]);S&&(b[g[2]]=S)}}return b}function y(P,b,p){return!(p&&(b||typeof P.code=="number"))}var E=function(){function P(b,p,g,S,h,f){this.rest=b,this.path=p,this.headers=g,this.envelope=S!=null?S:null,this.bodyHandler=h,this.useHttpPaginatedResponse=f||!1}return P.prototype.get=function(b,p){var g=this;d.default.get(this.rest,this.path,this.headers,b,this.envelope,function(S,h,f,c,s){g.handlePage(S,h,f,c,s,p)})},P.prototype.delete=function(b,p){var g=this;d.default.delete(this.rest,this.path,this.headers,b,this.envelope,function(S,h,f,c,s){g.handlePage(S,h,f,c,s,p)})},P.prototype.post=function(b,p,g){var S=this;d.default.post(this.rest,this.path,p,this.headers,b,this.envelope,function(h,f,c,s,w){g&&S.handlePage(h,f,c,s,w,g)})},P.prototype.put=function(b,p,g){var S=this;d.default.put(this.rest,this.path,p,this.headers,b,this.envelope,function(h,f,c,s,w){g&&S.handlePage(h,f,c,s,w,g)})},P.prototype.patch=function(b,p,g){var S=this;d.default.patch(this.rest,this.path,p,this.headers,b,this.envelope,function(h,f,c,s,w){g&&S.handlePage(h,f,c,s,w,g)})},P.prototype.handlePage=function(b,p,g,S,h,f){if(b&&y(b,p,this.useHttpPaginatedResponse)){l.default.logAction(l.default.LOG_ERROR,"PaginatedResource.handlePage()","Unexpected error getting resource: err = "+a.inspectError(b)),f==null||f(b);return}var c,s,w;try{c=h==m.default.NoContent?[]:this.bodyHandler(p,g||{},S)}catch(v){f==null||f(b||v);return}g&&(s=g.Link||g.link)&&(w=R(s)),this.useHttpPaginatedResponse?f(null,new C(this,c,g||{},h,w,b)):f(null,new u(this,c,w))},P}(),u=function(){function P(b,p,g){var S=this;this.resource=b,this.items=p;var h=this;g&&("first"in g&&(this.first=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"first",[]);h.get(g.first,f)}),"current"in g&&(this.current=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"current",[]);h.get(g.current,f)}),this.next=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"next",[]);"next"in g?h.get(g.next,f):f(null,null)},this.hasNext=function(){return"next"in g},this.isLast=function(){var f;return!(!((f=S.hasNext)===null||f===void 0)&&f.call(S))})}return P.prototype.get=function(b,p){var g=this.resource;d.default.get(g.rest,g.path,g.headers,b,g.envelope,function(S,h,f,c,s){g.handlePage(S,h,f,c,s,p)})},P}();r.PaginatedResult=u;var C=function(P){i.__extends(b,P);function b(p,g,S,h,f,c){var s=P.call(this,p,g,f)||this;return s.statusCode=h,s.success=h<300&&h>=200,s.headers=S,s.errorCode=c&&c.code,s.errorMessage=c&&c.message,s}return b.prototype.toJSON=function(){return{items:this.items,statusCode:this.statusCode,success:this.success,headers:this.headers,errorCode:this.errorCode,errorMessage:this.errorMessage}},b}(u);r.HttpPaginatedResponse=C,r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.isRetriable=void 0;var i=o(0),a=i.__importDefault(o(4)),l={DISCONNECTED:80003,SUSPENDED:80002,FAILED:8e4,CLOSING:80017,CLOSED:80017,UNKNOWN_CONNECTION_ERR:50002,UNKNOWN_CHANNEL_ERR:50001},d={disconnected:function(){return a.default.fromValues({statusCode:400,code:l.DISCONNECTED,message:"Connection to server temporarily unavailable"})},suspended:function(){return a.default.fromValues({statusCode:400,code:l.SUSPENDED,message:"Connection to server unavailable"})},failed:function(){return a.default.fromValues({statusCode:400,code:l.FAILED,message:"Connection failed or disconnected by server"})},closing:function(){return a.default.fromValues({statusCode:400,code:l.CLOSING,message:"Connection closing"})},closed:function(){return a.default.fromValues({statusCode:400,code:l.CLOSED,message:"Connection closed"})},unknownConnectionErr:function(){return a.default.fromValues({statusCode:500,code:l.UNKNOWN_CONNECTION_ERR,message:"Internal connection error"})},unknownChannelErr:function(){return a.default.fromValues({statusCode:500,code:l.UNKNOWN_CONNECTION_ERR,message:"Internal channel error"})}};function m(x){return!x.statusCode||!x.code||x.statusCode>=500?!0:Object.values(l).includes(x.code)}r.isRetriable=m,r.default=d},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a[a.REQ_SEND=0]="REQ_SEND",a[a.REQ_RECV=1]="REQ_RECV",a[a.REQ_RECV_POLL=2]="REQ_RECV_POLL",a[a.REQ_RECV_STREAM=3]="REQ_RECV_STREAM"})(i||(i={})),r.default=i},function(n,r,o){(function(i,a){n.exports=a(o(6),o(5),o(58),o(11),o(40),o(32),o(25),o(27),o(28),o(59),o(60))})(this,function(i){return i})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(2)),l=function(){function d(m){this.members=m||[]}return d.prototype.call=function(){for(var m=[],x=0;x<arguments.length;x++)m[x]=arguments[x];for(var R=0,y=this.members;R<y.length;R++){var E=y[R];if(E)try{E.apply(void 0,m)}catch(u){a.default.logAction(a.default.LOG_ERROR,"Multicaster multiple callback handler","Unexpected exception: "+u+"; stack = "+u.stack)}}},d.prototype.push=function(){for(var m,x=[],R=0;R<arguments.length;R++)x[R]=arguments[R];(m=this.members).push.apply(m,x)},d.create=function(m){var x=new d(m);return Object.assign(function(){for(var R=[],y=0;y<arguments.length;y++)R[y]=arguments[y];return x.call.apply(x,R)},{push:function(R){return x.push(R)}})},d}();r.default=l},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){(function(){var a=i,l=a.lib,d=l.Base,m=a.enc,x=m.Utf8,R=a.algo;R.HMAC=d.extend({init:function(y,E){y=this._hasher=new y.init,typeof E=="string"&&(E=x.parse(E));var u=y.blockSize,C=u*4;E.sigBytes>C&&(E=y.finalize(E)),E.clamp();for(var P=this._oKey=E.clone(),b=this._iKey=E.clone(),p=P.words,g=b.words,S=0;S<u;S++)p[S]^=1549556828,g[S]^=909522486;P.sigBytes=b.sigBytes=C,this.reset()},reset:function(){var y=this._hasher;y.reset(),y.update(this._iKey)},update:function(y){return this._hasher.update(y),this},finalize:function(y){var E=this._hasher,u=E.finalize(y);E.reset();var C=E.finalize(this._oKey.clone().concat(u));return C}})})()})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(10)),l=i.__importStar(o(1)),d=i.__importDefault(o(7)),m=i.__importDefault(o(2)),x=i.__importDefault(o(21)),R=i.__importDefault(o(4)),y=i.__importDefault(o(3)),E=a.default.Action,u=a.default.fromValues({action:E.CLOSE}),C=a.default.fromValues({action:E.DISCONNECT}),P=function(b){i.__extends(p,b);function p(g,S,h,f){var c=b.call(this)||this;return f&&(h.format=void 0,h.heartbeats=!0),c.connectionManager=g,g.registerProposedTransport(c),c.auth=S,c.params=h,c.timeouts=h.options.timeouts,c.format=h.format,c.isConnected=!1,c.isFinished=!1,c.isDisposed=!1,c.maxIdleInterval=null,c.idleTimer=null,c.lastActivity=null,c}return p.prototype.connect=function(){},p.prototype.close=function(){this.isConnected&&this.requestClose(),this.finish("closed",x.default.closed())},p.prototype.disconnect=function(g){this.isConnected&&this.requestDisconnect(),this.finish("disconnected",g||x.default.disconnected())},p.prototype.fail=function(g){this.isConnected&&this.requestDisconnect(),this.finish("failed",g||x.default.failed())},p.prototype.finish=function(g,S){var h;this.isFinished||(this.isFinished=!0,this.isConnected=!1,this.maxIdleInterval=null,clearTimeout((h=this.idleTimer)!==null&&h!==void 0?h:void 0),this.idleTimer=null,this.emit(g,S),this.dispose())},p.prototype.onProtocolMessage=function(g){switch(m.default.shouldLog(m.default.LOG_MICRO)&&m.default.logAction(m.default.LOG_MICRO,"Transport.onProtocolMessage()","received on "+this.shortName+": "+a.default.stringify(g)+"; connectionId = "+this.connectionManager.connectionId),this.onActivity(),g.action){case E.HEARTBEAT:m.default.logAction(m.default.LOG_MICRO,"Transport.onProtocolMessage()",this.shortName+" heartbeat; connectionId = "+this.connectionManager.connectionId),this.emit("heartbeat",g.id);break;case E.CONNECTED:this.onConnect(g),this.emit("connected",g.error,g.connectionId,g.connectionDetails,g);break;case E.CLOSED:this.onClose(g);break;case E.DISCONNECTED:this.onDisconnect(g);break;case E.ACK:this.emit("ack",g.msgSerial,g.count);break;case E.NACK:this.emit("nack",g.msgSerial,g.count,g.error);break;case E.SYNC:this.connectionManager.onChannelMessage(g,this);break;case E.ACTIVATE:break;case E.AUTH:this.auth.authorize(function(S){S&&m.default.logAction(m.default.LOG_ERROR,"Transport.onProtocolMessage()","Ably requested re-authentication, but unable to obtain a new token: "+l.inspectError(S))});break;case E.ERROR:if(m.default.logAction(m.default.LOG_MINOR,"Transport.onProtocolMessage()","received error action; connectionId = "+this.connectionManager.connectionId+"; err = "+y.default.Config.inspect(g.error)+(g.channel?", channel: "+g.channel:"")),g.channel===void 0){this.onFatalError(g);break}this.connectionManager.onChannelMessage(g,this);break;default:this.connectionManager.onChannelMessage(g,this)}},p.prototype.onConnect=function(g){if(this.isConnected=!0,!g.connectionDetails)throw new Error("Transport.onConnect(): Connect message recieved without connectionDetails");var S=g.connectionDetails.maxIdleInterval;S&&(this.maxIdleInterval=S+this.timeouts.realtimeRequestTimeout,this.onActivity())},p.prototype.onDisconnect=function(g){var S=g&&g.error;m.default.logAction(m.default.LOG_MINOR,"Transport.onDisconnect()","err = "+l.inspectError(S)),this.finish("disconnected",S)},p.prototype.onFatalError=function(g){var S=g&&g.error;m.default.logAction(m.default.LOG_MINOR,"Transport.onFatalError()","err = "+l.inspectError(S)),this.finish("failed",S)},p.prototype.onClose=function(g){var S=g&&g.error;m.default.logAction(m.default.LOG_MINOR,"Transport.onClose()","err = "+l.inspectError(S)),this.finish("closed",S)},p.prototype.requestClose=function(){m.default.logAction(m.default.LOG_MINOR,"Transport.requestClose()",""),this.send(u)},p.prototype.requestDisconnect=function(){m.default.logAction(m.default.LOG_MINOR,"Transport.requestDisconnect()",""),this.send(C)},p.prototype.ping=function(g){var S={action:a.default.Action.HEARTBEAT};g&&(S.id=g),this.send(a.default.fromValues(S))},p.prototype.dispose=function(){m.default.logAction(m.default.LOG_MINOR,"Transport.dispose()",""),this.isDisposed=!0,this.off()},p.prototype.onActivity=function(){this.maxIdleInterval&&(this.lastActivity=this.connectionManager.lastActivity=l.now(),this.setIdleTimer(this.maxIdleInterval+100))},p.prototype.setIdleTimer=function(g){var S=this;this.idleTimer||(this.idleTimer=setTimeout(function(){S.onIdleTimerExpire()},g))},p.prototype.onIdleTimerExpire=function(){if(!this.lastActivity||!this.maxIdleInterval)throw new Error("Transport.onIdleTimerExpire(): lastActivity/maxIdleInterval not set");this.idleTimer=null;var g=l.now()-this.lastActivity,S=this.maxIdleInterval-g;if(S<=0){var h="No activity seen from realtime in "+g+"ms; assuming connection has dropped";m.default.logAction(m.default.LOG_ERROR,"Transport.onIdleTimerExpire()",h),this.disconnect(new R.default(h,80003,408))}else this.setIdleTimer(S+100)},p.tryConnect=function(g,S,h,f,c){var s=new g(S,h,f),w,v=function(L){clearTimeout(w),c({event:this.event,error:L})},k=S.options.timeouts.realtimeRequestTimeout;w=setTimeout(function(){s.off(["preconnect","disconnected","failed"]),s.dispose(),v.call({event:"disconnected"},new R.default("Timeout waiting for transport to indicate itself viable",5e4,500))},k),s.on(["failed","disconnected"],v),s.on("preconnect",function(){m.default.logAction(m.default.LOG_MINOR,"Transport.tryConnect()","viable transport "+s),clearTimeout(w),s.off(["failed","disconnected"],v),c(null,s)}),s.connect()},p}(d.default);r.default=P},function(n,r,o){(function(i,a){n.exports=a(o(6),o(40),o(25))})(this,function(i){return function(){var a=i,l=a.lib,d=l.Base,m=l.WordArray,x=a.algo,R=x.MD5,y=x.EvpKDF=d.extend({cfg:d.extend({keySize:128/32,hasher:R,iterations:1}),init:function(E){this.cfg=this.cfg.extend(E)},compute:function(E,u){for(var C,P=this.cfg,b=P.hasher.create(),p=m.create(),g=p.words,S=P.keySize,h=P.iterations;g.length<S;){C&&b.update(C),C=b.update(E).finalize(u),b.reset();for(var f=1;f<h;f++)C=b.finalize(C),b.reset();p.concat(C)}return p.sigBytes=S*4,p}});a.EvpKDF=function(E,u,C){return y.create(C).compute(E,u)}}(),i.EvpKDF})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(27))})(this,function(i){i.lib.Cipher||function(a){var l=i,d=l.lib,m=d.Base,x=d.WordArray,R=d.BufferedBlockAlgorithm,y=l.enc;y.Utf8;var E=y.Base64,u=l.algo,C=u.EvpKDF,P=d.Cipher=R.extend({cfg:m.extend(),createEncryptor:function(N,I){return this.create(this._ENC_XFORM_MODE,N,I)},createDecryptor:function(N,I){return this.create(this._DEC_XFORM_MODE,N,I)},init:function(N,I,O){this.cfg=this.cfg.extend(O),this._xformMode=N,this._key=I,this.reset()},reset:function(){R.reset.call(this),this._doReset()},process:function(N){return this._append(N),this._process()},finalize:function(N){N&&this._append(N);var I=this._doFinalize();return I},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function N(I){return typeof I=="string"?L:w}return function(I){return{encrypt:function(O,A,T){return N(A).encrypt(I,O,A,T)},decrypt:function(O,A,T){return N(A).decrypt(I,O,A,T)}}}}()});d.StreamCipher=P.extend({_doFinalize:function(){var N=this._process(!0);return N},blockSize:1});var b=l.mode={},p=d.BlockCipherMode=m.extend({createEncryptor:function(N,I){return this.Encryptor.create(N,I)},createDecryptor:function(N,I){return this.Decryptor.create(N,I)},init:function(N,I){this._cipher=N,this._iv=I}}),g=b.CBC=function(){var N=p.extend();N.Encryptor=N.extend({processBlock:function(O,A){var T=this._cipher,j=T.blockSize;I.call(this,O,A,j),T.encryptBlock(O,A),this._prevBlock=O.slice(A,A+j)}}),N.Decryptor=N.extend({processBlock:function(O,A){var T=this._cipher,j=T.blockSize,B=O.slice(A,A+j);T.decryptBlock(O,A),I.call(this,O,A,j),this._prevBlock=B}});function I(O,A,T){var j,B=this._iv;B?(j=B,this._iv=a):j=this._prevBlock;for(var z=0;z<T;z++)O[A+z]^=j[z]}return N}(),S=l.pad={},h=S.Pkcs7={pad:function(N,I){for(var O=I*4,A=O-N.sigBytes%O,T=A<<24|A<<16|A<<8|A,j=[],B=0;B<A;B+=4)j.push(T);var z=x.create(j,A);N.concat(z)},unpad:function(N){var I=N.words[N.sigBytes-1>>>2]&255;N.sigBytes-=I}};d.BlockCipher=P.extend({cfg:P.cfg.extend({mode:g,padding:h}),reset:function(){var N;P.reset.call(this);var I=this.cfg,O=I.iv,A=I.mode;this._xformMode==this._ENC_XFORM_MODE?N=A.createEncryptor:(N=A.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==N?this._mode.init(this,O&&O.words):(this._mode=N.call(A,this,O&&O.words),this._mode.__creator=N)},_doProcessBlock:function(N,I){this._mode.processBlock(N,I)},_doFinalize:function(){var N,I=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(I.pad(this._data,this.blockSize),N=this._process(!0)):(N=this._process(!0),I.unpad(N)),N},blockSize:128/32});var f=d.CipherParams=m.extend({init:function(N){this.mixIn(N)},toString:function(N){return(N||this.formatter).stringify(this)}}),c=l.format={},s=c.OpenSSL={stringify:function(N){var I,O=N.ciphertext,A=N.salt;return A?I=x.create([1398893684,1701076831]).concat(A).concat(O):I=O,I.toString(E)},parse:function(N){var I,O=E.parse(N),A=O.words;return A[0]==1398893684&&A[1]==1701076831&&(I=x.create(A.slice(2,4)),A.splice(0,4),O.sigBytes-=16),f.create({ciphertext:O,salt:I})}},w=d.SerializableCipher=m.extend({cfg:m.extend({format:s}),encrypt:function(N,I,O,A){A=this.cfg.extend(A);var T=N.createEncryptor(O,A),j=T.finalize(I),B=T.cfg;return f.create({ciphertext:j,key:O,iv:B.iv,algorithm:N,mode:B.mode,padding:B.padding,blockSize:N.blockSize,formatter:A.format})},decrypt:function(N,I,O,A){A=this.cfg.extend(A),I=this._parse(I,A.format);var T=N.createDecryptor(O,A).finalize(I.ciphertext);return T},_parse:function(N,I){return typeof N=="string"?I.parse(N,this):N}}),v=l.kdf={},k=v.OpenSSL={execute:function(N,I,O,A){A||(A=x.random(64/8));var T=C.create({keySize:I+O}).compute(N,A),j=x.create(T.words.slice(I),O*4);return T.sigBytes=I*4,f.create({key:T,iv:j,salt:A})}},L=d.PasswordBasedCipher=w.extend({cfg:w.cfg.extend({kdf:k}),encrypt:function(N,I,O,A){A=this.cfg.extend(A);var T=A.kdf.execute(O,N.keySize,N.ivSize);A.iv=T.iv;var j=w.encrypt.call(this,N,I,T.key,A);return j.mixIn(T),j},decrypt:function(N,I,O,A){A=this.cfg.extend(A),I=this._parse(I,A.format);var T=A.kdf.execute(O,N.keySize,N.ivSize,I.salt);A.iv=T.iv;var j=w.decrypt.call(this,N,I,T.key,A);return j}})}()})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.Request=r.createRequest=void 0;var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(12)),d=i.__importDefault(o(3)),m=i.__importDefault(o(7)),x=o(4),R=i.__importDefault(o(8)),y=i.__importDefault(o(2)),E=i.__importDefault(o(22)),u=a.getGlobalObject(),C=function(){},P=u._ablyjs_jsonp={};P._=function(c){return P["_"+c]||C};var b=1,p="jsonp";function g(c,s,w,v,k,L,N){return L=L||R.default.TIMEOUTS,new h(void 0,c,s,a.copy(w),v,k,L,N)}r.createRequest=g;var S=function(c){i.__extends(s,c);function s(w,v,k){var L=c.call(this,w,v,k)||this;return L.shortName=p,k.stream=!1,L}return s.isAvailable=function(){return d.default.Config.jsonpSupported&&d.default.Config.allowComet},s.prototype.toString=function(){return"JSONPTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},s.prototype.createRequest=function(w,v,k,L,N,I,O){return I=(this===null||this===void 0?void 0:this.timeouts)||I||R.default.TIMEOUTS,g(w,v,k,L,N,I,O)},s}(l.default),h=function(c){i.__extends(s,c);function s(w,v,k,L,N,I,O,A){var T=c.call(this)||this;return w===void 0&&(w=b++),T.id=w,T.uri=v,T.params=L||{},T.params.rnd=a.cheapRandStr(),k&&(k["X-Ably-Version"]&&(T.params.v=k["X-Ably-Version"]),k["X-Ably-Lib"]&&(T.params.lib=k["X-Ably-Lib"])),T.body=N,T.method=A,T.requestMode=I,T.timeouts=O,T.requestComplete=!1,T}return s.prototype.exec=function(){var w=this,v=this.id,k=this.body,L=this.method,N=this.uri,I=this.params;I.callback="_ablyjs_jsonp._("+v+")",I.envelope="jsonp",k&&(I.body=k),L&&L!=="get"&&(I.method=L);var O=this.script=document.createElement("script"),A=N+a.toQueryString(I);O.src=A,O.src.split("/").slice(-1)[0]!==A.split("/").slice(-1)[0]&&y.default.logAction(y.default.LOG_ERROR,"JSONP Request.exec()","Warning: the browser appears to have truncated the script URI. This will likely result in the request failing due to an unparseable body param"),O.async=!0,O.type="text/javascript",O.charset="UTF-8",O.onerror=function(B){w.complete(new x.PartialErrorInfo("JSONP script error (event: "+d.default.Config.inspect(B)+")",null,400))},P["_"+v]=function(B){if(B.statusCode){var z=B.response;if(B.statusCode==204)w.complete(null,null,null,B.statusCode);else if(!z)w.complete(new x.PartialErrorInfo("Invalid server response: no envelope detected",null,500));else if(B.statusCode<400||a.isArray(z))w.complete(null,z,B.headers,B.statusCode);else{var $=z.error||new x.PartialErrorInfo("Error response received from server",null,B.statusCode);w.complete($)}}else w.complete(null,B)};var T=this.requestMode==E.default.REQ_SEND?this.timeouts.httpRequestTimeout:this.timeouts.recvTimeout;this.timer=setTimeout(this.abort.bind(this),T);var j=document.getElementsByTagName("head")[0];j.insertBefore(O,j.firstChild)},s.prototype.complete=function(w,v,k,L){if(k=k||{},!this.requestComplete){this.requestComplete=!0;var N=void 0;v&&(N=typeof v=="string"?"text/plain":"application/json",k["content-type"]=N,this.emit("data",v)),this.emit("complete",w,v,k,!0,L),this.dispose()}},s.prototype.abort=function(){this.dispose()},s.prototype.dispose=function(){var w=this.timer;w&&(clearTimeout(w),this.timer=null);var v=this.script;v.parentNode&&v.parentNode.removeChild(v),delete P[this.id],this.emit("disposed")},s}(m.default);r.Request=h;function f(c){return u.JSONPTransport=S,S.isAvailable()&&(c.supportedTransports[p]=S),S}r.default=f},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(2)),d=i.__importDefault(o(8)),m=i.__importDefault(o(18)),x=i.__importDefault(o(46)),R=i.__importDefault(o(20)),y=i.__importDefault(o(33)),E=i.__importDefault(o(4)),u=i.__importDefault(o(49)),C=i.__importDefault(o(19)),P=i.__importDefault(o(3)),b=i.__importDefault(o(9)),p=i.__importDefault(o(16)),g=i.__importDefault(o(15)),S=function(){},h=function(){function c(s){if(!s){var w="no options provided";throw l.default.logAction(l.default.LOG_ERROR,"Rest()",w),new Error(w)}var v=d.default.objectifyOptions(s);v.log?(l.default.setLog(v.log.level,v.log.handler),l.default.deprecated("The `log` client option","Equivalent functionality is provided by the `logLevel` and `logHandler` client options. Update your client options code of the form `{ log: { level: logLevel, handler: logHandler } }` to instead be `{ logLevel, logHandler }`.")):l.default.setLog(v.logLevel,v.logHandler),l.default.logAction(l.default.LOG_MICRO,"Rest()","initialized with clientOptions "+P.default.Config.inspect(s));var k=this.options=d.default.normaliseOptions(v);if(k.key){var L=k.key.match(/^([^:\s]+):([^:.\s]+)$/);if(!L){var w="invalid key parameter";throw l.default.logAction(l.default.LOG_ERROR,"Rest()",w),new E.default(w,40400,404)}k.keyName=L[1],k.keySecret=L[2]}if("clientId"in k)if(typeof k.clientId=="string"||k.clientId===null){if(k.clientId==="*")throw new E.default('Can’t use "*" as a clientId as that string is reserved. (To change the default token request behaviour to use a wildcard clientId, use {defaultTokenParams: {clientId: "*"}})',40012,400)}else throw new E.default("clientId must be either a string or null",40012,400);l.default.logAction(l.default.LOG_MINOR,"Rest()","started; version = "+d.default.version),this.baseUri=this.authority=function(N){return d.default.getHttpScheme(k)+N+":"+d.default.getPort(k,!1)},this._currentFallback=null,this.serverTimeOffset=null,this.http=new P.default.Http(k),this.auth=new m.default(this,k),this.channels=new f(this),this.push=new x.default(this)}return c.prototype.stats=function(s,w){if(w===void 0)if(typeof s=="function")w=s,s=null;else{if(this.options.promises)return a.promisify(this,"stats",[s]);w=S}var v=a.defaultGetHeaders(this.options),k=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,L=this.http.supportsLinkHeaders?void 0:k;this.options.headers&&a.mixin(v,this.options.headers),new R.default(this,"/stats",v,L,function(N,I,O){for(var A=O?N:JSON.parse(N),T=0;T<A.length;T++)A[T]=u.default.fromValues(A[T]);return A}).get(s,w)},c.prototype.time=function(s,w){var v=this;if(w===void 0){if(typeof s=="function")w=s,s=null;else if(this.options.promises)return a.promisify(this,"time",[s])}var k=w||S,L=a.defaultGetHeaders(this.options);this.options.headers&&a.mixin(L,this.options.headers);var N=function(I){return v.authority(I)+"/time"};this.http.do(C.default.Get,this,N,L,null,s,function(I,O,A,T){if(I){k(I);return}T||(O=JSON.parse(O));var j=O[0];if(!j){k(new E.default("Internal error (unexpected result type from GET /time)",5e4,500));return}v.serverTimeOffset=j-a.now(),k(null,j)})},c.prototype.request=function(s,w,v,k,L,N){var I=this.options.useBinaryProtocol,O=I?P.default.Config.msgpack.encode:JSON.stringify,A=I?P.default.Config.msgpack.decode:JSON.parse,T=I?a.Format.msgpack:a.Format.json,j=this.http.supportsLinkHeaders?void 0:T;v=v||{};var B=s.toLowerCase(),z=B=="get"?a.defaultGetHeaders(this.options,T):a.defaultPostHeaders(this.options,T);if(N===void 0){if(this.options.promises)return a.promisify(this,"request",[s,w,v,k,L]);N=S}typeof k!="string"&&(k=O(k)),this.options.headers&&a.mixin(z,this.options.headers),L&&a.mixin(z,L);var $=new R.default(this,w,z,j,function(V,G,M){return a.ensureArray(M?V:A(V))},!0);if(!a.arrIn(P.default.Http.methods,B))throw new E.default("Unsupported method "+B,40500,405);a.arrIn(P.default.Http.methodsWithBody,B)?$[B](v,k,N):$[B](v,N)},c.prototype.batchPublish=function(s,w){if(w===void 0){if(this.options.promises)return a.promisify(this,"batchPublish",[s]);w=S}var v=w,k,L;a.isArray(s)?(k=s,L=!1):(k=[s],L=!0);var N=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,I=a.defaultPostHeaders(this.options,N);this.options.headers&&a.mixin(I,this.options.headers);var O=a.encodeBody(k,N);g.default.post(this,"/messages",O,I,{newBatchResponse:"true"},null,function(A,T,j,B){if(A){v(A);return}var z=B?T:a.decodeBody(T,N);L?v(null,z[0]):v(null,z)})},c.prototype.batchPresence=function(s,w){if(w===void 0){if(this.options.promises)return a.promisify(this,"batchPresence",[s]);w=S}var v=w,k=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,L=a.defaultPostHeaders(this.options,k);this.options.headers&&a.mixin(L,this.options.headers);var N=s.join(",");g.default.get(this,"/presence",L,{newBatchResponse:"true",channels:N},null,function(I,O,A,T){if(I){v(I);return}var j=T?O:a.decodeBody(O,k);v(null,j)})},c.prototype.setLog=function(s){l.default.setLog(s.level,s.handler)},c.Promise=function(s){return s=d.default.objectifyOptions(s),s.promises=!0,new c(s)},c.Callbacks=c,c.Platform=P.default,c.Message=b.default,c.PresenceMessage=p.default,c}(),f=function(){function c(s){this.rest=s,this.all=Object.create(null)}return c.prototype.get=function(s,w){s=String(s);var v=this.all[s];return v?w&&v.setOptions(w):this.all[s]=v=new y.default(this.rest,s,w),v},c.prototype.release=function(s){delete this.all[String(s)]},c}();r.default=h},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return i.enc.Utf8})},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(a){var l=i,d=l.lib,m=d.WordArray,x=d.Hasher,R=l.algo,y=[],E=[];(function(){function P(S){for(var h=a.sqrt(S),f=2;f<=h;f++)if(!(S%f))return!1;return!0}function b(S){return(S-(S|0))*4294967296|0}for(var p=2,g=0;g<64;)P(p)&&(g<8&&(y[g]=b(a.pow(p,1/2))),E[g]=b(a.pow(p,1/3)),g++),p++})();var u=[],C=R.SHA256=x.extend({_doReset:function(){this._hash=new m.init(y.slice(0))},_doProcessBlock:function(P,b){for(var p=this._hash.words,g=p[0],S=p[1],h=p[2],f=p[3],c=p[4],s=p[5],w=p[6],v=p[7],k=0;k<64;k++){if(k<16)u[k]=P[b+k]|0;else{var L=u[k-15],N=(L<<25|L>>>7)^(L<<14|L>>>18)^L>>>3,I=u[k-2],O=(I<<15|I>>>17)^(I<<13|I>>>19)^I>>>10;u[k]=N+u[k-7]+O+u[k-16]}var A=c&s^~c&w,T=g&S^g&h^S&h,j=(g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22),B=(c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25),z=v+B+A+E[k]+u[k],$=j+T;v=w,w=s,s=c,c=f+z|0,f=h,h=S,S=g,g=z+$|0}p[0]=p[0]+g|0,p[1]=p[1]+S|0,p[2]=p[2]+h|0,p[3]=p[3]+f|0,p[4]=p[4]+c|0,p[5]=p[5]+s|0,p[6]=p[6]+w|0,p[7]=p[7]+v|0},_doFinalize:function(){var P=this._data,b=P.words,p=this._nDataBytes*8,g=P.sigBytes*8;return b[g>>>5]|=128<<24-g%32,b[(g+64>>>9<<4)+14]=a.floor(p/4294967296),b[(g+64>>>9<<4)+15]=p,P.sigBytes=b.length*4,this._process(),this._hash},clone:function(){var P=x.clone.call(this);return P._hash=this._hash.clone(),P}});l.SHA256=x._createHelper(C),l.HmacSHA256=x._createHmacHelper(C)}(Math),i.SHA256})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(2)),m=i.__importDefault(o(34)),x=i.__importDefault(o(9)),R=i.__importDefault(o(4)),y=i.__importDefault(o(20)),E=i.__importDefault(o(15)),u=i.__importDefault(o(3));function C(){}var P=9;function b(S){return a.arrEvery(S,function(h){return!h.id})}function p(S){var h=S||{};if(h.cipher){if(!u.default.Crypto)throw new Error("Encryption not enabled; use ably.encryption.js instead");var f=u.default.Crypto.getCipher(h.cipher);h.cipher=f.cipherParams,h.channelCipher=f.cipher}else"cipher"in h&&(h.cipher=void 0,h.channelCipher=null);return h}var g=function(S){i.__extends(h,S);function h(f,c,s){var w=S.call(this)||this;return d.default.logAction(d.default.LOG_MINOR,"Channel()","started; name = "+c),w.rest=f,w.name=c,w.basePath="/channels/"+encodeURIComponent(c),w.presence=new m.default(w),w.channelOptions=p(s),w}return h.prototype.setOptions=function(f){this.channelOptions=p(f)},h.prototype.history=function(f,c){if(d.default.logAction(d.default.LOG_MICRO,"Channel.history()","channel = "+this.name),c===void 0)if(typeof f=="function")c=f,f=null;else{if(this.rest.options.promises)return a.promisify(this,"history",arguments);c=C}this._history(f,c)},h.prototype._history=function(f,c){var s=this.rest,w=s.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,v=this.rest.http.supportsLinkHeaders?void 0:w,k=a.defaultGetHeaders(s.options,w);s.options.headers&&a.mixin(k,s.options.headers);var L=this.channelOptions;new y.default(s,this.basePath+"/messages",k,v,function(N,I,O){return x.default.fromResponseBody(N,L,O?void 0:w)}).get(f,c)},h.prototype.publish=function(){var f=this,c=arguments.length,s=arguments[0],w=arguments[1],v=arguments[c-1],k,L;if(typeof v!="function"){if(this.rest.options.promises)return a.promisify(this,"publish",arguments);v=C}if(typeof s=="string"||s===null)k=[x.default.fromValues({name:s,data:w})],L=arguments[2];else if(a.isObject(s))k=[x.default.fromValues(s)],L=arguments[1];else if(a.isArray(s))k=x.default.fromValuesArray(s),L=arguments[1];else throw new R.default("The single-argument form of publish() expects a message object or an array of message objects",40013,400);(typeof L!="object"||!L)&&(L={});var N=this.rest,I=N.options,O=I.useBinaryProtocol?a.Format.msgpack:a.Format.json,A=N.options.idempotentRestPublishing,T=a.defaultPostHeaders(N.options,O);if(I.headers&&a.mixin(T,I.headers),A&&b(k)){var j=a.randomString(P);a.arrForEach(k,function(B,z){B.id=j+":"+z.toString()})}x.default.encodeArray(k,this.channelOptions,function(B){if(B){v(B);return}var z=x.default.getMessagesSize(k),$=I.maxMessageSize;if(z>$){v(new R.default("Maximum size of messages that can be published at once exceeded ( was "+z+" bytes; limit is "+$+" bytes)",40009,400));return}f._publish(x.default.serialize(k,O),T,L,v)})},h.prototype._publish=function(f,c,s,w){E.default.post(this.rest,this.basePath+"/messages",f,c,s,null,w)},h.prototype.status=function(f){if(typeof f!="function"&&this.rest.options.promises)return a.promisify(this,"status",[]);var c=this.rest.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,s=a.defaultPostHeaders(this.rest.options,c);E.default.get(this.rest,this.basePath,s,{},c,f||C)},h}(l.default);r.default=g},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(2)),m=i.__importDefault(o(20)),x=i.__importDefault(o(16));function R(){}var y=function(E){i.__extends(u,E);function u(C){var P=E.call(this)||this;return P.channel=C,P.basePath=C.basePath+"/presence",P}return u.prototype.get=function(C,P){if(d.default.logAction(d.default.LOG_MICRO,"Presence.get()","channel = "+this.channel.name),P===void 0)if(typeof C=="function")P=C,C=null;else{if(this.channel.rest.options.promises)return a.promisify(this,"get",arguments);P=R}var b=this.channel.rest,p=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,g=this.channel.rest.http.supportsLinkHeaders?void 0:p,S=a.defaultGetHeaders(b.options,p);b.options.headers&&a.mixin(S,b.options.headers);var h=this.channel.channelOptions;new m.default(b,this.basePath,S,g,function(f,c,s){return x.default.fromResponseBody(f,h,s?void 0:p)}).get(C,P)},u.prototype.history=function(C,P){return d.default.logAction(d.default.LOG_MICRO,"Presence.history()","channel = "+this.channel.name),this._history(C,P)},u.prototype._history=function(C,P){if(P===void 0)if(typeof C=="function")P=C,C=null;else{if(this.channel.rest.options.promises)return a.promisify(this,"_history",[C]);P=R}var b=this.channel.rest,p=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,g=this.channel.rest.http.supportsLinkHeaders?void 0:p,S=a.defaultGetHeaders(b.options,p);b.options.headers&&a.mixin(S,b.options.headers);var h=this.channel.channelOptions;new m.default(b,this.basePath+"/history",S,g,function(f,c,s){return x.default.fromResponseBody(f,h,s?void 0:p)}).get(C,P)},u}(l.default);r.default=y},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0}),r.TransportParams=void 0;var a=o(0),l=a.__importDefault(o(10)),d=a.__importStar(o(1)),m=a.__importStar(o(52)),x=a.__importStar(o(8)),R=a.__importDefault(o(3)),y=a.__importDefault(o(7)),E=a.__importDefault(o(36)),u=a.__importDefault(o(2)),C=a.__importDefault(o(37)),P=a.__importStar(o(21)),b=a.__importStar(o(4)),p=a.__importDefault(o(18)),g=a.__importDefault(o(9)),S=a.__importDefault(o(24)),h=a.__importDefault(o(53)),f=a.__importDefault(o(26)),c=a.__importDefault(o(14)),s=function(){var V;return typeof R.default.WebStorage!="undefined"&&((V=R.default.WebStorage)===null||V===void 0?void 0:V.localSupported)},w=function(){var V;return typeof R.default.WebStorage!="undefined"&&((V=R.default.WebStorage)===null||V===void 0?void 0:V.sessionSupported)},v=l.default.Action,k=function(){},L="ably-transport-preference",N="ably-connection-recovery";function I(){var V,G;return w()&&((G=(V=R.default.WebStorage)===null||V===void 0?void 0:V.getSession)===null||G===void 0?void 0:G.call(V,N))}function O(V){var G,M;return w()&&((M=(G=R.default.WebStorage)===null||G===void 0?void 0:G.setSession)===null||M===void 0?void 0:M.call(G,N,V))}function A(){var V,G;return w()&&((G=(V=R.default.WebStorage)===null||V===void 0?void 0:V.removeSession)===null||G===void 0?void 0:G.call(V,N))}function T(V,G){return d.arrIndexOf(R.default.Defaults.transportPreferenceOrder,V.shortName)>d.arrIndexOf(R.default.Defaults.transportPreferenceOrder,G.shortName)}function j(V,G,M){var D;if(V.channel!==G.channel||(D=V.action)!==v.PRESENCE&&D!==v.MESSAGE||D!==G.action)return!1;var U=D===v.PRESENCE?"presence":"messages",_=V[U].concat(G[U]),W=g.default.getMessagesSize(_);return W>M||!d.allSame(_,"clientId")||!d.arrEvery(_,function(X){return!X.id})?!1:(V[U]=_,!0)}function B(V){try{return JSON.parse(V)}catch(G){return null}}var z=function(){function V(G,M,D,U){this.options=G,this.host=M,this.mode=D,this.connectionKey=U,this.format=G.useBinaryProtocol?d.Format.msgpack:d.Format.json}return V.prototype.getConnectParams=function(G){var M=G?d.copy(G):{},D=this.options;switch(this.mode){case"upgrade":M.upgrade=this.connectionKey;break;case"resume":M.resume=this.connectionKey;break;case"recover":{var U=B(D.recover);U&&(M.recover=U.connectionKey);break}}return D.clientId!==void 0&&(M.clientId=D.clientId),D.echoMessages===!1&&(M.echo="false"),this.format!==void 0&&(M.format=this.format),this.stream!==void 0&&(M.stream=this.stream),this.heartbeats!==void 0&&(M.heartbeats=this.heartbeats),M.v=x.default.protocolVersion,M.agent=(0,x.getAgentString)(this.options),D.transportParams!==void 0&&d.mixin(M,D.transportParams),M},V.prototype.toString=function(){var G="[mode="+this.mode;return this.host&&(G+=",host="+this.host),this.connectionKey&&(G+=",connectionKey="+this.connectionKey),this.format&&(G+=",format="+this.format),G+="]",G},V}();r.TransportParams=z;var $=function(V){a.__extends(G,V);function G(M,D){var U=V.call(this)||this;U.disconnectedRetryCount=0,G.initTransports(),U.realtime=M,U.options=D;var _=D.timeouts,W=_.preferenceConnectTimeout+_.realtimeRequestTimeout;if(U.states={initialized:{state:"initialized",terminal:!1,queueEvents:!0,sendEvents:!1,failState:"disconnected"},connecting:{state:"connecting",terminal:!1,queueEvents:!0,sendEvents:!1,retryDelay:W,failState:"disconnected"},connected:{state:"connected",terminal:!1,queueEvents:!1,sendEvents:!0,failState:"disconnected"},synchronizing:{state:"connected",terminal:!1,queueEvents:!0,sendEvents:!1,forceQueueEvents:!0,failState:"disconnected"},disconnected:{state:"disconnected",terminal:!1,queueEvents:!0,sendEvents:!1,retryDelay:_.disconnectedRetryTimeout,failState:"disconnected"},suspended:{state:"suspended",terminal:!1,queueEvents:!1,sendEvents:!1,retryDelay:_.suspendedRetryTimeout,failState:"suspended"},closing:{state:"closing",terminal:!1,queueEvents:!1,sendEvents:!1,retryDelay:_.realtimeRequestTimeout,failState:"closed"},closed:{state:"closed",terminal:!0,queueEvents:!1,sendEvents:!1,failState:"closed"},failed:{state:"failed",terminal:!0,queueEvents:!1,sendEvents:!1,failState:"failed"}},U.state=U.states.initialized,U.errorReason=null,U.queuedMessages=new E.default,U.msgSerial=0,U.connectionDetails=void 0,U.connectionId=void 0,U.connectionKey=void 0,U.connectionStateTtl=_.connectionStateTtl,U.maxIdleInterval=null,U.transports=d.intersect(D.transports||x.default.defaultTransports,G.supportedTransports),U.baseTransport=d.intersect(x.default.baseTransportOrder,U.transports)[0],U.upgradeTransports=d.intersect(U.transports,x.default.upgradeTransports),U.transportPreference=null,U.httpHosts=x.default.getHosts(D),U.activeProtocol=null,U.proposedTransports=[],U.pendingTransports=[],U.host=null,U.lastAutoReconnectAttempt=null,U.lastActivity=null,U.forceFallbackHost=!1,U.connectCounter=0,u.default.logAction(u.default.LOG_MINOR,"Realtime.ConnectionManager()","started"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","requested transports = ["+(D.transports||x.default.defaultTransports)+"]"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","available transports = ["+U.transports+"]"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","http hosts = ["+U.httpHosts+"]"),!U.transports.length){var X="no requested transports available";throw u.default.logAction(u.default.LOG_ERROR,"realtime.ConnectionManager()",X),new Error(X)}var q=R.default.Config.addEventListener;return q&&(w()&&typeof D.recover=="function"&&q("beforeunload",U.persistConnection.bind(U)),D.closeOnUnload===!0&&q("beforeunload",function(){u.default.logAction(u.default.LOG_MAJOR,"Realtime.ConnectionManager()","beforeunload event has triggered the connection to close as closeOnUnload is true"),U.requestState({state:"closing"})}),q("online",function(){U.state==U.states.disconnected||U.state==U.states.suspended?(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager caught browser ‘online’ event","reattempting connection"),U.requestState({state:"connecting"})):U.state==U.states.connecting&&(U.pendingTransports.forEach(function(re){re.off()}),U.disconnectAllTransports(),U.startConnect())}),q("offline",function(){U.state==U.states.connected&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager caught browser ‘offline’ event","disconnecting active transport"),U.disconnectAllTransports())})),U}return G.initTransports=function(){(0,h.default)(G),d.arrForEach(R.default.Transports,function(M){M(G)})},G.prototype.createTransportParams=function(M,D){return new z(this.options,M,D,this.connectionKey)},G.prototype.getTransportParams=function(M){var D=this,U=function(_){if(D.connectionKey){_("resume");return}if(typeof D.options.recover=="string"){_("recover");return}var W=D.options.recover,X=I();if(X&&typeof W=="function"){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Calling clientOptions-provided recover function with last session data"),W(X,function(q){q?(D.options.recover=X.recoveryKey,_("recover")):_("clean")});return}_("clean")};U(function(_){var W=D.createTransportParams(null,_);if(_==="recover"){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Transport recovery mode = recover; recoveryKey = "+D.options.recover);var X=B(D.options.recover);X&&(D.msgSerial=X.msgSerial)}else u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Transport params = "+W.toString());M(W)})},G.prototype.tryATransport=function(M,D,U){var _=this;u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.tryATransport()","trying "+D),f.default.tryConnect(G.supportedTransports[D],this,this.realtime.auth,M,function(W,X){var q=_.state;if(q==_.states.closing||q==_.states.closed||q==_.states.failed){X&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.tryATransport()","connection "+q.state+" while we were attempting the transport; closing "+X),X.close()),U(!0);return}if(W){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.tryATransport()","transport "+D+" "+W.event+", err: "+W.error.toString()),p.default.isTokenErr(W.error)&&!(_.errorReason&&p.default.isTokenErr(_.errorReason))?(_.errorReason=W.error,_.realtime.auth._forceNewToken(null,null,function(re){if(re){_.actOnErrorFromAuthorize(re);return}_.tryATransport(M,D,U)})):W.event==="failed"?(_.notifyState({state:"failed",error:W.error}),U(!0)):W.event==="disconnected"&&((0,P.isRetriable)(W.error)?U(!1):(_.notifyState({state:_.states.connecting.failState,error:W.error}),U(!0)));return}u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.tryATransport()","viable transport "+D+"; setting pending"),_.setTransportPending(X,M),U(null,X)})},G.prototype.setTransportPending=function(M,D){var U=this,_=D.mode;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setTransportPending()","transport = "+M+"; mode = "+_),d.arrDeleteValue(this.proposedTransports,M),this.pendingTransports.push(M);var W=R.default.Defaults.transportPreferenceOrder[R.default.Defaults.transportPreferenceOrder.length-1];M.once("connected",function(q,re,ie){_=="upgrade"&&U.activeProtocol?M.shortName!==W&&d.arrIn(U.getUpgradePossibilities(),W)&&U.activeProtocol?setTimeout(function(){U.scheduleTransportActivation(q,M,re,ie)},U.options.timeouts.parallelUpgradeDelay):U.scheduleTransportActivation(q,M,re,ie):(U.activateTransport(q,M,re,ie),R.default.Config.nextTick(function(){U.connectImpl(D)})),_==="recover"&&U.options.recover&&(U.options.recover=null,U.unpersistConnection())});var X=this;M.on(["disconnected","closed","failed"],function(q){X.deactivateTransport(M,this.event,q)}),this.emit("transport.pending",M)},G.prototype.scheduleTransportActivation=function(M,D,U,_){var W=this,X=this.activeProtocol&&this.activeProtocol.getTransport(),q=function(){D.disconnect(),d.arrDeleteValue(W.pendingTransports,D)};if(this.state!==this.states.connected&&this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Current connection state ("+this.state.state+(this.state===this.states.synchronizing?", but with an upgrade already in progress":"")+") is not valid to upgrade in; abandoning upgrade to "+D.shortName),q();return}if(X&&!T(D,X)){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Proposed transport "+D.shortName+" is no better than current active transport "+X.shortName+" - abandoning upgrade"),q();return}u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Scheduling transport upgrade; transport = "+D);var re=null;if(!D.isConnected){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Proposed transport "+D.shortName+"is no longer connected; abandoning upgrade"),q();return}if(this.state===this.states.connected)u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.scheduleTransportActivation()","Currently connected, so temporarily pausing events until the upgrade is complete"),this.state=this.states.synchronizing,re=this.activeProtocol;else if(this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Current connection state ("+this.state.state+(this.state===this.states.synchronizing?", but with an upgrade already in progress":"")+") is not valid to upgrade in; abandoning upgrade to "+D.shortName),q();return}u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Syncing transport; transport = "+D);var ie=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Activating transport; transport = "+D),D.send(l.default.fromValues({action:v.ACTIVATE})),W.activateTransport(M,D,U,_),W.state===W.states.synchronizing?(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.scheduleTransportActivation()","Pre-upgrade protocol idle, sending queued messages on upgraded transport; transport = "+D),W.state=W.states.connected):u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Pre-upgrade protocol idle, but state is now "+W.state.state+", so leaving unchanged"),W.state.sendEvents&&W.sendQueuedMessages()};re?re.onceIdle(ie):ie()},G.prototype.activateTransport=function(M,D,U,_){var W=this;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","transport = "+D),M&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","error = "+M),U&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.activateTransport()","connectionId = "+U),_&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.activateTransport()","connectionDetails = "+JSON.stringify(_)),this.persistTransportPreference(D);var X=this.state,q=this.states.connected.state;if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","current state = "+X.state),X.state==this.states.closing.state||X.state==this.states.closed.state||X.state==this.states.failed.state)return u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","Disconnecting transport and abandoning"),D.disconnect(),!1;if(d.arrDeleteValue(this.pendingTransports,D),!D.isConnected)return u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","Declining to activate transport "+D+" since it appears to no longer be connected"),!1;var re=this.activeProtocol;this.activeProtocol=new m.default(D),this.host=D.params.host;var ie=_.connectionKey;if(ie&&this.connectionKey!=ie&&this.setConnection(U,_,!!M),this.onConnectionDetailsUpdate(_,D),R.default.Config.nextTick(function(){D.on("connected",function(Y,le,se){W.onConnectionDetailsUpdate(se,D),W.emit("update",new C.default(q,q,null,Y))})}),X.state===this.states.connected.state?M&&(this.errorReason=this.realtime.connection.errorReason=M,this.emit("update",new C.default(q,q,null,M))):(this.notifyState({state:"connected",error:M}),this.errorReason=this.realtime.connection.errorReason=M||null),this.emit("transport.active",D),re)if(re.messageQueue.count()>0&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","Previous active protocol (for transport "+re.transport.shortName+", new one is "+D.shortName+") finishing with "+re.messageQueue.count()+" messages still pending"),re.transport===D){var ee="Assumption violated: activating a transport that was also the transport for the previous active protocol; transport = "+D.shortName+"; stack = "+new Error().stack;u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()",ee)}else re.finish();return d.safeArrForEach(this.pendingTransports,function(Y){if(Y===D){var le="Assumption violated: activating a transport that is still marked as a pending transport; transport = "+D.shortName+"; stack = "+new Error().stack;u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()",le),d.arrDeleteValue(W.pendingTransports,D)}else Y.disconnect()}),d.safeArrForEach(this.proposedTransports,function(Y){Y===D?(u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","Assumption violated: activating a transport that is still marked as a proposed transport; transport = "+D.shortName+"; stack = "+new Error().stack),d.arrDeleteValue(W.proposedTransports,D)):Y.dispose()}),!0},G.prototype.deactivateTransport=function(M,D,U){var _=this.activeProtocol,W=_&&_.getTransport()===M,X=d.arrDeleteValue(this.pendingTransports,M),q=d.arrDeleteValue(this.proposedTransports,M),re=this.noTransportsScheduledForActivation();if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.deactivateTransport()","transport = "+M),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.deactivateTransport()","state = "+D+(W?"; was active":X?"; was pending":q?"; was proposed":"")+(re?"":"; another transport is scheduled for activation")),U&&U.message&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","reason = "+U.message),W&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","Getting, clearing, and requeuing "+this.activeProtocol.messageQueue.count()+" pending messages"),this.queuePendingMessages(_.getPendingMessages()),R.default.Config.nextTick(function(){_.clearPendingMessages()}),this.activeProtocol=this.host=null),this.emit("transport.inactive",M),W&&re||W&&D==="failed"||D==="closed"||_===null&&X&&this.pendingTransports.length===0){if(D==="disconnected"&&U&&U.statusCode>500&&this.httpHosts.length>1){this.unpersistTransportPreference(),this.forceFallbackHost=!0,this.notifyState({state:D,error:U,retryImmediately:!0});return}var ie=D==="failed"&&p.default.isTokenErr(U)?"disconnected":D;this.notifyState({state:ie,error:U});return}W&&D==="disconnected"&&this.state!==this.states.synchronizing&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","wasActive but another transport is connected and scheduled for activation, so going into the connecting state until it activates"),this.startSuspendTimer(),this.startTransitionTimer(this.states.connecting),this.notifyState({state:"connecting",error:U}))},G.prototype.noTransportsScheduledForActivation=function(){return d.isEmpty(this.pendingTransports)||this.pendingTransports.every(function(M){return!M.isConnected})},G.prototype.setConnection=function(M,D,U){var _=this.connectionId,W=_&&_!==M,X=!_&&U;(W||X)&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setConnection()","Resetting msgSerial"),this.msgSerial=0,this.queuedMessages.resetSendAttempted()),this.connectionId!==M&&u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setConnection()","New connectionId; reattaching any attached channels"),this.realtime.connection.id=this.connectionId=M,this.realtime.connection.key=this.connectionKey=D.connectionKey},G.prototype.clearConnection=function(){this.realtime.connection.id=this.connectionId=void 0,this.realtime.connection.key=this.connectionKey=void 0,this.msgSerial=0,this.unpersistConnection()},G.prototype.createRecoveryKey=function(){return this.connectionKey?JSON.stringify({connectionKey:this.connectionKey,msgSerial:this.msgSerial,channelSerials:this.realtime.channels.channelSerials()}):null},G.prototype.checkConnectionStateFreshness=function(){if(!(!this.lastActivity||!this.connectionId)){var M=d.now()-this.lastActivity;M>this.connectionStateTtl+this.maxIdleInterval&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.checkConnectionStateFreshness()","Last known activity from realtime was "+M+"ms ago; discarding connection state"),this.clearConnection(),this.states.connecting.failState="suspended")}},G.prototype.persistConnection=function(){if(w()){var M=this.createRecoveryKey();M&&O({recoveryKey:M,disconnectedAt:d.now(),location:i.location,clientId:this.realtime.auth.clientId})}},G.prototype.unpersistConnection=function(){A()},G.prototype.getError=function(){return this.errorReason||this.getStateError()},G.prototype.getStateError=function(){var M,D;return(D=(M=P.default)[this.state.state])===null||D===void 0?void 0:D.call(M)},G.prototype.activeState=function(){return this.state.queueEvents||this.state.sendEvents},G.prototype.enactStateChange=function(M){var D=M.current==="failed"?u.default.LOG_ERROR:u.default.LOG_MAJOR;u.default.logAction(D,"Connection state",M.current+(M.reason?"; reason: "+M.reason:"")),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.enactStateChange","setting new state: "+M.current+"; reason = "+(M.reason&&M.reason.message));var U=this.state=this.states[M.current];M.reason&&(this.errorReason=M.reason,this.realtime.connection.errorReason=M.reason),(U.terminal||U.state==="suspended")&&this.clearConnection(),this.emit("connectionstate",M)},G.prototype.startTransitionTimer=function(M){var D=this;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startTransitionTimer()","transitionState: "+M.state),this.transitionTimer&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startTransitionTimer()","clearing already-running timer"),clearTimeout(this.transitionTimer)),this.transitionTimer=setTimeout(function(){D.transitionTimer&&(D.transitionTimer=null,u.default.logAction(u.default.LOG_MINOR,"ConnectionManager "+M.state+" timer expired","requesting new state: "+M.failState),D.notifyState({state:M.failState}))},M.retryDelay)},G.prototype.cancelTransitionTimer=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.cancelTransitionTimer()",""),this.transitionTimer&&(clearTimeout(this.transitionTimer),this.transitionTimer=null)},G.prototype.startSuspendTimer=function(){var M=this;this.suspendTimer||(this.suspendTimer=setTimeout(function(){M.suspendTimer&&(M.suspendTimer=null,u.default.logAction(u.default.LOG_MINOR,"ConnectionManager suspend timer expired","requesting new state: suspended"),M.states.connecting.failState="suspended",M.notifyState({state:"suspended"}))},this.connectionStateTtl))},G.prototype.checkSuspendTimer=function(M){M!=="disconnected"&&M!=="suspended"&&M!=="connecting"&&this.cancelSuspendTimer()},G.prototype.cancelSuspendTimer=function(){this.states.connecting.failState="disconnected",this.suspendTimer&&(clearTimeout(this.suspendTimer),this.suspendTimer=null)},G.prototype.startRetryTimer=function(M){var D=this;this.retryTimer=setTimeout(function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager retry timer expired","retrying"),D.retryTimer=null,D.requestState({state:"connecting"})},M)},G.prototype.cancelRetryTimer=function(){this.retryTimer&&(clearTimeout(this.retryTimer),this.retryTimer=null)},G.prototype.notifyState=function(M){var D=this,U,_,W=M.state,X=W==="disconnected"&&(this.state===this.states.connected||this.state===this.states.synchronizing||M.retryImmediately||this.state===this.states.connecting&&M.error&&p.default.isTokenErr(M.error)&&!(this.errorReason&&p.default.isTokenErr(this.errorReason)));if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.notifyState()","new state: "+W+(X?"; will retry connection immediately":"")),W!=this.state.state&&(this.cancelTransitionTimer(),this.cancelRetryTimer(),this.checkSuspendTimer(M.state),(W==="suspended"||W==="connected")&&(this.disconnectedRetryCount=0),!this.state.terminal)){var q=this.states[M.state],re=q.retryDelay;q.state==="disconnected"&&(this.disconnectedRetryCount++,re=d.getRetryTime(q.retryDelay,this.disconnectedRetryCount));var ie=new C.default(this.state.state,q.state,re,M.error||((_=(U=P.default)[q.state])===null||_===void 0?void 0:_.call(U)));if(X){var ee=function(){D.state===D.states.disconnected&&(D.lastAutoReconnectAttempt=d.now(),D.requestState({state:"connecting"}))},Y=this.lastAutoReconnectAttempt&&d.now()-this.lastAutoReconnectAttempt+1;Y&&Y<1e3?(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.notifyState()","Last reconnect attempt was only "+Y+"ms ago, waiting another "+(1e3-Y)+"ms before trying again"),setTimeout(ee,1e3-Y)):R.default.Config.nextTick(ee)}else(W==="disconnected"||W==="suspended")&&this.startRetryTimer(re);(W==="disconnected"&&!X||W==="suspended"||q.terminal)&&R.default.Config.nextTick(function(){D.disconnectAllTransports()}),W=="connected"&&!this.activeProtocol&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.notifyState()","Broken invariant: attempted to go into connected state, but there is no active protocol"),this.enactStateChange(ie),this.state.sendEvents?this.sendQueuedMessages():this.state.queueEvents||(this.realtime.channels.propogateConnectionInterruption(W,ie.reason),this.failQueuedMessages(ie.reason))}},G.prototype.requestState=function(M){var D=this,U,_,W=M.state;if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.requestState()","requested state: "+W+"; current state: "+this.state.state),W!=this.state.state&&(this.cancelTransitionTimer(),this.cancelRetryTimer(),this.checkSuspendTimer(W),!(W=="connecting"&&this.state.state=="connected")&&!(W=="closing"&&this.state.state=="closed"))){var X=this.states[W],q=new C.default(this.state.state,X.state,null,M.error||((_=(U=P.default)[X.state])===null||_===void 0?void 0:_.call(U)));this.enactStateChange(q),W=="connecting"&&R.default.Config.nextTick(function(){D.startConnect()}),W=="closing"&&this.closeImpl()}},G.prototype.startConnect=function(){var M=this;if(this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startConnect()","Must be in connecting state to connect, but was "+this.state.state);return}var D=this.realtime.auth,U=++this.connectCounter,_=function(){M.checkConnectionStateFreshness(),M.getTransportParams(function(X){if(X.mode==="recover"&&X.options.recover){var q=B(X.options.recover);q&&M.realtime.channels.recoverChannels(q.channelSerials)}U===M.connectCounter&&M.connectImpl(X,U)})};if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startConnect()","starting connection"),this.startSuspendTimer(),this.startTransitionTimer(this.states.connecting),D.method==="basic")_();else{var W=function(X){U===M.connectCounter&&(X?M.actOnErrorFromAuthorize(X):_())};this.errorReason&&p.default.isTokenErr(this.errorReason)?D._forceNewToken(null,null,W):D._ensureValidAuthCredentials(!1,W)}},G.prototype.connectImpl=function(M,D){var U=this.state.state;U!==this.states.connecting.state&&U!==this.states.connected.state?u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectImpl()","Must be in connecting state to connect (or connected to upgrade), but was "+U):this.pendingTransports.length?u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectImpl()","Transports "+this.pendingTransports[0].toString()+" currently pending; taking no action"):U==this.states.connected.state?this.upgradeIfNeeded(M):this.transports.length>1&&this.getTransportPreference()?this.connectPreference(M,D):this.connectBase(M,D)},G.prototype.connectPreference=function(M,D){var U=this,_=this.getTransportPreference(),W=!1;d.arrIn(this.transports,_)||(this.unpersistTransportPreference(),this.connectImpl(M,D)),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectPreference()","Trying to connect with stored transport preference "+_);var X=setTimeout(function(){W=!0,U.state.state!==U.states.connected.state&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectPreference()","Shortcircuit connection attempt with "+_+" failed; clearing preference and trying from scratch"),U.disconnectAllTransports(),U.unpersistTransportPreference()),U.connectImpl(M,D)},this.options.timeouts.preferenceConnectTimeout);M.host=this.httpHosts[0],this.tryATransport(M,_,function(q,re){clearTimeout(X),W&&re?(re.off(),re.disconnect(),d.arrDeleteValue(U.pendingTransports,re)):!re&&!q&&(U.unpersistTransportPreference(),U.connectImpl(M,D))})},G.prototype.connectBase=function(M,D){var U=this,_=function(ie){U.notifyState({state:U.states.connecting.failState,error:ie})},W=this.httpHosts.slice(),X=function(ie,ee){D===U.connectCounter&&!ee&&!ie&&re()};u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectBase()","Trying to connect with base transport "+this.baseTransport);var q=W.shift();if(!q){_(new b.default("Unable to connect (no available host)",80003,404));return}M.host=q;var re=function(){if(!W.length){_(new b.default("Unable to connect (and no more fallback hosts to try)",80003,404));return}if(!U.realtime.http.checkConnectivity){_(new b.PartialErrorInfo("Internal error: Http.checkConnectivity not set",null,500));return}U.realtime.http.checkConnectivity(function(ie,ee){if(D===U.connectCounter){if(ie){_(ie);return}if(!ee){_(new b.default("Unable to connect (network unreachable)",80003,404));return}M.host=d.arrPopRandomElement(W),U.tryATransport(M,U.baseTransport,X)}})};if(this.forceFallbackHost&&W.length){this.forceFallbackHost=!1,re();return}this.tryATransport(M,this.baseTransport,X)},G.prototype.getUpgradePossibilities=function(){var M=this.activeProtocol.getTransport().shortName,D=d.arrIndexOf(this.upgradeTransports,M);return this.upgradeTransports.slice(D+1)},G.prototype.upgradeIfNeeded=function(M){var D=this,U=this.getUpgradePossibilities();u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.upgradeIfNeeded()","upgrade possibilities: "+R.default.Config.inspect(U)),U.length&&d.arrForEach(U,function(_){var W=D.createTransportParams(M.host,"upgrade");D.tryATransport(W,_,k)})},G.prototype.closeImpl=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.closeImpl()","closing connection"),this.cancelSuspendTimer(),this.startTransitionTimer(this.states.closing),d.safeArrForEach(this.pendingTransports,function(M){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Closing pending transport: "+M),M&&M.close()}),d.safeArrForEach(this.proposedTransports,function(M){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Disposing of proposed transport: "+M),M&&M.dispose()}),this.activeProtocol&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Closing active transport: "+this.activeProtocol.getTransport()),this.activeProtocol.getTransport().close()),this.notifyState({state:"closed"})},G.prototype.onAuthUpdated=function(M,D){var U=this,_;switch(this.state.state){case"connected":{if(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Sending AUTH message on active transport"),(this.pendingTransports.length||this.proposedTransports.length)&&this.state!==this.states.synchronizing){this.disconnectAllTransports(!0);var W=this.activeProtocol.getTransport().params;R.default.Config.nextTick(function(){U.state.state==="connected"&&U.upgradeIfNeeded(W)})}var X=(_=this.activeProtocol)===null||_===void 0?void 0:_.getTransport();X&&X.onAuthUpdated&&X.onAuthUpdated(M);var q=l.default.fromValues({action:v.AUTH,auth:{accessToken:M.token}});this.send(q);var re=function(){U.off(ie),D(null,M)},ie=function(Y){Y.current==="failed"&&(U.off(re),U.off(ie),D(Y.reason||U.getStateError()))};this.once("connectiondetails",re),this.on("connectionstate",ie);break}case"connecting":u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Aborting current connection attempts in order to start again with the new auth details"),this.disconnectAllTransports();default:{u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Connection state is "+this.state.state+"; waiting until either connected or failed");var ee=function(Y){switch(Y.current){case"connected":U.off(ee),D(null,M);break;case"failed":case"closed":case"suspended":U.off(ee),D(Y.reason||U.getStateError());break}};this.on("connectionstate",ee),this.state.state==="connecting"?this.startConnect():this.requestState({state:"connecting"})}}},G.prototype.disconnectAllTransports=function(M){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.disconnectAllTransports()","Disconnecting all transports"+(M?" except the active transport":"")),this.connectCounter++,d.safeArrForEach(this.pendingTransports,function(D){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disconnecting pending transport: "+D),D&&D.disconnect()}),this.pendingTransports=[],d.safeArrForEach(this.proposedTransports,function(D){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disposing of proposed transport: "+D),D&&D.dispose()}),this.proposedTransports=[],this.activeProtocol&&!M&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disconnecting active transport: "+this.activeProtocol.getTransport()),this.activeProtocol.getTransport().disconnect())},G.prototype.send=function(M,D,U){U=U||k;var _=this.state;if(_.sendEvents){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()","sending event"),this.sendImpl(new m.PendingMessage(M,U));return}var W=D&&_.queueEvents||_.forceQueueEvents;if(!W){var X="rejecting event, queueEvent was "+D+", state was "+_.state;u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()",X),U(this.errorReason||new b.default(X,9e4,400));return}u.default.shouldLog(u.default.LOG_MICRO)&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()","queueing msg; "+l.default.stringify(M)),this.queue(M,U)},G.prototype.sendImpl=function(M){var D=M.message;M.ackRequired&&!M.sendAttempted&&(D.msgSerial=this.msgSerial++);try{this.activeProtocol.send(M)}catch(U){u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.sendImpl()","Unexpected exception in transport.send(): "+U.stack)}},G.prototype.queue=function(M,D){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.queue()","queueing event");var U=this.queuedMessages.last(),_=this.options.maxMessageSize;U&&!U.sendAttempted&&j(U.message,M,_)?(U.merged||(U.callback=S.default.create([U.callback]),U.merged=!0),U.callback.push(D)):this.queuedMessages.push(new m.PendingMessage(M,D))},G.prototype.sendQueuedMessages=function(){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.sendQueuedMessages()","sending "+this.queuedMessages.count()+" queued messages");for(var M;M=this.queuedMessages.shift();)this.sendImpl(M)},G.prototype.queuePendingMessages=function(M){M&&M.length&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.queuePendingMessages()","queueing "+M.length+" pending messages"),this.queuedMessages.prepend(M))},G.prototype.failQueuedMessages=function(M){var D=this.queuedMessages.count();D>0&&(u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.failQueuedMessages()","failing "+D+" queued messages, err = "+d.inspectError(M)),this.queuedMessages.completeAllMessages(M))},G.prototype.onChannelMessage=function(M,D){var U=this.activeProtocol&&D===this.activeProtocol.getTransport(),_=d.arrIn(this.pendingTransports,D)&&this.state==this.states.synchronizing;U||_?this.realtime.channels.onChannelMessage(M):d.arrIndexOf([v.ACK,v.NACK,v.ERROR],M.action)>-1?this.realtime.channels.onChannelMessage(M):u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onChannelMessage()","received message "+JSON.stringify(M)+"on defunct transport; discarding")},G.prototype.ping=function(M,D){var U=this;if(M){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.ping()","transport = "+M);var _=function(){M.off("heartbeat",q),D(new b.default("Timeout waiting for heartbeat response",5e4,500))},W=d.now(),X=d.cheapRandStr(),q=function(le){if(le===X){M.off("heartbeat",q),clearTimeout(re);var se=d.now()-W;D(null,se)}},re=setTimeout(_,this.options.timeouts.realtimeRequestTimeout);M.on("heartbeat",q),M.ping(X);return}if(this.state.state!=="connected"){D(new b.default("Unable to ping service; not connected",4e4,400));return}var ie=!1,ee=function(le,se){U.off("transport.active",Y),ie||(ie=!0,D(le,se))},Y=function(){ie||(ie=!0,R.default.Config.nextTick(function(){U.ping(null,D)}))};this.on("transport.active",Y),this.ping(this.activeProtocol.getTransport(),ee)},G.prototype.abort=function(M){this.activeProtocol.getTransport().fail(M)},G.prototype.registerProposedTransport=function(M){this.proposedTransports.push(M)},G.prototype.getTransportPreference=function(){var M,D;return this.transportPreference||s()&&((D=(M=R.default.WebStorage)===null||M===void 0?void 0:M.get)===null||D===void 0?void 0:D.call(M,L))},G.prototype.persistTransportPreference=function(M){var D,U;d.arrIn(x.default.upgradeTransports,M.shortName)&&(this.transportPreference=M.shortName,s()&&((U=(D=R.default.WebStorage)===null||D===void 0?void 0:D.set)===null||U===void 0||U.call(D,L,M.shortName)))},G.prototype.unpersistTransportPreference=function(){var M,D;this.transportPreference=null,s()&&((D=(M=R.default.WebStorage)===null||M===void 0?void 0:M.remove)===null||D===void 0||D.call(M,L))},G.prototype.actOnErrorFromAuthorize=function(M){if(M.code===40171)this.notifyState({state:"failed",error:M});else if(M.code===40102)this.notifyState({state:"failed",error:M});else if(M.statusCode===c.default.Forbidden){var D="Client configured authentication provider returned 403; failing the connection";u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.actOnErrorFromAuthorize()",D),this.notifyState({state:"failed",error:new b.default(D,80019,403,M)})}else{var D="Client configured authentication provider request failed";u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.actOnErrorFromAuthorize",D),this.notifyState({state:this.state.failState,error:new b.default(D,80019,401,M)})}},G.prototype.onConnectionDetailsUpdate=function(M,D){if(M){this.connectionDetails=M,M.maxMessageSize&&(this.options.maxMessageSize=M.maxMessageSize);var U=M.clientId;if(U){var _=this.realtime.auth._uncheckedSetClientId(U);if(_){u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.onConnectionDetailsUpdate()",_.message),D.fail(_);return}}var W=M.connectionStateTtl;W&&(this.connectionStateTtl=W),this.maxIdleInterval=M.maxIdleInterval,this.emit("connectiondetails",M)}},G.supportedTransports={},G}(y.default);r.default=$}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(7)),l=i.__importDefault(o(2)),d=function(m){i.__extends(x,m);function x(){var R=m.call(this)||this;return R.messages=[],R}return x.prototype.count=function(){return this.messages.length},x.prototype.push=function(R){this.messages.push(R)},x.prototype.shift=function(){return this.messages.shift()},x.prototype.last=function(){return this.messages[this.messages.length-1]},x.prototype.copyAll=function(){return this.messages.slice()},x.prototype.append=function(R){this.messages.push.apply(this.messages,R)},x.prototype.prepend=function(R){this.messages.unshift.apply(this.messages,R)},x.prototype.completeMessages=function(R,y,E){l.default.logAction(l.default.LOG_MICRO,"MessageQueue.completeMessages()","serial = "+R+"; count = "+y),E=E||null;var u=this.messages;if(u.length===0)throw new Error("MessageQueue.completeMessages(): completeMessages called on any empty MessageQueue");var C=u[0];if(C){var P=C.message.msgSerial,b=R+y;if(b>P)for(var p=u.splice(0,b-P),g=0,S=p;g<S.length;g++){var h=S[g];h.callback(E)}u.length==0&&this.emit("idle")}},x.prototype.completeAllMessages=function(R){this.completeMessages(0,Number.MAX_SAFE_INTEGER||Number.MAX_VALUE,R)},x.prototype.resetSendAttempted=function(){for(var R=0,y=this.messages;R<y.length;R++){var E=y[R];E.sendAttempted=!1}},x.prototype.clear=function(){l.default.logAction(l.default.LOG_MICRO,"MessageQueue.clear()","clearing "+this.messages.length+" messages"),this.messages=[],this.emit("idle")},x}(a.default);r.default=d},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function a(l,d,m,x){this.previous=l,this.current=d,m&&(this.retryIn=m),x&&(this.reason=x)}return a}();r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(10)),l=i.__importDefault(o(7)),d=i.__importStar(o(1)),m=i.__importDefault(o(33)),x=i.__importDefault(o(2)),R=i.__importDefault(o(54)),y=i.__importDefault(o(9)),E=i.__importDefault(o(39)),u=i.__importStar(o(4)),C=i.__importDefault(o(16)),P=i.__importDefault(o(21)),b=a.default.Action,p=function(){};function g(f){if(f&&"params"in f&&!d.isObject(f.params))return new u.default("options.params must be an object",4e4,400);if(f&&"modes"in f){if(!d.isArray(f.modes))return new u.default("options.modes must be an array",4e4,400);for(var c=0;c<f.modes.length;c++){var s=f.modes[c];if(!s||typeof s!="string"||!d.arrIn(a.default.channelModes,String.prototype.toUpperCase.call(s)))return new u.default("Invalid channel mode: "+s,4e4,400)}}}var S=function(f){i.__extends(c,f);function c(s,w,v){var k=f.call(this,s,w,v)||this;return k.retryCount=0,k.history=function(L,N){if(x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.history()","channel = "+this.name),N===void 0)if(typeof L=="function")N=L,L=null;else{if(this.rest.options.promises)return d.promisify(this,"history",arguments);N=p}if(L&&L.untilAttach){if(this.state!=="attached"){N(new u.default("option untilAttach requires the channel to be attached",4e4,400));return}if(!this.properties.attachSerial){N(new u.default("untilAttach was specified and channel is attached, but attachSerial is not defined",4e4,400));return}delete L.untilAttach,L.from_serial=this.properties.attachSerial}m.default.prototype._history.call(this,L,N)},k.whenState=function(L,N){return l.default.prototype.whenState.call(k,L,k.state,N)},x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel()","started; name = "+w),k.realtime=s,k.presence=new R.default(k),k.connectionManager=s.connection.connectionManager,k.state="initialized",k.subscriptions=new l.default,k.syncChannelSerial=void 0,k.properties={attachSerial:void 0,channelSerial:void 0},k.setOptions(v),k.errorReason=null,k._requestedFlags=null,k._mode=null,k._attachResume=!1,k._decodingContext={channelOptions:k.channelOptions,plugins:s.options.plugins||{},baseEncodedPreviousPayload:void 0},k._lastPayload={messageId:null,protocolMessageChannelSerial:null,decodeFailureRecoveryInProgress:null},k._allChannelChanges=new l.default,k}return c.prototype.invalidStateError=function(){return new u.default("Channel operation failed as channel state is "+this.state,90001,400,this.errorReason||void 0)},c.processListenerArgs=function(s){return s=Array.prototype.slice.call(s),typeof s[0]=="function"&&s.unshift(null),s[s.length-1]==null&&s.pop(),s},c.prototype.setOptions=function(s,w){var v=this.channelOptions;if(!w&&this.rest.options.promises)return d.promisify(this,"setOptions",arguments);var k=w||function(N){N&&x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel.setOptions()","Set options failed: "+N.toString())},L=g(s);if(L){k(L);return}m.default.prototype.setOptions.call(this,s),this._decodingContext&&(this._decodingContext.channelOptions=this.channelOptions),this._shouldReattachToSetOptions(s,v)?(this.attachImpl(),this._allChannelChanges.once(["attached","update","detached","failed"],function(N){switch(this.event){case"update":case"attached":k==null||k(null);return;default:k==null||k(N.reason);return}})):k()},c.prototype._shouldReattachToSetOptions=function(s,w){if(!(this.state==="attached"||this.state==="attaching"))return!1;if(s!=null&&s.params){var v=h(s.params),k=h(w.params);if(Object.keys(v).length!==Object.keys(k).length||!d.shallowEquals(k,v))return!0}return!!(s!=null&&s.modes&&(!w.modes||!d.arrEquals(s.modes,w.modes)))},c.prototype.publish=function(){for(var s=this,w=[],v=0;v<arguments.length;v++)w[v]=arguments[v];var k=w[0],L=w.length,N=w[L-1];if(typeof N!="function"){if(this.realtime.options.promises)return d.promisify(this,"publish",arguments);N=p,++L}if(!this.connectionManager.activeState()){N(this.connectionManager.getError());return}if(L==2)if(d.isObject(k))k=[y.default.fromValues(k)];else if(d.isArray(k))k=y.default.fromValuesArray(k);else throw new u.default("The single-argument form of publish() expects a message object or an array of message objects",40013,400);else k=[y.default.fromValues({name:w[0],data:w[1]})];var I=this.realtime.options.maxMessageSize;y.default.encodeArray(k,this.channelOptions,function(O){if(O){N(O);return}var A=y.default.getMessagesSize(k);if(A>I){N(new u.default("Maximum size of messages that can be published at once exceeded ( was "+A+" bytes; limit is "+I+" bytes)",40009,400));return}s.__publish(k,N)})},c.prototype.__publish=function(s,w){x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.publish()","message count = "+s.length);var v=this.state;switch(v){case"failed":case"suspended":w(u.default.fromValues(this.invalidStateError()));break;default:{x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.publish()","sending message; channel state is "+v);var k=new a.default;k.action=b.MESSAGE,k.channel=this.name,k.messages=s,this.sendMessage(k,w);break}}},c.prototype.onEvent=function(s){x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.onEvent()","received message");for(var w=this.subscriptions,v=0;v<s.length;v++){var k=s[v];w.emit(k.name,k)}},c.prototype.attach=function(s,w){var v;if(typeof s=="function"?(w=s,v=null):v=s,!w){if(this.realtime.options.promises)return d.promisify(this,"attach",arguments);w=function(k){k&&x.default.logAction(x.default.LOG_MAJOR,"RealtimeChannel.attach()","Channel attach failed: "+k.toString())}}if(v)x.default.deprecated("The ability to pass an array of channel mode flags as the first argument of `RealtimeChannel.attach()`","To set channel mode flags, populate the `modes` property of the channel options object that you pass to `Channels.get()` or `RealtimeChannel.setOptions()`."),this._requestedFlags=v;else if(this.state==="attached"){w(null,null);return}this._attach(!1,null,w)},c.prototype._attach=function(s,w,v){v||(v=function(L){L&&x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel._attach()","Channel attach failed: "+L.toString())});var k=this.connectionManager;if(!k.activeState()){v(k.getError());return}(this.state!=="attaching"||s)&&this.requestState("attaching",w),this.once(function(L){switch(this.event){case"attached":v==null||v(null,L);break;case"detached":case"suspended":case"failed":v==null||v(L.reason||k.getError()||new u.default("Unable to attach; reason unknown; state = "+this.event,9e4,500));break;case"detaching":v==null||v(new u.default("Attach request superseded by a subsequent detach request",9e4,409));break}})},c.prototype.attachImpl=function(){x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.attachImpl()","sending ATTACH message");var s=a.default.fromValues({action:b.ATTACH,channel:this.name,params:this.channelOptions.params,channelSerial:this.properties.channelSerial});this._requestedFlags?s.encodeModesToFlags(this._requestedFlags):this.channelOptions.modes&&s.encodeModesToFlags(d.allToUpperCase(this.channelOptions.modes)),this._attachResume&&s.setFlag("ATTACH_RESUME"),this._lastPayload.decodeFailureRecoveryInProgress&&(s.channelSerial=this._lastPayload.protocolMessageChannelSerial),this.sendMessage(s,p)},c.prototype.detach=function(s){if(!s){if(this.realtime.options.promises)return d.promisify(this,"detach",arguments);s=p}var w=this.connectionManager;if(!w.activeState()){s(w.getError());return}switch(this.state){case"suspended":this.notifyState("detached"),s();break;case"detached":s();break;case"failed":s(new u.default("Unable to detach; channel state = failed",90001,400));break;default:this.requestState("detaching");case"detaching":this.once(function(v){switch(this.event){case"detached":s();break;case"attached":case"suspended":case"failed":s(v.reason||w.getError()||new u.default("Unable to detach; reason unknown; state = "+this.event,9e4,500));break;case"attaching":s(new u.default("Detach request superseded by a subsequent attach request",9e4,409));break}})}},c.prototype.detachImpl=function(s){x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.detach()","sending DETACH message");var w=a.default.fromValues({action:b.DETACH,channel:this.name});this.sendMessage(w,s||p)},c.prototype.subscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=c.processListenerArgs(s),k=v[0],L=v[1],N=v[2];if(!N&&this.realtime.options.promises)return d.promisify(this,"subscribe",[k,L]);if(this.state==="failed"){N==null||N(u.default.fromValues(this.invalidStateError()));return}return k&&typeof k=="object"&&!Array.isArray(k)?this._subscribeFilter(k,L):this.subscriptions.on(k,L),this.attach(N||p)},c.prototype._subscribeFilter=function(s,w){var v=function(k){var L,N,I,O,A,T,j={name:k.name,refTimeserial:(N=(L=k.extras)===null||L===void 0?void 0:L.ref)===null||N===void 0?void 0:N.timeserial,refType:(O=(I=k.extras)===null||I===void 0?void 0:I.ref)===null||O===void 0?void 0:O.type,isRef:!!(!((T=(A=k.extras)===null||A===void 0?void 0:A.ref)===null||T===void 0)&&T.timeserial),clientId:k.clientId};Object.entries(s).find(function(B){var z=B[0],$=B[1];return $!==void 0?j[z]!==$:!1})||w(k)};this._addFilteredSubscription(s,w,v),this.subscriptions.on(v)},c.prototype._addFilteredSubscription=function(s,w,v){var k;if(this.filteredSubscriptions||(this.filteredSubscriptions=new Map),this.filteredSubscriptions.has(w)){var L=this.filteredSubscriptions.get(w);L.set(s,((k=L==null?void 0:L.get(s))===null||k===void 0?void 0:k.concat(v))||[v])}else this.filteredSubscriptions.set(w,new Map([[s,[v]]]))},c.prototype._getAndDeleteFilteredSubscriptions=function(s,w){var v=this;if(!this.filteredSubscriptions)return[];if(!w&&s)return Array.from(this.filteredSubscriptions.entries()).map(function(I){var O,A=I[0],T=I[1],j=T.get(s);return T.delete(s),T.size===0&&((O=v.filteredSubscriptions)===null||O===void 0||O.delete(A)),j}).reduce(function(I,O){var A;return O?(A=I).concat.apply(A,O):I},[]);if(!w||!this.filteredSubscriptions.has(w))return[];var k=this.filteredSubscriptions.get(w);if(!s){var L=Array.from(k.values()).reduce(function(I,O){return I.concat.apply(I,O)},[]);return this.filteredSubscriptions.delete(w),L}var N=k.get(s);return k.delete(s),N||[]},c.prototype.unsubscribe=function(){for(var s=this,w,v=[],k=0;k<arguments.length;k++)v[k]=arguments[k];var L=c.processListenerArgs(v),N=L[0],I=L[1];if(typeof N=="object"&&!I||!((w=this.filteredSubscriptions)===null||w===void 0)&&w.has(I)){this._getAndDeleteFilteredSubscriptions(N,I).forEach(function(O){return s.subscriptions.off(O)});return}this.subscriptions.off(N,I)},c.prototype.sync=function(){switch(this.state){case"initialized":case"detaching":case"detached":throw new u.PartialErrorInfo("Unable to sync to channel; not attached",4e4)}var s=this.connectionManager;if(!s.activeState())throw s.getError();var w=a.default.fromValues({action:b.SYNC,channel:this.name});this.syncChannelSerial&&(w.channelSerial=this.syncChannelSerial),s.send(w)},c.prototype.sendMessage=function(s,w){this.connectionManager.send(s,this.realtime.options.queueMessages,w)},c.prototype.sendPresence=function(s,w){var v=a.default.fromValues({action:b.PRESENCE,channel:this.name,presence:d.isArray(s)?C.default.fromValuesArray(s):[C.default.fromValues(s)]});this.sendMessage(v,w)},c.prototype.onMessage=function(s){(s.action===b.ATTACHED||s.action===b.MESSAGE||s.action===b.PRESENCE)&&this.setChannelSerial(s.channelSerial);var w,v=!1;switch(s.action){case b.ATTACHED:{this.properties.attachSerial=s.channelSerial,this._mode=s.getMode(),this.params=s.params||{};var k=s.decodeModesFromFlags();this.modes=k&&d.allToLowerCase(k)||void 0;var L=s.hasFlag("RESUMED"),N=s.hasFlag("HAS_PRESENCE"),I=s.hasFlag("HAS_BACKLOG");if(this.state==="attached"){L||this.presence.onAttached(N);var O=new E.default(this.state,this.state,L,I,s.error);this._allChannelChanges.emit("update",O),(!L||this.channelOptions.updateOnAttached)&&this.emit("update",O)}else this.state==="detaching"?this.checkPendingState():this.notifyState("attached",s.error,L,N,I);break}case b.DETACHED:{var A=s.error?u.default.fromValues(s.error):new u.default("Channel detached",90001,404);this.state==="detaching"?this.notifyState("detached",A):this.state==="attaching"?this.notifyState("suspended",A):this.requestState("attaching",A);break}case b.SYNC:if(v=!0,w=this.syncChannelSerial=s.channelSerial,!s.presence)break;case b.PRESENCE:{for(var T=s.presence,j=s.id,B=s.connectionId,z=s.timestamp,$=this.channelOptions,V=void 0,G=0;G<T.length;G++)try{V=T[G],C.default.decode(V,$),V.connectionId||(V.connectionId=B),V.timestamp||(V.timestamp=z),V.id||(V.id=j+":"+G)}catch(X){x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel.onMessage()",X.toString())}this.presence.setPresence(T,v,w);break}case b.MESSAGE:{if(this.state!=="attached"){x.default.logAction(x.default.LOG_MAJOR,"RealtimeChannel.onMessage()",'Message "'+s.id+'" skipped as this channel "'+this.name+'" state is not "attached" (state is "'+this.state+'").');return}var M=s.messages,D=M[0],U=M[M.length-1],j=s.id,B=s.connectionId,z=s.timestamp;if(D.extras&&D.extras.delta&&D.extras.delta.from!==this._lastPayload.messageId){var _='Delta message decode failure - previous message not available for message "'+s.id+'" on this channel "'+this.name+'".';x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel.onMessage()",_),this._startDecodeFailureRecovery(new u.default(_,40018,400));break}for(var G=0;G<M.length;G++){var _=M[G];try{y.default.decode(_,this._decodingContext)}catch(Y){switch(x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel.onMessage()",Y.toString()),Y.code){case 40018:this._startDecodeFailureRecovery(Y);return;case 40019:case 40021:this.notifyState("failed",Y);return}}_.connectionId||(_.connectionId=B),_.timestamp||(_.timestamp=z),_.id||(_.id=j+":"+G)}this._lastPayload.messageId=U.id,this._lastPayload.protocolMessageChannelSerial=s.channelSerial,this.onEvent(M);break}case b.ERROR:{var W=s.error;W&&W.code==80016?this.checkPendingState():this.notifyState("failed",u.default.fromValues(W));break}default:x.default.logAction(x.default.LOG_ERROR,"RealtimeChannel.onMessage()","Fatal protocol error: unrecognised action ("+s.action+")"),this.connectionManager.abort(P.default.unknownChannelErr())}},c.prototype._startDecodeFailureRecovery=function(s){var w=this;this._lastPayload.decodeFailureRecoveryInProgress||(x.default.logAction(x.default.LOG_MAJOR,"RealtimeChannel.onMessage()","Starting decode failure recovery process."),this._lastPayload.decodeFailureRecoveryInProgress=!0,this._attach(!0,s,function(){w._lastPayload.decodeFailureRecoveryInProgress=!1}))},c.prototype.onAttached=function(){x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel.onAttached","activating channel; name = "+this.name)},c.prototype.notifyState=function(s,w,v,k,L){if(x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.notifyState","name = "+this.name+", current state = "+this.state+", notifying state "+s),this.clearStateTimer(),d.arrIn(["detached","suspended","failed"],s)&&(this.properties.channelSerial=null),s!==this.state){this.presence.actOnChannelState(s,k,w),s==="suspended"&&this.connectionManager.state.sendEvents?this.startRetryTimer():this.cancelRetryTimer(),w&&(this.errorReason=w);var N=new E.default(this.state,s,v,L,w),I=s==="failed"?x.default.LOG_ERROR:x.default.LOG_MAJOR;x.default.logAction(I,'Channel state for channel "'+this.name+'"',s+(w?"; reason: "+w:"")),s!=="attaching"&&s!=="suspended"&&(this.retryCount=0),s==="attached"&&this.onAttached(),s==="attached"?this._attachResume=!0:(s==="detaching"||s==="failed")&&(this._attachResume=!1),this.state=s,this._allChannelChanges.emit(s,N),this.emit(s,N)}},c.prototype.requestState=function(s,w){x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel.requestState","name = "+this.name+", state = "+s),this.notifyState(s,w),this.checkPendingState()},c.prototype.checkPendingState=function(){var s=this.connectionManager.state;if(!(s.sendEvents||s.forceQueueEvents)){x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel.checkPendingState","sendEvents is false; state is "+this.connectionManager.state.state);return}switch(x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel.checkPendingState","name = "+this.name+", state = "+this.state),this.state){case"attaching":this.startStateTimerIfNotRunning(),this.attachImpl();break;case"detaching":this.startStateTimerIfNotRunning(),this.detachImpl();break;case"attached":this.sync();break}},c.prototype.timeoutPendingState=function(){switch(this.state){case"attaching":{var s=new u.default("Channel attach timed out",90007,408);this.notifyState("suspended",s);break}case"detaching":{var s=new u.default("Channel detach timed out",90007,408);this.notifyState("attached",s);break}default:this.checkPendingState();break}},c.prototype.startStateTimerIfNotRunning=function(){var s=this;this.stateTimer||(this.stateTimer=setTimeout(function(){x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel.startStateTimerIfNotRunning","timer expired"),s.stateTimer=null,s.timeoutPendingState()},this.realtime.options.timeouts.realtimeRequestTimeout))},c.prototype.clearStateTimer=function(){var s=this.stateTimer;s&&(clearTimeout(s),this.stateTimer=null)},c.prototype.startRetryTimer=function(){var s=this;if(!this.retryTimer){this.retryCount++;var w=d.getRetryTime(this.realtime.options.timeouts.channelRetryTimeout,this.retryCount);this.retryTimer=setTimeout(function(){s.state==="suspended"&&s.connectionManager.state.sendEvents&&(s.retryTimer=null,x.default.logAction(x.default.LOG_MINOR,"RealtimeChannel retry timer expired","attempting a new attach"),s.requestState("attaching"))},w)}},c.prototype.cancelRetryTimer=function(){this.retryTimer&&(clearTimeout(this.retryTimer),this.retryTimer=null)},c.prototype.getReleaseErr=function(){var s=this.state;return s==="initialized"||s==="detached"||s==="failed"?null:new u.default("Can only release a channel in a state where there is no possibility of further updates from the server being received (initialized, detached, or failed); was "+s,90001,400)},c.prototype.setChannelSerial=function(s){x.default.logAction(x.default.LOG_MICRO,"RealtimeChannel.setChannelSerial()","Updating channel serial; serial = "+s+"; previous = "+this.properties.channelSerial),s&&(this.properties.channelSerial=s)},c}(m.default);function h(f){var c=f||{};c.agent;var s=i.__rest(c,["agent"]);return s}r.default=S},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function a(l,d,m,x,R){this.previous=l,this.current=d,d==="attached"&&(this.resumed=m,this.hasBacklog=x),R&&(this.reason=R)}return a}();r.default=i},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){var a=i,l=a.lib,d=l.WordArray,m=l.Hasher,x=a.algo,R=[],y=x.SHA1=m.extend({_doReset:function(){this._hash=new d.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(E,u){for(var C=this._hash.words,P=C[0],b=C[1],p=C[2],g=C[3],S=C[4],h=0;h<80;h++){if(h<16)R[h]=E[u+h]|0;else{var f=R[h-3]^R[h-8]^R[h-14]^R[h-16];R[h]=f<<1|f>>>31}var c=(P<<5|P>>>27)+S+R[h];h<20?c+=(b&p|~b&g)+1518500249:h<40?c+=(b^p^g)+1859775393:h<60?c+=(b&p|b&g|p&g)-1894007588:c+=(b^p^g)-899497514,S=g,g=p,p=b<<30|b>>>2,b=P,P=c}C[0]=C[0]+P|0,C[1]=C[1]+b|0,C[2]=C[2]+p|0,C[3]=C[3]+g|0,C[4]=C[4]+S|0},_doFinalize:function(){var E=this._data,u=E.words,C=this._nDataBytes*8,P=E.sigBytes*8;return u[P>>>5]|=128<<24-P%32,u[(P+64>>>9<<4)+14]=Math.floor(C/4294967296),u[(P+64>>>9<<4)+15]=C,E.sigBytes=u.length*4,this._process(),this._hash},clone:function(){var E=m.clone.call(this);return E._hash=this._hash.clone(),E}});a.SHA1=m._createHelper(y),a.HmacSHA1=m._createHmacHelper(y)}(),i.SHA1})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});function i(h){if(h===void 0)return"undefined";var f,c;if(h instanceof ArrayBuffer?(c="ArrayBuffer",f=new DataView(h)):h instanceof DataView&&(c="DataView",f=h),!f)return JSON.stringify(h);for(var s=[],w=0;w<h.byteLength;w++){if(w>20){s.push("...");break}var v=f.getUint8(w).toString(16);v.length===1&&(v="0"+v),s.push(v)}return"<"+c+" "+s.join(" ")+">"}function a(h,f,c){for(var s=0,w=c.length;s<w;s++){var v=c.charCodeAt(s);if(v<128){h.setUint8(f++,v>>>0&127|0);continue}if(v<2048){h.setUint8(f++,v>>>6&31|192),h.setUint8(f++,v>>>0&63|128);continue}if(v<65536){h.setUint8(f++,v>>>12&15|224),h.setUint8(f++,v>>>6&63|128),h.setUint8(f++,v>>>0&63|128);continue}if(v<1114112){h.setUint8(f++,v>>>18&7|240),h.setUint8(f++,v>>>12&63|128),h.setUint8(f++,v>>>6&63|128),h.setUint8(f++,v>>>0&63|128);continue}throw new Error("bad codepoint "+v)}}function l(h,f,c){for(var s="",w=f,v=f+c;w<v;w++){var k=h.getUint8(w);if(!(k&128)){s+=String.fromCharCode(k);continue}if((k&224)===192){s+=String.fromCharCode((k&15)<<6|h.getUint8(++w)&63);continue}if((k&240)===224){s+=String.fromCharCode((k&15)<<12|(h.getUint8(++w)&63)<<6|(h.getUint8(++w)&63)<<0);continue}if((k&248)===240){s+=String.fromCharCode((k&7)<<18|(h.getUint8(++w)&63)<<12|(h.getUint8(++w)&63)<<6|(h.getUint8(++w)&63)<<0);continue}throw new Error("Invalid byte "+k.toString(16))}return s}function d(h){for(var f=0,c=0,s=h.length;c<s;c++){var w=h.charCodeAt(c);if(w<128){f+=1;continue}if(w<2048){f+=2;continue}if(w<65536){f+=3;continue}if(w<1114112){f+=4;continue}throw new Error("bad codepoint "+w)}return f}function m(h,f){var c=S(h,f);if(c!==0){var s=new ArrayBuffer(c),w=new DataView(s);return g(h,w,0,f),s}}var x=65536*65536,R=1/x;function y(h,f){return f=f||0,h.getInt32(f)*x+h.getUint32(f+4)}function E(h,f){return f=f||0,h.getUint32(f)*x+h.getUint32(f+4)}function u(h,f,c){c<9223372036854776e3?(h.setInt32(f,Math.floor(c*R)),h.setInt32(f+4,c&-1)):(h.setUint32(f,2147483647),h.setUint32(f+4,2147483647))}function C(h,f,c){c<18446744073709552e3?(h.setUint32(f,Math.floor(c*R)),h.setInt32(f+4,c&-1)):(h.setUint32(f,4294967295),h.setUint32(f+4,4294967295))}var P=function(){function h(f,c){var s=this;this.map=function(w){for(var v={},k=0;k<w;k++){var L=s.parse();v[L]=s.parse()}return v},this.bin=function(w){var v=new ArrayBuffer(w);return new Uint8Array(v).set(new Uint8Array(s.view.buffer,s.offset,w),0),s.offset+=w,v},this.buf=this.bin,this.str=function(w){var v=l(s.view,s.offset,w);return s.offset+=w,v},this.array=function(w){for(var v=new Array(w),k=0;k<w;k++)v[k]=s.parse();return v},this.ext=function(w){return s.offset+=w,{type:s.view.getInt8(s.offset),data:s.buf(w)}},this.parse=function(){var w=s.view.getUint8(s.offset),v,k;if(!(w&128))return s.offset++,w;if((w&240)===128)return k=w&15,s.offset++,s.map(k);if((w&240)===144)return k=w&15,s.offset++,s.array(k);if((w&224)===160)return k=w&31,s.offset++,s.str(k);if((w&224)===224)return v=s.view.getInt8(s.offset),s.offset++,v;switch(w){case 192:return s.offset++,null;case 193:s.offset++;return;case 194:return s.offset++,!1;case 195:return s.offset++,!0;case 196:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.bin(k);case 197:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.bin(k);case 198:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.bin(k);case 199:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.ext(k);case 200:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.ext(k);case 201:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.ext(k);case 202:return v=s.view.getFloat32(s.offset+1),s.offset+=5,v;case 203:return v=s.view.getFloat64(s.offset+1),s.offset+=9,v;case 204:return v=s.view.getUint8(s.offset+1),s.offset+=2,v;case 205:return v=s.view.getUint16(s.offset+1),s.offset+=3,v;case 206:return v=s.view.getUint32(s.offset+1),s.offset+=5,v;case 207:return v=E(s.view,s.offset+1),s.offset+=9,v;case 208:return v=s.view.getInt8(s.offset+1),s.offset+=2,v;case 209:return v=s.view.getInt16(s.offset+1),s.offset+=3,v;case 210:return v=s.view.getInt32(s.offset+1),s.offset+=5,v;case 211:return v=y(s.view,s.offset+1),s.offset+=9,v;case 212:return k=1,s.offset++,s.ext(k);case 213:return k=2,s.offset++,s.ext(k);case 214:return k=4,s.offset++,s.ext(k);case 215:return k=8,s.offset++,s.ext(k);case 216:return k=16,s.offset++,s.ext(k);case 217:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.str(k);case 218:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.str(k);case 219:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.str(k);case 220:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.array(k);case 221:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.array(k);case 222:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.map(k);case 223:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.map(k)}throw new Error("Unknown type 0x"+w.toString(16))},this.offset=c||0,this.view=f}return h}();function b(h){var f=new DataView(h),c=new P(f),s=c.parse();if(c.offset!==h.byteLength)throw new Error(h.byteLength-c.offset+" trailing bytes");return s}function p(h,f){return Object.keys(h).filter(function(c){var s=h[c],w=typeof s;return(!f||s!=null)&&(w!=="function"||!!s.toJSON)})}function g(h,f,c,s){var w=typeof h;if(typeof h=="string"){var v=d(h);if(v<32)return f.setUint8(c,v|160),a(f,c+1,h),1+v;if(v<256)return f.setUint8(c,217),f.setUint8(c+1,v),a(f,c+2,h),2+v;if(v<65536)return f.setUint8(c,218),f.setUint16(c+1,v),a(f,c+3,h),3+v;if(v<4294967296)return f.setUint8(c,219),f.setUint32(c+1,v),a(f,c+5,h),5+v}if(ArrayBuffer.isView&&ArrayBuffer.isView(h)&&(h=h.buffer),h instanceof ArrayBuffer){var k=h.byteLength;if(k<256)return f.setUint8(c,196),f.setUint8(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+2),2+k;if(k<65536)return f.setUint8(c,197),f.setUint16(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+3),3+k;if(k<4294967296)return f.setUint8(c,198),f.setUint32(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+5),5+k}if(typeof h=="number"){if(Math.floor(h)!==h)return f.setUint8(c,203),f.setFloat64(c+1,h),9;if(h>=0){if(h<128)return f.setUint8(c,h),1;if(h<256)return f.setUint8(c,204),f.setUint8(c+1,h),2;if(h<65536)return f.setUint8(c,205),f.setUint16(c+1,h),3;if(h<4294967296)return f.setUint8(c,206),f.setUint32(c+1,h),5;if(h<18446744073709552e3)return f.setUint8(c,207),C(f,c+1,h),9;throw new Error("Number too big 0x"+h.toString(16))}if(h>=-32)return f.setInt8(c,h),1;if(h>=-128)return f.setUint8(c,208),f.setInt8(c+1,h),2;if(h>=-32768)return f.setUint8(c,209),f.setInt16(c+1,h),3;if(h>=-2147483648)return f.setUint8(c,210),f.setInt32(c+1,h),5;if(h>=-9223372036854776e3)return f.setUint8(c,211),u(f,c+1,h),9;throw new Error("Number too small -0x"+(-h).toString(16).substr(1))}if(w==="undefined")return s?0:(f.setUint8(c,212),f.setUint8(c+1,0),f.setUint8(c+2,0),3);if(h===null)return s?0:(f.setUint8(c,192),1);if(w==="boolean")return f.setUint8(c,h?195:194),1;if(typeof h.toJSON=="function")return g(h.toJSON(),f,c,s);if(w==="object"){var L,N=0,I=void 0,O=Array.isArray(h);if(O?L=h.length:(I=p(h,s),L=I.length),L<16?(f.setUint8(c,L|(O?144:128)),N=1):L<65536?(f.setUint8(c,O?220:222),f.setUint16(c+1,L),N=3):L<4294967296&&(f.setUint8(c,O?221:223),f.setUint32(c+1,L),N=5),O)for(var A=0;A<L;A++)N+=g(h[A],f,c+N,s);else if(I)for(var A=0;A<L;A++){var T=I[A];N+=g(T,f,c+N),N+=g(h[T],f,c+N,s)}return N}if(w==="function")return 0;throw new Error("Unknown type "+w)}function S(h,f){var c=typeof h;if(c==="string"){var s=d(h);if(s<32)return 1+s;if(s<256)return 2+s;if(s<65536)return 3+s;if(s<4294967296)return 5+s}if(ArrayBuffer.isView&&ArrayBuffer.isView(h)&&(h=h.buffer),h instanceof ArrayBuffer){var w=h.byteLength;if(w<256)return 2+w;if(w<65536)return 3+w;if(w<4294967296)return 5+w}if(typeof h=="number"){if(Math.floor(h)!==h)return 9;if(h>=0){if(h<128)return 1;if(h<256)return 2;if(h<65536)return 3;if(h<4294967296)return 5;if(h<18446744073709552e3)return 9;throw new Error("Number too big 0x"+h.toString(16))}if(h>=-32)return 1;if(h>=-128)return 2;if(h>=-32768)return 3;if(h>=-2147483648)return 5;if(h>=-9223372036854776e3)return 9;throw new Error("Number too small -0x"+h.toString(16).substr(1))}if(c==="boolean")return 1;if(h===null)return f?0:1;if(h===void 0)return f?0:3;if(typeof h.toJSON=="function")return S(h.toJSON(),f);if(c==="object"){var v,k=0;if(Array.isArray(h)){v=h.length;for(var L=0;L<v;L++)k+=S(h[L],f)}else{var N=p(h,f);v=N.length;for(var L=0;L<v;L++){var I=N[L];k+=S(I)+S(h[I],f)}}if(v<16)return 1+k;if(v<65536)return 3+k;if(v<4294967296)return 5+k;throw new Error("Array or object too long 0x"+v.toString(16))}if(c==="function")return 0;throw new Error("Unknown type "+c)}r.default={encode:m,decode:b,inspect:i,utf8Write:a,utf8Read:l,utf8ByteCount:d}},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(30)),l=i.__importDefault(o(50)),d=i.__importDefault(o(3)),m=i.__importDefault(o(4)),x=i.__importDefault(o(55)),R=i.__importDefault(o(57)),y=i.__importDefault(o(62)),E=i.__importDefault(o(64)),u=i.__importDefault(o(68)),C=i.__importDefault(o(2)),P=o(8),b=i.__importDefault(o(65)),p=i.__importDefault(o(66)),g=i.__importDefault(o(41)),S=(0,R.default)(E.default,x.default);d.default.Crypto=S,d.default.BufferUtils=x.default,d.default.Http=y.default,d.default.Config=E.default,d.default.Transports=u.default,d.default.WebStorage=b.default,a.default.Crypto=S,l.default.Crypto=S,C.default.initLogHandlers(),d.default.Defaults=(0,P.getDefaults)(p.default),d.default.Config.agent&&(d.default.Defaults.agent+=" "+d.default.Config.agent),d.default.Config.noUpgrade&&(d.default.Defaults.upgradeTransports=[]),r.default={ErrorInfo:m.default,Rest:a.default,Realtime:l.default,msgpack:g.default}},function(n){n.exports=JSON.parse('{"name":"ably","description":"Realtime client library for Ably, the realtime messaging service","version":"1.2.50","license":"Apache-2.0","bugs":{"url":"https://github.com/ably/ably-js/issues","email":"support@ably.com"},"main":"./build/ably-node.js","typings":"./ably.d.ts","react-native":{"./build/ably-node.js":"./build/ably-reactnative.js"},"browser":{"./build/ably-node.js":"./build/ably-commonjs.js"},"files":["build/**","ably.d.ts","callbacks.d.ts","callbacks.js","promises.d.ts","promises.js","resources/**","src/**","react/**"],"dependencies":{"@ably/msgpack-js":"^0.4.0","got":"^11.8.5","ws":"^8.14.2"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"devDependencies":{"@ably/vcdiff-decoder":"1.0.4","@arethetypeswrong/cli":"^0.13.1","@babel/preset-env":"^7.23.6","@testing-library/react":"^13.3.0","@types/crypto-js":"^4.0.1","@types/jmespath":"^0.15.2","@types/node":"^15.0.0","@types/request":"^2.48.7","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.14.0","@typescript-eslint/parser":"^5.14.0","@vitejs/plugin-react":"^1.3.2","async":"ably-forks/async#requirejs","aws-sdk":"^2.1413.0","babel-loader":"^8.3.0","chai":"^4.2.0","copy-webpack-plugin":"^6.4.1","cors":"^2.8.5","crypto-js":"ably-forks/crypto-js#crypto-lite","eslint":"^7.13.0","eslint-plugin-import":"^2.28.0","eslint-plugin-jsdoc":"^40.0.0","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-security":"^1.4.0","express":"^4.17.1","glob":"~4.4","google-closure-compiler":"^20180610.0.1","grunt":"^1.6.1","grunt-bump":"^0.3.1","grunt-cli":"~1.2.0","grunt-closure-tools":"^1.0.0","grunt-contrib-concat":"~0.5","grunt-shell":"~1.1","grunt-webpack":"^4.0.2","hexy":"~0.2","jmespath":"^0.16.0","jsdom":"^20.0.0","kexec":"ably-forks/node-kexec#update-for-node-12","minimist":"^1.2.5","mocha":"^8.1.3","mocha-junit-reporter":"^2.2.1","null-loader":"^4.0.1","playwright":"^1.39.0","prettier":"^2.5.1","react":">=18.1.0","react-dom":">=18.1.0","requirejs":"~2.1","shelljs":"~0.8","source-map-explorer":"^2.5.2","ts-loader":"^8.2.0","tsconfig-paths-webpack-plugin":"^4.0.1","tslib":"^2.3.1","typedoc":"^0.23.8","typescript":"^4.6.4","vite":"^4.4.9","vitest":"^0.18.0","webpack":"^4.44.2","webpack-cli":"^4.2.0","webpack-node-externals":"^3.0.0"},"engines":{"node":">=5.10.x"},"repository":"ably/ably-js","jspm":{"registry":"npm","directories":{"lib":"build"},"main":"ably"},"scripts":{"start:react":"npx vite serve","grunt":"grunt","test":"grunt test","test:node":"grunt test:node","test:node:skip-build":"grunt mocha","test:webserver":"grunt test:webserver","test:playwright":"node test/support/runPlaywrightTests.js","test:react":"vitest run","concat":"grunt concat","build":"grunt build:all && npm run build:react","build:node":"grunt build:node","build:browser":"grunt build:browser","build:react":"npm run build:react:mjs && npm run build:react:cjs && cp src/platform/react-hooks/res/package.react.json react/package.json","build:react:mjs":"tsc --project src/platform/react-hooks/tsconfig.mjs.json && cp src/platform/react-hooks/res/package.mjs.json react/mjs/package.json","build:react:cjs":"tsc --project src/platform/react-hooks/tsconfig.cjs.json && cp src/platform/react-hooks/res/package.cjs.json react/cjs/package.json","requirejs":"grunt requirejs","lint":"eslint .","lint:fix":"eslint --fix .","check-closure-compiler":"grunt check-closure-compiler","prepare":"npm run build","format":"prettier --write --ignore-path .gitignore --ignore-path .prettierignore src test ably.d.ts webpack.config.js Gruntfile.js scripts/cdn_deploy.js docs/chrome-mv3.md","format:check":"prettier --check --ignore-path .gitignore --ignore-path .prettierignore src test ably.d.ts webpack.config.js Gruntfile.js scripts/cdn_deploy.js","sourcemap":"source-map-explorer build/ably.min.js","sourcemap:noencryption":"source-map-explorer build/ably.noencryption.min.js","docs":"typedoc --entryPoints ably.d.ts --out docs/generated/default --readme docs/landing-pages/default.md && typedoc --entryPoints promises.d.ts --out docs/generated/promises --name \\"ably (Promise-based)\\" --readme docs/landing-pages/promises.md && cp docs/landing-pages/choose-library.html docs/generated/index.html"}}')},function(n,r){},function(n,r,o){(function(i,a){n.exports=a(o(6),o(32),o(25))})(this,function(i){return i.HmacSHA256})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(47)),d=i.__importDefault(o(15)),m=i.__importDefault(o(20)),x=i.__importDefault(o(4)),R=i.__importDefault(o(48)),y=function(){},E=function(){function b(p){this.rest=p,this.admin=new u(p)}return b}(),u=function(){function b(p){this.rest=p,this.deviceRegistrations=new C(p),this.channelSubscriptions=new P(p)}return b.prototype.publish=function(p,g,S){var h=this.rest,f=h.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(h.options,f),s={},w=a.mixin({recipient:p},g);if(typeof S!="function"){if(this.rest.options.promises)return a.promisify(this,"publish",arguments);S=y}h.options.headers&&a.mixin(c,h.options.headers),h.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var v=a.encodeBody(w,f);d.default.post(h,"/push/publish",v,c,s,null,function(k){return S(k)})},b}(),C=function(){function b(p){this.rest=p}return b.prototype.save=function(p,g){var S=this.rest,h=l.default.fromValues(p),f=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(S.options,f),s={};if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"save",arguments);g=y}S.options.headers&&a.mixin(c,S.options.headers),S.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var w=a.encodeBody(h,f);d.default.put(S,"/push/deviceRegistrations/"+encodeURIComponent(p.id),w,c,s,null,function(v,k,L,N){g(v,v?void 0:l.default.fromResponseBody(k,N?void 0:f))})},b.prototype.get=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(S.options,h),c=p.id||p;if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"get",arguments);g=y}if(typeof c!="string"||!c.length){g(new x.default("First argument to DeviceRegistrations#get must be a deviceId string or DeviceDetails",4e4,400));return}S.options.headers&&a.mixin(f,S.options.headers),d.default.get(S,"/push/deviceRegistrations/"+encodeURIComponent(c),f,{},null,function(s,w,v,k){g(s,s?void 0:l.default.fromResponseBody(w,k?void 0:h))})},b.prototype.list=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(S.options,h);if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"list",arguments);g=y}S.options.headers&&a.mixin(c,S.options.headers),new m.default(S,"/push/deviceRegistrations",c,f,function(s,w,v){return l.default.fromResponseBody(s,v?void 0:h)}).get(p,g)},b.prototype.remove=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(S.options,h),c={},s=p.id||p;if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"remove",arguments);g=y}if(typeof s!="string"||!s.length){g(new x.default("First argument to DeviceRegistrations#remove must be a deviceId string or DeviceDetails",4e4,400));return}S.options.headers&&a.mixin(f,S.options.headers),S.options.pushFullWait&&a.mixin(c,{fullWait:"true"}),d.default.delete(S,"/push/deviceRegistrations/"+encodeURIComponent(s),f,c,null,function(w){return g(w)})},b.prototype.removeWhere=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(S.options,h);if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"removeWhere",arguments);g=y}S.options.headers&&a.mixin(f,S.options.headers),S.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),d.default.delete(S,"/push/deviceRegistrations",f,p,null,function(c){return g(c)})},b}(),P=function(){function b(p){this.remove=b.prototype.removeWhere,this.rest=p}return b.prototype.save=function(p,g){var S=this.rest,h=R.default.fromValues(p),f=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(S.options,f),s={};if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"save",arguments);g=y}S.options.headers&&a.mixin(c,S.options.headers),S.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var w=a.encodeBody(h,f);d.default.post(S,"/push/channelSubscriptions",w,c,s,null,function(v,k,L,N){g(v,!v&&R.default.fromResponseBody(k,N?void 0:f))})},b.prototype.list=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(S.options,h);if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"list",arguments);g=y}S.options.headers&&a.mixin(c,S.options.headers),new m.default(S,"/push/channelSubscriptions",c,f,function(s,w,v){return R.default.fromResponseBody(s,v?void 0:h)}).get(p,g)},b.prototype.removeWhere=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(S.options,h);if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"removeWhere",arguments);g=y}S.options.headers&&a.mixin(f,S.options.headers),S.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),d.default.delete(S,"/push/channelSubscriptions",f,p,null,function(c){return g(c)})},b.prototype.listChannels=function(p,g){var S=this.rest,h=S.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(S.options,h);if(typeof g!="function"){if(this.rest.options.promises)return a.promisify(this,"listChannels",arguments);g=y}S.options.headers&&a.mixin(c,S.options.headers),S.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),new m.default(S,"/push/channels",c,f,function(s,w,v){for(var k=!v&&h?a.decodeBody(s,h):s,L=0;L<k.length;L++)k[L]=String(k[L]);return k}).get(p,g)},b}();r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(4)),d;(function(R){R.Phone="phone",R.Tablet="tablet",R.Desktop="desktop",R.TV="tv",R.Watch="watch",R.Car="car",R.Embedded="embedded",R.Other="other"})(d||(d={}));var m;(function(R){R.Android="android",R.IOS="ios",R.Browser="browser"})(m||(m={}));var x=function(){function R(){}return R.prototype.toJSON=function(){var y,E,u;return{id:this.id,deviceSecret:this.deviceSecret,platform:this.platform,formFactor:this.formFactor,clientId:this.clientId,metadata:this.metadata,deviceIdentityToken:this.deviceIdentityToken,push:{recipient:(y=this.push)===null||y===void 0?void 0:y.recipient,state:(E=this.push)===null||E===void 0?void 0:E.state,error:(u=this.push)===null||u===void 0?void 0:u.error}}},R.prototype.toString=function(){var y,E,u,C,P="[DeviceDetails";return this.id&&(P+="; id="+this.id),this.platform&&(P+="; platform="+this.platform),this.formFactor&&(P+="; formFactor="+this.formFactor),this.clientId&&(P+="; clientId="+this.clientId),this.metadata&&(P+="; metadata="+this.metadata),this.deviceIdentityToken&&(P+="; deviceIdentityToken="+JSON.stringify(this.deviceIdentityToken)),!((y=this.push)===null||y===void 0)&&y.recipient&&(P+="; push.recipient="+JSON.stringify(this.push.recipient)),!((E=this.push)===null||E===void 0)&&E.state&&(P+="; push.state="+this.push.state),!((u=this.push)===null||u===void 0)&&u.error&&(P+="; push.error="+JSON.stringify(this.push.error)),!((C=this.push)===null||C===void 0)&&C.metadata&&(P+="; push.metadata="+this.push.metadata),P+="]",P},R.fromResponseBody=function(y,E){return E&&(y=a.decodeBody(y,E)),a.isArray(y)?R.fromValuesArray(y):R.fromValues(y)},R.fromValues=function(y){return y.error=y.error&&l.default.fromValues(y.error),Object.assign(new R,y)},R.fromValuesArray=function(y){for(var E=y.length,u=new Array(E),C=0;C<E;C++)u[C]=R.fromValues(y[C]);return u},R.toRequestBody=a.encodeBody,R}();r.default=x},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=function(){function d(){}return d.prototype.toJSON=function(){return{channel:this.channel,deviceId:this.deviceId,clientId:this.clientId}},d.prototype.toString=function(){var m="[PushChannelSubscription";return this.channel&&(m+="; channel="+this.channel),this.deviceId&&(m+="; deviceId="+this.deviceId),this.clientId&&(m+="; clientId="+this.clientId),m+="]",m},d.fromResponseBody=function(m,x){return x&&(m=a.decodeBody(m,x)),a.isArray(m)?d.fromValuesArray(m):d.fromValues(m)},d.fromValues=function(m){return Object.assign(new d,m)},d.fromValuesArray=function(m){for(var x=m.length,R=new Array(x),y=0;y<x;y++)R[y]=d.fromValues(m[y]);return R},d.toRequestBody=a.encodeBody,d}();r.default=l},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=function(){function S(h){this.count=h&&h.count||0,this.data=h&&h.data||0,this.uncompressedData=h&&h.uncompressedData||0,this.failed=h&&h.failed||0,this.refused=h&&h.refused||0}return S}(),d=function(S){i.__extends(h,S);function h(f){var c=S.call(this,f)||this;return f&&f.category&&(c.category={},a.forInOwnNonNullProperties(f.category,function(s){c.category[s]=new l(f.category[s])})),c}return h}(l),m=function(){function S(h){this.peak=h&&h.peak||0,this.min=h&&h.min||0,this.mean=h&&h.mean||0,this.opened=h&&h.opened||0,this.refused=h&&h.refused||0}return S}(),x=function(){function S(h){this.succeeded=h&&h.succeeded||0,this.failed=h&&h.failed||0,this.refused=h&&h.refused||0}return S}(),R=function(){function S(h){this.plain=new m(h&&h.plain),this.tls=new m(h&&h.tls),this.all=new m(h&&h.all)}return S}(),y=function(){function S(h){this.messages=new d(h&&h.messages),this.presence=new d(h&&h.presence),this.all=new d(h&&h.all)}return S}(),E=function(){function S(h){this.realtime=new y(h&&h.realtime),this.rest=new y(h&&h.rest),this.webhook=new y(h&&h.webhook),this.sharedQueue=new y(h&&h.sharedQueue),this.externalQueue=new y(h&&h.externalQueue),this.httpEvent=new y(h&&h.httpEvent),this.push=new y(h&&h.push),this.all=new y(h&&h.all)}return S}(),u=function(){function S(h){this.all=new y(h&&h.all),this.inbound=new E(h&&h.inbound),this.outbound=new E(h&&h.outbound)}return S}(),C=function(){function S(h){this.all=new y(h&&h.all),this.producerPaid=new u(h&&h.producerPaid),this.consumerPaid=new u(h&&h.consumerPaid)}return S}(),P=function(){function S(h){this.messages=h&&h.messages||0;var f=h&&h.notifications;this.notifications={invalid:f&&f.invalid||0,attempted:f&&f.attempted||0,successful:f&&f.successful||0,failed:f&&f.failed||0},this.directPublishes=h&&h.directPublishes||0}return S}(),b=function(){function S(h){this.succeeded=h&&h.succeeded||0,this.skipped=h&&h.skipped||0,this.failed=h&&h.failed||0}return S}(),p=function(){function S(h){var f=this;this.delta=void 0,h&&h.delta&&(this.delta={},a.forInOwnNonNullProperties(h.delta,function(c){f.delta[c]=new b(h.delta[c])}))}return S}(),g=function(S){i.__extends(h,S);function h(f){var c=S.call(this,f)||this;return c.persisted=new y(f&&f.persisted),c.connections=new R(f&&f.connections),c.channels=new m(f&&f.channels),c.apiRequests=new x(f&&f.apiRequests),c.tokenRequests=new x(f&&f.tokenRequests),c.xchgProducer=new C(f&&f.xchgProducer),c.xchgConsumer=new C(f&&f.xchgConsumer),c.push=new P(f&&f.pushStats),c.processed=new p(f&&f.processed),c.inProgress=f&&f.inProgress||void 0,c.unit=f&&f.unit||void 0,c.intervalId=f&&f.intervalId||void 0,c}return h.fromValues=function(f){return new h(f)},h}(u);r.default=g},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(30)),d=i.__importDefault(o(7)),m=i.__importDefault(o(2)),x=i.__importDefault(o(51)),R=i.__importDefault(o(38)),y=i.__importDefault(o(8)),E=i.__importDefault(o(4)),u=i.__importDefault(o(10)),C=i.__importDefault(o(35)),P=i.__importDefault(o(3)),b=i.__importDefault(o(9)),p=function(S){i.__extends(h,S);function h(f){var c=S.call(this,f)||this;return m.default.logAction(m.default.LOG_MINOR,"Realtime()",""),c.connection=new x.default(c,c.options),c.channels=new g(c),f.autoConnect!==!1&&c.connect(),c}return h.prototype.connect=function(){m.default.logAction(m.default.LOG_MINOR,"Realtime.connect()",""),this.connection.connect()},h.prototype.close=function(){m.default.logAction(m.default.LOG_MINOR,"Realtime.close()",""),this.connection.close()},h.Promise=function(f){return f=y.default.objectifyOptions(f),f.promises=!0,new h(f)},h.Callbacks=h,h.Utils=a,h.ConnectionManager=C.default,h.Platform=P.default,h.ProtocolMessage=u.default,h.Message=b.default,h}(l.default),g=function(S){i.__extends(h,S);function h(f){var c=S.call(this)||this;return c.realtime=f,c.all=Object.create(null),f.connection.connectionManager.on("transport.active",function(){c.onTransportActive()}),c}return h.prototype.channelSerials=function(){for(var f={},c=0,s=a.keysArray(this.all,!0);c<s.length;c++){var w=s[c],v=this.all[w];v.properties.channelSerial&&(f[w]=v.properties.channelSerial)}return f},h.prototype.recoverChannels=function(f){for(var c=0,s=a.keysArray(f,!0);c<s.length;c++){var w=s[c],v=this.get(w);v.properties.channelSerial=f[w]}},h.prototype.onChannelMessage=function(f){var c=f.channel;if(c===void 0){m.default.logAction(m.default.LOG_ERROR,"Channels.onChannelMessage()","received event unspecified channel, action = "+f.action);return}var s=this.all[c];if(!s){m.default.logAction(m.default.LOG_ERROR,"Channels.onChannelMessage()","received event for non-existent channel: "+c);return}s.onMessage(f)},h.prototype.onTransportActive=function(){for(var f in this.all){var c=this.all[f];c.state==="attaching"||c.state==="detaching"?c.checkPendingState():c.state==="suspended"?c._attach(!1,null):c.state==="attached"&&c.requestState("attaching")}},h.prototype.propogateConnectionInterruption=function(f,c){var s={closing:"detached",closed:"detached",failed:"failed",suspended:"suspended"},w=["attaching","attached","detaching","suspended"],v=s[f];for(var k in this.all){var L=this.all[k];a.arrIn(w,L.state)&&L.notifyState(v,c)}},h.prototype.get=function(f,c){f=String(f);var s=this.all[f];if(!s)s=this.all[f]=new R.default(this.realtime,f,c);else if(c){if(s._shouldReattachToSetOptions(c,s.channelOptions))throw new E.default("Channels.get() cannot be used to set channel options that would cause the channel to reattach. Please, use RealtimeChannel.setOptions() instead.",4e4,400);s.setOptions(c)}return s},h.prototype.getDerived=function(f,c,s){if(c.filter){var w=a.toBase64(c.filter),v=a.matchDerivedChannel(f);f="[filter=".concat(w).concat(v.qualifierParam,"]").concat(v.channelName)}return this.get(f,s)},h.prototype.release=function(f){f=String(f);var c=this.all[f];if(c){var s=c.getReleaseErr();if(s)throw s;delete this.all[f]}},h}(d.default);r.default=p},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(35)),m=i.__importDefault(o(2)),x=i.__importDefault(o(37)),R=i.__importDefault(o(3));function y(){}var E=function(u){i.__extends(C,u);function C(P,b){var p=u.call(this)||this;return p.whenState=function(g,S){return l.default.prototype.whenState.call(p,g,p.state,S,new x.default(void 0,g))},p.ably=P,p.connectionManager=new d.default(P,b),p.state=p.connectionManager.state.state,p.key=void 0,p.id=void 0,p.errorReason=null,p.connectionManager.on("connectionstate",function(g){var S=p.state=g.current;R.default.Config.nextTick(function(){p.emit(S,g)})}),p.connectionManager.on("update",function(g){R.default.Config.nextTick(function(){p.emit("update",g)})}),p}return C.prototype.connect=function(){m.default.logAction(m.default.LOG_MINOR,"Connection.connect()",""),this.connectionManager.requestState({state:"connecting"})},C.prototype.ping=function(P){if(m.default.logAction(m.default.LOG_MINOR,"Connection.ping()",""),!P){if(this.ably.options.promises)return a.promisify(this,"ping",arguments);P=y}this.connectionManager.ping(null,P)},C.prototype.close=function(){m.default.logAction(m.default.LOG_MINOR,"Connection.close()","connectionKey = "+this.key),this.connectionManager.requestState({state:"closing"})},Object.defineProperty(C.prototype,"recoveryKey",{get:function(){return this.createRecoveryKey()},enumerable:!1,configurable:!0}),C.prototype.createRecoveryKey=function(){return this.connectionManager.createRecoveryKey()},C}(l.default);r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.PendingMessage=void 0;var i=o(0),a=i.__importDefault(o(10)),l=i.__importStar(o(1)),d=i.__importDefault(o(7)),m=i.__importDefault(o(2)),x=i.__importDefault(o(36)),R=i.__importDefault(o(4)),y=a.default.Action,E=function(){function C(P,b){this.message=P,this.callback=b,this.merged=!1;var p=P.action;this.sendAttempted=!1,this.ackRequired=p==y.MESSAGE||p==y.PRESENCE}return C}();r.PendingMessage=E;var u=function(C){i.__extends(P,C);function P(b){var p=C.call(this)||this;return p.transport=b,p.messageQueue=new x.default,b.on("ack",function(g,S){p.onAck(g,S)}),b.on("nack",function(g,S,h){p.onNack(g,S,h)}),p}return P.prototype.onAck=function(b,p){m.default.logAction(m.default.LOG_MICRO,"Protocol.onAck()","serial = "+b+"; count = "+p),this.messageQueue.completeMessages(b,p)},P.prototype.onNack=function(b,p,g){m.default.logAction(m.default.LOG_ERROR,"Protocol.onNack()","serial = "+b+"; count = "+p+"; err = "+l.inspectError(g)),g||(g=new R.default("Unable to send message; channel not responding",50001,500)),this.messageQueue.completeMessages(b,p,g)},P.prototype.onceIdle=function(b){var p=this.messageQueue;if(p.count()===0){b();return}p.once("idle",b)},P.prototype.send=function(b){b.ackRequired&&this.messageQueue.push(b),m.default.shouldLog(m.default.LOG_MICRO)&&m.default.logAction(m.default.LOG_MICRO,"Protocol.send()","sending msg; "+a.default.stringify(b.message)),b.sendAttempted=!0,this.transport.send(b.message)},P.prototype.getTransport=function(){return this.transport},P.prototype.getPendingMessages=function(){return this.messageQueue.copyAll()},P.prototype.clearPendingMessages=function(){return this.messageQueue.clear()},P.prototype.finish=function(){var b=this.transport;this.onceIdle(function(){b.disconnect()})},P}(d.default);r.default=u},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(3)),l=i.__importStar(o(1)),d=i.__importDefault(o(26)),m=i.__importDefault(o(8)),x=i.__importDefault(o(2)),R=i.__importDefault(o(10)),y=i.__importDefault(o(4)),E="web_socket";function u(b){return!!b.on}var C=function(b){i.__extends(p,b);function p(g,S,h){var f=b.call(this,g,S,h)||this;return f.shortName=E,h.heartbeats=a.default.Config.useProtocolHeartbeats,f.wsHost=m.default.getHost(h.options,h.host,!0),f}return p.isAvailable=function(){return!!a.default.Config.WebSocket},p.prototype.createWebSocket=function(g,S){return this.uri=g+l.toQueryString(S),new a.default.Config.WebSocket(this.uri)},p.prototype.toString=function(){return"WebSocketTransport; uri="+this.uri},p.prototype.connect=function(){x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.connect()","starting"),d.default.prototype.connect.call(this);var g=this,S=this.params,h=S.options,f=h.tls?"wss://":"ws://",c=f+this.wsHost+":"+m.default.getPort(h)+"/";x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.connect()","uri: "+c),this.auth.getAuthParams(function(s,w){if(!g.isDisposed){var v="";for(var k in w)v+=" "+k+": "+w[k]+";";if(x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.connect()","authParams:"+v+" err: "+s),s){g.disconnect(s);return}var L=S.getConnectParams(w);try{var N=g.wsConnection=g.createWebSocket(c,L);N.binaryType=a.default.Config.binaryType,N.onopen=function(){g.onWsOpen()},N.onclose=function(I){g.onWsClose(I)},N.onmessage=function(I){g.onWsData(I.data)},N.onerror=function(I){g.onWsError(I)},u(N)&&N.on("ping",function(){g.onActivity()})}catch(I){x.default.logAction(x.default.LOG_ERROR,"WebSocketTransport.connect()","Unexpected exception creating websocket: err = "+(I.stack||I.message)),g.disconnect(I)}}})},p.prototype.send=function(g){var S=this.wsConnection;if(!S){x.default.logAction(x.default.LOG_ERROR,"WebSocketTransport.send()","No socket connection");return}try{S.send(R.default.serialize(g,this.params.format))}catch(f){var h="Exception from ws connection when trying to send: "+l.inspectError(f);x.default.logAction(x.default.LOG_ERROR,"WebSocketTransport.send()",h),this.finish("disconnected",new y.default(h,5e4,500))}},p.prototype.onWsData=function(g){x.default.logAction(x.default.LOG_MICRO,"WebSocketTransport.onWsData()","data received; length = "+g.length+"; type = "+typeof g);try{this.onProtocolMessage(R.default.deserialize(g,this.format))}catch(S){x.default.logAction(x.default.LOG_ERROR,"WebSocketTransport.onWsData()","Unexpected exception handing channel message: "+S.stack)}},p.prototype.onWsOpen=function(){x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.onWsOpen()","opened WebSocket"),this.emit("preconnect")},p.prototype.onWsClose=function(g){var S,h;if(typeof g=="object"?(h=g.code,S=g.wasClean||h===1e3):(h=g,S=h==1e3),delete this.wsConnection,S){x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.onWsClose()","Cleanly closed WebSocket");var f=new y.default("Websocket closed",80003,400);this.finish("disconnected",f)}else{var c="Unclean disconnection of WebSocket ; code = "+h,f=new y.default(c,80003,400);x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.onWsClose()",c),this.finish("disconnected",f)}this.emit("disposed")},p.prototype.onWsError=function(g){var S=this;x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.onError()","Error from WebSocket: "+g.message),a.default.Config.nextTick(function(){S.disconnect(Error(g.message))})},p.prototype.dispose=function(){x.default.logAction(x.default.LOG_MINOR,"WebSocketTransport.dispose()",""),this.isDisposed=!0;var g=this.wsConnection;g&&(g.onmessage=function(){},delete this.wsConnection,a.default.Config.nextTick(function(){if(x.default.logAction(x.default.LOG_MICRO,"WebSocketTransport.dispose()","closing websocket"),!g)throw new Error("WebSocketTransport.dispose(): wsConnection is not defined");g.close()}))},p}(d.default);function P(b){return C.isAvailable()&&(b.supportedTransports[E]=C),C}r.default=P},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(34)),d=i.__importDefault(o(7)),m=i.__importDefault(o(2)),x=i.__importDefault(o(16)),R=i.__importStar(o(4)),y=i.__importDefault(o(38)),E=i.__importDefault(o(24)),u=i.__importDefault(o(39)),C=function(){};function P(f){return f.channel.realtime.auth.clientId}function b(f){var c=f.channel.realtime,s=c.auth.clientId;return(!s||s==="*")&&c.connection.state==="connected"}function p(f,c,s){switch(f.state){case"attached":case"suspended":s();break;case"initialized":case"detached":case"detaching":case"attaching":f.attach(function(w){w?c(w):s()});break;default:c(R.default.fromValues(f.invalidStateError()))}}function g(f,c){if(f.isSynthesized()||c.isSynthesized())return f.timestamp>=c.timestamp;var s=f.parseId(),w=c.parseId();return s.msgSerial===w.msgSerial?s.index>w.index:s.msgSerial>w.msgSerial}var S=function(f){i.__extends(c,f);function c(s){var w=f.call(this,s)||this;return w.channel=s,w.syncComplete=!1,w.members=new h(w,function(v){return v.clientId+":"+v.connectionId}),w._myMembers=new h(w,function(v){return v.clientId}),w.subscriptions=new d.default,w.pendingPresence=[],w}return c.prototype.enter=function(s,w){if(b(this))throw new R.default("clientId must be specified to enter a presence channel",40012,400);return this._enterOrUpdateClient(void 0,void 0,s,"enter",w)},c.prototype.update=function(s,w){if(b(this))throw new R.default("clientId must be specified to update presence data",40012,400);return this._enterOrUpdateClient(void 0,void 0,s,"update",w)},c.prototype.enterClient=function(s,w,v){return this._enterOrUpdateClient(void 0,s,w,"enter",v)},c.prototype.updateClient=function(s,w,v){return this._enterOrUpdateClient(void 0,s,w,"update",v)},c.prototype._enterOrUpdateClient=function(s,w,v,k,L){var N=this;if(!L)if(typeof v=="function")L=v,v=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"_enterOrUpdateClient",[s,w,v,k]);L=C}var I=this.channel;if(!I.connectionManager.activeState()){L(I.connectionManager.getError());return}m.default.logAction(m.default.LOG_MICRO,"RealtimePresence."+k+"Client()","channel = "+I.name+", id = "+s+", client = "+(w||"(implicit) "+P(this)));var O=x.default.fromData(v);O.action=k,s&&(O.id=s),w&&(O.clientId=w),x.default.encode(O,I.channelOptions,function(A){if(A){L(A);return}switch(I.state){case"attached":I.sendPresence(O,L);break;case"initialized":case"detached":I.attach();case"attaching":N.pendingPresence.push({presence:O,callback:L});break;default:A=new R.PartialErrorInfo("Unable to "+k+" presence channel while in "+I.state+" state",90001),A.code=90001,L(A)}})},c.prototype.leave=function(s,w){if(b(this))throw new R.default("clientId must have been specified to enter or leave a presence channel",40012,400);return this.leaveClient(void 0,s,w)},c.prototype.leaveClient=function(s,w,v){if(!v)if(typeof w=="function")v=w,w=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"leaveClient",[s,w]);v=C}var k=this.channel;if(!k.connectionManager.activeState()){v==null||v(k.connectionManager.getError());return}m.default.logAction(m.default.LOG_MICRO,"RealtimePresence.leaveClient()","leaving; channel = "+this.channel.name+", client = "+s);var L=x.default.fromData(w);switch(L.action="leave",s&&(L.clientId=s),k.state){case"attached":k.sendPresence(L,v);break;case"attaching":this.pendingPresence.push({presence:L,callback:v});break;case"initialized":case"failed":{var N=new R.PartialErrorInfo("Unable to leave presence channel (incompatible state)",90001);v==null||v(N);break}default:v==null||v(k.invalidStateError())}},c.prototype.get=function(s,w){var v=this,k=Array.prototype.slice.call(arguments);k.length==1&&typeof k[0]=="function"&&k.unshift(null),s=k[0],w=k[1];var L=!s||("waitForSync"in s?s.waitForSync:!0);if(!w){if(this.channel.realtime.options.promises)return a.promisify(this,"get",k);w=C}function N(I){w(null,s?I.list(s):I.values())}if(this.channel.state==="suspended"){L?w(R.default.fromValues({statusCode:400,code:91005,message:"Presence state is out of sync due to channel being in the SUSPENDED state"})):N(this.members);return}p(this.channel,w,function(){var I=v.members;L?I.waitSync(function(){N(I)}):N(I)})},c.prototype.history=function(s,w){if(m.default.logAction(m.default.LOG_MICRO,"RealtimePresence.history()","channel = "+this.name),w===void 0)if(typeof s=="function")w=s,s=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"history",arguments);w=C}s&&s.untilAttach&&(this.channel.state==="attached"?(delete s.untilAttach,s.from_serial=this.channel.properties.attachSerial):w(new R.default("option untilAttach requires the channel to be attached, was: "+this.channel.state,4e4,400))),l.default.prototype._history.call(this,s,w)},c.prototype.setPresence=function(s,w,v){m.default.logAction(m.default.LOG_MICRO,"RealtimePresence.setPresence()","received presence for "+s.length+" participants; syncChannelSerial = "+v);var k,L,N=this.members,I=this._myMembers,O=[],A=this.channel.connectionManager.connectionId;w&&(this.members.startSync(),v&&(L=v.match(/^[\w-]+:(.*)$/))&&(k=L[1]));for(var T=0;T<s.length;T++){var j=x.default.fromValues(s[T]);switch(j.action){case"leave":N.remove(j)&&O.push(j),j.connectionId===A&&!j.isSynthesized()&&I.remove(j);break;case"enter":case"present":case"update":N.put(j)&&O.push(j),j.connectionId===A&&I.put(j);break}}w&&!k&&(N.endSync(),this.channel.syncChannelSerial=null);for(var T=0;T<O.length;T++){var j=O[T];this.subscriptions.emit(j.action,j)}},c.prototype.onAttached=function(s){m.default.logAction(m.default.LOG_MINOR,"RealtimePresence.onAttached()","channel = "+this.channel.name+", hasPresence = "+s),s?this.members.startSync():(this._synthesizeLeaves(this.members.values()),this.members.clear()),this._ensureMyMembersPresent();var w=this.pendingPresence,v=w.length;if(v){this.pendingPresence=[];var k=[],L=E.default.create();m.default.logAction(m.default.LOG_MICRO,"RealtimePresence.onAttached","sending "+v+" queued presence messages");for(var N=0;N<v;N++){var I=w[N];k.push(I.presence),L.push(I.callback)}this.channel.sendPresence(k,L)}},c.prototype.actOnChannelState=function(s,w,v){switch(s){case"attached":this.onAttached(w);break;case"detached":case"failed":this._clearMyMembers(),this.members.clear();case"suspended":this.failPendingPresence(v);break}},c.prototype.failPendingPresence=function(s){if(this.pendingPresence.length){m.default.logAction(m.default.LOG_MINOR,"RealtimeChannel.failPendingPresence","channel; name = "+this.channel.name+", err = "+a.inspectError(s));for(var w=0;w<this.pendingPresence.length;w++)try{this.pendingPresence[w].callback(s)}catch(v){}this.pendingPresence=[]}},c.prototype._clearMyMembers=function(){this._myMembers.clear()},c.prototype._ensureMyMembersPresent=function(){var s=this,w=this._myMembers,v=function(N){if(N){var I="Presence auto-re-enter failed: "+N.toString(),O=new R.default(I,91004,400);m.default.logAction(m.default.LOG_ERROR,"RealtimePresence._ensureMyMembersPresent()",I);var A=new u.default(s.channel.state,s.channel.state,!0,!1,O);s.channel.emit("update",A)}};for(var k in w.map){var L=w.map[k];m.default.logAction(m.default.LOG_MICRO,"RealtimePresence._ensureMyMembersPresent()",'Auto-reentering clientId "'+L.clientId+'" into the presence set'),this._enterOrUpdateClient(L.id,L.clientId,L.data,"enter",v)}},c.prototype._synthesizeLeaves=function(s){var w=this.subscriptions;a.arrForEach(s,function(v){var k=x.default.fromValues({action:"leave",connectionId:v.connectionId,clientId:v.clientId,data:v.data,encoding:v.encoding,timestamp:a.now()});w.emit("leave",k)})},c.prototype.on=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];m.default.renamedMethod("RealtimePresence","on","subscribe"),this.subscribe.apply(this,s)},c.prototype.off=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];m.default.renamedMethod("RealtimePresence","off","unsubscribe"),this.unsubscribe.apply(this,s)},c.prototype.subscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=y.default.processListenerArgs(s),k=v[0],L=v[1],N=v[2],I=this.channel;if(!N){if(this.channel.realtime.options.promises)return a.promisify(this,"subscribe",[k,L]);N=C}if(I.state==="failed"){N(R.default.fromValues(I.invalidStateError()));return}this.subscriptions.on(k,L),I.attach(N)},c.prototype.unsubscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=y.default.processListenerArgs(s),k=v[0],L=v[1];this.subscriptions.off(k,L)},c}(l.default),h=function(f){i.__extends(c,f);function c(s,w){var v=f.call(this)||this;return v.presence=s,v.map=Object.create(null),v.syncInProgress=!1,v.residualMembers=null,v.memberKey=w,v}return c.prototype.get=function(s){return this.map[s]},c.prototype.getClient=function(s){var w=this.map,v=[];for(var k in w){var L=w[k];L.clientId==s&&L.action!="absent"&&v.push(L)}return v},c.prototype.list=function(s){var w=this.map,v=s&&s.clientId,k=s&&s.connectionId,L=[];for(var N in w){var I=w[N];I.action!=="absent"&&(v&&v!=I.clientId||k&&k!=I.connectionId||L.push(I))}return L},c.prototype.put=function(s){(s.action==="enter"||s.action==="update")&&(s=x.default.fromValues(s),s.action="present");var w=this.map,v=this.memberKey(s);this.residualMembers&&delete this.residualMembers[v];var k=w[v];return k&&!g(s,k)?!1:(w[v]=s,!0)},c.prototype.values=function(){var s=this.map,w=[];for(var v in s){var k=s[v];k.action!="absent"&&w.push(k)}return w},c.prototype.remove=function(s){var w=this.map,v=this.memberKey(s),k=w[v];return k&&!g(s,k)?!1:(this.syncInProgress?(s=x.default.fromValues(s),s.action="absent",w[v]=s):delete w[v],!0)},c.prototype.startSync=function(){var s=this.map,w=this.syncInProgress;m.default.logAction(m.default.LOG_MINOR,"PresenceMap.startSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),this.syncInProgress||(this.residualMembers=a.copy(s),this.setInProgress(!0))},c.prototype.endSync=function(){var s=this.map,w=this.syncInProgress;if(m.default.logAction(m.default.LOG_MINOR,"PresenceMap.endSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),w){for(var v in s){var k=s[v];k.action==="absent"&&delete s[v]}this.presence._synthesizeLeaves(a.valuesArray(this.residualMembers));for(var v in this.residualMembers)delete s[v];this.residualMembers=null,this.setInProgress(!1)}this.emit("sync")},c.prototype.waitSync=function(s){var w=this.syncInProgress;if(m.default.logAction(m.default.LOG_MINOR,"PresenceMap.waitSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),!w){s();return}this.once("sync",s)},c.prototype.clear=function(){this.map={},this.setInProgress(!1),this.residualMembers=null},c.prototype.setInProgress=function(s){m.default.logAction(m.default.LOG_MICRO,"PresenceMap.setInProgress()","inProgress = "+s),this.syncInProgress=s,this.presence.syncComplete=!s},c}(d.default);r.default=S},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=o(56),l=o(31),d=o(11),m=i.__importDefault(o(5)),x=i.__importDefault(o(3)),R=function(){function y(){this.base64CharSet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",this.hexCharSet="0123456789abcdef"}return y.prototype.isWordArray=function(E){return E!=null&&E.sigBytes!==void 0},y.prototype.isArrayBuffer=function(E){return E!=null&&E.constructor===ArrayBuffer},y.prototype.isTypedArray=function(E){return!!ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(E)},y.prototype.uint8ViewToBase64=function(E){for(var u="",C=this.base64CharSet,P=E.byteLength,b=P%3,p=P-b,g,S,h,f,c,s=0;s<p;s=s+3)c=E[s]<<16|E[s+1]<<8|E[s+2],g=(c&16515072)>>18,S=(c&258048)>>12,h=(c&4032)>>6,f=c&63,u+=C[g]+C[S]+C[h]+C[f];return b==1?(c=E[p],g=(c&252)>>2,S=(c&3)<<4,u+=C[g]+C[S]+"=="):b==2&&(c=E[p]<<8|E[p+1],g=(c&64512)>>10,S=(c&1008)>>4,h=(c&15)<<2,u+=C[g]+C[S]+C[h]+"="),u},y.prototype.base64ToArrayBuffer=function(E){for(var u=atob==null?void 0:atob(E),C=u.length,P=new Uint8Array(C),b=0;b<C;b++){var p=u.charCodeAt(b);P[b]=p}return P.buffer},y.prototype.isBuffer=function(E){return this.isArrayBuffer(E)||this.isWordArray(E)||this.isTypedArray(E)},y.prototype.toBuffer=function(E){if(!ArrayBuffer)throw new Error("Can't convert to Buffer: browser does not support the necessary types");if(this.isArrayBuffer(E))return new Uint8Array(E);if(this.isTypedArray(E))return new Uint8Array(E.buffer);if(this.isWordArray(E)){for(var u=new ArrayBuffer(E.sigBytes),C=new Uint8Array(u),P=0;P<E.sigBytes;P++)C[P]=E.words[P>>>2]>>>24-P%4*8&255;return C}throw new Error("BufferUtils.toBuffer expected an arraybuffer, typed array, or CryptoJS wordarray")},y.prototype.toArrayBuffer=function(E){return this.isArrayBuffer(E)?E:this.toBuffer(E).buffer},y.prototype.toWordArray=function(E){return this.isTypedArray(E)&&(E=E.buffer),this.isWordArray(E)?E:m.default.create(E)},y.prototype.base64Encode=function(E){return this.isWordArray(E)?(0,d.stringify)(E):this.uint8ViewToBase64(this.toBuffer(E))},y.prototype.base64Decode=function(E){return ArrayBuffer&&x.default.Config.atob?this.base64ToArrayBuffer(E):(0,d.parse)(E)},y.prototype.hexEncode=function(E){return(0,a.stringify)(this.toWordArray(E))},y.prototype.hexDecode=function(E){var u=(0,a.parse)(E);return ArrayBuffer?this.toArrayBuffer(u):u},y.prototype.utf8Encode=function(E){return x.default.Config.TextEncoder?new x.default.Config.TextEncoder().encode(E).buffer:(0,l.parse)(E)},y.prototype.utf8Decode=function(E){if(!this.isBuffer(E))throw new Error("Expected input of utf8decode to be an arraybuffer, typed array, or CryptoJS wordarray");return TextDecoder&&!this.isWordArray(E)?new TextDecoder().decode(E):(E=this.toWordArray(E),(0,l.stringify)(E))},y.prototype.bufferCompare=function(E,u){if(!E)return-1;if(!u)return 1;var C=this.toWordArray(E),P=this.toWordArray(u);C.clamp(),P.clamp();var b=C.sigBytes-P.sigBytes;if(b!=0)return b;for(var p=C.words,g=P.words,S=0;S<p.length;S++)if(b=p[S]-g[S],b!=0)return b;return 0},y.prototype.byteLength=function(E){return this.isArrayBuffer(E)||this.isTypedArray(E)?E.byteLength:this.isWordArray(E)?E.sigBytes:-1},y.prototype.typedArrayToBuffer=function(E){return E.buffer},y}();r.default=new R},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return i.enc.Hex})},function(n,r,o){o.r(r);var i=o(5),a=o.n(i),l=o(11),d=o(23),m=o.n(d),x=o(2),R=o.n(x),y=o(4),E=o.n(y),u=function(C,P){var b="aes",p=256,g="cbc",S=16,h=4,f=4294967296,c=2147483648,s;if(C.getRandomWordArray)s=C.getRandomWordArray;else if(typeof Uint32Array!="undefined"&&C.getRandomValues){var w=new Uint32Array(h);s=function(T,j){var B=T/4,z=B==h?w:new Uint32Array(B);C.getRandomValues(z,function($){typeof j!="undefined"&&j($,P.toWordArray(z))})}}else s=function(T,j){R.a.logAction(R.a.LOG_MAJOR,"Ably.Crypto.generateRandom()","Warning: the browser you are using does not support secure cryptographically secure randomness generation; falling back to insecure Math.random()");for(var B=T/4,z=new Array(B),$=0;$<B;$++)z[$]=Math.floor(Math.random()*f)-c;j(null,a.a.create(z))};function v(T){return T+S&-16}function k(T){if(T.algorithm==="aes"&&T.mode==="cbc"){if(T.keyLength===128||T.keyLength===256)return;throw new Error("Unsupported key length "+T.keyLength+" for aes-cbc encryption. Encryption key must be 128 or 256 bits (16 or 32 ASCII characters)")}}function L(T){return T.replace("_","/").replace("-","+")}var N=[a.a.create([269488144,269488144,269488144,269488144],16),a.a.create([16777216],1),a.a.create([33685504],2),a.a.create([50529024],3),a.a.create([67372036],4),a.a.create([84215045,83886080],5),a.a.create([101058054,101056512],6),a.a.create([117901063,117901056],7),a.a.create([134744072,134744072],8),a.a.create([151587081,151587081,150994944],9),a.a.create([168430090,168430090,168427520],10),a.a.create([185273099,185273099,185273088],11),a.a.create([202116108,202116108,202116108],12),a.a.create([218959117,218959117,218959117,218103808],13),a.a.create([235802126,235802126,235802126,235798528],14),a.a.create([252645135,252645135,252645135,252645135],15),a.a.create([269488144,269488144,269488144,269488144],16)];function I(){}function O(){this.algorithm=null,this.keyLength=null,this.mode=null,this.key=null}I.CipherParams=O,I.getDefaultParams=function(T){var j;if(typeof T=="function"||typeof T=="string"){if(R.a.deprecated("The ability to pass a callback to `Crypto.getDefaultParams()`","This method now directly returns its result, instead of returning it asynchronously via a callback. Please update your code so that it uses the return value of this method instead of passing a callback."),typeof T=="function")R.a.deprecated("The ability to call `Crypto.getDefaultParams()` without specifying an encryption key","Please update your code so that it instead passes an object whose `key` property contains an encryption key. That is, replace `Crypto.getDefaultParams()` with `Crypto.getDefaultParams({ key })`, where `key` is an encryption key that you have generated (for example from the `Crypto.generateRandomKey()` method)."),I.generateRandomKey(function(z){T(null,I.getDefaultParams({key:z}))});else if(typeof arguments[1]=="function")R.a.deprecated("The ability to pass the encryption key as the first argument of `Crypto.getDefaultParams()`","Please update your code so that it instead passes an object whose `key` property contains the key. That is, replace `Crypto.getDefaultParams(key)` with `Crypto.getDefaultParams({ key })`."),arguments[1](null,I.getDefaultParams({key:T}));else throw new Error("Invalid arguments for Crypto.getDefaultParams");return}if(!T.key)throw new Error("Crypto.getDefaultParams: a key is required");typeof T.key=="string"?j=Object(l.parse)(L(T.key)):j=P.toWordArray(T.key);var B=new O;if(B.key=j,B.algorithm=T.algorithm||b,B.keyLength=j.words.length*(4*8),B.mode=T.mode||g,T.keyLength&&T.keyLength!==B.keyLength)throw new Error("Crypto.getDefaultParams: a keyLength of "+T.keyLength+" was specified, but the key actually has length "+B.keyLength);return k(B),B},I.generateRandomKey=function(T,j){arguments.length==1&&typeof T=="function"&&(j=T,T=void 0),s((T||p)/8,function(B,z){j!==void 0&&j(B?E.a.fromValues(B):null,z)})},I.getCipher=function(T){var j=T instanceof O?T:I.getDefaultParams(T);return{cipherParams:j,cipher:new A(j,h,T.iv)}};function A(T,j,B){this.algorithm=T.algorithm+"-"+String(T.keyLength)+"-"+T.mode,this.cjsAlgorithm=T.algorithm.toUpperCase().replace(/-\d+$/,""),this.key=P.toWordArray(T.key),B&&(this.iv=P.toWordArray(B).clone()),this.blockLengthWords=j}return A.prototype.encrypt=function(T,j){R.a.logAction(R.a.LOG_MICRO,"CBCCipher.encrypt()",""),T=P.toWordArray(T);var B=T.sigBytes,z=v(B),$=this,V=function(){$.getIv(function(G,M){if(G){j(G);return}var D=$.encryptCipher.process(T.concat(N[z-B])),U=M.concat(D);j(null,U)})};this.encryptCipher?V():this.iv?(this.encryptCipher=m.a.algo[this.cjsAlgorithm].createEncryptor(this.key,{iv:this.iv}),V()):s(S,function(G,M){if(G){j(G);return}$.encryptCipher=m.a.algo[$.cjsAlgorithm].createEncryptor($.key,{iv:M}),$.iv=M,V()})},A.prototype.decrypt=function(T){R.a.logAction(R.a.LOG_MICRO,"CBCCipher.decrypt()",""),T=P.toWordArray(T);var j=this.blockLengthWords,B=T.words,z=a.a.create(B.slice(0,j)),$=a.a.create(B.slice(j)),V=m.a.algo[this.cjsAlgorithm].createDecryptor(this.key,{iv:z}),G=V.process($),M=V.finalize();return V.reset(),M&&M.sigBytes&&G.concat(M),G},A.prototype.getIv=function(T){if(this.iv){var j=this.iv;this.iv=null,T(null,j);return}var B=this;s(S,function(z,$){if(z){T(z);return}T(null,B.encryptCipher.process($))})},I};r.default=u},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){var a=i,l=a.lib,d=l.WordArray,m=a.enc;m.Utf16=m.Utf16BE={stringify:function(R){for(var y=R.words,E=R.sigBytes,u=[],C=0;C<E;C+=2){var P=y[C>>>2]>>>16-C%4*8&65535;u.push(String.fromCharCode(P))}return u.join("")},parse:function(R){for(var y=R.length,E=[],u=0;u<y;u++)E[u>>>1]|=R.charCodeAt(u)<<16-u%2*16;return d.create(E,y*2)}},m.Utf16LE={stringify:function(R){for(var y=R.words,E=R.sigBytes,u=[],C=0;C<E;C+=2){var P=x(y[C>>>2]>>>16-C%4*8&65535);u.push(String.fromCharCode(P))}return u.join("")},parse:function(R){for(var y=R.length,E=[],u=0;u<y;u++)E[u>>>1]|=x(R.charCodeAt(u)<<16-u%2*16);return d.create(E,y*2)}};function x(R){return R<<8&4278255360|R>>>8&16711935}}(),i.enc.Utf16})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(28))})(this,function(i){return function(a){var l=i,d=l.lib,m=d.CipherParams,x=l.enc,R=x.Hex,y=l.format;y.Hex={stringify:function(E){return E.ciphertext.toString(R)},parse:function(E){var u=R.parse(E);return m.create({ciphertext:u})}}}(),i.format.Hex})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(11),o(61),o(27),o(28))})(this,function(i){return function(){var a=i,l=a.lib,d=l.BlockCipher,m=a.algo,x=[],R=[],y=[],E=[],u=[],C=[],P=[],b=[],p=[],g=[];(function(){for(var f=[],c=0;c<256;c++)c<128?f[c]=c<<1:f[c]=c<<1^283;for(var s=0,w=0,c=0;c<256;c++){var v=w^w<<1^w<<2^w<<3^w<<4;v=v>>>8^v&255^99,x[s]=v,R[v]=s;var k=f[s],L=f[k],N=f[L],I=f[v]*257^v*16843008;y[s]=I<<24|I>>>8,E[s]=I<<16|I>>>16,u[s]=I<<8|I>>>24,C[s]=I;var I=N*16843009^L*65537^k*257^s*16843008;P[v]=I<<24|I>>>8,b[v]=I<<16|I>>>16,p[v]=I<<8|I>>>24,g[v]=I,s?(s=k^f[f[f[N^k]]],w^=f[f[w]]):s=w=1}})();var S=[0,1,2,4,8,16,32,64,128,27,54],h=m.AES=d.extend({_doReset:function(){var f;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var c=this._keyPriorReset=this._key,s=c.words,w=c.sigBytes/4,v=this._nRounds=w+6,k=(v+1)*4,L=this._keySchedule=[],N=0;N<k;N++)N<w?L[N]=s[N]:(f=L[N-1],N%w?w>6&&N%w==4&&(f=x[f>>>24]<<24|x[f>>>16&255]<<16|x[f>>>8&255]<<8|x[f&255]):(f=f<<8|f>>>24,f=x[f>>>24]<<24|x[f>>>16&255]<<16|x[f>>>8&255]<<8|x[f&255],f^=S[N/w|0]<<24),L[N]=L[N-w]^f);for(var I=this._invKeySchedule=[],O=0;O<k;O++){var N=k-O;if(O%4)var f=L[N];else var f=L[N-4];O<4||N<=4?I[O]=f:I[O]=P[x[f>>>24]]^b[x[f>>>16&255]]^p[x[f>>>8&255]]^g[x[f&255]]}}},encryptBlock:function(f,c){this._doCryptBlock(f,c,this._keySchedule,y,E,u,C,x)},decryptBlock:function(f,c){var s=f[c+1];f[c+1]=f[c+3],f[c+3]=s,this._doCryptBlock(f,c,this._invKeySchedule,P,b,p,g,R);var s=f[c+1];f[c+1]=f[c+3],f[c+3]=s},_doCryptBlock:function(f,c,s,w,v,k,L,N){for(var I=this._nRounds,O=f[c]^s[0],A=f[c+1]^s[1],T=f[c+2]^s[2],j=f[c+3]^s[3],B=4,z=1;z<I;z++){var $=w[O>>>24]^v[A>>>16&255]^k[T>>>8&255]^L[j&255]^s[B++],V=w[A>>>24]^v[T>>>16&255]^k[j>>>8&255]^L[O&255]^s[B++],G=w[T>>>24]^v[j>>>16&255]^k[O>>>8&255]^L[A&255]^s[B++],M=w[j>>>24]^v[O>>>16&255]^k[A>>>8&255]^L[T&255]^s[B++];O=$,A=V,T=G,j=M}var $=(N[O>>>24]<<24|N[A>>>16&255]<<16|N[T>>>8&255]<<8|N[j&255])^s[B++],V=(N[A>>>24]<<24|N[T>>>16&255]<<16|N[j>>>8&255]<<8|N[O&255])^s[B++],G=(N[T>>>24]<<24|N[j>>>16&255]<<16|N[O>>>8&255]<<8|N[A&255])^s[B++],M=(N[j>>>24]<<24|N[O>>>16&255]<<16|N[A>>>8&255]<<8|N[T&255])^s[B++];f[c]=$,f[c+1]=V,f[c+2]=G,f[c+3]=M},keySize:256/32});a.AES=d._createHelper(h)}(),i.AES})},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(a){var l=i,d=l.lib,m=d.WordArray,x=d.Hasher,R=l.algo,y=[];(function(){for(var p=0;p<64;p++)y[p]=a.abs(a.sin(p+1))*4294967296|0})();var E=R.MD5=x.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(p,g){for(var S=0;S<16;S++){var h=g+S,f=p[h];p[h]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}var c=this._hash.words,s=p[g+0],w=p[g+1],v=p[g+2],k=p[g+3],L=p[g+4],N=p[g+5],I=p[g+6],O=p[g+7],A=p[g+8],T=p[g+9],j=p[g+10],B=p[g+11],z=p[g+12],$=p[g+13],V=p[g+14],G=p[g+15],M=c[0],D=c[1],U=c[2],_=c[3];M=u(M,D,U,_,s,7,y[0]),_=u(_,M,D,U,w,12,y[1]),U=u(U,_,M,D,v,17,y[2]),D=u(D,U,_,M,k,22,y[3]),M=u(M,D,U,_,L,7,y[4]),_=u(_,M,D,U,N,12,y[5]),U=u(U,_,M,D,I,17,y[6]),D=u(D,U,_,M,O,22,y[7]),M=u(M,D,U,_,A,7,y[8]),_=u(_,M,D,U,T,12,y[9]),U=u(U,_,M,D,j,17,y[10]),D=u(D,U,_,M,B,22,y[11]),M=u(M,D,U,_,z,7,y[12]),_=u(_,M,D,U,$,12,y[13]),U=u(U,_,M,D,V,17,y[14]),D=u(D,U,_,M,G,22,y[15]),M=C(M,D,U,_,w,5,y[16]),_=C(_,M,D,U,I,9,y[17]),U=C(U,_,M,D,B,14,y[18]),D=C(D,U,_,M,s,20,y[19]),M=C(M,D,U,_,N,5,y[20]),_=C(_,M,D,U,j,9,y[21]),U=C(U,_,M,D,G,14,y[22]),D=C(D,U,_,M,L,20,y[23]),M=C(M,D,U,_,T,5,y[24]),_=C(_,M,D,U,V,9,y[25]),U=C(U,_,M,D,k,14,y[26]),D=C(D,U,_,M,A,20,y[27]),M=C(M,D,U,_,$,5,y[28]),_=C(_,M,D,U,v,9,y[29]),U=C(U,_,M,D,O,14,y[30]),D=C(D,U,_,M,z,20,y[31]),M=P(M,D,U,_,N,4,y[32]),_=P(_,M,D,U,A,11,y[33]),U=P(U,_,M,D,B,16,y[34]),D=P(D,U,_,M,V,23,y[35]),M=P(M,D,U,_,w,4,y[36]),_=P(_,M,D,U,L,11,y[37]),U=P(U,_,M,D,O,16,y[38]),D=P(D,U,_,M,j,23,y[39]),M=P(M,D,U,_,$,4,y[40]),_=P(_,M,D,U,s,11,y[41]),U=P(U,_,M,D,k,16,y[42]),D=P(D,U,_,M,I,23,y[43]),M=P(M,D,U,_,T,4,y[44]),_=P(_,M,D,U,z,11,y[45]),U=P(U,_,M,D,G,16,y[46]),D=P(D,U,_,M,v,23,y[47]),M=b(M,D,U,_,s,6,y[48]),_=b(_,M,D,U,O,10,y[49]),U=b(U,_,M,D,V,15,y[50]),D=b(D,U,_,M,N,21,y[51]),M=b(M,D,U,_,z,6,y[52]),_=b(_,M,D,U,k,10,y[53]),U=b(U,_,M,D,j,15,y[54]),D=b(D,U,_,M,w,21,y[55]),M=b(M,D,U,_,A,6,y[56]),_=b(_,M,D,U,G,10,y[57]),U=b(U,_,M,D,I,15,y[58]),D=b(D,U,_,M,$,21,y[59]),M=b(M,D,U,_,L,6,y[60]),_=b(_,M,D,U,B,10,y[61]),U=b(U,_,M,D,v,15,y[62]),D=b(D,U,_,M,T,21,y[63]),c[0]=c[0]+M|0,c[1]=c[1]+D|0,c[2]=c[2]+U|0,c[3]=c[3]+_|0},_doFinalize:function(){var p=this._data,g=p.words,S=this._nDataBytes*8,h=p.sigBytes*8;g[h>>>5]|=128<<24-h%32;var f=a.floor(S/4294967296),c=S;g[(h+64>>>9<<4)+15]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360,g[(h+64>>>9<<4)+14]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360,p.sigBytes=(g.length+1)*4,this._process();for(var s=this._hash,w=s.words,v=0;v<4;v++){var k=w[v];w[v]=(k<<8|k>>>24)&16711935|(k<<24|k>>>8)&4278255360}return s},clone:function(){var p=x.clone.call(this);return p._hash=this._hash.clone(),p}});function u(p,g,S,h,f,c,s){var w=p+(g&S|~g&h)+f+s;return(w<<c|w>>>32-c)+g}function C(p,g,S,h,f,c,s){var w=p+(g&h|S&~h)+f+s;return(w<<c|w>>>32-c)+g}function P(p,g,S,h,f,c,s){var w=p+(g^S^h)+f+s;return(w<<c|w>>>32-c)+g}function b(p,g,S,h,f,c,s){var w=p+(S^(g|~h))+f+s;return(w<<c|w>>>32-c)+g}l.MD5=x._createHelper(E),l.HmacMD5=x._createHmacHelper(E)}(Math),i.MD5})},function(n,r,o){var i;Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importDefault(o(3)),d=a.__importStar(o(1)),m=a.__importDefault(o(8)),x=o(4),R=a.__importDefault(o(19)),y=a.__importDefault(o(17)),E=a.__importDefault(o(22)),u=a.__importDefault(o(2)),C=o(29),P=a.__importDefault(o(63)),b=o(14);function p(h){var f=h.statusCode;return f===408&&!h.code||f===400&&!h.code||f>=500&&f<=504}function g(h){var f=h.connection,c=f&&f.connectionManager.host;return c?[c].concat(m.default.getFallbackHosts(h.options)):m.default.getHosts(h.options)}var S=(i=function(){function h(f){this.checksInProgress=null,this.checkConnectivity=void 0,this.supportsAuthHeaders=!1,this.supportsLinkHeaders=!1,this._getHosts=g,this.options=f||{};var c=this.options.connectivityCheckUrl||m.default.connectivityCheckUrl,s=this.options.connectivityCheckParams,w=!this.options.connectivityCheckUrl;l.default.Config.xhrSupported?(this.supportsAuthHeaders=!0,this.Request=function(v,k,L,N,I,O,A){var T=y.default.createRequest(L,N,I,O,E.default.REQ_SEND,k&&k.options.timeouts,v);return T.once("complete",A),T.exec(),T},this.options.disableConnectivityCheck?this.checkConnectivity=function(v){v(null,!0)}:this.checkConnectivity=function(v){u.default.logAction(u.default.LOG_MICRO,"(XHRRequest)Http.checkConnectivity()","Sending; "+c),this.doUri(R.default.Get,null,c,null,null,s,function(k,L,N,I,O){var A=!1;w?A=!k&&(L==null?void 0:L.replace(/\n/,""))=="yes":A=!k&&(0,b.isSuccessCode)(O),u.default.logAction(u.default.LOG_MICRO,"(XHRRequest)Http.checkConnectivity()","Result: "+A),v(null,A)})}):l.default.Config.jsonpSupported?(this.Request=function(v,k,L,N,I,O,A){var T=(0,C.createRequest)(L,N,I,O,E.default.REQ_SEND,k&&k.options.timeouts,v);return T.once("complete",A),l.default.Config.nextTick(function(){T.exec()}),T},this.options.disableConnectivityCheck?this.checkConnectivity=function(v){v(null,!0)}:this.checkConnectivity=function(v){var k=this,L=m.default.jsonpInternetUpUrl;if(this.checksInProgress){this.checksInProgress.push(v);return}this.checksInProgress=[v],u.default.logAction(u.default.LOG_MICRO,"(JSONP)Http.checkConnectivity()","Sending; "+L);var N=new C.Request("isTheInternetUp",L,null,null,null,E.default.REQ_SEND,m.default.TIMEOUTS);N.once("complete",function(I,O){var A=!I&&O;u.default.logAction(u.default.LOG_MICRO,"(JSONP)Http.checkConnectivity()","Result: "+A);for(var T=0;T<k.checksInProgress.length;T++)k.checksInProgress[T](null,A);k.checksInProgress=null}),l.default.Config.nextTick(function(){N.exec()})}):l.default.Config.fetchSupported?(this.supportsAuthHeaders=!0,this.Request=P.default,this.checkConnectivity=function(v){u.default.logAction(u.default.LOG_MICRO,"(Fetch)Http.checkConnectivity()","Sending; "+c),this.doUri(R.default.Get,null,c,null,null,null,function(k,L){var N=!k&&(L==null?void 0:L.replace(/\n/,""))=="yes";u.default.logAction(u.default.LOG_MICRO,"(Fetch)Http.checkConnectivity()","Result: "+N),v(null,N)})}):this.Request=function(v,k,L,N,I,O,A){A(new x.PartialErrorInfo("no supported HTTP transports available",null,400),null)}}return h.prototype.do=function(f,c,s,w,v,k,L){var N=this,I=typeof s=="function"?s:function(j){return c.baseUri(j)+s},O=c._currentFallback;if(O)if(O.validUntil>d.now()){if(!this.Request){L==null||L(new x.PartialErrorInfo("Request invoked before assigned to",null,500));return}this.Request(f,c,I(O.host),w,k,v,function(j){for(var B=[],z=1;z<arguments.length;z++)B[z-1]=arguments[z];if(j&&p(j)){c._currentFallback=null,N.do(f,c,s,w,v,k,L);return}L==null||L.apply(void 0,a.__spreadArray([j],B,!1))});return}else c._currentFallback=null;var A=g(c);if(A.length===1){this.doUri(f,c,I(A[0]),w,v,k,L);return}var T=function(j,B){var z=j.shift();N.doUri(f,c,I(z),w,v,k,function($){for(var V=[],G=1;G<arguments.length;G++)V[G-1]=arguments[G];if($&&p($)&&j.length){T(j,!0);return}B&&(c._currentFallback={host:z,validUntil:d.now()+c.options.timeouts.fallbackRetryTimeout}),L==null||L.apply(void 0,a.__spreadArray([$],V,!1))})};T(A)},h.prototype.doUri=function(f,c,s,w,v,k,L){if(!this.Request){L(new x.PartialErrorInfo("Request invoked before assigned to",null,500));return}this.Request(f,c,s,w,k,v,L)},h}(),i.methods=[R.default.Get,R.default.Delete,R.default.Post,R.default.Put,R.default.Patch],i.methodsWithoutBody=[R.default.Get,R.default.Delete],i.methodsWithBody=[R.default.Post,R.default.Put,R.default.Patch],i);r.default=S},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(4)),l=i.__importDefault(o(3)),d=i.__importDefault(o(8)),m=i.__importStar(o(1)),x=o(1);function R(u,C){return!!C.get("x-ably-errorcode")}function y(u,C){if(R(u,C))return u.error&&a.default.fromValues(u.error)}function E(u,C,P,b,p,g,S){var h=new Headers(b||{}),f=u?u.toUpperCase():m.isEmptyArg(g)?"GET":"POST",c=new AbortController,s=setTimeout(function(){c.abort(),S(new a.PartialErrorInfo("Request timed out",null,408))},C?C.options.timeouts.httpRequestTimeout:d.default.TIMEOUTS.httpRequestTimeout),w={method:f,headers:h,body:g};l.default.Config.isWebworker||(w.credentials=h.has("authorization")?"include":"same-origin"),(0,x.getGlobalObject)().fetch(P+"?"+new URLSearchParams(p||{}),w).then(function(v){clearTimeout(s);var k=v.headers.get("Content-Type"),L;k&&k.indexOf("application/x-msgpack")>-1?L=v.arrayBuffer():k&&k.indexOf("application/json")>-1?L=v.json():L=v.text(),L.then(function(N){var I=!!k&&k.indexOf("application/x-msgpack")===-1;if(v.ok)S(null,N,v.headers,I,v.status);else{var O=y(N,v.headers)||new a.PartialErrorInfo("Error response received from server: "+v.status+" body was: "+l.default.Config.inspect(N),null,v.status);S(O,N,v.headers,I,v.status)}})}).catch(function(v){clearTimeout(s),S(v)})}r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(41)),l=i.__importStar(o(1)),d=l.getGlobalObject();typeof Window=="undefined"&&typeof WorkerGlobalScope=="undefined"&&console.log("Warning: this distribution of Ably is intended for browsers. On nodejs, please use the 'ably' package on npm");function m(){var E=d.location;return!d.WebSocket||!E||!E.origin||E.origin.indexOf("http")>-1}var x=d.navigator&&d.navigator.userAgent.toString(),R=d.location&&d.location.href,y={agent:"browser",logTimestamps:!0,userAgent:x,currentUrl:R,noUpgrade:x&&!!x.match(/MSIE\s8\.0/),binaryType:"arraybuffer",WebSocket:d.WebSocket,fetchSupported:!!d.fetch,xhrSupported:d.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,jsonpSupported:typeof document!="undefined",allowComet:m(),streamingSupported:!0,useProtocolHeartbeats:!0,createHmac:null,msgpack:a.default,supportsBinary:!!d.TextDecoder,preferBinary:!1,ArrayBuffer:d.ArrayBuffer,atob:d.atob,nextTick:typeof d.setImmediate!="undefined"?d.setImmediate.bind(d):function(E){setTimeout(E,0)},addEventListener:d.addEventListener,inspect:JSON.stringify,stringByteSize:function(E){return d.TextDecoder&&new d.TextEncoder().encode(E).length||E.length},TextEncoder:d.TextEncoder,TextDecoder:d.TextDecoder,Promise:d.Promise,getRandomValues:function(E){if(E!==void 0)return function(u,C){E.getRandomValues(u),C&&C(null)}}(d.crypto||msCrypto)};r.default=y},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importStar(o(1)),d="ablyjs-storage-test",m=function(){function x(){try{i.sessionStorage.setItem(d,d),i.sessionStorage.removeItem(d),this.sessionSupported=!0}catch(R){this.sessionSupported=!1}try{i.localStorage.setItem(d,d),i.localStorage.removeItem(d),this.localSupported=!0}catch(R){this.localSupported=!1}}return x.prototype.get=function(R){return this._get(R,!1)},x.prototype.getSession=function(R){return this._get(R,!0)},x.prototype.remove=function(R){return this._remove(R,!1)},x.prototype.removeSession=function(R){return this._remove(R,!0)},x.prototype.set=function(R,y,E){return this._set(R,y,E,!1)},x.prototype.setSession=function(R,y,E){return this._set(R,y,E,!0)},x.prototype._set=function(R,y,E,u){var C={value:y};return E&&(C.expires=l.now()+E),this.storageInterface(u).setItem(R,JSON.stringify(C))},x.prototype._get=function(R,y){if(y&&!this.sessionSupported)throw new Error("Session Storage not supported");if(!y&&!this.localSupported)throw new Error("Local Storage not supported");var E=this.storageInterface(y).getItem(R);if(!E)return null;var u=JSON.parse(E);return u.expires&&u.expires<l.now()?(this.storageInterface(y).removeItem(R),null):u.value},x.prototype._remove=function(R,y){return this.storageInterface(y).removeItem(R)},x.prototype.storageInterface=function(R){return R?i.sessionStorage:i.localStorage},x}();r.default=new m}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(67)),l={connectivityCheckUrl:"https://internet-up.ably-realtime.com/is-the-internet-up.txt",jsonpInternetUpUrl:"https://internet-up.ably-realtime.com/is-the-internet-up-0-9.js",defaultTransports:[a.default.XhrPolling,a.default.XhrStreaming,a.default.JsonP,a.default.WebSocket],baseTransportOrder:[a.default.XhrPolling,a.default.XhrStreaming,a.default.JsonP,a.default.WebSocket],transportPreferenceOrder:[a.default.JsonP,a.default.XhrPolling,a.default.XhrStreaming,a.default.WebSocket],upgradeTransports:[a.default.XhrStreaming,a.default.WebSocket]};r.default=l},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a.WebSocket="web_socket",a.Comet="comet",a.XhrStreaming="xhr_streaming",a.XhrPolling="xhr_polling",a.JsonP="jsonp"})(i||(i={})),r.default=i},function(n,r,o){o.r(r);var i=o(29),a=o.n(i),l=o(1),d=o(3),m=o.n(d),x=o(12),R=o.n(x),y=o(17),E=o.n(y),u=function(p){var g="xhr_polling";function S(h,f,c){c.stream=!1,R.a.call(this,h,f,c),this.shortName=g}return l.inherits(S,R.a),S.isAvailable=function(){return m.a.Config.xhrSupported&&m.a.Config.allowComet},S.prototype.toString=function(){return"XHRPollingTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},S.prototype.createRequest=function(h,f,c,s,w){return E.a.createRequest(h,f,c,s,w,this.timeouts)},typeof p!="undefined"&&S.isAvailable()&&(p.supportedTransports[g]=S),S},C=u,P=function(p){var g="xhr_streaming";function S(h,f,c){R.a.call(this,h,f,c),this.shortName=g}return l.inherits(S,R.a),S.isAvailable=function(){return m.a.Config.xhrSupported&&m.a.Config.streamingSupported&&m.a.Config.allowComet},S.prototype.toString=function(){return"XHRStreamingTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},S.prototype.createRequest=function(h,f,c,s,w){return E.a.createRequest(h,f,c,s,w,this.timeouts)},typeof p!="undefined"&&S.isAvailable()&&(p.supportedTransports[g]=S),S},b=P;r.default=[a.a,C,b]}]).default})})(yd);var im=yd.exports;const am=me(im),Ai=(e,t,n,r,o,i)=>De(this,null,function*(){try{const a=new am.Realtime({token:e.token,clientId:e.clientId});a.connection.on("connected",()=>{i==null||i("connected")}),a.connection.on("failed",R=>{console.error("[❌ ABLY CONNECTION FAILED]",R),i==null||i("failed")}),a.connection.on("disconnected",()=>{i==null||i("disconnected")});const l=`room:${t}:${n}`,d=a.channels.get(l);d.subscribe("messages",R=>{var y;try{const E=(y=R.data)==null?void 0:y.message;if(E&&E.role==="employee"){const u={id:E.id||ut(),text:E.content||"",sender:"bot",timestamp:E.createdAt?new Date(E.createdAt):new Date,type:E.type};r(u)}}catch(E){console.error("[❌ MESSAGE PARSING ERROR]",E)}});const m=`room:${t}`;return a.channels.get(m).subscribe("message:livechat",R=>{try{const y=R.data;(y==null?void 0:y.type)==="toggleAI"&&y.conversationId===n&&(o==null||o(y.chatbotActivated))}catch(y){console.error("[❌ TOGGLE AI PARSING ERROR]",y)}}),{client:a,channel:d}}catch(a){throw console.error("[❌ ABLY INITIALIZATION ERROR]",a),a}}),sm=(e,t)=>De(this,null,function*(){try{const n=id(),r=yield fetch(`${n}?conversationId=${e}&chatbotUid=${t}`);return r.ok?yield r.json():(console.error("Failed to fetch conversation data:",r.statusText),null)}catch(n){return console.error("[❌ ABLY TOKEN FETCH ERROR]",n),null}}),wd=e=>{e&&e.close()},Ii=()=>({id:ut(),text:"Lo siento, hubo un problema con la conexión. Esta es una respuesta de demostración.",sender:"bot",timestamp:new Date().toISOString(),type:"text"}),bd=(e,t,n,r,o)=>{const i=vd(t,e),a=vd(n,e),l={id:e,senderId:o||"unknown",createdAt:new Date().toISOString(),chatbotActivated:!0,updatedAt:new Date().toISOString(),source:"IFRAME",website:typeof window!="undefined"?window.location.origin:"",messages:i};return{conversationId:e,conversation:l,chatbotUid:r.apiKey,newMessages:a,note:r.note}},xd=e=>De(this,null,function*(){try{const t=Gg(),n=yield fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});return n.ok?yield n.json():(console.error("WebChat: API request failed:",n.status,n.statusText),null)}catch(t){return console.error("WebChat: Error sending message to API:",t),null}}),Sd=e=>{if(e&&e.content){let t;return e.createdAt?t=e.createdAt.endsWith("Z")?e.createdAt:`${e.createdAt}Z`:t=new Date().toISOString(),{id:e.id||ut(),text:e.content,sender:"bot",timestamp:t,type:e.type}}return null},lm=e=>`¡Hola! Soy ${e||"tu asistente"}, ¿En qué te puedo ayudar?
|
|
146
146
|
|
|
147
147
|
Aunque no lo creas, soy una inteligencia artificial! Puedo resolver todas tus dudas 😊
|
|
148
148
|
|
|
149
|
-
También puedes pedir hablar con nuestro equipo de los sueños!`,Cd=e=>({id:ut(),text:lm(e),sender:"bot",timestamp:new Date().toISOString(),type:"text"}),kd=()=>typeof window!="undefined"&&window.innerWidth<640,um=({config:e,exposeControl:t})=>{if(!e.apiKey)return null;const[n,r]=Z.useState(()=>Ti(e)),[o,i]=Z.useState(!1),[a,l]=Z.useState(()=>kd()),[d,m]=Z.useState(""),[x,R]=Z.useState(!1),[y,E]=Z.useState(!1),[u,C]=Z.useState(!1),[P,b]=Z.useState(""),[,p]=Z.useState(null),g=Z.useRef(null),[S,h]=Z.useState(!1),[f,c]=Z.useState(!1),[s,w]=Z.useState(""),[v,k]=Z.useState(!0),[L,N]=Z.useState(!1),I=Z.useRef(!0);Z.useEffect(()=>{if(I.current){I.current=!1;return}if(typeof window!="undefined"){const ee=o?"notchatbot-webchat-open":"notchatbot-webchat-closed";window.dispatchEvent(new CustomEvent(ee,{detail:{conversationId:d}}))}},[o,d]);const[O,A]=Z.useState([e.initialMessage?{id:ut(),text:e.initialMessage,sender:"bot",timestamp:new Date().toISOString(),type:"text"}:Cd(e.title)]),T=Z.useCallback((ee,Y="bot")=>{if(A(le=>[...le,ee]),!o&&(ee.sender==="bot"||Y==="bot")&&ee.id!==s&&h(!0),typeof window!="undefined"&&(Y==="bot"||Y==="ably")){const le=Y==="bot"?"assistant":"employee";window.dispatchEvent(new CustomEvent("notchatbot-webchat-message-received",{detail:{message:ee,role:le}}))}},[o,s]);Z.useEffect(()=>{const ee=()=>{const Y=kd();l(Y)};return window.addEventListener("resize",ee),()=>window.removeEventListener("resize",ee)},[]),Z.useEffect(()=>em(()=>{r(Ti(e))}),[e]),Z.useEffect(()=>{r(Ti(e))},[e]),Z.useEffect(()=>{De(this,null,function*(){const Y=pd();m(Y);const le=yield md();b(le)})},[]),Z.useEffect(()=>{if(O.length>0){const ee=O[O.length-1];ee.sender==="bot"&&w(ee.id)}},[]);const j=Z.useCallback(ee=>{T(ee,"ably")},[T]),B=Z.useCallback(ee=>{k(ee)},[]),z=Z.useCallback(ee=>De(this,null,function*(){if(!(f||g.current))try{if(ee.tokenDetails){const Y=yield Ai(ee.tokenDetails,e.apiKey||"",d,j,B);p(Y),g.current=Y.client,c(!0)}}catch(Y){console.error("[❌ ABLY SETUP ERROR from history]",Y)}}),[f,d,j]),$=Z.useCallback(()=>De(this,null,function*(){if(!(f||g.current))try{const ee=yield sm(d,e.apiKey||"");if(ee!=null&&ee.tokenDetails){const Y=yield Ai(ee.tokenDetails,e.apiKey||"",d,j,B);p(Y),g.current=Y.client,c(!0)}}catch(ee){console.error("[❌ ABLY SETUP ERROR from endpoint]",ee)}}),[f,d,e.apiKey,j]),V=Z.useCallback(()=>De(this,null,function*(){var Y,le;const ee=o;if(i(se=>!se),!ee){h(!1);const se=O.filter(ke=>ke.sender==="bot").slice(-1)[0];se&&w(se.id)}if(!ee&&!x&&d&&gd()&&!f){E(!0);const se=yield nm(d,e.apiKey||"");if(((le=(Y=se==null?void 0:se.conversation)==null?void 0:Y.messages)==null?void 0:le.length)>0){const ke=rm(se.conversation.messages);A(ke),se.conversation.chatbotActivated!==void 0&&k(se.conversation.chatbotActivated),se.conversation.isRated!==void 0&&N(se.conversation.isRated);const ce=ke.filter(xe=>xe.sender==="bot").slice(-1)[0];ce&&w(ce.id),yield z(se)}else console.warn("WebChat: No conversation history found, showing initial message");E(!1),R(!0)}else!ee&&gd()&&!f&&(yield $())}),[o,d,x,f,e.apiKey,z,$,O]),G=Z.useCallback(()=>{i(!1)},[]),M=Z.useCallback((ee,Y)=>De(this,null,function*(){const le=new Date().toISOString(),se=[],ke=[...O];if(ee.trim()){const ce={id:ut(),text:ee,sender:"user",timestamp:le,type:"text"};se.push(ce),ke.push(ce)}if(Y&&Y.length>0){const ce=Y.map(xe=>({id:ut(),text:xe.type.startsWith("image/")?``:`[${xe.name}](${xe.url})`,sender:"user",timestamp:le,type:xe.type.startsWith("image/")?"image":"file",metaContent:xe.url}));se.push(...ce),ke.push(...ce)}A(ce=>[...ce,...se]),typeof window!="undefined"&&se.length>0&&window.dispatchEvent(new CustomEvent("notchatbot-webchat-message-sent",{detail:{messages:se}})),C(!0);try{const ce=bd(d,ke,se,{apiKey:e.apiKey||""},P),xe=yield xd(ce);if(xe){if(xe.response.tokenDetails&&!g.current){const tt=yield Ai(xe.response.tokenDetails,e.apiKey||"",d,j,B);p(tt),g.current=tt.client,c(!0)}const Wt=Sd(xe.response.message);Wt&&T(Wt,"bot")}else{setTimeout(()=>{const Wt=Ii();T(Wt,"bot"),C(!1)},1e3);return}}catch(ce){console.error("WebChat: Error in message handling:",ce),setTimeout(()=>{const xe=Ii();T(xe,"bot"),C(!1)},1e3);return}C(!1),Zg(!0)}),[d,O,e.apiKey,P,j,T]),D=tm(n);Z.useEffect(()=>()=>{wd(g.current),g.current=null},[]);const U=Z.useCallback(ee=>i(ee),[]),_=Z.useCallback(ee=>r(Y=>ae(ae({},Y),ee)),[]),W=Z.useCallback(ee=>r(Y=>ae(ae({},Y),ee)),[]),[X,q]=Z.useState(!1),re=Z.useCallback(()=>q(!0),[]),ie=Z.useCallback(()=>q(!1),[]);return Z.useEffect(()=>{t&&t({setIsOpen:U,updateConfig:_,setPosition:W,hide:re,show:ie})},[t,U,_,W,re,ie]),F.jsxs("div",{className:"nbc-font-sans",style:{zIndex:2147483647,display:X?"none":void 0},children:[D.showPopup!==!1&&F.jsx(Yg,{initialMessage:e.initialMessage,avatar:n.avatar,position:D.position,marginBottom:D.marginBottom,marginSide:D.marginSide,primaryColor:n.primaryColor||"#007bff",isMobile:a,isOpen:o,onPopoverClick:V}),F.jsx(tg,{isOpen:o,onClick:V,primaryColor:n.primaryColor,position:D.position,marginBottom:D.marginBottom,marginSide:D.marginSide,hasNewMessages:S,isMobile:a}),F.jsx(Qg,{isOpen:o,onClose:G,config:n,messages:O,onSendMessage:M,isLoading:y,isAiTyping:u,position:D.position,marginBottom:D.marginBottom,marginSide:D.marginSide,isMobile:a,apiKeyMissing:!e.apiKey,chatbotActivated:v,isRated:L,onRatingChange:N,conversationId:d})]})},Ed='*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.nbc-pointer-events-none{pointer-events:none}.nbc-pointer-events-auto{pointer-events:auto}.nbc-fixed{position:fixed}.nbc-absolute{position:absolute}.nbc-relative{position:relative}.nbc-inset-0{inset:0}.nbc-inset-auto{inset:auto}.nbc-left-2{left:8px}.nbc-right-0{right:0}.nbc-right-2{right:8px}.nbc-top-0{top:0}.nbc-top-1\\/2{top:50%}.nbc-top-2{top:8px}.nbc-top-full{top:100%}.nbc-m-0{margin:0}.nbc-mx-auto{margin-left:auto;margin-right:auto}.nbc-mb-1{margin-bottom:4px}.nbc-mb-2{margin-bottom:8px}.nbc-mb-4{margin-bottom:16px}.nbc-ml-1{margin-left:4px}.nbc-ml-2{margin-left:8px}.nbc-mr-1{margin-right:4px}.nbc-mr-3{margin-right:12px}.nbc-mt-1{margin-top:4px}.nbc-line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.nbc-flex{display:flex}.nbc-hidden{display:none}.nbc-h-0{height:0px}.nbc-h-10{height:40px}.nbc-h-12{height:48px}.nbc-h-16{height:64px}.nbc-h-2{height:8px}.nbc-h-24{height:96px}.nbc-h-3{height:12px}.nbc-h-4{height:16px}.nbc-h-5{height:20px}.nbc-h-6{height:24px}.nbc-h-7{height:28px}.nbc-h-8{height:32px}.nbc-h-auto{height:auto}.nbc-h-full{height:100%}.nbc-min-h-0{min-height:0px}.nbc-min-h-\\[220px\\]{min-height:220px}.nbc-w-0{width:0px}.nbc-w-10{width:40px}.nbc-w-12{width:48px}.nbc-w-16{width:64px}.nbc-w-2{width:8px}.nbc-w-3{width:12px}.nbc-w-4{width:16px}.nbc-w-5{width:20px}.nbc-w-6{width:24px}.nbc-w-7{width:28px}.nbc-w-8{width:32px}.nbc-w-auto{width:auto}.nbc-w-full{width:100%}.nbc-max-w-20{max-width:80px}.nbc-max-w-\\[90\\%\\]{max-width:90%}.nbc-max-w-xs{max-width:20rem}.nbc-flex-1{flex:1 1 0%}.nbc-flex-shrink-0{flex-shrink:0}.-nbc-translate-y-4{--tw-translate-y: -16px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc--translate-y-1\\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-2{--tw-translate-y: 8px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-3{--tw-translate-y: 12px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-4{--tw-translate-y: 16px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-\\[-10px\\]{--tw-translate-y: -10px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-\\[1\\.13\\]{--tw-scale-x: 1.13;--tw-scale-y: 1.13;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes nbc-bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.nbc-animate-bounce{animation:nbc-bounce 1s infinite}@keyframes nbc-ping{75%,to{transform:scale(2);opacity:0}}.nbc-animate-ping{animation:nbc-ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes nbc-pulse{50%{opacity:.5}}.nbc-animate-pulse{animation:nbc-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes nbc-spin{to{transform:rotate(360deg)}}.nbc-animate-spin{animation:nbc-spin 1s linear infinite}.nbc-cursor-pointer{cursor:pointer}.nbc-flex-col{flex-direction:column}.nbc-flex-wrap{flex-wrap:wrap}.nbc-items-start{align-items:flex-start}.nbc-items-end{align-items:flex-end}.nbc-items-center{align-items:center}.nbc-justify-start{justify-content:flex-start}.nbc-justify-end{justify-content:flex-end}.nbc-justify-center{justify-content:center}.nbc-justify-between{justify-content:space-between}.nbc-gap-2{gap:8px}.nbc-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(4px * var(--tw-space-x-reverse));margin-left:calc(4px * calc(1 - var(--tw-space-x-reverse)))}.nbc-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(12px * var(--tw-space-x-reverse));margin-left:calc(12px * calc(1 - var(--tw-space-x-reverse)))}.nbc-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(8px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(8px * var(--tw-space-y-reverse))}.nbc-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(16px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(16px * var(--tw-space-y-reverse))}.nbc-overflow-hidden{overflow:hidden}.nbc-overflow-y-auto{overflow-y:auto}.nbc-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nbc-whitespace-nowrap{white-space:nowrap}.nbc-break-words{overflow-wrap:break-word}.nbc-rounded{border-radius:4px}.nbc-rounded-2xl{border-radius:16px}.nbc-rounded-full{border-radius:9999px}.nbc-rounded-lg{border-radius:8px}.nbc-rounded-none{border-radius:0}.nbc-rounded-bl-md{border-bottom-left-radius:6px}.nbc-rounded-br-md{border-bottom-right-radius:6px}.nbc-border{border-width:1px}.nbc-border-0{border-width:0px}.nbc-border-2{border-width:2px}.nbc-border-b{border-bottom-width:1px}.nbc-border-t{border-top-width:1px}.nbc-border-none{border-style:none}.nbc-border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.nbc-border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.nbc-border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.nbc-border-t-gray-600{--tw-border-opacity: 1;border-top-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.nbc-bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.nbc-bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.nbc-bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.nbc-bg-transparent{background-color:transparent}.nbc-bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.nbc-bg-none{background-image:none}.nbc-object-cover{-o-object-fit:cover;object-fit:cover}.nbc-p-0{padding:0}.nbc-p-1{padding:4px}.nbc-p-2{padding:8px}.nbc-p-4{padding:16px}.nbc-p-5{padding:20px}.nbc-px-2{padding-left:8px;padding-right:8px}.nbc-px-4{padding-left:16px;padding-right:16px}.nbc-py-1{padding-top:4px;padding-bottom:4px}.nbc-py-2{padding-top:8px;padding-bottom:8px}.nbc-py-3{padding-top:12px;padding-bottom:12px}.nbc-pl-12{padding-left:48px}.nbc-pr-12{padding-right:48px}.nbc-pt-4{padding-top:16px}.nbc-text-center{text-align:center}.nbc-text-right{text-align:right}.nbc-font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.nbc-text-\\[15px\\]{font-size:15px}.nbc-text-lg{font-size:18px}.nbc-text-sm{font-size:14px}.nbc-text-xs{font-size:12px}.nbc-font-bold{font-weight:700}.nbc-font-medium{font-weight:500}.nbc-italic{font-style:italic}.nbc-leading-none{line-height:1}.nbc-leading-relaxed{line-height:1.625}.nbc-text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.nbc-text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.nbc-text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.nbc-text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.nbc-text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.nbc-text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.nbc-text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.nbc-text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.nbc-text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.nbc-text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.nbc-no-underline{text-decoration-line:none}.nbc-opacity-0{opacity:0}.nbc-opacity-100{opacity:1}.nbc-opacity-50{opacity:.5}.nbc-opacity-70{opacity:.7}.nbc-opacity-75{opacity:.75}.nbc-shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-outline-none{outline:2px solid transparent;outline-offset:2px}.nbc-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-duration-200{transition-duration:.2s}.nbc-duration-300{transition-duration:.3s}.nbc-duration-500{transition-duration:.5s}.nbc-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.hover\\:nbc-scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:nbc-scale-\\[1\\.02\\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:nbc-bg-black:hover{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.hover\\:nbc-bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\\:nbc-bg-opacity-20:hover{--tw-bg-opacity: .2}.hover\\:nbc-text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\\:nbc-text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.disabled\\:nbc-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:nbc-opacity-50:disabled{opacity:.5}',cm={apiKey:"",primaryColor:"#111111",avatar:"",title:"NotChatBot",placeholder:"Escribe tu mensaje...",initialMessage:"¡Hola! ¿En qué puedo ayudarte?",position:"bottom-right",marginBottom:20,marginSide:20,showPopup:!0,mobile:{position:"bottom-right",marginBottom:15,marginSide:15,showPopup:!0},desktop:{position:"bottom-right",marginBottom:25,marginSide:25,showPopup:!0},closeButtonIcon:"default",closeButtonText:"Cerrar",closeButtonCustomIcon:""},fm=({title:e,primaryColor:t="#3b82f6",avatar:n})=>{const r={backgroundColor:t};return F.jsxs("div",{id:"notchatbot-embed-chat-header",style:r,className:"nbc-flex nbc-items-center nbc-p-4",children:[F.jsx("div",{className:"nbc-flex nbc-items-center nbc-mr-3 nbc-text-black",children:n?F.jsx("img",{src:n,alt:"Avatar",className:"nbc-w-8 nbc-h-8 nbc-rounded-full nbc-object-cover"}):F.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"nbc-w-8 nbc-h-8 nbc-bg-white nbc-rounded-full nbc-p-1",children:[F.jsx("path",{d:"M12 6V2H8"}),F.jsx("path",{d:"m8 18-4 4V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2Z"}),F.jsx("path",{d:"M2 12h2"}),F.jsx("path",{d:"M9 11v2"}),F.jsx("path",{d:"M15 11v2"}),F.jsx("path",{d:"M20 12h2"})]})}),F.jsx("h3",{className:"nbc-m-0 nbc-text-lg nbc-font-bold nbc-text-white",children:e})]})},dm=({footerText:e,primaryColor:t,footerColor:n})=>{if(!e)return null;const r=o=>{const i=/(https?:\/\/[^\s]+)/g;return o.split(i).map((l,d)=>i.test(l)?F.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"nbc-font-medium nbc-no-underline",style:{color:t},children:l},d):l)};return F.jsx("div",{id:"notchatbot-embed-chat-footer",className:"nbc-py-3 nbc-px-4 nbc-bg-gray-50 nbc-text-xs nbc-text-gray-600 nbc-text-center nbc-leading-relaxed nbc-italic",style:{backgroundColor:n},children:r(e)})},hm=({config:e,messages:t,onSendMessage:n,isLoading:r,isAiTyping:o,chatbotActivated:i=!0})=>{var d;const a=(m,x="auto")=>m===void 0?x:typeof m=="number"?`${m}px`:m,l={width:a(e.width,"100%"),height:a(e.height,"400px"),maxWidth:a(e.maxWidth,"100%"),maxHeight:a(e.maxHeight,"100vh"),minWidth:a(e.minWidth,"280px"),minHeight:a(e.minHeight,"300px"),display:"flex",flexDirection:"column",backgroundColor:e.chatTransparent?"transparent":e.chatBackground||"#ffffff",borderRadius:a(e.borderRadius,"0px"),border:e.border||"1px solid #e5e7eb",boxShadow:e.boxShadow||"0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",overflow:"hidden",position:"relative"};return F.jsxs("div",{id:"notchatbot-embed-chat",className:"nbc-font-sans",style:l,children:[e.showHeader!==!1&&F.jsx(fm,{title:e.title||"Chat",primaryColor:e.primaryColor,avatar:e.avatar}),F.jsxs("div",{id:"notchatbot-embed-chat-body",className:"nbc-flex-1 nbc-flex nbc-flex-col nbc-min-h-0",style:{position:"relative",overflow:"hidden"},children:[r?F.jsx("div",{className:"nbc-flex-1 nbc-p-4",children:F.jsx(ld,{})}):F.jsx(od,{messages:t,isTyping:o||!1,avatar:e.avatar,textColor:e.textColor,bubbleUserColor:e.bubbleUserColor,chatbotActivated:i}),F.jsx("div",{id:"notchatbot-embed-chat-body-input",className:"nbc-py-2 nbc-bg-gray-50 nbc-border-none",style:{backgroundColor:(d=e.input)==null?void 0:d.backgroundColor},children:F.jsx(sd,{onSendMessage:n,placeholder:e.placeholder||"Escribe un mensaje...",primaryColor:e.primaryColor,disabled:r,input:e.input,apiKey:e.apiKey})})]}),e.showFooter!==!1&&e.footerText&&F.jsx(dm,{footerText:e.footerText,primaryColor:e.primaryColor,footerColor:e.footerColor})]})},pm=({config:e})=>{if(!e.apiKey)return null;const[t,n]=Z.useState(""),[r,o]=Z.useState(!1),[i,a]=Z.useState(""),[,l]=Z.useState(null),d=Z.useRef(null),[,m]=Z.useState(!1),[x,R]=Z.useState(!0),[y,E]=Z.useState([e.initialMessage?{id:ut(),text:e.initialMessage,sender:"bot",timestamp:new Date().toISOString(),type:"text"}:Cd(e.title)]),u=Z.useCallback(p=>{E(g=>[...g,p])},[]);Z.useEffect(()=>{De(this,null,function*(){const g=yield md();a(g)})},[]);const C=Z.useCallback(p=>{u(p),typeof window!="undefined"&&window.dispatchEvent(new CustomEvent("notchatbot-embedchat-message-received",{detail:{message:p,role:"employee"}}))},[u]),P=Z.useCallback(p=>{R(p)},[]),b=Z.useCallback((p,g)=>De(this,null,function*(){if(!p.trim()&&(!g||g.length===0))return;let S=t;S||(S=ut(),n(S));const h=new Date().toISOString(),f=[...y],c=[];if(p.trim()){const s={id:ut(),text:p,sender:"user",timestamp:h,conversationId:S,type:"text"};u(s),typeof window!="undefined"&&window.dispatchEvent(new CustomEvent("notchatbot-embedchat-message-sent",{detail:{message:s}})),f.push(s),c.push(s)}if(g&&g.length>0){const s=g.map(w=>({id:ut(),text:w.type.startsWith("image/")?``:`[${w.name}](${w.url})`,sender:"user",timestamp:h,conversationId:S,type:w.type.startsWith("image/")?"image":"file",metaContent:w.url}));s.forEach(w=>{u(w),typeof window!="undefined"&&window.dispatchEvent(new CustomEvent("notchatbot-embedchat-message-sent",{detail:{message:w}})),c.push(w)}),f.push(...s)}o(!0);try{const s=bd(S,f,c,{apiKey:e.apiKey||""},i),w=yield xd(s);if(w){if(w.response.tokenDetails&&!d.current){const k=yield Ai(w.response.tokenDetails,e.apiKey||"",S,C,P);l(k),d.current=k.client,m(!0)}const v=Sd(w.response.message);v&&(u(v),typeof window!="undefined"&&window.dispatchEvent(new CustomEvent("notchatbot-embedchat-message-received",{detail:{message:v,role:"assistant"}})))}else{setTimeout(()=>{const v=Ii();u(v),o(!1)},1e3);return}o(!1)}catch(s){console.error("EmbedChat: Error sending message:",s),setTimeout(()=>{const w=Ii();u(w),o(!1)},1e3);return}}),[t,i,e.apiKey,u,C,y]);return Z.useEffect(()=>()=>{d.current&&wd(d.current)},[]),F.jsx(hm,{config:e,messages:y,onSendMessage:b,isLoading:!1,isAiTyping:r,chatbotActivated:x})};(()=>{if(typeof document=="undefined")return;const e={},t=document.dispatchEvent.bind(document);document.dispatchEvent=r=>{const o=r==null?void 0:r.type;return(o==="WebChatReady"||o==="EmbedChatReady")&&(e[o]=!0),t(r)};const n=document.addEventListener.bind(document);document.addEventListener=(r,o,i)=>{const a=r;if((a==="WebChatReady"||a==="EmbedChatReady")&&e[a]){const l=new CustomEvent(a);setTimeout(()=>{typeof o=="function"?o.call(document,l):o&&typeof o.handleEvent=="function"&&o.handleEvent(l)},0)}return n(r,o,i)}})();let or=null;const qr={},Pi={};let ct=null,Ne=null,ul=!1,eo={};const cl={},Rd=e=>{try{if(!e.elementId)return console.error("EmbedChat: elementId is required"),null;const t=document.getElementById(e.elementId);if(!t)return null;let n;t.shadowRoot?(n=t.shadowRoot,n.innerHTML=""):n=t.attachShadow({mode:"open"});const r=document.createElement("style");if(r.textContent=Ed,n.appendChild(r),e.customCSS){const a=document.createElement("style");a.setAttribute("data-custom","true"),a.textContent=e.customCSS,n.appendChild(a)}const o=document.createElement("div");n.appendChild(o);const i=Ys(o);return i.render(Hi.createElement(pm,{config:e})),Pi[e.elementId]={destroy:()=>{i.unmount(),n.innerHTML="",delete Pi[e.elementId],cl[e.elementId]=e}},cl[e.elementId]=e,Pi[e.elementId]}catch(t){return console.error("EmbedChat: Failed to initialize",t),null}};function Gt(){let e=qr["webchat-notchatbot"];if(!e){const n=ae(ae({},Ne),eo);let r="webchat-notchatbot";typeof(Ne==null?void 0:Ne.elementId)=="string"&&Ne.elementId&&(r=Ne.elementId);const t=n,{elementId:o}=t,i=vl(t,["elementId"]);"elementId"in i&&delete i.elementId;const a=Object.assign({elementId:r},i);e=Od(a),ul&&e&&e.setIsOpen&&e.setIsOpen(!0);const l=new CustomEvent("WebChatReady");document.dispatchEvent(l)}return e}const Od=e=>{try{let t=function(u){return Hi.createElement(um,We(ae({},u),{exposeControl:C=>{l=C.setIsOpen,d=C.updateConfig,m=C.setPosition,x=C.hide,R=C.show,y=C.getIsOpen}}))};or&&(or.destroy(),or=null);const n=ae(ae({elementId:"webchat-notchatbot"},cm),e);Ne=n;let r=document.getElementById(n.elementId);r||(r=document.createElement("div"),r.id=n.elementId,document.body.appendChild(r));let o;r.shadowRoot?(o=r.shadowRoot,o.innerHTML=""):o=r.attachShadow({mode:"open"}),ct=o;const i=document.createElement("style");i.textContent=Ed,o.appendChild(i);const a=document.createElement("div");o.appendChild(a);let l=null,d=null,m=null,x=null,R=null,y=null;const E=Ys(a);return E.render(Hi.createElement(t,{config:n})),qr[n.elementId]={root:E,destroy:()=>{E.unmount(),or=null,ct&&(ct.innerHTML=""),delete qr[n.elementId]},getConversationId:()=>pd(),setIsOpen:u=>{ul=u,l&&l(u)},updateConfig:u=>{Ne=dl(ae(ae({},Ne),u)),d&&d(u)},setPosition:u=>{eo=to(eo,u),Ne=dl(to(Ne||{},u)),m&&m(u),d&&d(u)},hide:()=>x&&x(),show:()=>R&&R(),injectCSS:u=>{if(!ct)return;let C=ct.querySelector("style[data-custom]");C&&C.remove(),C=document.createElement("style"),C.setAttribute("data-custom","true"),C.textContent=u,ct.appendChild(C)},removeCustomCSS:()=>{if(!ct)return;const u=ct.querySelector("style[data-custom]");u&&u.remove()},getIsOpen:()=>y?y():ul},or=qr[n.elementId],or}catch(t){return console.error("WebChat: Failed to initialize",t),null}},Td={initialize:Od},Ad={initialize:Rd};typeof window!="undefined"&&(window.WebChat=Td,window.EmbedChat=Ad,window.openWebChat=()=>{const e=Gt();e&&e.setIsOpen(!0)},window.closeWebChat=()=>{const e=Gt();e&&e.setIsOpen(!1)},window.toggleWebChat=()=>{const e=Gt();e&&e.setIsOpen&&e.getIsOpen&&e.setIsOpen(!e.getIsOpen())},window.unmountWebChat=()=>{const e=qr["webchat-notchatbot"];e&&e.destroy()},window.mountWebChat=()=>{Gt()},window.setWebChatPosition=e=>{const t=Gt();if(!t||!t.setPosition)return;let n={};if(e.mobile||e.desktop)n=to({},e);else if(e.device==="mobile"||e.device==="desktop"){const r=e.device;n[r]=ae(ae({},Ne&&typeof Ne[r]=="object"?Ne[r]:{}),e),n[r]&&typeof n[r]=="object"&&"device"in n[r]&&delete n[r].device}else n=ae({},e);Ne=dl(to(Ne||{},n)),eo=to(eo,n),t.setPosition(n)},window.hideWebChat=()=>{const e=Gt();e&&e.hide&&e.hide()},window.showWebChat=()=>{const e=Gt();e&&e.show&&e.show()},window.injectWebChatCSS=e=>{if(Gt(),ct){let t=ct.querySelector("style[data-custom]");t&&t.remove(),t=document.createElement("style"),t.setAttribute("data-custom","true"),t.textContent=e,ct.appendChild(t)}},window.removeWebChatCSS=()=>{if(Gt(),ct){const e=ct.querySelector("style[data-custom]");e&&e.remove()}},window.unmountEmbedChat=e=>{const t=Pi[e];t&&t.destroy()},window.mountEmbedChat=e=>{const t=cl[e];t?Rd(t):console.warn(`No config found for EmbedChat with elementId: ${e}`)},window.addEventListener("openWebChatbot",()=>window.openWebChat()),window.addEventListener("closeWebChatbot",()=>window.closeWebChat()),window.addEventListener("toggleWebChatbot",()=>window.toggleWebChat()),window.addEventListener("addCustomPadding",e=>{if(e&&e.detail){let t={};if(typeof e.detail=="object")if(e.detail.mobile||e.detail.desktop)t=ae({},e.detail);else if(e.detail.device==="mobile"||e.detail.device==="desktop"){const n=e.detail.device;t[n]=ae(ae({},Ne&&typeof Ne[n]=="object"?Ne[n]:{}),e.detail),t[n]&&typeof t[n]=="object"&&"device"in t[n]&&delete t[n].device}else("y"in e.detail||"marginBottom"in e.detail)&&(t={},"y"in e.detail&&(t.marginBottom=parseInt(e.detail.y,10)),"x"in e.detail&&(t.marginSide=parseInt(e.detail.x,10)),"marginBottom"in e.detail&&(t.marginBottom=parseInt(e.detail.marginBottom,10)),"marginSide"in e.detail&&(t.marginSide=parseInt(e.detail.marginSide,10)));window.setWebChatPosition(t)}}),setTimeout(()=>{const e=new CustomEvent("WebChatReady",{bubbles:!0});document.dispatchEvent(e)},0),setTimeout(()=>{const e=new CustomEvent("EmbedChatReady",{bubbles:!0});document.dispatchEvent(e)},0));const gm=()=>{const e=new CustomEvent("WebChatReady",{bubbles:!0});document.dispatchEvent(e)},Id=()=>{const e=new CustomEvent("EmbedChatReady",{bubbles:!0});document.dispatchEvent(e)},Pd=()=>{gm(),Id()},fl=()=>{requestAnimationFrame(()=>{setTimeout(()=>{Id()},0)})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Pd):setTimeout(Pd,0),function(e){const t=e.pushState,n=e.replaceState;e.pushState=function(...r){const o=t.apply(e,r);return window.dispatchEvent(new Event("routechange")),o},e.replaceState=function(...r){const o=n.apply(e,r);return window.dispatchEvent(new Event("routechange")),o}}(window.history),window.addEventListener("popstate",fl),window.addEventListener("hashchange",fl),window.addEventListener("routechange",fl);function to(e,t){if(!t)return e;const n=ae({},e);for(const r of Object.keys(t))r==="mobile"||r==="desktop"?n[r]=ae(ae({},e[r]||{}),t[r]):n[r]=t[r];return n}function dl(e){const t=typeof e.elementId=="string"&&e.elementId?e.elementId:"webchat-notchatbot",o=e,{elementId:n}=o,r=vl(o,["elementId"]);return ae({elementId:t},r)}pe.EmbedChatAPI=Ad,pe.WebChat=Td,Object.defineProperty(pe,Symbol.toStringTag,{value:"Module"})});
|
|
149
|
+
También puedes pedir hablar con nuestro equipo de los sueños!`,Cd=e=>({id:ut(),text:lm(e),sender:"bot",timestamp:new Date().toISOString(),type:"text"}),kd=()=>typeof window!="undefined"&&window.innerWidth<640,um=({config:e,exposeControl:t})=>{if(!e.apiKey)return null;const[n,r]=Z.useState(()=>Ti(e)),[o,i]=Z.useState(!1),[a,l]=Z.useState(()=>kd()),[d,m]=Z.useState(""),[x,R]=Z.useState(!1),[y,E]=Z.useState(!1),[u,C]=Z.useState(!1),[P,b]=Z.useState(""),[,p]=Z.useState(null),g=Z.useRef(null),[S,h]=Z.useState(!1),[f,c]=Z.useState(!1),[s,w]=Z.useState(""),[v,k]=Z.useState(!0),[L,N]=Z.useState(!1),I=Z.useRef(!0);Z.useEffect(()=>{if(I.current){I.current=!1;return}if(typeof window!="undefined"){const ee=o?"notchatbot-webchat-open":"notchatbot-webchat-closed";window.dispatchEvent(new CustomEvent(ee,{detail:{conversationId:d}}))}},[o,d]);const[O,A]=Z.useState([e.initialMessage?{id:ut(),text:e.initialMessage,sender:"bot",timestamp:new Date().toISOString(),type:"text"}:Cd(e.title)]),T=Z.useCallback((ee,Y="bot")=>{if(A(le=>[...le,ee]),!o&&(ee.sender==="bot"||Y==="bot")&&ee.id!==s&&h(!0),typeof window!="undefined"&&(Y==="bot"||Y==="ably")){const le=Y==="bot"?"assistant":"employee";window.dispatchEvent(new CustomEvent("notchatbot-webchat-message-received",{detail:{message:ee,role:le}}))}},[o,s]);Z.useEffect(()=>{const ee=()=>{const Y=kd();l(Y)};return window.addEventListener("resize",ee),()=>window.removeEventListener("resize",ee)},[]),Z.useEffect(()=>em(()=>{r(Ti(e))}),[e]),Z.useEffect(()=>{r(Ti(e))},[e]),Z.useEffect(()=>{De(this,null,function*(){const Y=pd();m(Y);const le=yield md();b(le)})},[]),Z.useEffect(()=>{if(O.length>0){const ee=O[O.length-1];ee.sender==="bot"&&w(ee.id)}},[]);const j=Z.useCallback(ee=>{T(ee,"ably")},[T]),B=Z.useCallback(ee=>{k(ee)},[]),z=Z.useCallback(ee=>De(this,null,function*(){if(!(f||g.current))try{if(ee.tokenDetails){const Y=yield Ai(ee.tokenDetails,e.apiKey||"",d,j,B);p(Y),g.current=Y.client,c(!0)}}catch(Y){console.error("[❌ ABLY SETUP ERROR from history]",Y)}}),[f,d,j]),$=Z.useCallback(()=>De(this,null,function*(){if(!(f||g.current))try{const ee=yield sm(d,e.apiKey||"");if(ee!=null&&ee.tokenDetails){const Y=yield Ai(ee.tokenDetails,e.apiKey||"",d,j,B);p(Y),g.current=Y.client,c(!0)}}catch(ee){console.error("[❌ ABLY SETUP ERROR from endpoint]",ee)}}),[f,d,e.apiKey,j]),V=Z.useCallback(()=>De(this,null,function*(){var Y,le;const ee=o;if(i(se=>!se),!ee){h(!1);const se=O.filter(ke=>ke.sender==="bot").slice(-1)[0];se&&w(se.id)}if(!ee&&!x&&d&&gd()&&!f){E(!0);const se=yield nm(d,e.apiKey||"");if(((le=(Y=se==null?void 0:se.conversation)==null?void 0:Y.messages)==null?void 0:le.length)>0){const ke=rm(se.conversation.messages);A(ke),se.conversation.chatbotActivated!==void 0&&k(se.conversation.chatbotActivated),se.conversation.isRated!==void 0&&N(se.conversation.isRated);const ce=ke.filter(xe=>xe.sender==="bot").slice(-1)[0];ce&&w(ce.id),yield z(se)}else console.warn("WebChat: No conversation history found, showing initial message");E(!1),R(!0)}else!ee&&gd()&&!f&&(yield $())}),[o,d,x,f,e.apiKey,z,$,O]),G=Z.useCallback(()=>{i(!1)},[]),M=Z.useCallback((ee,Y)=>De(this,null,function*(){const le=new Date().toISOString(),se=[],ke=[...O];if(ee.trim()){const ce={id:ut(),text:ee,sender:"user",timestamp:le,type:"text"};se.push(ce),ke.push(ce)}if(Y&&Y.length>0){const ce=Y.map(xe=>({id:ut(),text:xe.type.startsWith("image/")?``:`[${xe.name}](${xe.url})`,sender:"user",timestamp:le,type:xe.type.startsWith("image/")?"image":"file",metaContent:xe.url}));se.push(...ce),ke.push(...ce)}A(ce=>[...ce,...se]),typeof window!="undefined"&&se.length>0&&window.dispatchEvent(new CustomEvent("notchatbot-webchat-message-sent",{detail:{messages:se}})),C(!0);try{const ce=bd(d,ke,se,{apiKey:e.apiKey||"",note:e.note},P),xe=yield xd(ce);if(xe){if(xe.response.tokenDetails&&!g.current){const tt=yield Ai(xe.response.tokenDetails,e.apiKey||"",d,j,B);p(tt),g.current=tt.client,c(!0)}const Wt=Sd(xe.response.message);Wt&&T(Wt,"bot")}else{setTimeout(()=>{const Wt=Ii();T(Wt,"bot"),C(!1)},1e3);return}}catch(ce){console.error("WebChat: Error in message handling:",ce),setTimeout(()=>{const xe=Ii();T(xe,"bot"),C(!1)},1e3);return}C(!1),Zg(!0)}),[d,O,e.apiKey,P,j,T]),D=tm(n);Z.useEffect(()=>()=>{wd(g.current),g.current=null},[]);const U=Z.useCallback(ee=>i(ee),[]),_=Z.useCallback(ee=>r(Y=>ae(ae({},Y),ee)),[]),W=Z.useCallback(ee=>r(Y=>ae(ae({},Y),ee)),[]),[X,q]=Z.useState(!1),re=Z.useCallback(()=>q(!0),[]),ie=Z.useCallback(()=>q(!1),[]);return Z.useEffect(()=>{t&&t({setIsOpen:U,updateConfig:_,setPosition:W,hide:re,show:ie})},[t,U,_,W,re,ie]),F.jsxs("div",{className:"nbc-font-sans",style:{zIndex:2147483647,display:X?"none":void 0},children:[D.showPopup!==!1&&F.jsx(Yg,{initialMessage:e.initialMessage,avatar:n.avatar,position:D.position,marginBottom:D.marginBottom,marginSide:D.marginSide,primaryColor:n.primaryColor||"#007bff",isMobile:a,isOpen:o,onPopoverClick:V}),F.jsx(tg,{isOpen:o,onClick:V,primaryColor:n.primaryColor,position:D.position,marginBottom:D.marginBottom,marginSide:D.marginSide,hasNewMessages:S,isMobile:a}),F.jsx(Qg,{isOpen:o,onClose:G,config:n,messages:O,onSendMessage:M,isLoading:y,isAiTyping:u,position:D.position,marginBottom:D.marginBottom,marginSide:D.marginSide,isMobile:a,apiKeyMissing:!e.apiKey,chatbotActivated:v,isRated:L,onRatingChange:N,conversationId:d})]})},Ed='*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.nbc-pointer-events-none{pointer-events:none}.nbc-pointer-events-auto{pointer-events:auto}.nbc-fixed{position:fixed}.nbc-absolute{position:absolute}.nbc-relative{position:relative}.nbc-inset-0{inset:0}.nbc-inset-auto{inset:auto}.nbc-left-2{left:8px}.nbc-right-0{right:0}.nbc-right-2{right:8px}.nbc-top-0{top:0}.nbc-top-1\\/2{top:50%}.nbc-top-2{top:8px}.nbc-top-full{top:100%}.nbc-m-0{margin:0}.nbc-mx-auto{margin-left:auto;margin-right:auto}.nbc-mb-1{margin-bottom:4px}.nbc-mb-2{margin-bottom:8px}.nbc-mb-4{margin-bottom:16px}.nbc-ml-1{margin-left:4px}.nbc-ml-2{margin-left:8px}.nbc-mr-1{margin-right:4px}.nbc-mr-3{margin-right:12px}.nbc-mt-1{margin-top:4px}.nbc-line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.nbc-flex{display:flex}.nbc-hidden{display:none}.nbc-h-0{height:0px}.nbc-h-10{height:40px}.nbc-h-12{height:48px}.nbc-h-16{height:64px}.nbc-h-2{height:8px}.nbc-h-24{height:96px}.nbc-h-3{height:12px}.nbc-h-4{height:16px}.nbc-h-5{height:20px}.nbc-h-6{height:24px}.nbc-h-7{height:28px}.nbc-h-8{height:32px}.nbc-h-auto{height:auto}.nbc-h-full{height:100%}.nbc-min-h-0{min-height:0px}.nbc-min-h-\\[220px\\]{min-height:220px}.nbc-w-0{width:0px}.nbc-w-10{width:40px}.nbc-w-12{width:48px}.nbc-w-16{width:64px}.nbc-w-2{width:8px}.nbc-w-3{width:12px}.nbc-w-4{width:16px}.nbc-w-5{width:20px}.nbc-w-6{width:24px}.nbc-w-7{width:28px}.nbc-w-8{width:32px}.nbc-w-auto{width:auto}.nbc-w-full{width:100%}.nbc-max-w-20{max-width:80px}.nbc-max-w-\\[90\\%\\]{max-width:90%}.nbc-max-w-xs{max-width:20rem}.nbc-flex-1{flex:1 1 0%}.nbc-flex-shrink-0{flex-shrink:0}.-nbc-translate-y-4{--tw-translate-y: -16px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc--translate-y-1\\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-2{--tw-translate-y: 8px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-3{--tw-translate-y: 12px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-4{--tw-translate-y: 16px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-\\[-10px\\]{--tw-translate-y: -10px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-\\[1\\.13\\]{--tw-scale-x: 1.13;--tw-scale-y: 1.13;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes nbc-bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.nbc-animate-bounce{animation:nbc-bounce 1s infinite}@keyframes nbc-ping{75%,to{transform:scale(2);opacity:0}}.nbc-animate-ping{animation:nbc-ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes nbc-pulse{50%{opacity:.5}}.nbc-animate-pulse{animation:nbc-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes nbc-spin{to{transform:rotate(360deg)}}.nbc-animate-spin{animation:nbc-spin 1s linear infinite}.nbc-cursor-pointer{cursor:pointer}.nbc-flex-col{flex-direction:column}.nbc-flex-wrap{flex-wrap:wrap}.nbc-items-start{align-items:flex-start}.nbc-items-end{align-items:flex-end}.nbc-items-center{align-items:center}.nbc-justify-start{justify-content:flex-start}.nbc-justify-end{justify-content:flex-end}.nbc-justify-center{justify-content:center}.nbc-justify-between{justify-content:space-between}.nbc-gap-2{gap:8px}.nbc-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(4px * var(--tw-space-x-reverse));margin-left:calc(4px * calc(1 - var(--tw-space-x-reverse)))}.nbc-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(12px * var(--tw-space-x-reverse));margin-left:calc(12px * calc(1 - var(--tw-space-x-reverse)))}.nbc-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(8px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(8px * var(--tw-space-y-reverse))}.nbc-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(16px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(16px * var(--tw-space-y-reverse))}.nbc-overflow-hidden{overflow:hidden}.nbc-overflow-y-auto{overflow-y:auto}.nbc-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nbc-whitespace-nowrap{white-space:nowrap}.nbc-break-words{overflow-wrap:break-word}.nbc-rounded{border-radius:4px}.nbc-rounded-2xl{border-radius:16px}.nbc-rounded-full{border-radius:9999px}.nbc-rounded-lg{border-radius:8px}.nbc-rounded-none{border-radius:0}.nbc-rounded-bl-md{border-bottom-left-radius:6px}.nbc-rounded-br-md{border-bottom-right-radius:6px}.nbc-border{border-width:1px}.nbc-border-0{border-width:0px}.nbc-border-2{border-width:2px}.nbc-border-b{border-bottom-width:1px}.nbc-border-t{border-top-width:1px}.nbc-border-none{border-style:none}.nbc-border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.nbc-border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.nbc-border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.nbc-border-t-gray-600{--tw-border-opacity: 1;border-top-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.nbc-bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.nbc-bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.nbc-bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.nbc-bg-transparent{background-color:transparent}.nbc-bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.nbc-bg-none{background-image:none}.nbc-object-cover{-o-object-fit:cover;object-fit:cover}.nbc-p-0{padding:0}.nbc-p-1{padding:4px}.nbc-p-2{padding:8px}.nbc-p-4{padding:16px}.nbc-p-5{padding:20px}.nbc-px-2{padding-left:8px;padding-right:8px}.nbc-px-4{padding-left:16px;padding-right:16px}.nbc-py-1{padding-top:4px;padding-bottom:4px}.nbc-py-2{padding-top:8px;padding-bottom:8px}.nbc-py-3{padding-top:12px;padding-bottom:12px}.nbc-pl-12{padding-left:48px}.nbc-pr-12{padding-right:48px}.nbc-pt-4{padding-top:16px}.nbc-text-center{text-align:center}.nbc-text-right{text-align:right}.nbc-font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.nbc-text-\\[15px\\]{font-size:15px}.nbc-text-lg{font-size:18px}.nbc-text-sm{font-size:14px}.nbc-text-xs{font-size:12px}.nbc-font-bold{font-weight:700}.nbc-font-medium{font-weight:500}.nbc-italic{font-style:italic}.nbc-leading-none{line-height:1}.nbc-leading-relaxed{line-height:1.625}.nbc-text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.nbc-text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.nbc-text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.nbc-text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.nbc-text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.nbc-text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.nbc-text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.nbc-text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.nbc-text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.nbc-text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.nbc-no-underline{text-decoration-line:none}.nbc-opacity-0{opacity:0}.nbc-opacity-100{opacity:1}.nbc-opacity-50{opacity:.5}.nbc-opacity-70{opacity:.7}.nbc-opacity-75{opacity:.75}.nbc-shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-outline-none{outline:2px solid transparent;outline-offset:2px}.nbc-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-duration-200{transition-duration:.2s}.nbc-duration-300{transition-duration:.3s}.nbc-duration-500{transition-duration:.5s}.nbc-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.hover\\:nbc-scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:nbc-scale-\\[1\\.02\\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:nbc-bg-black:hover{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.hover\\:nbc-bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\\:nbc-bg-opacity-20:hover{--tw-bg-opacity: .2}.hover\\:nbc-text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\\:nbc-text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.disabled\\:nbc-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:nbc-opacity-50:disabled{opacity:.5}',cm={apiKey:"",primaryColor:"#111111",avatar:"",title:"NotChatBot",placeholder:"Escribe tu mensaje...",initialMessage:"¡Hola! ¿En qué puedo ayudarte?",position:"bottom-right",marginBottom:20,marginSide:20,showPopup:!0,mobile:{position:"bottom-right",marginBottom:15,marginSide:15,showPopup:!0},desktop:{position:"bottom-right",marginBottom:25,marginSide:25,showPopup:!0},closeButtonIcon:"default",closeButtonText:"Cerrar",closeButtonCustomIcon:""},fm=({title:e,primaryColor:t="#3b82f6",avatar:n})=>{const r={backgroundColor:t};return F.jsxs("div",{id:"notchatbot-embed-chat-header",style:r,className:"nbc-flex nbc-items-center nbc-p-4",children:[F.jsx("div",{className:"nbc-flex nbc-items-center nbc-mr-3 nbc-text-black",children:n?F.jsx("img",{src:n,alt:"Avatar",className:"nbc-w-8 nbc-h-8 nbc-rounded-full nbc-object-cover"}):F.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"nbc-w-8 nbc-h-8 nbc-bg-white nbc-rounded-full nbc-p-1",children:[F.jsx("path",{d:"M12 6V2H8"}),F.jsx("path",{d:"m8 18-4 4V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2Z"}),F.jsx("path",{d:"M2 12h2"}),F.jsx("path",{d:"M9 11v2"}),F.jsx("path",{d:"M15 11v2"}),F.jsx("path",{d:"M20 12h2"})]})}),F.jsx("h3",{className:"nbc-m-0 nbc-text-lg nbc-font-bold nbc-text-white",children:e})]})},dm=({footerText:e,primaryColor:t,footerColor:n})=>{if(!e)return null;const r=o=>{const i=/(https?:\/\/[^\s]+)/g;return o.split(i).map((l,d)=>i.test(l)?F.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"nbc-font-medium nbc-no-underline",style:{color:t},children:l},d):l)};return F.jsx("div",{id:"notchatbot-embed-chat-footer",className:"nbc-py-3 nbc-px-4 nbc-bg-gray-50 nbc-text-xs nbc-text-gray-600 nbc-text-center nbc-leading-relaxed nbc-italic",style:{backgroundColor:n},children:r(e)})},hm=({config:e,messages:t,onSendMessage:n,isLoading:r,isAiTyping:o,chatbotActivated:i=!0})=>{var d;const a=(m,x="auto")=>m===void 0?x:typeof m=="number"?`${m}px`:m,l={width:a(e.width,"100%"),height:a(e.height,"400px"),maxWidth:a(e.maxWidth,"100%"),maxHeight:a(e.maxHeight,"100vh"),minWidth:a(e.minWidth,"280px"),minHeight:a(e.minHeight,"300px"),display:"flex",flexDirection:"column",backgroundColor:e.chatTransparent?"transparent":e.chatBackground||"#ffffff",borderRadius:a(e.borderRadius,"0px"),border:e.border||"1px solid #e5e7eb",boxShadow:e.boxShadow||"0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",overflow:"hidden",position:"relative"};return F.jsxs("div",{id:"notchatbot-embed-chat",className:"nbc-font-sans",style:l,children:[e.showHeader!==!1&&F.jsx(fm,{title:e.title||"Chat",primaryColor:e.primaryColor,avatar:e.avatar}),F.jsxs("div",{id:"notchatbot-embed-chat-body",className:"nbc-flex-1 nbc-flex nbc-flex-col nbc-min-h-0",style:{position:"relative",overflow:"hidden"},children:[r?F.jsx("div",{className:"nbc-flex-1 nbc-p-4",children:F.jsx(ld,{})}):F.jsx(od,{messages:t,isTyping:o||!1,avatar:e.avatar,textColor:e.textColor,bubbleUserColor:e.bubbleUserColor,chatbotActivated:i}),F.jsx("div",{id:"notchatbot-embed-chat-body-input",className:"nbc-py-2 nbc-bg-gray-50 nbc-border-none",style:{backgroundColor:(d=e.input)==null?void 0:d.backgroundColor},children:F.jsx(sd,{onSendMessage:n,placeholder:e.placeholder||"Escribe un mensaje...",primaryColor:e.primaryColor,disabled:r,input:e.input,apiKey:e.apiKey})})]}),e.showFooter!==!1&&e.footerText&&F.jsx(dm,{footerText:e.footerText,primaryColor:e.primaryColor,footerColor:e.footerColor})]})},pm=({config:e})=>{if(!e.apiKey)return null;const[t,n]=Z.useState(""),[r,o]=Z.useState(!1),[i,a]=Z.useState(""),[,l]=Z.useState(null),d=Z.useRef(null),[,m]=Z.useState(!1),[x,R]=Z.useState(!0),[y,E]=Z.useState([e.initialMessage?{id:ut(),text:e.initialMessage,sender:"bot",timestamp:new Date().toISOString(),type:"text"}:Cd(e.title)]),u=Z.useCallback(p=>{E(g=>[...g,p])},[]);Z.useEffect(()=>{De(this,null,function*(){const g=yield md();a(g)})},[]);const C=Z.useCallback(p=>{u(p),typeof window!="undefined"&&window.dispatchEvent(new CustomEvent("notchatbot-embedchat-message-received",{detail:{message:p,role:"employee"}}))},[u]),P=Z.useCallback(p=>{R(p)},[]),b=Z.useCallback((p,g)=>De(this,null,function*(){if(!p.trim()&&(!g||g.length===0))return;let S=t;S||(S=ut(),n(S));const h=new Date().toISOString(),f=[...y],c=[];if(p.trim()){const s={id:ut(),text:p,sender:"user",timestamp:h,conversationId:S,type:"text"};u(s),typeof window!="undefined"&&window.dispatchEvent(new CustomEvent("notchatbot-embedchat-message-sent",{detail:{message:s}})),f.push(s),c.push(s)}if(g&&g.length>0){const s=g.map(w=>({id:ut(),text:w.type.startsWith("image/")?``:`[${w.name}](${w.url})`,sender:"user",timestamp:h,conversationId:S,type:w.type.startsWith("image/")?"image":"file",metaContent:w.url}));s.forEach(w=>{u(w),typeof window!="undefined"&&window.dispatchEvent(new CustomEvent("notchatbot-embedchat-message-sent",{detail:{message:w}})),c.push(w)}),f.push(...s)}o(!0);try{const s=bd(S,f,c,{apiKey:e.apiKey||""},i),w=yield xd(s);if(w){if(w.response.tokenDetails&&!d.current){const k=yield Ai(w.response.tokenDetails,e.apiKey||"",S,C,P);l(k),d.current=k.client,m(!0)}const v=Sd(w.response.message);v&&(u(v),typeof window!="undefined"&&window.dispatchEvent(new CustomEvent("notchatbot-embedchat-message-received",{detail:{message:v,role:"assistant"}})))}else{setTimeout(()=>{const v=Ii();u(v),o(!1)},1e3);return}o(!1)}catch(s){console.error("EmbedChat: Error sending message:",s),setTimeout(()=>{const w=Ii();u(w),o(!1)},1e3);return}}),[t,i,e.apiKey,u,C,y]);return Z.useEffect(()=>()=>{d.current&&wd(d.current)},[]),F.jsx(hm,{config:e,messages:y,onSendMessage:b,isLoading:!1,isAiTyping:r,chatbotActivated:x})};(()=>{if(typeof document=="undefined")return;const e={},t=document.dispatchEvent.bind(document);document.dispatchEvent=r=>{const o=r==null?void 0:r.type;return(o==="WebChatReady"||o==="EmbedChatReady")&&(e[o]=!0),t(r)};const n=document.addEventListener.bind(document);document.addEventListener=(r,o,i)=>{const a=r;if((a==="WebChatReady"||a==="EmbedChatReady")&&e[a]){const l=new CustomEvent(a);setTimeout(()=>{typeof o=="function"?o.call(document,l):o&&typeof o.handleEvent=="function"&&o.handleEvent(l)},0)}return n(r,o,i)}})();let or=null;const qr={},Pi={};let ct=null,Ne=null,ul=!1,eo={};const cl={},Rd=e=>{try{if(!e.elementId)return console.error("EmbedChat: elementId is required"),null;const t=document.getElementById(e.elementId);if(!t)return null;let n;t.shadowRoot?(n=t.shadowRoot,n.innerHTML=""):n=t.attachShadow({mode:"open"});const r=document.createElement("style");if(r.textContent=Ed,n.appendChild(r),e.customCSS){const a=document.createElement("style");a.setAttribute("data-custom","true"),a.textContent=e.customCSS,n.appendChild(a)}const o=document.createElement("div");n.appendChild(o);const i=Ys(o);return i.render(Hi.createElement(pm,{config:e})),Pi[e.elementId]={destroy:()=>{i.unmount(),n.innerHTML="",delete Pi[e.elementId],cl[e.elementId]=e}},cl[e.elementId]=e,Pi[e.elementId]}catch(t){return console.error("EmbedChat: Failed to initialize",t),null}};function Gt(){let e=qr["webchat-notchatbot"];if(!e){const n=ae(ae({},Ne),eo);let r="webchat-notchatbot";typeof(Ne==null?void 0:Ne.elementId)=="string"&&Ne.elementId&&(r=Ne.elementId);const t=n,{elementId:o}=t,i=vl(t,["elementId"]);"elementId"in i&&delete i.elementId;const a=Object.assign({elementId:r},i);e=Od(a),ul&&e&&e.setIsOpen&&e.setIsOpen(!0);const l=new CustomEvent("WebChatReady");document.dispatchEvent(l)}return e}const Od=e=>{try{let t=function(u){return Hi.createElement(um,We(ae({},u),{exposeControl:C=>{l=C.setIsOpen,d=C.updateConfig,m=C.setPosition,x=C.hide,R=C.show,y=C.getIsOpen}}))};or&&(or.destroy(),or=null);const n=ae(ae({elementId:"webchat-notchatbot"},cm),e);Ne=n;let r=document.getElementById(n.elementId);r||(r=document.createElement("div"),r.id=n.elementId,document.body.appendChild(r));let o;r.shadowRoot?(o=r.shadowRoot,o.innerHTML=""):o=r.attachShadow({mode:"open"}),ct=o;const i=document.createElement("style");i.textContent=Ed,o.appendChild(i);const a=document.createElement("div");o.appendChild(a);let l=null,d=null,m=null,x=null,R=null,y=null;const E=Ys(a);return E.render(Hi.createElement(t,{config:n})),qr[n.elementId]={root:E,destroy:()=>{E.unmount(),or=null,ct&&(ct.innerHTML=""),delete qr[n.elementId]},getConversationId:()=>pd(),setIsOpen:u=>{ul=u,l&&l(u)},updateConfig:u=>{Ne=dl(ae(ae({},Ne),u)),d&&d(u)},setPosition:u=>{eo=to(eo,u),Ne=dl(to(Ne||{},u)),m&&m(u),d&&d(u)},hide:()=>x&&x(),show:()=>R&&R(),injectCSS:u=>{if(!ct)return;let C=ct.querySelector("style[data-custom]");C&&C.remove(),C=document.createElement("style"),C.setAttribute("data-custom","true"),C.textContent=u,ct.appendChild(C)},removeCustomCSS:()=>{if(!ct)return;const u=ct.querySelector("style[data-custom]");u&&u.remove()},getIsOpen:()=>y?y():ul},or=qr[n.elementId],or}catch(t){return console.error("WebChat: Failed to initialize",t),null}},Td={initialize:Od},Ad={initialize:Rd};typeof window!="undefined"&&(window.WebChat=Td,window.EmbedChat=Ad,window.openWebChat=()=>{const e=Gt();e&&e.setIsOpen(!0)},window.closeWebChat=()=>{const e=Gt();e&&e.setIsOpen(!1)},window.toggleWebChat=()=>{const e=Gt();e&&e.setIsOpen&&e.getIsOpen&&e.setIsOpen(!e.getIsOpen())},window.unmountWebChat=()=>{const e=qr["webchat-notchatbot"];e&&e.destroy()},window.mountWebChat=()=>{Gt()},window.setWebChatPosition=e=>{const t=Gt();if(!t||!t.setPosition)return;let n={};if(e.mobile||e.desktop)n=to({},e);else if(e.device==="mobile"||e.device==="desktop"){const r=e.device;n[r]=ae(ae({},Ne&&typeof Ne[r]=="object"?Ne[r]:{}),e),n[r]&&typeof n[r]=="object"&&"device"in n[r]&&delete n[r].device}else n=ae({},e);Ne=dl(to(Ne||{},n)),eo=to(eo,n),t.setPosition(n)},window.hideWebChat=()=>{const e=Gt();e&&e.hide&&e.hide()},window.showWebChat=()=>{const e=Gt();e&&e.show&&e.show()},window.injectWebChatCSS=e=>{if(Gt(),ct){let t=ct.querySelector("style[data-custom]");t&&t.remove(),t=document.createElement("style"),t.setAttribute("data-custom","true"),t.textContent=e,ct.appendChild(t)}},window.removeWebChatCSS=()=>{if(Gt(),ct){const e=ct.querySelector("style[data-custom]");e&&e.remove()}},window.unmountEmbedChat=e=>{const t=Pi[e];t&&t.destroy()},window.mountEmbedChat=e=>{const t=cl[e];t?Rd(t):console.warn(`No config found for EmbedChat with elementId: ${e}`)},window.addEventListener("openWebChatbot",()=>window.openWebChat()),window.addEventListener("closeWebChatbot",()=>window.closeWebChat()),window.addEventListener("toggleWebChatbot",()=>window.toggleWebChat()),window.addEventListener("addCustomPadding",e=>{if(e&&e.detail){let t={};if(typeof e.detail=="object")if(e.detail.mobile||e.detail.desktop)t=ae({},e.detail);else if(e.detail.device==="mobile"||e.detail.device==="desktop"){const n=e.detail.device;t[n]=ae(ae({},Ne&&typeof Ne[n]=="object"?Ne[n]:{}),e.detail),t[n]&&typeof t[n]=="object"&&"device"in t[n]&&delete t[n].device}else("y"in e.detail||"marginBottom"in e.detail)&&(t={},"y"in e.detail&&(t.marginBottom=parseInt(e.detail.y,10)),"x"in e.detail&&(t.marginSide=parseInt(e.detail.x,10)),"marginBottom"in e.detail&&(t.marginBottom=parseInt(e.detail.marginBottom,10)),"marginSide"in e.detail&&(t.marginSide=parseInt(e.detail.marginSide,10)));window.setWebChatPosition(t)}}),setTimeout(()=>{const e=new CustomEvent("WebChatReady",{bubbles:!0});document.dispatchEvent(e)},0),setTimeout(()=>{const e=new CustomEvent("EmbedChatReady",{bubbles:!0});document.dispatchEvent(e)},0));const gm=()=>{const e=new CustomEvent("WebChatReady",{bubbles:!0});document.dispatchEvent(e)},Id=()=>{const e=new CustomEvent("EmbedChatReady",{bubbles:!0});document.dispatchEvent(e)},Pd=()=>{gm(),Id()},fl=()=>{requestAnimationFrame(()=>{setTimeout(()=>{Id()},0)})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Pd):setTimeout(Pd,0),function(e){const t=e.pushState,n=e.replaceState;e.pushState=function(...r){const o=t.apply(e,r);return window.dispatchEvent(new Event("routechange")),o},e.replaceState=function(...r){const o=n.apply(e,r);return window.dispatchEvent(new Event("routechange")),o}}(window.history),window.addEventListener("popstate",fl),window.addEventListener("hashchange",fl),window.addEventListener("routechange",fl);function to(e,t){if(!t)return e;const n=ae({},e);for(const r of Object.keys(t))r==="mobile"||r==="desktop"?n[r]=ae(ae({},e[r]||{}),t[r]):n[r]=t[r];return n}function dl(e){const t=typeof e.elementId=="string"&&e.elementId?e.elementId:"webchat-notchatbot",o=e,{elementId:n}=o,r=vl(o,["elementId"]);return ae({elementId:t},r)}pe.EmbedChatAPI=Ad,pe.WebChat=Td,Object.defineProperty(pe,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED