starskiff 0.0.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +327 -0
  3. package/dist/Instance.d.ts +89 -0
  4. package/dist/Instance.d.ts.map +1 -0
  5. package/dist/Instance.js +206 -0
  6. package/dist/Instance.js.map +1 -0
  7. package/dist/accounts.d.ts +26 -0
  8. package/dist/accounts.d.ts.map +1 -0
  9. package/dist/accounts.js +38 -0
  10. package/dist/accounts.js.map +1 -0
  11. package/dist/cosmos.d.ts +265 -0
  12. package/dist/cosmos.d.ts.map +1 -0
  13. package/dist/cosmos.js +359 -0
  14. package/dist/cosmos.js.map +1 -0
  15. package/dist/index.d.ts +8 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +7 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/instances/evmd.d.ts +68 -0
  20. package/dist/instances/evmd.d.ts.map +1 -0
  21. package/dist/instances/evmd.js +106 -0
  22. package/dist/instances/evmd.js.map +1 -0
  23. package/dist/instances/gaiad.d.ts +46 -0
  24. package/dist/instances/gaiad.d.ts.map +1 -0
  25. package/dist/instances/gaiad.js +35 -0
  26. package/dist/instances/gaiad.js.map +1 -0
  27. package/dist/instances/hermes.d.ts +52 -0
  28. package/dist/instances/hermes.d.ts.map +1 -0
  29. package/dist/instances/hermes.js +457 -0
  30. package/dist/instances/hermes.js.map +1 -0
  31. package/dist/instances/simd.d.ts +43 -0
  32. package/dist/instances/simd.d.ts.map +1 -0
  33. package/dist/instances/simd.js +21 -0
  34. package/dist/instances/simd.js.map +1 -0
  35. package/dist/instances/wasmd.d.ts +45 -0
  36. package/dist/instances/wasmd.d.ts.map +1 -0
  37. package/dist/instances/wasmd.js +23 -0
  38. package/dist/instances/wasmd.js.map +1 -0
  39. package/dist/instances/xplad.d.ts +55 -0
  40. package/dist/instances/xplad.d.ts.map +1 -0
  41. package/dist/instances/xplad.js +86 -0
  42. package/dist/instances/xplad.js.map +1 -0
  43. package/dist/ports.d.ts +31 -0
  44. package/dist/ports.d.ts.map +1 -0
  45. package/dist/ports.js +45 -0
  46. package/dist/ports.js.map +1 -0
  47. package/dist/process.d.ts +34 -0
  48. package/dist/process.d.ts.map +1 -0
  49. package/dist/process.js +92 -0
  50. package/dist/process.js.map +1 -0
  51. package/dist/utils.d.ts +15 -0
  52. package/dist/utils.d.ts.map +1 -0
  53. package/dist/utils.js +33 -0
  54. package/dist/utils.js.map +1 -0
  55. package/package.json +50 -7
  56. package/src/Instance.ts +288 -0
  57. package/src/accounts.ts +49 -0
  58. package/src/cosmos.ts +601 -0
  59. package/src/index.ts +7 -0
  60. package/src/instances/evmd.ts +126 -0
  61. package/src/instances/gaiad.ts +40 -0
  62. package/src/instances/hermes.ts +580 -0
  63. package/src/instances/simd.ts +26 -0
  64. package/src/instances/wasmd.ts +28 -0
  65. package/src/instances/xplad.ts +107 -0
  66. package/src/ports.ts +63 -0
  67. package/src/process.ts +137 -0
  68. package/src/utils.ts +38 -0
@@ -0,0 +1,26 @@
1
+ /** A well-known deterministic test account, ready to fund in genesis. */
2
+ export type TestAccount = {
3
+ /** Account name (for genesis account labeling / keyring). */
4
+ name: string;
5
+ /** BIP39 mnemonic. Public and non-secret — never fund with real value. */
6
+ mnemonic: string;
7
+ /** Bech32 address, pre-derived for the "cosmos" prefix at the default cosmos HD path (m/44'/118'/0'/0/0). */
8
+ address: string;
9
+ };
10
+ /**
11
+ * A handful of well-known, publicly-documented BIP39 test mnemonics used
12
+ * throughout the Cosmos/EVM test ecosystems, with addresses pre-derived for
13
+ * the "cosmos" bech32 prefix (the `cosmosBase` default) at the default HD
14
+ * path. Handy for quickly funding genesis accounts without deriving anything
15
+ * yourself.
16
+ *
17
+ * These mnemonics are public — do not use them for real funds.
18
+ *
19
+ * @remarks
20
+ * Addresses here assume the "cosmos" prefix. Chains configured with a
21
+ * different `prefix` (e.g. `osmo`, `xpla`) need addresses re-derived from
22
+ * the same mnemonic — the underlying key doesn't change, only the bech32
23
+ * encoding does.
24
+ */
25
+ export declare const testAccounts: TestAccount[];
26
+ //# sourceMappingURL=accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,MAAM,WAAW,GAAG;IACxB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAA;IAChB,6GAA6G;IAC7G,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,EAuBrC,CAAA"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * A handful of well-known, publicly-documented BIP39 test mnemonics used
3
+ * throughout the Cosmos/EVM test ecosystems, with addresses pre-derived for
4
+ * the "cosmos" bech32 prefix (the `cosmosBase` default) at the default HD
5
+ * path. Handy for quickly funding genesis accounts without deriving anything
6
+ * yourself.
7
+ *
8
+ * These mnemonics are public — do not use them for real funds.
9
+ *
10
+ * @remarks
11
+ * Addresses here assume the "cosmos" prefix. Chains configured with a
12
+ * different `prefix` (e.g. `osmo`, `xpla`) need addresses re-derived from
13
+ * the same mnemonic — the underlying key doesn't change, only the bech32
14
+ * encoding does.
15
+ */
16
+ export const testAccounts = [
17
+ {
18
+ name: 'alice',
19
+ mnemonic: 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about',
20
+ address: 'cosmos19rl4cm2hmr8afy4kldpxz3fka4jguq0auqdal4',
21
+ },
22
+ {
23
+ name: 'bob',
24
+ mnemonic: 'zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong',
25
+ address: 'cosmos1am058pdux3hyulcmfgj4m3hhrlfn8nzm88u80q',
26
+ },
27
+ {
28
+ name: 'carol',
29
+ mnemonic: 'test test test test test test test test test test test junk',
30
+ address: 'cosmos15yk64u7zc9g9k2yr2wmzeva5qgwxps6yxj00e7',
31
+ },
32
+ {
33
+ name: 'faucet',
34
+ mnemonic: 'economy stock theory fatal elder harbor betray wasp final emotion task crumble siren bottom lizard educate guess current outdoor pair theory focus wife stone',
35
+ address: 'cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6',
36
+ },
37
+ ];
38
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC;QACE,IAAI,EAAE,OAAO;QACb,QAAQ,EACN,+FAA+F;QACjG,OAAO,EAAE,+CAA+C;KACzD;IACD;QACE,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,mDAAmD;QAC7D,OAAO,EAAE,+CAA+C;KACzD;IACD;QACE,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,6DAA6D;QACvE,OAAO,EAAE,+CAA+C;KACzD;IACD;QACE,IAAI,EAAE,QAAQ;QACd,QAAQ,EACN,+JAA+J;QACjK,OAAO,EAAE,+CAA+C;KACzD;CACF,CAAA"}
@@ -0,0 +1,265 @@
1
+ import * as Instance from './Instance.js';
2
+ export type CosmosAccount = {
3
+ /** BIP39 mnemonic for key derivation. */
4
+ mnemonic: string;
5
+ /** Coins to fund (e.g. "1000000000stake"). */
6
+ coins: string;
7
+ /** Account name for keyring. @default "test-{index}" */
8
+ name?: string;
9
+ };
10
+ /** Default pk proto URL for ethermint-derivation chains (cosmos-evm module). */
11
+ export declare const DEFAULT_COSMOS_EVM_PK_TYPE_URL = "/cosmos.evm.crypto.v1.ethsecp256k1.PubKey";
12
+ /**
13
+ * Hermes relayer hints advertised by an instance. Mirrors the `AddressType`
14
+ * enum in ibc-rs: `cosmos` is a unit variant (secp256k1 only, no custom
15
+ * pk_type possible at the Hermes level), `ethermint` carries a `pk_type` URL.
16
+ *
17
+ * Instances get their defaults from `cosmosBase` / `cosmosEvmBase` and can
18
+ * override per-instance via the `relayerHints` parameter.
19
+ */
20
+ export type CosmosRelayerHints = {
21
+ /** @default 'cosmos' */
22
+ addressDerivation?: 'cosmos';
23
+ /** @default "m/44'/118'/0'/0/0" */
24
+ hdPath?: string;
25
+ } | {
26
+ addressDerivation: 'ethermint';
27
+ /** @default "m/44'/60'/0'/0/0" */
28
+ hdPath?: string;
29
+ /** @default {@link DEFAULT_COSMOS_EVM_PK_TYPE_URL} */
30
+ pkTypeUrl?: string;
31
+ };
32
+ /** Common parameters shared by all Cosmos SDK chain instances. */
33
+ export type CosmosChainParameters = {
34
+ /** Chain ID. @default "starskiff-1" */
35
+ chainId?: string;
36
+ /** Default denom. @default "stake" */
37
+ denom?: string;
38
+ /** Bech32 address prefix. @default "cosmos" */
39
+ prefix?: string;
40
+ /** Accounts to fund in genesis. */
41
+ accounts?: CosmosAccount[];
42
+ /** Minimum gas prices. @default "0{denom}" */
43
+ minimumGasPrices?: string;
44
+ /** Validator account initial balance (amount only, denom appended). @default "100000000000" */
45
+ validatorBalance?: string;
46
+ /** Validator self-delegation amount (amount only, denom appended). @default "10000000" */
47
+ validatorStake?: string;
48
+ /**
49
+ * Number of ADDITIONAL validators to create at genesis, beyond the default
50
+ * one (keys `validator-1`, `validator-2`, …). Each gets its own consensus key
51
+ * and is funded with `validatorBalance` / self-delegates `validatorStake`.
52
+ * Needed by tests that require multiple bonded validators (e.g. redelegation).
53
+ * @default 0
54
+ */
55
+ extraValidators?: number;
56
+ /** RPC listen address port. @default 26657 */
57
+ rpcPort?: number;
58
+ /** gRPC listen port. @default 9090 */
59
+ grpcPort?: number;
60
+ /** API (REST) listen port. @default 1317 */
61
+ apiPort?: number;
62
+ /** P2P listen port. @default 26656 */
63
+ p2pPort?: number;
64
+ /** gRPC-Web listen port. @default 9091 */
65
+ grpcWebPort?: number;
66
+ /** pprof listen port. @default 6060 */
67
+ pprofPort?: number;
68
+ /**
69
+ * Hermes relayer hints. Usually set by the instance wrapper (e.g.
70
+ * `cosmosEvmBase`), callers only override for custom chains.
71
+ */
72
+ relayerHints?: CosmosRelayerHints;
73
+ };
74
+ /** A Cosmos chain instance with chain-specific config exposed. */
75
+ export type CosmosInstance = Instance.Instance & {
76
+ chainId: string;
77
+ denom: string;
78
+ prefix: string;
79
+ grpcPort: number;
80
+ apiPort: number;
81
+ /** Relayer hints advertised by the instance for Hermes configuration. */
82
+ relayerHints?: CosmosRelayerHints;
83
+ /** `http://{host}:{port}` — CometBFT RPC endpoint. */
84
+ rpcUrl: string;
85
+ /** `http://{host}:{grpcPort}` — gRPC endpoint. */
86
+ grpcUrl: string;
87
+ /** `http://{host}:{apiPort}` — REST (Cosmos SDK API) endpoint. */
88
+ apiUrl: string;
89
+ };
90
+ /**
91
+ * Genesis JSON structure — covers fields starskiff reads/writes.
92
+ *
93
+ * Field names follow cosmos-sdk proto JSON representation (snake_case).
94
+ * Note: cosmjs-types uses camelCase — these types are intentionally
95
+ * snake_case to match the raw genesis.json output from cosmos binaries.
96
+ */
97
+ export type Genesis = {
98
+ app_state: {
99
+ staking?: {
100
+ params?: {
101
+ bond_denom: string;
102
+ };
103
+ };
104
+ mint?: {
105
+ params?: {
106
+ mint_denom: string;
107
+ };
108
+ };
109
+ crisis?: {
110
+ constant_fee?: {
111
+ denom: string;
112
+ };
113
+ };
114
+ gov?: {
115
+ deposit_params?: {
116
+ min_deposit?: {
117
+ denom: string;
118
+ }[];
119
+ };
120
+ params?: {
121
+ min_deposit?: {
122
+ denom: string;
123
+ }[];
124
+ };
125
+ };
126
+ bank?: {
127
+ denom_metadata?: unknown[];
128
+ };
129
+ feemarket?: {
130
+ params: {
131
+ fee_denom: string;
132
+ min_base_gas_price: string;
133
+ [k: string]: unknown;
134
+ };
135
+ state: {
136
+ base_gas_price: string;
137
+ [k: string]: unknown;
138
+ };
139
+ };
140
+ [module: string]: unknown;
141
+ };
142
+ };
143
+ /** Internal parameters for cosmosBase. Extends CosmosChainParameters with binary, name, and hooks. */
144
+ export type CosmosBaseParameters = CosmosChainParameters & {
145
+ /** Path to the binary. */
146
+ binary: string;
147
+ /** Instance name. */
148
+ name: string;
149
+ /** Hook to patch genesis after default denom patching. */
150
+ patchGenesis?: (genesis: Genesis) => Genesis;
151
+ /** Additional app.toml patches. Merged after default patches. */
152
+ extraAppToml?: Record<string, string>;
153
+ /** Additional config.toml patches. Merged after default patches. */
154
+ extraConfigToml?: Record<string, string>;
155
+ /** Extra args appended to the `start` command (e.g. `['--chain-id', id]`). */
156
+ extraStartArgs?: string[];
157
+ /**
158
+ * Additional readiness check ANDed with the default CometBFT height check
159
+ * before `start()` resolves. Used by `cosmosEvmBase` to also wait for the
160
+ * JSON-RPC (EVM) endpoint to come up.
161
+ */
162
+ extraReadinessCheck?: () => Promise<boolean>;
163
+ };
164
+ /**
165
+ * Shared setup for any Cosmos SDK chain binary.
166
+ *
167
+ * Handles the common flow: init → genesis patch → key creation →
168
+ * gentx → config patch → start → health check polling.
169
+ *
170
+ * Used internally by instance definitions (e.g. simd).
171
+ * For custom chains, provide a `patchGenesis` hook for chain-specific genesis modifications.
172
+ */
173
+ export declare function cosmosBase(parameters: CosmosBaseParameters): {
174
+ name: string;
175
+ host: string;
176
+ port: number;
177
+ chainId: string;
178
+ prefix: string;
179
+ denom: string;
180
+ grpcPort: number;
181
+ apiPort: number;
182
+ relayerHints: CosmosRelayerHints | undefined;
183
+ readonly rpcUrl: string;
184
+ readonly grpcUrl: string;
185
+ readonly apiUrl: string;
186
+ start({ port }: Instance.InstanceStartOptions, { emitter }: Instance.InstanceStartContext): Promise<void>;
187
+ stop(): Promise<void>;
188
+ };
189
+ /**
190
+ * Computes the self-delegation stake for each extra validator so the primary
191
+ * (the only validator running a live node) keeps a supermajority of voting
192
+ * power. Extra validators are bonded but never sign blocks, so if their
193
+ * combined stake reaches `validatorStake / 2` the primary drops to <=2/3 and
194
+ * CometBFT halts at genesis.
195
+ *
196
+ * Invariant: `primaryStake > 2 * extraValidators * extraStake` must hold.
197
+ * Solving for `extraStake` with a 2x safety margin gives
198
+ * `extraStake = primaryStake / (4 * extraValidators)`, which holds for any
199
+ * `extraValidators >= 1` — a fixed fraction (e.g. the old 1/10) only stays
200
+ * safe up to 4 extra validators.
201
+ */
202
+ export declare function computeExtraValidatorStake(validatorStake: string, extraValidators: number): bigint;
203
+ /** Parameters for EVM-enabled Cosmos SDK chains. */
204
+ export type CosmosEvmChainParameters = Omit<CosmosChainParameters, 'relayerHints'> & {
205
+ /** JSON-RPC (EVM) listen port. @default 8545 */
206
+ evmPort?: number;
207
+ /**
208
+ * Ethermint-only overrides. `addressDerivation` is fixed to `'ethermint'`
209
+ * by `cosmosEvmBase`; only `hdPath` and `pkTypeUrl` are user-controllable.
210
+ */
211
+ relayerHints?: {
212
+ hdPath?: string;
213
+ pkTypeUrl?: string;
214
+ };
215
+ /**
216
+ * EVM static precompiles written to `evm.params.active_static_precompiles`.
217
+ *
218
+ * - `undefined` (omitted): genesis untouched, binary's compiled-in default applies.
219
+ * - `[]`: explicitly disable all precompiles.
220
+ * - `[...]`: overwrite with the given set.
221
+ *
222
+ * Instance wrappers (e.g. `xplad`) provide a chain-specific default.
223
+ */
224
+ activeStaticPrecompiles?: readonly string[];
225
+ };
226
+ /** A Cosmos EVM chain instance with evmPort exposed. */
227
+ export type CosmosEvmInstance = CosmosInstance & {
228
+ evmPort: number;
229
+ /** `http://{host}:{evmPort}` — JSON-RPC (EVM) endpoint. */
230
+ evmUrl: string;
231
+ };
232
+ /** Internal parameters for cosmosEvmBase. */
233
+ export type CosmosEvmBaseParameters = CosmosEvmChainParameters & {
234
+ binary: string;
235
+ name: string;
236
+ patchGenesis?: (genesis: Genesis) => Genesis;
237
+ /** Additional config.toml patches, forwarded to cosmosBase. */
238
+ extraConfigToml?: Record<string, string>;
239
+ /** Extra `start` command args, forwarded to cosmosBase. */
240
+ extraStartArgs?: string[];
241
+ };
242
+ /**
243
+ * Shared setup for EVM-enabled Cosmos SDK chains (e.g. xpla, evmos).
244
+ *
245
+ * Extends cosmosBase with JSON-RPC (EVM) port configuration in app.toml.
246
+ */
247
+ export declare function cosmosEvmBase(parameters: CosmosEvmBaseParameters): {
248
+ evmPort: number;
249
+ evmUrl: string;
250
+ name: string;
251
+ host: string;
252
+ port: number;
253
+ chainId: string;
254
+ prefix: string;
255
+ denom: string;
256
+ grpcPort: number;
257
+ apiPort: number;
258
+ relayerHints: CosmosRelayerHints | undefined;
259
+ rpcUrl: string;
260
+ grpcUrl: string;
261
+ apiUrl: string;
262
+ start({ port }: Instance.InstanceStartOptions, { emitter }: Instance.InstanceStartContext): Promise<void>;
263
+ stop(): Promise<void>;
264
+ };
265
+ //# sourceMappingURL=cosmos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmos.d.ts","sourceRoot":"","sources":["../src/cosmos.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAGzC,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,8BAA8B,8CAA8C,CAAA;AAEzF;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IACE,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,QAAQ,CAAA;IAC5B,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GACD;IACE,iBAAiB,EAAE,WAAW,CAAA;IAC9B,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAEL,kEAAkE;AAClE,MAAM,MAAM,qBAAqB,GAAG;IAClC,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mCAAmC;IACnC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;IAC1B,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAClC,CAAA;AAED,kEAAkE;AAClE,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,GAAG;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,yEAAyE;IACzE,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE;QACT,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE;gBAAE,UAAU,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAA;QAC7C,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE;gBAAE,UAAU,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAA;QAC1C,MAAM,CAAC,EAAE;YAAE,YAAY,CAAC,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAA;QAC7C,GAAG,CAAC,EAAE;YACJ,cAAc,CAAC,EAAE;gBAAE,WAAW,CAAC,EAAE;oBAAE,KAAK,EAAE,MAAM,CAAA;iBAAE,EAAE,CAAA;aAAE,CAAA;YACtD,MAAM,CAAC,EAAE;gBAAE,WAAW,CAAC,EAAE;oBAAE,KAAK,EAAE,MAAM,CAAA;iBAAE,EAAE,CAAA;aAAE,CAAA;SAC/C,CAAA;QACD,IAAI,CAAC,EAAE;YAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAA;SAAE,CAAA;QACrC,SAAS,CAAC,EAAE;YACV,MAAM,EAAE;gBAAE,SAAS,EAAE,MAAM,CAAC;gBAAC,kBAAkB,EAAE,MAAM,CAAC;gBAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;aAAE,CAAA;YAC/E,KAAK,EAAE;gBAAE,cAAc,EAAE,MAAM,CAAC;gBAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;aAAE,CAAA;SACxD,CAAA;QACD,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAC1B,CAAA;CACF,CAAA;AAED,sGAAsG;AACtG,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,GAAG;IACzD,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,0DAA0D;IAC1D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;IAC5C,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CAC7C,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,oBAAoB;;;;;;;;;;;;;oBAiEjC,QAAQ,CAAC,oBAAoB,eACpC,QAAQ,CAAC,oBAAoB;;EAkL/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAWlG;AAuED,oDAAoD;AACpD,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,qBAAqB,EAAE,cAAc,CAAC,GAAG;IACnF,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtD;;;;;;;;OAQG;IACH,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC5C,CAAA;AAED,wDAAwD;AACxD,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,6CAA6C;AAC7C,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,GAAG;IAC/D,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;IAC5C,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAC1B,CAAA;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,uBAAuB;;;;;;;;;;;;;;;oBAhUvC,QAAQ,CAAC,oBAAoB,eACpC,QAAQ,CAAC,oBAAoB;;EAuX/C"}