-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinheritance-graph.dot
More file actions
284 lines (186 loc) · 130 KB
/
inheritance-graph.dot
File metadata and controls
284 lines (186 loc) · 130 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
digraph "" {
DSTest[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>DSTest</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> failed()</TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> fail()</TD></TR><TR><TD align="left"> hasHEVMContext()</TD></TR><TR><TD align="left"> assertTrue(bool)</TD></TR><TR><TD align="left"> assertTrue(bool,string)</TD></TR><TR><TD align="left"> assertEq(address,address)</TD></TR><TR><TD align="left"> assertEq(address,address,string)</TD></TR><TR><TD align="left"> assertEq(bytes32,bytes32)</TD></TR><TR><TD align="left"> assertEq(bytes32,bytes32,string)</TD></TR><TR><TD align="left"> assertEq32(bytes32,bytes32)</TD></TR><TR><TD align="left"> assertEq32(bytes32,bytes32,string)</TD></TR><TR><TD align="left"> assertEq(int256,int256)</TD></TR><TR><TD align="left"> assertEq(int256,int256,string)</TD></TR><TR><TD align="left"> assertEq(uint256,uint256)</TD></TR><TR><TD align="left"> assertEq(uint256,uint256,string)</TD></TR><TR><TD align="left"> assertEqDecimal(int256,int256,uint256)</TD></TR><TR><TD align="left"> assertEqDecimal(int256,int256,uint256,string)</TD></TR><TR><TD align="left"> assertEqDecimal(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> assertEqDecimal(uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> assertGt(uint256,uint256)</TD></TR><TR><TD align="left"> assertGt(uint256,uint256,string)</TD></TR><TR><TD align="left"> assertGt(int256,int256)</TD></TR><TR><TD align="left"> assertGt(int256,int256,string)</TD></TR><TR><TD align="left"> assertGtDecimal(int256,int256,uint256)</TD></TR><TR><TD align="left"> assertGtDecimal(int256,int256,uint256,string)</TD></TR><TR><TD align="left"> assertGtDecimal(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> assertGtDecimal(uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> assertGe(uint256,uint256)</TD></TR><TR><TD align="left"> assertGe(uint256,uint256,string)</TD></TR><TR><TD align="left"> assertGe(int256,int256)</TD></TR><TR><TD align="left"> assertGe(int256,int256,string)</TD></TR><TR><TD align="left"> assertGeDecimal(int256,int256,uint256)</TD></TR><TR><TD align="left"> assertGeDecimal(int256,int256,uint256,string)</TD></TR><TR><TD align="left"> assertGeDecimal(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> assertGeDecimal(uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> assertLt(uint256,uint256)</TD></TR><TR><TD align="left"> assertLt(uint256,uint256,string)</TD></TR><TR><TD align="left"> assertLt(int256,int256)</TD></TR><TR><TD align="left"> assertLt(int256,int256,string)</TD></TR><TR><TD align="left"> assertLtDecimal(int256,int256,uint256)</TD></TR><TR><TD align="left"> assertLtDecimal(int256,int256,uint256,string)</TD></TR><TR><TD align="left"> assertLtDecimal(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> assertLtDecimal(uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> assertLe(uint256,uint256)</TD></TR><TR><TD align="left"> assertLe(uint256,uint256,string)</TD></TR><TR><TD align="left"> assertLe(int256,int256)</TD></TR><TR><TD align="left"> assertLe(int256,int256,string)</TD></TR><TR><TD align="left"> assertLeDecimal(int256,int256,uint256)</TD></TR><TR><TD align="left"> assertLeDecimal(int256,int256,uint256,string)</TD></TR><TR><TD align="left"> assertLeDecimal(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> assertLeDecimal(uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> assertEq(string,string)</TD></TR><TR><TD align="left"> assertEq(string,string,string)</TD></TR><TR><TD align="left"> checkEq0(bytes,bytes)</TD></TR><TR><TD align="left"> assertEq0(bytes,bytes)</TD></TR><TR><TD align="left"> assertEq0(bytes,bytes,string)</TD></TR><TR><TD align="left"><I>Modifiers:</I></TD></TR><TR><TD align="left"> mayRevert()</TD></TR><TR><TD align="left"> testopts(string)</TD></TR><TR><TD align="left"> logs_gas()</TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> IS_TEST</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> _failed</TD></TR><TR><TD align="left"> HEVM_ADDRESS</TD></TR></TABLE> >];
CommonBase[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>CommonBase</B></TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> VM_ADDRESS</TD></TR><TR><TD align="left"> CONSOLE</TD></TR><TR><TD align="left"> DEFAULT_SENDER</TD></TR><TR><TD align="left"> DEFAULT_TEST_CONTRACT</TD></TR><TR><TD align="left"> MULTICALL3_ADDRESS</TD></TR><TR><TD align="left"> UINT256_MAX</TD></TR><TR><TD align="left"> vm<font color="blue" POINT-SIZE="10"> (Vm)</font></TD></TR><TR><TD align="left"> stdstore</TD></TR></TABLE> >];
TestBase -> CommonBase;
TestBase[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestBase</B></TD></TR></TABLE> >];
ScriptBase -> CommonBase;
ScriptBase[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ScriptBase</B></TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> CREATE2_FACTORY</TD></TR><TR><TD align="left"> vmSafe<font color="blue" POINT-SIZE="10"> (VmSafe)</font></TD></TR></TABLE> >];
Script -> StdChains [ label="1" ];
Script -> StdCheatsSafe [ label="2" ];
Script -> StdUtils [ label="3" ];
Script -> ScriptBase [ label="4" ];
Script[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Script</B></TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> IS_SCRIPT</TD></TR></TABLE> >];
StdAssertions -> DSTest;
StdAssertions[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>StdAssertions</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> fail(string)</TD></TR><TR><TD align="left"> assertFalse(bool)</TD></TR><TR><TD align="left"> assertFalse(bool,string)</TD></TR><TR><TD align="left"> assertEq(bool,bool)</TD></TR><TR><TD align="left"> assertEq(bool,bool,string)</TD></TR><TR><TD align="left"> assertEq(bytes,bytes)</TD></TR><TR><TD align="left"> assertEq(bytes,bytes,string)</TD></TR><TR><TD align="left"> assertEq(uint256[],uint256[])</TD></TR><TR><TD align="left"> assertEq(int256[],int256[])</TD></TR><TR><TD align="left"> assertEq(address[],address[])</TD></TR><TR><TD align="left"> assertEq(uint256[],uint256[],string)</TD></TR><TR><TD align="left"> assertEq(int256[],int256[],string)</TD></TR><TR><TD align="left"> assertEq(address[],address[],string)</TD></TR><TR><TD align="left"> assertEqUint(uint256,uint256)</TD></TR><TR><TD align="left"> assertApproxEqAbs(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> assertApproxEqAbs(uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)</TD></TR><TR><TD align="left"> assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> assertApproxEqAbs(int256,int256,uint256)</TD></TR><TR><TD align="left"> assertApproxEqAbs(int256,int256,uint256,string)</TD></TR><TR><TD align="left"> assertApproxEqAbsDecimal(int256,int256,uint256,uint256)</TD></TR><TR><TD align="left"> assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)</TD></TR><TR><TD align="left"> assertApproxEqRel(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> assertApproxEqRel(uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)</TD></TR><TR><TD align="left"> assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> assertApproxEqRel(int256,int256,uint256)</TD></TR><TR><TD align="left"> assertApproxEqRel(int256,int256,uint256,string)</TD></TR><TR><TD align="left"> assertApproxEqRelDecimal(int256,int256,uint256,uint256)</TD></TR><TR><TD align="left"> assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)</TD></TR></TABLE> >];
StdChains[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>StdChains</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> getChain(string)</TD></TR><TR><TD align="left"> getChain(uint256)</TD></TR><TR><TD align="left"> setChain(string,StdChains.ChainData)</TD></TR><TR><TD align="left"> setChain(string,StdChains.Chain)</TD></TR><TR><TD align="left"> _toUpper(string)</TD></TR><TR><TD align="left"> getChainWithUpdatedRpcUrl(string,StdChains.Chain)</TD></TR><TR><TD align="left"> initialize()</TD></TR><TR><TD align="left"> setChainWithDefaultRpcUrl(string,StdChains.ChainData)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> vm<font color="blue" POINT-SIZE="10"> (VmSafe)</font></TD></TR><TR><TD align="left"> initialized</TD></TR><TR><TD align="left"> chains</TD></TR><TR><TD align="left"> defaultRpcUrls</TD></TR><TR><TD align="left"> idToAlias</TD></TR></TABLE> >];
StdCheatsSafe[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>StdCheatsSafe</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> assumeNoPrecompiles(address)</TD></TR><TR><TD align="left"> assumeNoPrecompiles(address,uint256)</TD></TR><TR><TD align="left"> readEIP1559ScriptArtifact(string)</TD></TR><TR><TD align="left"> rawToConvertedEIPTx1559s(StdCheatsSafe.RawTx1559[])</TD></TR><TR><TD align="left"> rawToConvertedEIPTx1559(StdCheatsSafe.RawTx1559)</TD></TR><TR><TD align="left"> rawToConvertedEIP1559Detail(StdCheatsSafe.RawTx1559Detail)</TD></TR><TR><TD align="left"> readTx1559s(string)</TD></TR><TR><TD align="left"> readTx1559(string,uint256)</TD></TR><TR><TD align="left"> readReceipts(string)</TD></TR><TR><TD align="left"> readReceipt(string,uint256)</TD></TR><TR><TD align="left"> rawToConvertedReceipts(StdCheatsSafe.RawReceipt[])</TD></TR><TR><TD align="left"> rawToConvertedReceipt(StdCheatsSafe.RawReceipt)</TD></TR><TR><TD align="left"> rawToConvertedReceiptLogs(StdCheatsSafe.RawReceiptLog[])</TD></TR><TR><TD align="left"> deployCode(string,bytes)</TD></TR><TR><TD align="left"> deployCode(string)</TD></TR><TR><TD align="left"> deployCode(string,bytes,uint256)</TD></TR><TR><TD align="left"> deployCode(string,uint256)</TD></TR><TR><TD align="left"> makeAddrAndKey(string)</TD></TR><TR><TD align="left"> makeAddr(string)</TD></TR><TR><TD align="left"> deriveRememberKey(string,uint32)</TD></TR><TR><TD align="left"> _bytesToUint(bytes)</TD></TR><TR><TD align="left"> isFork()</TD></TR><TR><TD align="left"> assumePayable(address)</TD></TR><TR><TD align="left"><I>Modifiers:</I></TD></TR><TR><TD align="left"> skipWhenForking()</TD></TR><TR><TD align="left"> skipWhenNotForking()</TD></TR><TR><TD align="left"> noGasMetering()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> vm<font color="blue" POINT-SIZE="10"> (Vm)</font></TD></TR><TR><TD align="left"> gasMeteringOff</TD></TR></TABLE> >];
StdCheats -> StdCheatsSafe;
StdCheats[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>StdCheats</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> skip(uint256)</TD></TR><TR><TD align="left"> rewind(uint256)</TD></TR><TR><TD align="left"> hoax(address)</TD></TR><TR><TD align="left"> hoax(address,uint256)</TD></TR><TR><TD align="left"> hoax(address,address)</TD></TR><TR><TD align="left"> hoax(address,address,uint256)</TD></TR><TR><TD align="left"> startHoax(address)</TD></TR><TR><TD align="left"> startHoax(address,uint256)</TD></TR><TR><TD align="left"> startHoax(address,address)</TD></TR><TR><TD align="left"> startHoax(address,address,uint256)</TD></TR><TR><TD align="left"> changePrank(address)</TD></TR><TR><TD align="left"> deal(address,uint256)</TD></TR><TR><TD align="left"> deal(address,address,uint256)</TD></TR><TR><TD align="left"> deal(address,address,uint256,bool)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> stdstore</TD></TR><TR><TD align="left"><font color="red"> vm</font><font color="blue" POINT-SIZE="10"> (Vm)</font></TD></TR></TABLE> >];
stdError[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>stdError</B></TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> assertionError</TD></TR><TR><TD align="left"> arithmeticError</TD></TR><TR><TD align="left"> divisionError</TD></TR><TR><TD align="left"> enumConversionError</TD></TR><TR><TD align="left"> encodeStorageError</TD></TR><TR><TD align="left"> popError</TD></TR><TR><TD align="left"> indexOOBError</TD></TR><TR><TD align="left"> memOverflowError</TD></TR><TR><TD align="left"> zeroVarError</TD></TR></TABLE> >];
stdJson[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>stdJson</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> parseRaw(string,string)</TD></TR><TR><TD align="left"> readUint(string,string)</TD></TR><TR><TD align="left"> readUintArray(string,string)</TD></TR><TR><TD align="left"> readInt(string,string)</TD></TR><TR><TD align="left"> readIntArray(string,string)</TD></TR><TR><TD align="left"> readBytes32(string,string)</TD></TR><TR><TD align="left"> readBytes32Array(string,string)</TD></TR><TR><TD align="left"> readString(string,string)</TD></TR><TR><TD align="left"> readStringArray(string,string)</TD></TR><TR><TD align="left"> readAddress(string,string)</TD></TR><TR><TD align="left"> readAddressArray(string,string)</TD></TR><TR><TD align="left"> readBool(string,string)</TD></TR><TR><TD align="left"> readBoolArray(string,string)</TD></TR><TR><TD align="left"> readBytes(string,string)</TD></TR><TR><TD align="left"> readBytesArray(string,string)</TD></TR><TR><TD align="left"> serialize(string,string,bool)</TD></TR><TR><TD align="left"> serialize(string,string,bool[])</TD></TR><TR><TD align="left"> serialize(string,string,uint256)</TD></TR><TR><TD align="left"> serialize(string,string,uint256[])</TD></TR><TR><TD align="left"> serialize(string,string,int256)</TD></TR><TR><TD align="left"> serialize(string,string,int256[])</TD></TR><TR><TD align="left"> serialize(string,string,address)</TD></TR><TR><TD align="left"> serialize(string,string,address[])</TD></TR><TR><TD align="left"> serialize(string,string,bytes32)</TD></TR><TR><TD align="left"> serialize(string,string,bytes32[])</TD></TR><TR><TD align="left"> serialize(string,string,bytes)</TD></TR><TR><TD align="left"> serialize(string,string,bytes[])</TD></TR><TR><TD align="left"> serialize(string,string,string)</TD></TR><TR><TD align="left"> serialize(string,string,string[])</TD></TR><TR><TD align="left"> write(string,string)</TD></TR><TR><TD align="left"> write(string,string,string)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> vm<font color="blue" POINT-SIZE="10"> (VmSafe)</font></TD></TR></TABLE> >];
stdMath[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>stdMath</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> abs(int256)</TD></TR><TR><TD align="left"> delta(uint256,uint256)</TD></TR><TR><TD align="left"> delta(int256,int256)</TD></TR><TR><TD align="left"> percentDelta(uint256,uint256)</TD></TR><TR><TD align="left"> percentDelta(int256,int256)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> INT256_MIN</TD></TR></TABLE> >];
stdStorageSafe[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>stdStorageSafe</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> sigs(string)</TD></TR><TR><TD align="left"> find(StdStorage)</TD></TR><TR><TD align="left"> target(StdStorage,address)</TD></TR><TR><TD align="left"> sig(StdStorage,bytes4)</TD></TR><TR><TD align="left"> sig(StdStorage,string)</TD></TR><TR><TD align="left"> with_key(StdStorage,address)</TD></TR><TR><TD align="left"> with_key(StdStorage,uint256)</TD></TR><TR><TD align="left"> with_key(StdStorage,bytes32)</TD></TR><TR><TD align="left"> depth(StdStorage,uint256)</TD></TR><TR><TD align="left"> read(StdStorage)</TD></TR><TR><TD align="left"> read_bytes32(StdStorage)</TD></TR><TR><TD align="left"> read_bool(StdStorage)</TD></TR><TR><TD align="left"> read_address(StdStorage)</TD></TR><TR><TD align="left"> read_uint(StdStorage)</TD></TR><TR><TD align="left"> read_int(StdStorage)</TD></TR><TR><TD align="left"> bytesToBytes32(bytes,uint256)</TD></TR><TR><TD align="left"> flatten(bytes32[])</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> vm<font color="blue" POINT-SIZE="10"> (Vm)</font></TD></TR></TABLE> >];
stdStorage[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>stdStorage</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> sigs(string)</TD></TR><TR><TD align="left"> find(StdStorage)</TD></TR><TR><TD align="left"> target(StdStorage,address)</TD></TR><TR><TD align="left"> sig(StdStorage,bytes4)</TD></TR><TR><TD align="left"> sig(StdStorage,string)</TD></TR><TR><TD align="left"> with_key(StdStorage,address)</TD></TR><TR><TD align="left"> with_key(StdStorage,uint256)</TD></TR><TR><TD align="left"> with_key(StdStorage,bytes32)</TD></TR><TR><TD align="left"> depth(StdStorage,uint256)</TD></TR><TR><TD align="left"> checked_write(StdStorage,address)</TD></TR><TR><TD align="left"> checked_write(StdStorage,uint256)</TD></TR><TR><TD align="left"> checked_write(StdStorage,bool)</TD></TR><TR><TD align="left"> checked_write(StdStorage,bytes32)</TD></TR><TR><TD align="left"> read_bytes32(StdStorage)</TD></TR><TR><TD align="left"> read_bool(StdStorage)</TD></TR><TR><TD align="left"> read_address(StdStorage)</TD></TR><TR><TD align="left"> read_uint(StdStorage)</TD></TR><TR><TD align="left"> read_int(StdStorage)</TD></TR><TR><TD align="left"> bytesToBytes32(bytes,uint256)</TD></TR><TR><TD align="left"> flatten(bytes32[])</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> vm<font color="blue" POINT-SIZE="10"> (Vm)</font></TD></TR></TABLE> >];
StdUtils[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>StdUtils</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _bound(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> bound(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> bound(int256,int256,int256)</TD></TR><TR><TD align="left"> bytesToUint(bytes)</TD></TR><TR><TD align="left"> computeCreateAddress(address,uint256)</TD></TR><TR><TD align="left"> computeCreate2Address(bytes32,bytes32,address)</TD></TR><TR><TD align="left"> getTokenBalances(address,address[])</TD></TR><TR><TD align="left"> addressFromLast20Bytes(bytes32)</TD></TR><TR><TD align="left"> console2_log(string,uint256)</TD></TR><TR><TD align="left"> console2_log(string,string)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> multicall<font color="blue" POINT-SIZE="10"> (IMulticall3)</font></TD></TR><TR><TD align="left"> vm<font color="blue" POINT-SIZE="10"> (VmSafe)</font></TD></TR><TR><TD align="left"> CONSOLE2_ADDRESS</TD></TR><TR><TD align="left"> INT256_MIN_ABS</TD></TR><TR><TD align="left"> UINT256_MAX</TD></TR></TABLE> >];
Test -> DSTest [ label="1" ];
Test -> StdAssertions [ label="2" ];
Test -> StdChains [ label="3" ];
Test -> StdCheats [ label="4" ];
Test -> StdUtils [ label="5" ];
Test -> TestBase [ label="6" ];
Test[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Test</B></TD></TR></TABLE> >];
VmSafe[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>VmSafe</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> load(address,bytes32)</TD></TR><TR><TD align="left"> sign(uint256,bytes32)</TD></TR><TR><TD align="left"> addr(uint256)</TD></TR><TR><TD align="left"> getNonce(address)</TD></TR><TR><TD align="left"> ffi(string[])</TD></TR><TR><TD align="left"> setEnv(string,string)</TD></TR><TR><TD align="left"> envBool(string)</TD></TR><TR><TD align="left"> envUint(string)</TD></TR><TR><TD align="left"> envInt(string)</TD></TR><TR><TD align="left"> envAddress(string)</TD></TR><TR><TD align="left"> envBytes32(string)</TD></TR><TR><TD align="left"> envString(string)</TD></TR><TR><TD align="left"> envBytes(string)</TD></TR><TR><TD align="left"> envBool(string,string)</TD></TR><TR><TD align="left"> envUint(string,string)</TD></TR><TR><TD align="left"> envInt(string,string)</TD></TR><TR><TD align="left"> envAddress(string,string)</TD></TR><TR><TD align="left"> envBytes32(string,string)</TD></TR><TR><TD align="left"> envString(string,string)</TD></TR><TR><TD align="left"> envBytes(string,string)</TD></TR><TR><TD align="left"> envOr(string,bool)</TD></TR><TR><TD align="left"> envOr(string,uint256)</TD></TR><TR><TD align="left"> envOr(string,int256)</TD></TR><TR><TD align="left"> envOr(string,address)</TD></TR><TR><TD align="left"> envOr(string,bytes32)</TD></TR><TR><TD align="left"> envOr(string,string)</TD></TR><TR><TD align="left"> envOr(string,bytes)</TD></TR><TR><TD align="left"> envOr(string,string,bool[])</TD></TR><TR><TD align="left"> envOr(string,string,uint256[])</TD></TR><TR><TD align="left"> envOr(string,string,int256[])</TD></TR><TR><TD align="left"> envOr(string,string,address[])</TD></TR><TR><TD align="left"> envOr(string,string,bytes32[])</TD></TR><TR><TD align="left"> envOr(string,string,string[])</TD></TR><TR><TD align="left"> envOr(string,string,bytes[])</TD></TR><TR><TD align="left"> record()</TD></TR><TR><TD align="left"> accesses(address)</TD></TR><TR><TD align="left"> getCode(string)</TD></TR><TR><TD align="left"> getDeployedCode(string)</TD></TR><TR><TD align="left"> label(address,string)</TD></TR><TR><TD align="left"> broadcast()</TD></TR><TR><TD align="left"> broadcast(address)</TD></TR><TR><TD align="left"> broadcast(uint256)</TD></TR><TR><TD align="left"> startBroadcast()</TD></TR><TR><TD align="left"> startBroadcast(address)</TD></TR><TR><TD align="left"> startBroadcast(uint256)</TD></TR><TR><TD align="left"> stopBroadcast()</TD></TR><TR><TD align="left"> readFile(string)</TD></TR><TR><TD align="left"> readFileBinary(string)</TD></TR><TR><TD align="left"> projectRoot()</TD></TR><TR><TD align="left"> fsMetadata(string)</TD></TR><TR><TD align="left"> readLine(string)</TD></TR><TR><TD align="left"> writeFile(string,string)</TD></TR><TR><TD align="left"> writeFileBinary(string,bytes)</TD></TR><TR><TD align="left"> writeLine(string,string)</TD></TR><TR><TD align="left"> closeFile(string)</TD></TR><TR><TD align="left"> removeFile(string)</TD></TR><TR><TD align="left"> toString(address)</TD></TR><TR><TD align="left"> toString(bytes)</TD></TR><TR><TD align="left"> toString(bytes32)</TD></TR><TR><TD align="left"> toString(bool)</TD></TR><TR><TD align="left"> toString(uint256)</TD></TR><TR><TD align="left"> toString(int256)</TD></TR><TR><TD align="left"> parseBytes(string)</TD></TR><TR><TD align="left"> parseAddress(string)</TD></TR><TR><TD align="left"> parseUint(string)</TD></TR><TR><TD align="left"> parseInt(string)</TD></TR><TR><TD align="left"> parseBytes32(string)</TD></TR><TR><TD align="left"> parseBool(string)</TD></TR><TR><TD align="left"> recordLogs()</TD></TR><TR><TD align="left"> getRecordedLogs()</TD></TR><TR><TD align="left"> deriveKey(string,uint32)</TD></TR><TR><TD align="left"> deriveKey(string,string,uint32)</TD></TR><TR><TD align="left"> rememberKey(uint256)</TD></TR><TR><TD align="left"> parseJson(string,string)</TD></TR><TR><TD align="left"> parseJson(string)</TD></TR><TR><TD align="left"> parseJsonUint(string,string)</TD></TR><TR><TD align="left"> parseJsonUintArray(string,string)</TD></TR><TR><TD align="left"> parseJsonInt(string,string)</TD></TR><TR><TD align="left"> parseJsonIntArray(string,string)</TD></TR><TR><TD align="left"> parseJsonBool(string,string)</TD></TR><TR><TD align="left"> parseJsonBoolArray(string,string)</TD></TR><TR><TD align="left"> parseJsonAddress(string,string)</TD></TR><TR><TD align="left"> parseJsonAddressArray(string,string)</TD></TR><TR><TD align="left"> parseJsonString(string,string)</TD></TR><TR><TD align="left"> parseJsonStringArray(string,string)</TD></TR><TR><TD align="left"> parseJsonBytes(string,string)</TD></TR><TR><TD align="left"> parseJsonBytesArray(string,string)</TD></TR><TR><TD align="left"> parseJsonBytes32(string,string)</TD></TR><TR><TD align="left"> parseJsonBytes32Array(string,string)</TD></TR><TR><TD align="left"> serializeBool(string,string,bool)</TD></TR><TR><TD align="left"> serializeUint(string,string,uint256)</TD></TR><TR><TD align="left"> serializeInt(string,string,int256)</TD></TR><TR><TD align="left"> serializeAddress(string,string,address)</TD></TR><TR><TD align="left"> serializeBytes32(string,string,bytes32)</TD></TR><TR><TD align="left"> serializeString(string,string,string)</TD></TR><TR><TD align="left"> serializeBytes(string,string,bytes)</TD></TR><TR><TD align="left"> serializeBool(string,string,bool[])</TD></TR><TR><TD align="left"> serializeUint(string,string,uint256[])</TD></TR><TR><TD align="left"> serializeInt(string,string,int256[])</TD></TR><TR><TD align="left"> serializeAddress(string,string,address[])</TD></TR><TR><TD align="left"> serializeBytes32(string,string,bytes32[])</TD></TR><TR><TD align="left"> serializeString(string,string,string[])</TD></TR><TR><TD align="left"> serializeBytes(string,string,bytes[])</TD></TR><TR><TD align="left"> writeJson(string,string)</TD></TR><TR><TD align="left"> writeJson(string,string,string)</TD></TR><TR><TD align="left"> rpcUrl(string)</TD></TR><TR><TD align="left"> rpcUrls()</TD></TR><TR><TD align="left"> rpcUrlStructs()</TD></TR><TR><TD align="left"> assume(bool)</TD></TR><TR><TD align="left"> pauseGasMetering()</TD></TR><TR><TD align="left"> resumeGasMetering()</TD></TR></TABLE> >];
Vm -> VmSafe;
Vm[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Vm</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> warp(uint256)</TD></TR><TR><TD align="left"> roll(uint256)</TD></TR><TR><TD align="left"> fee(uint256)</TD></TR><TR><TD align="left"> difficulty(uint256)</TD></TR><TR><TD align="left"> chainId(uint256)</TD></TR><TR><TD align="left"> store(address,bytes32,bytes32)</TD></TR><TR><TD align="left"> setNonce(address,uint64)</TD></TR><TR><TD align="left"> prank(address)</TD></TR><TR><TD align="left"> startPrank(address)</TD></TR><TR><TD align="left"> prank(address,address)</TD></TR><TR><TD align="left"> startPrank(address,address)</TD></TR><TR><TD align="left"> stopPrank()</TD></TR><TR><TD align="left"> deal(address,uint256)</TD></TR><TR><TD align="left"> etch(address,bytes)</TD></TR><TR><TD align="left"> expectRevert(bytes)</TD></TR><TR><TD align="left"> expectRevert(bytes4)</TD></TR><TR><TD align="left"> expectRevert()</TD></TR><TR><TD align="left"> expectEmit(bool,bool,bool,bool)</TD></TR><TR><TD align="left"> expectEmit(bool,bool,bool,bool,address)</TD></TR><TR><TD align="left"> mockCall(address,bytes,bytes)</TD></TR><TR><TD align="left"> mockCall(address,uint256,bytes,bytes)</TD></TR><TR><TD align="left"> clearMockedCalls()</TD></TR><TR><TD align="left"> expectCall(address,bytes)</TD></TR><TR><TD align="left"> expectCall(address,uint256,bytes)</TD></TR><TR><TD align="left"> coinbase(address)</TD></TR><TR><TD align="left"> snapshot()</TD></TR><TR><TD align="left"> revertTo(uint256)</TD></TR><TR><TD align="left"> createFork(string,uint256)</TD></TR><TR><TD align="left"> createFork(string)</TD></TR><TR><TD align="left"> createFork(string,bytes32)</TD></TR><TR><TD align="left"> createSelectFork(string,uint256)</TD></TR><TR><TD align="left"> createSelectFork(string,bytes32)</TD></TR><TR><TD align="left"> createSelectFork(string)</TD></TR><TR><TD align="left"> selectFork(uint256)</TD></TR><TR><TD align="left"> activeFork()</TD></TR><TR><TD align="left"> rollFork(uint256)</TD></TR><TR><TD align="left"> rollFork(bytes32)</TD></TR><TR><TD align="left"> rollFork(uint256,uint256)</TD></TR><TR><TD align="left"> rollFork(uint256,bytes32)</TD></TR><TR><TD align="left"> makePersistent(address)</TD></TR><TR><TD align="left"> makePersistent(address,address)</TD></TR><TR><TD align="left"> makePersistent(address,address,address)</TD></TR><TR><TD align="left"> makePersistent(address[])</TD></TR><TR><TD align="left"> revokePersistent(address)</TD></TR><TR><TD align="left"> revokePersistent(address[])</TD></TR><TR><TD align="left"> isPersistent(address)</TD></TR><TR><TD align="left"> allowCheatcodes(address)</TD></TR><TR><TD align="left"> transact(bytes32)</TD></TR><TR><TD align="left"> transact(uint256,bytes32)</TD></TR></TABLE> >];
console[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>console</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _sendLogPayload(bytes)</TD></TR><TR><TD align="left"> log()</TD></TR><TR><TD align="left"> logInt(int256)</TD></TR><TR><TD align="left"> logUint(uint256)</TD></TR><TR><TD align="left"> logString(string)</TD></TR><TR><TD align="left"> logBool(bool)</TD></TR><TR><TD align="left"> logAddress(address)</TD></TR><TR><TD align="left"> logBytes(bytes)</TD></TR><TR><TD align="left"> logBytes1(bytes1)</TD></TR><TR><TD align="left"> logBytes2(bytes2)</TD></TR><TR><TD align="left"> logBytes3(bytes3)</TD></TR><TR><TD align="left"> logBytes4(bytes4)</TD></TR><TR><TD align="left"> logBytes5(bytes5)</TD></TR><TR><TD align="left"> logBytes6(bytes6)</TD></TR><TR><TD align="left"> logBytes7(bytes7)</TD></TR><TR><TD align="left"> logBytes8(bytes8)</TD></TR><TR><TD align="left"> logBytes9(bytes9)</TD></TR><TR><TD align="left"> logBytes10(bytes10)</TD></TR><TR><TD align="left"> logBytes11(bytes11)</TD></TR><TR><TD align="left"> logBytes12(bytes12)</TD></TR><TR><TD align="left"> logBytes13(bytes13)</TD></TR><TR><TD align="left"> logBytes14(bytes14)</TD></TR><TR><TD align="left"> logBytes15(bytes15)</TD></TR><TR><TD align="left"> logBytes16(bytes16)</TD></TR><TR><TD align="left"> logBytes17(bytes17)</TD></TR><TR><TD align="left"> logBytes18(bytes18)</TD></TR><TR><TD align="left"> logBytes19(bytes19)</TD></TR><TR><TD align="left"> logBytes20(bytes20)</TD></TR><TR><TD align="left"> logBytes21(bytes21)</TD></TR><TR><TD align="left"> logBytes22(bytes22)</TD></TR><TR><TD align="left"> logBytes23(bytes23)</TD></TR><TR><TD align="left"> logBytes24(bytes24)</TD></TR><TR><TD align="left"> logBytes25(bytes25)</TD></TR><TR><TD align="left"> logBytes26(bytes26)</TD></TR><TR><TD align="left"> logBytes27(bytes27)</TD></TR><TR><TD align="left"> logBytes28(bytes28)</TD></TR><TR><TD align="left"> logBytes29(bytes29)</TD></TR><TR><TD align="left"> logBytes30(bytes30)</TD></TR><TR><TD align="left"> logBytes31(bytes31)</TD></TR><TR><TD align="left"> logBytes32(bytes32)</TD></TR><TR><TD align="left"> log(uint256)</TD></TR><TR><TD align="left"> log(string)</TD></TR><TR><TD align="left"> log(bool)</TD></TR><TR><TD align="left"> log(address)</TD></TR><TR><TD align="left"> log(uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,string)</TD></TR><TR><TD align="left"> log(uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,address)</TD></TR><TR><TD align="left"> log(string,uint256)</TD></TR><TR><TD align="left"> log(string,string)</TD></TR><TR><TD align="left"> log(string,bool)</TD></TR><TR><TD align="left"> log(string,address)</TD></TR><TR><TD align="left"> log(bool,uint256)</TD></TR><TR><TD align="left"> log(bool,string)</TD></TR><TR><TD align="left"> log(bool,bool)</TD></TR><TR><TD align="left"> log(bool,address)</TD></TR><TR><TD align="left"> log(address,uint256)</TD></TR><TR><TD align="left"> log(address,string)</TD></TR><TR><TD align="left"> log(address,bool)</TD></TR><TR><TD align="left"> log(address,address)</TD></TR><TR><TD align="left"> log(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,uint256,string)</TD></TR><TR><TD align="left"> log(uint256,uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,uint256,address)</TD></TR><TR><TD align="left"> log(uint256,string,uint256)</TD></TR><TR><TD align="left"> log(uint256,string,string)</TD></TR><TR><TD align="left"> log(uint256,string,bool)</TD></TR><TR><TD align="left"> log(uint256,string,address)</TD></TR><TR><TD align="left"> log(uint256,bool,uint256)</TD></TR><TR><TD align="left"> log(uint256,bool,string)</TD></TR><TR><TD align="left"> log(uint256,bool,bool)</TD></TR><TR><TD align="left"> log(uint256,bool,address)</TD></TR><TR><TD align="left"> log(uint256,address,uint256)</TD></TR><TR><TD align="left"> log(uint256,address,string)</TD></TR><TR><TD align="left"> log(uint256,address,bool)</TD></TR><TR><TD align="left"> log(uint256,address,address)</TD></TR><TR><TD align="left"> log(string,uint256,uint256)</TD></TR><TR><TD align="left"> log(string,uint256,string)</TD></TR><TR><TD align="left"> log(string,uint256,bool)</TD></TR><TR><TD align="left"> log(string,uint256,address)</TD></TR><TR><TD align="left"> log(string,string,uint256)</TD></TR><TR><TD align="left"> log(string,string,string)</TD></TR><TR><TD align="left"> log(string,string,bool)</TD></TR><TR><TD align="left"> log(string,string,address)</TD></TR><TR><TD align="left"> log(string,bool,uint256)</TD></TR><TR><TD align="left"> log(string,bool,string)</TD></TR><TR><TD align="left"> log(string,bool,bool)</TD></TR><TR><TD align="left"> log(string,bool,address)</TD></TR><TR><TD align="left"> log(string,address,uint256)</TD></TR><TR><TD align="left"> log(string,address,string)</TD></TR><TR><TD align="left"> log(string,address,bool)</TD></TR><TR><TD align="left"> log(string,address,address)</TD></TR><TR><TD align="left"> log(bool,uint256,uint256)</TD></TR><TR><TD align="left"> log(bool,uint256,string)</TD></TR><TR><TD align="left"> log(bool,uint256,bool)</TD></TR><TR><TD align="left"> log(bool,uint256,address)</TD></TR><TR><TD align="left"> log(bool,string,uint256)</TD></TR><TR><TD align="left"> log(bool,string,string)</TD></TR><TR><TD align="left"> log(bool,string,bool)</TD></TR><TR><TD align="left"> log(bool,string,address)</TD></TR><TR><TD align="left"> log(bool,bool,uint256)</TD></TR><TR><TD align="left"> log(bool,bool,string)</TD></TR><TR><TD align="left"> log(bool,bool,bool)</TD></TR><TR><TD align="left"> log(bool,bool,address)</TD></TR><TR><TD align="left"> log(bool,address,uint256)</TD></TR><TR><TD align="left"> log(bool,address,string)</TD></TR><TR><TD align="left"> log(bool,address,bool)</TD></TR><TR><TD align="left"> log(bool,address,address)</TD></TR><TR><TD align="left"> log(address,uint256,uint256)</TD></TR><TR><TD align="left"> log(address,uint256,string)</TD></TR><TR><TD align="left"> log(address,uint256,bool)</TD></TR><TR><TD align="left"> log(address,uint256,address)</TD></TR><TR><TD align="left"> log(address,string,uint256)</TD></TR><TR><TD align="left"> log(address,string,string)</TD></TR><TR><TD align="left"> log(address,string,bool)</TD></TR><TR><TD align="left"> log(address,string,address)</TD></TR><TR><TD align="left"> log(address,bool,uint256)</TD></TR><TR><TD align="left"> log(address,bool,string)</TD></TR><TR><TD align="left"> log(address,bool,bool)</TD></TR><TR><TD align="left"> log(address,bool,address)</TD></TR><TR><TD align="left"> log(address,address,uint256)</TD></TR><TR><TD align="left"> log(address,address,string)</TD></TR><TR><TD align="left"> log(address,address,bool)</TD></TR><TR><TD align="left"> log(address,address,address)</TD></TR><TR><TD align="left"> log(uint256,uint256,uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> log(uint256,uint256,uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,uint256,uint256,address)</TD></TR><TR><TD align="left"> log(uint256,uint256,string,uint256)</TD></TR><TR><TD align="left"> log(uint256,uint256,string,string)</TD></TR><TR><TD align="left"> log(uint256,uint256,string,bool)</TD></TR><TR><TD align="left"> log(uint256,uint256,string,address)</TD></TR><TR><TD align="left"> log(uint256,uint256,bool,uint256)</TD></TR><TR><TD align="left"> log(uint256,uint256,bool,string)</TD></TR><TR><TD align="left"> log(uint256,uint256,bool,bool)</TD></TR><TR><TD align="left"> log(uint256,uint256,bool,address)</TD></TR><TR><TD align="left"> log(uint256,uint256,address,uint256)</TD></TR><TR><TD align="left"> log(uint256,uint256,address,string)</TD></TR><TR><TD align="left"> log(uint256,uint256,address,bool)</TD></TR><TR><TD align="left"> log(uint256,uint256,address,address)</TD></TR><TR><TD align="left"> log(uint256,string,uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,string,uint256,string)</TD></TR><TR><TD align="left"> log(uint256,string,uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,string,uint256,address)</TD></TR><TR><TD align="left"> log(uint256,string,string,uint256)</TD></TR><TR><TD align="left"> log(uint256,string,string,string)</TD></TR><TR><TD align="left"> log(uint256,string,string,bool)</TD></TR><TR><TD align="left"> log(uint256,string,string,address)</TD></TR><TR><TD align="left"> log(uint256,string,bool,uint256)</TD></TR><TR><TD align="left"> log(uint256,string,bool,string)</TD></TR><TR><TD align="left"> log(uint256,string,bool,bool)</TD></TR><TR><TD align="left"> log(uint256,string,bool,address)</TD></TR><TR><TD align="left"> log(uint256,string,address,uint256)</TD></TR><TR><TD align="left"> log(uint256,string,address,string)</TD></TR><TR><TD align="left"> log(uint256,string,address,bool)</TD></TR><TR><TD align="left"> log(uint256,string,address,address)</TD></TR><TR><TD align="left"> log(uint256,bool,uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,bool,uint256,string)</TD></TR><TR><TD align="left"> log(uint256,bool,uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,bool,uint256,address)</TD></TR><TR><TD align="left"> log(uint256,bool,string,uint256)</TD></TR><TR><TD align="left"> log(uint256,bool,string,string)</TD></TR><TR><TD align="left"> log(uint256,bool,string,bool)</TD></TR><TR><TD align="left"> log(uint256,bool,string,address)</TD></TR><TR><TD align="left"> log(uint256,bool,bool,uint256)</TD></TR><TR><TD align="left"> log(uint256,bool,bool,string)</TD></TR><TR><TD align="left"> log(uint256,bool,bool,bool)</TD></TR><TR><TD align="left"> log(uint256,bool,bool,address)</TD></TR><TR><TD align="left"> log(uint256,bool,address,uint256)</TD></TR><TR><TD align="left"> log(uint256,bool,address,string)</TD></TR><TR><TD align="left"> log(uint256,bool,address,bool)</TD></TR><TR><TD align="left"> log(uint256,bool,address,address)</TD></TR><TR><TD align="left"> log(uint256,address,uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,address,uint256,string)</TD></TR><TR><TD align="left"> log(uint256,address,uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,address,uint256,address)</TD></TR><TR><TD align="left"> log(uint256,address,string,uint256)</TD></TR><TR><TD align="left"> log(uint256,address,string,string)</TD></TR><TR><TD align="left"> log(uint256,address,string,bool)</TD></TR><TR><TD align="left"> log(uint256,address,string,address)</TD></TR><TR><TD align="left"> log(uint256,address,bool,uint256)</TD></TR><TR><TD align="left"> log(uint256,address,bool,string)</TD></TR><TR><TD align="left"> log(uint256,address,bool,bool)</TD></TR><TR><TD align="left"> log(uint256,address,bool,address)</TD></TR><TR><TD align="left"> log(uint256,address,address,uint256)</TD></TR><TR><TD align="left"> log(uint256,address,address,string)</TD></TR><TR><TD align="left"> log(uint256,address,address,bool)</TD></TR><TR><TD align="left"> log(uint256,address,address,address)</TD></TR><TR><TD align="left"> log(string,uint256,uint256,uint256)</TD></TR><TR><TD align="left"> log(string,uint256,uint256,string)</TD></TR><TR><TD align="left"> log(string,uint256,uint256,bool)</TD></TR><TR><TD align="left"> log(string,uint256,uint256,address)</TD></TR><TR><TD align="left"> log(string,uint256,string,uint256)</TD></TR><TR><TD align="left"> log(string,uint256,string,string)</TD></TR><TR><TD align="left"> log(string,uint256,string,bool)</TD></TR><TR><TD align="left"> log(string,uint256,string,address)</TD></TR><TR><TD align="left"> log(string,uint256,bool,uint256)</TD></TR><TR><TD align="left"> log(string,uint256,bool,string)</TD></TR><TR><TD align="left"> log(string,uint256,bool,bool)</TD></TR><TR><TD align="left"> log(string,uint256,bool,address)</TD></TR><TR><TD align="left"> log(string,uint256,address,uint256)</TD></TR><TR><TD align="left"> log(string,uint256,address,string)</TD></TR><TR><TD align="left"> log(string,uint256,address,bool)</TD></TR><TR><TD align="left"> log(string,uint256,address,address)</TD></TR><TR><TD align="left"> log(string,string,uint256,uint256)</TD></TR><TR><TD align="left"> log(string,string,uint256,string)</TD></TR><TR><TD align="left"> log(string,string,uint256,bool)</TD></TR><TR><TD align="left"> log(string,string,uint256,address)</TD></TR><TR><TD align="left"> log(string,string,string,uint256)</TD></TR><TR><TD align="left"> log(string,string,string,string)</TD></TR><TR><TD align="left"> log(string,string,string,bool)</TD></TR><TR><TD align="left"> log(string,string,string,address)</TD></TR><TR><TD align="left"> log(string,string,bool,uint256)</TD></TR><TR><TD align="left"> log(string,string,bool,string)</TD></TR><TR><TD align="left"> log(string,string,bool,bool)</TD></TR><TR><TD align="left"> log(string,string,bool,address)</TD></TR><TR><TD align="left"> log(string,string,address,uint256)</TD></TR><TR><TD align="left"> log(string,string,address,string)</TD></TR><TR><TD align="left"> log(string,string,address,bool)</TD></TR><TR><TD align="left"> log(string,string,address,address)</TD></TR><TR><TD align="left"> log(string,bool,uint256,uint256)</TD></TR><TR><TD align="left"> log(string,bool,uint256,string)</TD></TR><TR><TD align="left"> log(string,bool,uint256,bool)</TD></TR><TR><TD align="left"> log(string,bool,uint256,address)</TD></TR><TR><TD align="left"> log(string,bool,string,uint256)</TD></TR><TR><TD align="left"> log(string,bool,string,string)</TD></TR><TR><TD align="left"> log(string,bool,string,bool)</TD></TR><TR><TD align="left"> log(string,bool,string,address)</TD></TR><TR><TD align="left"> log(string,bool,bool,uint256)</TD></TR><TR><TD align="left"> log(string,bool,bool,string)</TD></TR><TR><TD align="left"> log(string,bool,bool,bool)</TD></TR><TR><TD align="left"> log(string,bool,bool,address)</TD></TR><TR><TD align="left"> log(string,bool,address,uint256)</TD></TR><TR><TD align="left"> log(string,bool,address,string)</TD></TR><TR><TD align="left"> log(string,bool,address,bool)</TD></TR><TR><TD align="left"> log(string,bool,address,address)</TD></TR><TR><TD align="left"> log(string,address,uint256,uint256)</TD></TR><TR><TD align="left"> log(string,address,uint256,string)</TD></TR><TR><TD align="left"> log(string,address,uint256,bool)</TD></TR><TR><TD align="left"> log(string,address,uint256,address)</TD></TR><TR><TD align="left"> log(string,address,string,uint256)</TD></TR><TR><TD align="left"> log(string,address,string,string)</TD></TR><TR><TD align="left"> log(string,address,string,bool)</TD></TR><TR><TD align="left"> log(string,address,string,address)</TD></TR><TR><TD align="left"> log(string,address,bool,uint256)</TD></TR><TR><TD align="left"> log(string,address,bool,string)</TD></TR><TR><TD align="left"> log(string,address,bool,bool)</TD></TR><TR><TD align="left"> log(string,address,bool,address)</TD></TR><TR><TD align="left"> log(string,address,address,uint256)</TD></TR><TR><TD align="left"> log(string,address,address,string)</TD></TR><TR><TD align="left"> log(string,address,address,bool)</TD></TR><TR><TD align="left"> log(string,address,address,address)</TD></TR><TR><TD align="left"> log(bool,uint256,uint256,uint256)</TD></TR><TR><TD align="left"> log(bool,uint256,uint256,string)</TD></TR><TR><TD align="left"> log(bool,uint256,uint256,bool)</TD></TR><TR><TD align="left"> log(bool,uint256,uint256,address)</TD></TR><TR><TD align="left"> log(bool,uint256,string,uint256)</TD></TR><TR><TD align="left"> log(bool,uint256,string,string)</TD></TR><TR><TD align="left"> log(bool,uint256,string,bool)</TD></TR><TR><TD align="left"> log(bool,uint256,string,address)</TD></TR><TR><TD align="left"> log(bool,uint256,bool,uint256)</TD></TR><TR><TD align="left"> log(bool,uint256,bool,string)</TD></TR><TR><TD align="left"> log(bool,uint256,bool,bool)</TD></TR><TR><TD align="left"> log(bool,uint256,bool,address)</TD></TR><TR><TD align="left"> log(bool,uint256,address,uint256)</TD></TR><TR><TD align="left"> log(bool,uint256,address,string)</TD></TR><TR><TD align="left"> log(bool,uint256,address,bool)</TD></TR><TR><TD align="left"> log(bool,uint256,address,address)</TD></TR><TR><TD align="left"> log(bool,string,uint256,uint256)</TD></TR><TR><TD align="left"> log(bool,string,uint256,string)</TD></TR><TR><TD align="left"> log(bool,string,uint256,bool)</TD></TR><TR><TD align="left"> log(bool,string,uint256,address)</TD></TR><TR><TD align="left"> log(bool,string,string,uint256)</TD></TR><TR><TD align="left"> log(bool,string,string,string)</TD></TR><TR><TD align="left"> log(bool,string,string,bool)</TD></TR><TR><TD align="left"> log(bool,string,string,address)</TD></TR><TR><TD align="left"> log(bool,string,bool,uint256)</TD></TR><TR><TD align="left"> log(bool,string,bool,string)</TD></TR><TR><TD align="left"> log(bool,string,bool,bool)</TD></TR><TR><TD align="left"> log(bool,string,bool,address)</TD></TR><TR><TD align="left"> log(bool,string,address,uint256)</TD></TR><TR><TD align="left"> log(bool,string,address,string)</TD></TR><TR><TD align="left"> log(bool,string,address,bool)</TD></TR><TR><TD align="left"> log(bool,string,address,address)</TD></TR><TR><TD align="left"> log(bool,bool,uint256,uint256)</TD></TR><TR><TD align="left"> log(bool,bool,uint256,string)</TD></TR><TR><TD align="left"> log(bool,bool,uint256,bool)</TD></TR><TR><TD align="left"> log(bool,bool,uint256,address)</TD></TR><TR><TD align="left"> log(bool,bool,string,uint256)</TD></TR><TR><TD align="left"> log(bool,bool,string,string)</TD></TR><TR><TD align="left"> log(bool,bool,string,bool)</TD></TR><TR><TD align="left"> log(bool,bool,string,address)</TD></TR><TR><TD align="left"> log(bool,bool,bool,uint256)</TD></TR><TR><TD align="left"> log(bool,bool,bool,string)</TD></TR><TR><TD align="left"> log(bool,bool,bool,bool)</TD></TR><TR><TD align="left"> log(bool,bool,bool,address)</TD></TR><TR><TD align="left"> log(bool,bool,address,uint256)</TD></TR><TR><TD align="left"> log(bool,bool,address,string)</TD></TR><TR><TD align="left"> log(bool,bool,address,bool)</TD></TR><TR><TD align="left"> log(bool,bool,address,address)</TD></TR><TR><TD align="left"> log(bool,address,uint256,uint256)</TD></TR><TR><TD align="left"> log(bool,address,uint256,string)</TD></TR><TR><TD align="left"> log(bool,address,uint256,bool)</TD></TR><TR><TD align="left"> log(bool,address,uint256,address)</TD></TR><TR><TD align="left"> log(bool,address,string,uint256)</TD></TR><TR><TD align="left"> log(bool,address,string,string)</TD></TR><TR><TD align="left"> log(bool,address,string,bool)</TD></TR><TR><TD align="left"> log(bool,address,string,address)</TD></TR><TR><TD align="left"> log(bool,address,bool,uint256)</TD></TR><TR><TD align="left"> log(bool,address,bool,string)</TD></TR><TR><TD align="left"> log(bool,address,bool,bool)</TD></TR><TR><TD align="left"> log(bool,address,bool,address)</TD></TR><TR><TD align="left"> log(bool,address,address,uint256)</TD></TR><TR><TD align="left"> log(bool,address,address,string)</TD></TR><TR><TD align="left"> log(bool,address,address,bool)</TD></TR><TR><TD align="left"> log(bool,address,address,address)</TD></TR><TR><TD align="left"> log(address,uint256,uint256,uint256)</TD></TR><TR><TD align="left"> log(address,uint256,uint256,string)</TD></TR><TR><TD align="left"> log(address,uint256,uint256,bool)</TD></TR><TR><TD align="left"> log(address,uint256,uint256,address)</TD></TR><TR><TD align="left"> log(address,uint256,string,uint256)</TD></TR><TR><TD align="left"> log(address,uint256,string,string)</TD></TR><TR><TD align="left"> log(address,uint256,string,bool)</TD></TR><TR><TD align="left"> log(address,uint256,string,address)</TD></TR><TR><TD align="left"> log(address,uint256,bool,uint256)</TD></TR><TR><TD align="left"> log(address,uint256,bool,string)</TD></TR><TR><TD align="left"> log(address,uint256,bool,bool)</TD></TR><TR><TD align="left"> log(address,uint256,bool,address)</TD></TR><TR><TD align="left"> log(address,uint256,address,uint256)</TD></TR><TR><TD align="left"> log(address,uint256,address,string)</TD></TR><TR><TD align="left"> log(address,uint256,address,bool)</TD></TR><TR><TD align="left"> log(address,uint256,address,address)</TD></TR><TR><TD align="left"> log(address,string,uint256,uint256)</TD></TR><TR><TD align="left"> log(address,string,uint256,string)</TD></TR><TR><TD align="left"> log(address,string,uint256,bool)</TD></TR><TR><TD align="left"> log(address,string,uint256,address)</TD></TR><TR><TD align="left"> log(address,string,string,uint256)</TD></TR><TR><TD align="left"> log(address,string,string,string)</TD></TR><TR><TD align="left"> log(address,string,string,bool)</TD></TR><TR><TD align="left"> log(address,string,string,address)</TD></TR><TR><TD align="left"> log(address,string,bool,uint256)</TD></TR><TR><TD align="left"> log(address,string,bool,string)</TD></TR><TR><TD align="left"> log(address,string,bool,bool)</TD></TR><TR><TD align="left"> log(address,string,bool,address)</TD></TR><TR><TD align="left"> log(address,string,address,uint256)</TD></TR><TR><TD align="left"> log(address,string,address,string)</TD></TR><TR><TD align="left"> log(address,string,address,bool)</TD></TR><TR><TD align="left"> log(address,string,address,address)</TD></TR><TR><TD align="left"> log(address,bool,uint256,uint256)</TD></TR><TR><TD align="left"> log(address,bool,uint256,string)</TD></TR><TR><TD align="left"> log(address,bool,uint256,bool)</TD></TR><TR><TD align="left"> log(address,bool,uint256,address)</TD></TR><TR><TD align="left"> log(address,bool,string,uint256)</TD></TR><TR><TD align="left"> log(address,bool,string,string)</TD></TR><TR><TD align="left"> log(address,bool,string,bool)</TD></TR><TR><TD align="left"> log(address,bool,string,address)</TD></TR><TR><TD align="left"> log(address,bool,bool,uint256)</TD></TR><TR><TD align="left"> log(address,bool,bool,string)</TD></TR><TR><TD align="left"> log(address,bool,bool,bool)</TD></TR><TR><TD align="left"> log(address,bool,bool,address)</TD></TR><TR><TD align="left"> log(address,bool,address,uint256)</TD></TR><TR><TD align="left"> log(address,bool,address,string)</TD></TR><TR><TD align="left"> log(address,bool,address,bool)</TD></TR><TR><TD align="left"> log(address,bool,address,address)</TD></TR><TR><TD align="left"> log(address,address,uint256,uint256)</TD></TR><TR><TD align="left"> log(address,address,uint256,string)</TD></TR><TR><TD align="left"> log(address,address,uint256,bool)</TD></TR><TR><TD align="left"> log(address,address,uint256,address)</TD></TR><TR><TD align="left"> log(address,address,string,uint256)</TD></TR><TR><TD align="left"> log(address,address,string,string)</TD></TR><TR><TD align="left"> log(address,address,string,bool)</TD></TR><TR><TD align="left"> log(address,address,string,address)</TD></TR><TR><TD align="left"> log(address,address,bool,uint256)</TD></TR><TR><TD align="left"> log(address,address,bool,string)</TD></TR><TR><TD align="left"> log(address,address,bool,bool)</TD></TR><TR><TD align="left"> log(address,address,bool,address)</TD></TR><TR><TD align="left"> log(address,address,address,uint256)</TD></TR><TR><TD align="left"> log(address,address,address,string)</TD></TR><TR><TD align="left"> log(address,address,address,bool)</TD></TR><TR><TD align="left"> log(address,address,address,address)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> CONSOLE_ADDRESS</TD></TR></TABLE> >];
console2[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>console2</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _sendLogPayload(bytes)</TD></TR><TR><TD align="left"> log()</TD></TR><TR><TD align="left"> logInt(int256)</TD></TR><TR><TD align="left"> logUint(uint256)</TD></TR><TR><TD align="left"> logString(string)</TD></TR><TR><TD align="left"> logBool(bool)</TD></TR><TR><TD align="left"> logAddress(address)</TD></TR><TR><TD align="left"> logBytes(bytes)</TD></TR><TR><TD align="left"> logBytes1(bytes1)</TD></TR><TR><TD align="left"> logBytes2(bytes2)</TD></TR><TR><TD align="left"> logBytes3(bytes3)</TD></TR><TR><TD align="left"> logBytes4(bytes4)</TD></TR><TR><TD align="left"> logBytes5(bytes5)</TD></TR><TR><TD align="left"> logBytes6(bytes6)</TD></TR><TR><TD align="left"> logBytes7(bytes7)</TD></TR><TR><TD align="left"> logBytes8(bytes8)</TD></TR><TR><TD align="left"> logBytes9(bytes9)</TD></TR><TR><TD align="left"> logBytes10(bytes10)</TD></TR><TR><TD align="left"> logBytes11(bytes11)</TD></TR><TR><TD align="left"> logBytes12(bytes12)</TD></TR><TR><TD align="left"> logBytes13(bytes13)</TD></TR><TR><TD align="left"> logBytes14(bytes14)</TD></TR><TR><TD align="left"> logBytes15(bytes15)</TD></TR><TR><TD align="left"> logBytes16(bytes16)</TD></TR><TR><TD align="left"> logBytes17(bytes17)</TD></TR><TR><TD align="left"> logBytes18(bytes18)</TD></TR><TR><TD align="left"> logBytes19(bytes19)</TD></TR><TR><TD align="left"> logBytes20(bytes20)</TD></TR><TR><TD align="left"> logBytes21(bytes21)</TD></TR><TR><TD align="left"> logBytes22(bytes22)</TD></TR><TR><TD align="left"> logBytes23(bytes23)</TD></TR><TR><TD align="left"> logBytes24(bytes24)</TD></TR><TR><TD align="left"> logBytes25(bytes25)</TD></TR><TR><TD align="left"> logBytes26(bytes26)</TD></TR><TR><TD align="left"> logBytes27(bytes27)</TD></TR><TR><TD align="left"> logBytes28(bytes28)</TD></TR><TR><TD align="left"> logBytes29(bytes29)</TD></TR><TR><TD align="left"> logBytes30(bytes30)</TD></TR><TR><TD align="left"> logBytes31(bytes31)</TD></TR><TR><TD align="left"> logBytes32(bytes32)</TD></TR><TR><TD align="left"> log(uint256)</TD></TR><TR><TD align="left"> log(int256)</TD></TR><TR><TD align="left"> log(string)</TD></TR><TR><TD align="left"> log(bool)</TD></TR><TR><TD align="left"> log(address)</TD></TR><TR><TD align="left"> log(uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,string)</TD></TR><TR><TD align="left"> log(uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,address)</TD></TR><TR><TD align="left"> log(string,uint256)</TD></TR><TR><TD align="left"> log(string,int256)</TD></TR><TR><TD align="left"> log(string,string)</TD></TR><TR><TD align="left"> log(string,bool)</TD></TR><TR><TD align="left"> log(string,address)</TD></TR><TR><TD align="left"> log(bool,uint256)</TD></TR><TR><TD align="left"> log(bool,string)</TD></TR><TR><TD align="left"> log(bool,bool)</TD></TR><TR><TD align="left"> log(bool,address)</TD></TR><TR><TD align="left"> log(address,uint256)</TD></TR><TR><TD align="left"> log(address,string)</TD></TR><TR><TD align="left"> log(address,bool)</TD></TR><TR><TD align="left"> log(address,address)</TD></TR><TR><TD align="left"> log(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,uint256,string)</TD></TR><TR><TD align="left"> log(uint256,uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,uint256,address)</TD></TR><TR><TD align="left"> log(uint256,string,uint256)</TD></TR><TR><TD align="left"> log(uint256,string,string)</TD></TR><TR><TD align="left"> log(uint256,string,bool)</TD></TR><TR><TD align="left"> log(uint256,string,address)</TD></TR><TR><TD align="left"> log(uint256,bool,uint256)</TD></TR><TR><TD align="left"> log(uint256,bool,string)</TD></TR><TR><TD align="left"> log(uint256,bool,bool)</TD></TR><TR><TD align="left"> log(uint256,bool,address)</TD></TR><TR><TD align="left"> log(uint256,address,uint256)</TD></TR><TR><TD align="left"> log(uint256,address,string)</TD></TR><TR><TD align="left"> log(uint256,address,bool)</TD></TR><TR><TD align="left"> log(uint256,address,address)</TD></TR><TR><TD align="left"> log(string,uint256,uint256)</TD></TR><TR><TD align="left"> log(string,uint256,string)</TD></TR><TR><TD align="left"> log(string,uint256,bool)</TD></TR><TR><TD align="left"> log(string,uint256,address)</TD></TR><TR><TD align="left"> log(string,string,uint256)</TD></TR><TR><TD align="left"> log(string,string,string)</TD></TR><TR><TD align="left"> log(string,string,bool)</TD></TR><TR><TD align="left"> log(string,string,address)</TD></TR><TR><TD align="left"> log(string,bool,uint256)</TD></TR><TR><TD align="left"> log(string,bool,string)</TD></TR><TR><TD align="left"> log(string,bool,bool)</TD></TR><TR><TD align="left"> log(string,bool,address)</TD></TR><TR><TD align="left"> log(string,address,uint256)</TD></TR><TR><TD align="left"> log(string,address,string)</TD></TR><TR><TD align="left"> log(string,address,bool)</TD></TR><TR><TD align="left"> log(string,address,address)</TD></TR><TR><TD align="left"> log(bool,uint256,uint256)</TD></TR><TR><TD align="left"> log(bool,uint256,string)</TD></TR><TR><TD align="left"> log(bool,uint256,bool)</TD></TR><TR><TD align="left"> log(bool,uint256,address)</TD></TR><TR><TD align="left"> log(bool,string,uint256)</TD></TR><TR><TD align="left"> log(bool,string,string)</TD></TR><TR><TD align="left"> log(bool,string,bool)</TD></TR><TR><TD align="left"> log(bool,string,address)</TD></TR><TR><TD align="left"> log(bool,bool,uint256)</TD></TR><TR><TD align="left"> log(bool,bool,string)</TD></TR><TR><TD align="left"> log(bool,bool,bool)</TD></TR><TR><TD align="left"> log(bool,bool,address)</TD></TR><TR><TD align="left"> log(bool,address,uint256)</TD></TR><TR><TD align="left"> log(bool,address,string)</TD></TR><TR><TD align="left"> log(bool,address,bool)</TD></TR><TR><TD align="left"> log(bool,address,address)</TD></TR><TR><TD align="left"> log(address,uint256,uint256)</TD></TR><TR><TD align="left"> log(address,uint256,string)</TD></TR><TR><TD align="left"> log(address,uint256,bool)</TD></TR><TR><TD align="left"> log(address,uint256,address)</TD></TR><TR><TD align="left"> log(address,string,uint256)</TD></TR><TR><TD align="left"> log(address,string,string)</TD></TR><TR><TD align="left"> log(address,string,bool)</TD></TR><TR><TD align="left"> log(address,string,address)</TD></TR><TR><TD align="left"> log(address,bool,uint256)</TD></TR><TR><TD align="left"> log(address,bool,string)</TD></TR><TR><TD align="left"> log(address,bool,bool)</TD></TR><TR><TD align="left"> log(address,bool,address)</TD></TR><TR><TD align="left"> log(address,address,uint256)</TD></TR><TR><TD align="left"> log(address,address,string)</TD></TR><TR><TD align="left"> log(address,address,bool)</TD></TR><TR><TD align="left"> log(address,address,address)</TD></TR><TR><TD align="left"> log(uint256,uint256,uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,uint256,uint256,string)</TD></TR><TR><TD align="left"> log(uint256,uint256,uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,uint256,uint256,address)</TD></TR><TR><TD align="left"> log(uint256,uint256,string,uint256)</TD></TR><TR><TD align="left"> log(uint256,uint256,string,string)</TD></TR><TR><TD align="left"> log(uint256,uint256,string,bool)</TD></TR><TR><TD align="left"> log(uint256,uint256,string,address)</TD></TR><TR><TD align="left"> log(uint256,uint256,bool,uint256)</TD></TR><TR><TD align="left"> log(uint256,uint256,bool,string)</TD></TR><TR><TD align="left"> log(uint256,uint256,bool,bool)</TD></TR><TR><TD align="left"> log(uint256,uint256,bool,address)</TD></TR><TR><TD align="left"> log(uint256,uint256,address,uint256)</TD></TR><TR><TD align="left"> log(uint256,uint256,address,string)</TD></TR><TR><TD align="left"> log(uint256,uint256,address,bool)</TD></TR><TR><TD align="left"> log(uint256,uint256,address,address)</TD></TR><TR><TD align="left"> log(uint256,string,uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,string,uint256,string)</TD></TR><TR><TD align="left"> log(uint256,string,uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,string,uint256,address)</TD></TR><TR><TD align="left"> log(uint256,string,string,uint256)</TD></TR><TR><TD align="left"> log(uint256,string,string,string)</TD></TR><TR><TD align="left"> log(uint256,string,string,bool)</TD></TR><TR><TD align="left"> log(uint256,string,string,address)</TD></TR><TR><TD align="left"> log(uint256,string,bool,uint256)</TD></TR><TR><TD align="left"> log(uint256,string,bool,string)</TD></TR><TR><TD align="left"> log(uint256,string,bool,bool)</TD></TR><TR><TD align="left"> log(uint256,string,bool,address)</TD></TR><TR><TD align="left"> log(uint256,string,address,uint256)</TD></TR><TR><TD align="left"> log(uint256,string,address,string)</TD></TR><TR><TD align="left"> log(uint256,string,address,bool)</TD></TR><TR><TD align="left"> log(uint256,string,address,address)</TD></TR><TR><TD align="left"> log(uint256,bool,uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,bool,uint256,string)</TD></TR><TR><TD align="left"> log(uint256,bool,uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,bool,uint256,address)</TD></TR><TR><TD align="left"> log(uint256,bool,string,uint256)</TD></TR><TR><TD align="left"> log(uint256,bool,string,string)</TD></TR><TR><TD align="left"> log(uint256,bool,string,bool)</TD></TR><TR><TD align="left"> log(uint256,bool,string,address)</TD></TR><TR><TD align="left"> log(uint256,bool,bool,uint256)</TD></TR><TR><TD align="left"> log(uint256,bool,bool,string)</TD></TR><TR><TD align="left"> log(uint256,bool,bool,bool)</TD></TR><TR><TD align="left"> log(uint256,bool,bool,address)</TD></TR><TR><TD align="left"> log(uint256,bool,address,uint256)</TD></TR><TR><TD align="left"> log(uint256,bool,address,string)</TD></TR><TR><TD align="left"> log(uint256,bool,address,bool)</TD></TR><TR><TD align="left"> log(uint256,bool,address,address)</TD></TR><TR><TD align="left"> log(uint256,address,uint256,uint256)</TD></TR><TR><TD align="left"> log(uint256,address,uint256,string)</TD></TR><TR><TD align="left"> log(uint256,address,uint256,bool)</TD></TR><TR><TD align="left"> log(uint256,address,uint256,address)</TD></TR><TR><TD align="left"> log(uint256,address,string,uint256)</TD></TR><TR><TD align="left"> log(uint256,address,string,string)</TD></TR><TR><TD align="left"> log(uint256,address,string,bool)</TD></TR><TR><TD align="left"> log(uint256,address,string,address)</TD></TR><TR><TD align="left"> log(uint256,address,bool,uint256)</TD></TR><TR><TD align="left"> log(uint256,address,bool,string)</TD></TR><TR><TD align="left"> log(uint256,address,bool,bool)</TD></TR><TR><TD align="left"> log(uint256,address,bool,address)</TD></TR><TR><TD align="left"> log(uint256,address,address,uint256)</TD></TR><TR><TD align="left"> log(uint256,address,address,string)</TD></TR><TR><TD align="left"> log(uint256,address,address,bool)</TD></TR><TR><TD align="left"> log(uint256,address,address,address)</TD></TR><TR><TD align="left"> log(string,uint256,uint256,uint256)</TD></TR><TR><TD align="left"> log(string,uint256,uint256,string)</TD></TR><TR><TD align="left"> log(string,uint256,uint256,bool)</TD></TR><TR><TD align="left"> log(string,uint256,uint256,address)</TD></TR><TR><TD align="left"> log(string,uint256,string,uint256)</TD></TR><TR><TD align="left"> log(string,uint256,string,string)</TD></TR><TR><TD align="left"> log(string,uint256,string,bool)</TD></TR><TR><TD align="left"> log(string,uint256,string,address)</TD></TR><TR><TD align="left"> log(string,uint256,bool,uint256)</TD></TR><TR><TD align="left"> log(string,uint256,bool,string)</TD></TR><TR><TD align="left"> log(string,uint256,bool,bool)</TD></TR><TR><TD align="left"> log(string,uint256,bool,address)</TD></TR><TR><TD align="left"> log(string,uint256,address,uint256)</TD></TR><TR><TD align="left"> log(string,uint256,address,string)</TD></TR><TR><TD align="left"> log(string,uint256,address,bool)</TD></TR><TR><TD align="left"> log(string,uint256,address,address)</TD></TR><TR><TD align="left"> log(string,string,uint256,uint256)</TD></TR><TR><TD align="left"> log(string,string,uint256,string)</TD></TR><TR><TD align="left"> log(string,string,uint256,bool)</TD></TR><TR><TD align="left"> log(string,string,uint256,address)</TD></TR><TR><TD align="left"> log(string,string,string,uint256)</TD></TR><TR><TD align="left"> log(string,string,string,string)</TD></TR><TR><TD align="left"> log(string,string,string,bool)</TD></TR><TR><TD align="left"> log(string,string,string,address)</TD></TR><TR><TD align="left"> log(string,string,bool,uint256)</TD></TR><TR><TD align="left"> log(string,string,bool,string)</TD></TR><TR><TD align="left"> log(string,string,bool,bool)</TD></TR><TR><TD align="left"> log(string,string,bool,address)</TD></TR><TR><TD align="left"> log(string,string,address,uint256)</TD></TR><TR><TD align="left"> log(string,string,address,string)</TD></TR><TR><TD align="left"> log(string,string,address,bool)</TD></TR><TR><TD align="left"> log(string,string,address,address)</TD></TR><TR><TD align="left"> log(string,bool,uint256,uint256)</TD></TR><TR><TD align="left"> log(string,bool,uint256,string)</TD></TR><TR><TD align="left"> log(string,bool,uint256,bool)</TD></TR><TR><TD align="left"> log(string,bool,uint256,address)</TD></TR><TR><TD align="left"> log(string,bool,string,uint256)</TD></TR><TR><TD align="left"> log(string,bool,string,string)</TD></TR><TR><TD align="left"> log(string,bool,string,bool)</TD></TR><TR><TD align="left"> log(string,bool,string,address)</TD></TR><TR><TD align="left"> log(string,bool,bool,uint256)</TD></TR><TR><TD align="left"> log(string,bool,bool,string)</TD></TR><TR><TD align="left"> log(string,bool,bool,bool)</TD></TR><TR><TD align="left"> log(string,bool,bool,address)</TD></TR><TR><TD align="left"> log(string,bool,address,uint256)</TD></TR><TR><TD align="left"> log(string,bool,address,string)</TD></TR><TR><TD align="left"> log(string,bool,address,bool)</TD></TR><TR><TD align="left"> log(string,bool,address,address)</TD></TR><TR><TD align="left"> log(string,address,uint256,uint256)</TD></TR><TR><TD align="left"> log(string,address,uint256,string)</TD></TR><TR><TD align="left"> log(string,address,uint256,bool)</TD></TR><TR><TD align="left"> log(string,address,uint256,address)</TD></TR><TR><TD align="left"> log(string,address,string,uint256)</TD></TR><TR><TD align="left"> log(string,address,string,string)</TD></TR><TR><TD align="left"> log(string,address,string,bool)</TD></TR><TR><TD align="left"> log(string,address,string,address)</TD></TR><TR><TD align="left"> log(string,address,bool,uint256)</TD></TR><TR><TD align="left"> log(string,address,bool,string)</TD></TR><TR><TD align="left"> log(string,address,bool,bool)</TD></TR><TR><TD align="left"> log(string,address,bool,address)</TD></TR><TR><TD align="left"> log(string,address,address,uint256)</TD></TR><TR><TD align="left"> log(string,address,address,string)</TD></TR><TR><TD align="left"> log(string,address,address,bool)</TD></TR><TR><TD align="left"> log(string,address,address,address)</TD></TR><TR><TD align="left"> log(bool,uint256,uint256,uint256)</TD></TR><TR><TD align="left"> log(bool,uint256,uint256,string)</TD></TR><TR><TD align="left"> log(bool,uint256,uint256,bool)</TD></TR><TR><TD align="left"> log(bool,uint256,uint256,address)</TD></TR><TR><TD align="left"> log(bool,uint256,string,uint256)</TD></TR><TR><TD align="left"> log(bool,uint256,string,string)</TD></TR><TR><TD align="left"> log(bool,uint256,string,bool)</TD></TR><TR><TD align="left"> log(bool,uint256,string,address)</TD></TR><TR><TD align="left"> log(bool,uint256,bool,uint256)</TD></TR><TR><TD align="left"> log(bool,uint256,bool,string)</TD></TR><TR><TD align="left"> log(bool,uint256,bool,bool)</TD></TR><TR><TD align="left"> log(bool,uint256,bool,address)</TD></TR><TR><TD align="left"> log(bool,uint256,address,uint256)</TD></TR><TR><TD align="left"> log(bool,uint256,address,string)</TD></TR><TR><TD align="left"> log(bool,uint256,address,bool)</TD></TR><TR><TD align="left"> log(bool,uint256,address,address)</TD></TR><TR><TD align="left"> log(bool,string,uint256,uint256)</TD></TR><TR><TD align="left"> log(bool,string,uint256,string)</TD></TR><TR><TD align="left"> log(bool,string,uint256,bool)</TD></TR><TR><TD align="left"> log(bool,string,uint256,address)</TD></TR><TR><TD align="left"> log(bool,string,string,uint256)</TD></TR><TR><TD align="left"> log(bool,string,string,string)</TD></TR><TR><TD align="left"> log(bool,string,string,bool)</TD></TR><TR><TD align="left"> log(bool,string,string,address)</TD></TR><TR><TD align="left"> log(bool,string,bool,uint256)</TD></TR><TR><TD align="left"> log(bool,string,bool,string)</TD></TR><TR><TD align="left"> log(bool,string,bool,bool)</TD></TR><TR><TD align="left"> log(bool,string,bool,address)</TD></TR><TR><TD align="left"> log(bool,string,address,uint256)</TD></TR><TR><TD align="left"> log(bool,string,address,string)</TD></TR><TR><TD align="left"> log(bool,string,address,bool)</TD></TR><TR><TD align="left"> log(bool,string,address,address)</TD></TR><TR><TD align="left"> log(bool,bool,uint256,uint256)</TD></TR><TR><TD align="left"> log(bool,bool,uint256,string)</TD></TR><TR><TD align="left"> log(bool,bool,uint256,bool)</TD></TR><TR><TD align="left"> log(bool,bool,uint256,address)</TD></TR><TR><TD align="left"> log(bool,bool,string,uint256)</TD></TR><TR><TD align="left"> log(bool,bool,string,string)</TD></TR><TR><TD align="left"> log(bool,bool,string,bool)</TD></TR><TR><TD align="left"> log(bool,bool,string,address)</TD></TR><TR><TD align="left"> log(bool,bool,bool,uint256)</TD></TR><TR><TD align="left"> log(bool,bool,bool,string)</TD></TR><TR><TD align="left"> log(bool,bool,bool,bool)</TD></TR><TR><TD align="left"> log(bool,bool,bool,address)</TD></TR><TR><TD align="left"> log(bool,bool,address,uint256)</TD></TR><TR><TD align="left"> log(bool,bool,address,string)</TD></TR><TR><TD align="left"> log(bool,bool,address,bool)</TD></TR><TR><TD align="left"> log(bool,bool,address,address)</TD></TR><TR><TD align="left"> log(bool,address,uint256,uint256)</TD></TR><TR><TD align="left"> log(bool,address,uint256,string)</TD></TR><TR><TD align="left"> log(bool,address,uint256,bool)</TD></TR><TR><TD align="left"> log(bool,address,uint256,address)</TD></TR><TR><TD align="left"> log(bool,address,string,uint256)</TD></TR><TR><TD align="left"> log(bool,address,string,string)</TD></TR><TR><TD align="left"> log(bool,address,string,bool)</TD></TR><TR><TD align="left"> log(bool,address,string,address)</TD></TR><TR><TD align="left"> log(bool,address,bool,uint256)</TD></TR><TR><TD align="left"> log(bool,address,bool,string)</TD></TR><TR><TD align="left"> log(bool,address,bool,bool)</TD></TR><TR><TD align="left"> log(bool,address,bool,address)</TD></TR><TR><TD align="left"> log(bool,address,address,uint256)</TD></TR><TR><TD align="left"> log(bool,address,address,string)</TD></TR><TR><TD align="left"> log(bool,address,address,bool)</TD></TR><TR><TD align="left"> log(bool,address,address,address)</TD></TR><TR><TD align="left"> log(address,uint256,uint256,uint256)</TD></TR><TR><TD align="left"> log(address,uint256,uint256,string)</TD></TR><TR><TD align="left"> log(address,uint256,uint256,bool)</TD></TR><TR><TD align="left"> log(address,uint256,uint256,address)</TD></TR><TR><TD align="left"> log(address,uint256,string,uint256)</TD></TR><TR><TD align="left"> log(address,uint256,string,string)</TD></TR><TR><TD align="left"> log(address,uint256,string,bool)</TD></TR><TR><TD align="left"> log(address,uint256,string,address)</TD></TR><TR><TD align="left"> log(address,uint256,bool,uint256)</TD></TR><TR><TD align="left"> log(address,uint256,bool,string)</TD></TR><TR><TD align="left"> log(address,uint256,bool,bool)</TD></TR><TR><TD align="left"> log(address,uint256,bool,address)</TD></TR><TR><TD align="left"> log(address,uint256,address,uint256)</TD></TR><TR><TD align="left"> log(address,uint256,address,string)</TD></TR><TR><TD align="left"> log(address,uint256,address,bool)</TD></TR><TR><TD align="left"> log(address,uint256,address,address)</TD></TR><TR><TD align="left"> log(address,string,uint256,uint256)</TD></TR><TR><TD align="left"> log(address,string,uint256,string)</TD></TR><TR><TD align="left"> log(address,string,uint256,bool)</TD></TR><TR><TD align="left"> log(address,string,uint256,address)</TD></TR><TR><TD align="left"> log(address,string,string,uint256)</TD></TR><TR><TD align="left"> log(address,string,string,string)</TD></TR><TR><TD align="left"> log(address,string,string,bool)</TD></TR><TR><TD align="left"> log(address,string,string,address)</TD></TR><TR><TD align="left"> log(address,string,bool,uint256)</TD></TR><TR><TD align="left"> log(address,string,bool,string)</TD></TR><TR><TD align="left"> log(address,string,bool,bool)</TD></TR><TR><TD align="left"> log(address,string,bool,address)</TD></TR><TR><TD align="left"> log(address,string,address,uint256)</TD></TR><TR><TD align="left"> log(address,string,address,string)</TD></TR><TR><TD align="left"> log(address,string,address,bool)</TD></TR><TR><TD align="left"> log(address,string,address,address)</TD></TR><TR><TD align="left"> log(address,bool,uint256,uint256)</TD></TR><TR><TD align="left"> log(address,bool,uint256,string)</TD></TR><TR><TD align="left"> log(address,bool,uint256,bool)</TD></TR><TR><TD align="left"> log(address,bool,uint256,address)</TD></TR><TR><TD align="left"> log(address,bool,string,uint256)</TD></TR><TR><TD align="left"> log(address,bool,string,string)</TD></TR><TR><TD align="left"> log(address,bool,string,bool)</TD></TR><TR><TD align="left"> log(address,bool,string,address)</TD></TR><TR><TD align="left"> log(address,bool,bool,uint256)</TD></TR><TR><TD align="left"> log(address,bool,bool,string)</TD></TR><TR><TD align="left"> log(address,bool,bool,bool)</TD></TR><TR><TD align="left"> log(address,bool,bool,address)</TD></TR><TR><TD align="left"> log(address,bool,address,uint256)</TD></TR><TR><TD align="left"> log(address,bool,address,string)</TD></TR><TR><TD align="left"> log(address,bool,address,bool)</TD></TR><TR><TD align="left"> log(address,bool,address,address)</TD></TR><TR><TD align="left"> log(address,address,uint256,uint256)</TD></TR><TR><TD align="left"> log(address,address,uint256,string)</TD></TR><TR><TD align="left"> log(address,address,uint256,bool)</TD></TR><TR><TD align="left"> log(address,address,uint256,address)</TD></TR><TR><TD align="left"> log(address,address,string,uint256)</TD></TR><TR><TD align="left"> log(address,address,string,string)</TD></TR><TR><TD align="left"> log(address,address,string,bool)</TD></TR><TR><TD align="left"> log(address,address,string,address)</TD></TR><TR><TD align="left"> log(address,address,bool,uint256)</TD></TR><TR><TD align="left"> log(address,address,bool,string)</TD></TR><TR><TD align="left"> log(address,address,bool,bool)</TD></TR><TR><TD align="left"> log(address,address,bool,address)</TD></TR><TR><TD align="left"> log(address,address,address,uint256)</TD></TR><TR><TD align="left"> log(address,address,address,string)</TD></TR><TR><TD align="left"> log(address,address,address,bool)</TD></TR><TR><TD align="left"> log(address,address,address,address)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> CONSOLE_ADDRESS</TD></TR></TABLE> >];
IMulticall3[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IMulticall3</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> aggregate(IMulticall3.Call[])</TD></TR><TR><TD align="left"> aggregate3(IMulticall3.Call3[])</TD></TR><TR><TD align="left"> aggregate3Value(IMulticall3.Call3Value[])</TD></TR><TR><TD align="left"> blockAndAggregate(IMulticall3.Call[])</TD></TR><TR><TD align="left"> getBasefee()</TD></TR><TR><TD align="left"> getBlockHash(uint256)</TD></TR><TR><TD align="left"> getBlockNumber()</TD></TR><TR><TD align="left"> getChainId()</TD></TR><TR><TD align="left"> getCurrentBlockCoinbase()</TD></TR><TR><TD align="left"> getCurrentBlockDifficulty()</TD></TR><TR><TD align="left"> getCurrentBlockGasLimit()</TD></TR><TR><TD align="left"> getCurrentBlockTimestamp()</TD></TR><TR><TD align="left"> getEthBalance(address)</TD></TR><TR><TD align="left"> getLastBlockHash()</TD></TR><TR><TD align="left"> tryAggregate(bool,IMulticall3.Call[])</TD></TR><TR><TD align="left"> tryBlockAndAggregate(bool,IMulticall3.Call[])</TD></TR></TABLE> >];
SanctuaryScriptMainNet -> SanctuaryScriptBase;
SanctuaryScriptMainNet[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>SanctuaryScriptMainNet</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> run()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> SAN_ORIGIN_ADDRESS</TD></TR><TR><TD align="left"> _levelPrices</TD></TR></TABLE> >];
SanctuaryScriptBase -> Script;
SanctuaryScriptBase[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>SanctuaryScriptBase</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> createContract(address,uint256[6])</TD></TR></TABLE> >];
SanctuaryScriptTestNet -> SanctuaryScriptBase;
SanctuaryScriptTestNet[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>SanctuaryScriptTestNet</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> run()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> SAN_ORIGIN_ADDRESS</TD></TR><TR><TD align="left"> _levelPrices</TD></TR></TABLE> >];
MusicBox -> Base721 [ label="1" ];
MusicBox -> IMusicBox [ label="2" ];
MusicBox -> ERC2981ContractWideRoyalties [ label="3" ];
MusicBox[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>MusicBox</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setCharactersAddress(address)</TD></TR><TR><TD align="left"> setLockupTime(uint256,uint256,address)</TD></TR><TR><TD align="left"><font color="#FFA500"> mintFromSantuary(address,IMusicBox.MusicBoxLevel)</font></TD></TR><TR><TD align="left"> setRoyalties(address,uint256)</TD></TR><TR><TD align="left"> batchTransferFrom(address,address,uint256[])</TD></TR><TR><TD align="left"><font color="#FFA500"> batchSafeTransferFrom(address,address,uint256[],bytes)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> tokenURI(uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> supportsInterface(bytes4)</font></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"><font color="#FFA500"> _canTransfer(uint256)</font></TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> MAX_ROYALTIES_PCT</TD></TR><TR><TD align="left"> SANCTUARY_ADDRESS</TD></TR><TR><TD align="left"> charactersAddress</TD></TR><TR><TD align="left"> lockupTime</TD></TR><TR><TD align="left"> tokenLevel</TD></TR></TABLE> >];
Sanctuary -> TokenLevels [ label="1" ];
Sanctuary -> IRebirth [ label="2" ];
Sanctuary -> Base721 [ label="3" ];
Sanctuary[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Sanctuary</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> tokensOwnedByAddress(address)</TD></TR><TR><TD align="left"> updatePartnerAddress(address,bool)</TD></TR><TR><TD align="left"> mintWith3UnboundSanOrigin(uint256[],ITokenLevels.TokenLevel)</TD></TR><TR><TD align="left"> mintFromSoulbound(uint256,ITokenLevels.TokenLevel)</TD></TR><TR><TD align="left"> mintFromPartner(uint256,ITokenLevels.TokenLevel,uint256,address)</TD></TR><TR><TD align="left"><font color="#FFA500"> tokenURI(uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> approve(address,uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> setApprovalForAll(address,bool)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> transferFrom(address,address,uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> safeTransferFrom(address,address,uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> safeTransferFrom(address,address,uint256,bytes)</font></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _processChecks3Unbound(uint256[])</TD></TR><TR><TD align="left"> _checkUserOwnsToken(uint256,address)</TD></TR><TR><TD align="left"> _checkOriginTokensAreBound(uint256)</TD></TR><TR><TD align="left"> _checkOriginTokensNotBound(uint256)</TD></TR><TR><TD align="left"> _batchBurnMintRebirth(uint256[],ITokenLevels.TokenLevel,IMusicBox.MusicBoxLevel)</TD></TR><TR><TD align="left"> _mintRebirth(uint256,ITokenLevels.TokenLevel,ITokenLevels.TokenLevel,IMusicBox.MusicBoxLevel)</TD></TR><TR><TD align="left"> _batchRebirth(ITokenLevels.TokenLevel,uint256[])</TD></TR><TR><TD align="left"> _rebirth(ITokenLevels.TokenLevel,ITokenLevels.TokenLevel,uint256,uint256)</TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> ORIGIN_TOKENS_REQUIRED_TO_REBIRTH</TD></TR><TR><TD align="left"> SAN_ORIGIN_ADDRESS</TD></TR><TR><TD align="left"> MUSIC_BOX_ADDRESS</TD></TR><TR><TD align="left"> originSanctuaryTokenMap</TD></TR><TR><TD align="left"> usedTokens</TD></TR><TR><TD align="left"> isValidContract</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> BURN_ADDRESS</TD></TR></TABLE> >];
IERC2981Royalties[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IERC2981Royalties</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> royaltyInfo(uint256,uint256)</TD></TR></TABLE> >];
IBase721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IBase721</B></TD></TR></TABLE> >];
IERC721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IERC721</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> balanceOf(address)</TD></TR><TR><TD align="left"> ownerOf(uint256)</TD></TR><TR><TD align="left"> safeTransferFrom(address,address,uint256,bytes)</TD></TR><TR><TD align="left"> safeTransferFrom(address,address,uint256)</TD></TR><TR><TD align="left"> transferFrom(address,address,uint256)</TD></TR><TR><TD align="left"> approve(address,uint256)</TD></TR><TR><TD align="left"> setApprovalForAll(address,bool)</TD></TR><TR><TD align="left"> getApproved(uint256)</TD></TR><TR><TD align="left"> isApprovedForAll(address,address)</TD></TR></TABLE> >];
IERC721Receiver[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IERC721Receiver</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> onERC721Received(address,address,uint256,bytes)</TD></TR></TABLE> >];
ITokenLevels[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ITokenLevels</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> upgradeTokenLevel(uint256,ITokenLevels.TokenLevel)</TD></TR></TABLE> >];
IMusicBox[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IMusicBox</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> batchSafeTransferFrom(address,address,uint256[],bytes)</TD></TR><TR><TD align="left"> mintFromSantuary(address,IMusicBox.MusicBoxLevel)</TD></TR></TABLE> >];
ISanOriginNFT[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ISanOriginNFT</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> tokenLevel(uint256)</TD></TR><TR><TD align="left"> batchSafeTransferFrom(address,address,uint256[],bytes)</TD></TR><TR><TD align="left"> safeTransferFrom(address,address,uint256,bytes)</TD></TR></TABLE> >];
IRebirth[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IRebirth</B></TD></TR></TABLE> >];
ISanctuary[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ISanctuary</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> balanceOf(address)</TD></TR><TR><TD align="left"> ownerOf(uint256)</TD></TR><TR><TD align="left"> tokensOwnedByAddress(address)</TD></TR></TABLE> >];
TokenLevels -> ITokenLevels [ label="1" ];
TokenLevels -> Ownable [ label="2" ];
TokenLevels -> IBase721 [ label="3" ];
TokenLevels[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TokenLevels</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setLevelPrices(uint256[6])</TD></TR><TR><TD align="left"> userMaxTokenLevel(address)</TD></TR><TR><TD align="left"><font color="#FFA500"> upgradeTokenLevel(uint256,ITokenLevels.TokenLevel)</font></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _upgradeTokenLevel(uint256,ITokenLevels.TokenLevel,ITokenLevels.TokenLevel)</TD></TR><TR><TD align="left"> _checkTokenPrice(ITokenLevels.TokenLevel,ITokenLevels.TokenLevel)</TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> NUM_OF_LEVELS</TD></TR><TR><TD align="left"> levelPrice</TD></TR><TR><TD align="left"> tokenLevel</TD></TR></TABLE> >];
ERC2981Base -> ERC165 [ label="1" ];
ERC2981Base -> IERC2981Royalties [ label="2" ];
ERC2981Base[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ERC2981Base</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"><font color="#FFA500"> supportsInterface(bytes4)</font></TD></TR></TABLE> >];
ERC2981ContractWideRoyalties -> ERC2981Base;
ERC2981ContractWideRoyalties[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ERC2981ContractWideRoyalties</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"><font color="#FFA500"> royaltyInfo(uint256,uint256)</font></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _setRoyalties(address,uint256)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> _royalties</TD></TR></TABLE> >];
Base721 -> IERC721 [ label="1" ];
Base721 -> ERC721 [ label="2" ];
Base721 -> TokenRescuer [ label="3" ];
Base721 -> IBase721 [ label="4" ];
Base721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Base721</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setBaseURI(string)</TD></TR><TR><TD align="left"> setContractURI(string)</TD></TR><TR><TD align="left"> tokenOfOwnerByIndex(address,uint256)</TD></TR><TR><TD align="left"> isOwnerOf(address,uint256[])</TD></TR><TR><TD align="left"> walletOfOwner(address)</TD></TR><TR><TD align="left"> safeWithdrawAll()</TD></TR><TR><TD align="left"> withdraw(uint256)</TD></TR><TR><TD align="left"> receive()</TD></TR><TR><TD align="left"> fallback()</TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _getTokenIdAndIncrement()</TD></TR><TR><TD align="left"> _exists(uint256)</TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> MAX_SUPPLY</TD></TR><TR><TD align="left"> baseURI</TD></TR><TR><TD align="left"> contractURI</TD></TR><TR><TD><BR/></TD></TR><TR><TD align="left" border="1"><font color="#777777" point-size="10">'balanceOf(address)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'ownerOf(uint256)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'safeTransferFrom(address,address,uint256,bytes)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'safeTransferFrom(address,address,uint256)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'transferFrom(address,address,uint256)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'approve(address,uint256)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'setApprovalForAll(address,bool)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.</font></TD></TR></TABLE> >];
ERC721 -> IERC721;
ERC721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ERC721</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> tokenURI(uint256)</TD></TR><TR><TD align="left"><font color="#FFA500"> ownerOf(uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> balanceOf(address)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> approve(address,uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> setApprovalForAll(address,bool)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> transferFrom(address,address,uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> safeTransferFrom(address,address,uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> safeTransferFrom(address,address,uint256,bytes)</font></TD></TR><TR><TD align="left"> supportsInterface(bytes4)</TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _canTransfer(uint256)</TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> name</TD></TR><TR><TD align="left"> symbol</TD></TR><TR><TD align="left"> totalSupply</TD></TR><TR><TD align="left"> getApproved</TD></TR><TR><TD align="left"> isApprovedForAll</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> _startingTokenID</TD></TR><TR><TD align="left"> _ownerOf</TD></TR></TABLE> >];
ERC721TokenReceiver[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ERC721TokenReceiver</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> onERC721Received(address,address,uint256,bytes)</TD></TR></TABLE> >];
IStuckERC20[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IStuckERC20</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> transfer(address,uint256)</TD></TR></TABLE> >];
IStuckERC721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IStuckERC721</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> safeTransferFrom(address,address,uint256)</TD></TR></TABLE> >];
SafeERC20[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>SafeERC20</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> safeTransfer(IStuckERC20,address,uint256)</TD></TR><TR><TD align="left"> _callOptionalReturn(IStuckERC20,bytes)</TD></TR></TABLE> >];
TokenRescuer -> Ownable;
TokenRescuer[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TokenRescuer</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> rescueBatchERC20(address,address[],uint256[])</TD></TR><TR><TD align="left"> rescueBatchERC721(address,address[],uint256[][])</TD></TR><TR><TD align="left"> rescueERC20(address,address,uint256)</TD></TR><TR><TD align="left"> rescueERC721(address,address,uint256)</TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _rescueERC20(address,address,uint256)</TD></TR><TR><TD align="left"> _rescueERC721(address,address,uint256)</TD></TR></TABLE> >];
Address[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Address</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> isContract(address)</TD></TR><TR><TD align="left"> functionCall(address,bytes)</TD></TR><TR><TD align="left"> functionCall(address,bytes,string)</TD></TR><TR><TD align="left"> functionCallWithValue(address,bytes,uint256)</TD></TR><TR><TD align="left"> functionCallWithValue(address,bytes,uint256,string)</TD></TR><TR><TD align="left"> verifyCallResult(bool,bytes,string)</TD></TR></TABLE> >];
Ownable[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Ownable</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> owner()</TD></TR><TR><TD align="left"> transferOwnership(address)</TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _transferOwnership(address)</TD></TR><TR><TD align="left"><I>Modifiers:</I></TD></TR><TR><TD align="left"> onlyOwner()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> _owner</TD></TR></TABLE> >];
Strings[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Strings</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> toString(uint256)</TD></TR><TR><TD align="left"> toHexString(uint256)</TD></TR><TR><TD align="left"> toHexString(uint256,uint256)</TD></TR><TR><TD align="left"> toHexString(address)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> _HEX_SYMBOLS</TD></TR><TR><TD align="left"> _ADDRESS_LENGTH</TD></TR></TABLE> >];
ERC165 -> IERC165;
ERC165[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ERC165</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"><font color="#FFA500"> supportsInterface(bytes4)</font></TD></TR></TABLE> >];
IERC165[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IERC165</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> supportsInterface(bytes4)</TD></TR></TABLE> >];
TestERC721MusicBox -> TestERC721Base;
TestERC721MusicBox[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestERC721MusicBox</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testGetBaseURI()</TD></TR></TABLE> >];
TestERC721Sanctuary -> TestERC721Base;
TestERC721Sanctuary[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestERC721Sanctuary</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testGetBaseURI()</TD></TR></TABLE> >];
TestERC721Base -> TestBase [ label="1" ];
TestERC721Base -> MintWithBoundedOrigin [ label="2" ];
TestERC721Base -> MintWithThreeUnboundedOrigin [ label="3" ];
TestERC721Base -> MintWithPartnerTokens [ label="4" ];
TestERC721Base[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestERC721Base</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> testFailSendNftToErc721ContractWithNoERC721Receiver()</TD></TR><TR><TD align="left"> testSetBaseURI()</TD></TR><TR><TD align="left"> testSetContractURI()</TD></TR><TR><TD align="left"> testTokenOfOwnerByIndex()</TD></TR><TR><TD align="left"> testFailTokenOfOwnerByIndex_IndexGreaterThanBalance()</TD></TR><TR><TD align="left"> testFailTokenOfOwnerByIndex_OwnerIndexOutOfBounds()</TD></TR><TR><TD align="left"> testIsOwnerOf()</TD></TR><TR><TD align="left"> testFailIsOwnerOf()</TD></TR><TR><TD align="left"> testFailIsOwnerOf_AmountExceedsSupply()</TD></TR><TR><TD align="left"> testWalletOfOwner()</TD></TR><TR><TD align="left"> testWalletOfOwnerZeroOwned()</TD></TR><TR><TD align="left"> testFailWalletOfOwner()</TD></TR><TR><TD align="left"> testWithdraw()</TD></TR><TR><TD align="left"> testSafeWithdrawAll()</TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _getBaseURI(uint256,uint256,uint256)</TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> users</TD></TR><TR><TD align="left"> expected</TD></TR><TR><TD align="left"> notExpected</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> erc721Contract<font color="blue" POINT-SIZE="10"> (Base721)</font></TD></TR><TR><TD align="left"> erc721ContractAddress</TD></TR></TABLE> >];
TestLevels -> MintWithBoundedOrigin;
TestLevels[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestLevels</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testSetLevelPrices()</TD></TR><TR><TD align="left"> testFailSetLevelPricesPriceIncrease()</TD></TR><TR><TD align="left"> testFailSetLevelPricesNotOwner(address)</TD></TR><TR><TD align="left"> testUserMaxTokenLevel()</TD></TR><TR><TD align="left"> testFailUserMaxTokenLevelNoTokens()</TD></TR><TR><TD align="left"> testFailUpgradeTokenTokenNotOwned(address)</TD></TR><TR><TD align="left"> testFailUpgradeTokenTokenUnBound()</TD></TR><TR><TD align="left"> testFailUpgradeTokenLevelAlreadyReached(address)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> users</TD></TR><TR><TD align="left"> newLevelPrices</TD></TR><TR><TD align="left"> incorrectLevelPrices</TD></TR></TABLE> >];
Strings[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Strings</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> toString(uint256)</TD></TR><TR><TD align="left"> toHexString(uint256)</TD></TR><TR><TD align="left"> toHexString(uint256,uint256)</TD></TR><TR><TD align="left"> toHexString(address)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> _HEX_SYMBOLS</TD></TR><TR><TD align="left"> _ADDRESS_LENGTH</TD></TR></TABLE> >];
ECDSA[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ECDSA</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _throwError(ECDSA.RecoverError)</TD></TR><TR><TD align="left"> tryRecover(bytes32,bytes)</TD></TR><TR><TD align="left"> recover(bytes32,bytes)</TD></TR><TR><TD align="left"> tryRecover(bytes32,bytes32,bytes32)</TD></TR><TR><TD align="left"> recover(bytes32,bytes32,bytes32)</TD></TR><TR><TD align="left"> tryRecover(bytes32,uint8,bytes32,bytes32)</TD></TR><TR><TD align="left"> recover(bytes32,uint8,bytes32,bytes32)</TD></TR><TR><TD align="left"> toEthSignedMessageHash(bytes32)</TD></TR><TR><TD align="left"> toEthSignedMessageHash(bytes)</TD></TR><TR><TD align="left"> toTypedDataHash(bytes32,bytes32)</TD></TR></TABLE> >];
ISAN721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ISAN721</B></TD></TR></TABLE> >];
Context[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Context</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _msgSender()</TD></TR></TABLE> >];
Ownable -> Context;
Ownable[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Ownable</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> owner()</TD></TR><TR><TD align="left"> transferOwnership(address)</TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _transferOwnership(address)</TD></TR><TR><TD align="left"><I>Modifiers:</I></TD></TR><TR><TD align="left"> onlyOwner()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> _owner</TD></TR></TABLE> >];
IERC165[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IERC165</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> supportsInterface(bytes4)</TD></TR></TABLE> >];
IERC721 -> IERC165;
IERC721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IERC721</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> balanceOf(address)</TD></TR><TR><TD align="left"> ownerOf(uint256)</TD></TR><TR><TD align="left"> safeTransferFrom(address,address,uint256,bytes)</TD></TR><TR><TD align="left"> safeTransferFrom(address,address,uint256)</TD></TR><TR><TD align="left"> transferFrom(address,address,uint256)</TD></TR><TR><TD align="left"> approve(address,uint256)</TD></TR><TR><TD align="left"> setApprovalForAll(address,bool)</TD></TR><TR><TD align="left"> getApproved(uint256)</TD></TR><TR><TD align="left"> isApprovedForAll(address,address)</TD></TR></TABLE> >];
IERC721Receiver[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IERC721Receiver</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> onERC721Received(address,address,uint256,bytes)</TD></TR></TABLE> >];
IERC721Metadata -> IERC721;
IERC721Metadata[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IERC721Metadata</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> name()</TD></TR><TR><TD align="left"> symbol()</TD></TR><TR><TD align="left"> tokenURI(uint256)</TD></TR></TABLE> >];
ERC165 -> IERC165;
ERC165[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ERC165</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"><font color="#FFA500"> supportsInterface(bytes4)</font></TD></TR></TABLE> >];
Address[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>Address</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> isContract(address)</TD></TR><TR><TD align="left"> functionCall(address,bytes)</TD></TR><TR><TD align="left"> functionCall(address,bytes,string)</TD></TR><TR><TD align="left"> functionCallWithValue(address,bytes,uint256)</TD></TR><TR><TD align="left"> functionCallWithValue(address,bytes,uint256,string)</TD></TR><TR><TD align="left"> verifyCallResult(bool,bytes,string)</TD></TR></TABLE> >];
ERC721 -> Context [ label="1" ];
ERC721 -> ERC165 [ label="2" ];
ERC721 -> IERC721 [ label="3" ];
ERC721 -> IERC721Metadata [ label="4" ];
ERC721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ERC721</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"><font color="#FFA500"> supportsInterface(bytes4)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> balanceOf(address)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> ownerOf(uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> name()</font></TD></TR><TR><TD align="left"><font color="#FFA500"> symbol()</font></TD></TR><TR><TD align="left"><font color="#FFA500"> approve(address,uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> getApproved(uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> setApprovalForAll(address,bool)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> isApprovedForAll(address,address)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> transferFrom(address,address,uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> safeTransferFrom(address,address,uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> safeTransferFrom(address,address,uint256,bytes)</font></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _internalTokenID(uint256)</TD></TR><TR><TD align="left"> _safeTransfer(address,address,uint256,bytes)</TD></TR><TR><TD align="left"> _exists(uint256)</TD></TR><TR><TD align="left"> _isApprovedOrOwner(address,uint256)</TD></TR><TR><TD align="left"> _safeMint(address,uint256)</TD></TR><TR><TD align="left"> _safeMint(address,uint256,bytes)</TD></TR><TR><TD align="left"> _mint(address,uint256)</TD></TR><TR><TD align="left"> _burn(uint256)</TD></TR><TR><TD align="left"> _transfer(address,address,uint256)</TD></TR><TR><TD align="left"> _approve(address,uint256)</TD></TR><TR><TD align="left"> _checkOnERC721Received(address,address,uint256,bytes)</TD></TR><TR><TD align="left"> _beforeTokenTransfer(address,address,uint256)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> _name</TD></TR><TR><TD align="left"> _symbol</TD></TR><TR><TD align="left"> _startingTokenID</TD></TR><TR><TD align="left"> _owners</TD></TR><TR><TD align="left"> _tokenApprovals</TD></TR><TR><TD align="left"> _operatorApprovals</TD></TR></TABLE> >];
IERC721Enumerable -> IERC721;
IERC721Enumerable[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IERC721Enumerable</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> totalSupply()</TD></TR><TR><TD align="left"> tokenOfOwnerByIndex(address,uint256)</TD></TR><TR><TD align="left"> tokenByIndex(uint256)</TD></TR></TABLE> >];
ERC721Enumerable -> ERC721 [ label="1" ];
ERC721Enumerable -> IERC721Enumerable [ label="2" ];
ERC721Enumerable[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ERC721Enumerable</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"><font color="#FFA500"> supportsInterface(bytes4)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> totalSupply()</font></TD></TR><TR><TD align="left"><font color="#FFA500"> tokenByIndex(uint256)</font></TD></TR><TR><TD align="left"><font color="#FFA500"> tokenOfOwnerByIndex(address,uint256)</font></TD></TR><TR><TD><BR/></TD></TR><TR><TD align="left" border="1"><font color="#777777" point-size="10">'balanceOf(address)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'ownerOf(uint256)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'safeTransferFrom(address,address,uint256,bytes)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'safeTransferFrom(address,address,uint256)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'transferFrom(address,address,uint256)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'approve(address,uint256)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'setApprovalForAll(address,bool)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'getApproved(uint256)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.<BR/>'isApprovedForAll(address,address)' collides in inherited contracts IERC721, ERC721 where ERC721 is chosen.</font></TD></TR></TABLE> >];
IERC2981Royalties[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IERC2981Royalties</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> royaltyInfo(uint256,uint256)</TD></TR></TABLE> >];
ERC2981Base -> ERC165 [ label="1" ];
ERC2981Base -> IERC2981Royalties [ label="2" ];
ERC2981Base[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ERC2981Base</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"><font color="#FFA500"> supportsInterface(bytes4)</font></TD></TR></TABLE> >];
ERC2981ContractWideRoyalties -> ERC2981Base;
ERC2981ContractWideRoyalties[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ERC2981ContractWideRoyalties</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"><font color="#FFA500"> royaltyInfo(uint256,uint256)</font></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _setRoyalties(address,uint256)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> _royalties</TD></TR></TABLE> >];
IStuckERC20[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IStuckERC20</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> transfer(address,uint256)</TD></TR></TABLE> >];
IStuckERC721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>IStuckERC721</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> safeTransferFrom(address,address,uint256)</TD></TR></TABLE> >];
SafeERC20[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>SafeERC20</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> safeTransfer(IStuckERC20,address,uint256)</TD></TR><TR><TD align="left"> _callOptionalReturn(IStuckERC20,bytes)</TD></TR></TABLE> >];
TokenRescuer -> Ownable;
TokenRescuer[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TokenRescuer</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> rescueBatchERC20(address,address[],uint256[])</TD></TR><TR><TD align="left"> rescueERC20(address,address,uint256)</TD></TR><TR><TD align="left"> rescueBatchERC721(address,address[],uint256[][])</TD></TR><TR><TD align="left"> rescueERC721(address,address,uint256)</TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _rescueERC20(address,address,uint256)</TD></TR><TR><TD align="left"> _rescueERC721(address,address,uint256)</TD></TR></TABLE> >];
SAN721 -> ISAN721 [ label="1" ];
SAN721 -> Ownable [ label="2" ];
SAN721 -> ERC721Enumerable [ label="3" ];
SAN721 -> ERC2981ContractWideRoyalties [ label="4" ];
SAN721 -> TokenRescuer [ label="5" ];
SAN721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>SAN721</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> mintWhitelist(uint256,uint256,bytes)</TD></TR><TR><TD align="left"> mintPublic(uint256)</TD></TR><TR><TD align="left"> mintPromo(uint256)</TD></TR><TR><TD align="left"> setSaleState(ISAN721.SaleState)</TD></TR><TR><TD align="left"> setCouponSigner(address)</TD></TR><TR><TD align="left"> setContractURI(string)</TD></TR><TR><TD align="left"> setBaseURI(string,bool)</TD></TR><TR><TD align="left"> withdrawAll()</TD></TR><TR><TD align="left"> withdraw(uint256)</TD></TR><TR><TD align="left"> setRoyalties(address,uint256)</TD></TR><TR><TD align="left"> batchTransferFrom(address,address,uint256[])</TD></TR><TR><TD align="left"> batchSafeTransferFrom(address,address,uint256[],bytes)</TD></TR><TR><TD align="left"> isOwnerOf(address,uint256[])</TD></TR><TR><TD align="left"> walletOfOwner(address)</TD></TR><TR><TD align="left"> isValidSignature(bytes,address,uint256,address,uint256)</TD></TR><TR><TD align="left"><font color="#FFA500"> supportsInterface(bytes4)</font></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _cappedMint(uint256)</TD></TR><TR><TD align="left"> _mint(uint256)</TD></TR><TR><TD align="left"><I>Modifiers:</I></TD></TR><TR><TD align="left"> onlyInSaleState(ISAN721.SaleState)</TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> MAX_SUPPLY</TD></TR><TR><TD align="left"> MAX_MINT_PER_ADDRESS</TD></TR><TR><TD align="left"> MAX_ROYALTIES_PCT</TD></TR><TR><TD align="left"> baseURI</TD></TR><TR><TD align="left"> contractURI</TD></TR><TR><TD align="left"> isRevealed</TD></TR><TR><TD align="left"> saleState</TD></TR><TR><TD align="left"> couponSigner</TD></TR><TR><TD align="left"> userMinted</TD></TR></TABLE> >];
SANSoulbindable[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>SANSoulbindable</B></TD></TR></TABLE> >];
SANOrigin -> SAN721 [ label="1" ];
SANOrigin -> SANSoulbindable [ label="2" ];
SANOrigin[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>SANOrigin</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> soulbind(uint256,SANSoulbindable.SoulboundLevel)</TD></TR><TR><TD align="left"> _The_static_percolates_our_unlit_sky___()</TD></TR><TR><TD align="left"> __Still_tension_is_exhausted_by_our_pain___()</TD></TR><TR><TD align="left"> setSoulbindingEnabled(bool)</TD></TR><TR><TD align="left"> ___As_a_warm_purr_prepares_to_amplify___()</TD></TR><TR><TD align="left"> ____Our_apprehensions_cross_a_sonic_plane___()</TD></TR><TR><TD align="left"> addUserSoulbindCredits(address[],uint256[])</TD></TR><TR><TD align="left"> _____Initiating_first_transmissions_now___()</TD></TR><TR><TD align="left"> ______At_last_our_pitch_black_planet_twinkles_to___()</TD></TR><TR><TD align="left"> setLevelPrices(uint256[])</TD></TR><TR><TD align="left"> _______We_waited_for_permission_to_avow___()</TD></TR><TR><TD align="left"> ________That_seizing_silence_take_an_altered_hue___()</TD></TR><TR><TD align="left"> userMaxSoulboundLevel(address)</TD></TR><TR><TD align="left"> _________Baptized_to_the_tune_of_our_refound_rite___()</TD></TR><TR><TD align="left"> __________Though_mute_shade_has_reborn_our_infancy___()</TD></TR><TR><TD align="left"><font color="#FFA500"> tokenURI(uint256)</font></TD></TR><TR><TD align="left"> ___________We_rise_from_ruins_of_eternal_night___()</TD></TR><TR><TD align="left"> ____________Saved_solely_by_Suncore_Light_Industry___()</TD></TR><TR><TD align="left"><font color="#FFA500"> approve(address,uint256)</font></TD></TR><TR><TD align="left"> _____________FOR_YEARS_OUR_SENSES_WERE_UNDER_ATTACK___()</TD></TR><TR><TD align="left"> ______________UNTIL_NEW_SENSORS_WERE_TRANSPORTED_BACK___()</TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"><font color="#FFA500"> _beforeTokenTransfer(address,address,uint256)</font></TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> ___SUNCORE___</TD></TR><TR><TD align="left"> ___SANJI___</TD></TR><TR><TD align="left"> ___SAN___</TD></TR><TR><TD align="left"> __XIN__</TD></TR><TR><TD align="left"> _S_O_R_A_</TD></TR><TR><TD align="left"> MAX_LEVEL_FOUR_SOULBINDS</TD></TR><TR><TD align="left"> levelFourSoulbindsLeft</TD></TR><TR><TD align="left"> soulbindingEnabled</TD></TR><TR><TD align="left"> tokenLevel</TD></TR><TR><TD align="left"> levelPrice</TD></TR><TR><TD align="left"> userSoulbindCredits</TD></TR></TABLE> >];
MockERC721 -> ERC721 [ label="1" ];
MockERC721 -> Ownable [ label="2" ];
MockERC721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>MockERC721</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> transferAll(address,uint256,uint256)</TD></TR><TR><TD align="left"> _transferFrom(address,address,uint256)</TD></TR><TR><TD align="left"><font color="#FFA500"> tokenURI(uint256)</font></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _mint(address,uint256)</TD></TR></TABLE> >];
MockSanOrigin -> SANOrigin;
MockSanOrigin[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>MockSanOrigin</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> makeBound()</TD></TR><TR><TD align="left"> makeAllBound()</TD></TR><TR><TD align="left"> TransferUnbound(address,uint256,uint256)</TD></TR><TR><TD align="left"> TransferBound(address,uint256,uint256)</TD></TR><TR><TD align="left"> _safeTransferFrom(address,address,uint256)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> levelPrices</TD></TR></TABLE> >];
TestMusicBox -> MintWithThreeUnboundedOrigin;
TestMusicBox[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestMusicBox</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testOwnerOfMusicBox()</TD></TR><TR><TD align="left"> testSetCharactersAddress()</TD></TR><TR><TD align="left"> testSetLockUpTime()</TD></TR><TR><TD align="left"> testFailSetLockUpTime_WrongCallingAddress()</TD></TR><TR><TD align="left"> testFailSetLockUpTime_LockupTimeZero()</TD></TR><TR><TD align="left"> testFailSetLockUpTime_NotOwner()</TD></TR><TR><TD align="left"> testFailMintFromSanctuary(address)</TD></TR><TR><TD align="left"> testSetRoyalties()</TD></TR><TR><TD align="left"> testTransferFrom()</TD></TR><TR><TD align="left"> testBatchSafeTransferFrom()</TD></TR><TR><TD align="left"> testBatchTransferFrom()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> char</TD></TR><TR><TD align="left"> users</TD></TR><TR><TD align="left"> batchFails</TD></TR><TR><TD align="left"> mulitpleMusicBox</TD></TR></TABLE> >];
TestMaxMintWithBoundedOrigin -> MintWithBoundedOrigin;
TestMaxMintWithBoundedOrigin[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestMaxMintWithBoundedOrigin</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testMAXMintWithBoundedOrigin()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> users</TD></TR></TABLE> >];
TestMaxMintWithPartnerTokens -> MintWithPartnerTokens;
TestMaxMintWithPartnerTokens[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestMaxMintWithPartnerTokens</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testMAXMintWithPartnerTokens()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> users</TD></TR></TABLE> >];
TestMaxMintWithThreeUnboundedOrigin -> MintWithThreeUnboundedOrigin;
TestMaxMintWithThreeUnboundedOrigin[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestMaxMintWithThreeUnboundedOrigin</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testMAXMintWithMultiSanOrigin()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> users</TD></TR></TABLE> >];
TestMintWithBoundedOrigin -> MintWithBoundedOrigin;
TestMintWithBoundedOrigin[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestMintWithBoundedOrigin</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testMintWithSanSoundBound()</TD></TR><TR><TD align="left"> testUpgradeTokenLevelSoulBound()</TD></TR><TR><TD align="left"> testFailMintIsNotBound()</TD></TR><TR><TD align="left"> testFailMintNotOwned()</TD></TR><TR><TD align="left"> testUnableToApproveOrTransfersWhenSoulBound()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> users</TD></TR></TABLE> >];
TestMintWithPartnerTokens -> MintWithPartnerTokens;
TestMintWithPartnerTokens[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestMintWithPartnerTokens</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testMintWithPartnerSingle()</TD></TR><TR><TD align="left"> testUpgradeTokenLevelPartners()</TD></TR><TR><TD align="left"> testFailMintIsBound()</TD></TR><TR><TD align="left"> testFailMintNotOwnedOrigin()</TD></TR><TR><TD align="left"> testUnableToApproveOrTransfersWhenSoulBound()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> users</TD></TR></TABLE> >];
TestMintWithThreeUnboundedOrigin -> MintWithThreeUnboundedOrigin;
TestMintWithThreeUnboundedOrigin[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestMintWithThreeUnboundedOrigin</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testMintWithMultiSanOrigin()</TD></TR><TR><TD align="left"> testUpgradeTokenLevelThreeUnbound()</TD></TR><TR><TD align="left"> testFailMintIsBound()</TD></TR><TR><TD align="left"> testFailMintNotOwned()</TD></TR><TR><TD align="left"> testUnableToApproveOrTransfersWhenSoulBound()</TD></TR><TR><TD align="left"> testFailTooManyTokens()</TD></TR><TR><TD align="left"> testFailTooFewTokens()</TD></TR><TR><TD align="left"> testFailNoTokens()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> users</TD></TR></TABLE> >];
TestSanctuary -> TestBase;
TestSanctuary[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestSanctuary</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testCheckOriginAddressIsValid()</TD></TR><TR><TD align="left"> testFailCheckOriginAddressIsValid(address)</TD></TR><TR><TD align="left"> testAddContractToValidListFuzzy(address)</TD></TR><TR><TD align="left"> testFailAddContractToValidList()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> users</TD></TR></TABLE> >];
MintWithBoundedOrigin -> TestBase;
MintWithBoundedOrigin[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>MintWithBoundedOrigin</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _mintWithSanSoundBound(uint256,address)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> matchIn</TD></TR></TABLE> >];
MintWithPartnerTokens -> TestBase;
MintWithPartnerTokens[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>MintWithPartnerTokens</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _mintWithPartner(address,uint256,uint256,address)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> matchInPartner</TD></TR></TABLE> >];
MintWithThreeUnboundedOrigin -> TestBase;
MintWithThreeUnboundedOrigin[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>MintWithThreeUnboundedOrigin</B></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _mintWithMultiSanOrigin(uint256[],address)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> matchIn3Unbounded</TD></TR></TABLE> >];
TestBase -> Test;
TestBase[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestBase</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> _upgradeTokenLevelSoulBound(uint256,uint256,uint256)</TD></TR><TR><TD align="left"> uint256Sequential(uint256,uint256)</TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _setUp(address[],bool)</TD></TR><TR><TD align="left"> _initOWNERs()</TD></TR><TR><TD align="left"> _initUsers(address[])</TD></TR><TR><TD align="left"> _initShared()</TD></TR><TR><TD align="left"> _deployContracts()</TD></TR><TR><TD align="left"> _transferTokens(address[])</TD></TR><TR><TD align="left"> _approveAllTokens(uint256[])</TD></TR><TR><TD align="left"> _approveToken(uint256)</TD></TR><TR><TD align="left"> _addContracttoValidList(address,bool)</TD></TR><TR><TD align="left"> _getPrice(uint256,uint256)</TD></TR><TR><TD align="left"> _checkSanctuaryTokenLevel(ITokenLevels.TokenLevel,uint256)</TD></TR><TR><TD align="left"> _checkMusicBoxTokenLevel(IMusicBox.MusicBoxLevel,uint256,address)</TD></TR><TR><TD align="left"> _checkAfterMint(uint256[],uint256[],ITokenLevels.TokenLevel,address)</TD></TR><TR><TD align="left"> __checkAfterMint(uint256,uint256,ITokenLevels.TokenLevel,address)</TD></TR><TR><TD align="left"> _failTransfer()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> MOCK_MAX_SUPPLY</TD></TR><TR><TD align="left"> sanctuary<font color="blue" POINT-SIZE="10"> (Sanctuary)</font></TD></TR><TR><TD align="left"> musicBox<font color="blue" POINT-SIZE="10"> (MusicBox)</font></TD></TR><TR><TD align="left"> mockERC721Single<font color="blue" POINT-SIZE="10"> (MockERC721)</font></TD></TR><TR><TD align="left"> mockSanOrigin<font color="blue" POINT-SIZE="10"> (MockSanOrigin)</font></TD></TR><TR><TD align="left"> startBaseURI</TD></TR><TR><TD align="left"> newBaseURI</TD></TR><TR><TD align="left"> startContractURI</TD></TR><TR><TD align="left"> newContractURI</TD></TR><TR><TD align="left"> mockERC721SingleAddress</TD></TR><TR><TD align="left"> SAN_ORIGIN_ADDRESS</TD></TR><TR><TD align="left"> musicBoxAddress</TD></TR><TR><TD align="left"> SANCTUARY_ADDRESS</TD></TR><TR><TD align="left"> OWNER</TD></TR><TR><TD align="left"> noTokensUser</TD></TR><TR><TD align="left"> _levelPrices</TD></TR><TR><TD align="left"> notBoundTokens</TD></TR><TR><TD align="left"> isBoundTokens</TD></TR><TR><TD align="left"> tooManyNotBoundTokens</TD></TR><TR><TD align="left"> tooManyIsBoundTokens</TD></TR><TR><TD align="left"> notBoundTokensSingle</TD></TR><TR><TD align="left"> isBoundTokensSingle</TD></TR><TR><TD align="left"> isBoundTokensMismatched</TD></TR><TR><TD align="left"> noTokens</TD></TR><TR><TD align="left"> multipleNotBoundTokens</TD></TR><TR><TD align="left"> isBoundSingleToken</TD></TR><TR><TD align="left"> notBoundSingleToken</TD></TR><TR><TD align="left"> partnerToken</TD></TR><TR><TD align="left"> expectedMultiple</TD></TR><TR><TD align="left"> expectedSingle</TD></TR></TABLE> >];
ReEnter[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ReEnter</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> attack()</TD></TR><TR><TD align="left"> receive()</TD></TR><TR><TD align="left"> fallback()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> sanctuary<font color="blue" POINT-SIZE="10"> (Sanctuary)</font></TD></TR><TR><TD align="left"> tokens</TD></TR><TR><TD align="left"> _cur</TD></TR><TR><TD align="left"> _new</TD></TR><TR><TD align="left"> level</TD></TR><TR><TD align="left"> val</TD></TR></TABLE> >];
TestReEnter -> TestBase;
TestReEnter[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestReEnter</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testAttack()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> renter<font color="blue" POINT-SIZE="10"> (ReEnter)</font></TD></TR><TR><TD align="left"> renterAddress</TD></TR><TR><TD align="left"> user</TD></TR><TR><TD align="left"> users</TD></TR><TR><TD align="left"> _cur</TD></TR><TR><TD align="left"> _new</TD></TR><TR><TD align="left"> level</TD></TR></TABLE> >];
ArrayCounter[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>ArrayCounter</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> arrayLength()</TD></TR><TR><TD align="left"> getCounter()</TD></TR><TR><TD align="left"> addArray(uint256)</TD></TR><TR><TD align="left"> updateCounter()</TD></TR><TR><TD align="left"> addOwnerByTokenMap(uint256)</TD></TR><TR><TD align="left"> addOwnerByTokenArray(address)</TD></TR><TR><TD align="left"> tokenOfOwnerByIndex(address)</TD></TR><TR><TD align="left"> tokenOfOwnerByIndexMapped(address)</TD></TR><TR><TD align="left"><I>Public Variables:</I></TD></TR><TR><TD align="left"> ownerByTokenMap</TD></TR><TR><TD align="left"> _owners</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> array</TD></TR><TR><TD align="left"> counter</TD></TR></TABLE> >];
TestArrayCounter -> Test;
TestArrayCounter[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>TestArrayCounter</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> setUp()</TD></TR><TR><TD align="left"> testTokenOfOwnerByIndex()</TD></TR><TR><TD align="left"> testTokenOfOwnerByMapped()</TD></TR><TR><TD align="left"> testGetCounter()</TD></TR><TR><TD align="left"> testArrayLength()</TD></TR><TR><TD align="left"> testCounter()</TD></TR><TR><TD align="left"> testArray()</TD></TR><TR><TD align="left"> testAddOwnerByTokenArraySingle()</TD></TR><TR><TD align="left"> testAddOwnerByTokenArray()</TD></TR><TR><TD align="left"> testAddOwnerByTokenMap()</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> ac<font color="blue" POINT-SIZE="10"> (ArrayCounter)</font></TD></TR><TR><TD align="left"> findMe</TD></TR></TABLE> >];
MockERC721 -> ERC721 [ label="1" ];
MockERC721 -> Ownable [ label="2" ];
MockERC721[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>MockERC721</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> transferAll(address,uint256,uint256)</TD></TR><TR><TD align="left"> _transferFrom(address,address,uint256)</TD></TR><TR><TD align="left"><font color="#FFA500"> tokenURI(uint256)</font></TD></TR><TR><TD align="left"><I>Private Functions:</I></TD></TR><TR><TD align="left"> _mint(address,uint256)</TD></TR></TABLE> >];
MockSanOrigin -> SANOrigin;
MockSanOrigin[shape="box"label=< <TABLE border="0"><TR><TD align="center"><B>MockSanOrigin</B></TD></TR><TR><TD align="left"><I>Public Functions:</I></TD></TR><TR><TD align="left"> makeBound()</TD></TR><TR><TD align="left"> makeAllBound()</TD></TR><TR><TD align="left"> TransferUnbound(address,uint256,uint256)</TD></TR><TR><TD align="left"> TransferBound(address,uint256,uint256)</TD></TR><TR><TD align="left"> _safeTransferFrom(address,address,uint256)</TD></TR><TR><TD align="left"><I>Private Variables:</I></TD></TR><TR><TD align="left"> levelPrices</TD></TR></TABLE> >];
}