@aintivirus-ai/mixer-sdk 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -15
- package/dist/config.d.ts +37 -0
- package/dist/config.js +95 -0
- package/dist/createSDK.d.ts +29 -0
- package/dist/createSDK.js +48 -0
- package/dist/errors.d.ts +46 -0
- package/dist/errors.js +72 -0
- package/dist/evm/abis/AintiVirusFactory.json +1463 -0
- package/dist/evm/abis/AintiVirusPayment.json +677 -0
- package/dist/evm/abis/AintiVirusStaking.json +586 -0
- package/dist/evm/abis/WETHGateway.json +137 -0
- package/dist/evm/index.d.ts +222 -22
- package/dist/evm/index.js +681 -246
- package/dist/evm/multicall.d.ts +24 -0
- package/dist/evm/multicall.js +43 -0
- package/dist/evm/subgraph/client.d.ts +37 -21
- package/dist/evm/subgraph/client.js +126 -80
- package/dist/evm/subgraph/queries.d.ts +13 -11
- package/dist/evm/subgraph/queries.js +85 -40
- package/dist/evm/subgraph/types.d.ts +46 -28
- package/dist/evm/subgraph/utils.d.ts +9 -2
- package/dist/evm/subgraph/utils.js +21 -4
- package/dist/hooks/context.d.ts +48 -0
- package/dist/hooks/context.js +115 -0
- package/dist/hooks/index.d.ts +15 -23
- package/dist/hooks/index.js +17 -23
- package/dist/hooks/useAdmin.d.ts +49 -35
- package/dist/hooks/useAdmin.js +99 -163
- package/dist/hooks/useAintiVirus.d.ts +9 -27
- package/dist/hooks/useAintiVirus.js +55 -125
- package/dist/hooks/useClaim.d.ts +6 -19
- package/dist/hooks/useClaim.js +24 -67
- package/dist/hooks/useDeploy.d.ts +11 -22
- package/dist/hooks/useDeploy.js +18 -82
- package/dist/hooks/useDeposit.d.ts +24 -21
- package/dist/hooks/useDeposit.js +47 -77
- package/dist/hooks/useEVMReady.d.ts +19 -0
- package/dist/hooks/useEVMReady.js +42 -0
- package/dist/hooks/usePayment.d.ts +37 -0
- package/dist/hooks/usePayment.js +75 -0
- package/dist/hooks/useStake.d.ts +6 -19
- package/dist/hooks/useStake.js +28 -73
- package/dist/hooks/useView.d.ts +6 -19
- package/dist/hooks/useView.js +29 -76
- package/dist/hooks/useWithdraw.d.ts +24 -23
- package/dist/hooks/useWithdraw.js +26 -99
- package/dist/hooks/useWithdrawByGiftCard.d.ts +34 -0
- package/dist/hooks/useWithdrawByGiftCard.js +44 -0
- package/dist/hooks/utils.d.ts +4 -2
- package/dist/hooks/utils.js +82 -10
- package/dist/index.d.ts +13 -14
- package/dist/index.js +58 -54
- package/dist/sdkConfig.d.ts +14 -0
- package/dist/sdkConfig.js +17 -0
- package/dist/solana/index.d.ts +1 -0
- package/dist/solana/index.js +24 -23
- package/dist/types/index.d.ts +63 -7
- package/dist/utils/circuit.d.ts +14 -0
- package/dist/utils/circuit.js +17 -0
- package/dist/utils/crypto.d.ts +2 -0
- package/dist/utils/crypto.js +7 -4
- package/dist/utils/proof.d.ts +11 -7
- package/dist/utils/proof.js +46 -37
- package/dist/utils/withdrawProof.d.ts +19 -0
- package/dist/utils/withdrawProof.js +32 -0
- package/dist/utils/witness_calculator.js +381 -0
- package/package.json +82 -69
|
@@ -0,0 +1,1463 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "AintiVirusFactory",
|
|
4
|
+
"sourceName": "contracts/AintiVirusFactory.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [
|
|
8
|
+
{
|
|
9
|
+
"internalType": "contract IWETH",
|
|
10
|
+
"name": "_weth",
|
|
11
|
+
"type": "address"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"internalType": "address",
|
|
15
|
+
"name": "_verifier",
|
|
16
|
+
"type": "address"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"internalType": "address",
|
|
20
|
+
"name": "_hasher",
|
|
21
|
+
"type": "address"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"internalType": "uint256",
|
|
25
|
+
"name": "_feeBps",
|
|
26
|
+
"type": "uint256"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"internalType": "address",
|
|
30
|
+
"name": "_feeCollector",
|
|
31
|
+
"type": "address"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"internalType": "uint256",
|
|
35
|
+
"name": "_rewardsShareBps",
|
|
36
|
+
"type": "uint256"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"stateMutability": "nonpayable",
|
|
40
|
+
"type": "constructor"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"inputs": [],
|
|
44
|
+
"name": "AccessControlBadConfirmation",
|
|
45
|
+
"type": "error"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"inputs": [
|
|
49
|
+
{
|
|
50
|
+
"internalType": "address",
|
|
51
|
+
"name": "account",
|
|
52
|
+
"type": "address"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"internalType": "bytes32",
|
|
56
|
+
"name": "neededRole",
|
|
57
|
+
"type": "bytes32"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"name": "AccessControlUnauthorizedAccount",
|
|
61
|
+
"type": "error"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"inputs": [],
|
|
65
|
+
"name": "ArraysLengthMismatch",
|
|
66
|
+
"type": "error"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"inputs": [],
|
|
70
|
+
"name": "ETHAmountMismatch",
|
|
71
|
+
"type": "error"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"inputs": [],
|
|
75
|
+
"name": "FailedCall",
|
|
76
|
+
"type": "error"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"inputs": [],
|
|
80
|
+
"name": "FeeCollectorNotSet",
|
|
81
|
+
"type": "error"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"inputs": [],
|
|
85
|
+
"name": "FeeExceedsAmount",
|
|
86
|
+
"type": "error"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"inputs": [],
|
|
90
|
+
"name": "FeeMismatch",
|
|
91
|
+
"type": "error"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"inputs": [],
|
|
95
|
+
"name": "FeeRateExceedsMaximum",
|
|
96
|
+
"type": "error"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"inputs": [],
|
|
100
|
+
"name": "GiftCardWithdrawalsDisabled",
|
|
101
|
+
"type": "error"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"inputs": [],
|
|
105
|
+
"name": "HasherNotSet",
|
|
106
|
+
"type": "error"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"inputs": [
|
|
110
|
+
{
|
|
111
|
+
"internalType": "uint256",
|
|
112
|
+
"name": "balance",
|
|
113
|
+
"type": "uint256"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"internalType": "uint256",
|
|
117
|
+
"name": "needed",
|
|
118
|
+
"type": "uint256"
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"name": "InsufficientBalance",
|
|
122
|
+
"type": "error"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"inputs": [],
|
|
126
|
+
"name": "InvalidAmount",
|
|
127
|
+
"type": "error"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"inputs": [],
|
|
131
|
+
"name": "InvalidAsset",
|
|
132
|
+
"type": "error"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"inputs": [],
|
|
136
|
+
"name": "InvalidRelayer",
|
|
137
|
+
"type": "error"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"inputs": [],
|
|
141
|
+
"name": "MixerExists",
|
|
142
|
+
"type": "error"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"inputs": [],
|
|
146
|
+
"name": "MixerNotDeployed",
|
|
147
|
+
"type": "error"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"inputs": [],
|
|
151
|
+
"name": "NoRewards",
|
|
152
|
+
"type": "error"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"inputs": [],
|
|
156
|
+
"name": "RewardsAlreadyRecovered",
|
|
157
|
+
"type": "error"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"inputs": [],
|
|
161
|
+
"name": "PaymentContractMissing",
|
|
162
|
+
"type": "error"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"inputs": [],
|
|
166
|
+
"name": "ReentrancyGuardReentrantCall",
|
|
167
|
+
"type": "error"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"inputs": [],
|
|
171
|
+
"name": "RewardPoolShareExceedsMax",
|
|
172
|
+
"type": "error"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"inputs": [
|
|
176
|
+
{
|
|
177
|
+
"internalType": "address",
|
|
178
|
+
"name": "token",
|
|
179
|
+
"type": "address"
|
|
180
|
+
}
|
|
181
|
+
],
|
|
182
|
+
"name": "SafeERC20FailedOperation",
|
|
183
|
+
"type": "error"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"inputs": [],
|
|
187
|
+
"name": "SeasonNotEnded",
|
|
188
|
+
"type": "error"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"inputs": [],
|
|
192
|
+
"name": "UnregisteredPartner",
|
|
193
|
+
"type": "error"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"inputs": [],
|
|
197
|
+
"name": "UsersStaked",
|
|
198
|
+
"type": "error"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"inputs": [],
|
|
202
|
+
"name": "VerifierNotSet",
|
|
203
|
+
"type": "error"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"anonymous": false,
|
|
207
|
+
"inputs": [
|
|
208
|
+
{
|
|
209
|
+
"indexed": true,
|
|
210
|
+
"internalType": "address",
|
|
211
|
+
"name": "asset",
|
|
212
|
+
"type": "address"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"indexed": false,
|
|
216
|
+
"internalType": "uint256",
|
|
217
|
+
"name": "amount",
|
|
218
|
+
"type": "uint256"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"indexed": false,
|
|
222
|
+
"internalType": "uint256",
|
|
223
|
+
"name": "protocolFee",
|
|
224
|
+
"type": "uint256"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"indexed": false,
|
|
228
|
+
"internalType": "uint256",
|
|
229
|
+
"name": "extraFee",
|
|
230
|
+
"type": "uint256"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"indexed": true,
|
|
234
|
+
"internalType": "bytes32",
|
|
235
|
+
"name": "commitment",
|
|
236
|
+
"type": "bytes32"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"indexed": true,
|
|
240
|
+
"internalType": "address",
|
|
241
|
+
"name": "partnerAddress",
|
|
242
|
+
"type": "address"
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
"name": "Deposit",
|
|
246
|
+
"type": "event"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"anonymous": false,
|
|
250
|
+
"inputs": [
|
|
251
|
+
{
|
|
252
|
+
"indexed": true,
|
|
253
|
+
"internalType": "address",
|
|
254
|
+
"name": "feeCollector",
|
|
255
|
+
"type": "address"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"indexed": false,
|
|
259
|
+
"internalType": "uint256",
|
|
260
|
+
"name": "feeBps",
|
|
261
|
+
"type": "uint256"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"indexed": false,
|
|
265
|
+
"internalType": "uint256",
|
|
266
|
+
"name": "rewardsShareBps",
|
|
267
|
+
"type": "uint256"
|
|
268
|
+
}
|
|
269
|
+
],
|
|
270
|
+
"name": "FactoryInitialized",
|
|
271
|
+
"type": "event"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"anonymous": false,
|
|
275
|
+
"inputs": [
|
|
276
|
+
{
|
|
277
|
+
"indexed": true,
|
|
278
|
+
"internalType": "address",
|
|
279
|
+
"name": "oldWallet",
|
|
280
|
+
"type": "address"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"indexed": true,
|
|
284
|
+
"internalType": "address",
|
|
285
|
+
"name": "newWallet",
|
|
286
|
+
"type": "address"
|
|
287
|
+
}
|
|
288
|
+
],
|
|
289
|
+
"name": "FeeCollectorUpdated",
|
|
290
|
+
"type": "event"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"anonymous": false,
|
|
294
|
+
"inputs": [
|
|
295
|
+
{
|
|
296
|
+
"indexed": true,
|
|
297
|
+
"internalType": "address",
|
|
298
|
+
"name": "feeCollector",
|
|
299
|
+
"type": "address"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"indexed": false,
|
|
303
|
+
"internalType": "uint256",
|
|
304
|
+
"name": "feeBps",
|
|
305
|
+
"type": "uint256"
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"indexed": false,
|
|
309
|
+
"internalType": "uint256",
|
|
310
|
+
"name": "rewardsShareBps",
|
|
311
|
+
"type": "uint256"
|
|
312
|
+
}
|
|
313
|
+
],
|
|
314
|
+
"name": "FeeConfigUpdated",
|
|
315
|
+
"type": "event"
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"anonymous": false,
|
|
319
|
+
"inputs": [
|
|
320
|
+
{
|
|
321
|
+
"indexed": false,
|
|
322
|
+
"internalType": "uint256",
|
|
323
|
+
"name": "oldFeeRate",
|
|
324
|
+
"type": "uint256"
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"indexed": false,
|
|
328
|
+
"internalType": "uint256",
|
|
329
|
+
"name": "newFeeRate",
|
|
330
|
+
"type": "uint256"
|
|
331
|
+
}
|
|
332
|
+
],
|
|
333
|
+
"name": "FeeRateUpdated",
|
|
334
|
+
"type": "event"
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"anonymous": false,
|
|
338
|
+
"inputs": [
|
|
339
|
+
{
|
|
340
|
+
"indexed": true,
|
|
341
|
+
"internalType": "address",
|
|
342
|
+
"name": "asset",
|
|
343
|
+
"type": "address"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"indexed": false,
|
|
347
|
+
"internalType": "uint256",
|
|
348
|
+
"name": "amount",
|
|
349
|
+
"type": "uint256"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"indexed": false,
|
|
353
|
+
"internalType": "bool",
|
|
354
|
+
"name": "enabled",
|
|
355
|
+
"type": "bool"
|
|
356
|
+
}
|
|
357
|
+
],
|
|
358
|
+
"name": "GiftCardEnabledUpdated",
|
|
359
|
+
"type": "event"
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"anonymous": false,
|
|
363
|
+
"inputs": [
|
|
364
|
+
{
|
|
365
|
+
"indexed": true,
|
|
366
|
+
"internalType": "address",
|
|
367
|
+
"name": "asset",
|
|
368
|
+
"type": "address"
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"indexed": false,
|
|
372
|
+
"internalType": "uint256",
|
|
373
|
+
"name": "amount",
|
|
374
|
+
"type": "uint256"
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"indexed": false,
|
|
378
|
+
"internalType": "address",
|
|
379
|
+
"name": "to",
|
|
380
|
+
"type": "address"
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"indexed": true,
|
|
384
|
+
"internalType": "bytes32",
|
|
385
|
+
"name": "orderId",
|
|
386
|
+
"type": "bytes32"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"indexed": false,
|
|
390
|
+
"internalType": "bytes32",
|
|
391
|
+
"name": "nullifierHash",
|
|
392
|
+
"type": "bytes32"
|
|
393
|
+
}
|
|
394
|
+
],
|
|
395
|
+
"name": "GiftCardWithdrawal",
|
|
396
|
+
"type": "event"
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"anonymous": false,
|
|
400
|
+
"inputs": [
|
|
401
|
+
{
|
|
402
|
+
"indexed": true,
|
|
403
|
+
"internalType": "contract AintiVirusMixer",
|
|
404
|
+
"name": "mixer",
|
|
405
|
+
"type": "address"
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
"indexed": true,
|
|
409
|
+
"internalType": "address",
|
|
410
|
+
"name": "asset",
|
|
411
|
+
"type": "address"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"indexed": true,
|
|
415
|
+
"internalType": "uint256",
|
|
416
|
+
"name": "amount",
|
|
417
|
+
"type": "uint256"
|
|
418
|
+
}
|
|
419
|
+
],
|
|
420
|
+
"name": "MixerDeployed",
|
|
421
|
+
"type": "event"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"anonymous": false,
|
|
425
|
+
"inputs": [
|
|
426
|
+
{
|
|
427
|
+
"indexed": true,
|
|
428
|
+
"internalType": "address",
|
|
429
|
+
"name": "partner",
|
|
430
|
+
"type": "address"
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"indexed": false,
|
|
434
|
+
"internalType": "uint256",
|
|
435
|
+
"name": "extraFee",
|
|
436
|
+
"type": "uint256"
|
|
437
|
+
}
|
|
438
|
+
],
|
|
439
|
+
"name": "PartnerAdded",
|
|
440
|
+
"type": "event"
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"anonymous": false,
|
|
444
|
+
"inputs": [
|
|
445
|
+
{
|
|
446
|
+
"indexed": true,
|
|
447
|
+
"internalType": "address",
|
|
448
|
+
"name": "partner",
|
|
449
|
+
"type": "address"
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"indexed": false,
|
|
453
|
+
"internalType": "uint256",
|
|
454
|
+
"name": "extraFee",
|
|
455
|
+
"type": "uint256"
|
|
456
|
+
}
|
|
457
|
+
],
|
|
458
|
+
"name": "PartnerExtraFeeUpdated",
|
|
459
|
+
"type": "event"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"anonymous": false,
|
|
463
|
+
"inputs": [
|
|
464
|
+
{
|
|
465
|
+
"indexed": true,
|
|
466
|
+
"internalType": "address",
|
|
467
|
+
"name": "partner",
|
|
468
|
+
"type": "address"
|
|
469
|
+
}
|
|
470
|
+
],
|
|
471
|
+
"name": "PartnerRemoved",
|
|
472
|
+
"type": "event"
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"anonymous": false,
|
|
476
|
+
"inputs": [
|
|
477
|
+
{
|
|
478
|
+
"indexed": false,
|
|
479
|
+
"internalType": "uint256",
|
|
480
|
+
"name": "oldBps",
|
|
481
|
+
"type": "uint256"
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
"indexed": false,
|
|
485
|
+
"internalType": "uint256",
|
|
486
|
+
"name": "newBps",
|
|
487
|
+
"type": "uint256"
|
|
488
|
+
}
|
|
489
|
+
],
|
|
490
|
+
"name": "RewardPoolShareUpdated",
|
|
491
|
+
"type": "event"
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"anonymous": false,
|
|
495
|
+
"inputs": [
|
|
496
|
+
{
|
|
497
|
+
"indexed": true,
|
|
498
|
+
"internalType": "bytes32",
|
|
499
|
+
"name": "role",
|
|
500
|
+
"type": "bytes32"
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"indexed": true,
|
|
504
|
+
"internalType": "bytes32",
|
|
505
|
+
"name": "previousAdminRole",
|
|
506
|
+
"type": "bytes32"
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"indexed": true,
|
|
510
|
+
"internalType": "bytes32",
|
|
511
|
+
"name": "newAdminRole",
|
|
512
|
+
"type": "bytes32"
|
|
513
|
+
}
|
|
514
|
+
],
|
|
515
|
+
"name": "RoleAdminChanged",
|
|
516
|
+
"type": "event"
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
"anonymous": false,
|
|
520
|
+
"inputs": [
|
|
521
|
+
{
|
|
522
|
+
"indexed": true,
|
|
523
|
+
"internalType": "bytes32",
|
|
524
|
+
"name": "role",
|
|
525
|
+
"type": "bytes32"
|
|
526
|
+
},
|
|
527
|
+
{
|
|
528
|
+
"indexed": true,
|
|
529
|
+
"internalType": "address",
|
|
530
|
+
"name": "account",
|
|
531
|
+
"type": "address"
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
"indexed": true,
|
|
535
|
+
"internalType": "address",
|
|
536
|
+
"name": "sender",
|
|
537
|
+
"type": "address"
|
|
538
|
+
}
|
|
539
|
+
],
|
|
540
|
+
"name": "RoleGranted",
|
|
541
|
+
"type": "event"
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"anonymous": false,
|
|
545
|
+
"inputs": [
|
|
546
|
+
{
|
|
547
|
+
"indexed": true,
|
|
548
|
+
"internalType": "bytes32",
|
|
549
|
+
"name": "role",
|
|
550
|
+
"type": "bytes32"
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
"indexed": true,
|
|
554
|
+
"internalType": "address",
|
|
555
|
+
"name": "account",
|
|
556
|
+
"type": "address"
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"indexed": true,
|
|
560
|
+
"internalType": "address",
|
|
561
|
+
"name": "sender",
|
|
562
|
+
"type": "address"
|
|
563
|
+
}
|
|
564
|
+
],
|
|
565
|
+
"name": "RoleRevoked",
|
|
566
|
+
"type": "event"
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
"anonymous": false,
|
|
570
|
+
"inputs": [
|
|
571
|
+
{
|
|
572
|
+
"indexed": true,
|
|
573
|
+
"internalType": "address",
|
|
574
|
+
"name": "deployer",
|
|
575
|
+
"type": "address"
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"indexed": true,
|
|
579
|
+
"internalType": "address",
|
|
580
|
+
"name": "staking",
|
|
581
|
+
"type": "address"
|
|
582
|
+
}
|
|
583
|
+
],
|
|
584
|
+
"name": "StakingDeployed",
|
|
585
|
+
"type": "event"
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
"anonymous": false,
|
|
589
|
+
"inputs": [
|
|
590
|
+
{
|
|
591
|
+
"indexed": true,
|
|
592
|
+
"internalType": "address",
|
|
593
|
+
"name": "asset",
|
|
594
|
+
"type": "address"
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
"indexed": true,
|
|
598
|
+
"internalType": "uint256",
|
|
599
|
+
"name": "seasonId",
|
|
600
|
+
"type": "uint256"
|
|
601
|
+
},
|
|
602
|
+
{
|
|
603
|
+
"indexed": false,
|
|
604
|
+
"internalType": "uint256",
|
|
605
|
+
"name": "amount",
|
|
606
|
+
"type": "uint256"
|
|
607
|
+
}
|
|
608
|
+
],
|
|
609
|
+
"name": "UnclaimedRewardsRecovered",
|
|
610
|
+
"type": "event"
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
"anonymous": false,
|
|
614
|
+
"inputs": [
|
|
615
|
+
{
|
|
616
|
+
"indexed": true,
|
|
617
|
+
"internalType": "address",
|
|
618
|
+
"name": "asset",
|
|
619
|
+
"type": "address"
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"indexed": false,
|
|
623
|
+
"internalType": "uint256",
|
|
624
|
+
"name": "amount",
|
|
625
|
+
"type": "uint256"
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"indexed": false,
|
|
629
|
+
"internalType": "address",
|
|
630
|
+
"name": "to",
|
|
631
|
+
"type": "address"
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
"indexed": false,
|
|
635
|
+
"internalType": "bytes32",
|
|
636
|
+
"name": "nullifierHash",
|
|
637
|
+
"type": "bytes32"
|
|
638
|
+
}
|
|
639
|
+
],
|
|
640
|
+
"name": "Withdrawal",
|
|
641
|
+
"type": "event"
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
"inputs": [],
|
|
645
|
+
"name": "DEFAULT_ADMIN_ROLE",
|
|
646
|
+
"outputs": [
|
|
647
|
+
{
|
|
648
|
+
"internalType": "bytes32",
|
|
649
|
+
"name": "",
|
|
650
|
+
"type": "bytes32"
|
|
651
|
+
}
|
|
652
|
+
],
|
|
653
|
+
"stateMutability": "view",
|
|
654
|
+
"type": "function"
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
"inputs": [],
|
|
658
|
+
"name": "OPERATOR_ROLE",
|
|
659
|
+
"outputs": [
|
|
660
|
+
{
|
|
661
|
+
"internalType": "bytes32",
|
|
662
|
+
"name": "",
|
|
663
|
+
"type": "bytes32"
|
|
664
|
+
}
|
|
665
|
+
],
|
|
666
|
+
"stateMutability": "view",
|
|
667
|
+
"type": "function"
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
"inputs": [
|
|
671
|
+
{
|
|
672
|
+
"internalType": "address",
|
|
673
|
+
"name": "_partner",
|
|
674
|
+
"type": "address"
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
"internalType": "uint256",
|
|
678
|
+
"name": "_extraFee",
|
|
679
|
+
"type": "uint256"
|
|
680
|
+
}
|
|
681
|
+
],
|
|
682
|
+
"name": "addPartner",
|
|
683
|
+
"outputs": [],
|
|
684
|
+
"stateMutability": "nonpayable",
|
|
685
|
+
"type": "function"
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
"inputs": [],
|
|
689
|
+
"name": "assets",
|
|
690
|
+
"outputs": [
|
|
691
|
+
{
|
|
692
|
+
"internalType": "address[]",
|
|
693
|
+
"name": "",
|
|
694
|
+
"type": "address[]"
|
|
695
|
+
}
|
|
696
|
+
],
|
|
697
|
+
"stateMutability": "view",
|
|
698
|
+
"type": "function"
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
"inputs": [
|
|
702
|
+
{
|
|
703
|
+
"internalType": "address[]",
|
|
704
|
+
"name": "_assets",
|
|
705
|
+
"type": "address[]"
|
|
706
|
+
},
|
|
707
|
+
{
|
|
708
|
+
"internalType": "uint256[]",
|
|
709
|
+
"name": "_amounts",
|
|
710
|
+
"type": "uint256[]"
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
"internalType": "bool",
|
|
714
|
+
"name": "_enabled",
|
|
715
|
+
"type": "bool"
|
|
716
|
+
}
|
|
717
|
+
],
|
|
718
|
+
"name": "batchSetMixerGiftCardEnabled",
|
|
719
|
+
"outputs": [],
|
|
720
|
+
"stateMutability": "nonpayable",
|
|
721
|
+
"type": "function"
|
|
722
|
+
},
|
|
723
|
+
{
|
|
724
|
+
"inputs": [
|
|
725
|
+
{
|
|
726
|
+
"internalType": "uint256",
|
|
727
|
+
"name": "_amount",
|
|
728
|
+
"type": "uint256"
|
|
729
|
+
},
|
|
730
|
+
{
|
|
731
|
+
"internalType": "address",
|
|
732
|
+
"name": "_partnerAddress",
|
|
733
|
+
"type": "address"
|
|
734
|
+
}
|
|
735
|
+
],
|
|
736
|
+
"name": "calculateDepositAmount",
|
|
737
|
+
"outputs": [
|
|
738
|
+
{
|
|
739
|
+
"internalType": "uint256",
|
|
740
|
+
"name": "",
|
|
741
|
+
"type": "uint256"
|
|
742
|
+
}
|
|
743
|
+
],
|
|
744
|
+
"stateMutability": "view",
|
|
745
|
+
"type": "function"
|
|
746
|
+
},
|
|
747
|
+
{
|
|
748
|
+
"inputs": [
|
|
749
|
+
{
|
|
750
|
+
"internalType": "address",
|
|
751
|
+
"name": "_asset",
|
|
752
|
+
"type": "address"
|
|
753
|
+
},
|
|
754
|
+
{
|
|
755
|
+
"internalType": "uint256",
|
|
756
|
+
"name": "seasonId",
|
|
757
|
+
"type": "uint256"
|
|
758
|
+
}
|
|
759
|
+
],
|
|
760
|
+
"name": "claim",
|
|
761
|
+
"outputs": [
|
|
762
|
+
{
|
|
763
|
+
"internalType": "uint256",
|
|
764
|
+
"name": "reward",
|
|
765
|
+
"type": "uint256"
|
|
766
|
+
}
|
|
767
|
+
],
|
|
768
|
+
"stateMutability": "nonpayable",
|
|
769
|
+
"type": "function"
|
|
770
|
+
},
|
|
771
|
+
{
|
|
772
|
+
"inputs": [
|
|
773
|
+
{
|
|
774
|
+
"internalType": "address",
|
|
775
|
+
"name": "_asset",
|
|
776
|
+
"type": "address"
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
"internalType": "uint256",
|
|
780
|
+
"name": "seasonId",
|
|
781
|
+
"type": "uint256"
|
|
782
|
+
}
|
|
783
|
+
],
|
|
784
|
+
"name": "recoverUnclaimedRewards",
|
|
785
|
+
"outputs": [],
|
|
786
|
+
"stateMutability": "nonpayable",
|
|
787
|
+
"type": "function"
|
|
788
|
+
},
|
|
789
|
+
{
|
|
790
|
+
"inputs": [],
|
|
791
|
+
"name": "currentStakeSeasonId",
|
|
792
|
+
"outputs": [
|
|
793
|
+
{
|
|
794
|
+
"internalType": "uint256",
|
|
795
|
+
"name": "",
|
|
796
|
+
"type": "uint256"
|
|
797
|
+
}
|
|
798
|
+
],
|
|
799
|
+
"stateMutability": "view",
|
|
800
|
+
"type": "function"
|
|
801
|
+
},
|
|
802
|
+
{
|
|
803
|
+
"inputs": [
|
|
804
|
+
{
|
|
805
|
+
"internalType": "address",
|
|
806
|
+
"name": "_asset",
|
|
807
|
+
"type": "address"
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"internalType": "uint256",
|
|
811
|
+
"name": "_amount",
|
|
812
|
+
"type": "uint256"
|
|
813
|
+
}
|
|
814
|
+
],
|
|
815
|
+
"name": "deployMixer",
|
|
816
|
+
"outputs": [
|
|
817
|
+
{
|
|
818
|
+
"internalType": "contract AintiVirusMixer",
|
|
819
|
+
"name": "mixer",
|
|
820
|
+
"type": "address"
|
|
821
|
+
}
|
|
822
|
+
],
|
|
823
|
+
"stateMutability": "nonpayable",
|
|
824
|
+
"type": "function"
|
|
825
|
+
},
|
|
826
|
+
{
|
|
827
|
+
"inputs": [
|
|
828
|
+
{
|
|
829
|
+
"internalType": "address",
|
|
830
|
+
"name": "_asset",
|
|
831
|
+
"type": "address"
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
"internalType": "uint256",
|
|
835
|
+
"name": "_amount",
|
|
836
|
+
"type": "uint256"
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
"internalType": "bytes32",
|
|
840
|
+
"name": "_commitment",
|
|
841
|
+
"type": "bytes32"
|
|
842
|
+
},
|
|
843
|
+
{
|
|
844
|
+
"internalType": "address",
|
|
845
|
+
"name": "_partner",
|
|
846
|
+
"type": "address"
|
|
847
|
+
}
|
|
848
|
+
],
|
|
849
|
+
"name": "deposit",
|
|
850
|
+
"outputs": [],
|
|
851
|
+
"stateMutability": "nonpayable",
|
|
852
|
+
"type": "function"
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
"inputs": [],
|
|
856
|
+
"name": "feeBps",
|
|
857
|
+
"outputs": [
|
|
858
|
+
{
|
|
859
|
+
"internalType": "uint256",
|
|
860
|
+
"name": "",
|
|
861
|
+
"type": "uint256"
|
|
862
|
+
}
|
|
863
|
+
],
|
|
864
|
+
"stateMutability": "view",
|
|
865
|
+
"type": "function"
|
|
866
|
+
},
|
|
867
|
+
{
|
|
868
|
+
"inputs": [],
|
|
869
|
+
"name": "feeCollector",
|
|
870
|
+
"outputs": [
|
|
871
|
+
{
|
|
872
|
+
"internalType": "address",
|
|
873
|
+
"name": "",
|
|
874
|
+
"type": "address"
|
|
875
|
+
}
|
|
876
|
+
],
|
|
877
|
+
"stateMutability": "view",
|
|
878
|
+
"type": "function"
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
"inputs": [
|
|
882
|
+
{
|
|
883
|
+
"internalType": "bytes32",
|
|
884
|
+
"name": "role",
|
|
885
|
+
"type": "bytes32"
|
|
886
|
+
}
|
|
887
|
+
],
|
|
888
|
+
"name": "getRoleAdmin",
|
|
889
|
+
"outputs": [
|
|
890
|
+
{
|
|
891
|
+
"internalType": "bytes32",
|
|
892
|
+
"name": "",
|
|
893
|
+
"type": "bytes32"
|
|
894
|
+
}
|
|
895
|
+
],
|
|
896
|
+
"stateMutability": "view",
|
|
897
|
+
"type": "function"
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
"inputs": [
|
|
901
|
+
{
|
|
902
|
+
"internalType": "address",
|
|
903
|
+
"name": "mixer",
|
|
904
|
+
"type": "address"
|
|
905
|
+
}
|
|
906
|
+
],
|
|
907
|
+
"name": "giftCardWithdrawEnabled",
|
|
908
|
+
"outputs": [
|
|
909
|
+
{
|
|
910
|
+
"internalType": "bool",
|
|
911
|
+
"name": "",
|
|
912
|
+
"type": "bool"
|
|
913
|
+
}
|
|
914
|
+
],
|
|
915
|
+
"stateMutability": "view",
|
|
916
|
+
"type": "function"
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
"inputs": [
|
|
920
|
+
{
|
|
921
|
+
"internalType": "bytes32",
|
|
922
|
+
"name": "role",
|
|
923
|
+
"type": "bytes32"
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
"internalType": "address",
|
|
927
|
+
"name": "account",
|
|
928
|
+
"type": "address"
|
|
929
|
+
}
|
|
930
|
+
],
|
|
931
|
+
"name": "grantRole",
|
|
932
|
+
"outputs": [],
|
|
933
|
+
"stateMutability": "nonpayable",
|
|
934
|
+
"type": "function"
|
|
935
|
+
},
|
|
936
|
+
{
|
|
937
|
+
"inputs": [
|
|
938
|
+
{
|
|
939
|
+
"internalType": "bytes32",
|
|
940
|
+
"name": "role",
|
|
941
|
+
"type": "bytes32"
|
|
942
|
+
},
|
|
943
|
+
{
|
|
944
|
+
"internalType": "address",
|
|
945
|
+
"name": "account",
|
|
946
|
+
"type": "address"
|
|
947
|
+
}
|
|
948
|
+
],
|
|
949
|
+
"name": "hasRole",
|
|
950
|
+
"outputs": [
|
|
951
|
+
{
|
|
952
|
+
"internalType": "bool",
|
|
953
|
+
"name": "",
|
|
954
|
+
"type": "bool"
|
|
955
|
+
}
|
|
956
|
+
],
|
|
957
|
+
"stateMutability": "view",
|
|
958
|
+
"type": "function"
|
|
959
|
+
},
|
|
960
|
+
{
|
|
961
|
+
"inputs": [],
|
|
962
|
+
"name": "hasher",
|
|
963
|
+
"outputs": [
|
|
964
|
+
{
|
|
965
|
+
"internalType": "address",
|
|
966
|
+
"name": "",
|
|
967
|
+
"type": "address"
|
|
968
|
+
}
|
|
969
|
+
],
|
|
970
|
+
"stateMutability": "view",
|
|
971
|
+
"type": "function"
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
"inputs": [
|
|
975
|
+
{
|
|
976
|
+
"internalType": "address",
|
|
977
|
+
"name": "",
|
|
978
|
+
"type": "address"
|
|
979
|
+
}
|
|
980
|
+
],
|
|
981
|
+
"name": "isPartner",
|
|
982
|
+
"outputs": [
|
|
983
|
+
{
|
|
984
|
+
"internalType": "bool",
|
|
985
|
+
"name": "",
|
|
986
|
+
"type": "bool"
|
|
987
|
+
}
|
|
988
|
+
],
|
|
989
|
+
"stateMutability": "view",
|
|
990
|
+
"type": "function"
|
|
991
|
+
},
|
|
992
|
+
{
|
|
993
|
+
"inputs": [
|
|
994
|
+
{
|
|
995
|
+
"internalType": "address",
|
|
996
|
+
"name": "asset",
|
|
997
|
+
"type": "address"
|
|
998
|
+
},
|
|
999
|
+
{
|
|
1000
|
+
"internalType": "uint256",
|
|
1001
|
+
"name": "amount",
|
|
1002
|
+
"type": "uint256"
|
|
1003
|
+
}
|
|
1004
|
+
],
|
|
1005
|
+
"name": "mixers",
|
|
1006
|
+
"outputs": [
|
|
1007
|
+
{
|
|
1008
|
+
"internalType": "contract AintiVirusMixer",
|
|
1009
|
+
"name": "",
|
|
1010
|
+
"type": "address"
|
|
1011
|
+
}
|
|
1012
|
+
],
|
|
1013
|
+
"stateMutability": "view",
|
|
1014
|
+
"type": "function"
|
|
1015
|
+
},
|
|
1016
|
+
{
|
|
1017
|
+
"inputs": [
|
|
1018
|
+
{
|
|
1019
|
+
"internalType": "address",
|
|
1020
|
+
"name": "",
|
|
1021
|
+
"type": "address"
|
|
1022
|
+
}
|
|
1023
|
+
],
|
|
1024
|
+
"name": "partnersFee",
|
|
1025
|
+
"outputs": [
|
|
1026
|
+
{
|
|
1027
|
+
"internalType": "uint256",
|
|
1028
|
+
"name": "",
|
|
1029
|
+
"type": "uint256"
|
|
1030
|
+
}
|
|
1031
|
+
],
|
|
1032
|
+
"stateMutability": "view",
|
|
1033
|
+
"type": "function"
|
|
1034
|
+
},
|
|
1035
|
+
{
|
|
1036
|
+
"inputs": [],
|
|
1037
|
+
"name": "payment",
|
|
1038
|
+
"outputs": [
|
|
1039
|
+
{
|
|
1040
|
+
"internalType": "contract IAintiVirusPayment",
|
|
1041
|
+
"name": "",
|
|
1042
|
+
"type": "address"
|
|
1043
|
+
}
|
|
1044
|
+
],
|
|
1045
|
+
"stateMutability": "view",
|
|
1046
|
+
"type": "function"
|
|
1047
|
+
},
|
|
1048
|
+
{
|
|
1049
|
+
"inputs": [
|
|
1050
|
+
{
|
|
1051
|
+
"internalType": "address",
|
|
1052
|
+
"name": "_partner",
|
|
1053
|
+
"type": "address"
|
|
1054
|
+
}
|
|
1055
|
+
],
|
|
1056
|
+
"name": "removePartner",
|
|
1057
|
+
"outputs": [],
|
|
1058
|
+
"stateMutability": "nonpayable",
|
|
1059
|
+
"type": "function"
|
|
1060
|
+
},
|
|
1061
|
+
{
|
|
1062
|
+
"inputs": [
|
|
1063
|
+
{
|
|
1064
|
+
"internalType": "bytes32",
|
|
1065
|
+
"name": "role",
|
|
1066
|
+
"type": "bytes32"
|
|
1067
|
+
},
|
|
1068
|
+
{
|
|
1069
|
+
"internalType": "address",
|
|
1070
|
+
"name": "callerConfirmation",
|
|
1071
|
+
"type": "address"
|
|
1072
|
+
}
|
|
1073
|
+
],
|
|
1074
|
+
"name": "renounceRole",
|
|
1075
|
+
"outputs": [],
|
|
1076
|
+
"stateMutability": "nonpayable",
|
|
1077
|
+
"type": "function"
|
|
1078
|
+
},
|
|
1079
|
+
{
|
|
1080
|
+
"inputs": [
|
|
1081
|
+
{
|
|
1082
|
+
"internalType": "bytes32",
|
|
1083
|
+
"name": "role",
|
|
1084
|
+
"type": "bytes32"
|
|
1085
|
+
},
|
|
1086
|
+
{
|
|
1087
|
+
"internalType": "address",
|
|
1088
|
+
"name": "account",
|
|
1089
|
+
"type": "address"
|
|
1090
|
+
}
|
|
1091
|
+
],
|
|
1092
|
+
"name": "revokeRole",
|
|
1093
|
+
"outputs": [],
|
|
1094
|
+
"stateMutability": "nonpayable",
|
|
1095
|
+
"type": "function"
|
|
1096
|
+
},
|
|
1097
|
+
{
|
|
1098
|
+
"inputs": [],
|
|
1099
|
+
"name": "rewardsShareBps",
|
|
1100
|
+
"outputs": [
|
|
1101
|
+
{
|
|
1102
|
+
"internalType": "uint256",
|
|
1103
|
+
"name": "",
|
|
1104
|
+
"type": "uint256"
|
|
1105
|
+
}
|
|
1106
|
+
],
|
|
1107
|
+
"stateMutability": "view",
|
|
1108
|
+
"type": "function"
|
|
1109
|
+
},
|
|
1110
|
+
{
|
|
1111
|
+
"inputs": [
|
|
1112
|
+
{
|
|
1113
|
+
"internalType": "address",
|
|
1114
|
+
"name": "_feeCollector",
|
|
1115
|
+
"type": "address"
|
|
1116
|
+
}
|
|
1117
|
+
],
|
|
1118
|
+
"name": "setFeeCollector",
|
|
1119
|
+
"outputs": [],
|
|
1120
|
+
"stateMutability": "nonpayable",
|
|
1121
|
+
"type": "function"
|
|
1122
|
+
},
|
|
1123
|
+
{
|
|
1124
|
+
"inputs": [
|
|
1125
|
+
{
|
|
1126
|
+
"internalType": "uint256",
|
|
1127
|
+
"name": "_feeBps",
|
|
1128
|
+
"type": "uint256"
|
|
1129
|
+
}
|
|
1130
|
+
],
|
|
1131
|
+
"name": "setFeeRate",
|
|
1132
|
+
"outputs": [],
|
|
1133
|
+
"stateMutability": "nonpayable",
|
|
1134
|
+
"type": "function"
|
|
1135
|
+
},
|
|
1136
|
+
{
|
|
1137
|
+
"inputs": [
|
|
1138
|
+
{
|
|
1139
|
+
"internalType": "address",
|
|
1140
|
+
"name": "_asset",
|
|
1141
|
+
"type": "address"
|
|
1142
|
+
},
|
|
1143
|
+
{
|
|
1144
|
+
"internalType": "uint256",
|
|
1145
|
+
"name": "_amount",
|
|
1146
|
+
"type": "uint256"
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
"internalType": "bool",
|
|
1150
|
+
"name": "_enabled",
|
|
1151
|
+
"type": "bool"
|
|
1152
|
+
}
|
|
1153
|
+
],
|
|
1154
|
+
"name": "setMixerGiftCardEnabled",
|
|
1155
|
+
"outputs": [],
|
|
1156
|
+
"stateMutability": "nonpayable",
|
|
1157
|
+
"type": "function"
|
|
1158
|
+
},
|
|
1159
|
+
{
|
|
1160
|
+
"inputs": [
|
|
1161
|
+
{
|
|
1162
|
+
"internalType": "uint256",
|
|
1163
|
+
"name": "_extraFee",
|
|
1164
|
+
"type": "uint256"
|
|
1165
|
+
}
|
|
1166
|
+
],
|
|
1167
|
+
"name": "setMyExtraFee",
|
|
1168
|
+
"outputs": [],
|
|
1169
|
+
"stateMutability": "nonpayable",
|
|
1170
|
+
"type": "function"
|
|
1171
|
+
},
|
|
1172
|
+
{
|
|
1173
|
+
"inputs": [
|
|
1174
|
+
{
|
|
1175
|
+
"internalType": "address",
|
|
1176
|
+
"name": "_partner",
|
|
1177
|
+
"type": "address"
|
|
1178
|
+
},
|
|
1179
|
+
{
|
|
1180
|
+
"internalType": "uint256",
|
|
1181
|
+
"name": "_extraFee",
|
|
1182
|
+
"type": "uint256"
|
|
1183
|
+
}
|
|
1184
|
+
],
|
|
1185
|
+
"name": "setPartnerExtraFee",
|
|
1186
|
+
"outputs": [],
|
|
1187
|
+
"stateMutability": "nonpayable",
|
|
1188
|
+
"type": "function"
|
|
1189
|
+
},
|
|
1190
|
+
{
|
|
1191
|
+
"inputs": [
|
|
1192
|
+
{
|
|
1193
|
+
"internalType": "contract IAintiVirusPayment",
|
|
1194
|
+
"name": "_payment",
|
|
1195
|
+
"type": "address"
|
|
1196
|
+
}
|
|
1197
|
+
],
|
|
1198
|
+
"name": "setPayment",
|
|
1199
|
+
"outputs": [],
|
|
1200
|
+
"stateMutability": "nonpayable",
|
|
1201
|
+
"type": "function"
|
|
1202
|
+
},
|
|
1203
|
+
{
|
|
1204
|
+
"inputs": [
|
|
1205
|
+
{
|
|
1206
|
+
"internalType": "uint256",
|
|
1207
|
+
"name": "_rewardsShareBps",
|
|
1208
|
+
"type": "uint256"
|
|
1209
|
+
}
|
|
1210
|
+
],
|
|
1211
|
+
"name": "setRewardPoolShareBps",
|
|
1212
|
+
"outputs": [],
|
|
1213
|
+
"stateMutability": "nonpayable",
|
|
1214
|
+
"type": "function"
|
|
1215
|
+
},
|
|
1216
|
+
{
|
|
1217
|
+
"inputs": [
|
|
1218
|
+
{
|
|
1219
|
+
"internalType": "address",
|
|
1220
|
+
"name": "_asset",
|
|
1221
|
+
"type": "address"
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
"internalType": "uint256",
|
|
1225
|
+
"name": "amount",
|
|
1226
|
+
"type": "uint256"
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
"internalType": "address",
|
|
1230
|
+
"name": "_staker",
|
|
1231
|
+
"type": "address"
|
|
1232
|
+
}
|
|
1233
|
+
],
|
|
1234
|
+
"name": "stake",
|
|
1235
|
+
"outputs": [],
|
|
1236
|
+
"stateMutability": "nonpayable",
|
|
1237
|
+
"type": "function"
|
|
1238
|
+
},
|
|
1239
|
+
{
|
|
1240
|
+
"inputs": [
|
|
1241
|
+
{
|
|
1242
|
+
"internalType": "address",
|
|
1243
|
+
"name": "_asset",
|
|
1244
|
+
"type": "address"
|
|
1245
|
+
},
|
|
1246
|
+
{
|
|
1247
|
+
"internalType": "uint256",
|
|
1248
|
+
"name": "amount",
|
|
1249
|
+
"type": "uint256"
|
|
1250
|
+
}
|
|
1251
|
+
],
|
|
1252
|
+
"name": "stake",
|
|
1253
|
+
"outputs": [],
|
|
1254
|
+
"stateMutability": "nonpayable",
|
|
1255
|
+
"type": "function"
|
|
1256
|
+
},
|
|
1257
|
+
{
|
|
1258
|
+
"inputs": [],
|
|
1259
|
+
"name": "staking",
|
|
1260
|
+
"outputs": [
|
|
1261
|
+
{
|
|
1262
|
+
"internalType": "contract IAintiVirusStaking",
|
|
1263
|
+
"name": "",
|
|
1264
|
+
"type": "address"
|
|
1265
|
+
}
|
|
1266
|
+
],
|
|
1267
|
+
"stateMutability": "view",
|
|
1268
|
+
"type": "function"
|
|
1269
|
+
},
|
|
1270
|
+
{
|
|
1271
|
+
"inputs": [],
|
|
1272
|
+
"name": "startNewSeason",
|
|
1273
|
+
"outputs": [],
|
|
1274
|
+
"stateMutability": "nonpayable",
|
|
1275
|
+
"type": "function"
|
|
1276
|
+
},
|
|
1277
|
+
{
|
|
1278
|
+
"inputs": [
|
|
1279
|
+
{
|
|
1280
|
+
"internalType": "bytes4",
|
|
1281
|
+
"name": "interfaceId",
|
|
1282
|
+
"type": "bytes4"
|
|
1283
|
+
}
|
|
1284
|
+
],
|
|
1285
|
+
"name": "supportsInterface",
|
|
1286
|
+
"outputs": [
|
|
1287
|
+
{
|
|
1288
|
+
"internalType": "bool",
|
|
1289
|
+
"name": "",
|
|
1290
|
+
"type": "bool"
|
|
1291
|
+
}
|
|
1292
|
+
],
|
|
1293
|
+
"stateMutability": "view",
|
|
1294
|
+
"type": "function"
|
|
1295
|
+
},
|
|
1296
|
+
{
|
|
1297
|
+
"inputs": [
|
|
1298
|
+
{
|
|
1299
|
+
"internalType": "address",
|
|
1300
|
+
"name": "_asset",
|
|
1301
|
+
"type": "address"
|
|
1302
|
+
}
|
|
1303
|
+
],
|
|
1304
|
+
"name": "unstake",
|
|
1305
|
+
"outputs": [
|
|
1306
|
+
{
|
|
1307
|
+
"internalType": "uint256",
|
|
1308
|
+
"name": "releaseAmount",
|
|
1309
|
+
"type": "uint256"
|
|
1310
|
+
}
|
|
1311
|
+
],
|
|
1312
|
+
"stateMutability": "nonpayable",
|
|
1313
|
+
"type": "function"
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"inputs": [
|
|
1317
|
+
{
|
|
1318
|
+
"internalType": "uint256",
|
|
1319
|
+
"name": "_duration",
|
|
1320
|
+
"type": "uint256"
|
|
1321
|
+
}
|
|
1322
|
+
],
|
|
1323
|
+
"name": "updateNextSeasonDuration",
|
|
1324
|
+
"outputs": [],
|
|
1325
|
+
"stateMutability": "nonpayable",
|
|
1326
|
+
"type": "function"
|
|
1327
|
+
},
|
|
1328
|
+
{
|
|
1329
|
+
"inputs": [],
|
|
1330
|
+
"name": "verifier",
|
|
1331
|
+
"outputs": [
|
|
1332
|
+
{
|
|
1333
|
+
"internalType": "address",
|
|
1334
|
+
"name": "",
|
|
1335
|
+
"type": "address"
|
|
1336
|
+
}
|
|
1337
|
+
],
|
|
1338
|
+
"stateMutability": "view",
|
|
1339
|
+
"type": "function"
|
|
1340
|
+
},
|
|
1341
|
+
{
|
|
1342
|
+
"inputs": [],
|
|
1343
|
+
"name": "weth",
|
|
1344
|
+
"outputs": [
|
|
1345
|
+
{
|
|
1346
|
+
"internalType": "contract IWETH",
|
|
1347
|
+
"name": "",
|
|
1348
|
+
"type": "address"
|
|
1349
|
+
}
|
|
1350
|
+
],
|
|
1351
|
+
"stateMutability": "view",
|
|
1352
|
+
"type": "function"
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
"inputs": [
|
|
1356
|
+
{
|
|
1357
|
+
"components": [
|
|
1358
|
+
{
|
|
1359
|
+
"internalType": "uint256[2]",
|
|
1360
|
+
"name": "pA",
|
|
1361
|
+
"type": "uint256[2]"
|
|
1362
|
+
},
|
|
1363
|
+
{
|
|
1364
|
+
"internalType": "uint256[2][2]",
|
|
1365
|
+
"name": "pB",
|
|
1366
|
+
"type": "uint256[2][2]"
|
|
1367
|
+
},
|
|
1368
|
+
{
|
|
1369
|
+
"internalType": "uint256[2]",
|
|
1370
|
+
"name": "pC",
|
|
1371
|
+
"type": "uint256[2]"
|
|
1372
|
+
},
|
|
1373
|
+
{
|
|
1374
|
+
"internalType": "uint256[5]",
|
|
1375
|
+
"name": "pubSignals",
|
|
1376
|
+
"type": "uint256[5]"
|
|
1377
|
+
}
|
|
1378
|
+
],
|
|
1379
|
+
"internalType": "struct AintiVirusMixer.WithdrawalProof",
|
|
1380
|
+
"name": "_proof",
|
|
1381
|
+
"type": "tuple"
|
|
1382
|
+
},
|
|
1383
|
+
{
|
|
1384
|
+
"internalType": "uint256",
|
|
1385
|
+
"name": "_fee",
|
|
1386
|
+
"type": "uint256"
|
|
1387
|
+
},
|
|
1388
|
+
{
|
|
1389
|
+
"internalType": "uint256",
|
|
1390
|
+
"name": "_amount",
|
|
1391
|
+
"type": "uint256"
|
|
1392
|
+
},
|
|
1393
|
+
{
|
|
1394
|
+
"internalType": "address",
|
|
1395
|
+
"name": "_asset",
|
|
1396
|
+
"type": "address"
|
|
1397
|
+
}
|
|
1398
|
+
],
|
|
1399
|
+
"name": "withdraw",
|
|
1400
|
+
"outputs": [],
|
|
1401
|
+
"stateMutability": "nonpayable",
|
|
1402
|
+
"type": "function"
|
|
1403
|
+
},
|
|
1404
|
+
{
|
|
1405
|
+
"inputs": [
|
|
1406
|
+
{
|
|
1407
|
+
"components": [
|
|
1408
|
+
{
|
|
1409
|
+
"internalType": "uint256[2]",
|
|
1410
|
+
"name": "pA",
|
|
1411
|
+
"type": "uint256[2]"
|
|
1412
|
+
},
|
|
1413
|
+
{
|
|
1414
|
+
"internalType": "uint256[2][2]",
|
|
1415
|
+
"name": "pB",
|
|
1416
|
+
"type": "uint256[2][2]"
|
|
1417
|
+
},
|
|
1418
|
+
{
|
|
1419
|
+
"internalType": "uint256[2]",
|
|
1420
|
+
"name": "pC",
|
|
1421
|
+
"type": "uint256[2]"
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
"internalType": "uint256[5]",
|
|
1425
|
+
"name": "pubSignals",
|
|
1426
|
+
"type": "uint256[5]"
|
|
1427
|
+
}
|
|
1428
|
+
],
|
|
1429
|
+
"internalType": "struct AintiVirusMixer.WithdrawalProof",
|
|
1430
|
+
"name": "_proof",
|
|
1431
|
+
"type": "tuple"
|
|
1432
|
+
},
|
|
1433
|
+
{
|
|
1434
|
+
"internalType": "bytes32",
|
|
1435
|
+
"name": "_orderId",
|
|
1436
|
+
"type": "bytes32"
|
|
1437
|
+
},
|
|
1438
|
+
{
|
|
1439
|
+
"internalType": "uint256",
|
|
1440
|
+
"name": "_amount",
|
|
1441
|
+
"type": "uint256"
|
|
1442
|
+
},
|
|
1443
|
+
{
|
|
1444
|
+
"internalType": "address",
|
|
1445
|
+
"name": "_asset",
|
|
1446
|
+
"type": "address"
|
|
1447
|
+
}
|
|
1448
|
+
],
|
|
1449
|
+
"name": "withdrawByGiftCard",
|
|
1450
|
+
"outputs": [],
|
|
1451
|
+
"stateMutability": "nonpayable",
|
|
1452
|
+
"type": "function"
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"stateMutability": "payable",
|
|
1456
|
+
"type": "receive"
|
|
1457
|
+
}
|
|
1458
|
+
],
|
|
1459
|
+
"bytecode": "0x610100604052348015610010575f5ffd5b50604051615b42380380615b4283398101604081905261002f916102c9565b6001600160a01b03821661005657604051635a5a9fa160e11b815260040160405180910390fd5b6001600160a01b03851661007d57604051635fce01bb60e01b815260040160405180910390fd5b6001600160a01b0384166100a4576040516394e2873f60e01b815260040160405180910390fd5b6127108111156100c75760405163c7cba49b60e01b815260040160405180910390fd5b6101f48311156100ea576040516301ce37c360e01b815260040160405180910390fd5b6001600160a01b0386811660805285811660a05284811660c0526002849055600380546001600160a01b0319169184169182179055600482905560408051858152602081018490527f19ae61977897da30177b7a703579852daee034742de1e6318972bf00127d7493910160405180910390a26101675f336101fc565b506101927f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336101fc565b5060405161019f906102a5565b604051809103905ff0801580156101b8573d5f5f3e3d5ffd5b506001600160a01b031660e081905260405133907f5bd0d9aec4f4106af22b54818271d756ffbf437f105dc896b0a892f970711a22905f90a350505050505061033b565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1661029c575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556102543390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161029f565b505f5b92915050565b6114e78061465b83390190565b6001600160a01b03811681146102c6575f5ffd5b50565b5f5f5f5f5f5f60c087890312156102de575f5ffd5b86516102e9816102b2565b60208801519096506102fa816102b2565b604088015190955061030b816102b2565b606088015160808901519195509350610323816102b2565b60a09790970151959894975092959194919391925050565b60805160a05160c05160e0516142926103c95f395f81816104ba015281816111ce015281816112730152818161155101528181611a7f01528181611b3601528181611c9001528181611d3b01528181611e61015261200701525f8181610813015261094f01525f81816103b9015261092e01525f81816104490152818161226801526122b501526142925ff3fe608060405260043610610262575f3560e01c806385e18f991161013f578063adc9772e116100b3578063e1e2101511610078578063e1e21015146107b0578063e2ee99ad146107c4578063ea3c281a146107e3578063ed33639f14610802578063f2888dbb14610835578063f5b541a614610854575f5ffd5b8063adc9772e14610720578063b6ceb61f1461073f578063c415b95c14610753578063cceeee5314610772578063d547741f14610791575f5ffd5b806391d148541161010457806391d148541461067257806396c45386146106915780639ab06fcb146106b0578063a217fddf146106cf578063a42dce80146106e2578063aad3ec9614610701575f5ffd5b806385e18f99146105d257806386add180146105f157806386fa733f146106065780638c0f9aac1461062557806390c0fe2314610653575f5ffd5b80633fc8cef3116101d6578063582f91a71161019b578063582f91a7146104fb5780635c6597b91461051a5780635d652b6d146105455780635e427a001461056457806371a973051461058357806375f7916a146105a4575f5ffd5b80633fc8cef31461043857806342f6487a1461046b57806345596e2e1461048a5780634cf088d9146104a957806357429e99146104dc575f5ffd5b806324a9d8531161022757806324a9d85314610374578063294091cd146103895780632b7ac3f3146103a85780632f2ff15d146103db57806336568abe146103fa5780633a44355d14610419575f5ffd5b806301ffc9a71461026d5780630f99faa1146102a1578063143e4772146102d857806322e7d11514610317578063248a9ca314610338575f5ffd5b3661026957005b5f5ffd5b348015610278575f5ffd5b5061028c6102873660046125ff565b610874565b60405190151581526020015b60405180910390f35b3480156102ac575f5ffd5b506102c06102bb36600461263a565b6108aa565b6040516001600160a01b039091168152602001610298565b3480156102e3575f5ffd5b506102c06102f236600461263a565b600560209081525f92835260408084209091529082529020546001600160a01b031681565b348015610322575f5ffd5b5061033661033136600461263a565b610a43565b005b348015610343575f5ffd5b50610366610352366004612664565b5f9081526020819052604090206001015490565b604051908152602001610298565b34801561037f575f5ffd5b5061036660025481565b348015610394575f5ffd5b506103366103a336600461267b565b610ac0565b3480156103b3575f5ffd5b506102c07f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e6575f5ffd5b506103366103f53660046126ba565b610ae0565b348015610405575f5ffd5b506103366104143660046126ba565b610b0a565b348015610424575f5ffd5b5061033661043336600461273f565b610b3d565b348015610443575f5ffd5b506102c07f000000000000000000000000000000000000000000000000000000000000000081565b348015610476575f5ffd5b506001546102c0906001600160a01b031681565b348015610495575f5ffd5b506103366104a4366004612664565b610cde565b3480156104b4575f5ffd5b506102c07f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e7575f5ffd5b506103366104f63660046127d6565b610daa565b348015610506575f5ffd5b50610336610515366004612664565b610fc2565b348015610525575f5ffd5b50610366610534366004612820565b60096020525f908152604090205481565b348015610550575f5ffd5b5061036661055f3660046126ba565b61103f565b34801561056f575f5ffd5b5061033661057e366004612664565b6110b0565b34801561058e575f5ffd5b50610597611173565b604051610298919061283b565b3480156105af575f5ffd5b5061028c6105be366004612820565b600a6020525f908152604090205460ff1681565b3480156105dd575f5ffd5b506103366105ec36600461263a565b611184565b3480156105fc575f5ffd5b5061036660045481565b348015610611575f5ffd5b50610336610620366004612886565b6113d4565b348015610630575f5ffd5b5061028c61063f366004612820565b60086020525f908152604090205460ff1681565b34801561065e575f5ffd5b5061033661066d36600461263a565b611638565b34801561067d575f5ffd5b5061028c61068c3660046126ba565b6116d3565b34801561069c575f5ffd5b506103366106ab3660046127d6565b6116fb565b3480156106bb575f5ffd5b506103366106ca366004612820565b6118fb565b3480156106da575f5ffd5b506103665f81565b3480156106ed575f5ffd5b506103366106fc366004612820565b61195c565b34801561070c575f5ffd5b5061036661071b36600461263a565b611a22565b34801561072b575f5ffd5b5061033661073a36600461263a565b611afe565b34801561074a575f5ffd5b50610336611b1d565b34801561075e575f5ffd5b506003546102c0906001600160a01b031681565b34801561077d575f5ffd5b5061033661078c3660046128c2565b611ba5565b34801561079c575f5ffd5b506103366107ab3660046126ba565b611c69565b3480156107bb575f5ffd5b50610366611c8d565b3480156107cf575f5ffd5b506103366107de366004612664565b611d0e565b3480156107ee575f5ffd5b506103366107fd366004612820565b611d9e565b34801561080d575f5ffd5b506102c07f000000000000000000000000000000000000000000000000000000000000000081565b348015610840575f5ffd5b5061036661084f366004612820565b611e0b565b34801561085f575f5ffd5b506103665f51602061423d5f395f51905f5281565b5f6001600160e01b03198216637965db0b60e01b14806108a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f5f51602061423d5f395f51905f526108c281611ee5565b6001600160a01b0384166108e957604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b038481165f908152600560209081526040808320878452909152902054161561092c57604051632843b98160e11b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000003060405161097b906125f2565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103905ff0801580156109b4573d5f5f3e3d5ffd5b506001600160a01b038581165f908152600560209081526040808320888452909152902080546001600160a01b03191691831691909117905591506109fa600685611ef2565b5082846001600160a01b0316836001600160a01b03167fe7244b458059030208cd84bc903ed7b14097c2a4c4f057e602a91ffa513738c960405160405180910390a45092915050565b5f51602061423d5f395f51905f52610a5a81611ee5565b6001600160a01b0383165f818152600860209081526040808320805460ff19166001179055600982529182902085905590518481527f2b06702faf86eea27052346f06b81fc1b0108091df3a0fe76bfb7ff20eb0d3df91015b60405180910390a2505050565b610ac8611f0d565b610ad3838383611f7c565b610adb61205a565b505050565b5f82815260208190526040902060010154610afa81611ee5565b610b048383612084565b50505050565b6001600160a01b0381163314610b335760405163334bd91960e11b815260040160405180910390fd5b610adb8282612113565b5f51602061423d5f395f51905f52610b5481611ee5565b848314610b74576040516307e11acb60e51b815260040160405180910390fd5b5f5b85811015610cd5575f60055f898985818110610b9457610b946128fd565b9050602002016020810190610ba99190612820565b6001600160a01b03166001600160a01b031681526020019081526020015f205f878785818110610bdb57610bdb6128fd565b602090810292909201358352508101919091526040015f20546001600160a01b0316905080610c1d576040516309ad273360e21b815260040160405180910390fd5b6001600160a01b0381165f908152600a60205260409020805460ff1916851515179055878783818110610c5257610c526128fd565b9050602002016020810190610c679190612820565b6001600160a01b03167f6dd8ad1577d786ec723fbf32c99ad02eb5c07779adabf735ea4479a9386724fd878785818110610ca357610ca36128fd565b9050602002013586604051610cc49291909182521515602082015260400190565b60405180910390a250600101610b76565b50505050505050565b5f51602061423d5f395f51905f52610cf581611ee5565b6101f4821115610d18576040516301ce37c360e01b815260040160405180910390fd5b60025460408051918252602082018490527f14914da2bf76024616fbe1859783fcd4dbddcb179b1f3a854949fbf920dcb957910160405180910390a160028290556003546004546040805185815260208101929092526001600160a01b03909216917fc63e06220fcddcffb2ccdd71726a451863bb9e9281f1257751e0ab0134d1da9f91015b60405180910390a25050565b610db2611f0d565b6001546001600160a01b031680610ddc57604051631ebdabc760e21b815260040160405180910390fd5b6001600160a01b038083165f9081526005602090815260408083208784529091529020541680610e1f576040516309ad273360e21b815260040160405180910390fd5b6001600160a01b0381165f908152600a602052604090205460ff16610e5757604051630e941e0f60e21b815260040160405180910390fd5b60405163a3026cad60e01b81525f906001600160a01b0383169063a3026cad90610e85908a90600401612911565b6060604051808303815f875af1158015610ea1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec59190612967565b509091505061010087013584610ee56001600160a01b038216868961217c565b6040516315399d7760e01b8152600481018990526001600160a01b0387811660248301528481166044830152606482018990528616906315399d77906084015f604051808303815f87803b158015610f3b575f5ffd5b505af1158015610f4d573d5f5f3e3d5ffd5b50610f66925050506001600160a01b038216865f61217c565b604080518881526001600160a01b03858116602083015291810184905289918816907fa233b62e07f31de17b8d95c12035e85cf281f391870d26b504e87e70594a4cb89060600160405180910390a35050505050610b0461205a565b335f9081526008602052604090205460ff16610ff15760405163060f332160e41b815260040160405180910390fd5b335f8181526009602052604090819020839055517f9800d833346ecbc44fb196fca56b30c883a24ae1f39e9053f550148cfd03e1a2906110349084815260200190565b60405180910390a250565b5f5f6127106002548561105291906129bc565b61105c91906129d3565b6001600160a01b0384165f90815260096020526040812054919250906127109061108690876129bc565b61109091906129d3565b90508061109d83876129f2565b6110a791906129f2565b95945050505050565b5f51602061423d5f395f51905f526110c781611ee5565b6127108211156110ea5760405163c7cba49b60e01b815260040160405180910390fd5b60045460408051918252602082018490527fde1362c76de8b80391e5033e8e7e5a5f13d0549eefb75f5c0626cabbd1edeea0910160405180910390a1600482905560035460025460408051918252602082018590526001600160a01b03909216917fc63e06220fcddcffb2ccdd71726a451863bb9e9281f1257751e0ab0134d1da9f9101610d9e565b606061117f6006612239565b905090565b5f51602061423d5f395f51905f5261119b81611ee5565b6111a3611f0d565b6111ae600684612245565b6111cb576040516309ad273360e21b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dc2933826040518163ffffffff1660e01b8152600401602060405180830381865afa158015611228573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124c9190612a05565b905080831061126e57604051637221b37b60e01b815260040160405180910390fd5b5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ce88451f87896040518363ffffffff1660e01b81526004016112d19291909182526001600160a01b0316602082015260400190565b60e060405180830381865afa1580156112ec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113109190612a1c565b5095509550509450505042831061133a57604051637221b37b60e01b815260040160405180910390fd5b81156113595760405163393e2bed60e01b815260040160405180910390fd5b805f0361137957604051630fec21fd60e21b815260040160405180910390fd5b611384873383612266565b85876001600160a01b03167f0e8864ea9db60cad10e688d81705b969c3c554d29f04df7ed762ed958412fc8d836040516113c091815260200190565b60405180910390a350505050610adb61205a565b6113dc611f0d565b6001600160a01b038085165f908152600560209081526040808320878452909152902054168061141f576040516309ad273360e21b815260040160405180910390fd5b5f6127106002548661143191906129bc565b61143b91906129d3565b6001600160a01b0384165f90815260096020526040812054919250906127109061146590886129bc565b61146f91906129d3565b905061149d333083611481868b6129f2565b61148b91906129f2565b6001600160a01b038b1692919061233c565b60405163b214faa560e01b8152600481018690526001600160a01b0384169063b214faa5906024015f604051808303815f87803b1580156114dc575f5ffd5b505af11580156114ee573d5f5f3e3d5ffd5b505050505f8211156115ca575f6127106004548461150c91906129bc565b61151691906129d3565b90505f6115238285612a6b565b905081156115a95760405163a9fc507b60e01b81526001600160a01b038a81166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9fc507b906044015f604051808303815f87803b158015611592575f5ffd5b505af11580156115a4573d5f5f3e3d5ffd5b505050505b80156115c7576003546115c7908a906001600160a01b031683612266565b50505b80156115db576115db878583612266565b60408051878152602081018490529081018290526001600160a01b038086169187918a16907f1f135358fa8d538fc712271750241f10add892dae5e5f6a643dce7af4b7f6d069060600160405180910390a4505050610b0461205a565b5f51602061423d5f395f51905f5261164f81611ee5565b6001600160a01b0383165f9081526008602052604090205460ff166116875760405163060f332160e41b815260040160405180910390fd5b6001600160a01b0383165f8181526009602052604090819020849055517f9800d833346ecbc44fb196fca56b30c883a24ae1f39e9053f550148cfd03e1a290610ab39085815260200190565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b611703611f0d565b6001600160a01b038082165f9081526005602090815260408083208684529091529020541680611746576040516309ad273360e21b815260040160405180910390fd5b610160850135841461176b576040516336a9d01160e01b815260040160405180910390fd5b5f5f5f836001600160a01b031663a3026cad896040518263ffffffff1660e01b815260040161179a9190612911565b6060604051808303815f875af11580156117b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117da9190612967565b9194509250905061010088013586821115611808576040516320e65ddd60e21b815260040160405180910390fd5b6001600160a01b038316158015906118295750336001600160a01b03841614155b156118475760405163b81fa77960e01b815260040160405180910390fd5b6001600160a01b03831615801561185d57505f82115b1561187b576040516336a9d01160e01b815260040160405180910390fd5b61188f868561188a858b612a6b565b612266565b81156118a0576118a0868484612266565b604080518881526001600160a01b038681166020830152918101839052908716907ff513862a32c13790fa360b836eb36883d339ff8c2620a00cc83ac01c442dc1369060600160405180910390a25050505050610b0461205a565b5f51602061423d5f395f51905f5261191281611ee5565b6001600160a01b03821661193957604051636448d6e960e11b815260040160405180910390fd5b50600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f61196681611ee5565b6001600160a01b03821661198d57604051635a5a9fa160e11b815260040160405180910390fd5b6003546040516001600160a01b038085169216907f5d16ad41baeb009cd23eb8f6c7cde5c2e0cd5acf4a33926ab488875c37c37f38905f90a3600380546001600160a01b0384166001600160a01b031990911681179091556002546004546040517fc63e06220fcddcffb2ccdd71726a451863bb9e9281f1257751e0ab0134d1da9f92610d9e92908252602082015260400190565b5f611a2b611f0d565b611a36600684612245565b611a53576040516309ad273360e21b815260040160405180910390fd5b60405163132d974d60e31b81523360048201526001600160a01b038481166024830152604482018490527f0000000000000000000000000000000000000000000000000000000000000000169063996cba68906064016020604051808303815f875af1158015611ac5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae99190612a05565b9050611af6833383612266565b6108a461205a565b611b06611f0d565b611b11828233611f7c565b611b1961205a565b5050565b5f51602061423d5f395f51905f52611b3481611ee5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b6ceb61f6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611b8c575f5ffd5b505af1158015611b9e573d5f5f3e3d5ffd5b5050505050565b5f51602061423d5f395f51905f52611bbc81611ee5565b6001600160a01b038085165f9081526005602090815260408083208784529091529020541680611bff576040516309ad273360e21b815260040160405180910390fd5b6001600160a01b038181165f908152600a6020908152604091829020805460ff1916871515908117909155825188815291820152918716917f6dd8ad1577d786ec723fbf32c99ad02eb5c07779adabf735ea4479a9386724fd910160405180910390a25050505050565b5f82815260208190526040902060010154611c8381611ee5565b610b048383612113565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dc2933826040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117f9190612a05565b5f51602061423d5f395f51905f52611d2581611ee5565b60405163e2ee99ad60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e2ee99ad906024015f604051808303815f87803b158015611d84575f5ffd5b505af1158015611d96573d5f5f3e3d5ffd5b505050505050565b5f51602061423d5f395f51905f52611db581611ee5565b6001600160a01b0382165f818152600860209081526040808320805460ff191690556009909152808220829055517fd2639eca7fc6fcdba5fa158fc8075b41bc021e97ac1e127b9da5f4fd925f08289190a25050565b5f611e14611f0d565b611e1f600683612245565b611e3c576040516309ad273360e21b815260040160405180910390fd5b604051631e43e78160e31b81523360048201526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f21f3c08906044016020604051808303815f875af1158015611ea7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ecb9190612a05565b9050611ed8823383612266565b611ee061205a565b919050565b611eef8133612375565b50565b5f611f06836001600160a01b0384166123b3565b9392505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15611f4d57604051633ee5aeb560e01b815260040160405180910390fd5b611f7a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906123f8565b565b815f03611f9c5760405163162908e360e11b815260040160405180910390fd5b611fa7600684612245565b611fc4576040516309ad273360e21b815260040160405180910390fd5b611fd96001600160a01b03841633308561233c565b60405163bf6eac2f60e01b81526001600160a01b0382811660048301528481166024830152604482018490527f0000000000000000000000000000000000000000000000000000000000000000169063bf6eac2f906064015f604051808303815f87803b158015612048575f5ffd5b505af1158015610cd5573d5f5f3e3d5ffd5b611f7a5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00611f74565b5f61208f83836116d3565b61210c575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556120c43390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016108a4565b505f6108a4565b5f61211e83836116d3565b1561210c575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016108a4565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526121cd84826123ff565b610b04576040516001600160a01b0384811660248301525f604483015261222f91869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612448565b610b048482612448565b60605f611f06836124b4565b6001600160a01b0381165f9081526001830160205260408120541515611f06565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361232857604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b1580156122fe575f5ffd5b505af1158015612310573d5f5f3e3d5ffd5b50610adb925050506001600160a01b0383168261250d565b610adb6001600160a01b0384168383612599565b6040516001600160a01b038481166024830152838116604483015260648201839052610b049186918216906323b872dd906084016121fd565b61237f82826116d3565b611b195760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044015b60405180910390fd5b5f81815260018301602052604081205461210c57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556108a4565b80825d5050565b5f5f5f5f60205f8651602088015f8a5af192503d91505f51905082801561243e57508115612430578060011461243e565b5f866001600160a01b03163b115b9695505050505050565b5f5f60205f8451602086015f885af180612467576040513d5f823e3d81fd5b50505f513d9150811561247e57806001141561248b565b6001600160a01b0384163b155b15610b0457604051635274afe760e01b81526001600160a01b03851660048201526024016123aa565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561250157602002820191905f5260205f20905b8154815260200190600101908083116124ed575b50505050509050919050565b804710156125375760405163cf47918160e01b8152476004820152602481018290526044016123aa565b5f5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f8114612581576040519150601f19603f3d011682016040523d82523d5f602084013e612586565b606091505b509150915081610b0457610b04816125ca565b6040516001600160a01b03838116602483015260448201839052610adb91859182169063a9059cbb906064016121fd565b8051156125d957805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b6117be80612a7f83390190565b5f6020828403121561260f575f5ffd5b81356001600160e01b031981168114611f06575f5ffd5b6001600160a01b0381168114611eef575f5ffd5b5f5f6040838503121561264b575f5ffd5b823561265681612626565b946020939093013593505050565b5f60208284031215612674575f5ffd5b5035919050565b5f5f5f6060848603121561268d575f5ffd5b833561269881612626565b92506020840135915060408401356126af81612626565b809150509250925092565b5f5f604083850312156126cb575f5ffd5b8235915060208301356126dd81612626565b809150509250929050565b5f5f83601f8401126126f8575f5ffd5b50813567ffffffffffffffff81111561270f575f5ffd5b6020830191508360208260051b8501011115612729575f5ffd5b9250929050565b80358015158114611ee0575f5ffd5b5f5f5f5f5f60608688031215612753575f5ffd5b853567ffffffffffffffff811115612769575f5ffd5b612775888289016126e8565b909650945050602086013567ffffffffffffffff811115612794575f5ffd5b6127a0888289016126e8565b90945092506127b3905060408701612730565b90509295509295909350565b5f6101a082840312156127d0575f5ffd5b50919050565b5f5f5f5f61020085870312156127ea575f5ffd5b6127f486866127bf565b93506101a085013592506101c085013591506101e085013561281581612626565b939692955090935050565b5f60208284031215612830575f5ffd5b8135611f0681612626565b602080825282518282018190525f918401906040840190835b8181101561287b5783516001600160a01b0316835260209384019390920191600101612854565b509095945050505050565b5f5f5f5f60808587031215612899575f5ffd5b84356128a481612626565b93506020850135925060408501359150606085013561281581612626565b5f5f5f606084860312156128d4575f5ffd5b83356128df81612626565b9250602084013591506128f460408501612730565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b6101a08101604083833760408201604084015f5b60028110156129465760408284376040928301929190910190600101612925565b505050604060c0840160c084013760a0610100840161010084013792915050565b5f5f5f60608486031215612979575f5ffd5b835161298481612626565b602085015190935061299581612626565b6040949094015192959394509192915050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108a4576108a46129a8565b5f826129ed57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108a4576108a46129a8565b5f60208284031215612a15575f5ffd5b5051919050565b5f5f5f5f5f5f5f60e0888a031215612a32575f5ffd5b5050855160208701516040880151606089015160808a015160a08b015160c0909b0151949c939b50919990985090965094509092509050565b818103818111156108a4576108a46129a856fe60e0604052600380546001600160401b031916905534801561001f575f5ffd5b506040516117be3803806117be83398101604081905261003e916105ea565b6018825f805463ffffffff191663ffffffff84161781556001600160a01b0382166080525b8263ffffffff168163ffffffff1610156100a75761008663ffffffff821661010c565b63ffffffff82165f9081526001602081905260409091209190915501610063565b506100c16100b660018461062a565b63ffffffff1661010c565b5f805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55505060016004556001600160a01b0392831660a05290911660c05250610658565b5f815f0361011b57505f919050565b8160010361014a57507f2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864919050565b8160020361017957507f1069673dcdb12263df301a6ff584a7ec261a44cb9dc68df067a4774460b1f1e1919050565b816003036101a857507f18f43331537ee2af2e3d758d50f72106467c6eea50371dd528d57eb2b856d238919050565b816004036101d757507f07f9d837cb17b0d36320ffe93ba52345f1b728571a568265caac97559dbc952a919050565b8160050361020657507f2b94cf5e8746b3f5c9631f4c5df32907a699c58c94b2ad4d7b5cec1639183f55919050565b8160060361023557507f2dee93c5a666459646ea7d22cca9e1bcfed71e6951b953611d11dda32ea09d78919050565b8160070361026457507f078295e5a22b84e982cf601eb639597b8b0515a88cb5ac7fa8a4aabe3c87349d919050565b8160080361029357507f2fa5e5f18f6027a6501bec864564472a616b2e274a41211a444cbe3a99f3cc61919050565b816009036102c257507f0e884376d0d8fd21ecb780389e941f66e45e7acce3e228ab3e2156a614fcd747919050565b81600a036102f157507f1b7201da72494f1e28717ad1a52eb469f95892f957713533de6175e5da190af2919050565b81600b0361032057507f1f8d8822725e36385200c0b201249819a6e6e1e4650808b5bebc6bface7d7636919050565b81600c0361034f57507f2c5d82f66c914bafb9701589ba8cfcfb6162b0a12acf88a8d0879a0471b5f85a919050565b81600d0361037e57507f14c54148a0940bb820957f5adf3fa1134ef5c4aaa113f4646458f270e0bfbfd0919050565b81600e036103ad57507f190d33b12f986f961e10c0ee44d8b9af11be25588cad89d416118e4bf4ebe80c919050565b81600f036103dc57507f22f98aa9ce704152ac17354914ad73ed1167ae6596af510aa5b3649325e06c92919050565b8160100361040b57507f2a7c7c9b6ce5880b9f6f228d72bf6a575a526f29c66ecceef8b753d38bba7323919050565b8160110361043a57507f2e8186e558698ec1c67af9c14d463ffc470043c9c2988b954d75dd643f36b992919050565b8160120361046957507f0f57c5571e9a4eab49e2c8cf050dae948aef6ead647392273546249d1c1ff10f919050565b8160130361049857507f1830ee67b5fb554ad5f63d4388800e1cfe78e310697d46e43c9ce36134f72cca919050565b816014036104c757507f2134e76ac5d21aab186c2be1dd8f84ee880a1e46eaf712f9d371b6df22191f3e919050565b816015036104f657507f19df90ec844ebc4ffeebd866f33859b0c051d8c958ee3aa88f8f8df3db91a5b1919050565b8160160361052557507f18cca2a66b5c0787981e69aefd84852d74af0e93ef4912b4648c05f722efe52b919050565b8160170361055457507f2388909415230d1b4d1304d2d54f473a628338f2efad83fadf05644549d2538d919050565b8160180361058357507f27171fb4a97b6cc0e9e8f543b5294de866a2af2c9c8d0b1d96e673e4529ed540919050565b60405162461bcd60e51b815260206004820152601360248201527f496e646578206f7574206f6620626f756e647300000000000000000000000000604482015260640160405180910390fd5b919050565b80516001600160a01b03811681146105cf575f5ffd5b5f5f5f606084860312156105fc575f5ffd5b610605846105d4565b9250610613602085016105d4565b9150610621604085016105d4565b90509250925092565b63ffffffff828116828216039081111561065257634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05161112061069e5f395f81816102ac015281816103d601526105c601525f8181610146015261046101525f81816102ee0152610da601526111205ff3fe608060405234801561000f575f5ffd5b5060043610610106575f3560e01c8063b214faa51161009e578063cd87a3b41161006e578063cd87a3b4146102ce578063e8295588146102d6578063ed33639f146102e9578063f178e47c14610310578063fc7e9c6f1461032f575f5ffd5b8063b214faa514610257578063ba70f7571461026c578063c2b40ae414610288578063c45a0155146102a7575f5ffd5b80636d9833e3116100d95780636d9833e3146101d9578063839df945146101ec57806390eeb02b1461020e578063a3026cad1461021e575f5ffd5b806317cc915c1461010a5780632b7ac3f314610141578063414a37ba146101805780634ecf518b146101b5575b5f5ffd5b61012c610118366004610e24565b60066020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610138565b6101a77f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181565b604051908152602001610138565b5f546101c49063ffffffff1681565b60405163ffffffff9091168152602001610138565b61012c6101e7366004610e24565b610347565b61012c6101fa366004610e24565b60056020525f908152604090205460ff1681565b6003546101c49063ffffffff1681565b61023161022c366004610e3b565b6103c0565b604080516001600160a01b03948516815293909216602084015290820152606001610138565b61026a610265366004610e24565b6105b3565b005b60035463ffffffff165f908152600260205260409020546101a7565b6101a7610296366004610e24565b60026020525f908152604090205481565b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6101c4601481565b6101a76102e4366004610e24565b6106b2565b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6101a761031e366004610e24565b60016020525f908152604090205481565b6003546101c490640100000000900463ffffffff1681565b5f81810361035657505f919050565b60035463ffffffff16805b63ffffffff81165f908152600260205260409020548403610386575060019392505050565b8063ffffffff165f03610397575060145b806103a181610e69565b9150508163ffffffff168163ffffffff160361036157505f9392505050565b5f5f5f6103cb610b6b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461041457604051630636a15760e11b815260040160405180910390fd5b6101008401355f8181526006602052604090205460ff161561044957604051636569570160e11b815260040160405180910390fd5b604080516334baeab960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916334baeab9916104a59189919082019060c0830190610100840190600401610e87565b602060405180830381865afa1580156104c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e49190610ed6565b61050157604051637e27baa160e01b815260040160405180910390fd5b61050f610140860135610347565b61052c5760405163665276df60e01b815260040160405180910390fd5b5f81815260066020908152604091829020805460ff1916600117905581516001600160a01b036101208901359081168252918101849052909550610180870135945061016087013593507f0ce490531f6c8ae2f1ff174643bc8b7ed5e52987ab50dc1e8f33655d2cd8c90b910160405180910390a1506105ac6001600455565b9193909250565b6105bb610b6b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461060457604051630636a15760e11b815260040160405180910390fd5b5f8181526005602052604090205460ff161561063257604051626a17dd60e61b815260040160405180910390fd5b5f61063c82610b95565b5f8381526005602052604090819020805460ff191660011790555190915082907fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff1969061069c908490429063ffffffff929092168252602082015260400190565b60405180910390a2506106af6001600455565b50565b5f815f036106c157505f919050565b816001036106f057507f2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864919050565b8160020361071f57507f1069673dcdb12263df301a6ff584a7ec261a44cb9dc68df067a4774460b1f1e1919050565b8160030361074e57507f18f43331537ee2af2e3d758d50f72106467c6eea50371dd528d57eb2b856d238919050565b8160040361077d57507f07f9d837cb17b0d36320ffe93ba52345f1b728571a568265caac97559dbc952a919050565b816005036107ac57507f2b94cf5e8746b3f5c9631f4c5df32907a699c58c94b2ad4d7b5cec1639183f55919050565b816006036107db57507f2dee93c5a666459646ea7d22cca9e1bcfed71e6951b953611d11dda32ea09d78919050565b8160070361080a57507f078295e5a22b84e982cf601eb639597b8b0515a88cb5ac7fa8a4aabe3c87349d919050565b8160080361083957507f2fa5e5f18f6027a6501bec864564472a616b2e274a41211a444cbe3a99f3cc61919050565b8160090361086857507f0e884376d0d8fd21ecb780389e941f66e45e7acce3e228ab3e2156a614fcd747919050565b81600a0361089757507f1b7201da72494f1e28717ad1a52eb469f95892f957713533de6175e5da190af2919050565b81600b036108c657507f1f8d8822725e36385200c0b201249819a6e6e1e4650808b5bebc6bface7d7636919050565b81600c036108f557507f2c5d82f66c914bafb9701589ba8cfcfb6162b0a12acf88a8d0879a0471b5f85a919050565b81600d0361092457507f14c54148a0940bb820957f5adf3fa1134ef5c4aaa113f4646458f270e0bfbfd0919050565b81600e0361095357507f190d33b12f986f961e10c0ee44d8b9af11be25588cad89d416118e4bf4ebe80c919050565b81600f0361098257507f22f98aa9ce704152ac17354914ad73ed1167ae6596af510aa5b3649325e06c92919050565b816010036109b157507f2a7c7c9b6ce5880b9f6f228d72bf6a575a526f29c66ecceef8b753d38bba7323919050565b816011036109e057507f2e8186e558698ec1c67af9c14d463ffc470043c9c2988b954d75dd643f36b992919050565b81601203610a0f57507f0f57c5571e9a4eab49e2c8cf050dae948aef6ead647392273546249d1c1ff10f919050565b81601303610a3e57507f1830ee67b5fb554ad5f63d4388800e1cfe78e310697d46e43c9ce36134f72cca919050565b81601403610a6d57507f2134e76ac5d21aab186c2be1dd8f84ee880a1e46eaf712f9d371b6df22191f3e919050565b81601503610a9c57507f19df90ec844ebc4ffeebd866f33859b0c051d8c958ee3aa88f8f8df3db91a5b1919050565b81601603610acb57507f18cca2a66b5c0787981e69aefd84852d74af0e93ef4912b4648c05f722efe52b919050565b81601703610afa57507f2388909415230d1b4d1304d2d54f473a628338f2efad83fadf05644549d2538d919050565b81601803610b2957507f27171fb4a97b6cc0e9e8f543b5294de866a2af2c9c8d0b1d96e673e4529ed540919050565b60405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b604482015260640160405180910390fd5b600260045403610b8e57604051633ee5aeb560e01b815260040160405180910390fd5b6002600455565b6003545f8054909163ffffffff640100000000909104811691610bba9116600261100e565b63ffffffff168163ffffffff1603610be5576040516377ae67b360e11b815260040160405180910390fd5b80835f80805b5f5463ffffffff9081169082161015610c8157610c09600286611039565b63ffffffff165f03610c4557839250610c278163ffffffff166106b2565b63ffffffff82165f9081526001602052604090208590559150610c60565b63ffffffff81165f9081526001602052604090205492508391505b610c6a8383610d0d565b9350610c77600286611060565b9450600101610beb565b506003545f90601490610c9b9063ffffffff166001611087565b610ca59190611039565b6003805463ffffffff191663ffffffff83169081179091555f9081526002602052604090208590559050610cda866001611087565b6003805463ffffffff929092166401000000000267ffffffff000000001990921691909117905550939695505050505050565b5f82827f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182101580610d5f57507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110155b15610d7d576040516313a4bbd360e01b815260040160405180910390fd5b6040805180820182528381526020810183905290516314d2f97b60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916329a5f2f691610dda91906004016110a3565b602060405180830381865afa158015610df5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1991906110d3565b925050505b92915050565b5f60208284031215610e34575f5ffd5b5035919050565b5f6101a0828403128015610e4d575f5ffd5b509092915050565b634e487b7160e01b5f52601160045260245ffd5b5f63ffffffff821680610e7e57610e7e610e55565b5f190192915050565b6101a08101604086833760408201855f5b6002811015610eb95760408284376040928301929190910190600101610e98565b50505060408460c084013760a08361010084013795945050505050565b5f60208284031215610ee6575f5ffd5b81518015158114610ef5575f5ffd5b9392505050565b6001815b6001841115610f3757808504811115610f1b57610f1b610e55565b6001841615610f2957908102905b60019390931c928002610f00565b935093915050565b5f82610f4d57506001610e1e565b81610f5957505f610e1e565b8160018114610f6f5760028114610f7957610faa565b6001915050610e1e565b60ff841115610f8a57610f8a610e55565b6001841b915063ffffffff821115610fa457610fa4610e55565b50610e1e565b5060208310610133831016604e8410600b8410161715610fe1575081810a63ffffffff811115610fdc57610fdc610e55565b610e1e565b610ff063ffffffff8484610efc565b8063ffffffff0482111561100657611006610e55565b029392505050565b5f610ef563ffffffff841663ffffffff8416610f3f565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff83168061104e5761104e611025565b8063ffffffff84160691505092915050565b5f63ffffffff83168061107557611075611025565b8063ffffffff84160491505092915050565b63ffffffff8181168382160190811115610e1e57610e1e610e55565b6040810181835f5b60028110156110ca5781518352602092830192909101906001016110ab565b50505092915050565b5f602082840312156110e3575f5ffd5b505191905056fea2646970667358221220e4b2ee3b2c8ba63d193303d42122be24d01436ff7165d69e09d4933511311d2664736f6c634300081c003397667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220ba81ef9ef2c14c702a04e4977a1a5010d90fdfa9b9db8be14241157d23cc371364736f6c634300081c003360a060405234801561000f575f5ffd5b5033608052600180805562278d005f8181558290526002602052907fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e061005482610159565b81546001600160401b0319166001600160401b039190911617815561007842610159565b81546001600160401b03919091166801000000000000000002600160401b600160801b03199091161781556100b56100b08442610196565b610159565b81546001600160401b0391909116600160801b02600160801b600160c01b03199091161781556100e483610159565b81546001600160401b0391909116600160c01b026001600160c01b039091161781557f140b0d71aeb7929ef4342c1cf14dc9b6c83b015cf00b0442ff0d4f916abdd29582426101338682610196565b6040805193845260208401929092529082015260600160405180910390a15050506101bb565b5f6001600160401b0382111561019257604080516306dfcc6560e41b815260048101919091526024810183905260440160405180910390fd5b5090565b808201808211156101b557634e487b7160e01b5f52601160045260245ffd5b92915050565b6080516112e36102045f395f81816102390152818161045601528181610724015281816108190152818161097401528181610af301528181610d1e0152610dcd01526112e35ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c8063c45a015511610088578063e2ee99ad11610063578063e2ee99ad14610326578063f21f3c0814610339578063f5d709a11461034c578063feb873b1146103b4575f5ffd5b8063c45a015514610234578063ce88451f14610273578063dc2933821461031d575f5ffd5b8063996cba68116100c3578063996cba68146101f1578063a9fc507b14610204578063b6ceb61f14610219578063bf6eac2f14610221575f5ffd5b80637a65ecef146100e9578063853ea8531461010f578063873b47d0146101ae575b5f5ffd5b6100fc6100f7366004610ffb565b6103bc565b6040519081526020015b60405180910390f35b61016d61011d366004610ffb565b600360209081525f92835260408084209091529082529020805460018201546002909201546001600160401b0380831693600160401b840490911692600160801b90046001600160801b03169185565b604080516001600160401b0396871681529590941660208601526001600160801b03909216928401929092526060830191909152608082015260a001610106565b6101e16101bc366004611032565b600460209081525f938452604080852082529284528284209052825290205460ff1681565b6040519015158152602001610106565b6100fc6101ff366004611071565b61044a565b6102176102123660046110af565b610719565b005b61021761080e565b61021761022f366004611071565b610ae8565b61025b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610106565b6102e86102813660046110d9565b5f9182526002602081815260408085206001600160a01b039490941685526001808501909252909320915482549383015492909101546001600160401b0380831695600160401b8404821695600160801b8504831695600160c01b90950490921693919290565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610106565b6100fc60015481565b6102176103343660046110fc565b610d13565b6100fc610347366004610ffb565b610dc1565b61039461035a3660046110fc565b5f908152600260205260409020546001600160401b0380821692600160401b8304821692600160801b8104831692600160c01b9091041690565b604080519485526020850193909352918301526060820152608001610106565b6100fc5f5481565b6001600160a01b038083165f908152600360209081526040808320938516835292905290812060015481546001600160401b031681036104025750600201549050610444565b5f818152600260205260409020546001830154620151809161043591600160c01b9091046001600160401b031690611127565b61043f919061113e565b925050505b92915050565b5f336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049457604051630636a15760e11b815260040160405180910390fd5b60015482106104b6576040516364a9226760e01b815260040160405180910390fd5b5f8281526002602052604090205442600160801b9091046001600160401b0316106104f45760405163141189cf60e31b815260040160405180910390fd5b6001600160a01b038085165f90815260046020908152604080832086845282528083209387168352929052205460ff161561054257604051630c8d9eab60e31b815260040160405180910390fd5b6001600160a01b038085165f908152600360209081526040808320938716808452938252808320868452600283528184209484526001850190925290912081549192916001600160401b03168510156105ae5760405163036f1b0f60e01b815260040160405180910390fd5b82600201545f036105d257604051635aa9184d60e01b815260040160405180910390fd5b6001600160a01b038088165f9081526004602090815260408083208984528252808320938a168352929052908120805460ff1916600117905583546001600160401b031686036106275750600283015461065b565b82546001850154620151809161064e91600160c01b9091046001600160401b031690611127565b610658919061113e565b90505b81600201548183600101546106709190611127565b61067a919061113e565b8454909550600160801b90046001600160801b031684601061069b8361115d565b91906101000a8154816001600160801b0302191690836001600160801b0316021790555050866001600160a01b031686896001600160a01b03167f8dab6d35466ca3cba614bc5b262979b277949786977e81107f375f7e39f7734a8860405161070691815260200190565b60405180910390a4505050509392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461076257604051630636a15760e11b815260040160405180910390fd5b805f036107825760405163162908e360e11b815260040160405180910390fd5b600180545f8181526002602090815260408083206001600160a01b03881684528501909152812092830180549293928592906107bf908490611187565b909155505060408051848152602081018490526001600160a01b038616917f0bb21cfddc3f8bd27069c32bb00be0ad26a02576b5a080444b0987140c3baa15910160405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461085757604051630636a15760e11b815260040160405180910390fd5b6001545f818152600260205260409020805442600160801b9091046001600160401b0316106108995760405163141189cf60e31b815260040160405180910390fd5b5f8054906108a8846001611187565b5f8181526002602052604090209091506108c182610fa7565b815467ffffffffffffffff19166001600160401b03919091161781556108e642610fa7565b81546001600160401b0391909116600160401b0267ffffffffffffffff60401b1990911617815561091683610fa7565b81546001600160401b0391909116600160c01b026001600160c01b0390911617815561094a6109458442611187565b610fa7565b815f0160106101000a8154816001600160401b0302191690836001600160401b031602179055505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371a973056040518163ffffffff1660e01b81526004015f60405180830381865afa1580156109cd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109f491908101906111be565b90505f5b8151811015610a7f575f828281518110610a1457610a14611286565b6020908102919091018101516001600160a01b0381165f9081526001808b01845260408083209189019094529290208254808255919350906201518090610a5c908a90611127565b610a66919061113e565b60028201555f6001918201559290920191506109f89050565b5060018390558154604080518881526001600160401b03600160401b840481166020830152600160801b909304909216908201527f140b0d71aeb7929ef4342c1cf14dc9b6c83b015cf00b0442ff0d4f916abdd2959060600160405180910390a1505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b3157604051630636a15760e11b815260040160405180910390fd5b6001545f8181526002602052604090208054600160801b90046001600160401b0316421115610b73576040516373a96aa360e01b815260040160405180910390fd5b825f03610b935760405163162908e360e11b815260040160405180910390fd5b6001600160a01b038086165f908152600360209081526040808320938816835292905220600181015415610bda57604051630ae3514d60e01b815260040160405180910390fd5b81545f90610bf9904290600160801b90046001600160401b031661129a565b90505f62015180610c0a8388611127565b610c14919061113e565b6001600160a01b0388165f908152600186016020526040812080549293509188918391610c42908490611187565b9250508190555081816002015f828254610c5c9190611187565b909155505060018401879055610c7142610fa7565b84546001600160401b0391909116600160401b0267ffffffffffffffff60401b19909116178455610ca186610fa7565b845467ffffffffffffffff19166001600160401b0391909116178455600284018290556040518781526001600160a01b038981169188918c16907ff65271afc35201e83c229b7b581d7fde59bfe7b7dd943e8719fc8c5f5ada63f69060200160405180910390a4505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d5c57604051630636a15760e11b815260040160405180910390fd5b805f5403610d7d57604051638341463360e01b815260040160405180910390fd5b5f80549082905560408051828152602081018490527f881494d10486739f088a0933ab2408e96e5bee38ed593f303a3ef16f5c061dd2910160405180910390a15050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e0b57604051630636a15760e11b815260040160405180910390fd5b506001600160a01b038083165f9081526003602090815260408083209385168352929052908120600181015491829003610e5857604051633a1018d560e21b815260040160405180910390fd5b60015481546001600160401b03165f610e71828461129a565b8454909150600160801b90046001600160801b03168114610ea557604051630e65e76760e31b815260040160405180910390fd5b5f8381526002602090815260408083206001600160a01b038a1684526001810190925282209091848603610ede57506002860154610f0c565b82546201518090610eff90600160c01b90046001600160401b03168a611127565b610f09919061113e565b90505b87825f015f828254610f1e919061129a565b9250508190555080826002015f828254610f38919061129a565b909155505086546001600160801b031687555f6001880181905560028801556040518881526001600160a01b038a811691908c16907fd8654fcc8cf5b36d30b3f5e4688fc78118e6d68de60b9994e09902268b57c3e39060200160405180910390a35050505050505092915050565b5f6001600160401b03821115610fe057604080516306dfcc6560e41b815260048101919091526024810183905260440160405180910390fd5b5090565b6001600160a01b0381168114610ff8575f5ffd5b50565b5f5f6040838503121561100c575f5ffd5b823561101781610fe4565b9150602083013561102781610fe4565b809150509250929050565b5f5f5f60608486031215611044575f5ffd5b833561104f81610fe4565b925060208401359150604084013561106681610fe4565b809150509250925092565b5f5f5f60608486031215611083575f5ffd5b833561108e81610fe4565b9250602084013561109e81610fe4565b929592945050506040919091013590565b5f5f604083850312156110c0575f5ffd5b82356110cb81610fe4565b946020939093013593505050565b5f5f604083850312156110ea575f5ffd5b82359150602083013561102781610fe4565b5f6020828403121561110c575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761044457610444611113565b5f8261115857634e487b7160e01b5f52601260045260245ffd5b500490565b5f6001600160801b0382166001600160801b03810361117e5761117e611113565b60010192915050565b8082018082111561044457610444611113565b634e487b7160e01b5f52604160045260245ffd5b80516111b981610fe4565b919050565b5f602082840312156111ce575f5ffd5b81516001600160401b038111156111e3575f5ffd5b8201601f810184136111f3575f5ffd5b80516001600160401b0381111561120c5761120c61119a565b8060051b604051601f19603f83011681018181106001600160401b03821117156112385761123861119a565b604052918252602081840181019290810187841115611255575f5ffd5b6020850194505b8385101561127b5761126d856111ae565b81526020948501940161125c565b509695505050505050565b634e487b7160e01b5f52603260045260245ffd5b818103818111156104445761044461111356fea264697066735822122061143238ae6cffe596160a19772e284f3d6d0a4d2470f0b76dee8cc7257f712b64736f6c634300081c0033",
|
|
1460
|
+
"deployedBytecode": "0x608060405260043610610262575f3560e01c806385e18f991161013f578063adc9772e116100b3578063e1e2101511610078578063e1e21015146107b0578063e2ee99ad146107c4578063ea3c281a146107e3578063ed33639f14610802578063f2888dbb14610835578063f5b541a614610854575f5ffd5b8063adc9772e14610720578063b6ceb61f1461073f578063c415b95c14610753578063cceeee5314610772578063d547741f14610791575f5ffd5b806391d148541161010457806391d148541461067257806396c45386146106915780639ab06fcb146106b0578063a217fddf146106cf578063a42dce80146106e2578063aad3ec9614610701575f5ffd5b806385e18f99146105d257806386add180146105f157806386fa733f146106065780638c0f9aac1461062557806390c0fe2314610653575f5ffd5b80633fc8cef3116101d6578063582f91a71161019b578063582f91a7146104fb5780635c6597b91461051a5780635d652b6d146105455780635e427a001461056457806371a973051461058357806375f7916a146105a4575f5ffd5b80633fc8cef31461043857806342f6487a1461046b57806345596e2e1461048a5780634cf088d9146104a957806357429e99146104dc575f5ffd5b806324a9d8531161022757806324a9d85314610374578063294091cd146103895780632b7ac3f3146103a85780632f2ff15d146103db57806336568abe146103fa5780633a44355d14610419575f5ffd5b806301ffc9a71461026d5780630f99faa1146102a1578063143e4772146102d857806322e7d11514610317578063248a9ca314610338575f5ffd5b3661026957005b5f5ffd5b348015610278575f5ffd5b5061028c6102873660046125ff565b610874565b60405190151581526020015b60405180910390f35b3480156102ac575f5ffd5b506102c06102bb36600461263a565b6108aa565b6040516001600160a01b039091168152602001610298565b3480156102e3575f5ffd5b506102c06102f236600461263a565b600560209081525f92835260408084209091529082529020546001600160a01b031681565b348015610322575f5ffd5b5061033661033136600461263a565b610a43565b005b348015610343575f5ffd5b50610366610352366004612664565b5f9081526020819052604090206001015490565b604051908152602001610298565b34801561037f575f5ffd5b5061036660025481565b348015610394575f5ffd5b506103366103a336600461267b565b610ac0565b3480156103b3575f5ffd5b506102c07f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e6575f5ffd5b506103366103f53660046126ba565b610ae0565b348015610405575f5ffd5b506103366104143660046126ba565b610b0a565b348015610424575f5ffd5b5061033661043336600461273f565b610b3d565b348015610443575f5ffd5b506102c07f000000000000000000000000000000000000000000000000000000000000000081565b348015610476575f5ffd5b506001546102c0906001600160a01b031681565b348015610495575f5ffd5b506103366104a4366004612664565b610cde565b3480156104b4575f5ffd5b506102c07f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e7575f5ffd5b506103366104f63660046127d6565b610daa565b348015610506575f5ffd5b50610336610515366004612664565b610fc2565b348015610525575f5ffd5b50610366610534366004612820565b60096020525f908152604090205481565b348015610550575f5ffd5b5061036661055f3660046126ba565b61103f565b34801561056f575f5ffd5b5061033661057e366004612664565b6110b0565b34801561058e575f5ffd5b50610597611173565b604051610298919061283b565b3480156105af575f5ffd5b5061028c6105be366004612820565b600a6020525f908152604090205460ff1681565b3480156105dd575f5ffd5b506103366105ec36600461263a565b611184565b3480156105fc575f5ffd5b5061036660045481565b348015610611575f5ffd5b50610336610620366004612886565b6113d4565b348015610630575f5ffd5b5061028c61063f366004612820565b60086020525f908152604090205460ff1681565b34801561065e575f5ffd5b5061033661066d36600461263a565b611638565b34801561067d575f5ffd5b5061028c61068c3660046126ba565b6116d3565b34801561069c575f5ffd5b506103366106ab3660046127d6565b6116fb565b3480156106bb575f5ffd5b506103366106ca366004612820565b6118fb565b3480156106da575f5ffd5b506103665f81565b3480156106ed575f5ffd5b506103366106fc366004612820565b61195c565b34801561070c575f5ffd5b5061036661071b36600461263a565b611a22565b34801561072b575f5ffd5b5061033661073a36600461263a565b611afe565b34801561074a575f5ffd5b50610336611b1d565b34801561075e575f5ffd5b506003546102c0906001600160a01b031681565b34801561077d575f5ffd5b5061033661078c3660046128c2565b611ba5565b34801561079c575f5ffd5b506103366107ab3660046126ba565b611c69565b3480156107bb575f5ffd5b50610366611c8d565b3480156107cf575f5ffd5b506103366107de366004612664565b611d0e565b3480156107ee575f5ffd5b506103366107fd366004612820565b611d9e565b34801561080d575f5ffd5b506102c07f000000000000000000000000000000000000000000000000000000000000000081565b348015610840575f5ffd5b5061036661084f366004612820565b611e0b565b34801561085f575f5ffd5b506103665f51602061423d5f395f51905f5281565b5f6001600160e01b03198216637965db0b60e01b14806108a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f5f51602061423d5f395f51905f526108c281611ee5565b6001600160a01b0384166108e957604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b038481165f908152600560209081526040808320878452909152902054161561092c57604051632843b98160e11b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000003060405161097b906125f2565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103905ff0801580156109b4573d5f5f3e3d5ffd5b506001600160a01b038581165f908152600560209081526040808320888452909152902080546001600160a01b03191691831691909117905591506109fa600685611ef2565b5082846001600160a01b0316836001600160a01b03167fe7244b458059030208cd84bc903ed7b14097c2a4c4f057e602a91ffa513738c960405160405180910390a45092915050565b5f51602061423d5f395f51905f52610a5a81611ee5565b6001600160a01b0383165f818152600860209081526040808320805460ff19166001179055600982529182902085905590518481527f2b06702faf86eea27052346f06b81fc1b0108091df3a0fe76bfb7ff20eb0d3df91015b60405180910390a2505050565b610ac8611f0d565b610ad3838383611f7c565b610adb61205a565b505050565b5f82815260208190526040902060010154610afa81611ee5565b610b048383612084565b50505050565b6001600160a01b0381163314610b335760405163334bd91960e11b815260040160405180910390fd5b610adb8282612113565b5f51602061423d5f395f51905f52610b5481611ee5565b848314610b74576040516307e11acb60e51b815260040160405180910390fd5b5f5b85811015610cd5575f60055f898985818110610b9457610b946128fd565b9050602002016020810190610ba99190612820565b6001600160a01b03166001600160a01b031681526020019081526020015f205f878785818110610bdb57610bdb6128fd565b602090810292909201358352508101919091526040015f20546001600160a01b0316905080610c1d576040516309ad273360e21b815260040160405180910390fd5b6001600160a01b0381165f908152600a60205260409020805460ff1916851515179055878783818110610c5257610c526128fd565b9050602002016020810190610c679190612820565b6001600160a01b03167f6dd8ad1577d786ec723fbf32c99ad02eb5c07779adabf735ea4479a9386724fd878785818110610ca357610ca36128fd565b9050602002013586604051610cc49291909182521515602082015260400190565b60405180910390a250600101610b76565b50505050505050565b5f51602061423d5f395f51905f52610cf581611ee5565b6101f4821115610d18576040516301ce37c360e01b815260040160405180910390fd5b60025460408051918252602082018490527f14914da2bf76024616fbe1859783fcd4dbddcb179b1f3a854949fbf920dcb957910160405180910390a160028290556003546004546040805185815260208101929092526001600160a01b03909216917fc63e06220fcddcffb2ccdd71726a451863bb9e9281f1257751e0ab0134d1da9f91015b60405180910390a25050565b610db2611f0d565b6001546001600160a01b031680610ddc57604051631ebdabc760e21b815260040160405180910390fd5b6001600160a01b038083165f9081526005602090815260408083208784529091529020541680610e1f576040516309ad273360e21b815260040160405180910390fd5b6001600160a01b0381165f908152600a602052604090205460ff16610e5757604051630e941e0f60e21b815260040160405180910390fd5b60405163a3026cad60e01b81525f906001600160a01b0383169063a3026cad90610e85908a90600401612911565b6060604051808303815f875af1158015610ea1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec59190612967565b509091505061010087013584610ee56001600160a01b038216868961217c565b6040516315399d7760e01b8152600481018990526001600160a01b0387811660248301528481166044830152606482018990528616906315399d77906084015f604051808303815f87803b158015610f3b575f5ffd5b505af1158015610f4d573d5f5f3e3d5ffd5b50610f66925050506001600160a01b038216865f61217c565b604080518881526001600160a01b03858116602083015291810184905289918816907fa233b62e07f31de17b8d95c12035e85cf281f391870d26b504e87e70594a4cb89060600160405180910390a35050505050610b0461205a565b335f9081526008602052604090205460ff16610ff15760405163060f332160e41b815260040160405180910390fd5b335f8181526009602052604090819020839055517f9800d833346ecbc44fb196fca56b30c883a24ae1f39e9053f550148cfd03e1a2906110349084815260200190565b60405180910390a250565b5f5f6127106002548561105291906129bc565b61105c91906129d3565b6001600160a01b0384165f90815260096020526040812054919250906127109061108690876129bc565b61109091906129d3565b90508061109d83876129f2565b6110a791906129f2565b95945050505050565b5f51602061423d5f395f51905f526110c781611ee5565b6127108211156110ea5760405163c7cba49b60e01b815260040160405180910390fd5b60045460408051918252602082018490527fde1362c76de8b80391e5033e8e7e5a5f13d0549eefb75f5c0626cabbd1edeea0910160405180910390a1600482905560035460025460408051918252602082018590526001600160a01b03909216917fc63e06220fcddcffb2ccdd71726a451863bb9e9281f1257751e0ab0134d1da9f9101610d9e565b606061117f6006612239565b905090565b5f51602061423d5f395f51905f5261119b81611ee5565b6111a3611f0d565b6111ae600684612245565b6111cb576040516309ad273360e21b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dc2933826040518163ffffffff1660e01b8152600401602060405180830381865afa158015611228573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124c9190612a05565b905080831061126e57604051637221b37b60e01b815260040160405180910390fd5b5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ce88451f87896040518363ffffffff1660e01b81526004016112d19291909182526001600160a01b0316602082015260400190565b60e060405180830381865afa1580156112ec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113109190612a1c565b5095509550509450505042831061133a57604051637221b37b60e01b815260040160405180910390fd5b81156113595760405163393e2bed60e01b815260040160405180910390fd5b805f0361137957604051630fec21fd60e21b815260040160405180910390fd5b611384873383612266565b85876001600160a01b03167f0e8864ea9db60cad10e688d81705b969c3c554d29f04df7ed762ed958412fc8d836040516113c091815260200190565b60405180910390a350505050610adb61205a565b6113dc611f0d565b6001600160a01b038085165f908152600560209081526040808320878452909152902054168061141f576040516309ad273360e21b815260040160405180910390fd5b5f6127106002548661143191906129bc565b61143b91906129d3565b6001600160a01b0384165f90815260096020526040812054919250906127109061146590886129bc565b61146f91906129d3565b905061149d333083611481868b6129f2565b61148b91906129f2565b6001600160a01b038b1692919061233c565b60405163b214faa560e01b8152600481018690526001600160a01b0384169063b214faa5906024015f604051808303815f87803b1580156114dc575f5ffd5b505af11580156114ee573d5f5f3e3d5ffd5b505050505f8211156115ca575f6127106004548461150c91906129bc565b61151691906129d3565b90505f6115238285612a6b565b905081156115a95760405163a9fc507b60e01b81526001600160a01b038a81166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9fc507b906044015f604051808303815f87803b158015611592575f5ffd5b505af11580156115a4573d5f5f3e3d5ffd5b505050505b80156115c7576003546115c7908a906001600160a01b031683612266565b50505b80156115db576115db878583612266565b60408051878152602081018490529081018290526001600160a01b038086169187918a16907f1f135358fa8d538fc712271750241f10add892dae5e5f6a643dce7af4b7f6d069060600160405180910390a4505050610b0461205a565b5f51602061423d5f395f51905f5261164f81611ee5565b6001600160a01b0383165f9081526008602052604090205460ff166116875760405163060f332160e41b815260040160405180910390fd5b6001600160a01b0383165f8181526009602052604090819020849055517f9800d833346ecbc44fb196fca56b30c883a24ae1f39e9053f550148cfd03e1a290610ab39085815260200190565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b611703611f0d565b6001600160a01b038082165f9081526005602090815260408083208684529091529020541680611746576040516309ad273360e21b815260040160405180910390fd5b610160850135841461176b576040516336a9d01160e01b815260040160405180910390fd5b5f5f5f836001600160a01b031663a3026cad896040518263ffffffff1660e01b815260040161179a9190612911565b6060604051808303815f875af11580156117b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117da9190612967565b9194509250905061010088013586821115611808576040516320e65ddd60e21b815260040160405180910390fd5b6001600160a01b038316158015906118295750336001600160a01b03841614155b156118475760405163b81fa77960e01b815260040160405180910390fd5b6001600160a01b03831615801561185d57505f82115b1561187b576040516336a9d01160e01b815260040160405180910390fd5b61188f868561188a858b612a6b565b612266565b81156118a0576118a0868484612266565b604080518881526001600160a01b038681166020830152918101839052908716907ff513862a32c13790fa360b836eb36883d339ff8c2620a00cc83ac01c442dc1369060600160405180910390a25050505050610b0461205a565b5f51602061423d5f395f51905f5261191281611ee5565b6001600160a01b03821661193957604051636448d6e960e11b815260040160405180910390fd5b50600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f61196681611ee5565b6001600160a01b03821661198d57604051635a5a9fa160e11b815260040160405180910390fd5b6003546040516001600160a01b038085169216907f5d16ad41baeb009cd23eb8f6c7cde5c2e0cd5acf4a33926ab488875c37c37f38905f90a3600380546001600160a01b0384166001600160a01b031990911681179091556002546004546040517fc63e06220fcddcffb2ccdd71726a451863bb9e9281f1257751e0ab0134d1da9f92610d9e92908252602082015260400190565b5f611a2b611f0d565b611a36600684612245565b611a53576040516309ad273360e21b815260040160405180910390fd5b60405163132d974d60e31b81523360048201526001600160a01b038481166024830152604482018490527f0000000000000000000000000000000000000000000000000000000000000000169063996cba68906064016020604051808303815f875af1158015611ac5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae99190612a05565b9050611af6833383612266565b6108a461205a565b611b06611f0d565b611b11828233611f7c565b611b1961205a565b5050565b5f51602061423d5f395f51905f52611b3481611ee5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b6ceb61f6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611b8c575f5ffd5b505af1158015611b9e573d5f5f3e3d5ffd5b5050505050565b5f51602061423d5f395f51905f52611bbc81611ee5565b6001600160a01b038085165f9081526005602090815260408083208784529091529020541680611bff576040516309ad273360e21b815260040160405180910390fd5b6001600160a01b038181165f908152600a6020908152604091829020805460ff1916871515908117909155825188815291820152918716917f6dd8ad1577d786ec723fbf32c99ad02eb5c07779adabf735ea4479a9386724fd910160405180910390a25050505050565b5f82815260208190526040902060010154611c8381611ee5565b610b048383612113565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dc2933826040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117f9190612a05565b5f51602061423d5f395f51905f52611d2581611ee5565b60405163e2ee99ad60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e2ee99ad906024015f604051808303815f87803b158015611d84575f5ffd5b505af1158015611d96573d5f5f3e3d5ffd5b505050505050565b5f51602061423d5f395f51905f52611db581611ee5565b6001600160a01b0382165f818152600860209081526040808320805460ff191690556009909152808220829055517fd2639eca7fc6fcdba5fa158fc8075b41bc021e97ac1e127b9da5f4fd925f08289190a25050565b5f611e14611f0d565b611e1f600683612245565b611e3c576040516309ad273360e21b815260040160405180910390fd5b604051631e43e78160e31b81523360048201526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f21f3c08906044016020604051808303815f875af1158015611ea7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ecb9190612a05565b9050611ed8823383612266565b611ee061205a565b919050565b611eef8133612375565b50565b5f611f06836001600160a01b0384166123b3565b9392505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15611f4d57604051633ee5aeb560e01b815260040160405180910390fd5b611f7a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906123f8565b565b815f03611f9c5760405163162908e360e11b815260040160405180910390fd5b611fa7600684612245565b611fc4576040516309ad273360e21b815260040160405180910390fd5b611fd96001600160a01b03841633308561233c565b60405163bf6eac2f60e01b81526001600160a01b0382811660048301528481166024830152604482018490527f0000000000000000000000000000000000000000000000000000000000000000169063bf6eac2f906064015f604051808303815f87803b158015612048575f5ffd5b505af1158015610cd5573d5f5f3e3d5ffd5b611f7a5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00611f74565b5f61208f83836116d3565b61210c575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556120c43390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016108a4565b505f6108a4565b5f61211e83836116d3565b1561210c575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016108a4565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526121cd84826123ff565b610b04576040516001600160a01b0384811660248301525f604483015261222f91869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612448565b610b048482612448565b60605f611f06836124b4565b6001600160a01b0381165f9081526001830160205260408120541515611f06565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361232857604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b1580156122fe575f5ffd5b505af1158015612310573d5f5f3e3d5ffd5b50610adb925050506001600160a01b0383168261250d565b610adb6001600160a01b0384168383612599565b6040516001600160a01b038481166024830152838116604483015260648201839052610b049186918216906323b872dd906084016121fd565b61237f82826116d3565b611b195760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044015b60405180910390fd5b5f81815260018301602052604081205461210c57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556108a4565b80825d5050565b5f5f5f5f60205f8651602088015f8a5af192503d91505f51905082801561243e57508115612430578060011461243e565b5f866001600160a01b03163b115b9695505050505050565b5f5f60205f8451602086015f885af180612467576040513d5f823e3d81fd5b50505f513d9150811561247e57806001141561248b565b6001600160a01b0384163b155b15610b0457604051635274afe760e01b81526001600160a01b03851660048201526024016123aa565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561250157602002820191905f5260205f20905b8154815260200190600101908083116124ed575b50505050509050919050565b804710156125375760405163cf47918160e01b8152476004820152602481018290526044016123aa565b5f5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f8114612581576040519150601f19603f3d011682016040523d82523d5f602084013e612586565b606091505b509150915081610b0457610b04816125ca565b6040516001600160a01b03838116602483015260448201839052610adb91859182169063a9059cbb906064016121fd565b8051156125d957805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b6117be80612a7f83390190565b5f6020828403121561260f575f5ffd5b81356001600160e01b031981168114611f06575f5ffd5b6001600160a01b0381168114611eef575f5ffd5b5f5f6040838503121561264b575f5ffd5b823561265681612626565b946020939093013593505050565b5f60208284031215612674575f5ffd5b5035919050565b5f5f5f6060848603121561268d575f5ffd5b833561269881612626565b92506020840135915060408401356126af81612626565b809150509250925092565b5f5f604083850312156126cb575f5ffd5b8235915060208301356126dd81612626565b809150509250929050565b5f5f83601f8401126126f8575f5ffd5b50813567ffffffffffffffff81111561270f575f5ffd5b6020830191508360208260051b8501011115612729575f5ffd5b9250929050565b80358015158114611ee0575f5ffd5b5f5f5f5f5f60608688031215612753575f5ffd5b853567ffffffffffffffff811115612769575f5ffd5b612775888289016126e8565b909650945050602086013567ffffffffffffffff811115612794575f5ffd5b6127a0888289016126e8565b90945092506127b3905060408701612730565b90509295509295909350565b5f6101a082840312156127d0575f5ffd5b50919050565b5f5f5f5f61020085870312156127ea575f5ffd5b6127f486866127bf565b93506101a085013592506101c085013591506101e085013561281581612626565b939692955090935050565b5f60208284031215612830575f5ffd5b8135611f0681612626565b602080825282518282018190525f918401906040840190835b8181101561287b5783516001600160a01b0316835260209384019390920191600101612854565b509095945050505050565b5f5f5f5f60808587031215612899575f5ffd5b84356128a481612626565b93506020850135925060408501359150606085013561281581612626565b5f5f5f606084860312156128d4575f5ffd5b83356128df81612626565b9250602084013591506128f460408501612730565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b6101a08101604083833760408201604084015f5b60028110156129465760408284376040928301929190910190600101612925565b505050604060c0840160c084013760a0610100840161010084013792915050565b5f5f5f60608486031215612979575f5ffd5b835161298481612626565b602085015190935061299581612626565b6040949094015192959394509192915050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108a4576108a46129a8565b5f826129ed57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108a4576108a46129a8565b5f60208284031215612a15575f5ffd5b5051919050565b5f5f5f5f5f5f5f60e0888a031215612a32575f5ffd5b5050855160208701516040880151606089015160808a015160a08b015160c0909b0151949c939b50919990985090965094509092509050565b818103818111156108a4576108a46129a856fe60e0604052600380546001600160401b031916905534801561001f575f5ffd5b506040516117be3803806117be83398101604081905261003e916105ea565b6018825f805463ffffffff191663ffffffff84161781556001600160a01b0382166080525b8263ffffffff168163ffffffff1610156100a75761008663ffffffff821661010c565b63ffffffff82165f9081526001602081905260409091209190915501610063565b506100c16100b660018461062a565b63ffffffff1661010c565b5f805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55505060016004556001600160a01b0392831660a05290911660c05250610658565b5f815f0361011b57505f919050565b8160010361014a57507f2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864919050565b8160020361017957507f1069673dcdb12263df301a6ff584a7ec261a44cb9dc68df067a4774460b1f1e1919050565b816003036101a857507f18f43331537ee2af2e3d758d50f72106467c6eea50371dd528d57eb2b856d238919050565b816004036101d757507f07f9d837cb17b0d36320ffe93ba52345f1b728571a568265caac97559dbc952a919050565b8160050361020657507f2b94cf5e8746b3f5c9631f4c5df32907a699c58c94b2ad4d7b5cec1639183f55919050565b8160060361023557507f2dee93c5a666459646ea7d22cca9e1bcfed71e6951b953611d11dda32ea09d78919050565b8160070361026457507f078295e5a22b84e982cf601eb639597b8b0515a88cb5ac7fa8a4aabe3c87349d919050565b8160080361029357507f2fa5e5f18f6027a6501bec864564472a616b2e274a41211a444cbe3a99f3cc61919050565b816009036102c257507f0e884376d0d8fd21ecb780389e941f66e45e7acce3e228ab3e2156a614fcd747919050565b81600a036102f157507f1b7201da72494f1e28717ad1a52eb469f95892f957713533de6175e5da190af2919050565b81600b0361032057507f1f8d8822725e36385200c0b201249819a6e6e1e4650808b5bebc6bface7d7636919050565b81600c0361034f57507f2c5d82f66c914bafb9701589ba8cfcfb6162b0a12acf88a8d0879a0471b5f85a919050565b81600d0361037e57507f14c54148a0940bb820957f5adf3fa1134ef5c4aaa113f4646458f270e0bfbfd0919050565b81600e036103ad57507f190d33b12f986f961e10c0ee44d8b9af11be25588cad89d416118e4bf4ebe80c919050565b81600f036103dc57507f22f98aa9ce704152ac17354914ad73ed1167ae6596af510aa5b3649325e06c92919050565b8160100361040b57507f2a7c7c9b6ce5880b9f6f228d72bf6a575a526f29c66ecceef8b753d38bba7323919050565b8160110361043a57507f2e8186e558698ec1c67af9c14d463ffc470043c9c2988b954d75dd643f36b992919050565b8160120361046957507f0f57c5571e9a4eab49e2c8cf050dae948aef6ead647392273546249d1c1ff10f919050565b8160130361049857507f1830ee67b5fb554ad5f63d4388800e1cfe78e310697d46e43c9ce36134f72cca919050565b816014036104c757507f2134e76ac5d21aab186c2be1dd8f84ee880a1e46eaf712f9d371b6df22191f3e919050565b816015036104f657507f19df90ec844ebc4ffeebd866f33859b0c051d8c958ee3aa88f8f8df3db91a5b1919050565b8160160361052557507f18cca2a66b5c0787981e69aefd84852d74af0e93ef4912b4648c05f722efe52b919050565b8160170361055457507f2388909415230d1b4d1304d2d54f473a628338f2efad83fadf05644549d2538d919050565b8160180361058357507f27171fb4a97b6cc0e9e8f543b5294de866a2af2c9c8d0b1d96e673e4529ed540919050565b60405162461bcd60e51b815260206004820152601360248201527f496e646578206f7574206f6620626f756e647300000000000000000000000000604482015260640160405180910390fd5b919050565b80516001600160a01b03811681146105cf575f5ffd5b5f5f5f606084860312156105fc575f5ffd5b610605846105d4565b9250610613602085016105d4565b9150610621604085016105d4565b90509250925092565b63ffffffff828116828216039081111561065257634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05161112061069e5f395f81816102ac015281816103d601526105c601525f8181610146015261046101525f81816102ee0152610da601526111205ff3fe608060405234801561000f575f5ffd5b5060043610610106575f3560e01c8063b214faa51161009e578063cd87a3b41161006e578063cd87a3b4146102ce578063e8295588146102d6578063ed33639f146102e9578063f178e47c14610310578063fc7e9c6f1461032f575f5ffd5b8063b214faa514610257578063ba70f7571461026c578063c2b40ae414610288578063c45a0155146102a7575f5ffd5b80636d9833e3116100d95780636d9833e3146101d9578063839df945146101ec57806390eeb02b1461020e578063a3026cad1461021e575f5ffd5b806317cc915c1461010a5780632b7ac3f314610141578063414a37ba146101805780634ecf518b146101b5575b5f5ffd5b61012c610118366004610e24565b60066020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610138565b6101a77f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181565b604051908152602001610138565b5f546101c49063ffffffff1681565b60405163ffffffff9091168152602001610138565b61012c6101e7366004610e24565b610347565b61012c6101fa366004610e24565b60056020525f908152604090205460ff1681565b6003546101c49063ffffffff1681565b61023161022c366004610e3b565b6103c0565b604080516001600160a01b03948516815293909216602084015290820152606001610138565b61026a610265366004610e24565b6105b3565b005b60035463ffffffff165f908152600260205260409020546101a7565b6101a7610296366004610e24565b60026020525f908152604090205481565b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6101c4601481565b6101a76102e4366004610e24565b6106b2565b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6101a761031e366004610e24565b60016020525f908152604090205481565b6003546101c490640100000000900463ffffffff1681565b5f81810361035657505f919050565b60035463ffffffff16805b63ffffffff81165f908152600260205260409020548403610386575060019392505050565b8063ffffffff165f03610397575060145b806103a181610e69565b9150508163ffffffff168163ffffffff160361036157505f9392505050565b5f5f5f6103cb610b6b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461041457604051630636a15760e11b815260040160405180910390fd5b6101008401355f8181526006602052604090205460ff161561044957604051636569570160e11b815260040160405180910390fd5b604080516334baeab960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916334baeab9916104a59189919082019060c0830190610100840190600401610e87565b602060405180830381865afa1580156104c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e49190610ed6565b61050157604051637e27baa160e01b815260040160405180910390fd5b61050f610140860135610347565b61052c5760405163665276df60e01b815260040160405180910390fd5b5f81815260066020908152604091829020805460ff1916600117905581516001600160a01b036101208901359081168252918101849052909550610180870135945061016087013593507f0ce490531f6c8ae2f1ff174643bc8b7ed5e52987ab50dc1e8f33655d2cd8c90b910160405180910390a1506105ac6001600455565b9193909250565b6105bb610b6b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461060457604051630636a15760e11b815260040160405180910390fd5b5f8181526005602052604090205460ff161561063257604051626a17dd60e61b815260040160405180910390fd5b5f61063c82610b95565b5f8381526005602052604090819020805460ff191660011790555190915082907fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff1969061069c908490429063ffffffff929092168252602082015260400190565b60405180910390a2506106af6001600455565b50565b5f815f036106c157505f919050565b816001036106f057507f2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864919050565b8160020361071f57507f1069673dcdb12263df301a6ff584a7ec261a44cb9dc68df067a4774460b1f1e1919050565b8160030361074e57507f18f43331537ee2af2e3d758d50f72106467c6eea50371dd528d57eb2b856d238919050565b8160040361077d57507f07f9d837cb17b0d36320ffe93ba52345f1b728571a568265caac97559dbc952a919050565b816005036107ac57507f2b94cf5e8746b3f5c9631f4c5df32907a699c58c94b2ad4d7b5cec1639183f55919050565b816006036107db57507f2dee93c5a666459646ea7d22cca9e1bcfed71e6951b953611d11dda32ea09d78919050565b8160070361080a57507f078295e5a22b84e982cf601eb639597b8b0515a88cb5ac7fa8a4aabe3c87349d919050565b8160080361083957507f2fa5e5f18f6027a6501bec864564472a616b2e274a41211a444cbe3a99f3cc61919050565b8160090361086857507f0e884376d0d8fd21ecb780389e941f66e45e7acce3e228ab3e2156a614fcd747919050565b81600a0361089757507f1b7201da72494f1e28717ad1a52eb469f95892f957713533de6175e5da190af2919050565b81600b036108c657507f1f8d8822725e36385200c0b201249819a6e6e1e4650808b5bebc6bface7d7636919050565b81600c036108f557507f2c5d82f66c914bafb9701589ba8cfcfb6162b0a12acf88a8d0879a0471b5f85a919050565b81600d0361092457507f14c54148a0940bb820957f5adf3fa1134ef5c4aaa113f4646458f270e0bfbfd0919050565b81600e0361095357507f190d33b12f986f961e10c0ee44d8b9af11be25588cad89d416118e4bf4ebe80c919050565b81600f0361098257507f22f98aa9ce704152ac17354914ad73ed1167ae6596af510aa5b3649325e06c92919050565b816010036109b157507f2a7c7c9b6ce5880b9f6f228d72bf6a575a526f29c66ecceef8b753d38bba7323919050565b816011036109e057507f2e8186e558698ec1c67af9c14d463ffc470043c9c2988b954d75dd643f36b992919050565b81601203610a0f57507f0f57c5571e9a4eab49e2c8cf050dae948aef6ead647392273546249d1c1ff10f919050565b81601303610a3e57507f1830ee67b5fb554ad5f63d4388800e1cfe78e310697d46e43c9ce36134f72cca919050565b81601403610a6d57507f2134e76ac5d21aab186c2be1dd8f84ee880a1e46eaf712f9d371b6df22191f3e919050565b81601503610a9c57507f19df90ec844ebc4ffeebd866f33859b0c051d8c958ee3aa88f8f8df3db91a5b1919050565b81601603610acb57507f18cca2a66b5c0787981e69aefd84852d74af0e93ef4912b4648c05f722efe52b919050565b81601703610afa57507f2388909415230d1b4d1304d2d54f473a628338f2efad83fadf05644549d2538d919050565b81601803610b2957507f27171fb4a97b6cc0e9e8f543b5294de866a2af2c9c8d0b1d96e673e4529ed540919050565b60405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b604482015260640160405180910390fd5b600260045403610b8e57604051633ee5aeb560e01b815260040160405180910390fd5b6002600455565b6003545f8054909163ffffffff640100000000909104811691610bba9116600261100e565b63ffffffff168163ffffffff1603610be5576040516377ae67b360e11b815260040160405180910390fd5b80835f80805b5f5463ffffffff9081169082161015610c8157610c09600286611039565b63ffffffff165f03610c4557839250610c278163ffffffff166106b2565b63ffffffff82165f9081526001602052604090208590559150610c60565b63ffffffff81165f9081526001602052604090205492508391505b610c6a8383610d0d565b9350610c77600286611060565b9450600101610beb565b506003545f90601490610c9b9063ffffffff166001611087565b610ca59190611039565b6003805463ffffffff191663ffffffff83169081179091555f9081526002602052604090208590559050610cda866001611087565b6003805463ffffffff929092166401000000000267ffffffff000000001990921691909117905550939695505050505050565b5f82827f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182101580610d5f57507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110155b15610d7d576040516313a4bbd360e01b815260040160405180910390fd5b6040805180820182528381526020810183905290516314d2f97b60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916329a5f2f691610dda91906004016110a3565b602060405180830381865afa158015610df5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1991906110d3565b925050505b92915050565b5f60208284031215610e34575f5ffd5b5035919050565b5f6101a0828403128015610e4d575f5ffd5b509092915050565b634e487b7160e01b5f52601160045260245ffd5b5f63ffffffff821680610e7e57610e7e610e55565b5f190192915050565b6101a08101604086833760408201855f5b6002811015610eb95760408284376040928301929190910190600101610e98565b50505060408460c084013760a08361010084013795945050505050565b5f60208284031215610ee6575f5ffd5b81518015158114610ef5575f5ffd5b9392505050565b6001815b6001841115610f3757808504811115610f1b57610f1b610e55565b6001841615610f2957908102905b60019390931c928002610f00565b935093915050565b5f82610f4d57506001610e1e565b81610f5957505f610e1e565b8160018114610f6f5760028114610f7957610faa565b6001915050610e1e565b60ff841115610f8a57610f8a610e55565b6001841b915063ffffffff821115610fa457610fa4610e55565b50610e1e565b5060208310610133831016604e8410600b8410161715610fe1575081810a63ffffffff811115610fdc57610fdc610e55565b610e1e565b610ff063ffffffff8484610efc565b8063ffffffff0482111561100657611006610e55565b029392505050565b5f610ef563ffffffff841663ffffffff8416610f3f565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff83168061104e5761104e611025565b8063ffffffff84160691505092915050565b5f63ffffffff83168061107557611075611025565b8063ffffffff84160491505092915050565b63ffffffff8181168382160190811115610e1e57610e1e610e55565b6040810181835f5b60028110156110ca5781518352602092830192909101906001016110ab565b50505092915050565b5f602082840312156110e3575f5ffd5b505191905056fea2646970667358221220e4b2ee3b2c8ba63d193303d42122be24d01436ff7165d69e09d4933511311d2664736f6c634300081c003397667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220ba81ef9ef2c14c702a04e4977a1a5010d90fdfa9b9db8be14241157d23cc371364736f6c634300081c0033",
|
|
1461
|
+
"linkReferences": {},
|
|
1462
|
+
"deployedLinkReferences": {}
|
|
1463
|
+
}
|