@only-chat/client 0.2.0-beta.8 → 1.0.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/README.md CHANGED
@@ -1,4 +1,97 @@
1
1
  # only-chat
2
2
  This is a client implementation for only-chat.
3
3
 
4
- The client is a main part of the platform that processes and dispatches messages from the transport layer and from the queue.
4
+ The client is a main part of the platform that processes and dispatches messages from the transport layer and from the queue.
5
+
6
+ # Get started
7
+
8
+ ```shell
9
+ npm i --save @only-chat/client
10
+ ```
11
+
12
+ ```typescript
13
+ import { initialize as initializeClient, WsClient } from '@only-chat/client'
14
+
15
+ ...
16
+
17
+ initializeClient({queue, store, userStore, instanceId}, logger)
18
+
19
+ const ws = new WebSocketServer({ host, port })
20
+
21
+ ws.on('connection', s => new WsClient(s))
22
+ ```
23
+
24
+ # Client Statuses
25
+
26
+ | Status | Value | Description |
27
+ | :--- | :--- | :--- |
28
+ | None | 0 | The client was created, no actions have been performed with it. |
29
+ | Authenticated | 1 | The client is successfully authenticated. |
30
+ | Connected | 2 | The client is successfully connected to the server. |
31
+ | Session | 3 | The client has joined one of the chats. |
32
+ | WatchSession | 4 | The client is monitoring changes in all chats. |
33
+ | Disconnected | 0xFF | The client is successfully disconnected from the server. |
34
+
35
+ ## Request Structure
36
+
37
+ For all commands, the request is of the type `Request`:
38
+
39
+ ```typescript
40
+ {
41
+ type: string; // Command type
42
+ clientMessageId: string; // Client identifier
43
+ data: object; // Request data
44
+ }
45
+ ```
46
+
47
+ ## Command Specifications
48
+
49
+ ### Status: `None`
50
+
51
+ * Any command is treated as a connection command to the service.
52
+ * **Must be of request type:** `ConnectRequest`.
53
+
54
+ ---
55
+
56
+ ### Status: `Connected`, `Session`, or `WatchSession`
57
+
58
+ The command must be of request type `JoinRequest` or `Request`.
59
+
60
+ | Command | Description | Request Data Type |
61
+ | :--- | :--- | :--- |
62
+ | `close` | Command to close a conversation; new messages cannot be added to a closed conversation. | `ConversationRequest` |
63
+ | `delete` | Command to delete a conversation. If a user attempts to delete a conversation where they are not the creator, they will be removed from the conversation and the participant list. | `ConversationRequest` |
64
+ | `update` | Command to modify a conversation; the creator can change the title and participant list. | `ConversationRequest` |
65
+ | `find` | Search for messages in conversations. | `FindRequest` |
66
+ | `load` | Retrieve the list of the user's conversations. | `LoadRequest` |
67
+
68
+ ---
69
+
70
+ ### Status: `Connected`
71
+
72
+ The command must be of request type `JoinRequest`.
73
+
74
+ | Command | Description |
75
+ | :--- | :--- |
76
+ | `join` | Join a conversation. |
77
+ | `watch` | Monitor changes in conversations. |
78
+
79
+ ---
80
+
81
+ ### Status: `Session`
82
+
83
+ The command must be of request type `Request`.
84
+
85
+ | Command | Description | Request Data Type |
86
+ | :--- | :--- | :--- |
87
+ | `text` | Add a text message to the current conversation. | `TextMessage` |
88
+ | `file` | Add a message with a link to an external resource in the current conversation. | `FileMessage` |
89
+ | `message-update` | Command to edit a message in the current conversation; the author can modify it. | `MessageUpdate` |
90
+ | `message-delete` | Command to delete a message in the current conversation; the author can delete it. | `MessageDelete` |
91
+ | `load-messages` | Command to load messages in the current conversation. | `LoadRequest` |
92
+
93
+ ---
94
+
95
+ ## Error Handling
96
+
97
+ Any other command or an incorrect request type is considered an error and results in forced connection termination and disconnection of the client from the service.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { UserStore } from '@only-chat/types/userStore.js';
2
- import type { Conversation, MessageStore } from '@only-chat/types/store.js';
2
+ import type { MessageStore } from '@only-chat/types/store.js';
3
3
  import type { Log } from '@only-chat/types/log.js';
4
4
  import type { Message as QueueMessage, MessageQueue } from '@only-chat/types/queue.js';
5
5
  import type { Transport } from '@only-chat/types/transport.js';
@@ -14,17 +14,11 @@ export declare enum TransportState {
14
14
  CLOSED = 3
15
15
  }
16
16
  export interface Config {
17
- queue: MessageQueue;
17
+ queue?: MessageQueue;
18
18
  store: MessageStore;
19
19
  userStore: UserStore;
20
20
  instanceId: string;
21
21
  }
22
- export interface LoadRequest {
23
- from?: number;
24
- size?: number;
25
- excludeIds?: string[];
26
- before?: Date;
27
- }
28
22
  interface ConversationInfo {
29
23
  participants: Set<string>;
30
24
  clients: WsClient[];
@@ -41,15 +35,16 @@ export declare class WsClient {
41
35
  static readonly connectedClients: Set<string>;
42
36
  static readonly watchers: Map<string, WsClient>;
43
37
  static readonly conversations: Map<string, ConversationInfo>;
38
+ static readonly joinedParticipants: Map<string, Set<string>>;
44
39
  private static readonly conversationsCache;
45
40
  connectionId?: string;
46
- conversation?: Conversation;
47
- state: WsClientState;
48
41
  id?: string;
42
+ state: WsClientState;
49
43
  private readonly transport;
44
+ private conversation?;
50
45
  private lastError?;
51
46
  constructor(t: Transport);
52
- static addClient(conversation: Conversation, wc: WsClient): Promise<void>;
47
+ private static addClient;
53
48
  private static removeClient;
54
49
  private static addWatchClient;
55
50
  private static removeWatchClient;
package/dist/index.js CHANGED
@@ -9,6 +9,45 @@ export var TransportState;
9
9
  /** The connection is closed. */
10
10
  TransportState[TransportState["CLOSED"] = 3] = "CLOSED";
11
11
  })(TransportState || (TransportState = {}));
12
+ var ErrorMessage;
13
+ (function (ErrorMessage) {
14
+ ErrorMessage["AuthenticationFailed"] = "Authentication failed";
15
+ ErrorMessage["CloseConversationFailed"] = "Close conversation failed";
16
+ ErrorMessage["ConversationAlreadyClosed"] = "Conversation already closed";
17
+ ErrorMessage["ConversationClosed"] = "Conversation closed";
18
+ ErrorMessage["ConversationNotFound"] = "Conversation not found";
19
+ ErrorMessage["ConversationTitleRequired"] = "Conversation title required";
20
+ ErrorMessage["DeleteMessageFailed"] = "Delete message failed";
21
+ ErrorMessage["IndexMessageFailed"] = "Index message failed";
22
+ ErrorMessage["LessThanTwoParticipants"] = "Less than 2 participants";
23
+ ErrorMessage["SaveConversationFailed"] = "Save conversation failed";
24
+ ErrorMessage["UpdateConversationFailed"] = "Update conversation failed";
25
+ ErrorMessage["UpdateMessageFailed"] = "Update message failed";
26
+ ErrorMessage["UserNotAllowedToCloseConversation"] = "User is not allowed to close conversation";
27
+ ErrorMessage["UserNotAllowedToDeleteMessage"] = "User is not allowed to delete message";
28
+ ErrorMessage["UserNotAllowedToUpdateConversation"] = "User is not allowed to update conversation";
29
+ ErrorMessage["UserNotAllowedToUpdateMessage"] = "User is not allowed to update message";
30
+ ErrorMessage["UnableToGetPeerToPeerConversationIdentifier"] = "Unable to get peer to peer conversation identifier";
31
+ ErrorMessage["WrongConversation"] = "Wrong conversation";
32
+ ErrorMessage["WrongConversationIdentifier"] = "Wrong conversation identifier";
33
+ ErrorMessage["WrongFileName"] = "Wrong file name";
34
+ ErrorMessage["WrongMessage"] = "Wrong message";
35
+ ErrorMessage["WrongMessageType"] = "Wrong message type";
36
+ ErrorMessage["WrongRequestType"] = "Wrong request type";
37
+ })(ErrorMessage || (ErrorMessage = {}));
38
+ var StopStatus;
39
+ (function (StopStatus) {
40
+ StopStatus["Deleted"] = "Deleted";
41
+ StopStatus["FailedConnect"] = "Failed connect";
42
+ StopStatus["FailedJoin"] = "Failed join";
43
+ StopStatus["FailedProcessConversationRequest"] = "Failed processing conversation request";
44
+ StopStatus["FailedProcessMessage"] = "Failed processing message";
45
+ StopStatus["FailedProcessRequest"] = "Failed processing request";
46
+ StopStatus["FailedWatch"] = "Failed watch";
47
+ StopStatus["Removed"] = "Removed";
48
+ StopStatus["RemovedByPrticipant"] = "Removed by new participant";
49
+ StopStatus["Stopped"] = "Stopped";
50
+ })(StopStatus || (StopStatus = {}));
12
51
  export var WsClientState;
13
52
  (function (WsClientState) {
14
53
  WsClientState[WsClientState["None"] = 0] = "None";
@@ -19,12 +58,12 @@ export var WsClientState;
19
58
  WsClientState[WsClientState["Disconnected"] = 255] = "Disconnected";
20
59
  })(WsClientState || (WsClientState = {}));
21
60
  const defaultSize = 100;
22
- const sendStates = [WsClientState.Connected, WsClientState.Session, WsClientState.WatchSession];
23
- const connectedRequestTypes = ['close', 'delete', 'load', 'update'];
61
+ const sendStates = new Set([WsClientState.Connected, WsClientState.Session, WsClientState.WatchSession]);
62
+ const connectedRequestTypes = new Set(['close', 'delete', 'find', 'load', 'update']);
24
63
  const types = ['file', 'text'];
25
64
  let instanceId = undefined;
26
65
  let logger;
27
- let queue = undefined;
66
+ let queue;
28
67
  let store = undefined;
29
68
  let userStore = undefined;
30
69
  export class WsClient {
@@ -32,12 +71,13 @@ export class WsClient {
32
71
  static connectedClients = new Set();
33
72
  static watchers = new Map();
34
73
  static conversations = new Map();
74
+ static joinedParticipants = new Map();
35
75
  static conversationsCache = new Map();
36
76
  connectionId;
37
- conversation;
38
- state = WsClientState.None;
39
77
  id;
78
+ state = WsClientState.None;
40
79
  transport;
80
+ conversation;
41
81
  lastError;
42
82
  constructor(t) {
43
83
  this.transport = t;
@@ -47,17 +87,17 @@ export class WsClient {
47
87
  }
48
88
  static async addClient(conversation, wc) {
49
89
  let info = WsClient.conversations.get(conversation.id);
50
- if (!info) {
90
+ if (info) {
91
+ info.clients.push(wc);
92
+ }
93
+ else {
51
94
  info = { participants: new Set(conversation.participants), clients: [wc] };
52
95
  WsClient.conversations.set(conversation.id, info);
53
96
  WsClient.conversationsCache.delete(conversation.id);
54
97
  }
55
- else {
56
- info.clients.push(wc);
57
- }
58
98
  for (const c of info.clients) {
59
99
  if (c.id && !info.participants.has(c.id)) {
60
- await c.stop('Removed by new participant');
100
+ await c.stop(StopStatus.RemovedByPrticipant);
61
101
  }
62
102
  }
63
103
  }
@@ -83,16 +123,9 @@ export class WsClient {
83
123
  return true;
84
124
  }
85
125
  static addWatchClient(wc) {
86
- if (wc.id) {
87
- WsClient.watchers.set(wc.id, wc);
88
- return true;
89
- }
90
- return false;
126
+ WsClient.watchers.set(wc.id, wc);
91
127
  }
92
128
  static removeWatchClient(wc) {
93
- if (!wc.id) {
94
- return false;
95
- }
96
129
  const result = WsClient.watchers.delete(wc.id);
97
130
  if (result) {
98
131
  const toRemove = [];
@@ -106,7 +139,7 @@ export class WsClient {
106
139
  toRemove.push(k);
107
140
  }
108
141
  });
109
- toRemove.forEach(WsClient.conversationsCache.delete);
142
+ toRemove.forEach(id => WsClient.conversationsCache.delete(id));
110
143
  }
111
144
  return result;
112
145
  }
@@ -137,7 +170,7 @@ export class WsClient {
137
170
  }
138
171
  let participants = WsClient.conversationsCache.get(conversationId);
139
172
  if (!participants) {
140
- const conversation = await store.getConversationById(conversationId);
173
+ const conversation = await store.getParticipantConversationById(undefined, conversationId);
141
174
  if (!conversation) {
142
175
  return;
143
176
  }
@@ -146,12 +179,11 @@ export class WsClient {
146
179
  }
147
180
  return participants;
148
181
  }
149
- static async publishToWsList(conversationId, action, l) {
182
+ static async publishToWsList(conversationId, action) {
150
183
  const tasks = [];
151
184
  const info = WsClient.conversations.get(conversationId);
152
185
  if (info) {
153
186
  info.clients.forEach(client => {
154
- l?.push(client.id);
155
187
  tasks.push(action(client, info.participants));
156
188
  });
157
189
  }
@@ -160,7 +192,6 @@ export class WsClient {
160
192
  participants?.forEach(id => {
161
193
  const client = WsClient.watchers.get(id);
162
194
  if (client) {
163
- l?.push(client.id);
164
195
  tasks.push(action(client));
165
196
  }
166
197
  });
@@ -168,7 +199,7 @@ export class WsClient {
168
199
  return Promise.all(tasks);
169
200
  }
170
201
  static async syncConversation(conversationId) {
171
- const conversation = await store.getConversationById(conversationId);
202
+ const conversation = await store.getParticipantConversationById(undefined, conversationId);
172
203
  if (!conversation) {
173
204
  return false;
174
205
  }
@@ -197,10 +228,10 @@ export class WsClient {
197
228
  WsClient.publishToWatchList(qm.fromId, wc => {
198
229
  if (qm.connectionId !== wc.connectionId || qm.instanceId !== instanceId) {
199
230
  wc.send({
231
+ type: qm.type,
200
232
  id: qm.id,
201
233
  connectionId: qm.connectionId,
202
234
  fromId: qm.fromId,
203
- type: qm.type,
204
235
  createdAt: qm.createdAt,
205
236
  });
206
237
  }
@@ -208,14 +239,14 @@ export class WsClient {
208
239
  return;
209
240
  }
210
241
  if (['closed', 'deleted'].includes(qm.type)) {
211
- const conversationId = qm.data.conversationId ?? qm.conversationId;
242
+ const conversationId = qm.data?.conversationId ?? qm.conversationId;
212
243
  if (conversationId) {
213
244
  await WsClient.publishToWsList(conversationId, async (wc, _) => {
214
245
  if (qm.connectionId !== wc.connectionId || qm.instanceId !== instanceId) {
215
246
  wc.send(qm);
216
247
  }
217
248
  if (wc.conversation?.id === conversationId && qm.type === 'deleted') {
218
- await wc.stop('Deleted');
249
+ await wc.stop(StopStatus.Deleted);
219
250
  }
220
251
  });
221
252
  if (qm.type === 'deleted') {
@@ -225,32 +256,51 @@ export class WsClient {
225
256
  return;
226
257
  }
227
258
  switch (qm.type) {
259
+ case 'joined':
260
+ if (qm.conversationId) {
261
+ const participants = WsClient.joinedParticipants.get(qm.conversationId);
262
+ if (participants) {
263
+ participants.add(qm.fromId);
264
+ }
265
+ else {
266
+ WsClient.joinedParticipants.set(qm.conversationId, new Set([qm.fromId]));
267
+ }
268
+ await WsClient.publishToWsList(qm.conversationId, async (wc, _) => wc.send(qm));
269
+ }
270
+ break;
271
+ case 'left':
272
+ if (qm.conversationId) {
273
+ const participants = WsClient.joinedParticipants.get(qm.conversationId);
274
+ if (participants) {
275
+ participants.delete(qm.fromId);
276
+ if (!participants.size) {
277
+ WsClient.joinedParticipants.delete(qm.conversationId);
278
+ }
279
+ }
280
+ await WsClient.publishToWsList(qm.conversationId, async (wc, _) => wc.send(qm));
281
+ }
282
+ break;
228
283
  case 'text':
229
284
  case 'file':
230
- if (null === qm.data) {
285
+ if (null == qm.data) {
231
286
  break;
232
287
  }
233
288
  /* FALLTHROUGH */
234
- case 'joined':
235
- case 'left':
236
289
  case 'message-updated':
237
290
  case 'message-deleted':
238
291
  if (qm.conversationId) {
239
- const ids = [];
240
- await WsClient.publishToWsList(qm.conversationId, async (wc, _) => {
241
- wc.send(qm);
242
- }, ids);
292
+ await WsClient.publishToWsList(qm.conversationId, async (wc, _) => wc.send(qm));
243
293
  }
244
294
  break;
245
295
  case 'updated':
246
296
  {
247
- const conversationId = qm.data.conversationId ?? qm.conversationId;
297
+ const conversationId = qm.data?.conversationId ?? qm.conversationId;
248
298
  if (conversationId) {
249
299
  const updated = await WsClient.syncConversation(conversationId);
250
300
  await WsClient.publishToWsList(conversationId, async (wc, participants) => {
251
301
  wc.send(qm);
252
302
  if (updated && false === participants?.has(wc.id)) {
253
- await wc.stop('Removed');
303
+ await wc.stop(StopStatus.Removed);
254
304
  }
255
305
  });
256
306
  }
@@ -267,40 +317,46 @@ export class WsClient {
267
317
  conversationId: this.conversation?.id,
268
318
  participants: this.conversation?.participants,
269
319
  connectionId: this.connectionId,
270
- clientMessageId: clientMessageId,
271
320
  fromId: this.id,
321
+ clientMessageId: clientMessageId,
272
322
  createdAt,
273
323
  data: data,
274
324
  };
275
325
  const response = await store.saveMessage(m);
276
326
  if (response.result !== 'created') {
277
- logger?.error(`Index message failed`);
327
+ const err = ErrorMessage.IndexMessageFailed;
328
+ if (!this.lastError) {
329
+ this.lastError = err;
330
+ }
331
+ logger?.error(err);
278
332
  return false;
279
333
  }
280
334
  id = response?._id;
281
335
  }
282
- if (!Array.isArray(queue.acceptTypes) || queue.acceptTypes.includes(type)) {
283
- return await queue.publish({
284
- type,
285
- id,
286
- instanceId,
287
- conversationId: this.conversation?.id,
288
- participants: this.conversation?.participants,
289
- connectionId: this.connectionId,
290
- fromId: this.id,
291
- clientMessageId: clientMessageId,
292
- createdAt,
293
- data: data,
294
- });
336
+ const message = {
337
+ type,
338
+ id,
339
+ instanceId,
340
+ conversationId: this.conversation?.id,
341
+ participants: this.conversation?.participants,
342
+ connectionId: this.connectionId,
343
+ fromId: this.id,
344
+ clientMessageId: clientMessageId,
345
+ createdAt,
346
+ data: data,
347
+ };
348
+ if (queue && (!Array.isArray(queue.acceptTypes) || queue.acceptTypes.includes(type))) {
349
+ return await queue.publish(message);
295
350
  }
351
+ await WsClient.translateQueueMessage(message);
296
352
  return true;
297
353
  }
298
354
  send(msg) {
299
- if (this.transport && this.transport.readyState === TransportState.OPEN && sendStates.includes(this.state)) {
355
+ if (this.transport && this.transport.readyState === TransportState.OPEN && sendStates.has(this.state)) {
300
356
  return this.transport.send(JSON.stringify(msg), { binary: false, fin: true });
301
357
  }
302
358
  }
303
- async stop(statusDescription, err) {
359
+ async stop(status, err) {
304
360
  if (logger && err?.message) {
305
361
  logger.error(err.message);
306
362
  }
@@ -310,6 +366,7 @@ export class WsClient {
310
366
  this.state = WsClientState.Disconnected;
311
367
  const maxStatusLen = 123;
312
368
  const dotSpace = '. ';
369
+ let statusDescription = status;
313
370
  [this.lastError, err?.message].forEach(v => {
314
371
  if (v && statusDescription.length + dotSpace.length < maxStatusLen) {
315
372
  statusDescription += dotSpace + v.substring(0, maxStatusLen - statusDescription.length - dotSpace.length);
@@ -324,9 +381,6 @@ export class WsClient {
324
381
  if ([TransportState.CLOSING, TransportState.CLOSED].includes(this.transport.readyState)) {
325
382
  return;
326
383
  }
327
- if (statusDescription.length > maxStatusLen) {
328
- statusDescription = statusDescription.substring(0, maxStatusLen);
329
- }
330
384
  this.transport.close(err ? 1011 : 1000, statusDescription);
331
385
  this.transport.removeAllListeners();
332
386
  }
@@ -344,7 +398,7 @@ export class WsClient {
344
398
  if (data.conversationId) {
345
399
  conversation = await store.getParticipantConversationById(this.id, data.conversationId);
346
400
  if (!conversation?.id) {
347
- this.lastError = "Wrong conversation";
401
+ this.lastError = ErrorMessage.WrongConversation;
348
402
  return false;
349
403
  }
350
404
  }
@@ -352,42 +406,45 @@ export class WsClient {
352
406
  const participants = new Set(data.participants?.map(p => p.trim()).filter(s => s.length));
353
407
  participants.add(this.id);
354
408
  if (participants.size < 2) {
355
- this.lastError = "Less than 2 participants";
409
+ this.lastError = ErrorMessage.LessThanTwoParticipants;
356
410
  return false;
357
411
  }
358
412
  let conversationId;
359
413
  const participantsArray = Array.from(participants);
360
414
  if (!data.title && participants.size == 2) {
361
- conversationId = await store.getPeerToPeerConversationId(participantsArray[0], participantsArray[1]);
362
- if (!conversationId) {
363
- this.lastError = 'Unable to get peer to peer conversation identifier';
415
+ const conversationIdResult = await store.getPeerToPeerConversationId(participantsArray[0], participantsArray[1]);
416
+ if (!conversationIdResult?.id) {
417
+ this.lastError = ErrorMessage.UnableToGetPeerToPeerConversationIdentifier;
364
418
  logger?.error(this.lastError);
365
419
  return false;
366
420
  }
367
- conversation = await store.getConversationById(conversationId);
421
+ created = conversationIdResult.result === 'created';
422
+ conversationId = conversationIdResult?.id;
423
+ conversation = await store.getParticipantConversationById(undefined, conversationId);
368
424
  }
369
425
  else if (!data.title) {
370
- this.lastError = "Conversation title required";
426
+ this.lastError = ErrorMessage.ConversationTitleRequired;
371
427
  return false;
372
428
  }
373
429
  const conversationsParticipans = conversation ? new Set(conversation.participants) : undefined;
374
- if (!conversationsParticipans
375
- || participants.size !== conversationsParticipans.size
430
+ if (participants.size !== conversationsParticipans?.size
376
431
  || participantsArray.some(p => !conversationsParticipans.has(p))) {
377
432
  const now = new Date();
378
433
  conversation = {
379
434
  id: conversationId,
380
435
  participants: participantsArray,
381
- title: conversation?.title ?? data.title,
382
- createdBy: conversation?.createdBy ?? this.id,
383
- updatedAt: conversation?.createdAt ? now : undefined,
436
+ title: data.title,
437
+ createdBy: conversation?.createdBy ?? (conversationId ? '' : this.id),
384
438
  createdAt: conversation?.createdAt ?? now,
439
+ updatedAt: conversation?.createdAt ? now : undefined,
385
440
  };
386
441
  const response = await store.saveConversation(conversation);
387
- created = response.result === 'created';
442
+ if (!created) {
443
+ created = response.result === 'created';
444
+ }
388
445
  if (!created && response.result !== 'updated') {
389
446
  logger?.error(`Save conversation with id ${conversation.id} failed`);
390
- this.lastError = "Save conversation failed";
447
+ this.lastError = ErrorMessage.SaveConversationFailed;
391
448
  return false;
392
449
  }
393
450
  conversation.id = response._id;
@@ -396,9 +453,9 @@ export class WsClient {
396
453
  this.state = WsClientState.Session;
397
454
  this.conversation = conversation;
398
455
  await WsClient.addClient(conversation, this);
399
- const size = data.messagesSize != null && data.messagesSize >= 0 ? data.messagesSize : defaultSize;
456
+ const size = data.messagesSize ?? defaultSize;
400
457
  let lastMessage = undefined;
401
- let oldMessages = undefined;
458
+ let messages = undefined;
402
459
  if (!created) {
403
460
  const fr = {
404
461
  size,
@@ -407,19 +464,17 @@ export class WsClient {
407
464
  sort: 'createdAt',
408
465
  sortDesc: true,
409
466
  };
410
- oldMessages = await store.findMessages(fr);
467
+ messages = await store.findMessages(fr);
411
468
  lastMessage = await store.getParticipantLastMessage(this.id, conversation.id);
412
469
  }
413
- const connected = conversation.participants.filter(p => WsClient.connectedClients.has(p));
470
+ const connected = conversation.participants.filter(p => p === this.id || WsClient.joinedParticipants.get(conversation.id)?.has(p));
414
471
  const joined = {
415
472
  type: 'conversation',
416
473
  clientMessageId: request.clientMessageId,
417
474
  conversation,
418
475
  connected,
419
- messages: oldMessages?.messages.reverse(),
420
- total: oldMessages?.total,
476
+ messages,
421
477
  leftAt: lastMessage?.createdAt,
422
- closedAt: conversation.closedAt,
423
478
  };
424
479
  this.send(joined);
425
480
  logger?.debug(`Client with id ${this.id} added successfully`);
@@ -427,21 +482,23 @@ export class WsClient {
427
482
  }
428
483
  onMessage(data, isBinary) {
429
484
  try {
430
- if (!(data instanceof Buffer)) {
431
- throw new Error('Wrong message');
432
- }
433
485
  if (isBinary) {
434
- throw new Error('Binary message received!');
486
+ logger?.error('Binary message received');
487
+ throw new Error('Binary message');
488
+ }
489
+ if (!(data instanceof Buffer)) {
490
+ throw new TypeError('Wrong transport');
435
491
  }
436
- if (sendStates.includes(this.state)) {
437
- const msg = JSON.parse(data.toString());
438
- if (connectedRequestTypes.includes(msg.type)) {
439
- this.processRequest(msg).then(result => {
492
+ const msg = JSON.parse(data.toString());
493
+ if (msg && sendStates.has(this.state)) {
494
+ const request = msg;
495
+ if (request && connectedRequestTypes.has(request.type)) {
496
+ this.processRequest(request).then(result => {
440
497
  if (!result) {
441
- this.stop('Failed processRequest');
498
+ this.stop(StopStatus.FailedProcessRequest);
442
499
  }
443
500
  }).catch(e => {
444
- this.stop('Failed processRequest', e);
501
+ this.stop(StopStatus.FailedProcessRequest, e);
445
502
  });
446
503
  return;
447
504
  }
@@ -449,32 +506,37 @@ export class WsClient {
449
506
  switch (this.state) {
450
507
  case WsClientState.None:
451
508
  {
452
- const request = JSON.parse(data.toString());
453
- this.connect(request).then(response => {
454
- if (!response) {
455
- this.stop('Failed connect');
456
- }
457
- }).catch(e => {
458
- this.stop('Failed connect', e);
459
- });
509
+ const request = msg;
510
+ if (request) {
511
+ this.connect(request).then(response => {
512
+ if (!response) {
513
+ this.stop(StopStatus.FailedConnect);
514
+ }
515
+ }).catch(e => {
516
+ this.stop(StopStatus.FailedConnect, e);
517
+ });
518
+ }
519
+ else {
520
+ this.stop(StopStatus.FailedConnect);
521
+ }
460
522
  }
461
523
  break;
462
524
  case WsClientState.Connected:
463
525
  {
464
- const request = JSON.parse(data.toString());
465
- switch (request.type) {
526
+ const request = msg;
527
+ switch (request?.type) {
466
528
  case 'join':
467
529
  this.join(request).then(response => {
468
530
  if (!response) {
469
- this.stop('Failed join');
531
+ this.stop(StopStatus.FailedJoin);
470
532
  }
471
533
  }).catch(e => {
472
- this.stop('Failed join', e);
534
+ this.stop(StopStatus.FailedJoin, e);
473
535
  });
474
536
  break;
475
537
  case 'watch':
476
538
  this.watch().catch(e => {
477
- this.stop('Failed watch', e);
539
+ this.stop(StopStatus.FailedWatch, e);
478
540
  });
479
541
  break;
480
542
  default:
@@ -483,39 +545,35 @@ export class WsClient {
483
545
  }
484
546
  break;
485
547
  case WsClientState.Session:
486
- case WsClientState.WatchSession:
487
548
  {
488
- const request = JSON.parse(data.toString());
549
+ const request = msg;
489
550
  if (request) {
490
551
  this.processConversationRequest(request).then(result => {
491
552
  if (!result) {
492
- this.stop('Failed processConversationRequest');
553
+ this.stop(StopStatus.FailedProcessConversationRequest);
493
554
  }
494
555
  }).catch(e => {
495
- this.stop('Failed processConversationRequest', e);
556
+ this.stop(StopStatus.FailedProcessConversationRequest, e);
496
557
  });
497
558
  }
498
559
  else {
499
- this.stop('Wrong message');
560
+ throw new Error('Wrong message');
500
561
  }
501
562
  }
502
563
  break;
503
- case WsClientState.Disconnected:
504
- break;
505
564
  }
506
565
  }
507
566
  catch (e) {
508
- this.stop('Failed message processing', e);
567
+ this.stop(StopStatus.FailedProcessMessage, e);
509
568
  }
510
569
  }
511
570
  onClose() {
512
- this.stop('Stopped').finally(() => {
571
+ this.stop(StopStatus.Stopped).finally(() => {
513
572
  if (this.conversation?.id) {
514
573
  WsClient.removeClient(this.conversation.id, this);
515
574
  logger?.debug(`Client with id ${this.id} removed successfully`);
516
575
  }
517
- else if (WsClientState.WatchSession === this.state) {
518
- WsClient.removeWatchClient(this);
576
+ else if (WsClient.removeWatchClient(this)) {
519
577
  logger?.debug(`Watch client with id ${this.id} removed successfully`);
520
578
  }
521
579
  delete this.conversation;
@@ -525,17 +583,22 @@ export class WsClient {
525
583
  const findResult = await store.findMessages({
526
584
  ids: [request.messageId],
527
585
  conversationIds: [this.conversation.id],
586
+ types,
528
587
  });
529
588
  const message = findResult.messages?.[0];
530
- if (!message || message.fromId != this.id) {
531
- this.lastError = 'User is not allowed to delete message';
589
+ if (!message) {
590
+ this.lastError = ErrorMessage.WrongMessage;
591
+ return false;
592
+ }
593
+ if (message.fromId != this.id) {
594
+ this.lastError = ErrorMessage.UserNotAllowedToDeleteMessage;
532
595
  return false;
533
596
  }
534
- message.deletedAt = new Date();
597
+ message.deletedAt = request.deletedAt;
535
598
  const response = await store.saveMessage(message);
536
599
  if (response.result !== 'updated') {
537
600
  logger?.error(`Delete message with id ${message.id} failed`);
538
- this.lastError = 'Delete message failed';
601
+ this.lastError = ErrorMessage.DeleteMessageFailed;
539
602
  return false;
540
603
  }
541
604
  logger?.debug(`Message with id ${message.id} was deleted successfully`);
@@ -545,20 +608,25 @@ export class WsClient {
545
608
  const findResult = await store.findMessages({
546
609
  ids: [request.messageId],
547
610
  conversationIds: [this.conversation.id],
611
+ types,
548
612
  });
549
613
  const message = findResult.messages?.[0];
550
614
  if (!message) {
551
- this.lastError = 'Wrong message';
615
+ this.lastError = ErrorMessage.WrongMessage;
552
616
  return false;
553
617
  }
554
618
  if (message.fromId !== this.id) {
555
- this.lastError = 'User is not allowed to update message';
619
+ this.lastError = ErrorMessage.UserNotAllowedToUpdateMessage;
556
620
  return false;
557
621
  }
558
622
  switch (message.type) {
559
623
  case 'file':
560
624
  {
561
625
  const { link, name, type, size } = request;
626
+ if (!name) {
627
+ this.lastError = ErrorMessage.WrongFileName;
628
+ return false;
629
+ }
562
630
  message.data = { link, name, type, size };
563
631
  }
564
632
  break;
@@ -569,32 +637,30 @@ export class WsClient {
569
637
  }
570
638
  break;
571
639
  }
572
- message.updatedAt = new Date();
640
+ message.updatedAt = request.updatedAt;
573
641
  const response = await store.saveMessage(message);
574
642
  if (response.result !== 'updated') {
575
643
  logger?.error(`Update message with id ${message.id} failed`);
576
- this.lastError = 'Update message failed';
644
+ this.lastError = ErrorMessage.UpdateMessageFailed;
577
645
  return false;
578
646
  }
579
647
  logger?.debug(`Message with id ${message.id} was updated successfully`);
580
648
  return true;
581
649
  }
582
650
  async updateConversation(data) {
583
- const conversation = data.conversationId ? await store.getConversationById(data.conversationId) : this.conversation;
651
+ const conversation = data.conversationId ? await store.getParticipantConversationById(this.id, data.conversationId) : this.conversation;
584
652
  if (!conversation || this.id !== conversation.createdBy) {
585
653
  //Only creator can update conversation
586
- this.lastError = 'User is not allowed to update conversation';
654
+ this.lastError = ErrorMessage.UserNotAllowedToUpdateConversation;
587
655
  return false;
588
656
  }
589
657
  conversation.title = data.title;
590
658
  conversation.updatedAt = data.updatedAt;
591
- const participants = new Set([conversation.createdBy]);
592
- data.participants?.forEach(p => participants.add(p));
593
- conversation.participants = Array.from(participants);
659
+ conversation.participants = data.participants;
594
660
  const response = await store.saveConversation(conversation);
595
661
  if (response.result !== 'updated') {
596
662
  logger?.error(`Update conversation with id ${conversation.id} failed`);
597
- this.lastError = 'Update conversation failed';
663
+ this.lastError = ErrorMessage.UpdateConversationFailed;
598
664
  return false;
599
665
  }
600
666
  logger?.debug(`Conversation with id ${conversation.id} was updated successfully`);
@@ -603,21 +669,17 @@ export class WsClient {
603
669
  async closeDeleteConversation(data, del) {
604
670
  const id = data.conversationId ?? this.conversation?.id;
605
671
  if (!id) {
606
- this.lastError = 'Wrong conversation identifier';
672
+ this.lastError = ErrorMessage.WrongConversationIdentifier;
607
673
  return null;
608
674
  }
609
- const conversation = await store.getConversationById(id);
675
+ const conversation = await store.getParticipantConversationById(this.id, id);
610
676
  if (!conversation) {
611
677
  //Only creator can close or delete conversation
612
- this.lastError = 'Conversation not found';
678
+ this.lastError = ErrorMessage.ConversationNotFound;
613
679
  return null;
614
680
  }
615
681
  if (!del && conversation.closedAt) {
616
- this.lastError = 'Conversation already closed';
617
- return null;
618
- }
619
- if (conversation.deletedAt) {
620
- this.lastError = 'Conversation already deleted';
682
+ this.lastError = ErrorMessage.ConversationAlreadyClosed;
621
683
  return null;
622
684
  }
623
685
  let type = 'updated';
@@ -634,22 +696,18 @@ export class WsClient {
634
696
  }
635
697
  else if (del) {
636
698
  //leave conversation
637
- const count = conversation.participants.length;
638
699
  conversation.participants = conversation.participants.filter(p => p !== this.id);
639
- if (count === conversation.participants.length) {
640
- this.lastError = 'User is not allowed to delete conversation';
641
- return null;
642
- }
700
+ conversation.updatedAt = data.deletedAt;
643
701
  data.participants = conversation.participants;
644
702
  }
645
703
  else {
646
- this.lastError = 'User is not allowed to close conversation';
704
+ this.lastError = ErrorMessage.UserNotAllowedToCloseConversation;
647
705
  return null;
648
706
  }
649
707
  const response = await store.saveConversation(conversation);
650
708
  if (response.result !== 'updated') {
651
709
  logger?.error(`Close conversation with id ${conversation.id} failed`);
652
- this.lastError = 'Close conversation failed';
710
+ this.lastError = ErrorMessage.CloseConversationFailed;
653
711
  return null;
654
712
  }
655
713
  logger?.debug(`Conversation with id ${conversation.id} was updated successfully`);
@@ -657,44 +715,57 @@ export class WsClient {
657
715
  }
658
716
  async processRequest(request) {
659
717
  if (!request.data) {
660
- this.lastError = 'Wrong message';
718
+ this.lastError = ErrorMessage.WrongMessage;
661
719
  return false;
662
720
  }
721
+ const clientMessageId = request.clientMessageId;
663
722
  switch (request.type) {
664
723
  case 'close':
665
724
  case 'delete':
666
725
  {
726
+ const { conversationId } = request.data;
667
727
  const now = new Date();
668
- let data = {
669
- conversationId: request.data.conversationId,
728
+ const data = {
729
+ conversationId,
670
730
  closedAt: now,
671
731
  };
672
732
  const del = request.type === 'delete';
673
733
  if (del) {
674
734
  data.deletedAt = now;
675
735
  }
676
- let type = await this.closeDeleteConversation(data, del);
736
+ const type = await this.closeDeleteConversation(data, del);
677
737
  if (type) {
678
- this.send({ type, clientMessageId: request.clientMessageId, data });
679
- return this.publishMessage(type, request.clientMessageId, data, true);
738
+ if (type === "updated") {
739
+ delete data.closedAt;
740
+ delete data.deletedAt;
741
+ data.updatedAt = now;
742
+ }
743
+ this.send({ type, clientMessageId, data });
744
+ return this.publishMessage(type, clientMessageId, data, true);
680
745
  }
681
746
  }
682
747
  break;
748
+ case 'find':
749
+ await this.findMessages(request.data, clientMessageId);
750
+ return true;
683
751
  case 'load':
684
- await this.loadConversations(request.data, request.clientMessageId);
752
+ await this.loadConversations(request.data, clientMessageId);
685
753
  return true;
686
754
  case 'update':
687
755
  {
688
- let data = {
689
- conversationId: request.data.conversationId,
690
- title: request.data.title,
691
- participants: request.data.participants,
756
+ const { conversationId, title, participants } = request.data;
757
+ const participantsSet = new Set([this.id]);
758
+ participants?.forEach(p => participantsSet.add(p.trim()));
759
+ const data = {
760
+ conversationId,
761
+ title,
762
+ participants: Array.from(participantsSet),
692
763
  updatedAt: new Date(),
693
764
  };
694
765
  if (await this.updateConversation(data)) {
695
766
  const type = 'updated';
696
- this.send({ type, clientMessageId: request.clientMessageId, data });
697
- return this.publishMessage(type, request.clientMessageId, data, true);
767
+ this.send({ type, clientMessageId, data });
768
+ return this.publishMessage(type, clientMessageId, data, true);
698
769
  }
699
770
  }
700
771
  break;
@@ -703,12 +774,12 @@ export class WsClient {
703
774
  }
704
775
  async processConversationRequest(request) {
705
776
  if (!request.data) {
706
- this.lastError = 'Wrong message';
777
+ this.lastError = ErrorMessage.WrongMessage;
707
778
  return false;
708
779
  }
709
780
  const verifyConversation = () => {
710
781
  if (this.conversation.closedAt) {
711
- this.lastError = 'Conversation closed';
782
+ this.lastError = ErrorMessage.ConversationClosed;
712
783
  return false;
713
784
  }
714
785
  return true;
@@ -725,30 +796,29 @@ export class WsClient {
725
796
  return false;
726
797
  }
727
798
  if (!request.data.name) {
728
- this.lastError = 'Wrong file name';
799
+ this.lastError = ErrorMessage.WrongFileName;
729
800
  return false;
730
801
  }
731
802
  break;
732
803
  case 'message-update':
804
+ request.data.updatedAt = new Date();
733
805
  if (!await this.updateMessage(request.data)) {
734
806
  return false;
735
807
  }
736
808
  broadcastType = 'message-updated';
737
809
  break;
738
810
  case 'message-delete':
811
+ request.data.deletedAt = new Date();
739
812
  if (!await this.deleteMessage(request.data)) {
740
813
  return false;
741
814
  }
742
815
  broadcastType = 'message-deleted';
743
816
  break;
744
- case 'find':
745
- await this.findMessages(request.data, request.clientMessageId);
746
- return true;
747
817
  case 'load-messages':
748
818
  await this.loadMessages(request.data, request.clientMessageId);
749
819
  return true;
750
820
  default:
751
- this.lastError = 'Wrong message type';
821
+ this.lastError = ErrorMessage.WrongMessageType;
752
822
  return false;
753
823
  }
754
824
  return this.publishMessage(broadcastType, request.clientMessageId, request.data, true);
@@ -756,7 +826,7 @@ export class WsClient {
756
826
  async connect(request) {
757
827
  this.id = request?.authInfo && await userStore.authenticate(request.authInfo);
758
828
  if (!this.id) {
759
- this.lastError = 'Authentication failed';
829
+ this.lastError = ErrorMessage.AuthenticationFailed;
760
830
  return false;
761
831
  }
762
832
  this.state = WsClientState.Authenticated;
@@ -777,18 +847,24 @@ export class WsClient {
777
847
  }), { binary: false, fin: true });
778
848
  return this.publishMessage('connected', undefined, null, false);
779
849
  }
780
- async getConversations(from = 0, conversationsSize, excludeIds) {
850
+ async getConversations(from = 0, conversationsSize, ids, excludeIds) {
781
851
  const size = conversationsSize != null && conversationsSize >= 0 ? conversationsSize : defaultSize;
782
- const result = await store.getParticipantConversations(this.id, excludeIds || [], from, size);
783
- const ids = result.conversations.map(c => c.id);
784
- if (!ids?.length) {
785
- return result;
852
+ const result = await store.getParticipantConversations(this.id, ids, excludeIds, from, size);
853
+ if (!result.conversations?.length) {
854
+ return {
855
+ conversations: [],
856
+ from,
857
+ size,
858
+ total: result.total,
859
+ };
786
860
  }
787
- const messagesInfo = await store.getLastMessagesTimestamps(this.id, ids);
861
+ const conversationIds = result.conversations.map(c => c.id);
862
+ const messagesInfo = await store.getLastMessagesTimestamps(this.id, conversationIds);
788
863
  const conversations = result.conversations.map(c => ({
789
- ...c,
790
- leftAt: c.id in messagesInfo ? messagesInfo[c.id].left : undefined,
791
- latestMessage: c.id in messagesInfo ? messagesInfo[c.id].latest : undefined,
864
+ conversation: c,
865
+ leftAt: (c.id) in messagesInfo ? messagesInfo[c.id].left : undefined,
866
+ latestMessage: (c.id) in messagesInfo ? messagesInfo[c.id].latest : undefined,
867
+ connected: c.participants.filter(p => WsClient.joinedParticipants.get(c.id)?.has(p)),
792
868
  }));
793
869
  return {
794
870
  conversations,
@@ -798,20 +874,12 @@ export class WsClient {
798
874
  };
799
875
  }
800
876
  async findMessages(request, clientMessageId) {
801
- const result = await store.getParticipantConversations(this.id, [], request.from ?? 0, request.size ?? defaultSize);
802
- if (request.conversationIds?.length) {
803
- request.conversationIds = Array.from(new Set(result.conversations.map(c => c.id).concat(request.conversationIds)));
804
- }
805
- else {
806
- request.conversationIds = result.conversations.map(c => c.id);
807
- }
877
+ const result = await store.getParticipantConversations(this.id, request.conversationIds, undefined, request.from ?? 0, request.size ?? defaultSize);
878
+ request.conversationIds = result.conversations.map(c => c.id);
808
879
  const findResult = await store.findMessages(request);
809
880
  this.send({ type: 'find', clientMessageId, messages: findResult.messages, from: findResult.from, size: findResult.size, total: findResult.total });
810
881
  }
811
882
  async loadMessages(request, clientMessageId) {
812
- if (!this.conversation?.id) {
813
- return;
814
- }
815
883
  const findRequest = {
816
884
  from: request.from,
817
885
  size: request.size,
@@ -827,7 +895,7 @@ export class WsClient {
827
895
  this.send({ type: 'loaded-messages', clientMessageId, messages: result.messages, count: result.total });
828
896
  }
829
897
  async loadConversations(request, clientMessageId) {
830
- const result = await this.getConversations(request.from, request.size, request.excludeIds);
898
+ const result = await this.getConversations(request.from, request.size, request.ids, request.excludeIds);
831
899
  this.send({ type: 'loaded', clientMessageId, conversations: result.conversations, count: result.total });
832
900
  }
833
901
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,cASX;AATD,WAAY,cAAc;IACtB,sCAAsC;IACtC,+DAAc,CAAA;IACd,uDAAuD;IACvD,mDAAI,CAAA;IACJ,mDAAmD;IACnD,yDAAO,CAAA;IACP,gCAAgC;IAChC,uDAAM,CAAA;AACV,CAAC,EATW,cAAc,KAAd,cAAc,QASzB;AA2CD,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACrB,iDAAQ,CAAA;IACR,mEAAiB,CAAA;IACjB,2DAAa,CAAA;IACb,uDAAW,CAAA;IACX,iEAAgB,CAAA;IAChB,mEAAmB,CAAA;AACvB,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;AAEhG,MAAM,qBAAqB,GAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAEnF,MAAM,KAAK,GAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,IAAI,UAAU,GAAW,SAAU,CAAC;AACpC,IAAI,MAAuB,CAAC;AAC5B,IAAI,KAAK,GAAiB,SAAU,CAAC;AACrC,IAAI,KAAK,GAAiB,SAAU,CAAC;AACrC,IAAI,SAAS,GAAc,SAAU,CAAC;AAEtC,MAAM,OAAO,QAAQ;IACjB,qDAAqD;IAC9C,MAAM,CAAU,gBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC1D,MAAM,CAAU,QAAQ,GAA0B,IAAI,GAAG,EAAE,CAAC;IAC5D,MAAM,CAAU,aAAa,GAAkC,IAAI,GAAG,EAAE,CAAC;IAExE,MAAM,CAAU,kBAAkB,GAA6B,IAAI,GAAG,EAAE,CAAC;IAE1E,YAAY,CAAU;IACtB,YAAY,CAAgB;IAC5B,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC;IAC3B,EAAE,CAAU;IAEF,SAAS,CAAY;IAC9B,SAAS,CAAU;IAE3B,YAAY,CAAY;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAEnB,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,YAA0B,EAAE,EAAY;QAC3D,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAG,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,GAAG,EAAE,YAAY,EAAE,IAAI,GAAG,CAAS,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACnF,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAG,EAAE,IAAI,CAAC,CAAC;YACnD,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAG,CAAC,CAAA;QACxD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBACvC,MAAM,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,cAAsB,EAAE,EAAY;QAC5D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAE9C,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC5B,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBACnE,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,EAAY;QACtC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACR,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,EAAY;QACzC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAE/C,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACzC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,CAAC;oBAChB,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;wBACjB,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;4BAC5B,OAAO;wBACX,CAAC;oBACL,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,MAAc,EAAE,MAAkC;QAChF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAgB,IAAI,GAAG,CAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvD,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAC/C,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,cAAsB;QACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC;QAED,IAAI,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEnE,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,OAAO;YACX,CAAC;YAED,YAAY,GAAG,IAAI,GAAG,CAAS,YAAY,CAAC,YAAY,CAAC,CAAC;YAC1D,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,cAAsB,EAAE,MAA4D,EAAE,CAAY;QACnI,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC1B,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAY,CAAC,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC1B,MAAM,YAAY,GAA4B,MAAM,QAAQ,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC;YACzG,YAAY,EAAE,OAAO,CACjB,EAAE,CAAC,EAAE;gBACD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzC,IAAI,MAAM,EAAE,CAAC;oBACT,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAY,CAAC,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/B,CAAC;YACL,CAAC,CACJ,CAAC;QACN,CAAC;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,cAAsB;QACxD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAExD,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,KAAK,GAAG,CAAC,CAAc,EAAE,CAAW,EAAE,EAAE;gBAC1C,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC,CAAA;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtD,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAS,YAAY,CAAC,YAAY,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAgB;QACtD,MAAM,EAAE,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAE/D,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,IAAI,EAAE,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC7B,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;iBACI,CAAC;gBACF,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;YAED,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBACxC,IAAI,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;oBACtE,EAAE,CAAC,IAAI,CAAC;wBACJ,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,YAAY,EAAE,EAAE,CAAC,YAAY;wBAC7B,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,SAAS,EAAE,EAAE,CAAC,SAAS;qBAC1B,CAAC,CAAC;gBACP,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,OAAO;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,cAAc,GAAI,EAAE,CAAC,IAA2B,CAAC,cAAc,IAAI,EAAE,CAAC,cAAc,CAAC;YAC3F,IAAI,cAAc,EAAE,CAAC;gBACjB,MAAM,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;oBAC3D,IAAI,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;wBACtE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChB,CAAC;oBAED,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE,KAAK,cAAc,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAClE,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7B,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACxB,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBACvD,CAAC;YACL,CAAC;YAED,OAAO;QACX,CAAC;QAED,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YACd,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACP,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;oBACnB,MAAM;gBACV,CAAC;YACL,iBAAiB;YACjB,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM,CAAC;YACZ,KAAK,iBAAiB,CAAC;YACvB,KAAK,iBAAiB;gBAClB,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC;oBACpB,MAAM,GAAG,GAAa,EAAE,CAAC;oBACzB,MAAM,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;wBAC9D,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChB,CAAC,EAAE,GAAG,CAAC,CAAC;gBACZ,CAAC;gBACD,MAAM;YAEV,KAAK,SAAS;gBACV,CAAC;oBACG,MAAM,cAAc,GAAI,EAAE,CAAC,IAA2B,CAAC,cAAc,IAAI,EAAE,CAAC,cAAc,CAAC;oBAE3F,IAAI,cAAc,EAAE,CAAC;wBACjB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;wBAEhE,MAAM,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE;4BACtE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BAEZ,IAAI,OAAO,IAAI,KAAK,KAAK,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,CAAC;gCACjD,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BAC7B,CAAC;wBACL,CAAC,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;gBACD,MAAM;QACd,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,IAAsB,EAAE,eAAmC,EAAE,IAAiB,EAAE,IAAa;QACtH,IAAI,EAAE,GAAuB,SAAS,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE7B,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,CAAC,GAAiB;gBACpB,IAAI,EAAE,IAAwB;gBAC9B,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE;gBACrC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY;gBAC7C,YAAY,EAAE,IAAI,CAAC,YAAa;gBAChC,eAAe,EAAE,eAAe;gBAChC,MAAM,EAAE,IAAI,CAAC,EAAG;gBAChB,SAAS;gBACT,IAAI,EAAE,IAAmB;aAC5B,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACtC,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAK,KAAK,CAAC,WAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtF,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC;gBACvB,IAAI;gBACJ,EAAE;gBACF,UAAU;gBACV,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE;gBACrC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY;gBAC7C,YAAY,EAAE,IAAI,CAAC,YAAa;gBAChC,MAAM,EAAE,IAAI,CAAC,EAAG;gBAChB,eAAe,EAAE,eAAe;gBAChC,SAAS;gBACT,IAAI,EAAE,IAAwB;aACjC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,IAAI,CAAC,GAAY;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,KAAK,cAAc,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzG,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,iBAAyB,EAAE,GAAS;QACnD,IAAI,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,YAAY,EAAE,CAAC;YAC5C,OAAO;QACX,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC;QAExC,MAAM,YAAY,GAAG,GAAG,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC;QAEtB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvC,IAAI,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;gBACjE,iBAAiB,IAAI,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,GAAG,iBAAiB,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9G,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YACtF,OAAO;QACX,CAAC;QAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;YAC1C,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,KAAK;QACf,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC;QAExC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAExD,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;QAE/C,MAAM,EAAE,KAAK,CAAC,wBAAwB,IAAI,CAAC,EAAE,qBAAqB,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,OAAgB;QAC/B,IAAI,YAAsC,CAAC;QAC3C,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAmB,CAAC;QAEzC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,YAAY,GAAG,MAAM,KAAK,CAAC,8BAA8B,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACxF,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC;gBACtC,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAClG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;YAE3B,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,GAAG,0BAA0B,CAAC;gBAC5C,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,cAAkC,CAAC;YAEvC,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEnD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;gBACxC,cAAc,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrG,IAAI,CAAC,cAAc,EAAE,CAAC;oBAClB,IAAI,CAAC,SAAS,GAAG,oDAAoD,CAAC;oBACtE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC9B,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,YAAY,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,SAAS,GAAG,6BAA6B,CAAC;gBAC/C,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,MAAM,wBAAwB,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,GAAG,CAAS,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEvG,IAAI,CAAC,wBAAwB;mBACtB,YAAY,CAAC,IAAI,KAAK,wBAAwB,CAAC,IAAI;mBACnD,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAEnE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBAEvB,YAAY,GAAG;oBACX,EAAE,EAAE,cAAc;oBAClB,YAAY,EAAE,iBAAiB;oBAC/B,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK;oBACxC,SAAS,EAAE,YAAY,EAAE,SAAS,IAAI,IAAI,CAAC,EAAG;oBAC9C,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;oBACpD,SAAS,EAAE,YAAY,EAAE,SAAS,IAAI,GAAG;iBAC5C,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBAE5D,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC;gBAExC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC5C,MAAM,EAAE,KAAK,CAAC,6BAA6B,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;oBACrE,IAAI,CAAC,SAAS,GAAG,0BAA0B,CAAC;oBAC5C,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,YAAY,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC;YACnC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;QAEnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,MAAM,QAAQ,CAAC,SAAS,CAAC,YAAa,EAAE,IAAI,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QAEnG,IAAI,WAAW,GAA6B,SAAS,CAAC;QACtD,IAAI,WAAW,GAA2B,SAAS,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,EAAE,GAAgB;gBACpB,IAAI;gBACJ,eAAe,EAAE,CAAC,YAAa,CAAC,EAAG,CAAC;gBACpC,KAAK;gBACL,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,IAAI;aACjB,CAAA;YAED,WAAW,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC3C,WAAW,GAAG,MAAM,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAG,EAAE,YAAa,CAAC,EAAG,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,SAAS,GAAG,YAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3F,MAAM,MAAM,GAAG;YACX,IAAI,EAAE,cAAc;YACpB,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,YAAY;YACZ,SAAS;YACT,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,OAAO,EAAE;YACzC,KAAK,EAAE,WAAW,EAAE,KAAK;YACzB,MAAM,EAAE,WAAW,EAAE,SAAS;YAC9B,QAAQ,EAAE,YAAa,CAAC,QAAQ;SACnC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElB,MAAM,EAAE,KAAK,CAAC,kBAAkB,IAAI,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAEO,SAAS,CAAC,IAAY,EAAE,QAAiB;QAC7C,IAAI,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,YAAY,MAAM,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEjD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;wBACnC,IAAI,CAAC,MAAM,EAAE,CAAC;4BACV,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;wBACvC,CAAC;oBACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBACT,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;oBAEH,OAAO;gBACX,CAAC;YACL,CAAC;YAED,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACjB,KAAK,aAAa,CAAC,IAAI;oBACnB,CAAC;wBACG,MAAM,OAAO,GAAmB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;4BAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;gCACZ,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;4BAChC,CAAC;wBACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;4BACT,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;wBACnC,CAAC,CAAC,CAAC;oBACP,CAAC;oBACD,MAAM;gBACV,KAAK,aAAa,CAAC,SAAS;oBACxB,CAAC;wBACG,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAErD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;4BACnB,KAAK,MAAM;gCACP,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oCAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;wCACZ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oCAC7B,CAAC;gCACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oCACT,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;gCAChC,CAAC,CAAC,CAAC;gCACH,MAAM;4BACV,KAAK,OAAO;gCACR,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oCACnB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;gCACjC,CAAC,CAAC,CAAC;gCACH,MAAM;4BACV;gCACI,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;wBAC9C,CAAC;oBACL,CAAC;oBACD,MAAM;gBACV,KAAK,aAAa,CAAC,OAAO,CAAC;gBAC3B,KAAK,aAAa,CAAC,YAAY;oBAC3B,CAAC;wBACG,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAErD,IAAI,OAAO,EAAE,CAAC;4BACV,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gCACnD,IAAI,CAAC,MAAM,EAAE,CAAC;oCACV,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;gCACnD,CAAC;4BACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gCACT,IAAI,CAAC,IAAI,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAC;4BACtD,CAAC,CAAC,CAAC;wBACP,CAAC;6BAAM,CAAC;4BACJ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBAC/B,CAAC;oBACL,CAAC;oBACD,MAAM;gBACV,KAAK,aAAa,CAAC,YAAY;oBAC3B,MAAM;YACd,CAAC;QACL,CAAC;QACD,OAAO,CAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAEO,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YAE9B,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;gBACxB,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAClD,MAAM,EAAE,KAAK,CAAC,kBAAkB,IAAI,CAAC,EAAE,uBAAuB,CAAC,CAAC;YACpE,CAAC;iBACI,IAAI,aAAa,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBACjD,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,EAAE,KAAK,CAAC,wBAAwB,IAAI,CAAC,EAAE,uBAAuB,CAAC,CAAC;YAC1E,CAAC;YAED,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAsB;QAC9C,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC;YACxC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;YACxB,eAAe,EAAE,CAAC,IAAI,CAAC,YAAa,CAAC,EAAG,CAAC;SAC5C,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,uCAAuC,CAAC;YACzD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,KAAK,CAAC,0BAA0B,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAC;YACzC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,EAAE,KAAK,CAAC,mBAAmB,OAAO,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAExE,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAsB;QAC9C,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC;YACxC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;YACxB,eAAe,EAAE,CAAC,IAAI,CAAC,YAAa,CAAC,EAAG,CAAC;SAC5C,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,uCAAuC,CAAC;YACzD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACP,CAAC;oBACG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAsB,CAAC;oBAC1D,OAAO,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC9C,CAAC;gBACD,MAAM;YACV,KAAK,MAAM;gBACP,CAAC;oBACG,MAAM,EAAE,IAAI,EAAE,GAAG,OAAsB,CAAC;oBACxC,OAAO,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC;gBAC5B,CAAC;gBACD,MAAM;QACd,CAAC;QAED,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,KAAK,CAAC,0BAA0B,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAC;YACzC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,EAAE,KAAK,CAAC,mBAAmB,OAAO,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAExE,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAwB;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAEpH,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;YACtD,sCAAsC;YACtC,IAAI,CAAC,SAAS,GAAG,4CAA4C,CAAC;YAC9D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEhC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAExC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;QAEvD,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAE5D,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,KAAK,CAAC,+BAA+B,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;YACvE,IAAI,CAAC,SAAS,GAAG,4BAA4B,CAAC;YAC9C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,EAAE,KAAK,CAAC,wBAAwB,YAAY,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAElF,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAwB,EAAE,GAAY;QACxE,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,+BAA+B,CAAC;YACjD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,+CAA+C;YAC/C,IAAI,CAAC,SAAS,GAAG,wBAAwB,CAAC;YAC1C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,6BAA6B,CAAC;YAC/C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,8BAA8B,CAAC;YAChD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,GAAqB,SAAS,CAAC;QAEvC,IAAI,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;YACrC,+CAA+C;YAC/C,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAEtC,IAAI,GAAG,EAAE,CAAC;gBACN,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBACxC,IAAI,GAAG,SAAS,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,IAAI,GAAG,QAAQ,CAAC;YACpB,CAAC;QACL,CAAC;aAAM,IAAI,GAAG,EAAE,CAAC;YACb,oBAAoB;YACpB,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC;YAC/C,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;YACjF,IAAI,KAAK,KAAK,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC7C,IAAI,CAAC,SAAS,GAAG,4CAA4C,CAAC;gBAC9D,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,GAAG,2CAA2C,CAAC;YAC7D,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAE5D,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,KAAK,CAAC,8BAA8B,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;YACtE,IAAI,CAAC,SAAS,GAAG,2BAA2B,CAAC;YAC7C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,EAAE,KAAK,CAAC,wBAAwB,YAAY,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAElF,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAAgB;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACT,CAAC;oBACG,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,IAAI,IAAI,GAAuB;wBAC3B,cAAc,EAAG,OAAO,CAAC,IAA2B,CAAC,cAAc;wBACnE,QAAQ,EAAE,GAAG;qBAChB,CAAC;oBAEF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;oBACtC,IAAI,GAAG,EAAE,CAAC;wBACN,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;oBACzB,CAAC;oBAED,IAAI,IAAI,GAA4B,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAClF,IAAI,IAAI,EAAE,CAAC;wBAEP,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;wBAEpE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;oBACzE,CAAC;gBACL,CAAC;gBACD,MAAM;YACV,KAAK,MAAM;gBACP,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAmB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;gBACnF,OAAO,IAAI,CAAC;YAChB,KAAK,QAAQ;gBACT,CAAC;oBACG,IAAI,IAAI,GAAuB;wBAC3B,cAAc,EAAG,OAAO,CAAC,IAA2B,CAAC,cAAc;wBACnE,KAAK,EAAG,OAAO,CAAC,IAA2B,CAAC,KAAK;wBACjD,YAAY,EAAG,OAAO,CAAC,IAA2B,CAAC,YAAY;wBAC/D,SAAS,EAAE,IAAI,IAAI,EAAE;qBACxB,CAAC;oBAEF,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;wBACtC,MAAM,IAAI,GAAqB,SAAS,CAAC;wBAEzC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;wBAEpE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;oBACzE,CAAC;gBACL,CAAC;gBACD,MAAM;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,OAAgB;QACrD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,kBAAkB,GAAG,GAAG,EAAE;YAC5B,IAAI,IAAI,CAAC,YAAa,CAAC,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC;gBACvC,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA;QAED,IAAI,aAAa,GAAG,OAAO,CAAC,IAAwB,CAAC;QAErD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACP,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,IAAI,CAAE,OAAO,CAAC,IAAoB,CAAC,IAAI,EAAE,CAAC;oBACtC,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;oBACnC,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,MAAM;YACV,KAAK,gBAAgB;gBACjB,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAqB,CAAC,EAAE,CAAC;oBAC3D,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,aAAa,GAAG,iBAAiB,CAAC;gBAClC,MAAM;YACV,KAAK,gBAAgB;gBACjB,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAqB,CAAC,EAAE,CAAC;oBAC3D,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,aAAa,GAAG,iBAAiB,CAAC;gBAClC,MAAM;YACV,KAAK,MAAM;gBACP,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAmB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC9E,OAAO,IAAI,CAAC;YAChB,KAAK,eAAe;gBAChB,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAmB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC9E,OAAO,IAAI,CAAC;YAChB;gBACI,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC;gBACtC,OAAO,KAAK,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAAuB;QAEzC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE9E,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAC;YACzC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC;QAEzC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAEjE,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,KAAK,CAAC,2BAA2B,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC;YAChE,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC;QAErC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC;QAEjC,MAAM,EAAE,KAAK,CAAC,2BAA2B,IAAI,CAAC,YAAY,YAAY,CAAC,CAAC;QAExE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAEhF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC/B,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa;SAChB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAAe,CAAC,EAAE,iBAA0B,EAAE,UAAqB;QAE9F,MAAM,IAAI,GAAG,iBAAiB,IAAI,IAAI,IAAI,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC;QAEnG,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAG,EAAE,UAAU,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE/F,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAG,CAAC,CAAC;QAEjD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;YACf,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAG,EAAE,GAAG,CAAC,CAAC;QAE1E,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjD,GAAG,CAAC;YACJ,MAAM,EAAE,CAAC,CAAC,EAAG,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACpE,aAAa,EAAE,CAAC,CAAC,EAAG,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAChF,CAAC,CAAC,CAAC;QAEJ,OAAO;YACH,aAAa;YACb,IAAI;YACJ,IAAI;YACJ,KAAK,EAAE,MAAM,CAAC,KAAK;SACtB,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAoB,EAAE,eAAwB;QACrE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAG,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;QAErH,IAAI,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;YAClC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxH,CAAC;aACI,CAAC;YACF,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAG,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,UAAU,GAAe,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEjE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IACvJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAoB,EAAE,eAAwB;QACrE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,MAAM,WAAW,GACjB;YACI,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,IAAI;YACd,eAAe,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,KAAK;YACL,UAAU,EAAE,OAAO,CAAC,UAAU;SACjC,CAAC;QAEF,MAAM,MAAM,GAAe,MAAM,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAEjE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5G,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,OAAoB,EAAE,eAAwB;QAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAE3F,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7G,CAAC;;AAGL,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,GAAS;IAChD,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,MAAM,GAAG,GAAG,CAAC;IACb,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACrB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACrB,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAE7B,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@only-chat/client",
3
- "version": "0.2.0-beta.8",
3
+ "version": "1.0.0",
4
4
  "description": "Client for only-chat",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,19 +17,18 @@
17
17
  "author": "only-chat",
18
18
  "license": "MIT",
19
19
  "devDependencies": {
20
- "@jest/globals": "^29.7.0",
21
- "@only-chat/in-memory-queue": "0.2.0-beta.8",
22
- "@only-chat/in-memory-store": "0.2.0-beta.8",
23
- "@only-chat/in-memory-user-store": "0.2.0-beta.8",
24
- "@only-chat/types": "0.2.0-beta.8",
25
- "@types/jest": "^29.5.12",
26
- "jest": "^29.7.0",
27
- "jest-ts-webcompat-resolver": "^1.0.0",
28
- "ts-jest": "^29.1.4",
20
+ "@jest/globals": "^30.2.0",
21
+ "@only-chat/in-memory-queue": "1.0.0",
22
+ "@only-chat/in-memory-store": "1.0.0",
23
+ "@only-chat/in-memory-user-store": "1.0.0",
24
+ "@only-chat/types": "1.0.0",
25
+ "@types/jest": "^30.0.0",
26
+ "@types/node": "^25.2.3",
27
+ "jest": "^30.2.0",
28
+ "jest-ts-webcompat-resolver": "^1.0.1",
29
+ "ts-jest": "^29.4.6",
29
30
  "ts-node": "^10.9.2",
30
- "typescript": "^5.4.5"
31
- },
32
- "dependencies": {
31
+ "typescript": "^5.9.3"
33
32
  },
34
33
  "files": [
35
34
  "dist/"