@hyperlane-xyz/cli 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/cli.js +4 -2
  2. package/dist/cli.js.map +1 -1
  3. package/dist/src/commands/config.js +4 -4
  4. package/dist/src/commands/config.js.map +1 -1
  5. package/dist/src/commands/deploy.js +10 -7
  6. package/dist/src/commands/deploy.js.map +1 -1
  7. package/dist/src/commands/options.d.ts.map +1 -1
  8. package/dist/src/commands/options.js +1 -2
  9. package/dist/src/commands/options.js.map +1 -1
  10. package/dist/src/commands/send.js +2 -5
  11. package/dist/src/commands/send.js.map +1 -1
  12. package/dist/src/commands/status.d.ts.map +1 -1
  13. package/dist/src/commands/status.js +0 -2
  14. package/dist/src/commands/status.js.map +1 -1
  15. package/dist/src/config/artifacts.d.ts +2 -1
  16. package/dist/src/config/artifacts.d.ts.map +1 -1
  17. package/dist/src/config/artifacts.js +24 -2
  18. package/dist/src/config/artifacts.js.map +1 -1
  19. package/dist/src/config/chain.d.ts +1 -1
  20. package/dist/src/config/chain.d.ts.map +1 -1
  21. package/dist/src/config/chain.js +1 -1
  22. package/dist/src/config/chain.js.map +1 -1
  23. package/dist/src/config/hooks.d.ts +89 -211
  24. package/dist/src/config/hooks.d.ts.map +1 -1
  25. package/dist/src/config/hooks.js +220 -84
  26. package/dist/src/config/hooks.js.map +1 -1
  27. package/dist/src/config/ism.d.ts +3 -3
  28. package/dist/src/config/ism.d.ts.map +1 -1
  29. package/dist/src/config/ism.js +11 -13
  30. package/dist/src/config/ism.js.map +1 -1
  31. package/dist/src/config/multisig.d.ts.map +1 -1
  32. package/dist/src/config/multisig.js +11 -2
  33. package/dist/src/config/multisig.js.map +1 -1
  34. package/dist/src/context.d.ts +32 -400
  35. package/dist/src/context.d.ts.map +1 -1
  36. package/dist/src/context.js +32 -11
  37. package/dist/src/context.js.map +1 -1
  38. package/dist/src/context.test.d.ts +2 -0
  39. package/dist/src/context.test.d.ts.map +1 -0
  40. package/dist/src/context.test.js +21 -0
  41. package/dist/src/context.test.js.map +1 -0
  42. package/dist/src/deploy/agent.d.ts +3 -2
  43. package/dist/src/deploy/agent.d.ts.map +1 -1
  44. package/dist/src/deploy/agent.js +10 -22
  45. package/dist/src/deploy/agent.js.map +1 -1
  46. package/dist/src/deploy/core.d.ts +3 -1
  47. package/dist/src/deploy/core.d.ts.map +1 -1
  48. package/dist/src/deploy/core.js +41 -90
  49. package/dist/src/deploy/core.js.map +1 -1
  50. package/dist/src/deploy/warp.d.ts.map +1 -1
  51. package/dist/src/deploy/warp.js +9 -9
  52. package/dist/src/deploy/warp.js.map +1 -1
  53. package/dist/src/send/message.d.ts +3 -3
  54. package/dist/src/send/message.d.ts.map +1 -1
  55. package/dist/src/send/message.js +13 -8
  56. package/dist/src/send/message.js.map +1 -1
  57. package/dist/src/send/transfer.d.ts +4 -4
  58. package/dist/src/send/transfer.d.ts.map +1 -1
  59. package/dist/src/send/transfer.js +22 -11
  60. package/dist/src/send/transfer.js.map +1 -1
  61. package/dist/src/status/message.d.ts +3 -3
  62. package/dist/src/status/message.d.ts.map +1 -1
  63. package/dist/src/status/message.js +14 -5
  64. package/dist/src/status/message.js.map +1 -1
  65. package/dist/src/tests/hooks.test.d.ts +2 -0
  66. package/dist/src/tests/hooks.test.d.ts.map +1 -0
  67. package/dist/src/tests/hooks.test.js +83 -0
  68. package/dist/src/tests/hooks.test.js.map +1 -0
  69. package/dist/src/utils/chains.d.ts +2 -2
  70. package/dist/src/utils/chains.d.ts.map +1 -1
  71. package/dist/src/utils/chains.js +8 -9
  72. package/dist/src/utils/chains.js.map +1 -1
  73. package/dist/src/utils/files.d.ts.map +1 -1
  74. package/dist/src/utils/files.js +5 -0
  75. package/dist/src/utils/files.js.map +1 -1
  76. package/dist/src/version.d.ts +1 -1
  77. package/dist/src/version.js +1 -1
  78. package/examples/hooks.yaml +66 -0
  79. package/package.json +5 -3
  80. package/examples/hook-config.yaml +0 -18
@@ -1,8 +1,55 @@
1
1
  import { z } from 'zod';
2
- import { ChainMap, ChainName, HookConfig, HookType, IgpHookConfig, MerkleTreeHookConfig, MultisigIsmConfig, ProtocolFeeHookConfig } from '@hyperlane-xyz/sdk';
2
+ import { ChainMap, ChainName, GasOracleContractType, HookType, HooksConfig, MultisigConfig } from '@hyperlane-xyz/sdk';
3
3
  import { Address } from '@hyperlane-xyz/utils';
4
4
  import { FileFormat } from '../utils/files.js';
5
- declare const HookConfigMapSchema: z.ZodObject<{}, "strip", z.ZodObject<{
5
+ declare const HookConfigSchema: z.ZodUnion<[z.ZodObject<{
6
+ type: z.ZodLiteral<HookType.PROTOCOL_FEE>;
7
+ owner: z.ZodString;
8
+ beneficiary: z.ZodString;
9
+ maxProtocolFee: z.ZodString;
10
+ protocolFee: z.ZodString;
11
+ }, "strip", z.ZodTypeAny, {
12
+ type: HookType.PROTOCOL_FEE;
13
+ owner: string;
14
+ beneficiary: string;
15
+ maxProtocolFee: string;
16
+ protocolFee: string;
17
+ }, {
18
+ type: HookType.PROTOCOL_FEE;
19
+ owner: string;
20
+ beneficiary: string;
21
+ maxProtocolFee: string;
22
+ protocolFee: string;
23
+ }>, z.ZodObject<{
24
+ type: z.ZodLiteral<HookType.MERKLE_TREE>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ type: HookType.MERKLE_TREE;
27
+ }, {
28
+ type: HookType.MERKLE_TREE;
29
+ }>, z.ZodObject<{
30
+ type: z.ZodLiteral<HookType.INTERCHAIN_GAS_PAYMASTER>;
31
+ owner: z.ZodString;
32
+ beneficiary: z.ZodString;
33
+ overhead: z.ZodRecord<z.ZodString, z.ZodNumber>;
34
+ gasOracleType: z.ZodRecord<z.ZodString, z.ZodLiteral<GasOracleContractType>>;
35
+ oracleKey: z.ZodString;
36
+ }, "strip", z.ZodTypeAny, {
37
+ type: HookType.INTERCHAIN_GAS_PAYMASTER;
38
+ owner: string;
39
+ beneficiary: string;
40
+ overhead: Record<string, number>;
41
+ gasOracleType: Record<string, GasOracleContractType>;
42
+ oracleKey: string;
43
+ }, {
44
+ type: HookType.INTERCHAIN_GAS_PAYMASTER;
45
+ owner: string;
46
+ beneficiary: string;
47
+ overhead: Record<string, number>;
48
+ gasOracleType: Record<string, GasOracleContractType>;
49
+ oracleKey: string;
50
+ }>, z.ZodType<any, z.ZodTypeDef, any>, z.ZodType<any, z.ZodTypeDef, any>]>;
51
+ export type HookConfig = z.infer<typeof HookConfigSchema>;
52
+ declare const HooksConfigMapSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
6
53
  required: z.ZodUnion<[z.ZodObject<{
7
54
  type: z.ZodLiteral<HookType.PROTOCOL_FEE>;
8
55
  owner: z.ZodString;
@@ -27,96 +74,28 @@ declare const HookConfigMapSchema: z.ZodObject<{}, "strip", z.ZodObject<{
27
74
  type: HookType.MERKLE_TREE;
28
75
  }, {
29
76
  type: HookType.MERKLE_TREE;
30
- }>]>;
31
- default: z.ZodUnion<[z.ZodObject<{
32
- type: z.ZodLiteral<HookType.PROTOCOL_FEE>;
33
- owner: z.ZodString;
34
- beneficiary: z.ZodString;
35
- maxProtocolFee: z.ZodString;
36
- protocolFee: z.ZodString;
37
- }, "strip", z.ZodTypeAny, {
38
- type: HookType.PROTOCOL_FEE;
39
- owner: string;
40
- beneficiary: string;
41
- maxProtocolFee: string;
42
- protocolFee: string;
43
- }, {
44
- type: HookType.PROTOCOL_FEE;
45
- owner: string;
46
- beneficiary: string;
47
- maxProtocolFee: string;
48
- protocolFee: string;
49
77
  }>, z.ZodObject<{
50
- type: z.ZodLiteral<HookType.MERKLE_TREE>;
51
- }, "strip", z.ZodTypeAny, {
52
- type: HookType.MERKLE_TREE;
53
- }, {
54
- type: HookType.MERKLE_TREE;
55
- }>]>;
56
- }, "strip", z.ZodTypeAny, {
57
- required: {
58
- type: HookType.PROTOCOL_FEE;
59
- owner: string;
60
- beneficiary: string;
61
- maxProtocolFee: string;
62
- protocolFee: string;
63
- } | {
64
- type: HookType.MERKLE_TREE;
65
- };
66
- default: {
67
- type: HookType.PROTOCOL_FEE;
68
- owner: string;
69
- beneficiary: string;
70
- maxProtocolFee: string;
71
- protocolFee: string;
72
- } | {
73
- type: HookType.MERKLE_TREE;
74
- };
75
- }, {
76
- required: {
77
- type: HookType.PROTOCOL_FEE;
78
- owner: string;
79
- beneficiary: string;
80
- maxProtocolFee: string;
81
- protocolFee: string;
82
- } | {
83
- type: HookType.MERKLE_TREE;
84
- };
85
- default: {
86
- type: HookType.PROTOCOL_FEE;
87
- owner: string;
88
- beneficiary: string;
89
- maxProtocolFee: string;
90
- protocolFee: string;
91
- } | {
92
- type: HookType.MERKLE_TREE;
93
- };
94
- }>, z.objectOutputType<{}, z.ZodObject<{
95
- required: z.ZodUnion<[z.ZodObject<{
96
- type: z.ZodLiteral<HookType.PROTOCOL_FEE>;
78
+ type: z.ZodLiteral<HookType.INTERCHAIN_GAS_PAYMASTER>;
97
79
  owner: z.ZodString;
98
80
  beneficiary: z.ZodString;
99
- maxProtocolFee: z.ZodString;
100
- protocolFee: z.ZodString;
81
+ overhead: z.ZodRecord<z.ZodString, z.ZodNumber>;
82
+ gasOracleType: z.ZodRecord<z.ZodString, z.ZodLiteral<GasOracleContractType>>;
83
+ oracleKey: z.ZodString;
101
84
  }, "strip", z.ZodTypeAny, {
102
- type: HookType.PROTOCOL_FEE;
85
+ type: HookType.INTERCHAIN_GAS_PAYMASTER;
103
86
  owner: string;
104
87
  beneficiary: string;
105
- maxProtocolFee: string;
106
- protocolFee: string;
88
+ overhead: Record<string, number>;
89
+ gasOracleType: Record<string, GasOracleContractType>;
90
+ oracleKey: string;
107
91
  }, {
108
- type: HookType.PROTOCOL_FEE;
92
+ type: HookType.INTERCHAIN_GAS_PAYMASTER;
109
93
  owner: string;
110
94
  beneficiary: string;
111
- maxProtocolFee: string;
112
- protocolFee: string;
113
- }>, z.ZodObject<{
114
- type: z.ZodLiteral<HookType.MERKLE_TREE>;
115
- }, "strip", z.ZodTypeAny, {
116
- type: HookType.MERKLE_TREE;
117
- }, {
118
- type: HookType.MERKLE_TREE;
119
- }>]>;
95
+ overhead: Record<string, number>;
96
+ gasOracleType: Record<string, GasOracleContractType>;
97
+ oracleKey: string;
98
+ }>, z.ZodType<any, z.ZodTypeDef, any>, z.ZodType<any, z.ZodTypeDef, any>]>;
120
99
  default: z.ZodUnion<[z.ZodObject<{
121
100
  type: z.ZodLiteral<HookType.PROTOCOL_FEE>;
122
101
  owner: z.ZodString;
@@ -141,149 +120,48 @@ declare const HookConfigMapSchema: z.ZodObject<{}, "strip", z.ZodObject<{
141
120
  type: HookType.MERKLE_TREE;
142
121
  }, {
143
122
  type: HookType.MERKLE_TREE;
144
- }>]>;
145
- }, "strip", z.ZodTypeAny, {
146
- required: {
147
- type: HookType.PROTOCOL_FEE;
148
- owner: string;
149
- beneficiary: string;
150
- maxProtocolFee: string;
151
- protocolFee: string;
152
- } | {
153
- type: HookType.MERKLE_TREE;
154
- };
155
- default: {
156
- type: HookType.PROTOCOL_FEE;
157
- owner: string;
158
- beneficiary: string;
159
- maxProtocolFee: string;
160
- protocolFee: string;
161
- } | {
162
- type: HookType.MERKLE_TREE;
163
- };
164
- }, {
165
- required: {
166
- type: HookType.PROTOCOL_FEE;
167
- owner: string;
168
- beneficiary: string;
169
- maxProtocolFee: string;
170
- protocolFee: string;
171
- } | {
172
- type: HookType.MERKLE_TREE;
173
- };
174
- default: {
175
- type: HookType.PROTOCOL_FEE;
176
- owner: string;
177
- beneficiary: string;
178
- maxProtocolFee: string;
179
- protocolFee: string;
180
- } | {
181
- type: HookType.MERKLE_TREE;
182
- };
183
- }>, "strip">, z.objectInputType<{}, z.ZodObject<{
184
- required: z.ZodUnion<[z.ZodObject<{
185
- type: z.ZodLiteral<HookType.PROTOCOL_FEE>;
186
- owner: z.ZodString;
187
- beneficiary: z.ZodString;
188
- maxProtocolFee: z.ZodString;
189
- protocolFee: z.ZodString;
190
- }, "strip", z.ZodTypeAny, {
191
- type: HookType.PROTOCOL_FEE;
192
- owner: string;
193
- beneficiary: string;
194
- maxProtocolFee: string;
195
- protocolFee: string;
196
- }, {
197
- type: HookType.PROTOCOL_FEE;
198
- owner: string;
199
- beneficiary: string;
200
- maxProtocolFee: string;
201
- protocolFee: string;
202
123
  }>, z.ZodObject<{
203
- type: z.ZodLiteral<HookType.MERKLE_TREE>;
204
- }, "strip", z.ZodTypeAny, {
205
- type: HookType.MERKLE_TREE;
206
- }, {
207
- type: HookType.MERKLE_TREE;
208
- }>]>;
209
- default: z.ZodUnion<[z.ZodObject<{
210
- type: z.ZodLiteral<HookType.PROTOCOL_FEE>;
124
+ type: z.ZodLiteral<HookType.INTERCHAIN_GAS_PAYMASTER>;
211
125
  owner: z.ZodString;
212
126
  beneficiary: z.ZodString;
213
- maxProtocolFee: z.ZodString;
214
- protocolFee: z.ZodString;
127
+ overhead: z.ZodRecord<z.ZodString, z.ZodNumber>;
128
+ gasOracleType: z.ZodRecord<z.ZodString, z.ZodLiteral<GasOracleContractType>>;
129
+ oracleKey: z.ZodString;
215
130
  }, "strip", z.ZodTypeAny, {
216
- type: HookType.PROTOCOL_FEE;
131
+ type: HookType.INTERCHAIN_GAS_PAYMASTER;
217
132
  owner: string;
218
133
  beneficiary: string;
219
- maxProtocolFee: string;
220
- protocolFee: string;
134
+ overhead: Record<string, number>;
135
+ gasOracleType: Record<string, GasOracleContractType>;
136
+ oracleKey: string;
221
137
  }, {
222
- type: HookType.PROTOCOL_FEE;
138
+ type: HookType.INTERCHAIN_GAS_PAYMASTER;
223
139
  owner: string;
224
140
  beneficiary: string;
225
- maxProtocolFee: string;
226
- protocolFee: string;
227
- }>, z.ZodObject<{
228
- type: z.ZodLiteral<HookType.MERKLE_TREE>;
229
- }, "strip", z.ZodTypeAny, {
230
- type: HookType.MERKLE_TREE;
231
- }, {
232
- type: HookType.MERKLE_TREE;
233
- }>]>;
141
+ overhead: Record<string, number>;
142
+ gasOracleType: Record<string, GasOracleContractType>;
143
+ oracleKey: string;
144
+ }>, z.ZodType<any, z.ZodTypeDef, any>, z.ZodType<any, z.ZodTypeDef, any>]>;
234
145
  }, "strip", z.ZodTypeAny, {
235
- required: {
236
- type: HookType.PROTOCOL_FEE;
237
- owner: string;
238
- beneficiary: string;
239
- maxProtocolFee: string;
240
- protocolFee: string;
241
- } | {
242
- type: HookType.MERKLE_TREE;
243
- };
244
- default: {
245
- type: HookType.PROTOCOL_FEE;
246
- owner: string;
247
- beneficiary: string;
248
- maxProtocolFee: string;
249
- protocolFee: string;
250
- } | {
251
- type: HookType.MERKLE_TREE;
252
- };
146
+ required?: any;
147
+ default?: any;
253
148
  }, {
254
- required: {
255
- type: HookType.PROTOCOL_FEE;
256
- owner: string;
257
- beneficiary: string;
258
- maxProtocolFee: string;
259
- protocolFee: string;
260
- } | {
261
- type: HookType.MERKLE_TREE;
262
- };
263
- default: {
264
- type: HookType.PROTOCOL_FEE;
265
- owner: string;
266
- beneficiary: string;
267
- maxProtocolFee: string;
268
- protocolFee: string;
269
- } | {
270
- type: HookType.MERKLE_TREE;
271
- };
272
- }>, "strip">>;
273
- export type HookConfigMap = z.infer<typeof HookConfigMapSchema>;
149
+ required?: any;
150
+ default?: any;
151
+ }>>;
152
+ export type HooksConfigMap = z.infer<typeof HooksConfigMapSchema>;
274
153
  export declare function isValidHookConfigMap(config: any): boolean;
275
- export declare function presetHookConfigs(owner: Address, local: ChainName, destinationChains: ChainName[], ismConfig?: MultisigIsmConfig): {
276
- required: ProtocolFeeHookConfig;
277
- default: {
278
- type: HookType;
279
- hooks: (MerkleTreeHookConfig | IgpHookConfig)[];
280
- };
281
- };
282
- export declare function readHookConfig(filePath: string): ChainMap<HookConfig> | undefined;
283
- export declare function createHookConfig({ format, outPath, chainConfigPath, }: {
154
+ export declare function presetHookConfigs(owner: Address, local: ChainName, destinationChains: ChainName[], multisigConfig?: MultisigConfig): HooksConfig;
155
+ export declare function readHooksConfigMap(filePath: string): ChainMap<HooksConfig> | undefined;
156
+ export declare function createHooksConfigMap({ format, outPath, chainConfigPath, }: {
284
157
  format: FileFormat;
285
158
  outPath: string;
286
159
  chainConfigPath: string;
287
160
  }): Promise<void>;
161
+ export declare function createHookConfig(chain: ChainName, remotes: ChainName[]): Promise<HookConfig>;
162
+ export declare function createProtocolFeeConfig(chain: ChainName): Promise<HookConfig>;
163
+ export declare function createIGPConfig(remotes: ChainName[]): Promise<HookConfig>;
164
+ export declare function createAggregationConfig(chain: ChainName, remotes: ChainName[]): Promise<HookConfig>;
165
+ export declare function createRoutingConfig(origin: ChainName, remotes: ChainName[]): Promise<HookConfig>;
288
166
  export {};
289
167
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/config/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,QAAQ,EACR,SAAS,EAET,UAAU,EACV,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EAGtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,OAAO,EAIR,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,UAAU,EAAmC,MAAM,mBAAmB,CAAC;AAsBhF,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAAsC,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,WAE/C;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,SAAS,EAChB,iBAAiB,EAAE,SAAS,EAAE,EAC9B,SAAS,CAAC,EAAE,iBAAiB;;;;;;EAqD9B;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,oCAuB9C;AAKD,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EACN,OAAO,EACP,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB,iBAgFA"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/config/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,QAAQ,EACR,SAAS,EACT,qBAAqB,EACrB,QAAQ,EACR,WAAW,EACX,cAAc,EAIf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,OAAO,EAIR,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,UAAU,EAAmC,MAAM,mBAAmB,CAAC;AAwChF,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0EAMpB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAM1D,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA8B,CAAC;AACzD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,WAE/C;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,SAAS,EAChB,iBAAiB,EAAE,SAAS,EAAE,EAC9B,cAAc,CAAC,EAAE,cAAc,GAC9B,WAAW,CAuDb;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,qCAoBlD;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,OAAO,EACP,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB,iBAyBA;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAAE,GACnB,OAAO,CAAC,UAAU,CAAC,CAmDrB;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,UAAU,CAAC,CA6CrB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,SAAS,EAAE,GACnB,OAAO,CAAC,UAAU,CAAC,CA2CrB;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAAE,GACnB,OAAO,CAAC,UAAU,CAAC,CAgBrB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,SAAS,EAAE,GACnB,OAAO,CAAC,UAAU,CAAC,CAmBrB"}