-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathLidoRelayer.json
351 lines (351 loc) · 43.4 KB
/
LidoRelayer.json
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
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
{
"_format": "hh-sol-artifact-1",
"contractName": "LidoRelayer",
"sourceName": "contracts/LidoRelayer.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IVault",
"name": "vault",
"type": "address"
},
{
"internalType": "contract IwstETH",
"name": "wstETH",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "enum IVault.SwapKind",
"name": "kind",
"type": "uint8"
},
{
"components": [
{
"internalType": "bytes32",
"name": "poolId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "assetInIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "assetOutIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "userData",
"type": "bytes"
}
],
"internalType": "struct IVault.BatchSwapStep[]",
"name": "swaps",
"type": "tuple[]"
},
{
"internalType": "contract IAsset[]",
"name": "assets",
"type": "address[]"
},
{
"components": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "bool",
"name": "fromInternalBalance",
"type": "bool"
},
{
"internalType": "address payable",
"name": "recipient",
"type": "address"
},
{
"internalType": "bool",
"name": "toInternalBalance",
"type": "bool"
}
],
"internalType": "struct IVault.FundManagement",
"name": "funds",
"type": "tuple"
},
{
"internalType": "int256[]",
"name": "limits",
"type": "int256[]"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "batchSwap",
"outputs": [
{
"internalType": "int256[]",
"name": "swapAmounts",
"type": "int256[]"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "poolId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address payable",
"name": "recipient",
"type": "address"
},
{
"components": [
{
"internalType": "contract IAsset[]",
"name": "assets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "minAmountsOut",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "userData",
"type": "bytes"
},
{
"internalType": "bool",
"name": "toInternalBalance",
"type": "bool"
}
],
"internalType": "struct IVault.ExitPoolRequest",
"name": "request",
"type": "tuple"
}
],
"name": "exitPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getStETH",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getVault",
"outputs": [
{
"internalType": "contract IVault",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getWstETH",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "poolId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"components": [
{
"internalType": "contract IAsset[]",
"name": "assets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "maxAmountsIn",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "userData",
"type": "bytes"
},
{
"internalType": "bool",
"name": "fromInternalBalance",
"type": "bool"
}
],
"internalType": "struct IVault.JoinPoolRequest",
"name": "request",
"type": "tuple"
}
],
"name": "joinPool",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "poolId",
"type": "bytes32"
},
{
"internalType": "enum IVault.SwapKind",
"name": "kind",
"type": "uint8"
},
{
"internalType": "contract IAsset",
"name": "assetIn",
"type": "address"
},
{
"internalType": "contract IAsset",
"name": "assetOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "userData",
"type": "bytes"
}
],
"internalType": "struct IVault.SingleSwap",
"name": "singleSwap",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "bool",
"name": "fromInternalBalance",
"type": "bool"
},
{
"internalType": "address payable",
"name": "recipient",
"type": "address"
},
{
"internalType": "bool",
"name": "toInternalBalance",
"type": "bool"
}
],
"internalType": "struct IVault.FundManagement",
"name": "funds",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "limit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "swap",
"outputs": [
{
"internalType": "uint256",
"name": "swapAmount",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60e06040523480156200001157600080fd5b506040516200243938038062002439833981016040819052620000349162000119565b81806001600160a01b03166080816001600160a01b031660601b81525050506001600081905550806001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200009757600080fd5b505af1158015620000ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d29190620000f3565b6001600160601b0319606091821b811660a05291901b1660c0525062000170565b60006020828403121562000105578081fd5b8151620001128162000157565b9392505050565b600080604083850312156200012c578081fd5b8251620001398162000157565b60208401519092506200014c8162000157565b809150509250929050565b6001600160a01b03811681146200016d57600080fd5b50565b60805160601c60a05160601c60c05160601c61222662000213600039806101d8528061026f528061034852806103ef52806104e752806105ca52806106ee528061078a5280610834528061093352806109fc5280610b155280610bf45280610ce25280610deb5280610ebb5280610f965280610feb5280611216525080610b815280610f4b5280610f7552806112d0525080608752806107cc52506122266000f3fe6080604052600436106100745760003560e01c8063945bcec91161004e578063945bcec914610122578063a2f0398314610142578063b95cac2814610157578063dd5323ed1461016a576100b2565b806352bbbe29146100b75780638bdb3913146100e05780638d928af814610100576100b2565b366100b2576100b0336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461020661017f565b005b600080fd5b6100ca6100c536600461195e565b610191565b6040516100d79190612065565b60405180910390f35b3480156100ec57600080fd5b506100b06100fb3660046117fd565b610567565b34801561010c57600080fd5b506101156107ca565b6040516100d79190611bf6565b610135610130366004611898565b6107ee565b6040516100d79190611c3d565b34801561014e57600080fd5b50610115610b7f565b6100b0610165366004611867565b610ba3565b34801561017657600080fd5b50610115610de9565b8161018d5761018d81610e0d565b5050565b600061019b610e60565b83516001600160a01b031633146101cd5760405162461bcd60e51b81526004016101c490611f2f565b60405180910390fd5b6000846040015190507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001516001600160a01b031614156103ed573085526020850151156102395760405162461bcd60e51b81526004016101c490611ed2565b6000808760200151600181111561024c57fe5b14610257578461025d565b86608001515b90506102693382610e79565b5061029c7f00000000000000000000000000000000000000000000000000000000000000006102966107ca565b8361107c565b6102a46107ca565b6001600160a01b03166352bbbe2934898989896040518663ffffffff1660e01b81526004016102d69493929190611f9d565b6020604051808303818588803b1580156102ef57600080fd5b505af1158015610303573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906103289190611a37565b925060018760200151600181111561033c57fe5b14156103e7576103e7337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016103929190611bf6565b60206040518083038186803b1580156103aa57600080fd5b505afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611a37565b6111d9565b5061054e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686606001516001600160a01b03161415610536573060408601526060850151156104535760405162461bcd60e51b81526004016101c490611f66565b61045b6107ca565b6001600160a01b03166352bbbe2934888888886040518663ffffffff1660e01b815260040161048d9493929190611f9d565b6020604051808303818588803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906104df9190611a37565b9150610531817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016103929190611bf6565b61054e565b60405162461bcd60e51b81526004016101c490611e9b565b610556611307565b5061055f61131b565b949350505050565b61056f610e60565b6001600160a01b03831633146105975760405162461bcd60e51b81526004016101c490611f2f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906105ff908690600401611bf6565b60206040518083038186803b15801561061757600080fd5b505afa15801561062b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064f9190611a37565b90506106596107ca565b6001600160a01b0316638bdb3913868686866040518563ffffffff1660e01b815260040161068a9493929190611d18565b600060405180830381600087803b1580156106a457600080fd5b505af11580156106b8573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691506370a0823190610724908790600401611bf6565b60206040518083038186803b15801561073c57600080fd5b505afa158015610750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107749190611a37565b905060006107828284611322565b90506107af857f000000000000000000000000000000000000000000000000000000000000000083611337565b6107b985826111d9565b5050506107c461131b565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60606107f8610e60565b84516001600160a01b031633146108215760405162461bcd60e51b81526004016101c490611f2f565b60408501516000805b888110156108dd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168a8a8381811061086857fe5b905060200201602081019061087d919061187c565b6001600160a01b03161415610894578091506108dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff890181106108d55760405162461bcd60e51b81526004016101c490611e9b565b60010161082a565b5060008686838181106108ec57fe5b9050602002013590506000811315610a4b573088526020880151156109235760405162461bcd60e51b81526004016101c490611ed2565b61092d3382610e79565b5061095a7f00000000000000000000000000000000000000000000000000000000000000006102966107ca565b6109626107ca565b6001600160a01b031663945bcec9348f8f8f8f8f8f8f8f8f6040518b63ffffffff1660e01b815260040161099e99989796959493929190611d54565b6000604051808303818588803b1580156109b757600080fd5b505af11580156109cb573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526109f4919081019061173e565b9350610a46337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016103929190611bf6565b610b5f565b306040890152606088015115610a735760405162461bcd60e51b81526004016101c490611f66565b610a7b6107ca565b6001600160a01b031663945bcec9348f8f8f8f8f8f8f8f8f6040518b63ffffffff1660e01b8152600401610ab799989796959493929190611d54565b6000604051808303818588803b158015610ad057600080fd5b505af1158015610ae4573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610b0d919081019061173e565b9350610b5f837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016103929190611bf6565b610b67611307565b505050610b7261131b565b9998505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610bab610e60565b6001600160a01b0383163314610bd35760405162461bcd60e51b81526004016101c490611f2f565b6000805b610be1838061206e565b9050811015610ca6576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610c1e848061206e565b83818110610c2857fe5b9050602002016020810190610c3d919061187c565b6001600160a01b03161415610c7157610c59602084018461206e565b82818110610c6357fe5b905060200201359150610ca6565b6001610c7d848061206e565b9050038110610c9e5760405162461bcd60e51b81526004016101c490611e9b565b600101610bd7565b50610cb18482610e79565b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610d199087908590600401611c24565b602060405180830381600087803b158015610d3357600080fd5b505af1158015610d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b91906117e1565b50610d746107ca565b6001600160a01b031663b95cac2834878787876040518663ffffffff1660e01b8152600401610da69493929190611d18565b6000604051808303818588803b158015610dbf57600080fd5b505af1158015610dd3573d6000803e3d6000fd5b5050505050610de0611307565b506107c461131b565b7f000000000000000000000000000000000000000000000000000000000000000090565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b610e726002600054141561019061017f565b6002600055565b600081610e8857506000611076565b6040517fbb2952fc0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bb2952fc90610ef0908690600401612065565b60206040518083038186803b158015610f0857600080fd5b505afa158015610f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f409190611a37565b6001019050610f70847f000000000000000000000000000000000000000000000000000000000000000083611337565b610fbb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008361107c565b6040517fea598cb00000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb090611020908490600401612065565b602060405180830381600087803b15801561103a57600080fd5b505af115801561104e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110729190611a37565b9150505b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815281906001600160a01b0385169063dd62ed3e906110c59030908790600401611c0a565b60206040518083038186803b1580156110dd57600080fd5b505afa1580156110f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111159190611a37565b10156111d4576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063095ea7b3906111829085907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401611c24565b602060405180830381600087803b15801561119c57600080fd5b505af11580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906117e1565b505050565b806111e35761018d565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e9061124b908590600401612065565b602060405180830381600087803b15801561126557600080fd5b505af1158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190611a37565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906111829086908590600401611c24565b4780156113185761131833826113da565b50565b6001600055565b600061133083836001611454565b9392505050565b80611341576111d4565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061137157fe5b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260609181602001602082028036833701905050905082816000815181106113bc57fe5b6020026020010181815250506113d385838361146a565b5050505050565b6113e9814710156101a361017f565b6000826001600160a01b03168260405161140290611bf3565b60006040518083038185875af1925050503d806000811461143f576040519150601f19603f3d011682016040523d82523d6000602084013e611444565b606091505b505090506111d4816101a461017f565b6000611463848411158361017f565b5050900390565b6060825167ffffffffffffffff8111801561148457600080fd5b506040519080825280602002602001820160405280156114be57816020015b6114ab6115c2565b8152602001906001900390816114a35790505b50905060005b8351811015611556576040805160a0810190915280600381526020018583815181106114ec57fe5b60200260200101516001600160a01b0316815260200184838151811061150e57fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b031681525082828151811061154357fe5b60209081029190910101526001016114c4565b5061155f6107ca565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b815260040161158a9190611c81565b600060405180830381600087803b1580156115a457600080fd5b505af11580156115b8573d6000803e3d6000fd5b5050505050505050565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b60008083601f840112611603578182fd5b50813567ffffffffffffffff81111561161a578182fd5b602083019150836020808302850101111561163457600080fd5b9250929050565b600082601f83011261164b578081fd5b813567ffffffffffffffff811115611661578182fd5b6116746020601f19601f840116016120d3565b915080825283602082850101111561168b57600080fd5b8060208401602084013760009082016020015292915050565b8035611076816121cd565b80356002811061107657600080fd5b6000608082840312156116cf578081fd5b50919050565b6000608082840312156116e6578081fd5b6116f060806120d3565b905081356116fd816121cd565b8152602082013561170d816121e2565b60208201526040820135611720816121cd565b60408201526060820135611733816121e2565b606082015292915050565b60006020808385031215611750578182fd5b825167ffffffffffffffff80821115611767578384fd5b818501915085601f83011261177a578384fd5b815181811115611788578485fd5b83810291506117988483016120d3565b8181528481019084860184860187018a10156117b2578788fd5b8795505b838610156117d45780518352600195909501949186019186016117b6565b5098975050505050505050565b6000602082840312156117f2578081fd5b8151611330816121e2565b60008060008060808587031215611812578283fd5b843593506020850135611824816121cd565b92506040850135611834816121cd565b9150606085013567ffffffffffffffff81111561184f578182fd5b61185b878288016116be565b91505092959194509250565b60008060008060808587031215611812578384fd5b60006020828403121561188d578081fd5b8135611330816121cd565b60008060008060008060008060006101208a8c0312156118b6578687fd5b6118c08b8b6116af565b985060208a013567ffffffffffffffff808211156118dc578889fd5b6118e88d838e016115f2565b909a50985060408c0135915080821115611900578687fd5b61190c8d838e016115f2565b90985096508691506119218d60608e016116d5565b955060e08c0135915080821115611936578485fd5b506119438c828d016115f2565b9a9d999c50979a969995989497966101000135949350505050565b60008060008060e08587031215611973578182fd5b843567ffffffffffffffff8082111561198a578384fd5b9086019060c0828903121561199d578384fd5b6119a760c06120d3565b823581526119b889602085016116af565b602082015260408301356119cb816121cd565b60408201526119dd89606085016116a4565b60608201526080830135608082015260a0830135828111156119fd578586fd5b611a098a82860161163b565b60a083015250809650505050611a2286602087016116d5565b939693955050505060a08201359160c0013590565b600060208284031215611a48578081fd5b5051919050565b6001600160a01b03169052565b60008284526020808501945082825b85811015611a99578135611a7e816121cd565b6001600160a01b031687529582019590820190600101611a6b565b509495945050505050565b60008284526020808501945082825b85811015611a9957813587529582019590820190600101611ab3565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000611b0582836120fa565b60808552611b17608086018284611a5c565b9150506020611b28818501856120fa565b868403838801528084527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115611b5e578485fd5b820280828585013780840193505050808201838152611b806040860186612160565b83888603016040890152611b95838284611acf565b9450505050506060830135611ba9816121e2565b8015156060860152508091505092915050565b6001600160a01b03808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611c7557835183529284019291840191600101611c59565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015611d0b578151805160048110611cb457fe5b855280870151611cc688870182611a4f565b508581015186860152606080820151611ce182880182611a4f565b505060809081015190611cf686820183611a4f565b505060a0939093019290850190600101611c9e565b5091979650505050505050565b60008582526001600160a01b03808616602084015280851660408401525060806060830152611d4a6080830184611af9565b9695505050505050565b60006101208201611d648c6121c3565b8b83526101206020840152808a82526101408401905061014060208c0285010191508b835b8c811015611e4b577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f3603018112611de9578586fd5b8e8101905080358552602081013560208601526040810135604086015260608101356060860152611e1d6080820182612160565b915060a06080870152611e3460a087018383611acf565b955050506020928301929190910190600101611d89565b5050508281036040840152611e6181898b611a5c565b9050611e706060840188611bbc565b82810360e0840152611e83818688611aa4565b915050826101008301529a9950505050505050505050565b60208082526017908201527f446f6573206e6f74207265717569726520777374455448000000000000000000604082015260600190565b60208082526021908201527f43616e6e6f742073656e642066726f6d20696e7465726e616c2062616c616e6360408201527f6500000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252600e908201527f496e76616c69642073656e646572000000000000000000000000000000000000604082015260600190565b6020808252601f908201527f43616e6e6f742073656e6420746f20696e7465726e616c2062616c616e636500604082015260600190565b600060e08252855160e0830152602080870151611fb9816121c3565b61010084015260408701516001600160a01b03908116610120850152606088015116610140840152608087015161016084015260a087015160c061018085015280516101a08501819052835b81811015612022578281018401518682016101c001528301612005565b8181111561203457846101c083880101525b50601f01601f191684016101c0019250612052905081840187611bbc565b5060a082019390935260c0015292915050565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126120a2578283fd5b83018035915067ffffffffffffffff8211156120bc578283fd5b602090810192508102360382131561163457600080fd5b60405181810167ffffffffffffffff811182821017156120f257600080fd5b604052919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261212e578283fd5b830160208101925035905067ffffffffffffffff81111561214e57600080fd5b60208102360383131561163457600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612194578283fd5b830160208101925035905067ffffffffffffffff8111156121b457600080fd5b80360383131561163457600080fd5b6002811061131857fe5b6001600160a01b038116811461131857600080fd5b801515811461131857600080fdfea2646970667358221220a11b3d352190aa0ca425c9fcafc613efc9b7c6740baaaf9b3eb4ae2dbce47cea64736f6c63430007010033",
"deployedBytecode": "0x6080604052600436106100745760003560e01c8063945bcec91161004e578063945bcec914610122578063a2f0398314610142578063b95cac2814610157578063dd5323ed1461016a576100b2565b806352bbbe29146100b75780638bdb3913146100e05780638d928af814610100576100b2565b366100b2576100b0336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461020661017f565b005b600080fd5b6100ca6100c536600461195e565b610191565b6040516100d79190612065565b60405180910390f35b3480156100ec57600080fd5b506100b06100fb3660046117fd565b610567565b34801561010c57600080fd5b506101156107ca565b6040516100d79190611bf6565b610135610130366004611898565b6107ee565b6040516100d79190611c3d565b34801561014e57600080fd5b50610115610b7f565b6100b0610165366004611867565b610ba3565b34801561017657600080fd5b50610115610de9565b8161018d5761018d81610e0d565b5050565b600061019b610e60565b83516001600160a01b031633146101cd5760405162461bcd60e51b81526004016101c490611f2f565b60405180910390fd5b6000846040015190507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001516001600160a01b031614156103ed573085526020850151156102395760405162461bcd60e51b81526004016101c490611ed2565b6000808760200151600181111561024c57fe5b14610257578461025d565b86608001515b90506102693382610e79565b5061029c7f00000000000000000000000000000000000000000000000000000000000000006102966107ca565b8361107c565b6102a46107ca565b6001600160a01b03166352bbbe2934898989896040518663ffffffff1660e01b81526004016102d69493929190611f9d565b6020604051808303818588803b1580156102ef57600080fd5b505af1158015610303573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906103289190611a37565b925060018760200151600181111561033c57fe5b14156103e7576103e7337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016103929190611bf6565b60206040518083038186803b1580156103aa57600080fd5b505afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611a37565b6111d9565b5061054e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686606001516001600160a01b03161415610536573060408601526060850151156104535760405162461bcd60e51b81526004016101c490611f66565b61045b6107ca565b6001600160a01b03166352bbbe2934888888886040518663ffffffff1660e01b815260040161048d9493929190611f9d565b6020604051808303818588803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906104df9190611a37565b9150610531817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016103929190611bf6565b61054e565b60405162461bcd60e51b81526004016101c490611e9b565b610556611307565b5061055f61131b565b949350505050565b61056f610e60565b6001600160a01b03831633146105975760405162461bcd60e51b81526004016101c490611f2f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906105ff908690600401611bf6565b60206040518083038186803b15801561061757600080fd5b505afa15801561062b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064f9190611a37565b90506106596107ca565b6001600160a01b0316638bdb3913868686866040518563ffffffff1660e01b815260040161068a9493929190611d18565b600060405180830381600087803b1580156106a457600080fd5b505af11580156106b8573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691506370a0823190610724908790600401611bf6565b60206040518083038186803b15801561073c57600080fd5b505afa158015610750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107749190611a37565b905060006107828284611322565b90506107af857f000000000000000000000000000000000000000000000000000000000000000083611337565b6107b985826111d9565b5050506107c461131b565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60606107f8610e60565b84516001600160a01b031633146108215760405162461bcd60e51b81526004016101c490611f2f565b60408501516000805b888110156108dd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168a8a8381811061086857fe5b905060200201602081019061087d919061187c565b6001600160a01b03161415610894578091506108dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff890181106108d55760405162461bcd60e51b81526004016101c490611e9b565b60010161082a565b5060008686838181106108ec57fe5b9050602002013590506000811315610a4b573088526020880151156109235760405162461bcd60e51b81526004016101c490611ed2565b61092d3382610e79565b5061095a7f00000000000000000000000000000000000000000000000000000000000000006102966107ca565b6109626107ca565b6001600160a01b031663945bcec9348f8f8f8f8f8f8f8f8f6040518b63ffffffff1660e01b815260040161099e99989796959493929190611d54565b6000604051808303818588803b1580156109b757600080fd5b505af11580156109cb573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526109f4919081019061173e565b9350610a46337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016103929190611bf6565b610b5f565b306040890152606088015115610a735760405162461bcd60e51b81526004016101c490611f66565b610a7b6107ca565b6001600160a01b031663945bcec9348f8f8f8f8f8f8f8f8f6040518b63ffffffff1660e01b8152600401610ab799989796959493929190611d54565b6000604051808303818588803b158015610ad057600080fd5b505af1158015610ae4573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610b0d919081019061173e565b9350610b5f837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016103929190611bf6565b610b67611307565b505050610b7261131b565b9998505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610bab610e60565b6001600160a01b0383163314610bd35760405162461bcd60e51b81526004016101c490611f2f565b6000805b610be1838061206e565b9050811015610ca6576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610c1e848061206e565b83818110610c2857fe5b9050602002016020810190610c3d919061187c565b6001600160a01b03161415610c7157610c59602084018461206e565b82818110610c6357fe5b905060200201359150610ca6565b6001610c7d848061206e565b9050038110610c9e5760405162461bcd60e51b81526004016101c490611e9b565b600101610bd7565b50610cb18482610e79565b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610d199087908590600401611c24565b602060405180830381600087803b158015610d3357600080fd5b505af1158015610d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b91906117e1565b50610d746107ca565b6001600160a01b031663b95cac2834878787876040518663ffffffff1660e01b8152600401610da69493929190611d18565b6000604051808303818588803b158015610dbf57600080fd5b505af1158015610dd3573d6000803e3d6000fd5b5050505050610de0611307565b506107c461131b565b7f000000000000000000000000000000000000000000000000000000000000000090565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b610e726002600054141561019061017f565b6002600055565b600081610e8857506000611076565b6040517fbb2952fc0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bb2952fc90610ef0908690600401612065565b60206040518083038186803b158015610f0857600080fd5b505afa158015610f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f409190611a37565b6001019050610f70847f000000000000000000000000000000000000000000000000000000000000000083611337565b610fbb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008361107c565b6040517fea598cb00000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb090611020908490600401612065565b602060405180830381600087803b15801561103a57600080fd5b505af115801561104e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110729190611a37565b9150505b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815281906001600160a01b0385169063dd62ed3e906110c59030908790600401611c0a565b60206040518083038186803b1580156110dd57600080fd5b505afa1580156110f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111159190611a37565b10156111d4576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063095ea7b3906111829085907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401611c24565b602060405180830381600087803b15801561119c57600080fd5b505af11580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906117e1565b505050565b806111e35761018d565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e9061124b908590600401612065565b602060405180830381600087803b15801561126557600080fd5b505af1158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190611a37565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906111829086908590600401611c24565b4780156113185761131833826113da565b50565b6001600055565b600061133083836001611454565b9392505050565b80611341576111d4565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061137157fe5b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260609181602001602082028036833701905050905082816000815181106113bc57fe5b6020026020010181815250506113d385838361146a565b5050505050565b6113e9814710156101a361017f565b6000826001600160a01b03168260405161140290611bf3565b60006040518083038185875af1925050503d806000811461143f576040519150601f19603f3d011682016040523d82523d6000602084013e611444565b606091505b505090506111d4816101a461017f565b6000611463848411158361017f565b5050900390565b6060825167ffffffffffffffff8111801561148457600080fd5b506040519080825280602002602001820160405280156114be57816020015b6114ab6115c2565b8152602001906001900390816114a35790505b50905060005b8351811015611556576040805160a0810190915280600381526020018583815181106114ec57fe5b60200260200101516001600160a01b0316815260200184838151811061150e57fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b031681525082828151811061154357fe5b60209081029190910101526001016114c4565b5061155f6107ca565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b815260040161158a9190611c81565b600060405180830381600087803b1580156115a457600080fd5b505af11580156115b8573d6000803e3d6000fd5b5050505050505050565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b60008083601f840112611603578182fd5b50813567ffffffffffffffff81111561161a578182fd5b602083019150836020808302850101111561163457600080fd5b9250929050565b600082601f83011261164b578081fd5b813567ffffffffffffffff811115611661578182fd5b6116746020601f19601f840116016120d3565b915080825283602082850101111561168b57600080fd5b8060208401602084013760009082016020015292915050565b8035611076816121cd565b80356002811061107657600080fd5b6000608082840312156116cf578081fd5b50919050565b6000608082840312156116e6578081fd5b6116f060806120d3565b905081356116fd816121cd565b8152602082013561170d816121e2565b60208201526040820135611720816121cd565b60408201526060820135611733816121e2565b606082015292915050565b60006020808385031215611750578182fd5b825167ffffffffffffffff80821115611767578384fd5b818501915085601f83011261177a578384fd5b815181811115611788578485fd5b83810291506117988483016120d3565b8181528481019084860184860187018a10156117b2578788fd5b8795505b838610156117d45780518352600195909501949186019186016117b6565b5098975050505050505050565b6000602082840312156117f2578081fd5b8151611330816121e2565b60008060008060808587031215611812578283fd5b843593506020850135611824816121cd565b92506040850135611834816121cd565b9150606085013567ffffffffffffffff81111561184f578182fd5b61185b878288016116be565b91505092959194509250565b60008060008060808587031215611812578384fd5b60006020828403121561188d578081fd5b8135611330816121cd565b60008060008060008060008060006101208a8c0312156118b6578687fd5b6118c08b8b6116af565b985060208a013567ffffffffffffffff808211156118dc578889fd5b6118e88d838e016115f2565b909a50985060408c0135915080821115611900578687fd5b61190c8d838e016115f2565b90985096508691506119218d60608e016116d5565b955060e08c0135915080821115611936578485fd5b506119438c828d016115f2565b9a9d999c50979a969995989497966101000135949350505050565b60008060008060e08587031215611973578182fd5b843567ffffffffffffffff8082111561198a578384fd5b9086019060c0828903121561199d578384fd5b6119a760c06120d3565b823581526119b889602085016116af565b602082015260408301356119cb816121cd565b60408201526119dd89606085016116a4565b60608201526080830135608082015260a0830135828111156119fd578586fd5b611a098a82860161163b565b60a083015250809650505050611a2286602087016116d5565b939693955050505060a08201359160c0013590565b600060208284031215611a48578081fd5b5051919050565b6001600160a01b03169052565b60008284526020808501945082825b85811015611a99578135611a7e816121cd565b6001600160a01b031687529582019590820190600101611a6b565b509495945050505050565b60008284526020808501945082825b85811015611a9957813587529582019590820190600101611ab3565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000611b0582836120fa565b60808552611b17608086018284611a5c565b9150506020611b28818501856120fa565b868403838801528084527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115611b5e578485fd5b820280828585013780840193505050808201838152611b806040860186612160565b83888603016040890152611b95838284611acf565b9450505050506060830135611ba9816121e2565b8015156060860152508091505092915050565b6001600160a01b03808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611c7557835183529284019291840191600101611c59565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015611d0b578151805160048110611cb457fe5b855280870151611cc688870182611a4f565b508581015186860152606080820151611ce182880182611a4f565b505060809081015190611cf686820183611a4f565b505060a0939093019290850190600101611c9e565b5091979650505050505050565b60008582526001600160a01b03808616602084015280851660408401525060806060830152611d4a6080830184611af9565b9695505050505050565b60006101208201611d648c6121c3565b8b83526101206020840152808a82526101408401905061014060208c0285010191508b835b8c811015611e4b577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f3603018112611de9578586fd5b8e8101905080358552602081013560208601526040810135604086015260608101356060860152611e1d6080820182612160565b915060a06080870152611e3460a087018383611acf565b955050506020928301929190910190600101611d89565b5050508281036040840152611e6181898b611a5c565b9050611e706060840188611bbc565b82810360e0840152611e83818688611aa4565b915050826101008301529a9950505050505050505050565b60208082526017908201527f446f6573206e6f74207265717569726520777374455448000000000000000000604082015260600190565b60208082526021908201527f43616e6e6f742073656e642066726f6d20696e7465726e616c2062616c616e6360408201527f6500000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252600e908201527f496e76616c69642073656e646572000000000000000000000000000000000000604082015260600190565b6020808252601f908201527f43616e6e6f742073656e6420746f20696e7465726e616c2062616c616e636500604082015260600190565b600060e08252855160e0830152602080870151611fb9816121c3565b61010084015260408701516001600160a01b03908116610120850152606088015116610140840152608087015161016084015260a087015160c061018085015280516101a08501819052835b81811015612022578281018401518682016101c001528301612005565b8181111561203457846101c083880101525b50601f01601f191684016101c0019250612052905081840187611bbc565b5060a082019390935260c0015292915050565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126120a2578283fd5b83018035915067ffffffffffffffff8211156120bc578283fd5b602090810192508102360382131561163457600080fd5b60405181810167ffffffffffffffff811182821017156120f257600080fd5b604052919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261212e578283fd5b830160208101925035905067ffffffffffffffff81111561214e57600080fd5b60208102360383131561163457600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612194578283fd5b830160208101925035905067ffffffffffffffff8111156121b457600080fd5b80360383131561163457600080fd5b6002811061131857fe5b6001600160a01b038116811461131857600080fd5b801515811461131857600080fdfea2646970667358221220a11b3d352190aa0ca425c9fcafc613efc9b7c6740baaaf9b3eb4ae2dbce47cea64736f6c63430007010033",
"linkReferences": {},
"deployedLinkReferences": {}
}