@cakemail-org/cakemail-cli 1.3.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +312 -12
  2. package/dist/cli.js +59 -8
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client.d.ts +2 -0
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/client.js +15 -7
  7. package/dist/client.js.map +1 -1
  8. package/dist/commands/account.d.ts +5 -0
  9. package/dist/commands/account.d.ts.map +1 -0
  10. package/dist/commands/account.js +231 -0
  11. package/dist/commands/account.js.map +1 -0
  12. package/dist/commands/attributes.d.ts.map +1 -1
  13. package/dist/commands/attributes.js +43 -15
  14. package/dist/commands/attributes.js.map +1 -1
  15. package/dist/commands/campaigns.d.ts.map +1 -1
  16. package/dist/commands/campaigns.js +255 -26
  17. package/dist/commands/campaigns.js.map +1 -1
  18. package/dist/commands/config.d.ts +8 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +294 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/contacts.d.ts.map +1 -1
  23. package/dist/commands/contacts.js +321 -47
  24. package/dist/commands/contacts.js.map +1 -1
  25. package/dist/commands/interests.d.ts +5 -0
  26. package/dist/commands/interests.d.ts.map +1 -0
  27. package/dist/commands/interests.js +172 -0
  28. package/dist/commands/interests.js.map +1 -0
  29. package/dist/commands/lists.d.ts.map +1 -1
  30. package/dist/commands/lists.js +165 -30
  31. package/dist/commands/lists.js.map +1 -1
  32. package/dist/commands/logs.d.ts +5 -0
  33. package/dist/commands/logs.d.ts.map +1 -0
  34. package/dist/commands/logs.js +237 -0
  35. package/dist/commands/logs.js.map +1 -0
  36. package/dist/commands/reports.d.ts.map +1 -1
  37. package/dist/commands/reports.js +90 -13
  38. package/dist/commands/reports.js.map +1 -1
  39. package/dist/commands/segments.d.ts.map +1 -1
  40. package/dist/commands/segments.js +59 -21
  41. package/dist/commands/segments.js.map +1 -1
  42. package/dist/commands/senders.d.ts.map +1 -1
  43. package/dist/commands/senders.js +46 -12
  44. package/dist/commands/senders.js.map +1 -1
  45. package/dist/commands/suppressed.d.ts.map +1 -1
  46. package/dist/commands/suppressed.js +20 -6
  47. package/dist/commands/suppressed.js.map +1 -1
  48. package/dist/commands/tags.d.ts +5 -0
  49. package/dist/commands/tags.d.ts.map +1 -0
  50. package/dist/commands/tags.js +124 -0
  51. package/dist/commands/tags.js.map +1 -0
  52. package/dist/commands/templates.d.ts.map +1 -1
  53. package/dist/commands/templates.js +11 -3
  54. package/dist/commands/templates.js.map +1 -1
  55. package/dist/commands/transactional-templates.d.ts +5 -0
  56. package/dist/commands/transactional-templates.d.ts.map +1 -0
  57. package/dist/commands/transactional-templates.js +354 -0
  58. package/dist/commands/transactional-templates.js.map +1 -0
  59. package/dist/types/profile.d.ts +92 -0
  60. package/dist/types/profile.d.ts.map +1 -0
  61. package/dist/types/profile.js +119 -0
  62. package/dist/types/profile.js.map +1 -0
  63. package/dist/utils/auth.d.ts +33 -0
  64. package/dist/utils/auth.d.ts.map +1 -0
  65. package/dist/utils/auth.js +226 -0
  66. package/dist/utils/auth.js.map +1 -0
  67. package/dist/utils/config-file.d.ts +99 -0
  68. package/dist/utils/config-file.d.ts.map +1 -0
  69. package/dist/utils/config-file.js +259 -0
  70. package/dist/utils/config-file.js.map +1 -0
  71. package/dist/utils/config.d.ts +13 -2
  72. package/dist/utils/config.d.ts.map +1 -1
  73. package/dist/utils/config.js +82 -8
  74. package/dist/utils/config.js.map +1 -1
  75. package/dist/utils/confirm.d.ts +38 -0
  76. package/dist/utils/confirm.d.ts.map +1 -0
  77. package/dist/utils/confirm.js +124 -0
  78. package/dist/utils/confirm.js.map +1 -0
  79. package/dist/utils/defaults.d.ts +39 -0
  80. package/dist/utils/defaults.d.ts.map +1 -0
  81. package/dist/utils/defaults.js +195 -0
  82. package/dist/utils/defaults.js.map +1 -0
  83. package/dist/utils/errors.d.ts +67 -0
  84. package/dist/utils/errors.d.ts.map +1 -0
  85. package/dist/utils/errors.js +395 -0
  86. package/dist/utils/errors.js.map +1 -0
  87. package/dist/utils/interactive.d.ts +97 -0
  88. package/dist/utils/interactive.d.ts.map +1 -0
  89. package/dist/utils/interactive.js +265 -0
  90. package/dist/utils/interactive.js.map +1 -0
  91. package/dist/utils/list-defaults.d.ts +33 -0
  92. package/dist/utils/list-defaults.d.ts.map +1 -0
  93. package/dist/utils/list-defaults.js +52 -0
  94. package/dist/utils/list-defaults.js.map +1 -0
  95. package/dist/utils/output.d.ts +72 -2
  96. package/dist/utils/output.d.ts.map +1 -1
  97. package/dist/utils/output.js +407 -38
  98. package/dist/utils/output.js.map +1 -1
  99. package/dist/utils/progress.d.ts +139 -0
  100. package/dist/utils/progress.d.ts.map +1 -0
  101. package/dist/utils/progress.js +216 -0
  102. package/dist/utils/progress.js.map +1 -0
  103. package/package.json +19 -3
@@ -1,22 +1,62 @@
1
1
  import Table from 'cli-table3';
2
2
  import chalk from 'chalk';
3
3
  export class OutputFormatter {
4
- formatGetter;
5
- constructor(formatOrGetter = 'json') {
4
+ constructor(formatOrGetter = 'json', profileConfigGetter) {
6
5
  if (typeof formatOrGetter === 'function') {
7
6
  this.formatGetter = formatOrGetter;
8
7
  }
9
8
  else {
10
9
  this.formatGetter = () => formatOrGetter;
11
10
  }
11
+ this.profileConfigGetter = profileConfigGetter;
12
12
  }
13
13
  getFormat() {
14
14
  return this.formatGetter();
15
15
  }
16
+ getProfileConfig() {
17
+ return this.profileConfigGetter?.();
18
+ }
19
+ /**
20
+ * Get profile config (public accessor for commands)
21
+ */
22
+ getProfile() {
23
+ return this.getProfileConfig();
24
+ }
25
+ getColorScheme() {
26
+ return this.getProfileConfig()?.output.colors || 'rich';
27
+ }
28
+ shouldShowTips() {
29
+ return this.getProfileConfig()?.output.show_tips ?? true;
30
+ }
31
+ /**
32
+ * Apply color based on profile's color scheme
33
+ */
34
+ applyColor(text, colorFn) {
35
+ const scheme = this.getColorScheme();
36
+ switch (scheme) {
37
+ case 'none':
38
+ return text; // No colors
39
+ case 'minimal':
40
+ // Only basic colors for minimal scheme
41
+ return colorFn === chalk.red || colorFn === chalk.green ? colorFn(text) : text;
42
+ case 'moderate':
43
+ case 'rich':
44
+ default:
45
+ return colorFn(text); // Full colors
46
+ }
47
+ }
48
+ /**
49
+ * Conditionally show tip based on profile
50
+ */
51
+ showTip(message) {
52
+ if (this.shouldShowTips()) {
53
+ console.log(this.applyColor('💡 ', chalk.gray) + this.applyColor(message, chalk.gray));
54
+ }
55
+ }
16
56
  output(data, fields) {
17
57
  switch (this.getFormat()) {
18
58
  case 'json':
19
- console.log(JSON.stringify(data, null, 2));
59
+ this.outputJson(data);
20
60
  break;
21
61
  case 'table':
22
62
  this.outputTable(data, fields);
@@ -35,6 +75,33 @@ export class OutputFormatter {
35
75
  info(message) {
36
76
  console.log(chalk.blue('ℹ'), message);
37
77
  }
78
+ warning(message) {
79
+ console.log(chalk.yellow('⚠'), message);
80
+ }
81
+ /**
82
+ * Output JSON with syntax highlighting
83
+ */
84
+ outputJson(data) {
85
+ const jsonString = JSON.stringify(data, null, 2);
86
+ const highlighted = this.highlightJson(jsonString);
87
+ console.log(highlighted);
88
+ }
89
+ /**
90
+ * Syntax highlighting for JSON output
91
+ */
92
+ highlightJson(jsonString) {
93
+ return jsonString
94
+ // Keys (property names)
95
+ .replace(/"([^"]+)":/g, (match, key) => `${chalk.cyan(`"${key}":`)}`)
96
+ // String values
97
+ .replace(/: "([^"]*)"/g, (match, value) => `: ${chalk.green(`"${value}"`)}`)
98
+ // Numbers
99
+ .replace(/: (\d+\.?\d*)/g, (match, num) => `: ${chalk.yellow(num)}`)
100
+ // Booleans
101
+ .replace(/: (true|false)/g, (match, bool) => `: ${bool === 'true' ? chalk.magenta('true') : chalk.magenta('false')}`)
102
+ // Null
103
+ .replace(/: null/g, `: ${chalk.gray('null')}`);
104
+ }
38
105
  outputTable(data, fields) {
39
106
  if (!data) {
40
107
  console.log('No data');
@@ -42,32 +109,97 @@ export class OutputFormatter {
42
109
  }
43
110
  // Handle paginated responses with 'data' property
44
111
  let items = data;
112
+ let pagination = {};
45
113
  if (data.data && Array.isArray(data.data)) {
46
114
  items = data.data;
47
- // Show pagination info if available
48
- if (data.count !== undefined) {
49
- console.log(chalk.gray(`Total: ${data.count} items`));
50
- }
115
+ // Handle both old format (count/page/per_page at root) and new format (nested in pagination object)
116
+ const paginationSource = data.pagination || data;
117
+ pagination = {
118
+ count: paginationSource.count || data.count,
119
+ page: paginationSource.page || data.page,
120
+ perPage: paginationSource.per_page || data.per_page,
121
+ totalPages: (paginationSource.count || data.count) && (paginationSource.per_page || data.per_page)
122
+ ? Math.ceil((paginationSource.count || data.count) / (paginationSource.per_page || data.per_page))
123
+ : undefined
124
+ };
51
125
  }
52
126
  // Ensure we have an array
53
127
  items = Array.isArray(items) ? items : [items];
128
+ // Filter out undefined/null items
129
+ items = items.filter((item) => item !== null && item !== undefined);
54
130
  if (items.length === 0) {
55
- console.log('No results');
131
+ console.log(chalk.gray('No results'));
56
132
  return;
57
133
  }
134
+ // Show enhanced pagination info
135
+ this.displayPaginationHeader(pagination, items.length);
58
136
  // Determine which fields to show
59
137
  const keys = fields || this.getDisplayFields(items[0]);
60
- const table = new Table({
61
- head: keys.map(k => chalk.cyan(k)),
138
+ const tableOptions = {
139
+ head: keys.map(k => chalk.cyan.bold(k)),
62
140
  style: {
63
141
  head: [],
64
142
  border: ['gray']
65
143
  }
66
- });
144
+ };
145
+ // Only add colWidths if we have specific widths to set
146
+ const colWidths = this.calculateColumnWidths(items, keys);
147
+ if (colWidths) {
148
+ tableOptions.colWidths = colWidths;
149
+ }
150
+ const table = new Table(tableOptions);
67
151
  items.forEach((item) => {
68
- table.push(keys.map(k => this.formatValue(item[k])));
152
+ table.push(keys.map(k => this.formatTableValue(item, k)));
69
153
  });
70
154
  console.log(table.toString());
155
+ // Show pagination footer with hints
156
+ this.displayPaginationFooter(pagination);
157
+ }
158
+ /**
159
+ * Display pagination header with item counts
160
+ */
161
+ displayPaginationHeader(pagination, itemCount) {
162
+ if (!pagination.count)
163
+ return;
164
+ const start = ((pagination.page || 1) - 1) * (pagination.perPage || itemCount) + 1;
165
+ const end = start + itemCount - 1;
166
+ const parts = [
167
+ chalk.gray(`Showing ${chalk.white(`${this.formatNumber(start)}-${this.formatNumber(end)}`)} of ${chalk.white(this.formatNumber(pagination.count))}`),
168
+ ];
169
+ if (pagination.totalPages) {
170
+ parts.push(chalk.gray(`• Page ${chalk.white(pagination.page || 1)} of ${chalk.white(pagination.totalPages)}`));
171
+ }
172
+ console.log(parts.join(' '));
173
+ console.log(); // Empty line for spacing
174
+ }
175
+ /**
176
+ * Display pagination footer with navigation hints
177
+ */
178
+ displayPaginationFooter(pagination) {
179
+ if (!pagination.totalPages || pagination.totalPages <= 1)
180
+ return;
181
+ const currentPage = pagination.page || 1;
182
+ const hasNext = currentPage < pagination.totalPages;
183
+ const hasPrev = currentPage > 1;
184
+ if (hasNext || hasPrev) {
185
+ console.log(); // Empty line for spacing
186
+ const hints = [];
187
+ if (hasPrev) {
188
+ hints.push(chalk.gray(`Previous: ${chalk.cyan(`--page ${currentPage - 1}`)}`));
189
+ }
190
+ if (hasNext) {
191
+ hints.push(chalk.gray(`Next: ${chalk.cyan(`--page ${currentPage + 1}`)}`));
192
+ }
193
+ console.log(chalk.gray('💡 ') + hints.join(' • '));
194
+ }
195
+ }
196
+ /**
197
+ * Calculate optimal column widths
198
+ */
199
+ calculateColumnWidths(items, keys) {
200
+ // Let cli-table3 handle width automatically for now
201
+ // Could implement smart width calculation in the future
202
+ return undefined;
71
203
  }
72
204
  getDisplayFields(item) {
73
205
  // Common important fields to show first
@@ -94,52 +226,109 @@ export class OutputFormatter {
94
226
  outputCompact(data) {
95
227
  // Handle paginated responses with 'data' property
96
228
  let items = data;
229
+ let pagination = {};
97
230
  if (data.data && Array.isArray(data.data)) {
98
231
  items = data.data;
99
- // Show pagination info if available
100
- if (data.count !== undefined) {
101
- console.log(chalk.gray(`Total: ${data.count} items\n`));
102
- }
232
+ // Handle both old format (count/page/per_page at root) and new format (nested in pagination object)
233
+ const paginationSource = data.pagination || data;
234
+ pagination = {
235
+ count: paginationSource.count || data.count,
236
+ page: paginationSource.page || data.page,
237
+ perPage: paginationSource.per_page || data.per_page,
238
+ totalPages: (paginationSource.count || data.count) && (paginationSource.per_page || data.per_page)
239
+ ? Math.ceil((paginationSource.count || data.count) / (paginationSource.per_page || data.per_page))
240
+ : undefined
241
+ };
103
242
  }
104
243
  if (Array.isArray(items)) {
244
+ // Show enhanced pagination for lists
245
+ if (pagination.count) {
246
+ const start = ((pagination.page || 1) - 1) * (pagination.perPage || items.length) + 1;
247
+ const end = start + items.length - 1;
248
+ console.log(chalk.gray(`Showing ${chalk.white(`${this.formatNumber(start)}-${this.formatNumber(end)}`)} of ${chalk.white(this.formatNumber(pagination.count))}`));
249
+ console.log();
250
+ }
105
251
  items.forEach(item => {
106
- // Try different common field combinations
107
- if (item.id && item.name) {
108
- console.log(`${chalk.yellow(item.id.toString().padStart(6))} ${chalk.white('│')} ${chalk.bold(item.name)}${item.status ? chalk.gray(` (${item.status})`) : ''}`);
109
- }
110
- else if (item.id && item.email) {
111
- console.log(`${chalk.yellow(item.id.toString().padStart(6))} ${chalk.white('│')} ${chalk.bold(item.email)}${item.status ? chalk.gray(` (${item.status})`) : ''}`);
252
+ // Build compact line with status badge
253
+ const idStr = item.id ? chalk.yellow(item.id.toString().padStart(6)) : '';
254
+ const separator = chalk.gray('');
255
+ // Main content (name/email/subject)
256
+ let mainContent = '';
257
+ if (item.name) {
258
+ mainContent = chalk.bold.white(item.name);
112
259
  }
113
- else if (item.id && item.subject) {
114
- console.log(`${chalk.yellow(item.id.toString().padStart(6))} ${chalk.white('│')} ${chalk.bold(item.subject)}${item.status ? chalk.gray(` (${item.status})`) : ''}`);
260
+ else if (item.email) {
261
+ mainContent = chalk.bold.white(item.email);
115
262
  }
116
- else if (item.id) {
117
- console.log(`${chalk.yellow(item.id.toString().padStart(6))} ${chalk.white('│')} ${this.compactObjectSummary(item)}`);
263
+ else if (item.subject) {
264
+ mainContent = chalk.bold.white(item.subject);
118
265
  }
119
266
  else {
120
- console.log(this.compactObjectSummary(item));
267
+ mainContent = this.compactObjectSummary(item);
268
+ }
269
+ // Status badge
270
+ let statusBadge = '';
271
+ if (item.status) {
272
+ statusBadge = ' ' + this.formatStatus(item.status);
273
+ }
274
+ else if (item.confirmed !== undefined) {
275
+ statusBadge = item.confirmed ? chalk.green(' ✓') : chalk.yellow(' ⏳');
121
276
  }
277
+ // Additional metadata (dates, etc.)
278
+ let metadata = '';
279
+ if (item.created_on || item.updated_on || item.scheduled_for) {
280
+ const dateField = item.scheduled_for || item.updated_on || item.created_on;
281
+ metadata = chalk.gray(` • ${this.formatDate(dateField)}`);
282
+ }
283
+ console.log(`${idStr} ${separator} ${mainContent}${statusBadge}${metadata}`);
122
284
  });
285
+ // Show pagination footer
286
+ if (pagination.totalPages && pagination.totalPages > 1) {
287
+ console.log();
288
+ const currentPage = pagination.page || 1;
289
+ const hints = [];
290
+ if (currentPage > 1) {
291
+ hints.push(chalk.gray(`Previous: ${chalk.cyan(`--page ${currentPage - 1}`)}`));
292
+ }
293
+ if (currentPage < pagination.totalPages) {
294
+ hints.push(chalk.gray(`Next: ${chalk.cyan(`--page ${currentPage + 1}`)}`));
295
+ }
296
+ if (hints.length > 0) {
297
+ console.log(chalk.gray('💡 ') + hints.join(' • '));
298
+ }
299
+ }
123
300
  }
124
301
  else if (typeof items === 'object' && items !== null) {
125
302
  // Single object - show key details in a compact card format
126
303
  const obj = items;
127
304
  // Header with ID and name/email/subject
128
- if (obj.id && obj.name) {
129
- console.log(`${chalk.yellow(obj.id.toString())} ${chalk.white('│')} ${chalk.bold(obj.name)}${obj.status ? chalk.gray(` (${obj.status})`) : ''}`);
305
+ const idStr = obj.id ? chalk.yellow(obj.id.toString()) : '';
306
+ const separator = chalk.gray('');
307
+ let mainContent = '';
308
+ if (obj.name) {
309
+ mainContent = chalk.bold.white(obj.name);
310
+ }
311
+ else if (obj.email) {
312
+ mainContent = chalk.bold.white(obj.email);
313
+ }
314
+ else if (obj.subject) {
315
+ mainContent = chalk.bold.white(obj.subject);
130
316
  }
131
- else if (obj.id && obj.email) {
132
- console.log(`${chalk.yellow(obj.id.toString())} ${chalk.white('│')} ${chalk.bold(obj.email)}${obj.status ? chalk.gray(` (${obj.status})`) : ''}`);
317
+ else {
318
+ mainContent = chalk.bold('Details');
133
319
  }
134
- else if (obj.id && obj.subject) {
135
- console.log(`${chalk.yellow(obj.id.toString())} ${chalk.white('│')} ${chalk.bold(obj.subject)}${obj.status ? chalk.gray(` (${obj.status})`) : ''}`);
320
+ let statusBadge = '';
321
+ if (obj.status) {
322
+ statusBadge = ' ' + this.formatStatus(obj.status);
136
323
  }
137
- else if (obj.id) {
138
- console.log(`${chalk.yellow(obj.id.toString())} ${chalk.white('')} ${chalk.bold('Details')}`);
324
+ else if (obj.confirmed !== undefined) {
325
+ statusBadge = obj.confirmed ? chalk.green(' ✓ Confirmed') : chalk.yellow(' ⏳ Pending');
139
326
  }
327
+ console.log(`${idStr} ${separator} ${mainContent}${statusBadge}`);
328
+ console.log();
140
329
  // Show other important fields
141
- const importantFields = ['created_on', 'updated_on', 'scheduled_for', 'type', 'language'];
142
- const shownFields = new Set(['id', 'name', 'email', 'subject', 'status']);
330
+ const importantFields = ['created_on', 'updated_on', 'scheduled_for', 'type', 'language', 'list_id', 'sender_id', 'template_id'];
331
+ const shownFields = new Set(['id', 'name', 'email', 'subject', 'status', 'confirmed']);
143
332
  Object.entries(obj).forEach(([key, value]) => {
144
333
  if (shownFields.has(key))
145
334
  return;
@@ -151,7 +340,15 @@ export class OutputFormatter {
151
340
  // Skip nested objects in compact view
152
341
  return;
153
342
  }
154
- console.log(` ${chalk.gray(key.padEnd(18))} ${chalk.white('│')} ${this.formatValue(value)}`);
343
+ let formattedValue = this.formatValue(value);
344
+ // Apply special formatting for dates and numbers
345
+ if (key.includes('_on') || key.includes('_at') || key.includes('date')) {
346
+ formattedValue = this.formatDate(value);
347
+ }
348
+ else if (typeof value === 'number') {
349
+ formattedValue = chalk.yellow(this.formatNumber(value));
350
+ }
351
+ console.log(` ${chalk.gray(key.padEnd(18))} ${chalk.gray('│')} ${formattedValue}`);
155
352
  }
156
353
  });
157
354
  }
@@ -182,6 +379,178 @@ export class OutputFormatter {
182
379
  });
183
380
  return parts.join(' ');
184
381
  }
382
+ /**
383
+ * Format value for table display with enhanced colors and formatting
384
+ */
385
+ formatTableValue(item, key) {
386
+ const value = item[key];
387
+ // Handle null/undefined
388
+ if (value === null || value === undefined)
389
+ return chalk.gray('—');
390
+ // Status field - apply status-specific colors
391
+ if (key === 'status') {
392
+ return this.formatStatus(value);
393
+ }
394
+ // Confirmed field (for senders)
395
+ if (key === 'confirmed') {
396
+ return value ? chalk.green('✓ Yes') : chalk.yellow('⏳ Pending');
397
+ }
398
+ // Boolean values
399
+ if (typeof value === 'boolean') {
400
+ return value ? chalk.green('✓') : chalk.gray('✗');
401
+ }
402
+ // Date fields - format with relative time
403
+ if (key.includes('_on') || key.includes('_at') || key.includes('date')) {
404
+ return this.formatDate(value);
405
+ }
406
+ // Numbers - format with commas
407
+ if (typeof value === 'number') {
408
+ return chalk.yellow(this.formatNumber(value));
409
+ }
410
+ // Objects/arrays - truncate
411
+ if (typeof value === 'object') {
412
+ const str = JSON.stringify(value);
413
+ return str.length > 50 ? chalk.gray(str.substring(0, 47) + '...') : chalk.gray(str);
414
+ }
415
+ // Strings - truncate if too long
416
+ const str = String(value);
417
+ if (str.length > 60) {
418
+ return str.substring(0, 57) + '...';
419
+ }
420
+ return str;
421
+ }
422
+ /**
423
+ * Format status with color-coded badges
424
+ */
425
+ formatStatus(status) {
426
+ const statusLower = String(status).toLowerCase();
427
+ // Campaign statuses
428
+ if (statusLower === 'draft')
429
+ return chalk.gray('⚪ draft');
430
+ if (statusLower === 'scheduled')
431
+ return chalk.blue('🔵 scheduled');
432
+ if (statusLower === 'sending')
433
+ return chalk.yellow('🟡 sending');
434
+ if (statusLower === 'sent' || statusLower === 'delivered')
435
+ return chalk.green('🟢 sent');
436
+ if (statusLower === 'failed')
437
+ return chalk.red('🔴 failed');
438
+ if (statusLower === 'cancelled')
439
+ return chalk.gray('⚫ cancelled');
440
+ if (statusLower === 'suspended')
441
+ return chalk.yellow('🟠 suspended');
442
+ // Contact statuses
443
+ if (statusLower === 'active')
444
+ return chalk.green('✓ active');
445
+ if (statusLower === 'unsubscribed')
446
+ return chalk.gray('✗ unsubscribed');
447
+ if (statusLower === 'bounced')
448
+ return chalk.red('⚠ bounced');
449
+ // Default - just colorize
450
+ return chalk.white(status);
451
+ }
452
+ /**
453
+ * Format date based on profile settings
454
+ */
455
+ formatDate(dateString) {
456
+ if (!dateString)
457
+ return this.applyColor('—', chalk.gray);
458
+ try {
459
+ let date;
460
+ // Handle Unix timestamps (seconds since epoch)
461
+ // If it's a number and looks like a Unix timestamp (10 digits), convert to milliseconds
462
+ if (typeof dateString === 'number' && dateString > 1000000000 && dateString < 10000000000) {
463
+ date = new Date(dateString * 1000);
464
+ }
465
+ else {
466
+ date = new Date(dateString);
467
+ }
468
+ if (isNaN(date.getTime()))
469
+ return String(dateString);
470
+ const dateFormat = this.getProfileConfig()?.display.date_format || 'relative';
471
+ switch (dateFormat) {
472
+ case 'iso8601':
473
+ return this.formatDateISO(date);
474
+ case 'friendly':
475
+ return this.formatDateFriendly(date);
476
+ case 'relative':
477
+ default:
478
+ return this.formatDateRelative(date);
479
+ }
480
+ }
481
+ catch {
482
+ return String(dateString);
483
+ }
484
+ }
485
+ /**
486
+ * Format date as ISO 8601 (for developer profile)
487
+ */
488
+ formatDateISO(date) {
489
+ return date.toISOString();
490
+ }
491
+ /**
492
+ * Format date in friendly format (for balanced profile)
493
+ * Example: "Oct 12, 2025 10:30 AM"
494
+ */
495
+ formatDateFriendly(date) {
496
+ const now = new Date();
497
+ const diffDay = Math.floor((now.getTime() - date.getTime()) / (1000 * 60 * 60 * 24));
498
+ // Show relative for very recent dates
499
+ if (diffDay === 0) {
500
+ const hours = date.getHours();
501
+ const minutes = date.getMinutes().toString().padStart(2, '0');
502
+ const ampm = hours >= 12 ? 'PM' : 'AM';
503
+ const displayHours = hours % 12 || 12;
504
+ return this.applyColor(`Today ${displayHours}:${minutes} ${ampm}`, chalk.gray);
505
+ }
506
+ else if (diffDay === 1) {
507
+ return this.applyColor('Yesterday', chalk.gray);
508
+ }
509
+ else if (diffDay === -1) {
510
+ return this.applyColor('Tomorrow', chalk.gray);
511
+ }
512
+ // Format: "Oct 12, 2025"
513
+ const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
514
+ const month = months[date.getMonth()];
515
+ const day = date.getDate();
516
+ const year = date.getFullYear();
517
+ return this.applyColor(`${month} ${day}, ${year}`, chalk.gray);
518
+ }
519
+ /**
520
+ * Format date with relative time (for marketer profile)
521
+ * Example: "2 hours ago"
522
+ */
523
+ formatDateRelative(date) {
524
+ const now = new Date();
525
+ const diffMs = now.getTime() - date.getTime();
526
+ const diffSec = Math.floor(diffMs / 1000);
527
+ const diffMin = Math.floor(diffSec / 60);
528
+ const diffHour = Math.floor(diffMin / 60);
529
+ const diffDay = Math.floor(diffHour / 24);
530
+ // Show relative time for recent dates
531
+ if (diffSec < 60)
532
+ return this.applyColor('just now', chalk.gray);
533
+ if (diffMin < 60)
534
+ return this.applyColor(`${diffMin}m ago`, chalk.gray);
535
+ if (diffHour < 24)
536
+ return this.applyColor(`${diffHour}h ago`, chalk.gray);
537
+ if (diffDay < 7)
538
+ return this.applyColor(`${diffDay}d ago`, chalk.gray);
539
+ // Show formatted date for older dates
540
+ const month = (date.getMonth() + 1).toString().padStart(2, '0');
541
+ const day = date.getDate().toString().padStart(2, '0');
542
+ const year = date.getFullYear();
543
+ return this.applyColor(`${year}-${month}-${day}`, chalk.gray);
544
+ }
545
+ /**
546
+ * Format number with thousands separator
547
+ */
548
+ formatNumber(num) {
549
+ return num.toLocaleString('en-US');
550
+ }
551
+ /**
552
+ * Legacy formatValue for compact mode
553
+ */
185
554
  formatValue(value) {
186
555
  if (value === null || value === undefined)
187
556
  return chalk.gray('null');
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,OAAO,eAAe;IAI1B,YACE,iBAAsD,MAAM,EAC5D,mBAAqD;QAErD,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACjD,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,UAAU;QACf,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;IAC1D,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,IAAY,EAAE,OAAiC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAErC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,CAAC,YAAY;YAC3B,KAAK,SAAS;gBACZ,uCAAuC;gBACvC,OAAO,OAAO,KAAK,KAAK,CAAC,GAAG,IAAI,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACjF,KAAK,UAAU,CAAC;YAChB,KAAK,MAAM,CAAC;YACZ;gBACE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,OAAe;QAC7B,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAS,EAAE,MAAiB;QACjC,QAAQ,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACzB,KAAK,MAAM;gBACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,IAAS;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,UAAkB;QACtC,OAAO,UAAU;YACf,wBAAwB;aACvB,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACrE,gBAAgB;aACf,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5E,UAAU;aACT,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,WAAW;aACV,OAAO,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACrH,OAAO;aACN,OAAO,CAAC,SAAS,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAEO,WAAW,CAAC,IAAS,EAAE,MAAiB;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,kDAAkD;QAClD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,UAAU,GAAQ,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YAClB,oGAAoG;YACpG,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;YACjD,UAAU,GAAG;gBACX,KAAK,EAAE,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;gBAC3C,IAAI,EAAE,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;gBACxC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;gBACnD,UAAU,EAAE,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;oBAChG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAClG,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAE/C,kCAAkC;QAClC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC;QAEzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAEvD,iCAAiC;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvD,MAAM,YAAY,GAAQ;YACxB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,KAAK,EAAE;gBACL,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;SACF,CAAC;QAEF,uDAAuD;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAEtC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE9B,oCAAoC;QACpC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,UAAe,EAAE,SAAiB;QAChE,IAAI,CAAC,UAAU,CAAC,KAAK;YAAE,OAAO;QAE9B,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC;QAElC,MAAM,KAAK,GAAG;YACZ,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;SACrJ,CAAC;QAEF,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACjH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,yBAAyB;IAC1C,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,UAAe;QAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,IAAI,CAAC;YAAE,OAAO;QAEjE,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;QACpD,MAAM,OAAO,GAAG,WAAW,GAAG,CAAC,CAAC;QAEhC,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,yBAAyB;YACxC,MAAM,KAAK,GAAa,EAAE,CAAC;YAE3B,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,UAAU,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,UAAU,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7E,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,KAAY,EAAE,IAAc;QACxD,oDAAoD;QACpD,wDAAwD;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,gBAAgB,CAAC,IAAS;QAChC,wCAAwC;QACxC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAChG,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElC,yDAAyD;QACzD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,mDAAmD;QACnD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,MAAM,GAAG,MAAM,CAAC;YAC3D,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC7B,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC5B,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,IAAS;QAC7B,kDAAkD;QAClD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,UAAU,GAAQ,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YAClB,oGAAoG;YACpG,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;YACjD,UAAU,GAAG;gBACX,KAAK,EAAE,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;gBAC3C,IAAI,EAAE,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;gBACxC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;gBACnD,UAAU,EAAE,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;oBAChG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAClG,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,qCAAqC;YACrC,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtF,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClK,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YAED,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACnB,uCAAuC;gBACvC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAElC,oCAAoC;gBACpC,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,CAAC;qBAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACtB,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7C,CAAC;qBAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACxB,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAChD,CAAC;gBAED,eAAe;gBACf,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrD,CAAC;qBAAM,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACxC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxE,CAAC;gBAED,oCAAoC;gBACpC,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;oBAC3E,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,SAAS,IAAI,WAAW,GAAG,WAAW,GAAG,QAAQ,EAAE,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YAEH,yBAAyB;YACzB,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBACvD,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC;gBACzC,MAAM,KAAK,GAAa,EAAE,CAAC;gBAE3B,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,UAAU,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjF,CAAC;gBACD,IAAI,WAAW,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;oBACxC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,UAAU,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7E,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACvD,4DAA4D;YAC5D,MAAM,GAAG,GAAG,KAAK,CAAC;YAElB,wCAAwC;YACxC,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAElC,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACrB,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACvB,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;YAED,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACvC,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACzF,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,SAAS,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,8BAA8B;YAC9B,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;YACjI,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;YAEvF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3C,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,OAAO;gBACjC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO;gBAElD,yCAAyC;gBACzC,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,EAAE,CAAC;oBAChG,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC9B,sCAAsC;wBACtC,OAAO;oBACT,CAAC;oBAED,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAE7C,iDAAiD;oBACjD,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBACvE,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC1C,CAAC;yBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACrC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC1D,CAAC;oBAED,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;gBACtF,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,GAAQ;QACnC,iDAAiD;QACjD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;QAE5C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC3C,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO;YACtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO;YAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,CAAC,sBAAsB;YAE7D,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAC1D,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,IAAS,EAAE,GAAW;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAExB,wBAAwB;QACxB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElE,8CAA8C;QAC9C,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,gCAAgC;QAChC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClE,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;QAED,0CAA0C;QAC1C,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,+BAA+B;QAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,4BAA4B;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtF,CAAC;QAED,iCAAiC;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACpB,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;QACtC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,MAAc;QACjC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAEjD,oBAAoB;QACpB,IAAI,WAAW,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,WAAW,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnE,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACjE,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzF,IAAI,WAAW,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,WAAW,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClE,IAAI,WAAW,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAErE,mBAAmB;QACnB,IAAI,WAAW,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,WAAW,KAAK,cAAc;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxE,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE7D,0BAA0B;QAC1B,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,UAAe;QAChC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,IAAI,IAAU,CAAC;YAEf,+CAA+C;YAC/C,wFAAwF;YACxF,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,GAAG,UAAU,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;gBAC1F,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAE,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;YAErD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,WAAW,IAAI,UAAU,CAAC;YAE9E,QAAQ,UAAU,EAAE,CAAC;gBACnB,KAAK,SAAS;oBACZ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAClC,KAAK,UAAU;oBACb,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACvC,KAAK,UAAU,CAAC;gBAChB;oBACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,IAAU;QAC9B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,IAAU;QACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAErF,sCAAsC;QACtC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACvC,MAAM,YAAY,GAAG,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,YAAY,IAAI,OAAO,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;QAED,yBAAyB;QACzB,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,IAAU;QACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAE1C,sCAAsC;QACtC,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,QAAQ,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1E,IAAI,OAAO,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvE,sCAAsC;QACtC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,GAAW;QAC9B,OAAO,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAU;QAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/D,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF"}