workos 0.15.2 → 0.17.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 (134) hide show
  1. package/README.md +44 -14
  2. package/dist/bin.js +1449 -1261
  3. package/dist/bin.js.map +1 -1
  4. package/dist/cli.config.d.ts +1 -0
  5. package/dist/cli.config.js +1 -0
  6. package/dist/cli.config.js.map +1 -1
  7. package/dist/commands/api/index.js +7 -2
  8. package/dist/commands/api/index.js.map +1 -1
  9. package/dist/commands/api/interactive.js +9 -3
  10. package/dist/commands/api/interactive.js.map +1 -1
  11. package/dist/commands/debug.d.ts +2 -1
  12. package/dist/commands/debug.js +43 -3
  13. package/dist/commands/debug.js.map +1 -1
  14. package/dist/commands/dev.js +5 -4
  15. package/dist/commands/dev.js.map +1 -1
  16. package/dist/commands/doctor.js +13 -4
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/emulate.js +2 -2
  19. package/dist/commands/emulate.js.map +1 -1
  20. package/dist/commands/env.js +5 -4
  21. package/dist/commands/env.js.map +1 -1
  22. package/dist/commands/install-skill.js +4 -3
  23. package/dist/commands/install-skill.js.map +1 -1
  24. package/dist/commands/install.js +2 -2
  25. package/dist/commands/install.js.map +1 -1
  26. package/dist/commands/login.js +3 -3
  27. package/dist/commands/login.js.map +1 -1
  28. package/dist/commands/migrations.d.ts +1 -1
  29. package/dist/commands/migrations.js +4 -1
  30. package/dist/commands/migrations.js.map +1 -1
  31. package/dist/commands/telemetry.d.ts +3 -0
  32. package/dist/commands/telemetry.js +88 -0
  33. package/dist/commands/telemetry.js.map +1 -0
  34. package/dist/commands/uninstall-skill.js +3 -2
  35. package/dist/commands/uninstall-skill.js.map +1 -1
  36. package/dist/commands/vault-run.d.ts +13 -0
  37. package/dist/commands/vault-run.js +194 -0
  38. package/dist/commands/vault-run.js.map +1 -0
  39. package/dist/commands/vault.d.ts +3 -2
  40. package/dist/commands/vault.js +41 -8
  41. package/dist/commands/vault.js.map +1 -1
  42. package/dist/lib/adapters/cli-adapter.d.ts +7 -0
  43. package/dist/lib/adapters/cli-adapter.js +49 -0
  44. package/dist/lib/adapters/cli-adapter.js.map +1 -1
  45. package/dist/lib/adapters/dashboard-adapter.d.ts +4 -0
  46. package/dist/lib/adapters/dashboard-adapter.js +24 -0
  47. package/dist/lib/adapters/dashboard-adapter.js.map +1 -1
  48. package/dist/lib/adapters/headless-adapter.d.ts +6 -0
  49. package/dist/lib/adapters/headless-adapter.js +26 -1
  50. package/dist/lib/adapters/headless-adapter.js.map +1 -1
  51. package/dist/lib/api-error-handler.d.ts +15 -3
  52. package/dist/lib/api-error-handler.js +52 -34
  53. package/dist/lib/api-error-handler.js.map +1 -1
  54. package/dist/lib/command-aliases.d.ts +8 -0
  55. package/dist/lib/command-aliases.js +12 -0
  56. package/dist/lib/command-aliases.js.map +1 -0
  57. package/dist/lib/constants.d.ts +0 -1
  58. package/dist/lib/constants.js +0 -1
  59. package/dist/lib/constants.js.map +1 -1
  60. package/dist/lib/device-id.d.ts +25 -0
  61. package/dist/lib/device-id.js +102 -0
  62. package/dist/lib/device-id.js.map +1 -0
  63. package/dist/lib/events.d.ts +15 -0
  64. package/dist/lib/events.js.map +1 -1
  65. package/dist/lib/installer-core.d.ts +61 -1
  66. package/dist/lib/installer-core.js +132 -6
  67. package/dist/lib/installer-core.js.map +1 -1
  68. package/dist/lib/installer-core.types.d.ts +24 -0
  69. package/dist/lib/installer-core.types.js.map +1 -1
  70. package/dist/lib/preferences.d.ts +101 -0
  71. package/dist/lib/preferences.js +198 -0
  72. package/dist/lib/preferences.js.map +1 -0
  73. package/dist/lib/run-with-core.js +40 -15
  74. package/dist/lib/run-with-core.js.map +1 -1
  75. package/dist/lib/scaffold/index.d.ts +1 -0
  76. package/dist/lib/scaffold/index.js +2 -0
  77. package/dist/lib/scaffold/index.js.map +1 -0
  78. package/dist/lib/scaffold/scaffold.d.ts +66 -0
  79. package/dist/lib/scaffold/scaffold.js +156 -0
  80. package/dist/lib/scaffold/scaffold.js.map +1 -0
  81. package/dist/lib/settings.d.ts +6 -0
  82. package/dist/lib/settings.js +7 -0
  83. package/dist/lib/settings.js.map +1 -1
  84. package/dist/lib/telemetry-notice.d.ts +25 -0
  85. package/dist/lib/telemetry-notice.js +56 -0
  86. package/dist/lib/telemetry-notice.js.map +1 -0
  87. package/dist/run.d.ts +2 -2
  88. package/dist/run.js +2 -1
  89. package/dist/run.js.map +1 -1
  90. package/dist/test/force-insecure-storage.d.ts +1 -0
  91. package/dist/test/force-insecure-storage.js +9 -0
  92. package/dist/test/force-insecure-storage.js.map +1 -0
  93. package/dist/test/setup.d.ts +1 -0
  94. package/dist/test/setup.js +38 -0
  95. package/dist/test/setup.js.map +1 -0
  96. package/dist/utils/analytics.d.ts +41 -0
  97. package/dist/utils/analytics.js +199 -12
  98. package/dist/utils/analytics.js.map +1 -1
  99. package/dist/utils/box.d.ts +29 -1
  100. package/dist/utils/box.js +92 -4
  101. package/dist/utils/box.js.map +1 -1
  102. package/dist/utils/cli-exit.d.ts +15 -0
  103. package/dist/utils/cli-exit.js +11 -0
  104. package/dist/utils/cli-exit.js.map +1 -0
  105. package/dist/utils/cli-symbols.d.ts +1 -1
  106. package/dist/utils/command-telemetry.d.ts +17 -0
  107. package/dist/utils/command-telemetry.js +67 -0
  108. package/dist/utils/command-telemetry.js.map +1 -0
  109. package/dist/utils/crash-reporter.d.ts +13 -0
  110. package/dist/utils/crash-reporter.js +91 -0
  111. package/dist/utils/crash-reporter.js.map +1 -0
  112. package/dist/utils/debug.d.ts +1 -0
  113. package/dist/utils/debug.js +4 -1
  114. package/dist/utils/debug.js.map +1 -1
  115. package/dist/utils/exit-codes.d.ts +5 -0
  116. package/dist/utils/exit-codes.js +30 -1
  117. package/dist/utils/exit-codes.js.map +1 -1
  118. package/dist/utils/help-json.d.ts +6 -0
  119. package/dist/utils/help-json.js +87 -10
  120. package/dist/utils/help-json.js.map +1 -1
  121. package/dist/utils/output.d.ts +7 -2
  122. package/dist/utils/output.js +9 -2
  123. package/dist/utils/output.js.map +1 -1
  124. package/dist/utils/telemetry-client.d.ts +30 -2
  125. package/dist/utils/telemetry-client.js +122 -12
  126. package/dist/utils/telemetry-client.js.map +1 -1
  127. package/dist/utils/telemetry-store-forward.d.ts +11 -0
  128. package/dist/utils/telemetry-store-forward.js +94 -0
  129. package/dist/utils/telemetry-store-forward.js.map +1 -0
  130. package/dist/utils/telemetry-types.d.ts +58 -9
  131. package/dist/utils/telemetry-types.js.map +1 -1
  132. package/dist/utils/types.d.ts +10 -4
  133. package/dist/utils/types.js.map +1 -1
  134. package/package.json +1 -1
@@ -53,6 +53,33 @@ export const installerMachine = setup({
53
53
  emitGitCancelled: ({ context }) => {
54
54
  context.emitter.emit('git:dirty:cancelled', {});
55
55
  },
56
+ emitScaffoldChecking: ({ context }) => {
57
+ context.emitter.emit('scaffold:checking', {});
58
+ },
59
+ emitScaffoldPrompt: ({ context }) => {
60
+ context.emitter.emit('scaffold:prompt', { packageManager: context.packageManager ?? 'npm' });
61
+ },
62
+ emitScaffoldStart: ({ context }) => {
63
+ context.emitter.emit('scaffold:start', { packageManager: context.packageManager ?? 'npm' });
64
+ },
65
+ emitScaffoldComplete: ({ context }) => {
66
+ context.emitter.emit('scaffold:complete', {});
67
+ },
68
+ emitScaffoldFailed: ({ context }) => {
69
+ const message = context.error?.message ?? 'Scaffold failed';
70
+ context.emitter.emit('scaffold:failed', { error: message });
71
+ },
72
+ emitScaffoldSkipped: ({ context }) => {
73
+ context.emitter.emit('scaffold:skipped', {});
74
+ },
75
+ assignWorkspaceResult: assign({
76
+ scaffoldable: ({ event }) => event.output?.scaffoldable ?? false,
77
+ packageManager: ({ event }) => event.output?.packageManager ?? 'npm',
78
+ autoScaffold: ({ event }) => event.output?.autoScaffold ?? false,
79
+ }),
80
+ assignScaffolded: assign({
81
+ scaffolded: () => true,
82
+ }),
56
83
  emitBranchChecking: ({ context }) => {
57
84
  context.emitter.emit('branch:checking', {});
58
85
  },
@@ -274,11 +301,24 @@ export const installerMachine = setup({
274
301
  hasIntegration: ({ context }) => context.integration !== undefined,
275
302
  shouldSkipPostInstall: ({ context }) => context.options.noCommit === true,
276
303
  hasGhCli: () => hasGhCli(),
304
+ // Read from the actor's done event (output), not context: the
305
+ // assignWorkspaceResult action has not run yet when guards are evaluated.
306
+ notScaffoldable: ({ event }) => !event.output?.scaffoldable,
307
+ shouldAutoScaffold: ({ event }) => {
308
+ const output = event.output;
309
+ return !!output?.scaffoldable && !!output?.autoScaffold;
310
+ },
277
311
  },
278
312
  actors: {
279
313
  checkAuthentication: fromPromise(async () => {
280
314
  throw new Error('checkAuthentication not implemented - provide via machine.provide()');
281
315
  }),
316
+ checkWorkspace: fromPromise(async () => {
317
+ throw new Error('checkWorkspace not implemented - provide via machine.provide()');
318
+ }),
319
+ runScaffold: fromPromise(async () => {
320
+ throw new Error('runScaffold not implemented - provide via machine.provide()');
321
+ }),
282
322
  detectIntegration: fromPromise(async () => {
283
323
  throw new Error('detectIntegration not implemented - provide via machine.provide()');
284
324
  }),
@@ -340,7 +380,8 @@ export const installerMachine = setup({
340
380
  context: ({ input }) => ({
341
381
  emitter: input.emitter,
342
382
  options: input.options,
343
- integration: input.options.integration,
383
+ // Set by the detection actor; no pre-seeding (the --integration flag is gone).
384
+ integration: undefined,
344
385
  credentials: input.options.apiKey && input.options.clientId
345
386
  ? { apiKey: input.options.apiKey, clientId: input.options.clientId }
346
387
  : undefined,
@@ -359,9 +400,9 @@ export const installerMachine = setup({
359
400
  on: {
360
401
  START: [
361
402
  {
362
- target: 'preparing',
403
+ target: 'scaffold',
363
404
  guard: 'shouldSkipAuth',
364
- actions: { type: 'emitStateEnter', params: { state: 'preparing' } },
405
+ actions: { type: 'emitStateEnter', params: { state: 'scaffold' } },
365
406
  },
366
407
  {
367
408
  target: 'authenticating',
@@ -377,11 +418,11 @@ export const installerMachine = setup({
377
418
  src: 'checkAuthentication',
378
419
  input: ({ context }) => ({ options: context.options }),
379
420
  onDone: {
380
- target: 'preparing',
421
+ target: 'scaffold',
381
422
  actions: [
382
423
  'emitAuthSuccess',
383
424
  { type: 'emitStateExit', params: { state: 'authenticating' } },
384
- { type: 'emitStateEnter', params: { state: 'preparing' } },
425
+ { type: 'emitStateEnter', params: { state: 'scaffold' } },
385
426
  ],
386
427
  },
387
428
  onError: {
@@ -390,6 +431,81 @@ export const installerMachine = setup({
390
431
  },
391
432
  },
392
433
  },
434
+ scaffold: {
435
+ initial: 'checking',
436
+ states: {
437
+ checking: {
438
+ entry: ['emitScaffoldChecking'],
439
+ invoke: {
440
+ id: 'checkWorkspace',
441
+ src: 'checkWorkspace',
442
+ input: ({ context }) => ({ options: context.options }),
443
+ onDone: [
444
+ {
445
+ // Not an empty dir: fall through to today's behavior.
446
+ target: 'done',
447
+ guard: 'notScaffoldable',
448
+ actions: ['assignWorkspaceResult'],
449
+ },
450
+ {
451
+ // Headless or --scaffold: skip the prompt.
452
+ target: 'running',
453
+ guard: 'shouldAutoScaffold',
454
+ actions: ['assignWorkspaceResult'],
455
+ },
456
+ {
457
+ // Interactive empty dir: ask first.
458
+ target: 'prompting',
459
+ actions: ['assignWorkspaceResult'],
460
+ },
461
+ ],
462
+ onError: {
463
+ // Workspace check failure is non-fatal: proceed to preparing,
464
+ // which errors on no-integration exactly as before this feature.
465
+ target: 'done',
466
+ },
467
+ },
468
+ },
469
+ prompting: {
470
+ entry: ['emitScaffoldPrompt'],
471
+ on: {
472
+ SCAFFOLD_CONFIRMED: {
473
+ target: 'running',
474
+ },
475
+ SCAFFOLD_CANCELLED: {
476
+ target: '#installer.cancelled',
477
+ actions: ['emitScaffoldSkipped', { type: 'emitStateExit', params: { state: 'scaffold' } }],
478
+ },
479
+ },
480
+ },
481
+ running: {
482
+ entry: ['emitScaffoldStart'],
483
+ invoke: {
484
+ id: 'runScaffold',
485
+ src: 'runScaffold',
486
+ input: ({ context }) => ({ context }),
487
+ onDone: {
488
+ target: 'done',
489
+ actions: ['assignScaffolded', 'emitScaffoldComplete'],
490
+ },
491
+ onError: {
492
+ target: '#installer.error',
493
+ actions: ['assignError', 'emitScaffoldFailed', { type: 'emitStateExit', params: { state: 'scaffold' } }],
494
+ },
495
+ },
496
+ },
497
+ done: {
498
+ type: 'final',
499
+ },
500
+ },
501
+ onDone: {
502
+ target: 'preparing',
503
+ actions: [
504
+ { type: 'emitStateExit', params: { state: 'scaffold' } },
505
+ { type: 'emitStateEnter', params: { state: 'preparing' } },
506
+ ],
507
+ },
508
+ },
393
509
  preparing: {
394
510
  type: 'parallel',
395
511
  states: {
@@ -544,7 +660,17 @@ export const installerMachine = setup({
544
660
  {
545
661
  target: 'error',
546
662
  actions: [
547
- assign({ error: () => new Error('Could not detect framework integration') }),
663
+ assign({
664
+ error: ({ context }) => {
665
+ const dir = context.options.installDir;
666
+ return new Error(`No supported framework was detected in ${dir}.\n` +
667
+ `Because this directory isn't empty, a new app wasn't scaffolded, and no recognized ` +
668
+ `framework (such as a package.json with Next.js) was found to install into.\n\n` +
669
+ `Next steps:\n` +
670
+ ` - New app: run \`workos install\` in an empty directory to scaffold Next.js + AuthKit.\n` +
671
+ ` - Existing project: run from the directory that contains your package.json, or pass --install-dir <path>.`);
672
+ },
673
+ }),
548
674
  { type: 'emitStateExit', params: { state: 'preparing' } },
549
675
  ],
550
676
  },
@@ -1 +1 @@
1
- {"version":3,"file":"installer-core.js","sourceRoot":"","sources":["../../src/lib/installer-core.ts"],"names":[],"mappings":"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","sourcesContent":["import { setup, assign, fromPromise, type ActorRefFrom } from 'xstate';\nimport type {\n InstallerMachineContext,\n InstallerMachineInput,\n InstallerMachineEvent,\n DetectionOutput,\n GitCheckOutput,\n AgentOutput,\n EnvFileInfo,\n DiscoveryResult,\n CredentialSource,\n BranchCheckOutput,\n} from './installer-core.types.js';\nimport type { InstallerOptions } from '../utils/types.js';\nimport type { DeviceAuthResult, DeviceAuthResponse } from './device-auth.js';\nimport type { StagingCredentials } from './staging-api.js';\nimport { getManualPrInstructions } from './post-install.js';\nimport { hasGhCli } from '../utils/git-utils.js';\n\nexport const installerMachine = setup({\n types: {\n context: {} as InstallerMachineContext,\n input: {} as InstallerMachineInput,\n events: {} as InstallerMachineEvent,\n },\n\n actions: {\n emitStateEnter: ({ context }, params: { state: string }) => {\n context.emitter.emit('state:enter', { state: params.state });\n },\n emitStateExit: ({ context }, params: { state: string }) => {\n context.emitter.emit('state:exit', { state: params.state });\n },\n emitAuthChecking: ({ context }) => {\n context.emitter.emit('auth:checking', {});\n },\n emitAuthRequired: ({ context }) => {\n context.emitter.emit('auth:required', {});\n },\n emitAuthSuccess: ({ context }) => {\n context.emitter.emit('auth:success', {});\n },\n emitAuthFailure: ({ context }) => {\n const message = context.error?.message ?? 'Authentication failed';\n context.emitter.emit('auth:failure', { message });\n },\n emitDetectionStart: ({ context }) => {\n context.emitter.emit('detection:start', {});\n },\n emitDetectionComplete: ({ context }) => {\n if (context.integration) {\n context.emitter.emit('detection:complete', { integration: context.integration });\n } else {\n context.emitter.emit('detection:none', {});\n }\n },\n emitGitChecking: ({ context }) => {\n context.emitter.emit('git:checking', {});\n },\n emitGitClean: ({ context }) => {\n context.emitter.emit('git:clean', {});\n },\n emitGitDirty: ({ context }) => {\n context.emitter.emit('git:dirty', { files: context.gitDirtyFiles });\n },\n emitGitConfirmed: ({ context }) => {\n context.emitter.emit('git:dirty:confirmed', {});\n },\n emitGitCancelled: ({ context }) => {\n context.emitter.emit('git:dirty:cancelled', {});\n },\n emitBranchChecking: ({ context }) => {\n context.emitter.emit('branch:checking', {});\n },\n emitBranchProtected: ({ context }) => {\n if (context.currentBranch) {\n context.emitter.emit('branch:protected', { branch: context.currentBranch });\n context.emitter.emit('branch:prompt', { branch: context.currentBranch });\n }\n },\n emitBranchCreated: ({ context }, params: { branch: string }) => {\n context.emitter.emit('branch:created', { branch: params.branch });\n },\n emitBranchCreateFailed: ({ context }) => {\n const message = context.error?.message ?? 'Failed to create branch';\n context.emitter.emit('branch:create:failed', { error: message });\n },\n assignBranchResult: assign({\n currentBranch: ({ event }) => {\n const doneEvent = event as unknown as { output: BranchCheckOutput };\n return doneEvent.output?.branch ?? undefined;\n },\n isProtectedBranch: ({ event }) => {\n const doneEvent = event as unknown as { output: BranchCheckOutput };\n return doneEvent.output?.isProtected ?? false;\n },\n }),\n emitCredentialsGathering: ({ context }) => {\n const requiresApiKey = ['nextjs', 'tanstack-start', 'react-router'].includes(context.integration ?? '');\n context.emitter.emit('credentials:gathering', { requiresApiKey });\n context.emitter.emit('credentials:request', { requiresApiKey });\n },\n emitCredentialsFound: ({ context }) => {\n context.emitter.emit('credentials:found', {});\n },\n emitEnvDetected: ({ context }) => {\n context.emitter.emit('credentials:env:detected', { files: context.envFilesDetected ?? [] });\n },\n emitEnvScanPrompt: ({ context }) => {\n context.emitter.emit('credentials:env:prompt', { files: context.envFilesDetected ?? [] });\n },\n emitEnvScanning: ({ context }) => {\n context.emitter.emit('credentials:env:scanning', {});\n },\n emitEnvCredentialsFound: ({ context }) => {\n context.emitter.emit('credentials:env:found', { sourcePath: context.envCredentialPath ?? '.env' });\n },\n emitEnvNotFound: ({ context }) => {\n context.emitter.emit('credentials:env:notfound', {});\n },\n emitDeviceAuthStart: () => {\n // Emitted by actor when it has verification URL\n },\n emitDeviceAuthSuccess: ({ context }) => {\n context.emitter.emit('device:success', { email: undefined });\n },\n emitDeviceAuthError: ({ context }) => {\n const message = context.error?.message ?? 'Device authorization failed';\n context.emitter.emit('device:error', { message });\n },\n emitDeviceTimeout: ({ context }) => {\n context.emitter.emit('device:timeout', {});\n },\n emitStagingFetching: ({ context }) => {\n context.emitter.emit('staging:fetching', {});\n },\n emitStagingSuccess: ({ context }) => {\n context.emitter.emit('staging:success', {});\n },\n emitStagingError: ({ context }) => {\n const message = context.error?.message ?? 'Failed to fetch staging credentials';\n context.emitter.emit('staging:error', { message });\n },\n emitConfigStart: ({ context }) => {\n context.emitter.emit('config:start', {});\n },\n emitConfigComplete: ({ context }) => {\n context.emitter.emit('config:complete', {});\n },\n emitAgentStart: ({ context }) => {\n context.emitter.emit('agent:start', {});\n },\n emitAgentSuccess: ({ context }, params: { summary?: string }) => {\n context.emitter.emit('agent:success', { summary: params.summary });\n context.emitter.emit('complete', { success: true, summary: params.summary });\n },\n emitAgentFailure: ({ context }) => {\n const message = context.error?.message ?? 'Agent execution failed';\n const stack = context.error?.stack;\n context.emitter.emit('agent:failure', { message, stack });\n context.emitter.emit('complete', { success: false });\n },\n assignDetectionResult: assign({\n integration: ({ event }) => {\n const doneEvent = event as unknown as { output: DetectionOutput };\n return doneEvent.output?.integration;\n },\n }),\n assignGitResult: assign({\n gitIsClean: ({ event }) => {\n const doneEvent = event as unknown as { output: GitCheckOutput };\n return doneEvent.output?.isClean ?? true;\n },\n gitDirtyFiles: ({ event }) => {\n const doneEvent = event as unknown as { output: GitCheckOutput };\n return doneEvent.output?.files ?? [];\n },\n }),\n\n assignCredentials: assign({\n credentials: ({ event }) => {\n if (event.type === 'CREDENTIALS_SUBMITTED') {\n return { apiKey: event.apiKey, clientId: event.clientId };\n }\n return undefined;\n },\n }),\n\n assignError: assign({\n error: ({ event }) => {\n if ('error' in event && event.error instanceof Error) {\n return event.error;\n }\n if ('error' in event && typeof event.error === 'object' && event.error !== null) {\n return new Error(String((event.error as { message?: string }).message ?? event.error));\n }\n return new Error('Unknown error');\n },\n }),\n\n emitCancelled: ({ context }) => {\n context.emitter.emit('complete', { success: false, summary: 'Installer cancelled by user' });\n },\n emitError: ({ context }) => {\n const message = context.error?.message ?? 'An unexpected error occurred';\n context.emitter.emit('error', { message, stack: context.error?.stack });\n context.emitter.emit('complete', { success: false });\n },\n // Post-install actions\n assignChangedFiles: assign({\n changedFiles: ({ event }) => {\n const doneEvent = event as unknown as { output: { hasChanges: boolean; files: string[] } };\n return doneEvent.output?.files ?? [];\n },\n }),\n emitChangesDetected: ({ context }) => {\n context.emitter.emit('postinstall:changes', { files: context.changedFiles ?? [] });\n },\n emitNoChanges: ({ context }) => {\n context.emitter.emit('postinstall:nochanges', {});\n },\n emitCommitPrompt: ({ context }) => {\n context.emitter.emit('postinstall:commit:prompt', {});\n },\n emitGeneratingCommitMessage: ({ context }) => {\n context.emitter.emit('postinstall:commit:generating', {});\n },\n assignCommitMessage: assign({\n commitMessage: ({ event }) => {\n const doneEvent = event as unknown as { output: string };\n return doneEvent.output;\n },\n }),\n emitCommitting: ({ context }) => {\n context.emitter.emit('postinstall:commit:committing', { message: context.commitMessage ?? '' });\n },\n emitCommitSuccess: ({ context }) => {\n context.emitter.emit('postinstall:commit:success', { message: context.commitMessage ?? '' });\n },\n emitCommitFailed: ({ context }) => {\n const message = context.error?.message ?? 'Commit failed';\n context.emitter.emit('postinstall:commit:failed', { error: message });\n },\n emitPrPrompt: ({ context }) => {\n context.emitter.emit('postinstall:pr:prompt', {});\n },\n emitGeneratingPrDescription: ({ context }) => {\n context.emitter.emit('postinstall:pr:generating', {});\n },\n assignPrDescription: assign({\n prDescription: ({ event }) => {\n const doneEvent = event as unknown as { output: string };\n return doneEvent.output;\n },\n }),\n emitPushing: ({ context }) => {\n context.emitter.emit('postinstall:pr:pushing', {});\n },\n emitPushFailed: ({ context }) => {\n const message = context.error?.message ?? 'Push failed';\n context.emitter.emit('postinstall:push:failed', { error: message });\n },\n emitCreatingPr: ({ context }) => {\n context.emitter.emit('postinstall:pr:creating', {});\n },\n assignPrUrl: assign({\n prUrl: ({ event }) => {\n const doneEvent = event as unknown as { output: string };\n return doneEvent.output;\n },\n }),\n emitPrCreated: ({ context }) => {\n context.emitter.emit('postinstall:pr:success', { url: context.prUrl ?? '' });\n },\n emitPrFailed: ({ context }) => {\n const message = context.error?.message ?? 'PR creation failed';\n context.emitter.emit('postinstall:pr:failed', { error: message });\n },\n emitManualInstructions: ({ context }) => {\n const branch = context.currentBranch ?? 'HEAD';\n const instructions = getManualPrInstructions(branch);\n context.emitter.emit('postinstall:manual', { instructions });\n },\n emitComplete: ({ context }) => {\n const summary = context.agentSummary ?? 'WorkOS AuthKit installed successfully!';\n context.emitter.emit('complete', { success: true, summary });\n },\n },\n\n guards: {\n shouldSkipAuth: ({ context }) => context.options.skipAuth === true,\n gitIsClean: ({ context }) => context.gitIsClean === true,\n hasCredentials: ({ context }) => context.options.apiKey !== undefined && context.options.clientId !== undefined,\n hasIntegration: ({ context }) => context.integration !== undefined,\n shouldSkipPostInstall: ({ context }) => context.options.noCommit === true,\n hasGhCli: () => hasGhCli(),\n },\n\n actors: {\n checkAuthentication: fromPromise<boolean, { options: InstallerOptions }>(async () => {\n throw new Error('checkAuthentication not implemented - provide via machine.provide()');\n }),\n detectIntegration: fromPromise<DetectionOutput, { options: InstallerOptions }>(async () => {\n throw new Error('detectIntegration not implemented - provide via machine.provide()');\n }),\n checkGitStatus: fromPromise<GitCheckOutput, { installDir: string }>(async () => {\n throw new Error('checkGitStatus not implemented - provide via machine.provide()');\n }),\n configureEnvironment: fromPromise<void, { context: InstallerMachineContext }>(async () => {\n throw new Error('configureEnvironment not implemented - provide via machine.provide()');\n }),\n runAgent: fromPromise<AgentOutput, { context: InstallerMachineContext }>(async () => {\n throw new Error('runAgent not implemented - provide via machine.provide()');\n }),\n // Credential discovery actors\n detectEnvFiles: fromPromise<EnvFileInfo, { installDir: string }>(async () => {\n throw new Error('detectEnvFiles not implemented - provide via machine.provide()');\n }),\n scanEnvFiles: fromPromise<DiscoveryResult, { installDir: string }>(async () => {\n throw new Error('scanEnvFiles not implemented - provide via machine.provide()');\n }),\n checkStoredAuth: fromPromise<boolean, void>(async () => {\n throw new Error('checkStoredAuth not implemented - provide via machine.provide()');\n }),\n runDeviceAuth: fromPromise<\n { result: DeviceAuthResult; deviceAuth: DeviceAuthResponse },\n { emitter: InstallerMachineContext['emitter'] }\n >(async () => {\n throw new Error('runDeviceAuth not implemented - provide via machine.provide()');\n }),\n fetchStagingCredentials: fromPromise<StagingCredentials, void>(async () => {\n throw new Error('fetchStagingCredentials not implemented - provide via machine.provide()');\n }),\n // Branch check actors\n checkBranch: fromPromise<BranchCheckOutput, void>(async () => {\n throw new Error('checkBranch not implemented - provide via machine.provide()');\n }),\n createBranch: fromPromise<{ branch: string }, { name: string; fallbackName: string }>(async () => {\n throw new Error('createBranch not implemented - provide via machine.provide()');\n }),\n // Post-install actors\n detectChanges: fromPromise<{ hasChanges: boolean; files: string[] }, void>(async () => {\n throw new Error('detectChanges not implemented - provide via machine.provide()');\n }),\n generateCommitMessage: fromPromise<string, { integration: string; files: string[]; direct?: boolean }>(async () => {\n throw new Error('generateCommitMessage not implemented - provide via machine.provide()');\n }),\n commitChanges: fromPromise<void, { message: string; cwd: string }>(async () => {\n throw new Error('commitChanges not implemented - provide via machine.provide()');\n }),\n generatePrDescription: fromPromise<\n string,\n { integration: string; files: string[]; commitMessage: string; direct?: boolean }\n >(async () => {\n throw new Error('generatePrDescription not implemented - provide via machine.provide()');\n }),\n pushBranch: fromPromise<void, { cwd: string }>(async () => {\n throw new Error('pushBranch not implemented - provide via machine.provide()');\n }),\n createPr: fromPromise<string, { title: string; body: string; cwd: string }>(async () => {\n throw new Error('createPr not implemented - provide via machine.provide()');\n }),\n },\n}).createMachine({\n id: 'installer',\n initial: 'idle',\n\n context: ({ input }) => ({\n emitter: input.emitter,\n options: input.options,\n integration: input.options.integration,\n credentials:\n input.options.apiKey && input.options.clientId\n ? { apiKey: input.options.apiKey, clientId: input.options.clientId }\n : undefined,\n gitIsClean: true,\n gitDirtyFiles: [],\n error: undefined,\n }),\n\n // Global event handlers - CANCEL can be sent from any state\n on: {\n CANCEL: {\n target: '.cancelled',\n },\n },\n\n states: {\n idle: {\n on: {\n START: [\n {\n target: 'preparing',\n guard: 'shouldSkipAuth',\n actions: { type: 'emitStateEnter', params: { state: 'preparing' } },\n },\n {\n target: 'authenticating',\n actions: { type: 'emitStateEnter', params: { state: 'authenticating' } },\n },\n ],\n },\n },\n\n authenticating: {\n entry: ['emitAuthChecking'],\n invoke: {\n id: 'checkAuthentication',\n src: 'checkAuthentication',\n input: ({ context }) => ({ options: context.options }),\n onDone: {\n target: 'preparing',\n actions: [\n 'emitAuthSuccess',\n { type: 'emitStateExit', params: { state: 'authenticating' } },\n { type: 'emitStateEnter', params: { state: 'preparing' } },\n ],\n },\n onError: {\n target: 'error',\n actions: ['assignError', 'emitAuthFailure', { type: 'emitStateExit', params: { state: 'authenticating' } }],\n },\n },\n },\n\n preparing: {\n type: 'parallel',\n states: {\n detection: {\n initial: 'running',\n states: {\n running: {\n entry: ['emitDetectionStart'],\n invoke: {\n id: 'detectIntegration',\n src: 'detectIntegration',\n input: ({ context }) => ({ options: context.options }),\n onDone: {\n target: 'done',\n actions: ['assignDetectionResult', 'emitDetectionComplete'],\n },\n onError: {\n // Detection failure is non-fatal - user can select manually\n target: 'done',\n actions: ['emitDetectionComplete'],\n },\n },\n },\n done: {\n type: 'final',\n },\n },\n },\n gitCheck: {\n initial: 'running',\n states: {\n running: {\n entry: ['emitGitChecking'],\n invoke: {\n id: 'checkGitStatus',\n src: 'checkGitStatus',\n input: ({ context }) => ({ installDir: context.options.installDir }),\n onDone: {\n target: 'evaluating',\n actions: ['assignGitResult'],\n },\n onError: {\n // Git check failure is non-fatal - treat as clean\n target: 'done',\n },\n },\n },\n evaluating: {\n always: [\n {\n target: 'done',\n guard: 'gitIsClean',\n actions: ['emitGitClean'],\n },\n {\n target: 'awaitingConfirmation',\n actions: ['emitGitDirty'],\n },\n ],\n },\n awaitingConfirmation: {\n on: {\n GIT_CONFIRMED: {\n target: 'done',\n actions: ['emitGitConfirmed'],\n },\n GIT_CANCELLED: {\n target: '#installer.cancelled',\n actions: ['emitGitCancelled'],\n },\n },\n },\n done: {\n type: 'final',\n },\n },\n },\n branchCheck: {\n initial: 'running',\n states: {\n running: {\n entry: ['emitBranchChecking'],\n invoke: {\n id: 'checkBranch',\n src: 'checkBranch',\n onDone: [\n {\n target: 'awaitingConfirmation',\n guard: ({ event }) => (event.output as BranchCheckOutput).isProtected,\n actions: ['assignBranchResult', 'emitBranchProtected'],\n },\n {\n target: 'done',\n actions: ['assignBranchResult'],\n },\n ],\n onError: {\n // Branch check failure is non-fatal\n target: 'done',\n },\n },\n },\n awaitingConfirmation: {\n on: {\n BRANCH_CREATE: {\n target: 'creating',\n },\n BRANCH_CONTINUE: {\n target: 'done',\n },\n BRANCH_CANCEL: {\n target: '#installer.cancelled',\n },\n },\n },\n creating: {\n invoke: {\n id: 'createBranch',\n src: 'createBranch',\n input: () => ({\n name: 'feat/add-workos-authkit',\n fallbackName: `feat/add-workos-authkit-${Date.now()}`,\n }),\n onDone: {\n target: 'done',\n actions: [\n {\n type: 'emitBranchCreated',\n params: ({ event }) => ({ branch: (event.output as { branch: string }).branch }),\n },\n ],\n },\n onError: {\n // Branch creation failure is non-fatal\n target: 'done',\n actions: ['assignError', 'emitBranchCreateFailed'],\n },\n },\n },\n done: {\n type: 'final',\n },\n },\n },\n },\n onDone: [\n {\n target: 'gatheringCredentials',\n guard: 'hasIntegration',\n actions: { type: 'emitStateExit', params: { state: 'preparing' } },\n },\n {\n target: 'error',\n actions: [\n assign({ error: () => new Error('Could not detect framework integration') }),\n { type: 'emitStateExit', params: { state: 'preparing' } },\n ],\n },\n ],\n },\n\n gatheringCredentials: {\n entry: [{ type: 'emitStateEnter', params: { state: 'gatheringCredentials' } }],\n initial: 'checkingCliFlags',\n states: {\n // Step 1: Check CLI flags (highest priority)\n checkingCliFlags: {\n always: [\n {\n target: '#installer.configuring',\n guard: 'hasCredentials',\n actions: [\n assign({ credentialSource: () => 'cli' as CredentialSource }),\n 'emitCredentialsFound',\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n { target: 'detectingEnvFiles' },\n ],\n },\n\n // Step 2: Check if env files exist (don't read yet)\n detectingEnvFiles: {\n invoke: {\n id: 'detectEnvFiles',\n src: 'detectEnvFiles',\n input: ({ context }) => ({ installDir: context.options.installDir }),\n onDone: [\n {\n target: 'promptingEnvScan',\n guard: ({ event }) => {\n const output = event.output as EnvFileInfo;\n return output.exists;\n },\n actions: [\n assign({\n envFilesDetected: ({ event }) => {\n const output = event.output as EnvFileInfo;\n return output.files;\n },\n }),\n 'emitEnvDetected',\n ],\n },\n { target: 'checkingStoredAuth' },\n ],\n onError: {\n target: 'checkingStoredAuth', // Non-fatal, continue\n },\n },\n },\n\n // Step 3: Ask user for consent to scan env files\n promptingEnvScan: {\n entry: ['emitEnvScanPrompt'],\n on: {\n ENV_SCAN_APPROVED: {\n target: 'scanningEnvFiles',\n actions: assign({ envScanConsent: () => true }),\n },\n ENV_SCAN_DECLINED: {\n target: 'checkingStoredAuth',\n actions: assign({ envScanConsent: () => false }),\n },\n CANCEL: {\n target: '#installer.cancelled',\n actions: { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n },\n },\n },\n\n // Step 4: Scan env files for credentials (with consent)\n scanningEnvFiles: {\n entry: ['emitEnvScanning'],\n invoke: {\n id: 'scanEnvFiles',\n src: 'scanEnvFiles',\n input: ({ context }) => ({ installDir: context.options.installDir }),\n onDone: [\n {\n target: '#installer.configuring',\n guard: ({ event }) => {\n const result = event.output as DiscoveryResult;\n return result.found && !!result.clientId;\n },\n actions: [\n assign({\n credentials: ({ event }) => {\n const result = event.output as DiscoveryResult;\n return { clientId: result.clientId!, apiKey: result.apiKey };\n },\n credentialSource: () => 'env' as CredentialSource,\n envCredentialPath: ({ event }) => (event.output as DiscoveryResult).sourcePath,\n }),\n 'emitEnvCredentialsFound',\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n {\n target: 'checkingStoredAuth',\n actions: ['emitEnvNotFound'],\n },\n ],\n onError: {\n target: 'checkingStoredAuth',\n },\n },\n },\n\n // Step 5: Check for stored auth token\n checkingStoredAuth: {\n invoke: {\n id: 'checkStoredAuth',\n src: 'checkStoredAuth',\n onDone: [\n {\n target: 'fetchingStagingCredentials',\n guard: ({ event }) => event.output === true,\n },\n { target: 'runningDeviceAuth' },\n ],\n onError: {\n target: 'runningDeviceAuth',\n },\n },\n },\n\n // Step 6: Run device authorization flow\n runningDeviceAuth: {\n entry: ['emitDeviceAuthStart'],\n invoke: {\n id: 'runDeviceAuth',\n src: 'runDeviceAuth',\n input: ({ context }) => ({ emitter: context.emitter }),\n onDone: {\n target: 'fetchingStagingCredentials',\n actions: [\n 'emitDeviceAuthSuccess',\n assign({\n deviceAuth: ({ event }) => {\n const output = event.output as { result: DeviceAuthResult; deviceAuth: DeviceAuthResponse };\n return {\n verificationUri: output.deviceAuth.verification_uri,\n verificationUriComplete: output.deviceAuth.verification_uri_complete,\n userCode: output.deviceAuth.user_code,\n };\n },\n }),\n ],\n },\n onError: {\n target: 'promptingManual',\n actions: ['assignError', 'emitDeviceAuthError'],\n },\n },\n },\n\n // Step 7: Fetch staging credentials from API\n fetchingStagingCredentials: {\n entry: ['emitStagingFetching'],\n invoke: {\n id: 'fetchStagingCredentials',\n src: 'fetchStagingCredentials',\n onDone: {\n target: '#installer.configuring',\n actions: [\n assign({\n credentials: ({ event }) => {\n const staging = event.output as StagingCredentials;\n return { clientId: staging.clientId, apiKey: staging.apiKey };\n },\n credentialSource: ({ context }) =>\n context.deviceAuth ? ('device' as CredentialSource) : ('stored' as CredentialSource),\n }),\n 'emitStagingSuccess',\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n onError: {\n target: 'promptingManual',\n actions: ['assignError', 'emitStagingError'],\n },\n },\n },\n\n // Step 8: Manual fallback\n promptingManual: {\n entry: ['emitCredentialsGathering'],\n on: {\n CREDENTIALS_SUBMITTED: {\n target: '#installer.configuring',\n actions: [\n 'assignCredentials',\n assign({ credentialSource: () => 'manual' as CredentialSource }),\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n RETRY_AUTH: {\n target: 'runningDeviceAuth',\n },\n CANCEL: {\n target: '#installer.cancelled',\n actions: { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n },\n },\n },\n },\n },\n\n configuring: {\n entry: [{ type: 'emitStateEnter', params: { state: 'configuring' } }, 'emitConfigStart'],\n invoke: {\n id: 'configureEnvironment',\n src: 'configureEnvironment',\n input: ({ context }) => ({ context }),\n onDone: {\n target: 'runningAgent',\n actions: ['emitConfigComplete', { type: 'emitStateExit', params: { state: 'configuring' } }],\n },\n onError: {\n target: 'error',\n actions: ['assignError', { type: 'emitStateExit', params: { state: 'configuring' } }],\n },\n },\n },\n\n runningAgent: {\n entry: [{ type: 'emitStateEnter', params: { state: 'runningAgent' } }, 'emitAgentStart'],\n invoke: {\n id: 'runAgent',\n src: 'runAgent',\n input: ({ context }) => ({ context }),\n onDone: [\n {\n target: 'error',\n guard: ({ event }) => {\n const output = event.output as AgentOutput;\n return !output.success;\n },\n actions: [\n ({ context, event }) => {\n const output = event.output as AgentOutput;\n context.emitter.emit('agent:failure', {\n message: output.error?.message ?? 'Agent failed',\n });\n },\n assign({\n error: ({ event }) => {\n const output = event.output as AgentOutput;\n return output.error ?? new Error('Agent failed');\n },\n }),\n { type: 'emitStateExit', params: { state: 'runningAgent' } },\n ],\n },\n {\n target: 'postInstall',\n actions: [\n assign({\n agentSummary: ({ event }) => {\n const output = event.output as AgentOutput;\n return output.summary;\n },\n }),\n ({ context, event }) => {\n const output = event.output as AgentOutput;\n context.emitter.emit('agent:success', { summary: output.summary });\n },\n { type: 'emitStateExit', params: { state: 'runningAgent' } },\n ],\n },\n ],\n onError: {\n target: 'error',\n actions: ['assignError', 'emitAgentFailure', { type: 'emitStateExit', params: { state: 'runningAgent' } }],\n },\n },\n },\n\n postInstall: {\n initial: 'checking',\n entry: [{ type: 'emitStateEnter', params: { state: 'postInstall' } }],\n states: {\n checking: {\n always: [\n {\n target: '#installer.complete',\n guard: 'shouldSkipPostInstall',\n },\n { target: 'detectingChanges' },\n ],\n },\n\n detectingChanges: {\n invoke: {\n id: 'detectChanges',\n src: 'detectChanges',\n onDone: [\n {\n target: 'promptingCommit',\n guard: ({ event }) => (event.output as { hasChanges: boolean; files: string[] }).hasChanges,\n actions: ['assignChangedFiles', 'emitChangesDetected'],\n },\n {\n target: 'done',\n actions: ['emitNoChanges'],\n },\n ],\n onError: { target: 'done' },\n },\n },\n\n promptingCommit: {\n entry: ['emitCommitPrompt'],\n on: {\n COMMIT_APPROVED: { target: 'generatingCommitMessage' },\n COMMIT_DECLINED: { target: 'done' },\n CANCEL: { target: '#installer.cancelled' },\n },\n },\n\n generatingCommitMessage: {\n entry: ['emitGeneratingCommitMessage'],\n invoke: {\n id: 'generateCommitMessage',\n src: 'generateCommitMessage',\n input: ({ context }) => ({\n integration: context.integration ?? 'project',\n files: context.changedFiles ?? [],\n direct: context.options.direct,\n }),\n onDone: {\n target: 'committing',\n actions: ['assignCommitMessage'],\n },\n },\n },\n\n committing: {\n entry: ['emitCommitting'],\n invoke: {\n id: 'commitChanges',\n src: 'commitChanges',\n input: ({ context }) => ({\n message: context.commitMessage ?? '',\n cwd: context.options.installDir,\n }),\n onDone: {\n target: 'checkingGhCli',\n actions: ['emitCommitSuccess'],\n },\n onError: {\n target: 'done',\n actions: ['assignError', 'emitCommitFailed'],\n },\n },\n },\n\n checkingGhCli: {\n always: [\n {\n target: 'promptingPr',\n guard: 'hasGhCli',\n },\n {\n target: 'showingManualInstructions',\n },\n ],\n },\n\n promptingPr: {\n entry: ['emitPrPrompt'],\n on: {\n PR_APPROVED: { target: 'generatingPrDescription' },\n PR_DECLINED: { target: 'done' },\n CANCEL: { target: '#installer.cancelled' },\n },\n },\n\n generatingPrDescription: {\n entry: ['emitGeneratingPrDescription'],\n invoke: {\n id: 'generatePrDescription',\n src: 'generatePrDescription',\n input: ({ context }) => ({\n integration: context.integration ?? 'project',\n files: context.changedFiles ?? [],\n commitMessage: context.commitMessage ?? '',\n direct: context.options.direct,\n }),\n onDone: {\n target: 'pushing',\n actions: ['assignPrDescription'],\n },\n },\n },\n\n pushing: {\n entry: ['emitPushing'],\n invoke: {\n id: 'pushBranch',\n src: 'pushBranch',\n input: ({ context }) => ({ cwd: context.options.installDir }),\n onDone: { target: 'creatingPr' },\n onError: {\n target: 'showingManualInstructions',\n actions: ['assignError', 'emitPushFailed'],\n },\n },\n },\n\n creatingPr: {\n entry: ['emitCreatingPr'],\n invoke: {\n id: 'createPr',\n src: 'createPr',\n input: ({ context }) => ({\n title: context.commitMessage ?? '',\n body: context.prDescription ?? '',\n cwd: context.options.installDir,\n }),\n onDone: {\n target: 'done',\n actions: ['assignPrUrl', 'emitPrCreated'],\n },\n onError: {\n target: 'done',\n actions: ['assignError', 'emitPrFailed'],\n },\n },\n },\n\n showingManualInstructions: {\n entry: ['emitManualInstructions'],\n always: { target: 'done' },\n },\n\n done: {\n type: 'final',\n },\n },\n onDone: {\n target: 'complete',\n },\n },\n\n complete: {\n type: 'final',\n entry: [{ type: 'emitStateEnter', params: { state: 'complete' } }, 'emitComplete'],\n },\n\n cancelled: {\n type: 'final',\n entry: [{ type: 'emitStateEnter', params: { state: 'cancelled' } }, 'emitCancelled'],\n },\n\n error: {\n type: 'final',\n entry: [{ type: 'emitStateEnter', params: { state: 'error' } }, 'emitError'],\n },\n },\n});\n\nexport type InstallerMachine = typeof installerMachine;\nexport type InstallerActor = ActorRefFrom<typeof installerMachine>;\n"]}
1
+ {"version":3,"file":"installer-core.js","sourceRoot":"","sources":["../../src/lib/installer-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAqB,MAAM,QAAQ,CAAC;AAiBvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;IACpC,KAAK,EAAE;QACL,OAAO,EAAE,EAA6B;QACtC,KAAK,EAAE,EAA2B;QAClC,MAAM,EAAE,EAA2B;KACpC;IAED,OAAO,EAAE;QACP,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,MAAyB,EAAE,EAAE;YACzD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,MAAyB,EAAE,EAAE;YACxD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAChC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAChC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,uBAAuB,CAAC;YAClE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAClC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACrC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC5B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC5B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAChC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAChC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACpC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAClC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACjC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACpC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAClC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,iBAAiB,CAAC;YAC5D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACnC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,qBAAqB,EAAE,MAAM,CAAC;YAC5B,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAE,KAAqD,CAAC,MAAM,EAAE,YAAY,IAAI,KAAK;YACjH,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,KAAqD,CAAC,MAAM,EAAE,cAAc,IAAI,KAAK;YACxF,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAE,KAAqD,CAAC,MAAM,EAAE,YAAY,IAAI,KAAK;SAClH,CAAC;QACF,gBAAgB,EAAE,MAAM,CAAC;YACvB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;SACvB,CAAC;QACF,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAClC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACnC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;gBAC5E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QACD,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,MAA0B,EAAE,EAAE;YAC7D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,sBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,yBAAyB,CAAC;YACpE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,kBAAkB,EAAE,MAAM,CAAC;YACzB,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC3B,MAAM,SAAS,GAAG,KAAiD,CAAC;gBACpE,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,IAAI,SAAS,CAAC;YAC/C,CAAC;YACD,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC/B,MAAM,SAAS,GAAG,KAAiD,CAAC;gBACpE,OAAO,SAAS,CAAC,MAAM,EAAE,WAAW,IAAI,KAAK,CAAC;YAChD,CAAC;SACF,CAAC;QACF,wBAAwB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACxC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YACxG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACpC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACjC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,uBAAuB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACvC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,iBAAiB,IAAI,MAAM,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,mBAAmB,EAAE,GAAG,EAAE;YACxB,gDAAgD;QAClD,CAAC;QACD,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACrC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,6BAA6B,CAAC;YACxE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACjC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACnC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAClC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,qCAAqC,CAAC;YAChF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAClC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC9B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,MAA4B,EAAE,EAAE;YAC9D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,wBAAwB,CAAC;YACnE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;YACnC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,qBAAqB,EAAE,MAAM,CAAC;YAC5B,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACzB,MAAM,SAAS,GAAG,KAA+C,CAAC;gBAClE,OAAO,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;YACvC,CAAC;SACF,CAAC;QACF,eAAe,EAAE,MAAM,CAAC;YACtB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACxB,MAAM,SAAS,GAAG,KAA8C,CAAC;gBACjE,OAAO,SAAS,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;YAC3C,CAAC;YACD,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC3B,MAAM,SAAS,GAAG,KAA8C,CAAC;gBACjE,OAAO,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;YACvC,CAAC;SACF,CAAC;QAEF,iBAAiB,EAAE,MAAM,CAAC;YACxB,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACzB,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;oBAC3C,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC5D,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC;QAEF,WAAW,EAAE,MAAM,CAAC;YAClB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACnB,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;oBACrD,OAAO,KAAK,CAAC,KAAK,CAAC;gBACrB,CAAC;gBACD,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;oBAChF,OAAO,IAAI,KAAK,CAAC,MAAM,CAAE,KAAK,CAAC,KAA8B,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzF,CAAC;gBACD,OAAO,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACpC,CAAC;SACF,CAAC;QAEF,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,8BAA8B,CAAC;YACzE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,uBAAuB;QACvB,kBAAkB,EAAE,MAAM,CAAC;YACzB,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC1B,MAAM,SAAS,GAAG,KAAwE,CAAC;gBAC3F,OAAO,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;YACvC,CAAC;SACF,CAAC;QACF,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACnC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAChC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,2BAA2B,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC3C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,mBAAmB,EAAE,MAAM,CAAC;YAC1B,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC3B,MAAM,SAAS,GAAG,KAAsC,CAAC;gBACzD,OAAO,SAAS,CAAC,MAAM,CAAC;YAC1B,CAAC;SACF,CAAC;QACF,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC9B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACjC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,CAAC;YAC1D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC5B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,2BAA2B,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC3C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,mBAAmB,EAAE,MAAM,CAAC;YAC1B,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC3B,MAAM,SAAS,GAAG,KAAsC,CAAC;gBACzD,OAAO,SAAS,CAAC,MAAM,CAAC;YAC1B,CAAC;SACF,CAAC;QACF,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC3B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,aAAa,CAAC;YACxD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC9B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,WAAW,EAAE,MAAM,CAAC;YAClB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACnB,MAAM,SAAS,GAAG,KAAsC,CAAC;gBACzD,OAAO,SAAS,CAAC,MAAM,CAAC;YAC1B,CAAC;SACF,CAAC;QACF,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,oBAAoB,CAAC;YAC/D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,sBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC;YAC/C,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;YACrD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,IAAI,wCAAwC,CAAC;YACjF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;KACF;IAED,MAAM,EAAE;QACN,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI;QAClE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI;QACxD,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS;QAC/G,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;QAClE,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI;QACzE,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE;QAC1B,8DAA8D;QAC9D,0EAA0E;QAC1E,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAE,KAAqD,CAAC,MAAM,EAAE,YAAY;QAC5G,kBAAkB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YAChC,MAAM,MAAM,GAAI,KAAqD,CAAC,MAAM,CAAC;YAC7E,OAAO,CAAC,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC;QAC1D,CAAC;KACF;IAED,MAAM,EAAE;QACN,mBAAmB,EAAE,WAAW,CAAyC,KAAK,IAAI,EAAE;YAClF,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC,CAAC;QACF,cAAc,EAAE,WAAW,CAAsD,KAAK,IAAI,EAAE;YAC1F,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC,CAAC;QACF,WAAW,EAAE,WAAW,CAA6C,KAAK,IAAI,EAAE;YAC9E,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC,CAAC;QACF,iBAAiB,EAAE,WAAW,CAAiD,KAAK,IAAI,EAAE;YACxF,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC,CAAC;QACF,cAAc,EAAE,WAAW,CAAyC,KAAK,IAAI,EAAE;YAC7E,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC,CAAC;QACF,oBAAoB,EAAE,WAAW,CAA6C,KAAK,IAAI,EAAE;YACvF,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC,CAAC;QACF,QAAQ,EAAE,WAAW,CAAoD,KAAK,IAAI,EAAE;YAClF,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC,CAAC;QACF,8BAA8B;QAC9B,cAAc,EAAE,WAAW,CAAsC,KAAK,IAAI,EAAE;YAC1E,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC,CAAC;QACF,YAAY,EAAE,WAAW,CAA0C,KAAK,IAAI,EAAE;YAC5E,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC,CAAC;QACF,eAAe,EAAE,WAAW,CAAgB,KAAK,IAAI,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC,CAAC;QACF,aAAa,EAAE,WAAW,CAGxB,KAAK,IAAI,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC,CAAC;QACF,uBAAuB,EAAE,WAAW,CAA2B,KAAK,IAAI,EAAE;YACxE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC,CAAC;QACF,sBAAsB;QACtB,WAAW,EAAE,WAAW,CAA0B,KAAK,IAAI,EAAE;YAC3D,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC,CAAC;QACF,YAAY,EAAE,WAAW,CAA6D,KAAK,IAAI,EAAE;YAC/F,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC,CAAC;QACF,sBAAsB;QACtB,aAAa,EAAE,WAAW,CAAiD,KAAK,IAAI,EAAE;YACpF,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC,CAAC;QACF,qBAAqB,EAAE,WAAW,CAAqE,KAAK,IAAI,EAAE;YAChH,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC,CAAC;QACF,aAAa,EAAE,WAAW,CAAyC,KAAK,IAAI,EAAE;YAC5E,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC,CAAC;QACF,qBAAqB,EAAE,WAAW,CAGhC,KAAK,IAAI,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC,CAAC;QACF,UAAU,EAAE,WAAW,CAAwB,KAAK,IAAI,EAAE;YACxD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC,CAAC;QACF,QAAQ,EAAE,WAAW,CAAuD,KAAK,IAAI,EAAE;YACrF,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC,CAAC;KACH;CACF,CAAC,CAAC,aAAa,CAAC;IACf,EAAE,EAAE,WAAW;IACf,OAAO,EAAE,MAAM;IAEf,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACvB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,+EAA+E;QAC/E,WAAW,EAAE,SAAS;QACtB,WAAW,EACT,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ;YAC5C,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;YACpE,CAAC,CAAC,SAAS;QACf,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,EAAE;QACjB,KAAK,EAAE,SAAS;KACjB,CAAC;IAEF,4DAA4D;IAC5D,EAAE,EAAE;QACF,MAAM,EAAE;YACN,MAAM,EAAE,YAAY;SACrB;KACF;IAED,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,EAAE,EAAE;gBACF,KAAK,EAAE;oBACL;wBACE,MAAM,EAAE,UAAU;wBAClB,KAAK,EAAE,gBAAgB;wBACvB,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;qBACnE;oBACD;wBACE,MAAM,EAAE,gBAAgB;wBACxB,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE;qBACzE;iBACF;aACF;SACF;QAED,cAAc,EAAE;YACd,KAAK,EAAE,CAAC,kBAAkB,CAAC;YAC3B,MAAM,EAAE;gBACN,EAAE,EAAE,qBAAqB;gBACzB,GAAG,EAAE,qBAAqB;gBAC1B,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;gBACtD,MAAM,EAAE;oBACN,MAAM,EAAE,UAAU;oBAClB,OAAO,EAAE;wBACP,iBAAiB;wBACjB,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE;wBAC9D,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;qBAC1D;iBACF;gBACD,OAAO,EAAE;oBACP,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,CAAC,aAAa,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAC;iBAC5G;aACF;SACF;QAED,QAAQ,EAAE;YACR,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE;gBACN,QAAQ,EAAE;oBACR,KAAK,EAAE,CAAC,sBAAsB,CAAC;oBAC/B,MAAM,EAAE;wBACN,EAAE,EAAE,gBAAgB;wBACpB,GAAG,EAAE,gBAAgB;wBACrB,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;wBACtD,MAAM,EAAE;4BACN;gCACE,sDAAsD;gCACtD,MAAM,EAAE,MAAM;gCACd,KAAK,EAAE,iBAAiB;gCACxB,OAAO,EAAE,CAAC,uBAAuB,CAAC;6BACnC;4BACD;gCACE,2CAA2C;gCAC3C,MAAM,EAAE,SAAS;gCACjB,KAAK,EAAE,oBAAoB;gCAC3B,OAAO,EAAE,CAAC,uBAAuB,CAAC;6BACnC;4BACD;gCACE,oCAAoC;gCACpC,MAAM,EAAE,WAAW;gCACnB,OAAO,EAAE,CAAC,uBAAuB,CAAC;6BACnC;yBACF;wBACD,OAAO,EAAE;4BACP,8DAA8D;4BAC9D,iEAAiE;4BACjE,MAAM,EAAE,MAAM;yBACf;qBACF;iBACF;gBACD,SAAS,EAAE;oBACT,KAAK,EAAE,CAAC,oBAAoB,CAAC;oBAC7B,EAAE,EAAE;wBACF,kBAAkB,EAAE;4BAClB,MAAM,EAAE,SAAS;yBAClB;wBACD,kBAAkB,EAAE;4BAClB,MAAM,EAAE,sBAAsB;4BAC9B,OAAO,EAAE,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC;yBAC3F;qBACF;iBACF;gBACD,OAAO,EAAE;oBACP,KAAK,EAAE,CAAC,mBAAmB,CAAC;oBAC5B,MAAM,EAAE;wBACN,EAAE,EAAE,aAAa;wBACjB,GAAG,EAAE,aAAa;wBAClB,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;wBACrC,MAAM,EAAE;4BACN,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;yBACtD;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,kBAAkB;4BAC1B,OAAO,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC;yBACzG;qBACF;iBACF;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;iBACd;aACF;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;oBACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;iBAC3D;aACF;SACF;QAED,SAAS,EAAE;YACT,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE;gBACN,SAAS,EAAE;oBACT,OAAO,EAAE,SAAS;oBAClB,MAAM,EAAE;wBACN,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,oBAAoB,CAAC;4BAC7B,MAAM,EAAE;gCACN,EAAE,EAAE,mBAAmB;gCACvB,GAAG,EAAE,mBAAmB;gCACxB,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;gCACtD,MAAM,EAAE;oCACN,MAAM,EAAE,MAAM;oCACd,OAAO,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;iCAC5D;gCACD,OAAO,EAAE;oCACP,4DAA4D;oCAC5D,MAAM,EAAE,MAAM;oCACd,OAAO,EAAE,CAAC,uBAAuB,CAAC;iCACnC;6BACF;yBACF;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO;yBACd;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE,SAAS;oBAClB,MAAM,EAAE;wBACN,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,iBAAiB,CAAC;4BAC1B,MAAM,EAAE;gCACN,EAAE,EAAE,gBAAgB;gCACpB,GAAG,EAAE,gBAAgB;gCACrB,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gCACpE,MAAM,EAAE;oCACN,MAAM,EAAE,YAAY;oCACpB,OAAO,EAAE,CAAC,iBAAiB,CAAC;iCAC7B;gCACD,OAAO,EAAE;oCACP,kDAAkD;oCAClD,MAAM,EAAE,MAAM;iCACf;6BACF;yBACF;wBACD,UAAU,EAAE;4BACV,MAAM,EAAE;gCACN;oCACE,MAAM,EAAE,MAAM;oCACd,KAAK,EAAE,YAAY;oCACnB,OAAO,EAAE,CAAC,cAAc,CAAC;iCAC1B;gCACD;oCACE,MAAM,EAAE,sBAAsB;oCAC9B,OAAO,EAAE,CAAC,cAAc,CAAC;iCAC1B;6BACF;yBACF;wBACD,oBAAoB,EAAE;4BACpB,EAAE,EAAE;gCACF,aAAa,EAAE;oCACb,MAAM,EAAE,MAAM;oCACd,OAAO,EAAE,CAAC,kBAAkB,CAAC;iCAC9B;gCACD,aAAa,EAAE;oCACb,MAAM,EAAE,sBAAsB;oCAC9B,OAAO,EAAE,CAAC,kBAAkB,CAAC;iCAC9B;6BACF;yBACF;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO;yBACd;qBACF;iBACF;gBACD,WAAW,EAAE;oBACX,OAAO,EAAE,SAAS;oBAClB,MAAM,EAAE;wBACN,OAAO,EAAE;4BACP,KAAK,EAAE,CAAC,oBAAoB,CAAC;4BAC7B,MAAM,EAAE;gCACN,EAAE,EAAE,aAAa;gCACjB,GAAG,EAAE,aAAa;gCAClB,MAAM,EAAE;oCACN;wCACE,MAAM,EAAE,sBAAsB;wCAC9B,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAE,KAAK,CAAC,MAA4B,CAAC,WAAW;wCACrE,OAAO,EAAE,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;qCACvD;oCACD;wCACE,MAAM,EAAE,MAAM;wCACd,OAAO,EAAE,CAAC,oBAAoB,CAAC;qCAChC;iCACF;gCACD,OAAO,EAAE;oCACP,oCAAoC;oCACpC,MAAM,EAAE,MAAM;iCACf;6BACF;yBACF;wBACD,oBAAoB,EAAE;4BACpB,EAAE,EAAE;gCACF,aAAa,EAAE;oCACb,MAAM,EAAE,UAAU;iCACnB;gCACD,eAAe,EAAE;oCACf,MAAM,EAAE,MAAM;iCACf;gCACD,aAAa,EAAE;oCACb,MAAM,EAAE,sBAAsB;iCAC/B;6BACF;yBACF;wBACD,QAAQ,EAAE;4BACR,MAAM,EAAE;gCACN,EAAE,EAAE,cAAc;gCAClB,GAAG,EAAE,cAAc;gCACnB,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;oCACZ,IAAI,EAAE,yBAAyB;oCAC/B,YAAY,EAAE,2BAA2B,IAAI,CAAC,GAAG,EAAE,EAAE;iCACtD,CAAC;gCACF,MAAM,EAAE;oCACN,MAAM,EAAE,MAAM;oCACd,OAAO,EAAE;wCACP;4CACE,IAAI,EAAE,mBAAmB;4CACzB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAG,KAAK,CAAC,MAA6B,CAAC,MAAM,EAAE,CAAC;yCACjF;qCACF;iCACF;gCACD,OAAO,EAAE;oCACP,uCAAuC;oCACvC,MAAM,EAAE,MAAM;oCACd,OAAO,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;iCACnD;6BACF;yBACF;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO;yBACd;qBACF;iBACF;aACF;YACD,MAAM,EAAE;gBACN;oBACE,MAAM,EAAE,sBAAsB;oBAC9B,KAAK,EAAE,gBAAgB;oBACvB,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;iBACnE;gBACD;oBACE,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE;wBACP,MAAM,CAAC;4BACL,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gCACrB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gCACvC,OAAO,IAAI,KAAK,CACd,0CAA0C,GAAG,KAAK;oCAChD,qFAAqF;oCACrF,gFAAgF;oCAChF,eAAe;oCACf,4FAA4F;oCAC5F,6GAA6G,CAChH,CAAC;4BACJ,CAAC;yBACF,CAAC;wBACF,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;qBAC1D;iBACF;aACF;SACF;QAED,oBAAoB,EAAE;YACpB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,CAAC;YAC9E,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE;gBACN,6CAA6C;gBAC7C,gBAAgB,EAAE;oBAChB,MAAM,EAAE;wBACN;4BACE,MAAM,EAAE,wBAAwB;4BAChC,KAAK,EAAE,gBAAgB;4BACvB,OAAO,EAAE;gCACP,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,KAAyB,EAAE,CAAC;gCAC7D,sBAAsB;gCACtB,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE;6BACrE;yBACF;wBACD,EAAE,MAAM,EAAE,mBAAmB,EAAE;qBAChC;iBACF;gBAED,oDAAoD;gBACpD,iBAAiB,EAAE;oBACjB,MAAM,EAAE;wBACN,EAAE,EAAE,gBAAgB;wBACpB,GAAG,EAAE,gBAAgB;wBACrB,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;wBACpE,MAAM,EAAE;4BACN;gCACE,MAAM,EAAE,kBAAkB;gCAC1B,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oCACnB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;oCAC3C,OAAO,MAAM,CAAC,MAAM,CAAC;gCACvB,CAAC;gCACD,OAAO,EAAE;oCACP,MAAM,CAAC;wCACL,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;4CAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;4CAC3C,OAAO,MAAM,CAAC,KAAK,CAAC;wCACtB,CAAC;qCACF,CAAC;oCACF,iBAAiB;iCAClB;6BACF;4BACD,EAAE,MAAM,EAAE,oBAAoB,EAAE;yBACjC;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,oBAAoB,EAAE,sBAAsB;yBACrD;qBACF;iBACF;gBAED,iDAAiD;gBACjD,gBAAgB,EAAE;oBAChB,KAAK,EAAE,CAAC,mBAAmB,CAAC;oBAC5B,EAAE,EAAE;wBACF,iBAAiB,EAAE;4BACjB,MAAM,EAAE,kBAAkB;4BAC1B,OAAO,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;yBAChD;wBACD,iBAAiB,EAAE;4BACjB,MAAM,EAAE,oBAAoB;4BAC5B,OAAO,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;yBACjD;wBACD,MAAM,EAAE;4BACN,MAAM,EAAE,sBAAsB;4BAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE;yBAC9E;qBACF;iBACF;gBAED,wDAAwD;gBACxD,gBAAgB,EAAE;oBAChB,KAAK,EAAE,CAAC,iBAAiB,CAAC;oBAC1B,MAAM,EAAE;wBACN,EAAE,EAAE,cAAc;wBAClB,GAAG,EAAE,cAAc;wBACnB,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;wBACpE,MAAM,EAAE;4BACN;gCACE,MAAM,EAAE,wBAAwB;gCAChC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oCACnB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAyB,CAAC;oCAC/C,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;gCAC3C,CAAC;gCACD,OAAO,EAAE;oCACP,MAAM,CAAC;wCACL,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;4CACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAyB,CAAC;4CAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;wCAC/D,CAAC;wCACD,gBAAgB,EAAE,GAAG,EAAE,CAAC,KAAyB;wCACjD,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAE,KAAK,CAAC,MAA0B,CAAC,UAAU;qCAC/E,CAAC;oCACF,yBAAyB;oCACzB,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE;iCACrE;6BACF;4BACD;gCACE,MAAM,EAAE,oBAAoB;gCAC5B,OAAO,EAAE,CAAC,iBAAiB,CAAC;6BAC7B;yBACF;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,oBAAoB;yBAC7B;qBACF;iBACF;gBAED,sCAAsC;gBACtC,kBAAkB,EAAE;oBAClB,MAAM,EAAE;wBACN,EAAE,EAAE,iBAAiB;wBACrB,GAAG,EAAE,iBAAiB;wBACtB,MAAM,EAAE;4BACN;gCACE,MAAM,EAAE,4BAA4B;gCACpC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI;6BAC5C;4BACD,EAAE,MAAM,EAAE,mBAAmB,EAAE;yBAChC;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,mBAAmB;yBAC5B;qBACF;iBACF;gBAED,wCAAwC;gBACxC,iBAAiB,EAAE;oBACjB,KAAK,EAAE,CAAC,qBAAqB,CAAC;oBAC9B,MAAM,EAAE;wBACN,EAAE,EAAE,eAAe;wBACnB,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;wBACtD,MAAM,EAAE;4BACN,MAAM,EAAE,4BAA4B;4BACpC,OAAO,EAAE;gCACP,uBAAuB;gCACvB,MAAM,CAAC;oCACL,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;wCACxB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAsE,CAAC;wCAC5F,OAAO;4CACL,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,gBAAgB;4CACnD,uBAAuB,EAAE,MAAM,CAAC,UAAU,CAAC,yBAAyB;4CACpE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS;yCACtC,CAAC;oCACJ,CAAC;iCACF,CAAC;6BACH;yBACF;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,iBAAiB;4BACzB,OAAO,EAAE,CAAC,aAAa,EAAE,qBAAqB,CAAC;yBAChD;qBACF;iBACF;gBAED,6CAA6C;gBAC7C,0BAA0B,EAAE;oBAC1B,KAAK,EAAE,CAAC,qBAAqB,CAAC;oBAC9B,MAAM,EAAE;wBACN,EAAE,EAAE,yBAAyB;wBAC7B,GAAG,EAAE,yBAAyB;wBAC9B,MAAM,EAAE;4BACN,MAAM,EAAE,wBAAwB;4BAChC,OAAO,EAAE;gCACP,MAAM,CAAC;oCACL,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;wCACzB,MAAM,OAAO,GAAG,KAAK,CAAC,MAA4B,CAAC;wCACnD,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;oCAChE,CAAC;oCACD,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAChC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAE,QAA6B,CAAC,CAAC,CAAE,QAA6B;iCACvF,CAAC;gCACF,oBAAoB;gCACpB,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE;6BACrE;yBACF;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,iBAAiB;4BACzB,OAAO,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;yBAC7C;qBACF;iBACF;gBAED,0BAA0B;gBAC1B,eAAe,EAAE;oBACf,KAAK,EAAE,CAAC,0BAA0B,CAAC;oBACnC,EAAE,EAAE;wBACF,qBAAqB,EAAE;4BACrB,MAAM,EAAE,wBAAwB;4BAChC,OAAO,EAAE;gCACP,mBAAmB;gCACnB,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,QAA4B,EAAE,CAAC;gCAChE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE;6BACrE;yBACF;wBACD,UAAU,EAAE;4BACV,MAAM,EAAE,mBAAmB;yBAC5B;wBACD,MAAM,EAAE;4BACN,MAAM,EAAE,sBAAsB;4BAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE;yBAC9E;qBACF;iBACF;aACF;SACF;QAED,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,CAAC;YACxF,MAAM,EAAE;gBACN,EAAE,EAAE,sBAAsB;gBAC1B,GAAG,EAAE,sBAAsB;gBAC3B,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;gBACrC,MAAM,EAAE;oBACN,MAAM,EAAE,cAAc;oBACtB,OAAO,EAAE,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC;iBAC7F;gBACD,OAAO,EAAE;oBACP,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC;iBACtF;aACF;SACF;QAED,YAAY,EAAE;YACZ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,gBAAgB,CAAC;YACxF,MAAM,EAAE;gBACN,EAAE,EAAE,UAAU;gBACd,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;gBACrC,MAAM,EAAE;oBACN;wBACE,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;4BACnB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;4BAC3C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;wBACzB,CAAC;wBACD,OAAO,EAAE;4BACP,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;gCACrB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;gCAC3C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE;oCACpC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,cAAc;iCACjD,CAAC,CAAC;4BACL,CAAC;4BACD,MAAM,CAAC;gCACL,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oCACnB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;oCAC3C,OAAO,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;gCACnD,CAAC;6BACF,CAAC;4BACF,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;yBAC7D;qBACF;oBACD;wBACE,MAAM,EAAE,aAAa;wBACrB,OAAO,EAAE;4BACP,MAAM,CAAC;gCACL,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oCAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;oCAC3C,OAAO,MAAM,CAAC,OAAO,CAAC;gCACxB,CAAC;6BACF,CAAC;4BACF,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;gCACrB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;gCAC3C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;4BACrE,CAAC;4BACD,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;yBAC7D;qBACF;iBACF;gBACD,OAAO,EAAE;oBACP,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC;iBAC3G;aACF;SACF;QAED,WAAW,EAAE;YACX,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC;YACrE,MAAM,EAAE;gBACN,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN;4BACE,MAAM,EAAE,qBAAqB;4BAC7B,KAAK,EAAE,uBAAuB;yBAC/B;wBACD,EAAE,MAAM,EAAE,kBAAkB,EAAE;qBAC/B;iBACF;gBAED,gBAAgB,EAAE;oBAChB,MAAM,EAAE;wBACN,EAAE,EAAE,eAAe;wBACnB,GAAG,EAAE,eAAe;wBACpB,MAAM,EAAE;4BACN;gCACE,MAAM,EAAE,iBAAiB;gCACzB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAE,KAAK,CAAC,MAAmD,CAAC,UAAU;gCAC3F,OAAO,EAAE,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;6BACvD;4BACD;gCACE,MAAM,EAAE,MAAM;gCACd,OAAO,EAAE,CAAC,eAAe,CAAC;6BAC3B;yBACF;wBACD,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;qBAC5B;iBACF;gBAED,eAAe,EAAE;oBACf,KAAK,EAAE,CAAC,kBAAkB,CAAC;oBAC3B,EAAE,EAAE;wBACF,eAAe,EAAE,EAAE,MAAM,EAAE,yBAAyB,EAAE;wBACtD,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;wBACnC,MAAM,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE;qBAC3C;iBACF;gBAED,uBAAuB,EAAE;oBACvB,KAAK,EAAE,CAAC,6BAA6B,CAAC;oBACtC,MAAM,EAAE;wBACN,EAAE,EAAE,uBAAuB;wBAC3B,GAAG,EAAE,uBAAuB;wBAC5B,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;4BACvB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS;4BAC7C,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;4BACjC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;yBAC/B,CAAC;wBACF,MAAM,EAAE;4BACN,MAAM,EAAE,YAAY;4BACpB,OAAO,EAAE,CAAC,qBAAqB,CAAC;yBACjC;qBACF;iBACF;gBAED,UAAU,EAAE;oBACV,KAAK,EAAE,CAAC,gBAAgB,CAAC;oBACzB,MAAM,EAAE;wBACN,EAAE,EAAE,eAAe;wBACnB,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;4BACvB,OAAO,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;4BACpC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;yBAChC,CAAC;wBACF,MAAM,EAAE;4BACN,MAAM,EAAE,eAAe;4BACvB,OAAO,EAAE,CAAC,mBAAmB,CAAC;yBAC/B;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;yBAC7C;qBACF;iBACF;gBAED,aAAa,EAAE;oBACb,MAAM,EAAE;wBACN;4BACE,MAAM,EAAE,aAAa;4BACrB,KAAK,EAAE,UAAU;yBAClB;wBACD;4BACE,MAAM,EAAE,2BAA2B;yBACpC;qBACF;iBACF;gBAED,WAAW,EAAE;oBACX,KAAK,EAAE,CAAC,cAAc,CAAC;oBACvB,EAAE,EAAE;wBACF,WAAW,EAAE,EAAE,MAAM,EAAE,yBAAyB,EAAE;wBAClD,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;wBAC/B,MAAM,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE;qBAC3C;iBACF;gBAED,uBAAuB,EAAE;oBACvB,KAAK,EAAE,CAAC,6BAA6B,CAAC;oBACtC,MAAM,EAAE;wBACN,EAAE,EAAE,uBAAuB;wBAC3B,GAAG,EAAE,uBAAuB;wBAC5B,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;4BACvB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS;4BAC7C,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;4BACjC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;4BAC1C,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;yBAC/B,CAAC;wBACF,MAAM,EAAE;4BACN,MAAM,EAAE,SAAS;4BACjB,OAAO,EAAE,CAAC,qBAAqB,CAAC;yBACjC;qBACF;iBACF;gBAED,OAAO,EAAE;oBACP,KAAK,EAAE,CAAC,aAAa,CAAC;oBACtB,MAAM,EAAE;wBACN,EAAE,EAAE,YAAY;wBAChB,GAAG,EAAE,YAAY;wBACjB,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;wBAC7D,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;wBAChC,OAAO,EAAE;4BACP,MAAM,EAAE,2BAA2B;4BACnC,OAAO,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;yBAC3C;qBACF;iBACF;gBAED,UAAU,EAAE;oBACV,KAAK,EAAE,CAAC,gBAAgB,CAAC;oBACzB,MAAM,EAAE;wBACN,EAAE,EAAE,UAAU;wBACd,GAAG,EAAE,UAAU;wBACf,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;4BACvB,KAAK,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;4BAClC,IAAI,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;4BACjC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;yBAChC,CAAC;wBACF,MAAM,EAAE;4BACN,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;yBAC1C;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;yBACzC;qBACF;iBACF;gBAED,yBAAyB,EAAE;oBACzB,KAAK,EAAE,CAAC,wBAAwB,CAAC;oBACjC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;iBAC3B;gBAED,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;iBACd;aACF;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,UAAU;aACnB;SACF;QAED,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,cAAc,CAAC;SACnF;QAED,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,CAAC;SACrF;QAED,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,CAAC;SAC7E;KACF;CACF,CAAC,CAAC","sourcesContent":["import { setup, assign, fromPromise, type ActorRefFrom } from 'xstate';\nimport type {\n InstallerMachineContext,\n InstallerMachineInput,\n InstallerMachineEvent,\n DetectionOutput,\n GitCheckOutput,\n AgentOutput,\n EnvFileInfo,\n DiscoveryResult,\n CredentialSource,\n BranchCheckOutput,\n WorkspaceCheckOutput,\n} from './installer-core.types.js';\nimport type { InstallerOptions } from '../utils/types.js';\nimport type { DeviceAuthResult, DeviceAuthResponse } from './device-auth.js';\nimport type { StagingCredentials } from './staging-api.js';\nimport { getManualPrInstructions } from './post-install.js';\nimport { hasGhCli } from '../utils/git-utils.js';\n\nexport const installerMachine = setup({\n types: {\n context: {} as InstallerMachineContext,\n input: {} as InstallerMachineInput,\n events: {} as InstallerMachineEvent,\n },\n\n actions: {\n emitStateEnter: ({ context }, params: { state: string }) => {\n context.emitter.emit('state:enter', { state: params.state });\n },\n emitStateExit: ({ context }, params: { state: string }) => {\n context.emitter.emit('state:exit', { state: params.state });\n },\n emitAuthChecking: ({ context }) => {\n context.emitter.emit('auth:checking', {});\n },\n emitAuthRequired: ({ context }) => {\n context.emitter.emit('auth:required', {});\n },\n emitAuthSuccess: ({ context }) => {\n context.emitter.emit('auth:success', {});\n },\n emitAuthFailure: ({ context }) => {\n const message = context.error?.message ?? 'Authentication failed';\n context.emitter.emit('auth:failure', { message });\n },\n emitDetectionStart: ({ context }) => {\n context.emitter.emit('detection:start', {});\n },\n emitDetectionComplete: ({ context }) => {\n if (context.integration) {\n context.emitter.emit('detection:complete', { integration: context.integration });\n } else {\n context.emitter.emit('detection:none', {});\n }\n },\n emitGitChecking: ({ context }) => {\n context.emitter.emit('git:checking', {});\n },\n emitGitClean: ({ context }) => {\n context.emitter.emit('git:clean', {});\n },\n emitGitDirty: ({ context }) => {\n context.emitter.emit('git:dirty', { files: context.gitDirtyFiles });\n },\n emitGitConfirmed: ({ context }) => {\n context.emitter.emit('git:dirty:confirmed', {});\n },\n emitGitCancelled: ({ context }) => {\n context.emitter.emit('git:dirty:cancelled', {});\n },\n emitScaffoldChecking: ({ context }) => {\n context.emitter.emit('scaffold:checking', {});\n },\n emitScaffoldPrompt: ({ context }) => {\n context.emitter.emit('scaffold:prompt', { packageManager: context.packageManager ?? 'npm' });\n },\n emitScaffoldStart: ({ context }) => {\n context.emitter.emit('scaffold:start', { packageManager: context.packageManager ?? 'npm' });\n },\n emitScaffoldComplete: ({ context }) => {\n context.emitter.emit('scaffold:complete', {});\n },\n emitScaffoldFailed: ({ context }) => {\n const message = context.error?.message ?? 'Scaffold failed';\n context.emitter.emit('scaffold:failed', { error: message });\n },\n emitScaffoldSkipped: ({ context }) => {\n context.emitter.emit('scaffold:skipped', {});\n },\n assignWorkspaceResult: assign({\n scaffoldable: ({ event }) => (event as unknown as { output: WorkspaceCheckOutput }).output?.scaffoldable ?? false,\n packageManager: ({ event }) =>\n (event as unknown as { output: WorkspaceCheckOutput }).output?.packageManager ?? 'npm',\n autoScaffold: ({ event }) => (event as unknown as { output: WorkspaceCheckOutput }).output?.autoScaffold ?? false,\n }),\n assignScaffolded: assign({\n scaffolded: () => true,\n }),\n emitBranchChecking: ({ context }) => {\n context.emitter.emit('branch:checking', {});\n },\n emitBranchProtected: ({ context }) => {\n if (context.currentBranch) {\n context.emitter.emit('branch:protected', { branch: context.currentBranch });\n context.emitter.emit('branch:prompt', { branch: context.currentBranch });\n }\n },\n emitBranchCreated: ({ context }, params: { branch: string }) => {\n context.emitter.emit('branch:created', { branch: params.branch });\n },\n emitBranchCreateFailed: ({ context }) => {\n const message = context.error?.message ?? 'Failed to create branch';\n context.emitter.emit('branch:create:failed', { error: message });\n },\n assignBranchResult: assign({\n currentBranch: ({ event }) => {\n const doneEvent = event as unknown as { output: BranchCheckOutput };\n return doneEvent.output?.branch ?? undefined;\n },\n isProtectedBranch: ({ event }) => {\n const doneEvent = event as unknown as { output: BranchCheckOutput };\n return doneEvent.output?.isProtected ?? false;\n },\n }),\n emitCredentialsGathering: ({ context }) => {\n const requiresApiKey = ['nextjs', 'tanstack-start', 'react-router'].includes(context.integration ?? '');\n context.emitter.emit('credentials:gathering', { requiresApiKey });\n context.emitter.emit('credentials:request', { requiresApiKey });\n },\n emitCredentialsFound: ({ context }) => {\n context.emitter.emit('credentials:found', {});\n },\n emitEnvDetected: ({ context }) => {\n context.emitter.emit('credentials:env:detected', { files: context.envFilesDetected ?? [] });\n },\n emitEnvScanPrompt: ({ context }) => {\n context.emitter.emit('credentials:env:prompt', { files: context.envFilesDetected ?? [] });\n },\n emitEnvScanning: ({ context }) => {\n context.emitter.emit('credentials:env:scanning', {});\n },\n emitEnvCredentialsFound: ({ context }) => {\n context.emitter.emit('credentials:env:found', { sourcePath: context.envCredentialPath ?? '.env' });\n },\n emitEnvNotFound: ({ context }) => {\n context.emitter.emit('credentials:env:notfound', {});\n },\n emitDeviceAuthStart: () => {\n // Emitted by actor when it has verification URL\n },\n emitDeviceAuthSuccess: ({ context }) => {\n context.emitter.emit('device:success', { email: undefined });\n },\n emitDeviceAuthError: ({ context }) => {\n const message = context.error?.message ?? 'Device authorization failed';\n context.emitter.emit('device:error', { message });\n },\n emitDeviceTimeout: ({ context }) => {\n context.emitter.emit('device:timeout', {});\n },\n emitStagingFetching: ({ context }) => {\n context.emitter.emit('staging:fetching', {});\n },\n emitStagingSuccess: ({ context }) => {\n context.emitter.emit('staging:success', {});\n },\n emitStagingError: ({ context }) => {\n const message = context.error?.message ?? 'Failed to fetch staging credentials';\n context.emitter.emit('staging:error', { message });\n },\n emitConfigStart: ({ context }) => {\n context.emitter.emit('config:start', {});\n },\n emitConfigComplete: ({ context }) => {\n context.emitter.emit('config:complete', {});\n },\n emitAgentStart: ({ context }) => {\n context.emitter.emit('agent:start', {});\n },\n emitAgentSuccess: ({ context }, params: { summary?: string }) => {\n context.emitter.emit('agent:success', { summary: params.summary });\n context.emitter.emit('complete', { success: true, summary: params.summary });\n },\n emitAgentFailure: ({ context }) => {\n const message = context.error?.message ?? 'Agent execution failed';\n const stack = context.error?.stack;\n context.emitter.emit('agent:failure', { message, stack });\n context.emitter.emit('complete', { success: false });\n },\n assignDetectionResult: assign({\n integration: ({ event }) => {\n const doneEvent = event as unknown as { output: DetectionOutput };\n return doneEvent.output?.integration;\n },\n }),\n assignGitResult: assign({\n gitIsClean: ({ event }) => {\n const doneEvent = event as unknown as { output: GitCheckOutput };\n return doneEvent.output?.isClean ?? true;\n },\n gitDirtyFiles: ({ event }) => {\n const doneEvent = event as unknown as { output: GitCheckOutput };\n return doneEvent.output?.files ?? [];\n },\n }),\n\n assignCredentials: assign({\n credentials: ({ event }) => {\n if (event.type === 'CREDENTIALS_SUBMITTED') {\n return { apiKey: event.apiKey, clientId: event.clientId };\n }\n return undefined;\n },\n }),\n\n assignError: assign({\n error: ({ event }) => {\n if ('error' in event && event.error instanceof Error) {\n return event.error;\n }\n if ('error' in event && typeof event.error === 'object' && event.error !== null) {\n return new Error(String((event.error as { message?: string }).message ?? event.error));\n }\n return new Error('Unknown error');\n },\n }),\n\n emitCancelled: ({ context }) => {\n context.emitter.emit('complete', { success: false, summary: 'Installer cancelled by user' });\n },\n emitError: ({ context }) => {\n const message = context.error?.message ?? 'An unexpected error occurred';\n context.emitter.emit('error', { message, stack: context.error?.stack });\n context.emitter.emit('complete', { success: false });\n },\n // Post-install actions\n assignChangedFiles: assign({\n changedFiles: ({ event }) => {\n const doneEvent = event as unknown as { output: { hasChanges: boolean; files: string[] } };\n return doneEvent.output?.files ?? [];\n },\n }),\n emitChangesDetected: ({ context }) => {\n context.emitter.emit('postinstall:changes', { files: context.changedFiles ?? [] });\n },\n emitNoChanges: ({ context }) => {\n context.emitter.emit('postinstall:nochanges', {});\n },\n emitCommitPrompt: ({ context }) => {\n context.emitter.emit('postinstall:commit:prompt', {});\n },\n emitGeneratingCommitMessage: ({ context }) => {\n context.emitter.emit('postinstall:commit:generating', {});\n },\n assignCommitMessage: assign({\n commitMessage: ({ event }) => {\n const doneEvent = event as unknown as { output: string };\n return doneEvent.output;\n },\n }),\n emitCommitting: ({ context }) => {\n context.emitter.emit('postinstall:commit:committing', { message: context.commitMessage ?? '' });\n },\n emitCommitSuccess: ({ context }) => {\n context.emitter.emit('postinstall:commit:success', { message: context.commitMessage ?? '' });\n },\n emitCommitFailed: ({ context }) => {\n const message = context.error?.message ?? 'Commit failed';\n context.emitter.emit('postinstall:commit:failed', { error: message });\n },\n emitPrPrompt: ({ context }) => {\n context.emitter.emit('postinstall:pr:prompt', {});\n },\n emitGeneratingPrDescription: ({ context }) => {\n context.emitter.emit('postinstall:pr:generating', {});\n },\n assignPrDescription: assign({\n prDescription: ({ event }) => {\n const doneEvent = event as unknown as { output: string };\n return doneEvent.output;\n },\n }),\n emitPushing: ({ context }) => {\n context.emitter.emit('postinstall:pr:pushing', {});\n },\n emitPushFailed: ({ context }) => {\n const message = context.error?.message ?? 'Push failed';\n context.emitter.emit('postinstall:push:failed', { error: message });\n },\n emitCreatingPr: ({ context }) => {\n context.emitter.emit('postinstall:pr:creating', {});\n },\n assignPrUrl: assign({\n prUrl: ({ event }) => {\n const doneEvent = event as unknown as { output: string };\n return doneEvent.output;\n },\n }),\n emitPrCreated: ({ context }) => {\n context.emitter.emit('postinstall:pr:success', { url: context.prUrl ?? '' });\n },\n emitPrFailed: ({ context }) => {\n const message = context.error?.message ?? 'PR creation failed';\n context.emitter.emit('postinstall:pr:failed', { error: message });\n },\n emitManualInstructions: ({ context }) => {\n const branch = context.currentBranch ?? 'HEAD';\n const instructions = getManualPrInstructions(branch);\n context.emitter.emit('postinstall:manual', { instructions });\n },\n emitComplete: ({ context }) => {\n const summary = context.agentSummary ?? 'WorkOS AuthKit installed successfully!';\n context.emitter.emit('complete', { success: true, summary });\n },\n },\n\n guards: {\n shouldSkipAuth: ({ context }) => context.options.skipAuth === true,\n gitIsClean: ({ context }) => context.gitIsClean === true,\n hasCredentials: ({ context }) => context.options.apiKey !== undefined && context.options.clientId !== undefined,\n hasIntegration: ({ context }) => context.integration !== undefined,\n shouldSkipPostInstall: ({ context }) => context.options.noCommit === true,\n hasGhCli: () => hasGhCli(),\n // Read from the actor's done event (output), not context: the\n // assignWorkspaceResult action has not run yet when guards are evaluated.\n notScaffoldable: ({ event }) => !(event as unknown as { output: WorkspaceCheckOutput }).output?.scaffoldable,\n shouldAutoScaffold: ({ event }) => {\n const output = (event as unknown as { output: WorkspaceCheckOutput }).output;\n return !!output?.scaffoldable && !!output?.autoScaffold;\n },\n },\n\n actors: {\n checkAuthentication: fromPromise<boolean, { options: InstallerOptions }>(async () => {\n throw new Error('checkAuthentication not implemented - provide via machine.provide()');\n }),\n checkWorkspace: fromPromise<WorkspaceCheckOutput, { options: InstallerOptions }>(async () => {\n throw new Error('checkWorkspace not implemented - provide via machine.provide()');\n }),\n runScaffold: fromPromise<void, { context: InstallerMachineContext }>(async () => {\n throw new Error('runScaffold not implemented - provide via machine.provide()');\n }),\n detectIntegration: fromPromise<DetectionOutput, { options: InstallerOptions }>(async () => {\n throw new Error('detectIntegration not implemented - provide via machine.provide()');\n }),\n checkGitStatus: fromPromise<GitCheckOutput, { installDir: string }>(async () => {\n throw new Error('checkGitStatus not implemented - provide via machine.provide()');\n }),\n configureEnvironment: fromPromise<void, { context: InstallerMachineContext }>(async () => {\n throw new Error('configureEnvironment not implemented - provide via machine.provide()');\n }),\n runAgent: fromPromise<AgentOutput, { context: InstallerMachineContext }>(async () => {\n throw new Error('runAgent not implemented - provide via machine.provide()');\n }),\n // Credential discovery actors\n detectEnvFiles: fromPromise<EnvFileInfo, { installDir: string }>(async () => {\n throw new Error('detectEnvFiles not implemented - provide via machine.provide()');\n }),\n scanEnvFiles: fromPromise<DiscoveryResult, { installDir: string }>(async () => {\n throw new Error('scanEnvFiles not implemented - provide via machine.provide()');\n }),\n checkStoredAuth: fromPromise<boolean, void>(async () => {\n throw new Error('checkStoredAuth not implemented - provide via machine.provide()');\n }),\n runDeviceAuth: fromPromise<\n { result: DeviceAuthResult; deviceAuth: DeviceAuthResponse },\n { emitter: InstallerMachineContext['emitter'] }\n >(async () => {\n throw new Error('runDeviceAuth not implemented - provide via machine.provide()');\n }),\n fetchStagingCredentials: fromPromise<StagingCredentials, void>(async () => {\n throw new Error('fetchStagingCredentials not implemented - provide via machine.provide()');\n }),\n // Branch check actors\n checkBranch: fromPromise<BranchCheckOutput, void>(async () => {\n throw new Error('checkBranch not implemented - provide via machine.provide()');\n }),\n createBranch: fromPromise<{ branch: string }, { name: string; fallbackName: string }>(async () => {\n throw new Error('createBranch not implemented - provide via machine.provide()');\n }),\n // Post-install actors\n detectChanges: fromPromise<{ hasChanges: boolean; files: string[] }, void>(async () => {\n throw new Error('detectChanges not implemented - provide via machine.provide()');\n }),\n generateCommitMessage: fromPromise<string, { integration: string; files: string[]; direct?: boolean }>(async () => {\n throw new Error('generateCommitMessage not implemented - provide via machine.provide()');\n }),\n commitChanges: fromPromise<void, { message: string; cwd: string }>(async () => {\n throw new Error('commitChanges not implemented - provide via machine.provide()');\n }),\n generatePrDescription: fromPromise<\n string,\n { integration: string; files: string[]; commitMessage: string; direct?: boolean }\n >(async () => {\n throw new Error('generatePrDescription not implemented - provide via machine.provide()');\n }),\n pushBranch: fromPromise<void, { cwd: string }>(async () => {\n throw new Error('pushBranch not implemented - provide via machine.provide()');\n }),\n createPr: fromPromise<string, { title: string; body: string; cwd: string }>(async () => {\n throw new Error('createPr not implemented - provide via machine.provide()');\n }),\n },\n}).createMachine({\n id: 'installer',\n initial: 'idle',\n\n context: ({ input }) => ({\n emitter: input.emitter,\n options: input.options,\n // Set by the detection actor; no pre-seeding (the --integration flag is gone).\n integration: undefined,\n credentials:\n input.options.apiKey && input.options.clientId\n ? { apiKey: input.options.apiKey, clientId: input.options.clientId }\n : undefined,\n gitIsClean: true,\n gitDirtyFiles: [],\n error: undefined,\n }),\n\n // Global event handlers - CANCEL can be sent from any state\n on: {\n CANCEL: {\n target: '.cancelled',\n },\n },\n\n states: {\n idle: {\n on: {\n START: [\n {\n target: 'scaffold',\n guard: 'shouldSkipAuth',\n actions: { type: 'emitStateEnter', params: { state: 'scaffold' } },\n },\n {\n target: 'authenticating',\n actions: { type: 'emitStateEnter', params: { state: 'authenticating' } },\n },\n ],\n },\n },\n\n authenticating: {\n entry: ['emitAuthChecking'],\n invoke: {\n id: 'checkAuthentication',\n src: 'checkAuthentication',\n input: ({ context }) => ({ options: context.options }),\n onDone: {\n target: 'scaffold',\n actions: [\n 'emitAuthSuccess',\n { type: 'emitStateExit', params: { state: 'authenticating' } },\n { type: 'emitStateEnter', params: { state: 'scaffold' } },\n ],\n },\n onError: {\n target: 'error',\n actions: ['assignError', 'emitAuthFailure', { type: 'emitStateExit', params: { state: 'authenticating' } }],\n },\n },\n },\n\n scaffold: {\n initial: 'checking',\n states: {\n checking: {\n entry: ['emitScaffoldChecking'],\n invoke: {\n id: 'checkWorkspace',\n src: 'checkWorkspace',\n input: ({ context }) => ({ options: context.options }),\n onDone: [\n {\n // Not an empty dir: fall through to today's behavior.\n target: 'done',\n guard: 'notScaffoldable',\n actions: ['assignWorkspaceResult'],\n },\n {\n // Headless or --scaffold: skip the prompt.\n target: 'running',\n guard: 'shouldAutoScaffold',\n actions: ['assignWorkspaceResult'],\n },\n {\n // Interactive empty dir: ask first.\n target: 'prompting',\n actions: ['assignWorkspaceResult'],\n },\n ],\n onError: {\n // Workspace check failure is non-fatal: proceed to preparing,\n // which errors on no-integration exactly as before this feature.\n target: 'done',\n },\n },\n },\n prompting: {\n entry: ['emitScaffoldPrompt'],\n on: {\n SCAFFOLD_CONFIRMED: {\n target: 'running',\n },\n SCAFFOLD_CANCELLED: {\n target: '#installer.cancelled',\n actions: ['emitScaffoldSkipped', { type: 'emitStateExit', params: { state: 'scaffold' } }],\n },\n },\n },\n running: {\n entry: ['emitScaffoldStart'],\n invoke: {\n id: 'runScaffold',\n src: 'runScaffold',\n input: ({ context }) => ({ context }),\n onDone: {\n target: 'done',\n actions: ['assignScaffolded', 'emitScaffoldComplete'],\n },\n onError: {\n target: '#installer.error',\n actions: ['assignError', 'emitScaffoldFailed', { type: 'emitStateExit', params: { state: 'scaffold' } }],\n },\n },\n },\n done: {\n type: 'final',\n },\n },\n onDone: {\n target: 'preparing',\n actions: [\n { type: 'emitStateExit', params: { state: 'scaffold' } },\n { type: 'emitStateEnter', params: { state: 'preparing' } },\n ],\n },\n },\n\n preparing: {\n type: 'parallel',\n states: {\n detection: {\n initial: 'running',\n states: {\n running: {\n entry: ['emitDetectionStart'],\n invoke: {\n id: 'detectIntegration',\n src: 'detectIntegration',\n input: ({ context }) => ({ options: context.options }),\n onDone: {\n target: 'done',\n actions: ['assignDetectionResult', 'emitDetectionComplete'],\n },\n onError: {\n // Detection failure is non-fatal - user can select manually\n target: 'done',\n actions: ['emitDetectionComplete'],\n },\n },\n },\n done: {\n type: 'final',\n },\n },\n },\n gitCheck: {\n initial: 'running',\n states: {\n running: {\n entry: ['emitGitChecking'],\n invoke: {\n id: 'checkGitStatus',\n src: 'checkGitStatus',\n input: ({ context }) => ({ installDir: context.options.installDir }),\n onDone: {\n target: 'evaluating',\n actions: ['assignGitResult'],\n },\n onError: {\n // Git check failure is non-fatal - treat as clean\n target: 'done',\n },\n },\n },\n evaluating: {\n always: [\n {\n target: 'done',\n guard: 'gitIsClean',\n actions: ['emitGitClean'],\n },\n {\n target: 'awaitingConfirmation',\n actions: ['emitGitDirty'],\n },\n ],\n },\n awaitingConfirmation: {\n on: {\n GIT_CONFIRMED: {\n target: 'done',\n actions: ['emitGitConfirmed'],\n },\n GIT_CANCELLED: {\n target: '#installer.cancelled',\n actions: ['emitGitCancelled'],\n },\n },\n },\n done: {\n type: 'final',\n },\n },\n },\n branchCheck: {\n initial: 'running',\n states: {\n running: {\n entry: ['emitBranchChecking'],\n invoke: {\n id: 'checkBranch',\n src: 'checkBranch',\n onDone: [\n {\n target: 'awaitingConfirmation',\n guard: ({ event }) => (event.output as BranchCheckOutput).isProtected,\n actions: ['assignBranchResult', 'emitBranchProtected'],\n },\n {\n target: 'done',\n actions: ['assignBranchResult'],\n },\n ],\n onError: {\n // Branch check failure is non-fatal\n target: 'done',\n },\n },\n },\n awaitingConfirmation: {\n on: {\n BRANCH_CREATE: {\n target: 'creating',\n },\n BRANCH_CONTINUE: {\n target: 'done',\n },\n BRANCH_CANCEL: {\n target: '#installer.cancelled',\n },\n },\n },\n creating: {\n invoke: {\n id: 'createBranch',\n src: 'createBranch',\n input: () => ({\n name: 'feat/add-workos-authkit',\n fallbackName: `feat/add-workos-authkit-${Date.now()}`,\n }),\n onDone: {\n target: 'done',\n actions: [\n {\n type: 'emitBranchCreated',\n params: ({ event }) => ({ branch: (event.output as { branch: string }).branch }),\n },\n ],\n },\n onError: {\n // Branch creation failure is non-fatal\n target: 'done',\n actions: ['assignError', 'emitBranchCreateFailed'],\n },\n },\n },\n done: {\n type: 'final',\n },\n },\n },\n },\n onDone: [\n {\n target: 'gatheringCredentials',\n guard: 'hasIntegration',\n actions: { type: 'emitStateExit', params: { state: 'preparing' } },\n },\n {\n target: 'error',\n actions: [\n assign({\n error: ({ context }) => {\n const dir = context.options.installDir;\n return new Error(\n `No supported framework was detected in ${dir}.\\n` +\n `Because this directory isn't empty, a new app wasn't scaffolded, and no recognized ` +\n `framework (such as a package.json with Next.js) was found to install into.\\n\\n` +\n `Next steps:\\n` +\n ` - New app: run \\`workos install\\` in an empty directory to scaffold Next.js + AuthKit.\\n` +\n ` - Existing project: run from the directory that contains your package.json, or pass --install-dir <path>.`,\n );\n },\n }),\n { type: 'emitStateExit', params: { state: 'preparing' } },\n ],\n },\n ],\n },\n\n gatheringCredentials: {\n entry: [{ type: 'emitStateEnter', params: { state: 'gatheringCredentials' } }],\n initial: 'checkingCliFlags',\n states: {\n // Step 1: Check CLI flags (highest priority)\n checkingCliFlags: {\n always: [\n {\n target: '#installer.configuring',\n guard: 'hasCredentials',\n actions: [\n assign({ credentialSource: () => 'cli' as CredentialSource }),\n 'emitCredentialsFound',\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n { target: 'detectingEnvFiles' },\n ],\n },\n\n // Step 2: Check if env files exist (don't read yet)\n detectingEnvFiles: {\n invoke: {\n id: 'detectEnvFiles',\n src: 'detectEnvFiles',\n input: ({ context }) => ({ installDir: context.options.installDir }),\n onDone: [\n {\n target: 'promptingEnvScan',\n guard: ({ event }) => {\n const output = event.output as EnvFileInfo;\n return output.exists;\n },\n actions: [\n assign({\n envFilesDetected: ({ event }) => {\n const output = event.output as EnvFileInfo;\n return output.files;\n },\n }),\n 'emitEnvDetected',\n ],\n },\n { target: 'checkingStoredAuth' },\n ],\n onError: {\n target: 'checkingStoredAuth', // Non-fatal, continue\n },\n },\n },\n\n // Step 3: Ask user for consent to scan env files\n promptingEnvScan: {\n entry: ['emitEnvScanPrompt'],\n on: {\n ENV_SCAN_APPROVED: {\n target: 'scanningEnvFiles',\n actions: assign({ envScanConsent: () => true }),\n },\n ENV_SCAN_DECLINED: {\n target: 'checkingStoredAuth',\n actions: assign({ envScanConsent: () => false }),\n },\n CANCEL: {\n target: '#installer.cancelled',\n actions: { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n },\n },\n },\n\n // Step 4: Scan env files for credentials (with consent)\n scanningEnvFiles: {\n entry: ['emitEnvScanning'],\n invoke: {\n id: 'scanEnvFiles',\n src: 'scanEnvFiles',\n input: ({ context }) => ({ installDir: context.options.installDir }),\n onDone: [\n {\n target: '#installer.configuring',\n guard: ({ event }) => {\n const result = event.output as DiscoveryResult;\n return result.found && !!result.clientId;\n },\n actions: [\n assign({\n credentials: ({ event }) => {\n const result = event.output as DiscoveryResult;\n return { clientId: result.clientId!, apiKey: result.apiKey };\n },\n credentialSource: () => 'env' as CredentialSource,\n envCredentialPath: ({ event }) => (event.output as DiscoveryResult).sourcePath,\n }),\n 'emitEnvCredentialsFound',\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n {\n target: 'checkingStoredAuth',\n actions: ['emitEnvNotFound'],\n },\n ],\n onError: {\n target: 'checkingStoredAuth',\n },\n },\n },\n\n // Step 5: Check for stored auth token\n checkingStoredAuth: {\n invoke: {\n id: 'checkStoredAuth',\n src: 'checkStoredAuth',\n onDone: [\n {\n target: 'fetchingStagingCredentials',\n guard: ({ event }) => event.output === true,\n },\n { target: 'runningDeviceAuth' },\n ],\n onError: {\n target: 'runningDeviceAuth',\n },\n },\n },\n\n // Step 6: Run device authorization flow\n runningDeviceAuth: {\n entry: ['emitDeviceAuthStart'],\n invoke: {\n id: 'runDeviceAuth',\n src: 'runDeviceAuth',\n input: ({ context }) => ({ emitter: context.emitter }),\n onDone: {\n target: 'fetchingStagingCredentials',\n actions: [\n 'emitDeviceAuthSuccess',\n assign({\n deviceAuth: ({ event }) => {\n const output = event.output as { result: DeviceAuthResult; deviceAuth: DeviceAuthResponse };\n return {\n verificationUri: output.deviceAuth.verification_uri,\n verificationUriComplete: output.deviceAuth.verification_uri_complete,\n userCode: output.deviceAuth.user_code,\n };\n },\n }),\n ],\n },\n onError: {\n target: 'promptingManual',\n actions: ['assignError', 'emitDeviceAuthError'],\n },\n },\n },\n\n // Step 7: Fetch staging credentials from API\n fetchingStagingCredentials: {\n entry: ['emitStagingFetching'],\n invoke: {\n id: 'fetchStagingCredentials',\n src: 'fetchStagingCredentials',\n onDone: {\n target: '#installer.configuring',\n actions: [\n assign({\n credentials: ({ event }) => {\n const staging = event.output as StagingCredentials;\n return { clientId: staging.clientId, apiKey: staging.apiKey };\n },\n credentialSource: ({ context }) =>\n context.deviceAuth ? ('device' as CredentialSource) : ('stored' as CredentialSource),\n }),\n 'emitStagingSuccess',\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n onError: {\n target: 'promptingManual',\n actions: ['assignError', 'emitStagingError'],\n },\n },\n },\n\n // Step 8: Manual fallback\n promptingManual: {\n entry: ['emitCredentialsGathering'],\n on: {\n CREDENTIALS_SUBMITTED: {\n target: '#installer.configuring',\n actions: [\n 'assignCredentials',\n assign({ credentialSource: () => 'manual' as CredentialSource }),\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n RETRY_AUTH: {\n target: 'runningDeviceAuth',\n },\n CANCEL: {\n target: '#installer.cancelled',\n actions: { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n },\n },\n },\n },\n },\n\n configuring: {\n entry: [{ type: 'emitStateEnter', params: { state: 'configuring' } }, 'emitConfigStart'],\n invoke: {\n id: 'configureEnvironment',\n src: 'configureEnvironment',\n input: ({ context }) => ({ context }),\n onDone: {\n target: 'runningAgent',\n actions: ['emitConfigComplete', { type: 'emitStateExit', params: { state: 'configuring' } }],\n },\n onError: {\n target: 'error',\n actions: ['assignError', { type: 'emitStateExit', params: { state: 'configuring' } }],\n },\n },\n },\n\n runningAgent: {\n entry: [{ type: 'emitStateEnter', params: { state: 'runningAgent' } }, 'emitAgentStart'],\n invoke: {\n id: 'runAgent',\n src: 'runAgent',\n input: ({ context }) => ({ context }),\n onDone: [\n {\n target: 'error',\n guard: ({ event }) => {\n const output = event.output as AgentOutput;\n return !output.success;\n },\n actions: [\n ({ context, event }) => {\n const output = event.output as AgentOutput;\n context.emitter.emit('agent:failure', {\n message: output.error?.message ?? 'Agent failed',\n });\n },\n assign({\n error: ({ event }) => {\n const output = event.output as AgentOutput;\n return output.error ?? new Error('Agent failed');\n },\n }),\n { type: 'emitStateExit', params: { state: 'runningAgent' } },\n ],\n },\n {\n target: 'postInstall',\n actions: [\n assign({\n agentSummary: ({ event }) => {\n const output = event.output as AgentOutput;\n return output.summary;\n },\n }),\n ({ context, event }) => {\n const output = event.output as AgentOutput;\n context.emitter.emit('agent:success', { summary: output.summary });\n },\n { type: 'emitStateExit', params: { state: 'runningAgent' } },\n ],\n },\n ],\n onError: {\n target: 'error',\n actions: ['assignError', 'emitAgentFailure', { type: 'emitStateExit', params: { state: 'runningAgent' } }],\n },\n },\n },\n\n postInstall: {\n initial: 'checking',\n entry: [{ type: 'emitStateEnter', params: { state: 'postInstall' } }],\n states: {\n checking: {\n always: [\n {\n target: '#installer.complete',\n guard: 'shouldSkipPostInstall',\n },\n { target: 'detectingChanges' },\n ],\n },\n\n detectingChanges: {\n invoke: {\n id: 'detectChanges',\n src: 'detectChanges',\n onDone: [\n {\n target: 'promptingCommit',\n guard: ({ event }) => (event.output as { hasChanges: boolean; files: string[] }).hasChanges,\n actions: ['assignChangedFiles', 'emitChangesDetected'],\n },\n {\n target: 'done',\n actions: ['emitNoChanges'],\n },\n ],\n onError: { target: 'done' },\n },\n },\n\n promptingCommit: {\n entry: ['emitCommitPrompt'],\n on: {\n COMMIT_APPROVED: { target: 'generatingCommitMessage' },\n COMMIT_DECLINED: { target: 'done' },\n CANCEL: { target: '#installer.cancelled' },\n },\n },\n\n generatingCommitMessage: {\n entry: ['emitGeneratingCommitMessage'],\n invoke: {\n id: 'generateCommitMessage',\n src: 'generateCommitMessage',\n input: ({ context }) => ({\n integration: context.integration ?? 'project',\n files: context.changedFiles ?? [],\n direct: context.options.direct,\n }),\n onDone: {\n target: 'committing',\n actions: ['assignCommitMessage'],\n },\n },\n },\n\n committing: {\n entry: ['emitCommitting'],\n invoke: {\n id: 'commitChanges',\n src: 'commitChanges',\n input: ({ context }) => ({\n message: context.commitMessage ?? '',\n cwd: context.options.installDir,\n }),\n onDone: {\n target: 'checkingGhCli',\n actions: ['emitCommitSuccess'],\n },\n onError: {\n target: 'done',\n actions: ['assignError', 'emitCommitFailed'],\n },\n },\n },\n\n checkingGhCli: {\n always: [\n {\n target: 'promptingPr',\n guard: 'hasGhCli',\n },\n {\n target: 'showingManualInstructions',\n },\n ],\n },\n\n promptingPr: {\n entry: ['emitPrPrompt'],\n on: {\n PR_APPROVED: { target: 'generatingPrDescription' },\n PR_DECLINED: { target: 'done' },\n CANCEL: { target: '#installer.cancelled' },\n },\n },\n\n generatingPrDescription: {\n entry: ['emitGeneratingPrDescription'],\n invoke: {\n id: 'generatePrDescription',\n src: 'generatePrDescription',\n input: ({ context }) => ({\n integration: context.integration ?? 'project',\n files: context.changedFiles ?? [],\n commitMessage: context.commitMessage ?? '',\n direct: context.options.direct,\n }),\n onDone: {\n target: 'pushing',\n actions: ['assignPrDescription'],\n },\n },\n },\n\n pushing: {\n entry: ['emitPushing'],\n invoke: {\n id: 'pushBranch',\n src: 'pushBranch',\n input: ({ context }) => ({ cwd: context.options.installDir }),\n onDone: { target: 'creatingPr' },\n onError: {\n target: 'showingManualInstructions',\n actions: ['assignError', 'emitPushFailed'],\n },\n },\n },\n\n creatingPr: {\n entry: ['emitCreatingPr'],\n invoke: {\n id: 'createPr',\n src: 'createPr',\n input: ({ context }) => ({\n title: context.commitMessage ?? '',\n body: context.prDescription ?? '',\n cwd: context.options.installDir,\n }),\n onDone: {\n target: 'done',\n actions: ['assignPrUrl', 'emitPrCreated'],\n },\n onError: {\n target: 'done',\n actions: ['assignError', 'emitPrFailed'],\n },\n },\n },\n\n showingManualInstructions: {\n entry: ['emitManualInstructions'],\n always: { target: 'done' },\n },\n\n done: {\n type: 'final',\n },\n },\n onDone: {\n target: 'complete',\n },\n },\n\n complete: {\n type: 'final',\n entry: [{ type: 'emitStateEnter', params: { state: 'complete' } }, 'emitComplete'],\n },\n\n cancelled: {\n type: 'final',\n entry: [{ type: 'emitStateEnter', params: { state: 'cancelled' } }, 'emitCancelled'],\n },\n\n error: {\n type: 'final',\n entry: [{ type: 'emitStateEnter', params: { state: 'error' } }, 'emitError'],\n },\n },\n});\n\nexport type InstallerMachine = typeof installerMachine;\nexport type InstallerActor = ActorRefFrom<typeof installerMachine>;\n"]}
@@ -1,6 +1,7 @@
1
1
  import type { InstallerEventEmitter } from './events.js';
2
2
  import type { InstallerOptions } from '../utils/types.js';
3
3
  import type { Integration } from './constants.js';
4
+ import type { PackageManager } from './scaffold/scaffold.js';
4
5
  import type { DeviceAuthResponse } from './device-auth.js';
5
6
  import type { EnvFileInfo, DiscoveryResult } from './credential-discovery.js';
6
7
  export type { EnvFileInfo, DiscoveryResult };
@@ -59,6 +60,14 @@ export interface InstallerMachineContext {
59
60
  prUrl?: string;
60
61
  /** Summary message from agent execution */
61
62
  agentSummary?: string;
63
+ /** Whether the install directory is empty and can be scaffolded into */
64
+ scaffoldable?: boolean;
65
+ /** Package manager resolved for the scaffolded app */
66
+ packageManager?: PackageManager;
67
+ /** Whether to scaffold without prompting (headless mode or --scaffold) */
68
+ autoScaffold?: boolean;
69
+ /** Whether create-next-app actually ran and succeeded (for telemetry) */
70
+ scaffolded?: boolean;
62
71
  }
63
72
  /**
64
73
  * Input provided when creating the machine actor.
@@ -79,6 +88,10 @@ export type InstallerMachineEvent = {
79
88
  type: 'GIT_CONFIRMED';
80
89
  } | {
81
90
  type: 'GIT_CANCELLED';
91
+ } | {
92
+ type: 'SCAFFOLD_CONFIRMED';
93
+ } | {
94
+ type: 'SCAFFOLD_CANCELLED';
82
95
  } | {
83
96
  type: 'CREDENTIALS_SUBMITTED';
84
97
  apiKey: string;
@@ -134,3 +147,14 @@ export interface BranchCheckOutput {
134
147
  branch: string | null;
135
148
  isProtected: boolean;
136
149
  }
150
+ /**
151
+ * Output from the workspace check actor (scaffold gate).
152
+ */
153
+ export interface WorkspaceCheckOutput {
154
+ /** Whether the install directory is empty enough to scaffold into */
155
+ scaffoldable: boolean;
156
+ /** Package manager resolved for the scaffolded app */
157
+ packageManager: PackageManager;
158
+ /** Whether to scaffold without prompting (headless or --scaffold) */
159
+ autoScaffold: boolean;
160
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"installer-core.types.js","sourceRoot":"","sources":["../../src/lib/installer-core.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { InstallerEventEmitter } from './events.js';\nimport type { InstallerOptions } from '../utils/types.js';\nimport type { Integration } from './constants.js';\nimport type { DeviceAuthResponse } from './device-auth.js';\nimport type { EnvFileInfo, DiscoveryResult } from './credential-discovery.js';\n\nexport type { EnvFileInfo, DiscoveryResult };\nexport type { DeviceAuthResponse };\n\n/**\n * How credentials were resolved.\n */\nexport type CredentialSource = 'cli' | 'env' | 'stored' | 'device' | 'manual';\n\n/**\n * Context passed to the wizard state machine.\n * Contains all data needed throughout the wizard flow.\n */\nexport interface InstallerMachineContext {\n /** Event emitter for UI communication */\n emitter: InstallerEventEmitter;\n /** CLI options from command line args */\n options: InstallerOptions;\n /** Detected or selected framework integration */\n integration: Integration | undefined;\n /** WorkOS credentials gathered from user */\n credentials: { apiKey?: string; clientId: string } | undefined;\n /** Whether git working directory is clean */\n gitIsClean: boolean;\n /** List of dirty git files (if any) */\n gitDirtyFiles: string[];\n /** Error that caused failure (if any) */\n error: Error | undefined;\n /** How credentials were resolved */\n credentialSource?: CredentialSource;\n /** Device auth state for UI display */\n deviceAuth?: {\n verificationUri: string;\n verificationUriComplete: string;\n userCode: string;\n };\n /** Whether user consented to env file scanning */\n envScanConsent?: boolean;\n /** Env files detected in project (before consent) */\n envFilesDetected?: string[];\n /** Path to env file where credentials were found */\n envCredentialPath?: string;\n /** Current git branch name */\n currentBranch?: string;\n /** Whether current branch is protected */\n isProtectedBranch?: boolean;\n /** Files changed during agent execution (for post-install) */\n changedFiles?: string[];\n /** AI-generated commit message */\n commitMessage?: string;\n /** AI-generated PR description */\n prDescription?: string;\n /** URL of created PR */\n prUrl?: string;\n /** Summary message from agent execution */\n agentSummary?: string;\n}\n\n/**\n * Input provided when creating the machine actor.\n * These values initialize the context.\n */\nexport interface InstallerMachineInput {\n emitter: InstallerEventEmitter;\n options: InstallerOptions;\n}\n\n/**\n * All events the wizard machine can receive.\n */\nexport type InstallerMachineEvent =\n | { type: 'START' }\n | { type: 'SKIP_AUTH' }\n | { type: 'GIT_CONFIRMED' }\n | { type: 'GIT_CANCELLED' }\n | { type: 'CREDENTIALS_SUBMITTED'; apiKey: string; clientId: string }\n | { type: 'CANCEL' }\n // Credential discovery events\n | { type: 'ENV_SCAN_APPROVED' }\n | { type: 'ENV_SCAN_DECLINED' }\n | { type: 'RETRY_AUTH' }\n // Branch check events\n | { type: 'BRANCH_CREATE' }\n | { type: 'BRANCH_CONTINUE' }\n | { type: 'BRANCH_CANCEL' }\n // Post-install events\n | { type: 'COMMIT_APPROVED' }\n | { type: 'COMMIT_DECLINED' }\n | { type: 'PR_APPROVED' }\n | { type: 'PR_DECLINED' };\n\n/**\n * Output from the detection actor.\n */\nexport interface DetectionOutput {\n integration: Integration | undefined;\n}\n\n/**\n * Output from the git check actor.\n */\nexport interface GitCheckOutput {\n isClean: boolean;\n files: string[];\n}\n\n/**\n * Output from the agent actor.\n */\nexport interface AgentOutput {\n success: boolean;\n summary?: string;\n error?: Error;\n}\n\n/**\n * Output from the branch check actor.\n */\nexport interface BranchCheckOutput {\n branch: string | null;\n isProtected: boolean;\n}\n"]}
1
+ {"version":3,"file":"installer-core.types.js","sourceRoot":"","sources":["../../src/lib/installer-core.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { InstallerEventEmitter } from './events.js';\nimport type { InstallerOptions } from '../utils/types.js';\nimport type { Integration } from './constants.js';\nimport type { PackageManager } from './scaffold/scaffold.js';\nimport type { DeviceAuthResponse } from './device-auth.js';\nimport type { EnvFileInfo, DiscoveryResult } from './credential-discovery.js';\n\nexport type { EnvFileInfo, DiscoveryResult };\nexport type { DeviceAuthResponse };\n\n/**\n * How credentials were resolved.\n */\nexport type CredentialSource = 'cli' | 'env' | 'stored' | 'device' | 'manual';\n\n/**\n * Context passed to the wizard state machine.\n * Contains all data needed throughout the wizard flow.\n */\nexport interface InstallerMachineContext {\n /** Event emitter for UI communication */\n emitter: InstallerEventEmitter;\n /** CLI options from command line args */\n options: InstallerOptions;\n /** Detected or selected framework integration */\n integration: Integration | undefined;\n /** WorkOS credentials gathered from user */\n credentials: { apiKey?: string; clientId: string } | undefined;\n /** Whether git working directory is clean */\n gitIsClean: boolean;\n /** List of dirty git files (if any) */\n gitDirtyFiles: string[];\n /** Error that caused failure (if any) */\n error: Error | undefined;\n /** How credentials were resolved */\n credentialSource?: CredentialSource;\n /** Device auth state for UI display */\n deviceAuth?: {\n verificationUri: string;\n verificationUriComplete: string;\n userCode: string;\n };\n /** Whether user consented to env file scanning */\n envScanConsent?: boolean;\n /** Env files detected in project (before consent) */\n envFilesDetected?: string[];\n /** Path to env file where credentials were found */\n envCredentialPath?: string;\n /** Current git branch name */\n currentBranch?: string;\n /** Whether current branch is protected */\n isProtectedBranch?: boolean;\n /** Files changed during agent execution (for post-install) */\n changedFiles?: string[];\n /** AI-generated commit message */\n commitMessage?: string;\n /** AI-generated PR description */\n prDescription?: string;\n /** URL of created PR */\n prUrl?: string;\n /** Summary message from agent execution */\n agentSummary?: string;\n /** Whether the install directory is empty and can be scaffolded into */\n scaffoldable?: boolean;\n /** Package manager resolved for the scaffolded app */\n packageManager?: PackageManager;\n /** Whether to scaffold without prompting (headless mode or --scaffold) */\n autoScaffold?: boolean;\n /** Whether create-next-app actually ran and succeeded (for telemetry) */\n scaffolded?: boolean;\n}\n\n/**\n * Input provided when creating the machine actor.\n * These values initialize the context.\n */\nexport interface InstallerMachineInput {\n emitter: InstallerEventEmitter;\n options: InstallerOptions;\n}\n\n/**\n * All events the wizard machine can receive.\n */\nexport type InstallerMachineEvent =\n | { type: 'START' }\n | { type: 'SKIP_AUTH' }\n | { type: 'GIT_CONFIRMED' }\n | { type: 'GIT_CANCELLED' }\n // Scaffold events\n | { type: 'SCAFFOLD_CONFIRMED' }\n | { type: 'SCAFFOLD_CANCELLED' }\n | { type: 'CREDENTIALS_SUBMITTED'; apiKey: string; clientId: string }\n | { type: 'CANCEL' }\n // Credential discovery events\n | { type: 'ENV_SCAN_APPROVED' }\n | { type: 'ENV_SCAN_DECLINED' }\n | { type: 'RETRY_AUTH' }\n // Branch check events\n | { type: 'BRANCH_CREATE' }\n | { type: 'BRANCH_CONTINUE' }\n | { type: 'BRANCH_CANCEL' }\n // Post-install events\n | { type: 'COMMIT_APPROVED' }\n | { type: 'COMMIT_DECLINED' }\n | { type: 'PR_APPROVED' }\n | { type: 'PR_DECLINED' };\n\n/**\n * Output from the detection actor.\n */\nexport interface DetectionOutput {\n integration: Integration | undefined;\n}\n\n/**\n * Output from the git check actor.\n */\nexport interface GitCheckOutput {\n isClean: boolean;\n files: string[];\n}\n\n/**\n * Output from the agent actor.\n */\nexport interface AgentOutput {\n success: boolean;\n summary?: string;\n error?: Error;\n}\n\n/**\n * Output from the branch check actor.\n */\nexport interface BranchCheckOutput {\n branch: string | null;\n isProtected: boolean;\n}\n\n/**\n * Output from the workspace check actor (scaffold gate).\n */\nexport interface WorkspaceCheckOutput {\n /** Whether the install directory is empty enough to scaffold into */\n scaffoldable: boolean;\n /** Package manager resolved for the scaffolded app */\n packageManager: PackageManager;\n /** Whether to scaffold without prompting (headless or --scaffold) */\n autoScaffold: boolean;\n}\n"]}