@etherkit/viem-tx-tracker 0.0.2 → 0.0.4
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 +3 -3
- package/dist/TrackedWalletClient.d.ts +42 -6
- package/dist/TrackedWalletClient.d.ts.map +1 -1
- package/dist/TrackedWalletClient.js +235 -220
- package/dist/TrackedWalletClient.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +61 -96
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TrackedWalletClient.ts +455 -373
- package/src/index.ts +5 -12
- package/src/types.ts +68 -106
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Abi, Account,
|
|
1
|
+
import type { Abi, Account, Chain, ContractFunctionArgs, ContractFunctionName, Hash, PublicClient, SendTransactionParameters, TransactionReceipt, TransactionSerialized, Transport, WalletClient, WriteContractParameters } from 'viem';
|
|
2
2
|
/**
|
|
3
3
|
* Block tags that can be used to specify nonce fetching strategy
|
|
4
4
|
*/
|
|
@@ -10,88 +10,57 @@ export type BlockTag = 'latest' | 'pending' | 'earliest' | 'safe' | 'finalized';
|
|
|
10
10
|
* - undefined: fetch nonce using 'pending' (default)
|
|
11
11
|
*/
|
|
12
12
|
export type NonceOption = number | BlockTag;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
13
|
+
export type ExpectedUpdate = {
|
|
14
|
+
address: `0x${string}`;
|
|
15
|
+
event: {
|
|
16
|
+
topics: `0x${string}`[];
|
|
17
|
+
};
|
|
18
|
+
} | {
|
|
19
|
+
address: `0x${string}`;
|
|
20
|
+
call: {
|
|
21
|
+
data: `0x${string}`;
|
|
22
|
+
result: `0x${string}`;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
22
25
|
/**
|
|
23
26
|
* Metadata that can be attached to a transaction for tracking purposes.
|
|
24
27
|
* All fields are optional and extensible.
|
|
25
28
|
*/
|
|
26
29
|
export interface TransactionMetadata {
|
|
27
|
-
/**
|
|
28
|
-
* Optional custom ID - if provided, used instead of tx hash for tracking.
|
|
29
|
-
* Useful for correlating transactions with business logic (e.g., order IDs).
|
|
30
|
-
*/
|
|
31
30
|
id?: string;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
*/
|
|
35
|
-
title?: string;
|
|
36
|
-
/**
|
|
37
|
-
* Detailed description of what the transaction does.
|
|
38
|
-
*/
|
|
31
|
+
name?: string;
|
|
32
|
+
args?: any[];
|
|
39
33
|
description?: string;
|
|
40
|
-
|
|
41
|
-
* Expected event signature/filter for success detection.
|
|
42
|
-
* Even if tx hash changes due to replacement, we can detect success by watching for this event.
|
|
43
|
-
*/
|
|
44
|
-
expectedEvent?: ExpectedEvent;
|
|
45
|
-
/**
|
|
46
|
-
* Extensible: user can add any additional fields.
|
|
47
|
-
*/
|
|
34
|
+
expectedUpdate?: ExpectedUpdate;
|
|
48
35
|
[key: string]: unknown;
|
|
49
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Conditional type that makes metadata required or optional based on TMetadata.
|
|
39
|
+
* If TMetadata includes undefined (e.g., `MyMeta | undefined`), metadata is optional.
|
|
40
|
+
* Otherwise, metadata is required.
|
|
41
|
+
*/
|
|
42
|
+
export type MetadataField<TMetadata> = undefined extends TMetadata ? {
|
|
43
|
+
metadata?: TMetadata;
|
|
44
|
+
} : {
|
|
45
|
+
metadata: TMetadata;
|
|
46
|
+
};
|
|
50
47
|
/**
|
|
51
48
|
* A tracked transaction record with all relevant information for tracking.
|
|
49
|
+
* The metadata field type matches what was provided to the TrackedWalletClient.
|
|
52
50
|
*/
|
|
53
|
-
export interface TrackedTransaction<
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
*/
|
|
61
|
-
txHash: Hash;
|
|
62
|
-
/**
|
|
63
|
-
* Sender address.
|
|
64
|
-
*/
|
|
65
|
-
from: Address;
|
|
66
|
-
/**
|
|
67
|
-
* Transaction nonce (actual nonce from fetched tx, or intended if fetch failed).
|
|
68
|
-
*/
|
|
69
|
-
nonce: number;
|
|
70
|
-
/**
|
|
71
|
-
* Chain ID.
|
|
72
|
-
*/
|
|
73
|
-
chainId: number;
|
|
74
|
-
/**
|
|
75
|
-
* The full metadata provided by the caller.
|
|
76
|
-
*/
|
|
77
|
-
metadata: M;
|
|
78
|
-
/**
|
|
79
|
-
* Timestamp when the transaction was initiated (ms since epoch).
|
|
80
|
-
*/
|
|
81
|
-
initiatedAt: number;
|
|
82
|
-
/**
|
|
83
|
-
* The original transaction request data.
|
|
84
|
-
*/
|
|
85
|
-
request: unknown;
|
|
51
|
+
export interface TrackedTransaction<TMetadata> {
|
|
52
|
+
chainId?: number;
|
|
53
|
+
readonly hash: `0x${string}`;
|
|
54
|
+
readonly from: `0x${string}`;
|
|
55
|
+
nonce?: number;
|
|
56
|
+
readonly broadcastTimestampMs: number;
|
|
57
|
+
readonly metadata: TMetadata;
|
|
86
58
|
}
|
|
87
59
|
/**
|
|
88
|
-
* Extended WriteContractParameters with
|
|
60
|
+
* Extended WriteContractParameters with metadata and flexible nonce.
|
|
61
|
+
* Metadata is required unless TMetadata includes undefined.
|
|
89
62
|
*/
|
|
90
|
-
export type TrackedWriteContractParameters<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'> = ContractFunctionName<TAbi, 'nonpayable' | 'payable'>, TArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>, TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined, TChainOverride extends Chain | undefined = Chain | undefined> = Omit<WriteContractParameters<TAbi, TFunctionName, TArgs, TChain, TAccount, TChainOverride>, 'nonce'> & {
|
|
91
|
-
/**
|
|
92
|
-
* Optional metadata to attach to the transaction for tracking.
|
|
93
|
-
*/
|
|
94
|
-
metadata?: TransactionMetadata;
|
|
63
|
+
export type TrackedWriteContractParameters<TMetadata, TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'> = ContractFunctionName<TAbi, 'nonpayable' | 'payable'>, TArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>, TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined, TChainOverride extends Chain | undefined = Chain | undefined> = Omit<WriteContractParameters<TAbi, TFunctionName, TArgs, TChain, TAccount, TChainOverride>, 'nonce'> & {
|
|
95
64
|
/**
|
|
96
65
|
* Nonce option:
|
|
97
66
|
* - number: exact nonce to use
|
|
@@ -99,15 +68,12 @@ export type TrackedWriteContractParameters<TAbi extends Abi | readonly unknown[]
|
|
|
99
68
|
* - undefined: fetch nonce using 'pending' (default)
|
|
100
69
|
*/
|
|
101
70
|
nonce?: NonceOption;
|
|
102
|
-
}
|
|
71
|
+
} & MetadataField<TMetadata>;
|
|
103
72
|
/**
|
|
104
|
-
* Extended SendTransactionParameters with
|
|
73
|
+
* Extended SendTransactionParameters with metadata and flexible nonce.
|
|
74
|
+
* Metadata is required unless TMetadata includes undefined.
|
|
105
75
|
*/
|
|
106
|
-
export type TrackedSendTransactionParameters<TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined, TChainOverride extends Chain | undefined = Chain | undefined> = Omit<SendTransactionParameters<TChain, TAccount, TChainOverride>, 'nonce'> & {
|
|
107
|
-
/**
|
|
108
|
-
* Optional metadata to attach to the transaction for tracking.
|
|
109
|
-
*/
|
|
110
|
-
metadata?: TransactionMetadata;
|
|
76
|
+
export type TrackedSendTransactionParameters<TMetadata, TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined, TChainOverride extends Chain | undefined = Chain | undefined> = Omit<SendTransactionParameters<TChain, TAccount, TChainOverride>, 'nonce'> & {
|
|
111
77
|
/**
|
|
112
78
|
* Nonce option:
|
|
113
79
|
* - number: exact nonce to use
|
|
@@ -115,25 +81,24 @@ export type TrackedSendTransactionParameters<TChain extends Chain | undefined =
|
|
|
115
81
|
* - undefined: fetch nonce using 'pending' (default)
|
|
116
82
|
*/
|
|
117
83
|
nonce?: NonceOption;
|
|
118
|
-
}
|
|
84
|
+
} & MetadataField<TMetadata>;
|
|
119
85
|
/**
|
|
120
|
-
* Parameters for sendRawTransaction with
|
|
86
|
+
* Parameters for sendRawTransaction with metadata.
|
|
121
87
|
* The serialized transaction already contains from/nonce which will be decoded.
|
|
88
|
+
* Metadata is required unless TMetadata includes undefined.
|
|
122
89
|
*/
|
|
123
|
-
export
|
|
90
|
+
export type TrackedRawTransactionParameters<TMetadata> = {
|
|
124
91
|
/**
|
|
125
92
|
* The RLP-encoded signed transaction.
|
|
126
93
|
*/
|
|
127
94
|
serializedTransaction: TransactionSerialized;
|
|
128
|
-
|
|
129
|
-
* Optional metadata to attach to the transaction for tracking.
|
|
130
|
-
*/
|
|
131
|
-
metadata?: TransactionMetadata;
|
|
132
|
-
}
|
|
95
|
+
} & MetadataField<TMetadata>;
|
|
133
96
|
/**
|
|
134
97
|
* A wallet client wrapper that tracks transactions with metadata.
|
|
98
|
+
* TMetadata is the first type parameter and is mandatory - it determines
|
|
99
|
+
* whether metadata is required or optional on transaction calls.
|
|
135
100
|
*/
|
|
136
|
-
export interface TrackedWalletClient<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined> {
|
|
101
|
+
export interface TrackedWalletClient<TMetadata, TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined> {
|
|
137
102
|
/**
|
|
138
103
|
* The underlying wallet client.
|
|
139
104
|
*/
|
|
@@ -143,47 +108,47 @@ export interface TrackedWalletClient<TTransport extends Transport = Transport, T
|
|
|
143
108
|
*/
|
|
144
109
|
readonly publicClient: PublicClient;
|
|
145
110
|
/**
|
|
146
|
-
* Write to a contract with
|
|
111
|
+
* Write to a contract with metadata tracking.
|
|
147
112
|
* Returns immediately after broadcast with the transaction hash.
|
|
148
113
|
*/
|
|
149
|
-
writeContract<const TAbi extends Abi | readonly unknown[], TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>, TArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>, TChainOverride extends Chain | undefined = undefined>(args: TrackedWriteContractParameters<TAbi, TFunctionName, TArgs, TChain, TAccount, TChainOverride>): Promise<Hash>;
|
|
114
|
+
writeContract<const TAbi extends Abi | readonly unknown[], TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>, TArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>, TChainOverride extends Chain | undefined = undefined>(args: TrackedWriteContractParameters<TMetadata, TAbi, TFunctionName, TArgs, TChain, TAccount, TChainOverride>): Promise<Hash>;
|
|
150
115
|
/**
|
|
151
|
-
* Send a transaction with
|
|
116
|
+
* Send a transaction with metadata tracking.
|
|
152
117
|
* Returns immediately after broadcast with the transaction hash.
|
|
153
118
|
*/
|
|
154
|
-
sendTransaction<TChainOverride extends Chain | undefined = undefined>(args: TrackedSendTransactionParameters<TChain, TAccount, TChainOverride>): Promise<Hash>;
|
|
119
|
+
sendTransaction<TChainOverride extends Chain | undefined = undefined>(args: TrackedSendTransactionParameters<TMetadata, TChain, TAccount, TChainOverride>): Promise<Hash>;
|
|
155
120
|
/**
|
|
156
|
-
* Send a signed raw transaction with
|
|
121
|
+
* Send a signed raw transaction with metadata tracking.
|
|
157
122
|
* The nonce and from address are decoded from the serialized transaction.
|
|
158
123
|
* Returns immediately after broadcast with the transaction hash.
|
|
159
124
|
*/
|
|
160
|
-
sendRawTransaction(args: TrackedRawTransactionParameters): Promise<Hash>;
|
|
125
|
+
sendRawTransaction(args: TrackedRawTransactionParameters<TMetadata>): Promise<Hash>;
|
|
161
126
|
/**
|
|
162
127
|
* Write to a contract and wait for confirmation.
|
|
163
128
|
* Returns the transaction receipt after the transaction is confirmed.
|
|
164
129
|
*/
|
|
165
|
-
writeContractSync<const TAbi extends Abi | readonly unknown[], TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>, TArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>, TChainOverride extends Chain | undefined = undefined>(args: TrackedWriteContractParameters<TAbi, TFunctionName, TArgs, TChain, TAccount, TChainOverride>): Promise<TransactionReceipt>;
|
|
130
|
+
writeContractSync<const TAbi extends Abi | readonly unknown[], TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>, TArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>, TChainOverride extends Chain | undefined = undefined>(args: TrackedWriteContractParameters<TMetadata, TAbi, TFunctionName, TArgs, TChain, TAccount, TChainOverride>): Promise<TransactionReceipt>;
|
|
166
131
|
/**
|
|
167
132
|
* Send a transaction and wait for confirmation.
|
|
168
133
|
* Returns the transaction receipt after the transaction is confirmed.
|
|
169
134
|
*/
|
|
170
|
-
sendTransactionSync<TChainOverride extends Chain | undefined = undefined>(args: TrackedSendTransactionParameters<TChain, TAccount, TChainOverride>): Promise<TransactionReceipt>;
|
|
135
|
+
sendTransactionSync<TChainOverride extends Chain | undefined = undefined>(args: TrackedSendTransactionParameters<TMetadata, TChain, TAccount, TChainOverride>): Promise<TransactionReceipt>;
|
|
171
136
|
/**
|
|
172
137
|
* Send a signed raw transaction and wait for confirmation.
|
|
173
138
|
* Returns the transaction receipt after the transaction is confirmed.
|
|
174
139
|
*/
|
|
175
|
-
sendRawTransactionSync(args: TrackedRawTransactionParameters): Promise<TransactionReceipt>;
|
|
140
|
+
sendRawTransactionSync(args: TrackedRawTransactionParameters<TMetadata>): Promise<TransactionReceipt>;
|
|
176
141
|
/**
|
|
177
142
|
* Subscribe to transaction broadcast events.
|
|
178
143
|
* Called immediately after a transaction is successfully broadcast.
|
|
179
|
-
* @param listener - Callback function receiving TrackedTransaction
|
|
144
|
+
* @param listener - Callback function receiving TrackedTransaction with TMetadata
|
|
180
145
|
* @returns Unsubscribe function
|
|
181
146
|
*/
|
|
182
|
-
onTransactionBroadcasted(listener: (event: TrackedTransaction) => void): () => void;
|
|
147
|
+
onTransactionBroadcasted(listener: (event: TrackedTransaction<TMetadata>) => void): () => void;
|
|
183
148
|
/**
|
|
184
149
|
* Unsubscribe from transaction broadcast events.
|
|
185
150
|
* @param listener - The same listener function passed to onTransactionBroadcasted
|
|
186
151
|
*/
|
|
187
|
-
offTransactionBroadcasted(listener: (event: TrackedTransaction) => void): void;
|
|
152
|
+
offTransactionBroadcasted(listener: (event: TrackedTransaction<TMetadata>) => void): void;
|
|
188
153
|
}
|
|
189
154
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,GAAG,EACH,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,GAAG,EACH,OAAO,EAEP,KAAK,EACL,oBAAoB,EACpB,oBAAoB,EACpB,IAAI,EACJ,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,YAAY,EACZ,uBAAuB,EACvB,MAAM,MAAM,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5C,MAAM,MAAM,cAAc,GACvB;IACA,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE;QAAC,MAAM,EAAE,KAAK,MAAM,EAAE,EAAE,CAAA;KAAC,CAAC;CAChC,GACD;IACA,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE;QAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;KAAC,CAAC;CAClD,CAAC;AAEL;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,SAAS,IAAI,SAAS,SAAS,SAAS,GAC/D;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAC,GACtB;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAC,CAAC;AAEzB;;;GAGG;AACH,MAAM,WAAW,kBAAkB,CAAC,SAAS;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,8BAA8B,CACzC,SAAS,EACT,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,GAAG,GAAG,EAC3C,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,GACzE,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,EACrD,KAAK,SAAS,oBAAoB,CACjC,IAAI,EACJ,YAAY,GAAG,SAAS,EACxB,aAAa,CACb,GAAG,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,aAAa,CAAC,EACvE,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IACzD,IAAI,CACP,uBAAuB,CACtB,IAAI,EACJ,aAAa,EACb,KAAK,EACL,MAAM,EACN,QAAQ,EACR,cAAc,CACd,EACD,OAAO,CACP,GAAG;IACH;;;;;OAKG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAE7B;;;GAGG;AACH,MAAM,MAAM,gCAAgC,CAC3C,SAAS,EACT,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IACzD,IAAI,CACP,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,EAC3D,OAAO,CACP,GAAG;IACH;;;;;OAKG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAE7B;;;;GAIG;AACH,MAAM,MAAM,+BAA+B,CAAC,SAAS,IAAI;IACxD;;OAEG;IACH,qBAAqB,EAAE,qBAAqB,CAAC;CAC7C,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAE7B;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CACnC,SAAS,EACT,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS;IAE1D;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAElE;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAMpC;;;OAGG;IACH,aAAa,CACZ,KAAK,CAAC,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EAC3C,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,EAC1E,KAAK,SAAS,oBAAoB,CACjC,IAAI,EACJ,YAAY,GAAG,SAAS,EACxB,aAAa,CACb,EACD,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EAEpD,IAAI,EAAE,8BAA8B,CACnC,SAAS,EACT,IAAI,EACJ,aAAa,EACb,KAAK,EACL,MAAM,EACN,QAAQ,EACR,cAAc,CACd,GACC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;OAGG;IACH,eAAe,CAAC,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EACnE,IAAI,EAAE,gCAAgC,CACrC,SAAS,EACT,MAAM,EACN,QAAQ,EACR,cAAc,CACd,GACC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;OAIG;IACH,kBAAkB,CACjB,IAAI,EAAE,+BAA+B,CAAC,SAAS,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;IAMjB;;;OAGG;IACH,iBAAiB,CAChB,KAAK,CAAC,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EAC3C,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,EAC1E,KAAK,SAAS,oBAAoB,CACjC,IAAI,EACJ,YAAY,GAAG,SAAS,EACxB,aAAa,CACb,EACD,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EAEpD,IAAI,EAAE,8BAA8B,CACnC,SAAS,EACT,IAAI,EACJ,aAAa,EACb,KAAK,EACL,MAAM,EACN,QAAQ,EACR,cAAc,CACd,GACC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B;;;OAGG;IACH,mBAAmB,CAAC,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EACvE,IAAI,EAAE,gCAAgC,CACrC,SAAS,EACT,MAAM,EACN,QAAQ,EACR,cAAc,CACd,GACC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B;;;OAGG;IACH,sBAAsB,CACrB,IAAI,EAAE,+BAA+B,CAAC,SAAS,CAAC,GAC9C,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAM/B;;;;;OAKG;IACH,wBAAwB,CACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,KAAK,IAAI,GACtD,MAAM,IAAI,CAAC;IAEd;;;OAGG;IACH,yBAAyB,CACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,KAAK,IAAI,GACtD,IAAI,CAAC;CACR"}
|