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
285
286
287
288
289
290
291
292
293
294
295
296
297
|
{
"schemaVersion": "2.0.0",
"contractName": "TestLibs",
"compilerOutput": {
"abi": [
{
"constant": true,
"inputs": [
{
"name": "numerator",
"type": "uint256"
},
{
"name": "denominator",
"type": "uint256"
},
{
"name": "target",
"type": "uint256"
}
],
"name": "publicGetPartialAmount",
"outputs": [
{
"name": "partialAmount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getDomainSeparatorSchemaHash",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"components": [
{
"name": "makerAssetFilledAmount",
"type": "uint256"
},
{
"name": "takerAssetFilledAmount",
"type": "uint256"
},
{
"name": "makerFeePaid",
"type": "uint256"
},
{
"name": "takerFeePaid",
"type": "uint256"
}
],
"name": "totalFillResults",
"type": "tuple"
},
{
"components": [
{
"name": "makerAssetFilledAmount",
"type": "uint256"
},
{
"name": "takerAssetFilledAmount",
"type": "uint256"
},
{
"name": "makerFeePaid",
"type": "uint256"
},
{
"name": "takerFeePaid",
"type": "uint256"
}
],
"name": "singleFillResults",
"type": "tuple"
}
],
"name": "publicAddFillResults",
"outputs": [
{
"components": [
{
"name": "makerAssetFilledAmount",
"type": "uint256"
},
{
"name": "takerAssetFilledAmount",
"type": "uint256"
},
{
"name": "makerFeePaid",
"type": "uint256"
},
{
"name": "takerFeePaid",
"type": "uint256"
}
],
"name": "",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getOrderSchemaHash",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "numerator",
"type": "uint256"
},
{
"name": "denominator",
"type": "uint256"
},
{
"name": "target",
"type": "uint256"
}
],
"name": "publicIsRoundingError",
"outputs": [
{
"name": "isError",
"type": "bool"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"components": [
{
"name": "makerAddress",
"type": "address"
},
{
"name": "takerAddress",
"type": "address"
},
{
"name": "feeRecipientAddress",
"type": "address"
},
{
"name": "senderAddress",
"type": "address"
},
{
"name": "makerAssetAmount",
"type": "uint256"
},
{
"name": "takerAssetAmount",
"type": "uint256"
},
{
"name": "makerFee",
"type": "uint256"
},
{
"name": "takerFee",
"type": "uint256"
},
{
"name": "expirationTimeSeconds",
"type": "uint256"
},
{
"name": "salt",
"type": "uint256"
},
{
"name": "makerAssetData",
"type": "bytes"
},
{
"name": "takerAssetData",
"type": "bytes"
}
],
"name": "order",
"type": "tuple"
}
],
"name": "publicGetOrderHash",
"outputs": [
{
"name": "orderHash",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "0x608060405234801561001057600080fd5b5061113c806100206000396000f3006080604052600436106100775763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663041e63fe811461007c578063494d9297146100b257806366758d7b146100c75780637d33c6ee146100f45780638ae6331614610109578063d980208814610136575b600080fd5b34801561008857600080fd5b5061009c610097366004610fb4565b610156565b6040516100a99190611077565b60405180910390f35b3480156100be57600080fd5b5061009c61016b565b3480156100d357600080fd5b506100e76100e2366004610f44565b61021b565b6040516100a99190611085565b34801561010057600080fd5b5061009c610236565b34801561011557600080fd5b50610129610124366004610fb4565b61047f565b6040516100a99190611069565b34801561014257600080fd5b5061009c610151366004610f7f565b61048c565b6000610163848484610497565b949350505050565b600060405160200180807f446f6d61696e536570617261746f72286164647265737320636f6e7472616374815260200160f860020a60290281525060210190506040516020818303038152906040526040518082805190602001908083835b602083106101e95780518252601f1990920191602091820191016101ca565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905090565b610223610cf7565b61022d83836104ac565b50815b92915050565b604080517f4f726465722800000000000000000000000000000000000000000000000000006020808301919091527f61646472657373206d616b6572416464726573732c000000000000000000000060268301527f616464726573732074616b6572416464726573732c0000000000000000000000603b8301527f6164647265737320666565526563697069656e74416464726573732c0000000060508301527f616464726573732073656e646572416464726573732c00000000000000000000606c8301527f75696e74323536206d616b65724173736574416d6f756e742c0000000000000060828301527f75696e743235362074616b65724173736574416d6f756e742c00000000000000609b8301527f75696e74323536206d616b65724665652c00000000000000000000000000000060b48301527f75696e743235362074616b65724665652c00000000000000000000000000000060c58301527f75696e743235362065787069726174696f6e54696d655365636f6e64732c000060d68301527f75696e743235362073616c742c0000000000000000000000000000000000000060f48301527f6279746573206d616b65724173736574446174612c00000000000000000000006101018301527f62797465732074616b65724173736574446174612c000000000000000000000061011683015260f860020a60290261012b830152825161010c81840301815261012c90920192839052815160009391829190840190808383602083106101e95780518252601f1990920191602091820191016101ca565b600061016384848461050e565b600061023082610564565b60006101636104a68584610ca6565b84610cd1565b815181516104ba9190610ce8565b8252602080830151908201516104d09190610ce8565b6020830152604080830151908201516104e99190610ce8565b6040830152606080830151908201516105029190610ce8565b60609092019190915250565b60008060008480151561051d57fe5b8685099150811515610532576000925061055b565b61055161054283620f4240610ca6565b61054c8887610ca6565b610cd1565b6103e88111935090505b50509392505050565b600060405160200180807f446f6d61696e536570617261746f72286164647265737320636f6e7472616374815260200160f860020a60290281525060210190506040516020818303038152906040526040518082805190602001908083835b602083106105e25780518252601f1990920191602091820191016105c3565b51815160209384036101000a600019018019909216911617905260408051929094018290038220306c0100000000000000000000000002838301528451601481850301815260349093019485905282519096509194508392508401908083835b602083106106615780518252601f199092019160209182019101610642565b51815160209384036101000a6000190180199092169116179052604080519290940182900382207f4f72646572280000000000000000000000000000000000000000000000000000838301527f61646472657373206d616b6572416464726573732c000000000000000000000060268401527f616464726573732074616b6572416464726573732c0000000000000000000000603b8401527f6164647265737320666565526563697069656e74416464726573732c0000000060508401527f616464726573732073656e646572416464726573732c00000000000000000000606c8401527f75696e74323536206d616b65724173736574416d6f756e742c0000000000000060828401527f75696e743235362074616b65724173736574416d6f756e742c00000000000000609b8401527f75696e74323536206d616b65724665652c00000000000000000000000000000060b48401527f75696e743235362074616b65724665652c00000000000000000000000000000060c58401527f75696e743235362065787069726174696f6e54696d655365636f6e64732c000060d68401527f75696e743235362073616c742c0000000000000000000000000000000000000060f48401527f6279746573206d616b65724173736574446174612c00000000000000000000006101018401527f62797465732074616b65724173736574446174612c000000000000000000000061011684015260f860020a60290261012b840152845180840361010c01815261012c9093019485905282519096509194508392508401908083835b602083106108cb5780518252601f1990920191602091820191016108ac565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846000015185602001518660400151876060015188608001518960a001518a60c001518b60e001518c61010001518d61012001518e61014001516040516020018082805190602001908083835b602083106109645780518252601f199092019160209182019101610945565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106109c75780518252601f1990920191602091820191016109a8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208f61016001516040516020018082805190602001908083835b60208310610a2c5780518252601f199092019160209182019101610a0d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a8f5780518252601f199092019160209182019101610a70565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020604051602001808d600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018c600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018b600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018a600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401898152602001888152602001878152602001868152602001858152602001848152602001836000191660001916815260200182600019166000191681526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310610beb5780518252601f199092019160209182019101610bcc565b51815160001960209485036101000a019081169019919091161790526040805194909201849003842084820199909952838201979097526060830195909552506080808201969096528351808203909601865260a001928390525050825190918291908401908083835b60208310610c745780518252601f199092019160209182019101610c55565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000828202831580610cc25750828482811515610cbf57fe5b04145b1515610cca57fe5b9392505050565b6000808284811515610cdf57fe5b04949350505050565b600082820183811015610cca57fe5b608060405190810160405280600081526020016000815260200160008152602001600081525090565b6000610cca82356110ea565b6000601f82018313610d3d57600080fd5b8135610d50610d4b826110ba565b611093565b91508082526020830160208301858383011115610d6c57600080fd5b610d778382846110f6565b50505092915050565b600060808284031215610d9257600080fd5b610d9c6080611093565b90506000610daa8484610f38565b8252506020610dbb84848301610f38565b6020830152506040610dcf84828501610f38565b6040830152506060610de384828501610f38565b60608301525092915050565b60006101808284031215610e0257600080fd5b610e0d610180611093565b90506000610e1b8484610d20565b8252506020610e2c84848301610d20565b6020830152506040610e4084828501610d20565b6040830152506060610e5484828501610d20565b6060830152506080610e6884828501610f38565b60808301525060a0610e7c84828501610f38565b60a08301525060c0610e9084828501610f38565b60c08301525060e0610ea484828501610f38565b60e083015250610100610eb984828501610f38565b61010083015250610120610ecf84828501610f38565b6101208301525061014082013567ffffffffffffffff811115610ef157600080fd5b610efd84828501610d2c565b6101408301525061016082013567ffffffffffffffff811115610f1f57600080fd5b610f2b84828501610d2c565b6101608301525092915050565b6000610cca82356110e7565b6000806101008385031215610f5857600080fd5b6000610f648585610d80565b9250506080610f7585828601610d80565b9150509250929050565b600060208284031215610f9157600080fd5b813567ffffffffffffffff811115610fa857600080fd5b61016384828501610def565b600080600060608486031215610fc957600080fd5b6000610fd58686610f38565b9350506020610fe686828701610f38565b9250506040610ff786828701610f38565b9150509250925092565b61100a816110e2565b82525050565b61100a816110e7565b8051608083019061102a8482611010565b50602082015161103d6020850182611010565b5060408201516110506040850182611010565b5060608201516110636060850182611010565b50505050565b602081016102308284611001565b602081016102308284611010565b608081016102308284611019565b60405181810167ffffffffffffffff811182821017156110b257600080fd5b604052919050565b600067ffffffffffffffff8211156110d157600080fd5b506020601f91909101601f19160190565b151590565b90565b600160a060020a031690565b828183375060009101525600a265627a7a723058204bc13d896203af712b87045a2f342ceef38f21588497ca8e24d4a51430f306cf6c6578706572696d656e74616cf50037",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x77 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x41E63FE DUP2 EQ PUSH2 0x7C JUMPI DUP1 PUSH4 0x494D9297 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x66758D7B EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x7D33C6EE EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x8AE63316 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xD9802088 EQ PUSH2 0x136 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0xFB4 JUMP JUMPDEST PUSH2 0x156 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x16B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF44 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1085 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x236 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH2 0x124 CALLDATASIZE PUSH1 0x4 PUSH2 0xFB4 JUMP JUMPDEST PUSH2 0x47F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0xF7F JUMP JUMPDEST PUSH2 0x48C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 DUP5 DUP5 DUP5 PUSH2 0x497 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x446F6D61696E536570617261746F72286164647265737320636F6E7472616374 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xF8 PUSH1 0x2 EXP PUSH1 0x29 MUL DUP2 MSTORE POP PUSH1 0x21 ADD SWAP1 POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1E9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x223 PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0x22D DUP4 DUP4 PUSH2 0x4AC JUMP JUMPDEST POP DUP2 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x4F72646572280000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x61646472657373206D616B6572416464726573732C0000000000000000000000 PUSH1 0x26 DUP4 ADD MSTORE PUSH32 0x616464726573732074616B6572416464726573732C0000000000000000000000 PUSH1 0x3B DUP4 ADD MSTORE PUSH32 0x6164647265737320666565526563697069656E74416464726573732C00000000 PUSH1 0x50 DUP4 ADD MSTORE PUSH32 0x616464726573732073656E646572416464726573732C00000000000000000000 PUSH1 0x6C DUP4 ADD MSTORE PUSH32 0x75696E74323536206D616B65724173736574416D6F756E742C00000000000000 PUSH1 0x82 DUP4 ADD MSTORE PUSH32 0x75696E743235362074616B65724173736574416D6F756E742C00000000000000 PUSH1 0x9B DUP4 ADD MSTORE PUSH32 0x75696E74323536206D616B65724665652C000000000000000000000000000000 PUSH1 0xB4 DUP4 ADD MSTORE PUSH32 0x75696E743235362074616B65724665652C000000000000000000000000000000 PUSH1 0xC5 DUP4 ADD MSTORE PUSH32 0x75696E743235362065787069726174696F6E54696D655365636F6E64732C0000 PUSH1 0xD6 DUP4 ADD MSTORE PUSH32 0x75696E743235362073616C742C00000000000000000000000000000000000000 PUSH1 0xF4 DUP4 ADD MSTORE PUSH32 0x6279746573206D616B65724173736574446174612C0000000000000000000000 PUSH2 0x101 DUP4 ADD MSTORE PUSH32 0x62797465732074616B65724173736574446174612C0000000000000000000000 PUSH2 0x116 DUP4 ADD MSTORE PUSH1 0xF8 PUSH1 0x2 EXP PUSH1 0x29 MUL PUSH2 0x12B DUP4 ADD MSTORE DUP3 MLOAD PUSH2 0x10C DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH2 0x12C SWAP1 SWAP3 ADD SWAP3 DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 SWAP2 DUP3 SWAP2 SWAP1 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x1E9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 DUP5 DUP5 DUP5 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x230 DUP3 PUSH2 0x564 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 PUSH2 0x4A6 DUP6 DUP5 PUSH2 0xCA6 JUMP JUMPDEST DUP5 PUSH2 0xCD1 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH2 0x4BA SWAP2 SWAP1 PUSH2 0xCE8 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x4D0 SWAP2 SWAP1 PUSH2 0xCE8 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x4E9 SWAP2 SWAP1 PUSH2 0xCE8 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x502 SWAP2 SWAP1 PUSH2 0xCE8 JUMP JUMPDEST PUSH1 0x60 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP1 ISZERO ISZERO PUSH2 0x51D JUMPI INVALID JUMPDEST DUP7 DUP6 MULMOD SWAP2 POP DUP2 ISZERO ISZERO PUSH2 0x532 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x55B JUMP JUMPDEST PUSH2 0x551 PUSH2 0x542 DUP4 PUSH3 0xF4240 PUSH2 0xCA6 JUMP JUMPDEST PUSH2 0x54C DUP9 DUP8 PUSH2 0xCA6 JUMP JUMPDEST PUSH2 0xCD1 JUMP JUMPDEST PUSH2 0x3E8 DUP2 GT SWAP4 POP SWAP1 POP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x446F6D61696E536570617261746F72286164647265737320636F6E7472616374 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xF8 PUSH1 0x2 EXP PUSH1 0x29 MUL DUP2 MSTORE POP PUSH1 0x21 ADD SWAP1 POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5E2 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5C3 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 SWAP1 SWAP5 ADD DUP3 SWAP1 SUB DUP3 KECCAK256 ADDRESS PUSH13 0x1000000000000000000000000 MUL DUP4 DUP4 ADD MSTORE DUP5 MLOAD PUSH1 0x14 DUP2 DUP6 SUB ADD DUP2 MSTORE PUSH1 0x34 SWAP1 SWAP4 ADD SWAP5 DUP6 SWAP1 MSTORE DUP3 MLOAD SWAP1 SWAP7 POP SWAP2 SWAP5 POP DUP4 SWAP3 POP DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x661 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x642 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 SWAP1 SWAP5 ADD DUP3 SWAP1 SUB DUP3 KECCAK256 PUSH32 0x4F72646572280000000000000000000000000000000000000000000000000000 DUP4 DUP4 ADD MSTORE PUSH32 0x61646472657373206D616B6572416464726573732C0000000000000000000000 PUSH1 0x26 DUP5 ADD MSTORE PUSH32 0x616464726573732074616B6572416464726573732C0000000000000000000000 PUSH1 0x3B DUP5 ADD MSTORE PUSH32 0x6164647265737320666565526563697069656E74416464726573732C00000000 PUSH1 0x50 DUP5 ADD MSTORE PUSH32 0x616464726573732073656E646572416464726573732C00000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH32 0x75696E74323536206D616B65724173736574416D6F756E742C00000000000000 PUSH1 0x82 DUP5 ADD MSTORE PUSH32 0x75696E743235362074616B65724173736574416D6F756E742C00000000000000 PUSH1 0x9B DUP5 ADD MSTORE PUSH32 0x75696E74323536206D616B65724665652C000000000000000000000000000000 PUSH1 0xB4 DUP5 ADD MSTORE PUSH32 0x75696E743235362074616B65724665652C000000000000000000000000000000 PUSH1 0xC5 DUP5 ADD MSTORE PUSH32 0x75696E743235362065787069726174696F6E54696D655365636F6E64732C0000 PUSH1 0xD6 DUP5 ADD MSTORE PUSH32 0x75696E743235362073616C742C00000000000000000000000000000000000000 PUSH1 0xF4 DUP5 ADD MSTORE PUSH32 0x6279746573206D616B65724173736574446174612C0000000000000000000000 PUSH2 0x101 DUP5 ADD MSTORE PUSH32 0x62797465732074616B65724173736574446174612C0000000000000000000000 PUSH2 0x116 DUP5 ADD MSTORE PUSH1 0xF8 PUSH1 0x2 EXP PUSH1 0x29 MUL PUSH2 0x12B DUP5 ADD MSTORE DUP5 MLOAD DUP1 DUP5 SUB PUSH2 0x10C ADD DUP2 MSTORE PUSH2 0x12C SWAP1 SWAP4 ADD SWAP5 DUP6 SWAP1 MSTORE DUP3 MLOAD SWAP1 SWAP7 POP SWAP2 SWAP5 POP DUP4 SWAP3 POP DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x8CB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x8AC JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP11 PUSH1 0xC0 ADD MLOAD DUP12 PUSH1 0xE0 ADD MLOAD DUP13 PUSH2 0x100 ADD MLOAD DUP14 PUSH2 0x120 ADD MLOAD DUP15 PUSH2 0x140 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x964 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x945 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x9C7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x9A8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP16 PUSH2 0x160 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA2C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA8F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP14 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP13 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP12 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP11 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x0 NOT AND PUSH1 0x0 NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x0 NOT AND PUSH1 0x0 NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xBEB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBCC JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x0 NOT PUSH1 0x20 SWAP5 DUP6 SUB PUSH2 0x100 EXP ADD SWAP1 DUP2 AND SWAP1 NOT SWAP2 SWAP1 SWAP2 AND OR SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP5 SWAP1 SWAP3 ADD DUP5 SWAP1 SUB DUP5 KECCAK256 DUP5 DUP3 ADD SWAP10 SWAP1 SWAP10 MSTORE DUP4 DUP3 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x60 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE POP PUSH1 0x80 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP4 MLOAD DUP1 DUP3 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH1 0xA0 ADD SWAP3 DUP4 SWAP1 MSTORE POP POP DUP3 MLOAD SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xC74 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC55 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH1 0x40 MLOAD SWAP3 ADD DUP3 SWAP1 SUB SWAP1 SWAP2 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL DUP4 ISZERO DUP1 PUSH2 0xCC2 JUMPI POP DUP3 DUP5 DUP3 DUP2 ISZERO ISZERO PUSH2 0xCBF JUMPI INVALID JUMPDEST DIV EQ JUMPDEST ISZERO ISZERO PUSH2 0xCCA JUMPI INVALID JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 ISZERO ISZERO PUSH2 0xCDF JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCCA JUMPI INVALID JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP3 CALLDATALOAD PUSH2 0x10EA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0xD3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD50 PUSH2 0xD4B DUP3 PUSH2 0x10BA JUMP JUMPDEST PUSH2 0x1093 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD77 DUP4 DUP3 DUP5 PUSH2 0x10F6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD9C PUSH1 0x80 PUSH2 0x1093 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDAA DUP5 DUP5 PUSH2 0xF38 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0xDBB DUP5 DUP5 DUP4 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0xDCF DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0xDE3 DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE0D PUSH2 0x180 PUSH2 0x1093 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE1B DUP5 DUP5 PUSH2 0xD20 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0xE2C DUP5 DUP5 DUP4 ADD PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0xE40 DUP5 DUP3 DUP6 ADD PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0xE54 DUP5 DUP3 DUP6 ADD PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0xE68 DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0xE7C DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0xE90 DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0xEA4 DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0xEB9 DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0xECF DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEFD DUP5 DUP3 DUP6 ADD PUSH2 0xD2C JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF2B DUP5 DUP3 DUP6 ADD PUSH2 0xD2C JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP3 CALLDATALOAD PUSH2 0x10E7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x100 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF64 DUP6 DUP6 PUSH2 0xD80 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0xF75 DUP6 DUP3 DUP7 ADD PUSH2 0xD80 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x163 DUP5 DUP3 DUP6 ADD PUSH2 0xDEF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFD5 DUP7 DUP7 PUSH2 0xF38 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xFE6 DUP7 DUP3 DUP8 ADD PUSH2 0xF38 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xFF7 DUP7 DUP3 DUP8 ADD PUSH2 0xF38 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x10E2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x10E7 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x102A DUP5 DUP3 PUSH2 0x1010 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x103D PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x1010 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x1050 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1010 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x1063 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x1010 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x230 DUP3 DUP5 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x230 DUP3 DUP5 PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x230 DUP3 DUP5 PUSH2 0x1019 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x10B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x10D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP STOP LOG2 PUSH6 0x627A7A723058 KECCAK256 0x4b 0xc1 RETURNDATASIZE DUP10 PUSH3 0x3AF71 0x2b DUP8 DIV GAS 0x2f CALLVALUE 0x2c 0xee RETURN DUP16 0x21 PC DUP5 SWAP8 0xca DUP15 0x24 0xd4 0xa5 EQ ADDRESS RETURN MOD 0xcf PUSH13 0x6578706572696D656E74616CF5 STOP CALLDATACOPY ",
"sourceMap": "802:1511:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;802:1511:3;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "0x6080604052600436106100775763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663041e63fe811461007c578063494d9297146100b257806366758d7b146100c75780637d33c6ee146100f45780638ae6331614610109578063d980208814610136575b600080fd5b34801561008857600080fd5b5061009c610097366004610fb4565b610156565b6040516100a99190611077565b60405180910390f35b3480156100be57600080fd5b5061009c61016b565b3480156100d357600080fd5b506100e76100e2366004610f44565b61021b565b6040516100a99190611085565b34801561010057600080fd5b5061009c610236565b34801561011557600080fd5b50610129610124366004610fb4565b61047f565b6040516100a99190611069565b34801561014257600080fd5b5061009c610151366004610f7f565b61048c565b6000610163848484610497565b949350505050565b600060405160200180807f446f6d61696e536570617261746f72286164647265737320636f6e7472616374815260200160f860020a60290281525060210190506040516020818303038152906040526040518082805190602001908083835b602083106101e95780518252601f1990920191602091820191016101ca565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905090565b610223610cf7565b61022d83836104ac565b50815b92915050565b604080517f4f726465722800000000000000000000000000000000000000000000000000006020808301919091527f61646472657373206d616b6572416464726573732c000000000000000000000060268301527f616464726573732074616b6572416464726573732c0000000000000000000000603b8301527f6164647265737320666565526563697069656e74416464726573732c0000000060508301527f616464726573732073656e646572416464726573732c00000000000000000000606c8301527f75696e74323536206d616b65724173736574416d6f756e742c0000000000000060828301527f75696e743235362074616b65724173736574416d6f756e742c00000000000000609b8301527f75696e74323536206d616b65724665652c00000000000000000000000000000060b48301527f75696e743235362074616b65724665652c00000000000000000000000000000060c58301527f75696e743235362065787069726174696f6e54696d655365636f6e64732c000060d68301527f75696e743235362073616c742c0000000000000000000000000000000000000060f48301527f6279746573206d616b65724173736574446174612c00000000000000000000006101018301527f62797465732074616b65724173736574446174612c000000000000000000000061011683015260f860020a60290261012b830152825161010c81840301815261012c90920192839052815160009391829190840190808383602083106101e95780518252601f1990920191602091820191016101ca565b600061016384848461050e565b600061023082610564565b60006101636104a68584610ca6565b84610cd1565b815181516104ba9190610ce8565b8252602080830151908201516104d09190610ce8565b6020830152604080830151908201516104e99190610ce8565b6040830152606080830151908201516105029190610ce8565b60609092019190915250565b60008060008480151561051d57fe5b8685099150811515610532576000925061055b565b61055161054283620f4240610ca6565b61054c8887610ca6565b610cd1565b6103e88111935090505b50509392505050565b600060405160200180807f446f6d61696e536570617261746f72286164647265737320636f6e7472616374815260200160f860020a60290281525060210190506040516020818303038152906040526040518082805190602001908083835b602083106105e25780518252601f1990920191602091820191016105c3565b51815160209384036101000a600019018019909216911617905260408051929094018290038220306c0100000000000000000000000002838301528451601481850301815260349093019485905282519096509194508392508401908083835b602083106106615780518252601f199092019160209182019101610642565b51815160209384036101000a6000190180199092169116179052604080519290940182900382207f4f72646572280000000000000000000000000000000000000000000000000000838301527f61646472657373206d616b6572416464726573732c000000000000000000000060268401527f616464726573732074616b6572416464726573732c0000000000000000000000603b8401527f6164647265737320666565526563697069656e74416464726573732c0000000060508401527f616464726573732073656e646572416464726573732c00000000000000000000606c8401527f75696e74323536206d616b65724173736574416d6f756e742c0000000000000060828401527f75696e743235362074616b65724173736574416d6f756e742c00000000000000609b8401527f75696e74323536206d616b65724665652c00000000000000000000000000000060b48401527f75696e743235362074616b65724665652c00000000000000000000000000000060c58401527f75696e743235362065787069726174696f6e54696d655365636f6e64732c000060d68401527f75696e743235362073616c742c0000000000000000000000000000000000000060f48401527f6279746573206d616b65724173736574446174612c00000000000000000000006101018401527f62797465732074616b65724173736574446174612c000000000000000000000061011684015260f860020a60290261012b840152845180840361010c01815261012c9093019485905282519096509194508392508401908083835b602083106108cb5780518252601f1990920191602091820191016108ac565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846000015185602001518660400151876060015188608001518960a001518a60c001518b60e001518c61010001518d61012001518e61014001516040516020018082805190602001908083835b602083106109645780518252601f199092019160209182019101610945565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106109c75780518252601f1990920191602091820191016109a8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208f61016001516040516020018082805190602001908083835b60208310610a2c5780518252601f199092019160209182019101610a0d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a8f5780518252601f199092019160209182019101610a70565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020604051602001808d600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018c600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018b600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018a600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401898152602001888152602001878152602001868152602001858152602001848152602001836000191660001916815260200182600019166000191681526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310610beb5780518252601f199092019160209182019101610bcc565b51815160001960209485036101000a019081169019919091161790526040805194909201849003842084820199909952838201979097526060830195909552506080808201969096528351808203909601865260a001928390525050825190918291908401908083835b60208310610c745780518252601f199092019160209182019101610c55565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000828202831580610cc25750828482811515610cbf57fe5b04145b1515610cca57fe5b9392505050565b6000808284811515610cdf57fe5b04949350505050565b600082820183811015610cca57fe5b608060405190810160405280600081526020016000815260200160008152602001600081525090565b6000610cca82356110ea565b6000601f82018313610d3d57600080fd5b8135610d50610d4b826110ba565b611093565b91508082526020830160208301858383011115610d6c57600080fd5b610d778382846110f6565b50505092915050565b600060808284031215610d9257600080fd5b610d9c6080611093565b90506000610daa8484610f38565b8252506020610dbb84848301610f38565b6020830152506040610dcf84828501610f38565b6040830152506060610de384828501610f38565b60608301525092915050565b60006101808284031215610e0257600080fd5b610e0d610180611093565b90506000610e1b8484610d20565b8252506020610e2c84848301610d20565b6020830152506040610e4084828501610d20565b6040830152506060610e5484828501610d20565b6060830152506080610e6884828501610f38565b60808301525060a0610e7c84828501610f38565b60a08301525060c0610e9084828501610f38565b60c08301525060e0610ea484828501610f38565b60e083015250610100610eb984828501610f38565b61010083015250610120610ecf84828501610f38565b6101208301525061014082013567ffffffffffffffff811115610ef157600080fd5b610efd84828501610d2c565b6101408301525061016082013567ffffffffffffffff811115610f1f57600080fd5b610f2b84828501610d2c565b6101608301525092915050565b6000610cca82356110e7565b6000806101008385031215610f5857600080fd5b6000610f648585610d80565b9250506080610f7585828601610d80565b9150509250929050565b600060208284031215610f9157600080fd5b813567ffffffffffffffff811115610fa857600080fd5b61016384828501610def565b600080600060608486031215610fc957600080fd5b6000610fd58686610f38565b9350506020610fe686828701610f38565b9250506040610ff786828701610f38565b9150509250925092565b61100a816110e2565b82525050565b61100a816110e7565b8051608083019061102a8482611010565b50602082015161103d6020850182611010565b5060408201516110506040850182611010565b5060608201516110636060850182611010565b50505050565b602081016102308284611001565b602081016102308284611010565b608081016102308284611019565b60405181810167ffffffffffffffff811182821017156110b257600080fd5b604052919050565b600067ffffffffffffffff8211156110d157600080fd5b506020601f91909101601f19160190565b151590565b90565b600160a060020a031690565b828183375060009101525600a265627a7a723058204bc13d896203af712b87045a2f342ceef38f21588497ca8e24d4a51430f306cf6c6578706572696d656e74616cf50037",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x77 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x41E63FE DUP2 EQ PUSH2 0x7C JUMPI DUP1 PUSH4 0x494D9297 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x66758D7B EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x7D33C6EE EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x8AE63316 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xD9802088 EQ PUSH2 0x136 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0xFB4 JUMP JUMPDEST PUSH2 0x156 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x16B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF44 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1085 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x236 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH2 0x124 CALLDATASIZE PUSH1 0x4 PUSH2 0xFB4 JUMP JUMPDEST PUSH2 0x47F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0xF7F JUMP JUMPDEST PUSH2 0x48C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 DUP5 DUP5 DUP5 PUSH2 0x497 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x446F6D61696E536570617261746F72286164647265737320636F6E7472616374 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xF8 PUSH1 0x2 EXP PUSH1 0x29 MUL DUP2 MSTORE POP PUSH1 0x21 ADD SWAP1 POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1E9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x223 PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0x22D DUP4 DUP4 PUSH2 0x4AC JUMP JUMPDEST POP DUP2 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x4F72646572280000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x61646472657373206D616B6572416464726573732C0000000000000000000000 PUSH1 0x26 DUP4 ADD MSTORE PUSH32 0x616464726573732074616B6572416464726573732C0000000000000000000000 PUSH1 0x3B DUP4 ADD MSTORE PUSH32 0x6164647265737320666565526563697069656E74416464726573732C00000000 PUSH1 0x50 DUP4 ADD MSTORE PUSH32 0x616464726573732073656E646572416464726573732C00000000000000000000 PUSH1 0x6C DUP4 ADD MSTORE PUSH32 0x75696E74323536206D616B65724173736574416D6F756E742C00000000000000 PUSH1 0x82 DUP4 ADD MSTORE PUSH32 0x75696E743235362074616B65724173736574416D6F756E742C00000000000000 PUSH1 0x9B DUP4 ADD MSTORE PUSH32 0x75696E74323536206D616B65724665652C000000000000000000000000000000 PUSH1 0xB4 DUP4 ADD MSTORE PUSH32 0x75696E743235362074616B65724665652C000000000000000000000000000000 PUSH1 0xC5 DUP4 ADD MSTORE PUSH32 0x75696E743235362065787069726174696F6E54696D655365636F6E64732C0000 PUSH1 0xD6 DUP4 ADD MSTORE PUSH32 0x75696E743235362073616C742C00000000000000000000000000000000000000 PUSH1 0xF4 DUP4 ADD MSTORE PUSH32 0x6279746573206D616B65724173736574446174612C0000000000000000000000 PUSH2 0x101 DUP4 ADD MSTORE PUSH32 0x62797465732074616B65724173736574446174612C0000000000000000000000 PUSH2 0x116 DUP4 ADD MSTORE PUSH1 0xF8 PUSH1 0x2 EXP PUSH1 0x29 MUL PUSH2 0x12B DUP4 ADD MSTORE DUP3 MLOAD PUSH2 0x10C DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH2 0x12C SWAP1 SWAP3 ADD SWAP3 DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 SWAP2 DUP3 SWAP2 SWAP1 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x1E9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 DUP5 DUP5 DUP5 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x230 DUP3 PUSH2 0x564 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 PUSH2 0x4A6 DUP6 DUP5 PUSH2 0xCA6 JUMP JUMPDEST DUP5 PUSH2 0xCD1 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH2 0x4BA SWAP2 SWAP1 PUSH2 0xCE8 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x4D0 SWAP2 SWAP1 PUSH2 0xCE8 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x4E9 SWAP2 SWAP1 PUSH2 0xCE8 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x502 SWAP2 SWAP1 PUSH2 0xCE8 JUMP JUMPDEST PUSH1 0x60 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP1 ISZERO ISZERO PUSH2 0x51D JUMPI INVALID JUMPDEST DUP7 DUP6 MULMOD SWAP2 POP DUP2 ISZERO ISZERO PUSH2 0x532 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x55B JUMP JUMPDEST PUSH2 0x551 PUSH2 0x542 DUP4 PUSH3 0xF4240 PUSH2 0xCA6 JUMP JUMPDEST PUSH2 0x54C DUP9 DUP8 PUSH2 0xCA6 JUMP JUMPDEST PUSH2 0xCD1 JUMP JUMPDEST PUSH2 0x3E8 DUP2 GT SWAP4 POP SWAP1 POP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x446F6D61696E536570617261746F72286164647265737320636F6E7472616374 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xF8 PUSH1 0x2 EXP PUSH1 0x29 MUL DUP2 MSTORE POP PUSH1 0x21 ADD SWAP1 POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5E2 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5C3 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 SWAP1 SWAP5 ADD DUP3 SWAP1 SUB DUP3 KECCAK256 ADDRESS PUSH13 0x1000000000000000000000000 MUL DUP4 DUP4 ADD MSTORE DUP5 MLOAD PUSH1 0x14 DUP2 DUP6 SUB ADD DUP2 MSTORE PUSH1 0x34 SWAP1 SWAP4 ADD SWAP5 DUP6 SWAP1 MSTORE DUP3 MLOAD SWAP1 SWAP7 POP SWAP2 SWAP5 POP DUP4 SWAP3 POP DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x661 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x642 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 SWAP1 SWAP5 ADD DUP3 SWAP1 SUB DUP3 KECCAK256 PUSH32 0x4F72646572280000000000000000000000000000000000000000000000000000 DUP4 DUP4 ADD MSTORE PUSH32 0x61646472657373206D616B6572416464726573732C0000000000000000000000 PUSH1 0x26 DUP5 ADD MSTORE PUSH32 0x616464726573732074616B6572416464726573732C0000000000000000000000 PUSH1 0x3B DUP5 ADD MSTORE PUSH32 0x6164647265737320666565526563697069656E74416464726573732C00000000 PUSH1 0x50 DUP5 ADD MSTORE PUSH32 0x616464726573732073656E646572416464726573732C00000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH32 0x75696E74323536206D616B65724173736574416D6F756E742C00000000000000 PUSH1 0x82 DUP5 ADD MSTORE PUSH32 0x75696E743235362074616B65724173736574416D6F756E742C00000000000000 PUSH1 0x9B DUP5 ADD MSTORE PUSH32 0x75696E74323536206D616B65724665652C000000000000000000000000000000 PUSH1 0xB4 DUP5 ADD MSTORE PUSH32 0x75696E743235362074616B65724665652C000000000000000000000000000000 PUSH1 0xC5 DUP5 ADD MSTORE PUSH32 0x75696E743235362065787069726174696F6E54696D655365636F6E64732C0000 PUSH1 0xD6 DUP5 ADD MSTORE PUSH32 0x75696E743235362073616C742C00000000000000000000000000000000000000 PUSH1 0xF4 DUP5 ADD MSTORE PUSH32 0x6279746573206D616B65724173736574446174612C0000000000000000000000 PUSH2 0x101 DUP5 ADD MSTORE PUSH32 0x62797465732074616B65724173736574446174612C0000000000000000000000 PUSH2 0x116 DUP5 ADD MSTORE PUSH1 0xF8 PUSH1 0x2 EXP PUSH1 0x29 MUL PUSH2 0x12B DUP5 ADD MSTORE DUP5 MLOAD DUP1 DUP5 SUB PUSH2 0x10C ADD DUP2 MSTORE PUSH2 0x12C SWAP1 SWAP4 ADD SWAP5 DUP6 SWAP1 MSTORE DUP3 MLOAD SWAP1 SWAP7 POP SWAP2 SWAP5 POP DUP4 SWAP3 POP DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x8CB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x8AC JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP11 PUSH1 0xC0 ADD MLOAD DUP12 PUSH1 0xE0 ADD MLOAD DUP13 PUSH2 0x100 ADD MLOAD DUP14 PUSH2 0x120 ADD MLOAD DUP15 PUSH2 0x140 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x964 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x945 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x9C7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x9A8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP16 PUSH2 0x160 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA2C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA8F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP14 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP13 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP12 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP11 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x0 NOT AND PUSH1 0x0 NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x0 NOT AND PUSH1 0x0 NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xBEB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBCC JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x0 NOT PUSH1 0x20 SWAP5 DUP6 SUB PUSH2 0x100 EXP ADD SWAP1 DUP2 AND SWAP1 NOT SWAP2 SWAP1 SWAP2 AND OR SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP5 SWAP1 SWAP3 ADD DUP5 SWAP1 SUB DUP5 KECCAK256 DUP5 DUP3 ADD SWAP10 SWAP1 SWAP10 MSTORE DUP4 DUP3 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x60 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE POP PUSH1 0x80 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP4 MLOAD DUP1 DUP3 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH1 0xA0 ADD SWAP3 DUP4 SWAP1 MSTORE POP POP DUP3 MLOAD SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xC74 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC55 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH1 0x40 MLOAD SWAP3 ADD DUP3 SWAP1 SUB SWAP1 SWAP2 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL DUP4 ISZERO DUP1 PUSH2 0xCC2 JUMPI POP DUP3 DUP5 DUP3 DUP2 ISZERO ISZERO PUSH2 0xCBF JUMPI INVALID JUMPDEST DIV EQ JUMPDEST ISZERO ISZERO PUSH2 0xCCA JUMPI INVALID JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 ISZERO ISZERO PUSH2 0xCDF JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCCA JUMPI INVALID JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP3 CALLDATALOAD PUSH2 0x10EA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0xD3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD50 PUSH2 0xD4B DUP3 PUSH2 0x10BA JUMP JUMPDEST PUSH2 0x1093 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD77 DUP4 DUP3 DUP5 PUSH2 0x10F6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD9C PUSH1 0x80 PUSH2 0x1093 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDAA DUP5 DUP5 PUSH2 0xF38 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0xDBB DUP5 DUP5 DUP4 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0xDCF DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0xDE3 DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE0D PUSH2 0x180 PUSH2 0x1093 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE1B DUP5 DUP5 PUSH2 0xD20 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0xE2C DUP5 DUP5 DUP4 ADD PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0xE40 DUP5 DUP3 DUP6 ADD PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0xE54 DUP5 DUP3 DUP6 ADD PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0xE68 DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0xE7C DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0xE90 DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0xEA4 DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0xEB9 DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0xECF DUP5 DUP3 DUP6 ADD PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEFD DUP5 DUP3 DUP6 ADD PUSH2 0xD2C JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF2B DUP5 DUP3 DUP6 ADD PUSH2 0xD2C JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCCA DUP3 CALLDATALOAD PUSH2 0x10E7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x100 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF64 DUP6 DUP6 PUSH2 0xD80 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0xF75 DUP6 DUP3 DUP7 ADD PUSH2 0xD80 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x163 DUP5 DUP3 DUP6 ADD PUSH2 0xDEF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFD5 DUP7 DUP7 PUSH2 0xF38 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xFE6 DUP7 DUP3 DUP8 ADD PUSH2 0xF38 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xFF7 DUP7 DUP3 DUP8 ADD PUSH2 0xF38 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x10E2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x10E7 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x102A DUP5 DUP3 PUSH2 0x1010 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x103D PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x1010 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x1050 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1010 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x1063 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x1010 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x230 DUP3 DUP5 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x230 DUP3 DUP5 PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x230 DUP3 DUP5 PUSH2 0x1019 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x10B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x10D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP STOP LOG2 PUSH6 0x627A7A723058 KECCAK256 0x4b 0xc1 RETURNDATASIZE DUP10 PUSH3 0x3AF71 0x2b DUP8 DIV GAS 0x2f CALLVALUE 0x2c 0xee RETURN DUP16 0x21 PC DUP5 SWAP8 0xca DUP15 0x24 0xd4 0xa5 EQ ADDRESS RETURN MOD 0xcf PUSH13 0x6578706572696D656E74616CF5 STOP CALLDATACOPY ",
"sourceMap": "802:1511:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;876:342;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;876:342:3;;;;;;;;;;;;;;;;;;;;;;;;;1880:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1880:150:3;;;;2036:275;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2036:275:3;;;;;;;;;;;;;;;;;1745:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1745:129:3;;;;1224:319;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1224:319:3;;;;;;;;;;;;;;;;;1549:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1549:190:3;;;;;;;;;876:342;1034:21;1087:94;1117:9;1140:11;1165:6;1087:16;:94::i;:::-;1071:110;876:342;-1:-1:-1;;;;876:342:3:o;1880:150::-;1965:7;689:67:2;;;;;;;;;;;-1:-1:-1;;;;;689:67:2;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;689:67:2;;;679:78;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;679:78:2;;;;;;;;;;;;;;;;1988:35:3;;1880:150;:::o;2036:275::-;2186:11;;:::i;:::-;2220:51;2235:16;2253:17;2220:14;:51::i;:::-;-1:-1:-1;2288:16:3;2036:275;;;;;:::o;1745:129::-;811:458:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;811:458:2;;;;;;22:32:-1;26:21;;;22:32;6:49;;811:458:2;;;;;;;;801:469;;1820:7:3;;811:458:2;;;801:469;;;;;811:458;801:469;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;1224:319:3;1381:12;1419:93;1448:9;1471:11;1496:6;1419:15;:93::i;1549:190::-;1642:17;1687:19;1700:5;1687:12;:19::i;1064:326:1:-;1218:21;1271:82;1292:26;1300:9;1311:6;1292:7;:26::i;:::-;1332:11;1271:7;:82::i;1307:648:0:-;1500:39;;1541:40;;1492:90;;1500:39;1492:7;:90::i;:::-;1450:132;;1642:39;;;;;1683:40;;;;1634:90;;1642:39;1634:7;:90::i;:::-;1592:39;;;:132;1774:29;;;;;1805:30;;;;1766:70;;1774:29;1766:7;:70::i;:::-;1734:29;;;:102;1886:29;;;;;1917:30;;;;1878:70;;1886:29;1878:7;:70::i;:::-;1846:29;;;;:102;;;;-1:-1:-1;1307:648:0:o;1629:555:1:-;1782:12;1810:17;1967:33;1856:11;1830:38;;;;;;;1845:9;1837:6;1830:38;1810:58;-1:-1:-1;1882:14:1;;1878:79;;;1919:5;1912:12;;;;1878:79;2003:98;2024:27;2032:9;2043:7;2024;:27::i;:::-;2065:26;2073:9;2084:6;2065:7;:26::i;:::-;2003:7;:98::i;:::-;2149:4;2121:32;;;-1:-1:-1;1967:134:1;-1:-1:-1;1629:555:1;;;;;;;;:::o;2793:997:2:-;2882:17;689:67;;;;;;;;;;;-1:-1:-1;;;;;689:67:2;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;689:67:2;;;679:78;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;679:78:2;;;;;;;;;;;;3150:4;3125:31;;;;;;;;;26:21:-1;;;22:32;6:49;;3125:31:2;;;;;;;;3115:42;;679:78;;-1:-1:-1;3125:31:2;;-1:-1:-1;3125:31:2;;-1:-1:-1;3115:42:2;;;;3125:31;3115:42;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;3115:42:2;;;;;;;;;;;;811:458;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;811:458:2;;;;;;26:21:-1;;;22:32;;6:49;;811:458:2;;;;;;;;801:469;;3115:42;;-1:-1:-1;811:458:2;;-1:-1:-1;811:458:2;;-1:-1:-1;801:469:2;;;;811:458;801:469;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;801:469:2;;;;;;;;;;;;;;;;3246:5;:18;;;3282:5;:18;;;3318:5;:25;;;3361:5;:19;;;3398:5;:22;;;3438:5;:22;;;3478:5;:14;;;3510:5;:14;;;3542:5;:27;;;3587:5;:10;;;3642:5;:20;;;3625:38;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3625:38:2;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3625:38:2;;;3615:49;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3615:49:2;;;;;;;;;;;;;;;;3709:5;:20;;;3692:38;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3692:38:2;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3692:38:2;;;3682:49;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3682:49:2;;;;;;;;;;;;;;;;3212:533;;;;;;-1:-1:-1;;;;;3212:533:2;-1:-1:-1;;;;;3212:533:2;;;;;;;;-1:-1:-1;;;;;3212:533:2;-1:-1:-1;;;;;3212:533:2;;;;;;;;-1:-1:-1;;;;;3212:533:2;-1:-1:-1;;;;;3212:533:2;;;;;;;;-1:-1:-1;;;;;3212:533:2;-1:-1:-1;;;;;3212:533:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3212:533:2;;;3202:544;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;246:30;340:21;;;311:9;;295:26;;;;377:20;365:33;;3202:544:2;;;;;;;;;;;;3043:713;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3043:713:2;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3043:713:2;;;;;;-1:-1:-1;;3033:724:2;;3043:713;;;;3033:724;;;;;3043:713;3033:724;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;3033:724:2;;;;;;;;;;;2793:997;-1:-1:-1;;;;;2793:997:2:o;84:180:4:-;164:7;196:5;;;218:6;;;:20;;;237:1;232;228;:5;;;;;;;;:10;218:20;211:28;;;;;;256:1;84:180;-1:-1:-1;;;84:180:4:o;270:142::-;350:7;373:6;386:1;382;:5;;;;;;;;;270:142;-1:-1:-1;;;;270:142:4:o;570:166::-;650:7;682:5;;;704:6;;;;697:14;;;802:1511:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;131:432;;221:4;209:17;;205:27;-1:-1;195:2;;246:1;243;236:12;195:2;283:6;270:20;305:60;320:44;357:6;320:44;;;305:60;;;296:69;;385:6;378:5;371:21;421:4;413:6;409:17;454:4;447:5;443:16;489:3;480:6;475:3;471:16;468:25;465:2;;;506:1;503;496:12;465:2;516:41;550:6;545:3;540;516:41;;;188:375;;;;;;;;611:809;;728:4;716:9;711:3;707:19;703:30;700:2;;;746:1;743;736:12;700:2;764:20;779:4;764:20;;;755:29;-1:-1;852:1;883:49;928:3;908:9;883:49;;;859:74;;-1:-1;1012:2;1045:49;1090:3;1066:22;;;1045:49;;;1038:4;1031:5;1027:16;1020:75;954:152;1164:2;1197:49;1242:3;1233:6;1222:9;1218:22;1197:49;;;1190:4;1183:5;1179:16;1172:75;1116:142;1316:2;1349:49;1394:3;1385:6;1374:9;1370:22;1349:49;;;1342:4;1335:5;1331:16;1324:75;1268:142;694:726;;;;;1455:2208;;1566:5;1554:9;1549:3;1545:19;1541:31;1538:2;;;1585:1;1582;1575:12;1538:2;1603:21;1618:5;1603:21;;;1594:30;-1:-1;1682:1;1713:49;1758:3;1738:9;1713:49;;;1689:74;;-1:-1;1832:2;1865:49;1910:3;1886:22;;;1865:49;;;1858:4;1851:5;1847:16;1840:75;1784:142;1991:2;2024:49;2069:3;2060:6;2049:9;2045:22;2024:49;;;2017:4;2010:5;2006:16;1999:75;1936:149;2144:2;2177:49;2222:3;2213:6;2202:9;2198:22;2177:49;;;2170:4;2163:5;2159:16;2152:75;2095:143;2300:3;2334:49;2379:3;2370:6;2359:9;2355:22;2334:49;;;2327:4;2320:5;2316:16;2309:75;2248:147;2457:3;2491:49;2536:3;2527:6;2516:9;2512:22;2491:49;;;2484:4;2477:5;2473:16;2466:75;2405:147;2606:3;2640:49;2685:3;2676:6;2665:9;2661:22;2640:49;;;2633:4;2626:5;2622:16;2615:75;2562:139;2755:3;2789:49;2834:3;2825:6;2814:9;2810:22;2789:49;;;2782:4;2775:5;2771:16;2764:75;2711:139;2917:3;2952:49;2997:3;2988:6;2977:9;2973:22;2952:49;;;2944:5;2937;2933:17;2926:76;2860:153;3063:3;3098:49;3143:3;3134:6;3123:9;3119:22;3098:49;;;3090:5;3083;3079:17;3072:76;3023:136;3247:3;3236:9;3232:19;3219:33;3272:18;3264:6;3261:30;3258:2;;;3304:1;3301;3294:12;3258:2;3340:54;3390:3;3381:6;3370:9;3366:22;3340:54;;;3332:5;3325;3321:17;3314:81;3169:237;3494:3;3483:9;3479:19;3466:33;3519:18;3511:6;3508:30;3505:2;;;3551:1;3548;3541:12;3505:2;3587:54;3637:3;3628:6;3617:9;3613:22;3587:54;;;3579:5;3572;3568:17;3561:81;3416:237;1532:2131;;;;;3670:118;;3737:46;3775:6;3762:20;3737:46;;3795:480;;;3972:3;3960:9;3951:7;3947:23;3943:33;3940:2;;;3989:1;3986;3979:12;3940:2;4024:1;4041:81;4114:7;4094:9;4041:81;;;4031:91;;4003:125;4159:3;4178:81;4251:7;4242:6;4231:9;4227:22;4178:81;;;4168:91;;4138:127;3934:341;;;;;;4282:371;;4408:2;4396:9;4387:7;4383:23;4379:32;4376:2;;;4424:1;4421;4414:12;4376:2;4459:31;;4510:18;4499:30;;4496:2;;;4542:1;4539;4532:12;4496:2;4562:75;4629:7;4620:6;4609:9;4605:22;4562:75;;4660:491;;;;4798:2;4786:9;4777:7;4773:23;4769:32;4766:2;;;4814:1;4811;4804:12;4766:2;4849:1;4866:53;4911:7;4891:9;4866:53;;;4856:63;;4828:97;4956:2;4974:53;5019:7;5010:6;4999:9;4995:22;4974:53;;;4964:63;;4935:98;5064:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;;;5072:63;;5043:98;4760:391;;;;;;5158:101;5225:28;5247:5;5225:28;;;5220:3;5213:41;5207:52;;;5266:110;5339:31;5364:5;5339:31;;5460:886;5686:22;;5599:4;5590:14;;;5720:61;5594:3;5686:22;5720:61;;;5619:174;5887:4;5880:5;5876:16;5870:23;5905:62;5961:4;5956:3;5952:14;5939:11;5905:62;;;5803:176;6063:4;6056:5;6052:16;6046:23;6081:62;6137:4;6132:3;6128:14;6115:11;6081:62;;;5989:166;6239:4;6232:5;6228:16;6222:23;6257:62;6313:4;6308:3;6304:14;6291:11;6257:62;;;6165:166;5572:774;;;;6470:181;6572:2;6557:18;;6586:55;6561:9;6614:6;6586:55;;6658:193;6766:2;6751:18;;6780:61;6755:9;6814:6;6780:61;;6858:306;7022:3;7007:19;;7037:117;7011:9;7127:6;7037:117;;7371:256;7433:2;7427:9;7459:17;;;7534:18;7519:34;;7555:22;;;7516:62;7513:2;;;7591:1;7588;7581:12;7513:2;7607;7600:22;7411:216;;-1:-1;7411:216;7634:254;;7773:18;7765:6;7762:30;7759:2;;;7805:1;7802;7795:12;7759:2;-1:-1;7878:4;7849;7826:17;;;;-1:-1;;7822:33;7868:15;;7696:192;7895:92;7968:13;7961:21;;7944:43;7994:79;8063:5;8046:27;8166:128;-1:-1;;;;;8235:54;;8218:76;8388:145;8469:6;8464:3;8459;8446:30;-1:-1;8525:1;8507:16;;8500:27;8439:94"
}
}
},
"sources": {
"current/protocol/Exchange/libs/LibFillResults.sol": {
"id": 0
},
"current/protocol/Exchange/libs/LibMath.sol": {
"id": 1
},
"current/protocol/Exchange/libs/LibOrder.sol": {
"id": 2
},
"current/test/TestLibs/TestLibs.sol": {
"id": 3
},
"current/utils/SafeMath/SafeMath.sol": {
"id": 4
}
},
"sourceCodes": {
"current/protocol/Exchange/libs/LibFillResults.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.4.24;\n\nimport \"../../../utils/SafeMath/SafeMath.sol\";\n\ncontract LibFillResults is\n SafeMath\n{\n\n struct FillResults {\n uint256 makerAssetFilledAmount;\n uint256 takerAssetFilledAmount;\n uint256 makerFeePaid;\n uint256 takerFeePaid;\n }\n\n struct MatchedFillResults {\n FillResults left;\n FillResults right;\n uint256 leftMakerAssetSpreadAmount;\n }\n\n /// @dev Adds properties of both FillResults instances.\n /// Modifies the first FillResults instance specified.\n /// @param totalFillResults Fill results instance that will be added onto.\n /// @param singleFillResults Fill results instance that will be added to totalFillResults.\n function addFillResults(FillResults memory totalFillResults, FillResults memory singleFillResults)\n internal\n pure\n {\n totalFillResults.makerAssetFilledAmount = safeAdd(totalFillResults.makerAssetFilledAmount, singleFillResults.makerAssetFilledAmount);\n totalFillResults.takerAssetFilledAmount = safeAdd(totalFillResults.takerAssetFilledAmount, singleFillResults.takerAssetFilledAmount);\n totalFillResults.makerFeePaid = safeAdd(totalFillResults.makerFeePaid, singleFillResults.makerFeePaid);\n totalFillResults.takerFeePaid = safeAdd(totalFillResults.takerFeePaid, singleFillResults.takerFeePaid);\n }\n}\n",
"current/protocol/Exchange/libs/LibMath.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.4.24;\n\nimport \"../../../utils/SafeMath/SafeMath.sol\";\n\ncontract LibMath is\n SafeMath\n{\n string constant ROUNDING_ERROR_ON_PARTIAL_AMOUNT = \"A rounding error occurred when calculating partial transfer amounts.\";\n\n /// @dev Calculates partial value given a numerator and denominator.\n /// @param numerator Numerator.\n /// @param denominator Denominator.\n /// @param target Value to calculate partial of.\n /// @return Partial value of target.\n function getPartialAmount(\n uint256 numerator,\n uint256 denominator,\n uint256 target)\n internal\n pure\n returns (uint256 partialAmount)\n {\n partialAmount = safeDiv(\n safeMul(numerator, target),\n denominator\n );\n return partialAmount;\n }\n\n /// @dev Checks if rounding error > 0.1%.\n /// @param numerator Numerator.\n /// @param denominator Denominator.\n /// @param target Value to multiply with numerator/denominator.\n /// @return Rounding error is present.\n function isRoundingError(\n uint256 numerator,\n uint256 denominator,\n uint256 target)\n internal\n pure\n returns (bool isError)\n {\n uint256 remainder = mulmod(target, numerator, denominator);\n if (remainder == 0) {\n return false; // No rounding error.\n }\n\n uint256 errPercentageTimes1000000 = safeDiv(\n safeMul(remainder, 1000000),\n safeMul(numerator, target)\n );\n isError = errPercentageTimes1000000 > 1000;\n return isError;\n }\n}\n",
"current/protocol/Exchange/libs/LibOrder.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.4.24;\n\ncontract LibOrder {\n\n bytes32 constant DOMAIN_SEPARATOR_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"DomainSeparator(address contract)\"\n ));\n\n bytes32 constant ORDER_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"Order(\",\n \"address makerAddress,\",\n \"address takerAddress,\",\n \"address feeRecipientAddress,\",\n \"address senderAddress,\",\n \"uint256 makerAssetAmount,\",\n \"uint256 takerAssetAmount,\",\n \"uint256 makerFee,\",\n \"uint256 takerFee,\",\n \"uint256 expirationTimeSeconds,\",\n \"uint256 salt,\",\n \"bytes makerAssetData,\",\n \"bytes takerAssetData,\",\n \")\"\n ));\n\n // A valid order remains fillable until it is expired, fully filled, or cancelled.\n // An order's state is unaffected by external factors, like account balances.\n enum OrderStatus {\n INVALID, // Default value\n INVALID_MAKER_ASSET_AMOUNT, // Order does not have a valid maker asset amount\n INVALID_TAKER_ASSET_AMOUNT, // Order does not have a valid taker asset amount\n FILLABLE, // Order is fillable\n EXPIRED, // Order has already expired\n FULLY_FILLED, // Order is fully filled\n CANCELLED // Order has been cancelled\n }\n\n struct Order {\n address makerAddress;\n address takerAddress;\n address feeRecipientAddress;\n address senderAddress;\n uint256 makerAssetAmount;\n uint256 takerAssetAmount;\n uint256 makerFee;\n uint256 takerFee;\n uint256 expirationTimeSeconds;\n uint256 salt;\n bytes makerAssetData;\n bytes takerAssetData;\n }\n\n struct OrderInfo {\n // See LibStatus for a complete description of order statuses\n uint8 orderStatus;\n // Keccak-256 EIP712 hash of the order\n bytes32 orderHash;\n // Amount of order that has been filled\n uint256 orderTakerAssetFilledAmount;\n }\n\n /// @dev Calculates Keccak-256 hash of the order.\n /// @param order The order structure.\n /// @return Keccak-256 EIP712 hash of the order.\n function getOrderHash(Order memory order)\n internal\n view\n returns (bytes32 orderHash)\n {\n // TODO: EIP712 is not finalized yet\n // Source: https://github.com/ethereum/EIPs/pull/712\n orderHash = keccak256(abi.encodePacked(\n DOMAIN_SEPARATOR_SCHEMA_HASH,\n keccak256(abi.encodePacked(address(this))),\n ORDER_SCHEMA_HASH,\n keccak256(abi.encodePacked(\n order.makerAddress,\n order.takerAddress,\n order.feeRecipientAddress,\n order.senderAddress,\n order.makerAssetAmount,\n order.takerAssetAmount,\n order.makerFee,\n order.takerFee,\n order.expirationTimeSeconds,\n order.salt,\n keccak256(abi.encodePacked(order.makerAssetData)),\n keccak256(abi.encodePacked(order.takerAssetData))\n ))\n ));\n return orderHash;\n }\n}\n",
"current/test/TestLibs/TestLibs.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.4.24;\npragma experimental ABIEncoderV2;\n\nimport \"../../protocol/Exchange/libs/LibMath.sol\";\nimport \"../../protocol/Exchange/libs/LibOrder.sol\";\nimport \"../../protocol/Exchange/libs/LibFillResults.sol\";\n\ncontract TestLibs is \n LibMath,\n LibOrder,\n LibFillResults\n{\n function publicGetPartialAmount(\n uint256 numerator,\n uint256 denominator,\n uint256 target)\n public\n pure\n returns (uint256 partialAmount)\n {\n partialAmount = getPartialAmount(\n numerator,\n denominator,\n target\n );\n return partialAmount;\n }\n\n function publicIsRoundingError(\n uint256 numerator,\n uint256 denominator,\n uint256 target)\n public\n pure\n returns (bool isError)\n {\n isError = isRoundingError(\n numerator,\n denominator,\n target\n );\n return isError;\n }\n\n function publicGetOrderHash(Order memory order)\n public\n view\n returns (bytes32 orderHash)\n {\n orderHash = getOrderHash(order);\n return orderHash;\n }\n\n function getOrderSchemaHash()\n public\n pure\n returns (bytes32)\n {\n return ORDER_SCHEMA_HASH;\n }\n\n function getDomainSeparatorSchemaHash()\n public\n pure\n returns (bytes32)\n {\n return DOMAIN_SEPARATOR_SCHEMA_HASH;\n }\n\n function publicAddFillResults(FillResults memory totalFillResults, FillResults memory singleFillResults)\n public\n pure\n returns (FillResults memory)\n {\n addFillResults(totalFillResults, singleFillResults);\n return totalFillResults;\n }\n}\n",
"current/utils/SafeMath/SafeMath.sol": "pragma solidity ^0.4.24;\npragma experimental ABIEncoderV2;\n\ncontract SafeMath {\n function safeMul(uint a, uint b)\n internal\n pure\n returns (uint256)\n {\n uint c = a * b;\n assert(a == 0 || c / a == b);\n return c;\n }\n\n function safeDiv(uint a, uint b)\n internal\n pure\n returns (uint256)\n {\n uint c = a / b;\n return c;\n }\n\n function safeSub(uint a, uint b)\n internal\n pure\n returns (uint256)\n {\n assert(b <= a);\n return a - b;\n }\n\n function safeAdd(uint a, uint b)\n internal\n pure\n returns (uint256)\n {\n uint c = a + b;\n assert(c >= a);\n return c;\n }\n\n function max64(uint64 a, uint64 b)\n internal\n pure\n returns (uint256)\n {\n return a >= b ? a : b;\n }\n\n function min64(uint64 a, uint64 b)\n internal\n pure\n returns (uint256)\n {\n return a < b ? a : b;\n }\n\n function max256(uint256 a, uint256 b)\n internal\n pure\n returns (uint256)\n {\n return a >= b ? a : b;\n }\n\n function min256(uint256 a, uint256 b)\n internal\n pure\n returns (uint256)\n {\n return a < b ? a : b;\n }\n}\n"
},
"sourceTreeHashHex": "0x87f61bbf37456434fc5ebac23a19f461d791894b7e1aa08774ec9722744d5fc9",
"compiler": {
"name": "solc",
"version": "soljson-v0.4.24+commit.e67f0147.js",
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode.object",
"evm.bytecode.sourceMap",
"evm.deployedBytecode.object",
"evm.deployedBytecode.sourceMap"
]
}
}
}
},
"networks": {}
}
|