@enspirit/emb 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,7 +14,7 @@ $ npm install -g @enspirit/emb
14
14
  $ emb COMMAND
15
15
  running command...
16
16
  $ emb (--version)
17
- @enspirit/emb/0.6.0 darwin-x64 node-v22.18.0
17
+ @enspirit/emb/0.8.0 darwin-x64 node-v22.18.0
18
18
  $ emb --help [COMMAND]
19
19
  USAGE
20
20
  $ emb COMMAND
@@ -1,14 +1,9 @@
1
1
  import { DockerComposeClient, getContext, setContext } from '../../index.js';
2
- import { Command, Performance } from '@oclif/core';
2
+ import { Command } from '@oclif/core';
3
3
  import Dockerode from 'dockerode';
4
4
  import { loadConfig } from '../../config/index.js';
5
5
  import { Monorepo } from '../../monorepo/monorepo.js';
6
- const withMarker = async (owner, name, cb) => {
7
- const marker = Performance.mark(owner, name);
8
- const res = await cb();
9
- marker?.stop();
10
- return res;
11
- };
6
+ import { withMarker } from '../utils.js';
12
7
  export class BaseCommand extends Command {
13
8
  context;
14
9
  async init() {
@@ -36,7 +36,7 @@ export default class ContainersIndex extends BaseCommand {
36
36
  id: shortId(c.Id),
37
37
  image: c.Image,
38
38
  name: c.Names[0] || c.Id,
39
- ports: c.Ports.map((p) => {
39
+ ports: c.Ports?.map((p) => {
40
40
  const parts = [];
41
41
  if (p.IP) {
42
42
  parts.push(p.IP, ':', p.PublicPort, '->');
@@ -4,7 +4,7 @@ export default class ImagesPush extends FlavoredCommand<typeof ImagesPush> {
4
4
  static enableJsonFlag: boolean;
5
5
  static examples: string[];
6
6
  static flags: {
7
- registry: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ registry: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
8
  retag: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  };
10
10
  run(): Promise<void>;
@@ -12,6 +12,7 @@ export default class ImagesPush extends FlavoredCommand {
12
12
  registry: Flags.string({
13
13
  name: 'registry',
14
14
  description: 'Override the registry to push to',
15
+ default: process.env.DOCKER_REGISTRY,
15
16
  }),
16
17
  retag: Flags.string({
17
18
  name: 'retag',
@@ -1 +1,2 @@
1
1
  export declare const getTimeAgo: (timestamp?: number) => string | undefined;
2
+ export declare const withMarker: <T>(owner: string, name: string, cb: () => Promise<T>) => Promise<T>;
@@ -1,3 +1,4 @@
1
+ import { Performance } from '@oclif/core';
1
2
  const DATE_UNITS = {
2
3
  day: 86_400,
3
4
  hour: 3600,
@@ -24,3 +25,9 @@ export const getTimeAgo = (timestamp) => {
24
25
  const { value, unit } = getUnitAndValueDate(secondsElapsed);
25
26
  return rtf.format(value, unit);
26
27
  };
28
+ export const withMarker = async (owner, name, cb) => {
29
+ const marker = Performance.mark(owner, name);
30
+ const res = await cb();
31
+ marker?.stop();
32
+ return res;
33
+ };
@@ -18,6 +18,14 @@ export type TaskConfig = TaskConfig1 & {
18
18
  vars?: {
19
19
  [k: string]: string;
20
20
  };
21
+ /**
22
+ * Ask for user confirmation before running task
23
+ */
24
+ confirm?: {
25
+ message: string;
26
+ expect?: string;
27
+ [k: string]: unknown;
28
+ };
21
29
  };
22
30
  export type TaskConfig1 = {
23
31
  [k: string]: unknown;
@@ -143,6 +143,19 @@
143
143
  "additionalProperties": {
144
144
  "type": "string"
145
145
  }
146
+ },
147
+ "confirm": {
148
+ "type": "object",
149
+ "description": "Ask for user confirmation before running task",
150
+ "required": ["message"],
151
+ "properties": {
152
+ "message": {
153
+ "type": "string"
154
+ },
155
+ "expect": {
156
+ "type": "string"
157
+ }
158
+ }
146
159
  }
147
160
  },
148
161
  "additionalProperties": false
@@ -268,6 +281,9 @@
268
281
  "properties": {
269
282
  "path": {
270
283
  "type": "string"
284
+ },
285
+ "script": {
286
+ "type": "string"
271
287
  }
272
288
  }
273
289
  }
@@ -25,7 +25,7 @@ export declare class Monorepo {
25
25
  get resources(): Array<ResourceInfo>;
26
26
  resource(nameOrId: string): ResourceInfo;
27
27
  get vars(): Record<string, unknown>;
28
- expand<T extends Expandable>(toExpand: T, expander?: TemplateExpander): Promise<T extends string ? string : T extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: /*elided*/ any; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : T extends { readonly [K_2 in keyof T]: Expandable; } ? { readonly [K_3 in keyof T]: T[K_3] extends infer T_1 ? T_1 extends T[K_3] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : T_1 extends { readonly [K_5 in keyof T_1]: Expandable; } ? { readonly [K_6 in keyof T_1]: T_1[K_6] extends infer T_2 ? T_2 extends T_1[K_6] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : T_2 extends { readonly [K_7 in keyof T_2]: Expandable; } ? { readonly [K_8 in keyof T_2]: T_2[K_8] extends infer T_3 ? T_3 extends T_2[K_8] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : T_3 extends { readonly [K_9 in keyof T_3]: Expandable; } ? { readonly [K_10 in keyof T_3]: T_3[K_10] extends infer T_4 ? T_4 extends T_3[K_10] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : T_4 extends { readonly [K_11 in keyof T_4]: Expandable; } ? { readonly [K_12 in keyof T_4]: T_4[K_12] extends infer T_5 ? T_5 extends T_4[K_12] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : T_5 extends { readonly [K_13 in keyof T_5]: Expandable; } ? { readonly [K_14 in keyof T_5]: T_5[K_14] extends infer T_6 ? T_6 extends T_5[K_14] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : T_6 extends { readonly [K_15 in keyof T_6]: Expandable; } ? { readonly [K_16 in keyof T_6]: T_6[K_16] extends infer T_7 ? T_7 extends T_6[K_16] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : U)[] : T_7 extends { readonly [K_17 in keyof T_7]: Expandable; } ? { readonly [K_18 in keyof T_7]: T_7[K_18] extends infer T_8 ? T_8 extends T_7[K_18] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_9 ? T_9 extends U[K_1] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : U)[] : T_8 extends { readonly [K_19 in keyof T_8]: Expandable; } ? { readonly [K_20 in keyof T_8]: T_8[K_20] extends infer T_9 ? T_9 extends T_8[K_20] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : T_9 extends { readonly [K_21 in keyof T_9]: Expandable; } ? { readonly [K_22 in keyof T_9]: T_9[K_22] extends infer T_10 ? T_10 extends T_9[K_22] ? T_10 extends string ? string : T_10 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_10 extends { readonly [K_23 in keyof T_10]: Expandable; } ? { readonly [K_24 in keyof T_10]: /*elided*/ any; } : T_10 : never : never; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : T>;
28
+ expand<T extends Expandable>(toExpand: T, vars?: Record<string, unknown>, expander?: TemplateExpander): Promise<T extends string ? string : T extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: /*elided*/ any; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : T extends { readonly [K_2 in keyof T]: Expandable; } ? { readonly [K_3 in keyof T]: T[K_3] extends infer T_1 ? T_1 extends T[K_3] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : T_1 extends { readonly [K_5 in keyof T_1]: Expandable; } ? { readonly [K_6 in keyof T_1]: T_1[K_6] extends infer T_2 ? T_2 extends T_1[K_6] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : T_2 extends { readonly [K_7 in keyof T_2]: Expandable; } ? { readonly [K_8 in keyof T_2]: T_2[K_8] extends infer T_3 ? T_3 extends T_2[K_8] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : T_3 extends { readonly [K_9 in keyof T_3]: Expandable; } ? { readonly [K_10 in keyof T_3]: T_3[K_10] extends infer T_4 ? T_4 extends T_3[K_10] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : T_4 extends { readonly [K_11 in keyof T_4]: Expandable; } ? { readonly [K_12 in keyof T_4]: T_4[K_12] extends infer T_5 ? T_5 extends T_4[K_12] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : T_5 extends { readonly [K_13 in keyof T_5]: Expandable; } ? { readonly [K_14 in keyof T_5]: T_5[K_14] extends infer T_6 ? T_6 extends T_5[K_14] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : T_6 extends { readonly [K_15 in keyof T_6]: Expandable; } ? { readonly [K_16 in keyof T_6]: T_6[K_16] extends infer T_7 ? T_7 extends T_6[K_16] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : U)[] : T_7 extends { readonly [K_17 in keyof T_7]: Expandable; } ? { readonly [K_18 in keyof T_7]: T_7[K_18] extends infer T_8 ? T_8 extends T_7[K_18] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_9 ? T_9 extends U[K_1] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : U)[] : T_8 extends { readonly [K_19 in keyof T_8]: Expandable; } ? { readonly [K_20 in keyof T_8]: T_8[K_20] extends infer T_9 ? T_9 extends T_8[K_20] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : T_9 extends { readonly [K_21 in keyof T_9]: Expandable; } ? { readonly [K_22 in keyof T_9]: T_9[K_22] extends infer T_10 ? T_10 extends T_9[K_22] ? T_10 extends string ? string : T_10 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_10 extends { readonly [K_23 in keyof T_10]: Expandable; } ? { readonly [K_24 in keyof T_10]: /*elided*/ any; } : T_10 : never : never; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : T>;
29
29
  private installStore;
30
30
  private installEnv;
31
31
  init(): Promise<Monorepo>;
@@ -96,12 +96,12 @@ export class Monorepo {
96
96
  return this._config.vars;
97
97
  }
98
98
  // Helper to expand a record of strings
99
- async expand(toExpand, expander = new TemplateExpander()) {
99
+ async expand(toExpand, vars, expander = new TemplateExpander()) {
100
100
  const options = {
101
101
  default: 'vars',
102
102
  sources: {
103
103
  env: process.env,
104
- vars: this.vars,
104
+ vars: vars || this.vars,
105
105
  },
106
106
  };
107
107
  return expander.expandRecord(toExpand, options);
@@ -3,6 +3,8 @@ import * as z from 'zod';
3
3
  import { AbstractOperation } from '../../../operations/index.js';
4
4
  declare const schema: z.ZodObject<{
5
5
  path: z.ZodString;
6
+ script: z.ZodOptional<z.ZodString>;
7
+ cwd: z.ZodOptional<z.ZodString>;
6
8
  force: z.ZodOptional<z.ZodBoolean>;
7
9
  }, z.core.$strip>;
8
10
  export declare class CreateFileOperation extends AbstractOperation<typeof schema, unknown> {
@@ -1,9 +1,12 @@
1
+ import { execa } from 'execa';
1
2
  import { open, statfs, utimes } from 'node:fs/promises';
2
3
  import * as z from 'zod';
3
4
  import { AbstractOperation } from '../../../operations/index.js';
4
5
  const schema = z.object({
5
6
  //
6
7
  path: z.string().describe('Path to the file to create'),
8
+ script: z.string().optional().describe('The script to generate the file'),
9
+ cwd: z.string().optional().describe('Working directory to execute scripts'),
7
10
  force: z
8
11
  .boolean()
9
12
  .optional()
@@ -16,6 +19,7 @@ export class CreateFileOperation extends AbstractOperation {
16
19
  this.out = out;
17
20
  }
18
21
  async _run(input) {
22
+ // Check if the file exists, if so our work is done here
19
23
  try {
20
24
  await statfs(input.path);
21
25
  if (input.force) {
@@ -23,11 +27,21 @@ export class CreateFileOperation extends AbstractOperation {
23
27
  }
24
28
  }
25
29
  catch (error) {
26
- if (error?.code === 'ENOENT') {
27
- const fn = await open(input.path, 'a');
28
- return fn.close();
30
+ // Ignore ENOENT error (file does not exist)
31
+ if (error?.code !== 'ENOENT') {
32
+ throw error;
29
33
  }
30
- throw error;
34
+ }
35
+ if (input.script) {
36
+ await execa(input.script, {
37
+ all: true,
38
+ cwd: input.cwd,
39
+ shell: true,
40
+ });
41
+ }
42
+ else {
43
+ const fn = await open(input.path, 'a');
44
+ fn.close();
31
45
  }
32
46
  }
33
47
  }
@@ -9,6 +9,7 @@ export type RunTasksOperationParams = {
9
9
  tasks: Array<string>;
10
10
  executor?: ExecutorType | undefined;
11
11
  allMatching?: boolean;
12
+ verbose?: boolean;
12
13
  };
13
14
  export type TaskWithScript = TaskInfo & {
14
15
  script: string;
@@ -1,7 +1,10 @@
1
1
  import { getContext } from '../../../index.js';
2
+ import { input } from '@inquirer/prompts';
3
+ import { ListrInquirerPromptAdapter } from '@listr2/prompt-adapter-inquirer';
4
+ import { Listr } from 'listr2';
2
5
  import { PassThrough } from 'node:stream';
3
6
  import { ContainerExecOperation } from '../../../docker/index.js';
4
- import { EMBCollection, findRunOrder, taskManagerFactory, } from '../../index.js';
7
+ import { EMBCollection, findRunOrder } from '../../index.js';
5
8
  import { ExecuteLocalCommandOperation } from '../index.js';
6
9
  export var ExecutorType;
7
10
  (function (ExecutorType) {
@@ -19,8 +22,7 @@ export class RunTasksOperation {
19
22
  const ordered = findRunOrder(params.tasks, collection, {
20
23
  onAmbiguous: params.allMatching ? 'runAll' : 'error',
21
24
  });
22
- const manager = taskManagerFactory();
23
- manager.add(ordered.map((task) => {
25
+ const tasks = new Listr(ordered.map((task) => {
24
26
  return {
25
27
  rendererOptions: {
26
28
  persistentOutput: true,
@@ -29,11 +31,25 @@ export class RunTasksOperation {
29
31
  if (!task.script) {
30
32
  return;
31
33
  }
34
+ const vars = await monorepo.expand(task.vars || {});
32
35
  const executor = params.executor ??
33
36
  (task.component ? ExecutorType.container : ExecutorType.local);
34
37
  if (executor === ExecutorType.container && !task.component) {
35
38
  throw new Error('Cannot use the container executor with global tasks');
36
39
  }
40
+ // Handle tasks that require confirmation
41
+ if (task.confirm) {
42
+ const expected = await monorepo.expand(task.confirm.expect || 'yes', vars);
43
+ const message = await monorepo.expand(task.confirm.message, vars);
44
+ const res = await listrTask
45
+ .prompt(ListrInquirerPromptAdapter)
46
+ .run(input, {
47
+ message: `${message} (type '${expected}' to continue)`,
48
+ });
49
+ if (res !== expected) {
50
+ throw new Error('Task canceled');
51
+ }
52
+ }
37
53
  const tee = new PassThrough();
38
54
  const logFile = await monorepo.store.createWriteStream(`logs/tasks/${task.id}.logs`);
39
55
  tee.pipe(listrTask.stdout());
@@ -53,7 +69,7 @@ export class RunTasksOperation {
53
69
  title: `Running ${task.id}`,
54
70
  };
55
71
  }));
56
- await manager.runAll();
72
+ await tasks.run();
57
73
  return ordered;
58
74
  }
59
75
  async runDocker(task, out) {
@@ -9,6 +9,8 @@ export declare class FileResourceBuilder implements IResourceBuilder<OpInput<Cre
9
9
  build(resource: ResourceInfo<OpInput<CreateFileOperation>>, out?: Writable): Promise<{
10
10
  input: {
11
11
  path: string;
12
+ script?: string | undefined;
13
+ cwd?: string | undefined;
12
14
  force?: boolean | undefined;
13
15
  };
14
16
  operation: CreateFileOperation;
@@ -11,6 +11,8 @@ export class FileResourceBuilder {
11
11
  async build(resource, out) {
12
12
  const input = {
13
13
  path: await this.context.component.join(this.context.config.params?.path || this.context.config.name),
14
+ script: resource.params?.script,
15
+ cwd: this.context.component.join('./'),
14
16
  };
15
17
  return {
16
18
  input,
@@ -853,5 +853,5 @@
853
853
  ]
854
854
  }
855
855
  },
856
- "version": "0.6.0"
856
+ "version": "0.8.0"
857
857
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@enspirit/emb",
3
3
  "type": "module",
4
- "version": "0.6.0",
4
+ "version": "0.8.0",
5
5
  "keywords": [
6
6
  "monorepo",
7
7
  "docker",
@@ -59,6 +59,8 @@
59
59
  "find-up": "^7.0.0",
60
60
  "glob": "^11.0.3",
61
61
  "graphlib": "^2.1.8",
62
+ "@inquirer/prompts": "^7.8.3",
63
+ "@listr2/prompt-adapter-inquirer": "^3.0.2",
62
64
  "listr2": "^9.0.1",
63
65
  "luxon": "^3.7.1",
64
66
  "protobufjs": "^7.5.3",