@provartesting/provardx-cli 1.5.0-beta.1 → 1.5.0-beta.10

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 (78) hide show
  1. package/README.md +137 -13
  2. package/lib/commands/provar/auth/clear.d.ts +7 -0
  3. package/lib/commands/provar/auth/clear.js +36 -0
  4. package/lib/commands/provar/auth/clear.js.map +1 -0
  5. package/lib/commands/provar/auth/login.d.ts +10 -0
  6. package/lib/commands/provar/auth/login.js +90 -0
  7. package/lib/commands/provar/auth/login.js.map +1 -0
  8. package/lib/commands/provar/auth/rotate.d.ts +7 -0
  9. package/lib/commands/provar/auth/rotate.js +42 -0
  10. package/lib/commands/provar/auth/rotate.js.map +1 -0
  11. package/lib/commands/provar/auth/status.d.ts +7 -0
  12. package/lib/commands/provar/auth/status.js +107 -0
  13. package/lib/commands/provar/auth/status.js.map +1 -0
  14. package/lib/mcp/docs/PROVAR_TEST_STEP_REFERENCE.md +1430 -0
  15. package/lib/mcp/licensing/licenseValidator.d.ts +3 -3
  16. package/lib/mcp/licensing/licenseValidator.js +4 -4
  17. package/lib/mcp/prompts/index.d.ts +2 -0
  18. package/lib/mcp/prompts/index.js +19 -0
  19. package/lib/mcp/prompts/index.js.map +1 -0
  20. package/lib/mcp/prompts/loopPrompts.d.ts +6 -0
  21. package/lib/mcp/prompts/loopPrompts.js +435 -0
  22. package/lib/mcp/prompts/loopPrompts.js.map +1 -0
  23. package/lib/mcp/prompts/migrationPrompts.d.ts +4 -0
  24. package/lib/mcp/prompts/migrationPrompts.js +207 -0
  25. package/lib/mcp/prompts/migrationPrompts.js.map +1 -0
  26. package/lib/mcp/rules/provar_best_practices_rules.json +256 -544
  27. package/lib/mcp/server.js +45 -1
  28. package/lib/mcp/server.js.map +1 -1
  29. package/lib/mcp/tools/antTools.d.ts +15 -0
  30. package/lib/mcp/tools/antTools.js +204 -50
  31. package/lib/mcp/tools/antTools.js.map +1 -1
  32. package/lib/mcp/tools/automationTools.d.ts +36 -3
  33. package/lib/mcp/tools/automationTools.js +335 -42
  34. package/lib/mcp/tools/automationTools.js.map +1 -1
  35. package/lib/mcp/tools/bestPracticesEngine.js +161 -23
  36. package/lib/mcp/tools/bestPracticesEngine.js.map +1 -1
  37. package/lib/mcp/tools/connectionTools.d.ts +4 -0
  38. package/lib/mcp/tools/connectionTools.js +168 -0
  39. package/lib/mcp/tools/connectionTools.js.map +1 -0
  40. package/lib/mcp/tools/nitroXTools.d.ts +22 -0
  41. package/lib/mcp/tools/nitroXTools.js +750 -0
  42. package/lib/mcp/tools/nitroXTools.js.map +1 -0
  43. package/lib/mcp/tools/pageObjectGenerate.js +103 -35
  44. package/lib/mcp/tools/pageObjectGenerate.js.map +1 -1
  45. package/lib/mcp/tools/propertiesTools.d.ts +2 -0
  46. package/lib/mcp/tools/propertiesTools.js +277 -39
  47. package/lib/mcp/tools/propertiesTools.js.map +1 -1
  48. package/lib/mcp/tools/qualityHubApiTools.d.ts +3 -0
  49. package/lib/mcp/tools/qualityHubApiTools.js +134 -0
  50. package/lib/mcp/tools/qualityHubApiTools.js.map +1 -0
  51. package/lib/mcp/tools/qualityHubTools.js +127 -19
  52. package/lib/mcp/tools/qualityHubTools.js.map +1 -1
  53. package/lib/mcp/tools/rcaTools.d.ts +3 -2
  54. package/lib/mcp/tools/rcaTools.js +145 -20
  55. package/lib/mcp/tools/rcaTools.js.map +1 -1
  56. package/lib/mcp/tools/testCaseGenerate.js +88 -59
  57. package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
  58. package/lib/mcp/tools/testCaseStepTools.d.ts +4 -0
  59. package/lib/mcp/tools/testCaseStepTools.js +221 -0
  60. package/lib/mcp/tools/testCaseStepTools.js.map +1 -0
  61. package/lib/mcp/tools/testCaseValidate.d.ts +11 -0
  62. package/lib/mcp/tools/testCaseValidate.js +146 -19
  63. package/lib/mcp/tools/testCaseValidate.js.map +1 -1
  64. package/lib/services/auth/credentials.d.ts +21 -0
  65. package/lib/services/auth/credentials.js +75 -0
  66. package/lib/services/auth/credentials.js.map +1 -0
  67. package/lib/services/auth/loginFlow.d.ts +68 -0
  68. package/lib/services/auth/loginFlow.js +216 -0
  69. package/lib/services/auth/loginFlow.js.map +1 -0
  70. package/lib/services/qualityHub/client.d.ts +161 -0
  71. package/lib/services/qualityHub/client.js +226 -0
  72. package/lib/services/qualityHub/client.js.map +1 -0
  73. package/messages/sf.provar.auth.clear.md +16 -0
  74. package/messages/sf.provar.auth.login.md +31 -0
  75. package/messages/sf.provar.auth.rotate.md +23 -0
  76. package/messages/sf.provar.auth.status.md +16 -0
  77. package/oclif.manifest.json +214 -1
  78. package/package.json +8 -4
@@ -12,6 +12,7 @@ import { z } from 'zod';
12
12
  import { makeError, makeRequestId } from '../schemas/common.js';
13
13
  import { log } from '../logging/logger.js';
14
14
  import { assertPathAllowed, PathPolicyError } from '../security/pathPolicy.js';
15
+ import { parseJUnitResults } from './antTools.js';
15
16
  import { sfSpawnHelper, SfNotFoundError } from './sfSpawn.js';
16
17
  // ── SF CLI discovery ──────────────────────────────────────────────────────────
17
18
  /**
@@ -42,7 +43,9 @@ export function getSfCommonPaths() {
42
43
  candidates.push(path.join(nvmBinDir, v, 'bin', 'sf'));
43
44
  }
44
45
  }
45
- catch { /* skip */ }
46
+ catch {
47
+ /* skip */
48
+ }
46
49
  }
47
50
  return candidates;
48
51
  }
@@ -51,19 +54,69 @@ const MAX_BUFFER = 50 * 1024 * 1024; // 50 MB — prevents ENOBUFS on verbose Pr
51
54
  // Proactively resolve the sf executable path once on first use and cache it.
52
55
  // This ensures sf is always found even when ENOENT is masked by other errors (e.g. ENOBUFS).
53
56
  let cachedSfPath; // undefined = not yet probed
54
- /** Exposed for testing only — pre-seeds the cached sf executable path, bypassing the probe spawn. */
57
+ /**
58
+ * Exposed for testing only — pre-seeds the cached sf executable path, bypassing the probe spawn.
59
+ * Pass `undefined` to reset the cache so the next call triggers a fresh probe.
60
+ */
55
61
  export function setSfPathCacheForTesting(value) {
56
62
  cachedSfPath = value;
57
63
  }
64
+ // Platform override used in tests so Windows-specific shell logic can be exercised on any OS.
65
+ let sfPlatformOverride;
66
+ /** Exposed for testing only — overrides process.platform for needsWindowsShell decisions. */
67
+ export function setSfPlatformForTesting(platform) {
68
+ sfPlatformOverride = platform;
69
+ }
70
+ /**
71
+ * Returns true when spawning `executable` requires the Windows shell.
72
+ * On Windows, `.cmd` and `.bat` batch scripts cannot be executed directly by
73
+ * Node's spawnSync — they must be invoked through cmd.exe (i.e. shell: true).
74
+ * The bare name "sf" also needs this treatment on Windows because the file on
75
+ * disk is actually "sf.cmd" and Node won't auto-append the extension.
76
+ *
77
+ * The `platform` parameter defaults to `process.platform` and is exposed for
78
+ * unit testing so tests can verify both Windows and non-Windows behaviour
79
+ * without having to run on the corresponding OS.
80
+ */
81
+ export function needsWindowsShell(executable, platform = process.platform) {
82
+ if (platform !== 'win32')
83
+ return false;
84
+ const lower = executable.toLowerCase();
85
+ return lower.endsWith('.cmd') || lower.endsWith('.bat') || !path.extname(lower);
86
+ }
58
87
  function resolveSfExecutable() {
59
88
  if (cachedSfPath !== undefined)
60
89
  return cachedSfPath;
61
- // Check PATH first via a cheap version probe
62
- const probe = sfSpawnHelper.spawnSync('sf', ['--version'], { encoding: 'utf-8', shell: false, maxBuffer: 1024 * 1024 });
63
- if (!probe.error) {
90
+ const platform = sfPlatformOverride ?? process.platform;
91
+ // Two-phase probe avoids false-positives on Windows with shell:true.
92
+ // When shell:true is used, cmd.exe spawns successfully even when `sf` is
93
+ // missing — it exits non-zero with "not recognised" in stderr but sets no
94
+ // probe.error. Trying shell:false first catches both cases correctly.
95
+ //
96
+ // First attempt: shell:false (works on Linux/macOS; gives ENOENT on Windows if
97
+ // sf.cmd is on PATH but requires the shell).
98
+ const probe = sfSpawnHelper.spawnSync('sf', ['--version'], {
99
+ encoding: 'utf-8',
100
+ shell: false,
101
+ maxBuffer: 1024 * 1024,
102
+ });
103
+ if (!probe.error && probe.status === 0) {
64
104
  cachedSfPath = 'sf';
65
105
  return cachedSfPath;
66
106
  }
107
+ // Windows fallback: retry with shell:true when the plain probe failed
108
+ // with ENOENT — meaning sf.cmd exists on PATH but can't run without the shell.
109
+ if (platform === 'win32' && probe.error?.code === 'ENOENT') {
110
+ const probeShell = sfSpawnHelper.spawnSync('sf', ['--version'], {
111
+ encoding: 'utf-8',
112
+ shell: true,
113
+ maxBuffer: 1024 * 1024,
114
+ });
115
+ if (!probeShell.error && probeShell.status === 0) {
116
+ cachedSfPath = 'sf';
117
+ return cachedSfPath;
118
+ }
119
+ }
67
120
  // Fall back to common install locations
68
121
  for (const candidate of getSfCommonPaths()) {
69
122
  if (fs.existsSync(candidate)) {
@@ -74,12 +127,34 @@ function resolveSfExecutable() {
74
127
  cachedSfPath = null;
75
128
  return null;
76
129
  }
130
+ /**
131
+ * Reject shell metacharacters in an sf_path that will be executed via shell:true.
132
+ * On Windows, cmd.exe interprets & | ; < > ` ' " and newlines as shell syntax.
133
+ * A valid filesystem path should never contain these characters.
134
+ */
135
+ function assertShellSafePath(sfPath) {
136
+ if (/[&|;<>`'"\n\r]/.test(sfPath)) {
137
+ throw Object.assign(new Error('sf_path contains characters that are unsafe for shell execution on Windows ' +
138
+ '(& | ; < > ` \' " or line-breaks). Provide an absolute filesystem path to the sf executable.'), { code: 'INVALID_SF_PATH' });
139
+ }
140
+ }
77
141
  function runSfCommand(args, sfPath) {
78
142
  // Use explicit path if provided; otherwise use cached probe result
79
143
  const executable = sfPath ?? resolveSfExecutable();
80
144
  if (!executable)
81
145
  throw new SfNotFoundError();
82
- const result = sfSpawnHelper.spawnSync(executable, args, { encoding: 'utf-8', shell: false, maxBuffer: MAX_BUFFER });
146
+ const platform = sfPlatformOverride ?? process.platform;
147
+ const useShell = needsWindowsShell(executable, platform);
148
+ // Guard against injection when shell:true is used with a user-supplied path.
149
+ // Common install locations returned by resolveSfExecutable() are safe by construction.
150
+ if (useShell && sfPath) {
151
+ assertShellSafePath(sfPath);
152
+ }
153
+ const result = sfSpawnHelper.spawnSync(executable, args, {
154
+ encoding: 'utf-8',
155
+ shell: useShell,
156
+ maxBuffer: MAX_BUFFER,
157
+ });
83
158
  if (result.error) {
84
159
  const err = result.error;
85
160
  if (err.code === 'ENOENT') {
@@ -98,7 +173,12 @@ function handleSpawnError(err, requestId, toolName) {
98
173
  log('error', `${toolName} failed`, { requestId, error: error.message });
99
174
  return {
100
175
  isError: true,
101
- content: [{ type: 'text', text: JSON.stringify(makeError(error.code ?? 'SF_ERROR', error.message, requestId, false)) }],
176
+ content: [
177
+ {
178
+ type: 'text',
179
+ text: JSON.stringify(makeError(error.code ?? 'SF_ERROR', error.message, requestId, false)),
180
+ },
181
+ ],
102
182
  };
103
183
  }
104
184
  // ── Tool: provar.automation.config.load ──────────────────────────────────────
@@ -109,30 +189,151 @@ export function registerAutomationConfigLoad(server, config) {
109
189
  'REQUIRED before provar.automation.compile or provar.automation.testrun — without this step those commands fail with MISSING_FILE.',
110
190
  'Typical workflow: provar.automation.config.load → provar.automation.compile → provar.automation.testrun.',
111
191
  ].join(' '), {
112
- properties_path: z.string().describe('Absolute path to the provardx-properties.json file to register as active configuration'),
113
- sf_path: z.string().optional().describe('Path to the sf CLI executable when not in PATH (e.g. "~/.nvm/versions/node/v22.0.0/bin/sf")'),
192
+ properties_path: z
193
+ .string()
194
+ .describe('Absolute path to the provardx-properties.json file to register as active configuration'),
195
+ sf_path: z
196
+ .string()
197
+ .optional()
198
+ .describe('Path to the sf CLI executable when not in PATH (e.g. "~/.nvm/versions/node/v22.0.0/bin/sf")'),
114
199
  }, ({ properties_path, sf_path }) => {
115
200
  const requestId = makeRequestId();
116
201
  log('info', 'provar.automation.config.load', { requestId, properties_path });
117
202
  try {
118
203
  assertPathAllowed(properties_path, config.allowedPaths);
119
204
  const result = runSfCommand(['provar', 'automation', 'config', 'load', '--properties-file', properties_path], sf_path);
120
- const response = { requestId, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr, properties_path };
205
+ const response = {
206
+ requestId,
207
+ exitCode: result.exitCode,
208
+ stdout: result.stdout,
209
+ stderr: result.stderr,
210
+ properties_path,
211
+ };
121
212
  if (result.exitCode !== 0) {
122
- return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('AUTOMATION_CONFIG_LOAD_FAILED', result.stderr || result.stdout, requestId)) }] };
213
+ return {
214
+ isError: true,
215
+ content: [
216
+ {
217
+ type: 'text',
218
+ text: JSON.stringify(makeError('AUTOMATION_CONFIG_LOAD_FAILED', result.stderr || result.stdout, requestId)),
219
+ },
220
+ ],
221
+ };
123
222
  }
124
223
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
125
224
  }
126
225
  catch (err) {
127
226
  if (err instanceof PathPolicyError) {
128
- return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError(err.code, err.message, requestId, false)) }] };
227
+ return {
228
+ isError: true,
229
+ content: [
230
+ { type: 'text', text: JSON.stringify(makeError(err.code, err.message, requestId, false)) },
231
+ ],
232
+ };
129
233
  }
130
234
  return handleSpawnError(err, requestId, 'provar.automation.config.load');
131
235
  }
132
236
  });
133
237
  }
238
+ // ── Testrun output filter ─────────────────────────────────────────────────────
239
+ const NOISE_PATTERNS = [/com\.networknt\.schema/, /SEVERE.*Failed to configure logger.*\.lck/];
240
+ /**
241
+ * Strip Java schema-validator debug lines and stale logger-lock SEVERE warnings
242
+ * from Provar testrun output. These two patterns account for the bulk of output
243
+ * volume and cause MCP responses to be truncated before the pass/fail lines.
244
+ *
245
+ * Everything else (including real SEVERE failures) passes through unchanged.
246
+ * Collapses runs of blank lines to a single blank to keep the output readable.
247
+ * Returns the filtered text and the count of suppressed lines.
248
+ */
249
+ export function filterTestRunOutput(raw) {
250
+ const lines = raw.split(/\r?\n/);
251
+ const kept = [];
252
+ let suppressed = 0;
253
+ let lastKeptWasBlank = false;
254
+ for (const rawLine of lines) {
255
+ const line = rawLine.endsWith('\r') ? rawLine.slice(0, -1) : rawLine;
256
+ if (NOISE_PATTERNS.some((p) => p.test(line))) {
257
+ suppressed++;
258
+ continue;
259
+ }
260
+ const isBlank = line.trim() === '';
261
+ if (isBlank && lastKeptWasBlank)
262
+ continue; // collapse blank runs
263
+ kept.push(line);
264
+ lastKeptWasBlank = isBlank;
265
+ }
266
+ let filtered = kept.join('\n');
267
+ if (suppressed > 0) {
268
+ filtered += `\n[testrun: ${suppressed} lines suppressed (schema validator / logger noise) — use provar.testrun.rca for full results]`;
269
+ }
270
+ return { filtered, suppressed };
271
+ }
272
+ // ── JUnit results enrichment ──────────────────────────────────────────────────
273
+ // Overrideable in tests — bypasses the sf config file read
274
+ let sfResultsPathOverride;
275
+ /** Exposed for testing only — set the results path returned by the sf config reader. Pass undefined to reset. */
276
+ export function setSfResultsPathForTesting(p) {
277
+ sfResultsPathOverride = p;
278
+ }
279
+ /**
280
+ * Resolves the actual results directory for the latest run.
281
+ * Provar's Increment disposition creates Results(1), Results(2)… as siblings of Results/.
282
+ * Returns the latest sibling dir, or the base path if no siblings exist.
283
+ */
284
+ function resolveLatestResultsDir(resultsBase) {
285
+ const parent = path.dirname(resultsBase);
286
+ const base = path.basename(resultsBase);
287
+ try {
288
+ const safeName = base.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
289
+ const pattern = new RegExp(`^${safeName}\\((\\d+)\\)$`);
290
+ const indices = fs
291
+ .readdirSync(parent, { withFileTypes: true })
292
+ .filter((e) => e.isDirectory() && pattern.test(e.name))
293
+ .map((e) => parseInt(pattern.exec(e.name)[1], 10));
294
+ if (indices.length > 0) {
295
+ const maxIdx = indices.reduce((a, b) => (a > b ? a : b), 0);
296
+ return path.join(parent, `${base}(${maxIdx})`);
297
+ }
298
+ }
299
+ catch {
300
+ // ignore filesystem errors
301
+ }
302
+ return resultsBase;
303
+ }
304
+ /**
305
+ * Reads resultsPath from the currently active provardx-properties.json (via ~/.sf/config.json),
306
+ * then resolves to the latest Increment-mode sibling directory.
307
+ * Returns null when the sf config or properties file cannot be read or is outside allowed paths.
308
+ */
309
+ function readResultsPathFromSfConfig(config) {
310
+ if (sfResultsPathOverride !== undefined)
311
+ return sfResultsPathOverride;
312
+ try {
313
+ const sfConfigPath = path.join(os.homedir(), '.sf', 'config.json');
314
+ if (!fs.existsSync(sfConfigPath))
315
+ return null;
316
+ const sfConfig = JSON.parse(fs.readFileSync(sfConfigPath, 'utf-8'));
317
+ const propFilePath = sfConfig['PROVARDX_PROPERTIES_FILE_PATH'];
318
+ if (!propFilePath || !fs.existsSync(propFilePath))
319
+ return null;
320
+ // Guard: only read the properties file if it is within the session's allowed paths.
321
+ assertPathAllowed(propFilePath, config.allowedPaths);
322
+ const props = JSON.parse(fs.readFileSync(propFilePath, 'utf-8'));
323
+ const resultsBase = props['resultsPath'];
324
+ if (!resultsBase)
325
+ return null;
326
+ const resultsDir = resolveLatestResultsDir(resultsBase);
327
+ // Guard: only read the results directory if it is within the session's allowed paths.
328
+ assertPathAllowed(resultsDir, config.allowedPaths);
329
+ return resultsDir;
330
+ }
331
+ catch {
332
+ return null;
333
+ }
334
+ }
134
335
  // ── Tool: provar.automation.testrun ───────────────────────────────────────────
135
- export function registerAutomationTestRun(server) {
336
+ export function registerAutomationTestRun(server, config) {
136
337
  server.tool('provar.automation.testrun', [
137
338
  'Trigger a LOCAL Provar automation test run using installed Provar binaries. Invokes `sf provar automation test run`.',
138
339
  'PREREQUISITE: Run provar.automation.config.load first to register a provardx-properties.json — without this the command fails with MISSING_FILE.',
@@ -141,17 +342,54 @@ export function registerAutomationTestRun(server) {
141
342
  'For grid/CI execution via Provar Quality Hub instead of running locally, use provar.qualityhub.testrun.',
142
343
  'Typical local AI loop: config.load → compile → testrun → inspect results.',
143
344
  ].join(' '), {
144
- flags: z.array(z.string()).optional().default([]).describe('Raw CLI flags to forward (e.g. ["--project-path", "/path/to/project"])'),
145
- sf_path: z.string().optional().describe('Path to the sf CLI executable when not in PATH (e.g. "~/.nvm/versions/node/v22.0.0/bin/sf")'),
345
+ flags: z
346
+ .array(z.string())
347
+ .optional()
348
+ .default([])
349
+ .describe('Raw CLI flags to forward (e.g. ["--project-path", "/path/to/project"])'),
350
+ sf_path: z
351
+ .string()
352
+ .optional()
353
+ .describe('Path to the sf CLI executable when not in PATH (e.g. "~/.nvm/versions/node/v22.0.0/bin/sf")'),
146
354
  }, ({ flags, sf_path }) => {
147
355
  const requestId = makeRequestId();
148
356
  log('info', 'provar.automation.testrun', { requestId });
149
357
  try {
150
358
  const result = runSfCommand(['provar', 'automation', 'test', 'run', ...flags], sf_path);
151
- const response = { requestId, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr };
359
+ const { filtered, suppressed } = filterTestRunOutput(result.stdout);
360
+ // Attempt to enrich the response with structured step data from JUnit XML
361
+ const resultsPath = readResultsPathFromSfConfig(config);
362
+ const { steps, warning: junitWarning } = resultsPath
363
+ ? parseJUnitResults(resultsPath)
364
+ : { steps: [], warning: undefined };
152
365
  if (result.exitCode !== 0) {
153
- return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('AUTOMATION_TESTRUN_FAILED', result.stderr || result.stdout, requestId)) }] };
366
+ const { filtered: filteredErr, suppressed: suppressedErr } = filterTestRunOutput(result.stderr || result.stdout);
367
+ const errBody = {
368
+ ...makeError('AUTOMATION_TESTRUN_FAILED', filteredErr, requestId),
369
+ ...(suppressedErr > 0 ? { output_lines_suppressed: suppressedErr } : {}),
370
+ };
371
+ if (steps.length > 0)
372
+ errBody['steps'] = steps;
373
+ if (!resultsPath || junitWarning) {
374
+ errBody['details'] = {
375
+ warning: junitWarning ??
376
+ 'Could not locate results directory — step-level output unavailable. Run provar.automation.config.load first.',
377
+ };
378
+ }
379
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(errBody) }] };
154
380
  }
381
+ const response = {
382
+ requestId,
383
+ exitCode: result.exitCode,
384
+ stdout: filtered,
385
+ stderr: result.stderr,
386
+ };
387
+ if (suppressed > 0)
388
+ response['output_lines_suppressed'] = suppressed;
389
+ if (steps.length > 0)
390
+ response['steps'] = steps;
391
+ if (junitWarning)
392
+ response['details'] = { warning: junitWarning };
155
393
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
156
394
  }
157
395
  catch (err) {
@@ -166,8 +404,15 @@ export function registerAutomationCompile(server) {
166
404
  'PREREQUISITE: Run provar.automation.config.load first to register a provardx-properties.json — without this the command fails with MISSING_FILE.',
167
405
  'Run this before triggering a test run after modifying test cases.',
168
406
  ].join(' '), {
169
- flags: z.array(z.string()).optional().default([]).describe('Raw CLI flags to forward (e.g. ["--project-path", "/path/to/project"])'),
170
- sf_path: z.string().optional().describe('Path to the sf CLI executable when not in PATH (e.g. "~/.nvm/versions/node/v22.0.0/bin/sf")'),
407
+ flags: z
408
+ .array(z.string())
409
+ .optional()
410
+ .default([])
411
+ .describe('Raw CLI flags to forward (e.g. ["--project-path", "/path/to/project"])'),
412
+ sf_path: z
413
+ .string()
414
+ .optional()
415
+ .describe('Path to the sf CLI executable when not in PATH (e.g. "~/.nvm/versions/node/v22.0.0/bin/sf")'),
171
416
  }, ({ flags, sf_path }) => {
172
417
  const requestId = makeRequestId();
173
418
  log('info', 'provar.automation.compile', { requestId });
@@ -175,7 +420,15 @@ export function registerAutomationCompile(server) {
175
420
  const result = runSfCommand(['provar', 'automation', 'project', 'compile', ...flags], sf_path);
176
421
  const response = { requestId, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr };
177
422
  if (result.exitCode !== 0) {
178
- return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('AUTOMATION_COMPILE_FAILED', result.stderr || result.stdout, requestId)) }] };
423
+ return {
424
+ isError: true,
425
+ content: [
426
+ {
427
+ type: 'text',
428
+ text: JSON.stringify(makeError('AUTOMATION_COMPILE_FAILED', result.stderr || result.stdout, requestId)),
429
+ },
430
+ ],
431
+ };
179
432
  }
180
433
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
181
434
  }
@@ -185,19 +438,52 @@ export function registerAutomationCompile(server) {
185
438
  });
186
439
  }
187
440
  // ── Tool: provar.automation.metadata.download ─────────────────────────────────
441
+ const DOWNLOAD_ERROR_SUGGESTION = 'A [DOWNLOAD_ERROR] almost always means a Salesforce authentication failure for the connection being used. ' +
442
+ 'Check: (1) the connection credentials in the Provar project .secrets file are current and not expired; ' +
443
+ '(2) the named connection exists in the project and the name is spelled correctly (case-sensitive); ' +
444
+ '(3) if using a scratch org, confirm it has not expired (`sf org list`); ' +
445
+ '(4) if testprojectSecrets is set in provardx-properties.json, it must be the encryption key string used to decrypt .secrets — not a file path.';
188
446
  export function registerAutomationMetadataDownload(server) {
189
- server.tool('provar.automation.metadata.download', 'Download Salesforce metadata into a Provar project. Invokes `sf provar automation metadata download`.', {
190
- flags: z.array(z.string()).optional().default([]).describe('Raw CLI flags to forward (e.g. ["--target-org", "myorg"])'),
191
- sf_path: z.string().optional().describe('Path to the sf CLI executable when not in PATH (e.g. "~/.nvm/versions/node/v22.0.0/bin/sf")'),
447
+ server.tool('provar.automation.metadata.download', [
448
+ 'Download Salesforce metadata for one or more connections into a Provar project.',
449
+ 'Invokes `sf provar automation metadata download`.',
450
+ 'PREREQUISITE: Call provar.automation.config.load first — without it the command fails with MISSING_FILE.',
451
+ 'Use the -c flag to specify connections: flags: ["-c", "ConnectionName1,ConnectionName2"].',
452
+ 'Connection names are case-sensitive and must match the names defined in the Provar project.',
453
+ 'If the download fails with [DOWNLOAD_ERROR], this is almost always a Salesforce authentication issue —',
454
+ 'check that the credentials in the project .secrets file are current and that any referenced scratch orgs have not expired.',
455
+ ].join(' '), {
456
+ flags: z
457
+ .array(z.string())
458
+ .optional()
459
+ .default([])
460
+ .describe('Raw CLI flags to forward. Use ["-c", "Name1,Name2"] (or the equivalent --connections form) to target specific connections. Example: ["-c", "MyOrg,SandboxOrg"]'),
461
+ sf_path: z
462
+ .string()
463
+ .optional()
464
+ .describe('Path to the sf CLI executable when not in PATH (e.g. "~/.nvm/versions/node/v22.0.0/bin/sf")'),
192
465
  }, ({ flags, sf_path }) => {
193
466
  const requestId = makeRequestId();
194
467
  log('info', 'provar.automation.metadata.download', { requestId });
195
468
  try {
196
469
  const result = runSfCommand(['provar', 'automation', 'metadata', 'download', ...flags], sf_path);
197
- const response = { requestId, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr };
470
+ const message = result.stderr || result.stdout;
198
471
  if (result.exitCode !== 0) {
199
- return { isError: true, content: [{ type: 'text', text: JSON.stringify(makeError('AUTOMATION_METADATA_FAILED', result.stderr || result.stdout, requestId)) }] };
472
+ const isDownloadError = message.includes('[DOWNLOAD_ERROR]');
473
+ const details = isDownloadError
474
+ ? { suggestion: DOWNLOAD_ERROR_SUGGESTION }
475
+ : undefined;
476
+ return {
477
+ isError: true,
478
+ content: [
479
+ {
480
+ type: 'text',
481
+ text: JSON.stringify(makeError('AUTOMATION_METADATA_FAILED', message, requestId, false, details)),
482
+ },
483
+ ],
484
+ };
200
485
  }
486
+ const response = { requestId, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr };
201
487
  return { content: [{ type: 'text', text: JSON.stringify(response) }], structuredContent: response };
202
488
  }
203
489
  catch (err) {
@@ -208,17 +494,9 @@ export function registerAutomationMetadataDownload(server) {
208
494
  // ── Tool: provar.automation.setup ─────────────────────────────────────────────
209
495
  /** Known system-level Provar install paths per platform. */
210
496
  const SYSTEM_INSTALL_BASES = {
211
- win32: [
212
- 'C:/Program Files',
213
- 'C:/Program Files (x86)',
214
- ],
215
- darwin: [
216
- '/Applications',
217
- ],
218
- linux: [
219
- '/opt',
220
- '/usr/local',
221
- ],
497
+ win32: ['C:/Program Files', 'C:/Program Files (x86)'],
498
+ darwin: ['/Applications'],
499
+ linux: ['/opt', '/usr/local'],
222
500
  };
223
501
  /** Try to read a Provar version string from well-known files inside an install dir. */
224
502
  function readProvarVersion(installPath) {
@@ -302,9 +580,19 @@ export function registerAutomationSetup(server) {
302
580
  'If an existing installation is found, returns its path so you can set provarHome in the properties file — skipping the download unless force is true.',
303
581
  'After a successful install, update the provarHome property in provardx-properties.json to the returned install_path using provar.properties.set.',
304
582
  ].join(' '), {
305
- version: z.string().optional().describe('Specific Provar Automation version to install, e.g. "2.12.0". Omit to install the latest release.'),
306
- force: z.boolean().optional().default(false).describe('Force a fresh download even if an existing installation is already detected (default: false).'),
307
- sf_path: z.string().optional().describe('Path to the sf CLI executable when not in PATH (e.g. "~/.nvm/versions/node/v22.0.0/bin/sf")'),
583
+ version: z
584
+ .string()
585
+ .optional()
586
+ .describe('Specific Provar Automation version to install, e.g. "2.12.0". Omit to install the latest release.'),
587
+ force: z
588
+ .boolean()
589
+ .optional()
590
+ .default(false)
591
+ .describe('Force a fresh download even if an existing installation is already detected (default: false).'),
592
+ sf_path: z
593
+ .string()
594
+ .optional()
595
+ .describe('Path to the sf CLI executable when not in PATH (e.g. "~/.nvm/versions/node/v22.0.0/bin/sf")'),
308
596
  }, ({ version, force, sf_path }) => {
309
597
  const requestId = makeRequestId();
310
598
  log('info', 'provar.automation.setup', { requestId, version, force });
@@ -336,12 +624,17 @@ export function registerAutomationSetup(server) {
336
624
  if (result.exitCode !== 0) {
337
625
  return {
338
626
  isError: true,
339
- content: [{ type: 'text', text: JSON.stringify(makeError('AUTOMATION_SETUP_FAILED', result.stderr || result.stdout, requestId)) }],
627
+ content: [
628
+ {
629
+ type: 'text',
630
+ text: JSON.stringify(makeError('AUTOMATION_SETUP_FAILED', result.stderr || result.stdout, requestId)),
631
+ },
632
+ ],
340
633
  };
341
634
  }
342
635
  // ── 3. Locate the freshly installed ProvarHome ───────────────────────
343
636
  const freshInstalls = findExistingInstallations();
344
- const localInstall = freshInstalls.find(i => i.source === 'local') ?? freshInstalls[0];
637
+ const localInstall = freshInstalls.find((i) => i.source === 'local') ?? freshInstalls[0];
345
638
  const installPath = localInstall?.path ?? path.resolve(process.cwd(), 'ProvarHome');
346
639
  const detectedVersion = localInstall?.version ?? version ?? null;
347
640
  const response = {
@@ -372,7 +665,7 @@ export function registerAutomationSetup(server) {
372
665
  export function registerAllAutomationTools(server, config) {
373
666
  registerAutomationSetup(server);
374
667
  registerAutomationConfigLoad(server, config);
375
- registerAutomationTestRun(server);
668
+ registerAutomationTestRun(server, config);
376
669
  registerAutomationCompile(server);
377
670
  registerAutomationMetadataDownload(server);
378
671
  }
@@ -1 +1 @@
1
- {"version":3,"file":"automationTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/automationTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automationTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/automationTools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE9D,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAChF,OAAO;YACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,CAAC;SAC3D,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG;QACjB,mBAAmB;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC;KACvC,CAAC;IACF,6DAA6D;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACnG,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACvE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,UAAU;QACZ,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,kDAAkD;AAQvF,6EAA6E;AAC7E,6FAA6F;AAC7F,IAAI,YAAuC,CAAC,CAAC,6BAA6B;AAE1E;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAgC;IACvE,YAAY,GAAG,KAAK,CAAC;AACvB,CAAC;AAED,8FAA8F;AAC9F,IAAI,kBAA+C,CAAC;AACpD,6FAA6F;AAC7F,MAAM,UAAU,uBAAuB,CAAC,QAAqC;IAC3E,kBAAkB,GAAG,QAAQ,CAAC;AAChC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ;IAC/E,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IACpD,MAAM,QAAQ,GAAG,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAExD,qEAAqE;IACrE,yEAAyE;IACzE,0EAA0E;IAC1E,sEAAsE;IACtE,EAAE;IACF,+EAA+E;IAC/E,6CAA6C;IAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE;QACzD,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,IAAI,GAAG,IAAI;KACvB,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,YAAY,GAAG,IAAI,CAAC;QACpB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,sEAAsE;IACtE,+EAA+E;IAC/E,IAAI,QAAQ,KAAK,OAAO,IAAK,KAAK,CAAC,KAA2C,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClG,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE;YAC9D,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,IAAI,GAAG,IAAI;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,YAAY,GAAG,IAAI,CAAC;YACpB,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,EAAE,CAAC;QAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,YAAY,GAAG,SAAS,CAAC;YACzB,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IACD,YAAY,GAAG,IAAI,CAAC;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,MAAc;IACzC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,6EAA6E;YAC3E,8FAA8F,CACjG,EACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAC5B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAc,EAAE,MAAe;IACnD,mEAAmE;IACnE,MAAM,UAAU,GAAG,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACnD,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,eAAe,EAAE,CAAC;IAE7C,MAAM,QAAQ,GAAG,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC;IACxD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEzD,6EAA6E;IAC7E,uFAAuF;IACvF,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACvB,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE;QACvD,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,CAAC,KAA8B,CAAC;QAClD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAY,EACZ,SAAiB,EACjB,QAAgB;IAEhB,MAAM,KAAK,GAAG,GAAgC,CAAC;IAC/C,GAAG,CAAC,OAAO,EAAE,GAAG,QAAQ,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,OAAO;QACL,OAAO,EAAE,IAAa;QACtB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;aAC3F;SACF;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,MAAoB;IAClF,MAAM,CAAC,IAAI,CACT,+BAA+B,EAC/B;QACE,8EAA8E;QAC9E,6GAA6G;QAC7G,mIAAmI;QACnI,0GAA0G;KAC3G,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;QACE,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,QAAQ,CAAC,wFAAwF,CAAC;QACrG,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,6FAA6F,CAAC;KAC3G,EACD,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE;QAC/B,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,+BAA+B,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,iBAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,YAAY,CACzB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,eAAe,CAAC,EAChF,OAAO,CACR,CAAC;YACF,MAAM,QAAQ,GAAG;gBACf,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,eAAe;aAChB,CAAC;YAEF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,SAAS,CAAC,+BAA+B,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CACtF;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;gBACnC,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE;qBACpG;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,+BAA+B,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,cAAc,GAAa,CAAC,wBAAwB,EAAE,2CAA2C,CAAC,CAAC;AAEzG;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACrE,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC7C,UAAU,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACnC,IAAI,OAAO,IAAI,gBAAgB;YAAE,SAAS,CAAC,sBAAsB;QACjE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,gBAAgB,GAAG,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,QAAQ,IAAI,eAAe,UAAU,gGAAgG,CAAC;IACxI,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC;AAED,iFAAiF;AAEjF,2DAA2D;AAC3D,IAAI,qBAAgD,CAAC;AAErD,iHAAiH;AACjH,MAAM,UAAU,0BAA0B,CAAC,CAA4B;IACrE,qBAAqB,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,WAAmB;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,QAAQ,eAAe,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,EAAE;aACf,WAAW,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,SAAS,2BAA2B,CAAC,MAAoB;IACvD,IAAI,qBAAqB,KAAK,SAAS;QAAE,OAAO,qBAAqB,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC/F,MAAM,YAAY,GAAG,QAAQ,CAAC,+BAA+B,CAAuB,CAAC;QACrF,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,oFAAoF;QACpF,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC5F,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAuB,CAAC;QAC/D,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,UAAU,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACxD,sFAAsF;QACtF,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAoB;IAC/E,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B;QACE,sHAAsH;QACtH,kJAAkJ;QAClJ,8FAA8F;QAC9F,mEAAmE;QACnE,yGAAyG;QACzG,2EAA2E;KAC5E,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;QACE,KAAK,EAAE,CAAC;aACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,wEAAwE,CAAC;QACrF,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,6FAA6F,CAAC;KAC3G,EACD,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACrB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YACxF,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEpE,0EAA0E;YAC1E,MAAM,WAAW,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,WAAW;gBAClD,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC;gBAChC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YAEtC,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAC9E,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAC/B,CAAC;gBACF,MAAM,OAAO,GAA4B;oBACvC,GAAG,SAAS,CAAC,2BAA2B,EAAE,WAAW,EAAE,SAAS,CAAC;oBACjE,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzE,CAAC;gBACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;gBAC/C,IAAI,CAAC,WAAW,IAAI,YAAY,EAAE,CAAC;oBACjC,OAAO,CAAC,SAAS,CAAC,GAAG;wBACnB,OAAO,EACL,YAAY;4BACZ,8GAA8G;qBACjH,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,IAAa,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACzG,CAAC;YAED,MAAM,QAAQ,GAA4B;gBACxC,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YACF,IAAI,UAAU,GAAG,CAAC;gBAAE,QAAQ,CAAC,yBAAyB,CAAC,GAAG,UAAU,CAAC;YACrE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YAChD,IAAI,YAAY;gBAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;YAClE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B;QACE,sFAAsF;QACtF,kJAAkJ;QAClJ,mEAAmE;KACpE,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;QACE,KAAK,EAAE,CAAC;aACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,wEAAwE,CAAC;QACrF,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,6FAA6F,CAAC;KAC3G,EACD,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACrB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/F,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAExG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,2BAA2B,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBACxG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,yBAAyB,GAC7B,4GAA4G;IAC5G,yGAAyG;IACzG,qGAAqG;IACrG,0EAA0E;IAC1E,gJAAgJ,CAAC;AAEnJ,MAAM,UAAU,kCAAkC,CAAC,MAAiB;IAClE,MAAM,CAAC,IAAI,CACT,qCAAqC,EACrC;QACE,iFAAiF;QACjF,mDAAmD;QACnD,0GAA0G;QAC1G,2FAA2F;QAC3F,6FAA6F;QAC7F,wGAAwG;QACxG,4HAA4H;KAC7H,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;QACE,KAAK,EAAE,CAAC;aACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,gKAAgK,CACjK;QACH,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,6FAA6F,CAAC;KAC3G,EACD,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACrB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,qCAAqC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YACjG,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;YAE/C,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAwC,eAAe;oBAClE,CAAC,CAAC,EAAE,UAAU,EAAE,yBAAyB,EAAE;oBAC3C,CAAC,CAAC,SAAS,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,4BAA4B,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;yBAClG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YACxG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAC/G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,qCAAqC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,4DAA4D;AAC5D,MAAM,oBAAoB,GAA6B;IACrD,KAAK,EAAE,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;IACrD,MAAM,EAAE,CAAC,eAAe,CAAC;IACzB,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;CAC9B,CAAC;AAQF,uFAAuF;AACvF,SAAS,iBAAiB,CAAC,WAAmB;IAC5C,KAAK,MAAM,SAAS,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,sBAAsB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC9F,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACnF,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8FAA8F;AAC9F,SAAS,iBAAiB,CAAC,GAAW;IACpC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB;IAChC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,SAAS,UAAU,CAAC,WAAmB,EAAE,MAA+B;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO;QACrC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,OAAO;QAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAExC,2EAA2E;IAC3E,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;IAE5D,+EAA+E;IAC/E,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QACnC,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACxC,qEAAqE;gBACrE,MAAM,UAAU,GAAG;oBACjB,QAAQ;oBACR,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC;oBAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC;iBAC3D,CAAC;gBACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACnC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB;QACE,gGAAgG;QAChG,kEAAkE;QAClE,sCAAsC;QACtC,iDAAiD;QACjD,0DAA0D;QAC1D,gDAAgD;QAChD,uJAAuJ;QACvJ,kJAAkJ;KACnJ,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;QACE,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,mGAAmG,CAAC;QAChH,KAAK,EAAE,CAAC;aACL,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,+FAA+F,CAAC;QAC5G,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,6FAA6F,CAAC;KAC3G,EACD,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9B,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,EAAE,yBAAyB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtE,IAAI,CAAC;YACH,wEAAwE;YACxE,MAAM,QAAQ,GAAG,yBAAyB,EAAE,CAAC;YAE7C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,QAAQ,GAAG;oBACf,SAAS;oBACT,iBAAiB,EAAE,IAAI;oBACvB,aAAa,EAAE,QAAQ;oBACvB,YAAY,EAAE,OAAO,CAAC,IAAI;oBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO,EAAE;wBACP,SAAS,QAAQ,CAAC,MAAM,qDAAqD;wBAC7E,sBAAsB,OAAO,CAAC,IAAI,qCAAqC;wBACvE,kEAAkE;qBACnE,CAAC,IAAI,CAAC,GAAG,CAAC;iBACZ,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpE,iBAAiB,EAAE,QAAQ;iBAC5B,CAAC;YACJ,CAAC;YAED,wEAAwE;YACxE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAElF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,IAAa;oBACtB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,yBAAyB,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBACtG;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,wEAAwE;YACxE,MAAM,aAAa,GAAG,yBAAyB,EAAE,CAAC;YAClD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;YACzF,MAAM,WAAW,GAAG,YAAY,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;YACpF,MAAM,eAAe,GAAG,YAAY,EAAE,OAAO,IAAI,OAAO,IAAI,IAAI,CAAC;YAEjE,MAAM,QAAQ,GAAG;gBACf,SAAS;gBACT,iBAAiB,EAAE,KAAK;gBACxB,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE;oBACP,gDAAgD,WAAW,GAAG;oBAC9D,8FAA8F;iBAC/F,CAAC,IAAI,CAAC,GAAG,CAAC;aACZ,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpE,iBAAiB,EAAE,QAAQ;aAC5B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,MAAoB;IAChF,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,kCAAkC,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC"}