@keep-network/tbtc-v2 0.1.1-dev.1 → 0.1.1-dev.13
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/artifacts/TBTC.json +18 -18
- package/artifacts/TBTCToken.json +18 -18
- package/artifacts/VendingMachine.json +19 -19
- package/artifacts/solcInputs/ae2bc16e265d94d570ec143fe628377f.json +134 -0
- package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
- package/build/contracts/GovernanceUtils.sol/GovernanceUtils.json +2 -2
- package/build/contracts/bank/Bank.sol/Bank.dbg.json +4 -0
- package/build/contracts/bank/Bank.sol/Bank.json +537 -0
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +4 -0
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +10 -0
- package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +4 -0
- package/build/contracts/bridge/Bridge.sol/Bridge.json +473 -0
- package/build/contracts/bridge/Bridge.sol/IRelay.dbg.json +4 -0
- package/build/contracts/bridge/Bridge.sol/IRelay.json +37 -0
- package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
- package/build/contracts/bridge/VendingMachine.sol/VendingMachine.json +2 -2
- package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
- package/build/contracts/token/TBTC.sol/TBTC.json +2 -2
- package/build/contracts/vault/IVault.sol/IVault.dbg.json +4 -0
- package/build/contracts/vault/IVault.sol/IVault.json +47 -0
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +4 -0
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +181 -0
- package/contracts/bank/Bank.sol +389 -0
- package/contracts/bridge/BitcoinTx.sol +125 -0
- package/contracts/bridge/Bridge.sol +803 -0
- package/contracts/vault/IVault.sol +60 -0
- package/contracts/vault/TBTCVault.sol +146 -0
- package/package.json +4 -3
- package/artifacts/solcInputs/0c46d22cee2363c42c8bb0664dc1be66.json +0 -104
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "Bridge",
|
|
4
|
+
"sourceName": "contracts/bridge/Bridge.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [
|
|
8
|
+
{
|
|
9
|
+
"internalType": "address",
|
|
10
|
+
"name": "_bank",
|
|
11
|
+
"type": "address"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"internalType": "address",
|
|
15
|
+
"name": "_relay",
|
|
16
|
+
"type": "address"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"internalType": "uint256",
|
|
20
|
+
"name": "_txProofDifficultyFactor",
|
|
21
|
+
"type": "uint256"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"stateMutability": "nonpayable",
|
|
25
|
+
"type": "constructor"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"anonymous": false,
|
|
29
|
+
"inputs": [
|
|
30
|
+
{
|
|
31
|
+
"indexed": false,
|
|
32
|
+
"internalType": "bytes32",
|
|
33
|
+
"name": "fundingTxHash",
|
|
34
|
+
"type": "bytes32"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"indexed": false,
|
|
38
|
+
"internalType": "uint32",
|
|
39
|
+
"name": "fundingOutputIndex",
|
|
40
|
+
"type": "uint32"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"indexed": false,
|
|
44
|
+
"internalType": "address",
|
|
45
|
+
"name": "depositor",
|
|
46
|
+
"type": "address"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"indexed": false,
|
|
50
|
+
"internalType": "uint64",
|
|
51
|
+
"name": "amount",
|
|
52
|
+
"type": "uint64"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"indexed": false,
|
|
56
|
+
"internalType": "bytes8",
|
|
57
|
+
"name": "blindingFactor",
|
|
58
|
+
"type": "bytes8"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"indexed": false,
|
|
62
|
+
"internalType": "bytes20",
|
|
63
|
+
"name": "walletPubKeyHash",
|
|
64
|
+
"type": "bytes20"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"indexed": false,
|
|
68
|
+
"internalType": "bytes20",
|
|
69
|
+
"name": "refundPubKeyHash",
|
|
70
|
+
"type": "bytes20"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"indexed": false,
|
|
74
|
+
"internalType": "bytes4",
|
|
75
|
+
"name": "refundLocktime",
|
|
76
|
+
"type": "bytes4"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"indexed": false,
|
|
80
|
+
"internalType": "address",
|
|
81
|
+
"name": "vault",
|
|
82
|
+
"type": "address"
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"name": "DepositRevealed",
|
|
86
|
+
"type": "event"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"anonymous": false,
|
|
90
|
+
"inputs": [
|
|
91
|
+
{
|
|
92
|
+
"indexed": false,
|
|
93
|
+
"internalType": "bytes20",
|
|
94
|
+
"name": "walletPubKeyHash",
|
|
95
|
+
"type": "bytes20"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"indexed": false,
|
|
99
|
+
"internalType": "bytes32",
|
|
100
|
+
"name": "sweepTxHash",
|
|
101
|
+
"type": "bytes32"
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"name": "DepositsSwept",
|
|
105
|
+
"type": "event"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"anonymous": false,
|
|
109
|
+
"inputs": [
|
|
110
|
+
{
|
|
111
|
+
"indexed": true,
|
|
112
|
+
"internalType": "address",
|
|
113
|
+
"name": "previousOwner",
|
|
114
|
+
"type": "address"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"indexed": true,
|
|
118
|
+
"internalType": "address",
|
|
119
|
+
"name": "newOwner",
|
|
120
|
+
"type": "address"
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"name": "OwnershipTransferred",
|
|
124
|
+
"type": "event"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"anonymous": false,
|
|
128
|
+
"inputs": [
|
|
129
|
+
{
|
|
130
|
+
"indexed": true,
|
|
131
|
+
"internalType": "address",
|
|
132
|
+
"name": "vault",
|
|
133
|
+
"type": "address"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"indexed": false,
|
|
137
|
+
"internalType": "bool",
|
|
138
|
+
"name": "isTrusted",
|
|
139
|
+
"type": "bool"
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"name": "VaultStatusUpdated",
|
|
143
|
+
"type": "event"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"inputs": [],
|
|
147
|
+
"name": "bank",
|
|
148
|
+
"outputs": [
|
|
149
|
+
{
|
|
150
|
+
"internalType": "contract Bank",
|
|
151
|
+
"name": "",
|
|
152
|
+
"type": "address"
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"stateMutability": "view",
|
|
156
|
+
"type": "function"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"inputs": [
|
|
160
|
+
{
|
|
161
|
+
"internalType": "uint256",
|
|
162
|
+
"name": "",
|
|
163
|
+
"type": "uint256"
|
|
164
|
+
}
|
|
165
|
+
],
|
|
166
|
+
"name": "deposits",
|
|
167
|
+
"outputs": [
|
|
168
|
+
{
|
|
169
|
+
"internalType": "address",
|
|
170
|
+
"name": "depositor",
|
|
171
|
+
"type": "address"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"internalType": "uint64",
|
|
175
|
+
"name": "amount",
|
|
176
|
+
"type": "uint64"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"internalType": "uint32",
|
|
180
|
+
"name": "revealedAt",
|
|
181
|
+
"type": "uint32"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"internalType": "address",
|
|
185
|
+
"name": "vault",
|
|
186
|
+
"type": "address"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"internalType": "uint32",
|
|
190
|
+
"name": "sweptAt",
|
|
191
|
+
"type": "uint32"
|
|
192
|
+
}
|
|
193
|
+
],
|
|
194
|
+
"stateMutability": "view",
|
|
195
|
+
"type": "function"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"inputs": [
|
|
199
|
+
{
|
|
200
|
+
"internalType": "address",
|
|
201
|
+
"name": "",
|
|
202
|
+
"type": "address"
|
|
203
|
+
}
|
|
204
|
+
],
|
|
205
|
+
"name": "isVaultTrusted",
|
|
206
|
+
"outputs": [
|
|
207
|
+
{
|
|
208
|
+
"internalType": "bool",
|
|
209
|
+
"name": "",
|
|
210
|
+
"type": "bool"
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"stateMutability": "view",
|
|
214
|
+
"type": "function"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"inputs": [
|
|
218
|
+
{
|
|
219
|
+
"internalType": "bytes20",
|
|
220
|
+
"name": "",
|
|
221
|
+
"type": "bytes20"
|
|
222
|
+
}
|
|
223
|
+
],
|
|
224
|
+
"name": "mainUtxos",
|
|
225
|
+
"outputs": [
|
|
226
|
+
{
|
|
227
|
+
"internalType": "bytes32",
|
|
228
|
+
"name": "",
|
|
229
|
+
"type": "bytes32"
|
|
230
|
+
}
|
|
231
|
+
],
|
|
232
|
+
"stateMutability": "view",
|
|
233
|
+
"type": "function"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"inputs": [],
|
|
237
|
+
"name": "owner",
|
|
238
|
+
"outputs": [
|
|
239
|
+
{
|
|
240
|
+
"internalType": "address",
|
|
241
|
+
"name": "",
|
|
242
|
+
"type": "address"
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
"stateMutability": "view",
|
|
246
|
+
"type": "function"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"inputs": [],
|
|
250
|
+
"name": "relay",
|
|
251
|
+
"outputs": [
|
|
252
|
+
{
|
|
253
|
+
"internalType": "contract IRelay",
|
|
254
|
+
"name": "",
|
|
255
|
+
"type": "address"
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
"stateMutability": "view",
|
|
259
|
+
"type": "function"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"inputs": [],
|
|
263
|
+
"name": "renounceOwnership",
|
|
264
|
+
"outputs": [],
|
|
265
|
+
"stateMutability": "nonpayable",
|
|
266
|
+
"type": "function"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"inputs": [
|
|
270
|
+
{
|
|
271
|
+
"components": [
|
|
272
|
+
{
|
|
273
|
+
"internalType": "bytes4",
|
|
274
|
+
"name": "version",
|
|
275
|
+
"type": "bytes4"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"internalType": "bytes",
|
|
279
|
+
"name": "inputVector",
|
|
280
|
+
"type": "bytes"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"internalType": "bytes",
|
|
284
|
+
"name": "outputVector",
|
|
285
|
+
"type": "bytes"
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"internalType": "bytes4",
|
|
289
|
+
"name": "locktime",
|
|
290
|
+
"type": "bytes4"
|
|
291
|
+
}
|
|
292
|
+
],
|
|
293
|
+
"internalType": "struct BitcoinTx.Info",
|
|
294
|
+
"name": "fundingTx",
|
|
295
|
+
"type": "tuple"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"components": [
|
|
299
|
+
{
|
|
300
|
+
"internalType": "uint32",
|
|
301
|
+
"name": "fundingOutputIndex",
|
|
302
|
+
"type": "uint32"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"internalType": "address",
|
|
306
|
+
"name": "depositor",
|
|
307
|
+
"type": "address"
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"internalType": "bytes8",
|
|
311
|
+
"name": "blindingFactor",
|
|
312
|
+
"type": "bytes8"
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"internalType": "bytes20",
|
|
316
|
+
"name": "walletPubKeyHash",
|
|
317
|
+
"type": "bytes20"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"internalType": "bytes20",
|
|
321
|
+
"name": "refundPubKeyHash",
|
|
322
|
+
"type": "bytes20"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"internalType": "bytes4",
|
|
326
|
+
"name": "refundLocktime",
|
|
327
|
+
"type": "bytes4"
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"internalType": "address",
|
|
331
|
+
"name": "vault",
|
|
332
|
+
"type": "address"
|
|
333
|
+
}
|
|
334
|
+
],
|
|
335
|
+
"internalType": "struct Bridge.RevealInfo",
|
|
336
|
+
"name": "reveal",
|
|
337
|
+
"type": "tuple"
|
|
338
|
+
}
|
|
339
|
+
],
|
|
340
|
+
"name": "revealDeposit",
|
|
341
|
+
"outputs": [],
|
|
342
|
+
"stateMutability": "nonpayable",
|
|
343
|
+
"type": "function"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"inputs": [
|
|
347
|
+
{
|
|
348
|
+
"internalType": "address",
|
|
349
|
+
"name": "vault",
|
|
350
|
+
"type": "address"
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
"internalType": "bool",
|
|
354
|
+
"name": "isTrusted",
|
|
355
|
+
"type": "bool"
|
|
356
|
+
}
|
|
357
|
+
],
|
|
358
|
+
"name": "setVaultStatus",
|
|
359
|
+
"outputs": [],
|
|
360
|
+
"stateMutability": "nonpayable",
|
|
361
|
+
"type": "function"
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"inputs": [
|
|
365
|
+
{
|
|
366
|
+
"components": [
|
|
367
|
+
{
|
|
368
|
+
"internalType": "bytes4",
|
|
369
|
+
"name": "version",
|
|
370
|
+
"type": "bytes4"
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"internalType": "bytes",
|
|
374
|
+
"name": "inputVector",
|
|
375
|
+
"type": "bytes"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"internalType": "bytes",
|
|
379
|
+
"name": "outputVector",
|
|
380
|
+
"type": "bytes"
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"internalType": "bytes4",
|
|
384
|
+
"name": "locktime",
|
|
385
|
+
"type": "bytes4"
|
|
386
|
+
}
|
|
387
|
+
],
|
|
388
|
+
"internalType": "struct BitcoinTx.Info",
|
|
389
|
+
"name": "sweepTx",
|
|
390
|
+
"type": "tuple"
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"components": [
|
|
394
|
+
{
|
|
395
|
+
"internalType": "bytes",
|
|
396
|
+
"name": "merkleProof",
|
|
397
|
+
"type": "bytes"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"internalType": "uint256",
|
|
401
|
+
"name": "txIndexInBlock",
|
|
402
|
+
"type": "uint256"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"internalType": "bytes",
|
|
406
|
+
"name": "bitcoinHeaders",
|
|
407
|
+
"type": "bytes"
|
|
408
|
+
}
|
|
409
|
+
],
|
|
410
|
+
"internalType": "struct BitcoinTx.Proof",
|
|
411
|
+
"name": "sweepProof",
|
|
412
|
+
"type": "tuple"
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"components": [
|
|
416
|
+
{
|
|
417
|
+
"internalType": "bytes32",
|
|
418
|
+
"name": "txHash",
|
|
419
|
+
"type": "bytes32"
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"internalType": "uint32",
|
|
423
|
+
"name": "txOutputIndex",
|
|
424
|
+
"type": "uint32"
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"internalType": "uint64",
|
|
428
|
+
"name": "txOutputValue",
|
|
429
|
+
"type": "uint64"
|
|
430
|
+
}
|
|
431
|
+
],
|
|
432
|
+
"internalType": "struct BitcoinTx.UTXO",
|
|
433
|
+
"name": "mainUtxo",
|
|
434
|
+
"type": "tuple"
|
|
435
|
+
}
|
|
436
|
+
],
|
|
437
|
+
"name": "submitSweepProof",
|
|
438
|
+
"outputs": [],
|
|
439
|
+
"stateMutability": "nonpayable",
|
|
440
|
+
"type": "function"
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"inputs": [
|
|
444
|
+
{
|
|
445
|
+
"internalType": "address",
|
|
446
|
+
"name": "newOwner",
|
|
447
|
+
"type": "address"
|
|
448
|
+
}
|
|
449
|
+
],
|
|
450
|
+
"name": "transferOwnership",
|
|
451
|
+
"outputs": [],
|
|
452
|
+
"stateMutability": "nonpayable",
|
|
453
|
+
"type": "function"
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"inputs": [],
|
|
457
|
+
"name": "txProofDifficultyFactor",
|
|
458
|
+
"outputs": [
|
|
459
|
+
{
|
|
460
|
+
"internalType": "uint256",
|
|
461
|
+
"name": "",
|
|
462
|
+
"type": "uint256"
|
|
463
|
+
}
|
|
464
|
+
],
|
|
465
|
+
"stateMutability": "view",
|
|
466
|
+
"type": "function"
|
|
467
|
+
}
|
|
468
|
+
],
|
|
469
|
+
"bytecode": "0x60e06040523480156200001157600080fd5b50604051620037863803806200378683398101604081905262000034916200018f565b6200003f3362000122565b6001600160a01b0383166200009b5760405162461bcd60e51b815260206004820152601b60248201527f42616e6b20616464726573732063616e6e6f74206265207a65726f000000000060448201526064015b60405180910390fd5b6001600160601b0319606084901b1660a0526001600160a01b038216620001055760405162461bcd60e51b815260206004820152601c60248201527f52656c617920616464726573732063616e6e6f74206265207a65726f00000000604482015260640162000092565b60609190911b6001600160601b03191660c05260805250620001cf565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200018a57600080fd5b919050565b600080600060608486031215620001a4578283fd5b620001af8462000172565b9250620001bf6020850162000172565b9150604084015190509250925092565b60805160a05160601c60c05160601c613566620002206000396000818161026f0152818161217d015261221201526000818161015b01526105ed01526000818160de015261247401526135666000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806383a4342811610081578063b59589d11161005b578063b59589d11461026a578063e53c0b5514610291578063f2fde38b146102c457600080fd5b806383a43428146101955780638da5cb5b146101b5578063b02c43d0146101c657600080fd5b806360d712fc116100b257806360d712fc1461013b578063715018a61461014e57806376cdb03b1461015657600080fd5b80632bb818c2146100d957806359a9d90a146101135780635c0b481214610128575b600080fd5b6101007f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b610126610121366004612dfd565b6102d7565b005b610126610136366004612e66565b610665565b610126610149366004612d2e565b610c95565b610126610d4e565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010a565b6101006101a3366004612d68565b60036020526000908152604090205481565b6000546001600160a01b031661017d565b6102256101d4366004612f2e565b600260205260009081526040902080546001909101546001600160a01b0380831692600160a01b80820467ffffffffffffffff1693600160e01b90920463ffffffff90811693831692919091041685565b604080516001600160a01b03968716815267ffffffffffffffff909516602086015263ffffffff9384169085015293166060830152909116608082015260a00161010a565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b6102b461029f366004612d14565b60016020526000908152604090205460ff1681565b604051901515815260200161010a565b6101266102d2366004612d14565b610db4565b60006102e38484610e96565b90506000806103326102f860408801886132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061101092505050565b60408051606081018252600080825260208083018290528284018290526bffffffffffffffffffffffff19861682526003905291909120549294509092509080156104515780863561038a6040890160208a01612f46565b61039a60608a0160408b01612f60565b6040516020016103d79392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b604051602081830303815290604052805190602001201461043f5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b61044e36879003870187612ebe565b91505b600080806104a161046560208d018d6132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611143915050565b9194509250905060006104be67ffffffffffffffff88168561349b565b905060008251826104cf919061337d565b905060005b835181101561052757818482815181106104fe57634e487b7160e01b600052603260045260246000fd5b60200260200101818151610512919061349b565b9052508061051f816134d5565b9150506104d4565b5060408051602081018c90526000918101919091526001600160c01b031960c08a901b166044820152604c0160408051808303601f1901815282825280516020918201206bffffffffffffffffffffffff198d1660008181526003845284902091909155835282018c90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a16040517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063266a123a906106249087908790600401613278565b600060405180830381600087803b15801561063e57600080fd5b505af1158015610652573d6000803e3d6000fd5b5050505050505050505050505050505050565b600061067760e0830160c08401612d14565b6001600160a01b031614806106b957506001600061069b60e0840160c08501612d14565b6001600160a01b0316815260208101919091526040016000205460ff165b6107055760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f7420747275737465640000000000000000000000006044820152606401610436565b60006107176040830160208401612d14565b6107276060840160408501612dd5565b6107376080850160608601612d68565b61074760a0860160808701612d68565b61075760c0870160a08801612dad565b60405160200161076b959493929190612ff4565b60408051601f19818403018152919052905060006107df61078f6020850185612f46565b63ffffffff166107a260408701876132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061164c9050565b905060006107ec82611832565b905080516014141561087c5761080183611b39565b6bffffffffffffffffffffffff191661081b826000611b60565b6bffffffffffffffffffffffff1916146108775760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d62797465207363726970742068617368000000000000006044820152606401610436565b610974565b80516020141561092c576002836040516108969190612fbb565b602060405180830381855afa1580156108b3573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906108d69190612d95565b6108df82611b76565b146108775760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d62797465207363726970742068617368000000000000006044820152606401610436565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e67746800000000000000006044820152606401610436565b60006109d96109866020880188612dad565b61099360208901896132fb565b6109a060408b018b6132fb565b6109b060808d0160608e01612dad565b6040516020016109c596959493929190612f7a565b604051602081830303815290604052611b92565b90506000600281836109ee60208a018a612f46565b604051602001610a1592919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610a995760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c656400000000000000006044820152606401610436565b6000610aa485611bb9565b82547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b67ffffffffffffffff8316021783559050610aee6040880160208901612d14565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff1602178255610b3d60e0880160c08901612d14565b60018301805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef0583610b9b60208a018a612f46565b610bab60408b0160208c01612d14565b84610bbc60608d0160408e01612dd5565b610bcc60808e0160608f01612d68565b8d6080016020810190610bdf9190612d68565b8e60a0016020810190610bf29190612dad565b8f60c0016020810190610c059190612d14565b60408051998a5263ffffffff90981660208a01526001600160a01b039687169789019790975267ffffffffffffffff90941660608801526001600160c01b031990921660808701526bffffffffffffffffffffffff1990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b03163314610cef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b6001600160a01b038216600081815260016020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000546001600160a01b03163314610da85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b610db26000611c30565b565b6000546001600160a01b03163314610e0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b6001600160a01b038116610e8a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610436565b610e9381611c30565b50565b6000610ee2610ea860208501856132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8d92505050565b610f2e5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f76696465640000006044820152606401610436565b610f78610f3e60408501856132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d3d92505050565b610fc45760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f766964656400006044820152606401610436565b610ffe610fd46020850185612dad565b610fe160208601866132fb565b610fee60408801886132fb565b6109b060808a0160608b01612dad565b905061100a8183611de0565b92915050565b600080600061101e84611f39565b915050806001146110975760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f75747075740000000000000000000000000000000000000000006064820152608401610436565b60006110a3858261164c565b90506110ae81611bb9565b925060006110bb82611832565b905080516014146111345760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f76652032302062797465730000000000000000000000000000000000000000006064820152608401610436565b60208101519450505050915091565b80516000906060908190151583808061115b89611f39565b9092509050600061116d836001613340565b905084156111855761118060018361349b565b611187565b815b67ffffffffffffffff8111156111ad57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111d6578160200160208202803683370190505b509650865167ffffffffffffffff81111561120157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561122a578160200160208202803683370190505b5095506000805b8381101561154f578b5183106112465761154f565b60008060006112558f87611f50565b925092509250600060026000858560405160200161128a92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff16156114a7576001810154600160a01b900463ffffffff16156113255760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c726561647920737765707400000000000000000000006044820152606401610436565b8c5186141561139c5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610436565b6001810180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b4263ffffffff160217905580548d516001600160a01b03909116908e908890811061140457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03929092166020928302919091019091015280548c51600160a01b90910467ffffffffffffffff16908d908890811061145457634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508b868151811061148057634e487b7160e01b600052603260045260246000fd5b60200260200101518e6114939190613340565b9d508561149f816134d5565b96505061152c565b8915158b1515141580156114bb57508e5184145b156114e45760408f01516114d99067ffffffffffffffff168f613340565b9d506001995061152c565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e707574207479706500000000000000000000000000006044820152606401610436565b6115368288613340565b9650505050508080611547906134d5565b915050611231565b50600081116115c65760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f736974000000000000000000000000006064820152608401610436565b8415158615151461163f5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610436565b5050505050509250925092565b606060008061165a85611f39565b90925090506000198214156116d75760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e670000000000000000000000000000000000000000000000000000000000006064820152608401610436565b8084106117265760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610436565b600080611734846001613340565b905060005b868110156117bd5761174b8883611fa8565b925060001983141561179f5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610436565b6117a98383613340565b9150806117b5816134d5565b915050611739565b506117c88782611fa8565b915060001982141561181c5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610436565b611827878284612017565b979650505050505050565b606060008260088151811061185757634e487b7160e01b600052603260045260246000fd5b0160200151835160f89190911c9150611871826009613358565b60ff161461188f575050604080516020810190915260008152919050565b826009815181106118b057634e487b7160e01b600052603260045260246000fd5b016020015160f81c6119645760028160ff1610156118de575050604080516020810190915260008152919050565b600083600a8151811061190157634e487b7160e01b600052603260045260246000fd5b016020015160f81c90506119166002836134b2565b60ff1681141580611934575080602014158015611934575080601414155b1561195057505060408051602081019091526000815292915050565b61195c84600b83612017565b949350505050565b6000611971846008611b60565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611a775783600b815181106119de57634e487b7160e01b600052603260045260246000fd5b60209101015160f81c6014141580611a4e5750611a0960028551611a02919061349b565b8590611b60565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15611a6a57505060408051602081019091526000815292915050565b61195c84600c6014612017565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611b22578360018551611ad0919061349b565b81518110611aee57634e487b7160e01b600052603260045260246000fd5b60209101015160f81c608714611b1557505060408051602081019091526000815292915050565b61195c84600b6014612017565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000611b6f8383016020015190565b9392505050565b6000815160001415611b8a57506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080611bc5836120e1565b60c01c9050600061195c8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000611c9b84611f39565b9092509050801580611cae575060001982145b15611cbd575060009392505050565b6000611cca836001613340565b905060005b82811015611d305785518210611ceb5750600095945050505050565b6000611cf787846120ed565b9050600019811415611d10575060009695505050505050565b611d1a8184613340565b9250508080611d28906134d5565b915050611ccf565b5093519093149392505050565b6000806000611d4b84611f39565b9092509050801580611d5e575060001982145b15611d6d575060009392505050565b6000611d7a836001613340565b905060005b82811015611d305785518210611d9b5750600095945050505050565b6000611da78784611fa8565b9050600019811415611dc0575060009695505050505050565b611dca8184613340565b9250508080611dd8906134d5565b915050611d7f565b611e79611e2d611df360408401846132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061213892505050565b611e3783806132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879493925050506020850135612145565b611eeb5760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e642074782068617368000000006064820152608401610436565b611f35611efb60408301836132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061217892505050565b5050565b600080611f47836000612516565b91509150915091565b60008080611f5e8585611b60565b9250611f93611f6d86866126a2565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9150611f9f85856120ed565b90509250925092565b6000611fb5826009613340565b83511015611fc6575060001961100a565b600080611fdd85611fd8866008613340565b612516565b9092509050600019821415611ff8576000199250505061100a565b80612004836009613340565b61200e9190613340565b95945050505050565b6060816120335750604080516020810190915260008152611b6f565b600061203f8385613340565b90508381118015612051575080855110155b61209d5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610436565b604051915082604083010160405282825283850182038460208701018481015b808210156120d6578151838301526020820191506120bd565b505050509392505050565b600061100a8282611b60565b60008060006120fc85856126b9565b9092509050600019821415612117576000199250505061100a565b80612123836025613340565b61212d9190613340565b61200e906004613340565b604481015160009061100a565b60008385148015612154575081155b801561215f57508251155b1561216c5750600161195c565b61200e858486856126fb565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d457600080fd5b505afa1580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190612d95565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561226957600080fd5b505afa15801561227d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a19190612d95565b905060006122b66122b1866127a3565b612846565b9050828114156122c857829350612346565b818114156122d857819350612346565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c74790000000000000000000000000000000000000000000000000000006064820152608401610436565b60006123518661286e565b90506000198114156123cb5760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e00000000000000000000000000000000000000000000000000000000006064820152608401610436565b60011981141561241d5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e00000000000000000000006044820152606401610436565b60021981141561246f5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e2061206865616465720000006044820152606401610436565b6124997f00000000000000000000000000000000000000000000000000000000000000008661347c565b81101561250e5760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e000000000000000000000000006064820152608401610436565b505050505050565b60008060006125258585612a75565b905060ff811661256557600085858151811061255157634e487b7160e01b600052603260045260246000fd5b016020015190935060f81c915061269b9050565b83612571826001613358565b60ff1661257e9190613340565b85511015612595576000196000925092505061269b565b60008160ff16600214156125da576125cf6125bb6125b4876001613340565b8890611b60565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612691565b8160ff1660041415612604576125f7611f6d6125b4876001613340565b63ffffffff169050612691565b8160ff1660081415612691576126846126216125b4876001613340565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000611b6f6126b2836020613340565b8490611b60565b6000806126c7836025613340565b845110156126dc57506000199050600061269b565b6000806126ee86611fd8876024613340565b9097909650945050505050565b60006020845161270b91906134f0565b156127185750600061195c565b83516127265750600061195c565b818560005b86518110156127965761273f6002846134f0565b600114156127645761275d6127578883016020015190565b83612b2b565b915061277d565b61277a826127758984016020015190565b612b2b565b91505b60019290921c9161278f602082613340565b905061272b565b5090931495945050505050565b6000806127b1836048611b60565b60e81c9050600083604b815181106127d957634e487b7160e01b600052603260045260246000fd5b016020015160f81c9050600061280d83600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff16905060006128216003846134b2565b60ff169050612832816101006133d4565b61283c908361347c565b9695505050505050565b600061100a7bffff000000000000000000000000000000000000000000000000000083612b37565b60006050825161287e91906134f0565b1561288c5750600019919050565b506040805160808101909152605081526000908190815b8451811015612a6d576128b7858383612b43565b80156128d7576128c78284612be2565b6128d75750600119949350505050565b60006128e2836127a3565b90506128ed83611b92565b935080612a318560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b1115612a44575060021995945050505050565b612a57612a5082612846565b8690612c0b565b9450612a669050605082613340565b90506128a3565b505050919050565b6000828281518110612a9757634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60ff1415612ab05750600861100a565b828281518110612ad057634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60fe1415612ae95750600461100a565b828281518110612b0957634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60fd1415612b225750600261100a565b50600092915050565b6000611b6f8383612c69565b6000611b6f828461337d565b81516000612b518284613340565b90508281118015612b63575080855110155b612baf5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610436565b826020860101602085018382015b80831015612bd8578251825260209283019290910190612bbd565b5050505050505050565b600080612bee84612c97565b9050828114612c0157600091505061100a565b5060019392505050565b6000612c178284613340565b90508281101561100a5760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e000000000000006044820152606401610436565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b602481015160009061100a565b80356001600160a01b0381168114612cbb57600080fd5b919050565b600060808284031215612cd1578081fd5b50919050565b600060608284031215612cd1578081fd5b803563ffffffff81168114612cbb57600080fd5b803567ffffffffffffffff81168114612cbb57600080fd5b600060208284031215612d25578081fd5b611b6f82612ca4565b60008060408385031215612d40578081fd5b612d4983612ca4565b915060208301358015158114612d5d578182fd5b809150509250929050565b600060208284031215612d79578081fd5b81356bffffffffffffffffffffffff1981168114611b6f578182fd5b600060208284031215612da6578081fd5b5051919050565b600060208284031215612dbe578081fd5b81356001600160e01b031981168114611b6f578182fd5b600060208284031215612de6578081fd5b81356001600160c01b031981168114611b6f578182fd5b600080600060a08486031215612e11578081fd5b833567ffffffffffffffff80821115612e28578283fd5b612e3487838801612cc0565b94506020860135915080821115612e49578283fd5b50612e5686828701612cd7565b925050611f9f8560408601612cd7565b600080828403610100811215612e7a578283fd5b833567ffffffffffffffff811115612e90578384fd5b612e9c86828701612cc0565b93505060e0601f1982011215612eb0578182fd5b506020830190509250929050565b600060608284031215612ecf578081fd5b6040516060810181811067ffffffffffffffff82111715612efe57634e487b7160e01b83526041600452602483fd5b60405282358152612f1160208401612ce8565b6020820152612f2260408401612cfc565b60408201529392505050565b600060208284031215612f3f578081fd5b5035919050565b600060208284031215612f57578081fd5b611b6f82612ce8565b600060208284031215612f71578081fd5b611b6f82612cfc565b60006001600160e01b031980891683528688600485013786830160048101838152868882375093169390920160048101939093525050600801949350505050565b60008251815b81811015612fdb5760208186018101518583015201612fc1565b81811115612fe95782828501525b509190910192915050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006130cd6130c0613097602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526131916130c061309761306e613168601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061326c6132436006830161313f565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156132ba5781516001600160a01b031684529284019290840190600101613295565b50505083810382850152845180825285830191830190845b818110156132ee578351835292840192918401916001016132d2565b5090979650505050505050565b6000808335601e19843603018112613311578283fd5b83018035915067ffffffffffffffff82111561332b578283fd5b60200191503681900382131561269b57600080fd5b6000821982111561335357613353613504565b500190565b600060ff821660ff84168060ff0382111561337557613375613504565b019392505050565b60008261338c5761338c61351a565b500490565b600181815b808511156133cc5781600019048211156133b2576133b2613504565b808516156133bf57918102915b93841c9390800290613396565b509250929050565b6000611b6f83836000826133ea5750600161100a565b816133f75750600061100a565b816001811461340d576002811461341757613433565b600191505061100a565b60ff84111561342857613428613504565b50506001821b61100a565b5060208310610133831016604e8410600b8410161715613456575081810a61100a565b6134608383613391565b806000190482111561347457613474613504565b029392505050565b600081600019048311821515161561349657613496613504565b500290565b6000828210156134ad576134ad613504565b500390565b600060ff821660ff8416808210156134cc576134cc613504565b90039392505050565b60006000198214156134e9576134e9613504565b5060010190565b6000826134ff576134ff61351a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea2646970667358221220968673368bf3bb6d0d2fdb26d9f0a93fb62e71d055de028f220607039c5cbcdd64736f6c63430008040033",
|
|
470
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c806383a4342811610081578063b59589d11161005b578063b59589d11461026a578063e53c0b5514610291578063f2fde38b146102c457600080fd5b806383a43428146101955780638da5cb5b146101b5578063b02c43d0146101c657600080fd5b806360d712fc116100b257806360d712fc1461013b578063715018a61461014e57806376cdb03b1461015657600080fd5b80632bb818c2146100d957806359a9d90a146101135780635c0b481214610128575b600080fd5b6101007f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b610126610121366004612dfd565b6102d7565b005b610126610136366004612e66565b610665565b610126610149366004612d2e565b610c95565b610126610d4e565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010a565b6101006101a3366004612d68565b60036020526000908152604090205481565b6000546001600160a01b031661017d565b6102256101d4366004612f2e565b600260205260009081526040902080546001909101546001600160a01b0380831692600160a01b80820467ffffffffffffffff1693600160e01b90920463ffffffff90811693831692919091041685565b604080516001600160a01b03968716815267ffffffffffffffff909516602086015263ffffffff9384169085015293166060830152909116608082015260a00161010a565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b6102b461029f366004612d14565b60016020526000908152604090205460ff1681565b604051901515815260200161010a565b6101266102d2366004612d14565b610db4565b60006102e38484610e96565b90506000806103326102f860408801886132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061101092505050565b60408051606081018252600080825260208083018290528284018290526bffffffffffffffffffffffff19861682526003905291909120549294509092509080156104515780863561038a6040890160208a01612f46565b61039a60608a0160408b01612f60565b6040516020016103d79392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b604051602081830303815290604052805190602001201461043f5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b61044e36879003870187612ebe565b91505b600080806104a161046560208d018d6132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611143915050565b9194509250905060006104be67ffffffffffffffff88168561349b565b905060008251826104cf919061337d565b905060005b835181101561052757818482815181106104fe57634e487b7160e01b600052603260045260246000fd5b60200260200101818151610512919061349b565b9052508061051f816134d5565b9150506104d4565b5060408051602081018c90526000918101919091526001600160c01b031960c08a901b166044820152604c0160408051808303601f1901815282825280516020918201206bffffffffffffffffffffffff198d1660008181526003845284902091909155835282018c90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a16040517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063266a123a906106249087908790600401613278565b600060405180830381600087803b15801561063e57600080fd5b505af1158015610652573d6000803e3d6000fd5b5050505050505050505050505050505050565b600061067760e0830160c08401612d14565b6001600160a01b031614806106b957506001600061069b60e0840160c08501612d14565b6001600160a01b0316815260208101919091526040016000205460ff165b6107055760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f7420747275737465640000000000000000000000006044820152606401610436565b60006107176040830160208401612d14565b6107276060840160408501612dd5565b6107376080850160608601612d68565b61074760a0860160808701612d68565b61075760c0870160a08801612dad565b60405160200161076b959493929190612ff4565b60408051601f19818403018152919052905060006107df61078f6020850185612f46565b63ffffffff166107a260408701876132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061164c9050565b905060006107ec82611832565b905080516014141561087c5761080183611b39565b6bffffffffffffffffffffffff191661081b826000611b60565b6bffffffffffffffffffffffff1916146108775760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d62797465207363726970742068617368000000000000006044820152606401610436565b610974565b80516020141561092c576002836040516108969190612fbb565b602060405180830381855afa1580156108b3573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906108d69190612d95565b6108df82611b76565b146108775760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d62797465207363726970742068617368000000000000006044820152606401610436565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e67746800000000000000006044820152606401610436565b60006109d96109866020880188612dad565b61099360208901896132fb565b6109a060408b018b6132fb565b6109b060808d0160608e01612dad565b6040516020016109c596959493929190612f7a565b604051602081830303815290604052611b92565b90506000600281836109ee60208a018a612f46565b604051602001610a1592919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610a995760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c656400000000000000006044820152606401610436565b6000610aa485611bb9565b82547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b67ffffffffffffffff8316021783559050610aee6040880160208901612d14565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff1602178255610b3d60e0880160c08901612d14565b60018301805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef0583610b9b60208a018a612f46565b610bab60408b0160208c01612d14565b84610bbc60608d0160408e01612dd5565b610bcc60808e0160608f01612d68565b8d6080016020810190610bdf9190612d68565b8e60a0016020810190610bf29190612dad565b8f60c0016020810190610c059190612d14565b60408051998a5263ffffffff90981660208a01526001600160a01b039687169789019790975267ffffffffffffffff90941660608801526001600160c01b031990921660808701526bffffffffffffffffffffffff1990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b03163314610cef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b6001600160a01b038216600081815260016020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000546001600160a01b03163314610da85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b610db26000611c30565b565b6000546001600160a01b03163314610e0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b6001600160a01b038116610e8a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610436565b610e9381611c30565b50565b6000610ee2610ea860208501856132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8d92505050565b610f2e5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f76696465640000006044820152606401610436565b610f78610f3e60408501856132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d3d92505050565b610fc45760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f766964656400006044820152606401610436565b610ffe610fd46020850185612dad565b610fe160208601866132fb565b610fee60408801886132fb565b6109b060808a0160608b01612dad565b905061100a8183611de0565b92915050565b600080600061101e84611f39565b915050806001146110975760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f75747075740000000000000000000000000000000000000000006064820152608401610436565b60006110a3858261164c565b90506110ae81611bb9565b925060006110bb82611832565b905080516014146111345760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f76652032302062797465730000000000000000000000000000000000000000006064820152608401610436565b60208101519450505050915091565b80516000906060908190151583808061115b89611f39565b9092509050600061116d836001613340565b905084156111855761118060018361349b565b611187565b815b67ffffffffffffffff8111156111ad57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111d6578160200160208202803683370190505b509650865167ffffffffffffffff81111561120157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561122a578160200160208202803683370190505b5095506000805b8381101561154f578b5183106112465761154f565b60008060006112558f87611f50565b925092509250600060026000858560405160200161128a92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff16156114a7576001810154600160a01b900463ffffffff16156113255760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c726561647920737765707400000000000000000000006044820152606401610436565b8c5186141561139c5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610436565b6001810180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b4263ffffffff160217905580548d516001600160a01b03909116908e908890811061140457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03929092166020928302919091019091015280548c51600160a01b90910467ffffffffffffffff16908d908890811061145457634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508b868151811061148057634e487b7160e01b600052603260045260246000fd5b60200260200101518e6114939190613340565b9d508561149f816134d5565b96505061152c565b8915158b1515141580156114bb57508e5184145b156114e45760408f01516114d99067ffffffffffffffff168f613340565b9d506001995061152c565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e707574207479706500000000000000000000000000006044820152606401610436565b6115368288613340565b9650505050508080611547906134d5565b915050611231565b50600081116115c65760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f736974000000000000000000000000006064820152608401610436565b8415158615151461163f5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610436565b5050505050509250925092565b606060008061165a85611f39565b90925090506000198214156116d75760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e670000000000000000000000000000000000000000000000000000000000006064820152608401610436565b8084106117265760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610436565b600080611734846001613340565b905060005b868110156117bd5761174b8883611fa8565b925060001983141561179f5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610436565b6117a98383613340565b9150806117b5816134d5565b915050611739565b506117c88782611fa8565b915060001982141561181c5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610436565b611827878284612017565b979650505050505050565b606060008260088151811061185757634e487b7160e01b600052603260045260246000fd5b0160200151835160f89190911c9150611871826009613358565b60ff161461188f575050604080516020810190915260008152919050565b826009815181106118b057634e487b7160e01b600052603260045260246000fd5b016020015160f81c6119645760028160ff1610156118de575050604080516020810190915260008152919050565b600083600a8151811061190157634e487b7160e01b600052603260045260246000fd5b016020015160f81c90506119166002836134b2565b60ff1681141580611934575080602014158015611934575080601414155b1561195057505060408051602081019091526000815292915050565b61195c84600b83612017565b949350505050565b6000611971846008611b60565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611a775783600b815181106119de57634e487b7160e01b600052603260045260246000fd5b60209101015160f81c6014141580611a4e5750611a0960028551611a02919061349b565b8590611b60565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15611a6a57505060408051602081019091526000815292915050565b61195c84600c6014612017565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611b22578360018551611ad0919061349b565b81518110611aee57634e487b7160e01b600052603260045260246000fd5b60209101015160f81c608714611b1557505060408051602081019091526000815292915050565b61195c84600b6014612017565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000611b6f8383016020015190565b9392505050565b6000815160001415611b8a57506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080611bc5836120e1565b60c01c9050600061195c8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000611c9b84611f39565b9092509050801580611cae575060001982145b15611cbd575060009392505050565b6000611cca836001613340565b905060005b82811015611d305785518210611ceb5750600095945050505050565b6000611cf787846120ed565b9050600019811415611d10575060009695505050505050565b611d1a8184613340565b9250508080611d28906134d5565b915050611ccf565b5093519093149392505050565b6000806000611d4b84611f39565b9092509050801580611d5e575060001982145b15611d6d575060009392505050565b6000611d7a836001613340565b905060005b82811015611d305785518210611d9b5750600095945050505050565b6000611da78784611fa8565b9050600019811415611dc0575060009695505050505050565b611dca8184613340565b9250508080611dd8906134d5565b915050611d7f565b611e79611e2d611df360408401846132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061213892505050565b611e3783806132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879493925050506020850135612145565b611eeb5760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e642074782068617368000000006064820152608401610436565b611f35611efb60408301836132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061217892505050565b5050565b600080611f47836000612516565b91509150915091565b60008080611f5e8585611b60565b9250611f93611f6d86866126a2565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9150611f9f85856120ed565b90509250925092565b6000611fb5826009613340565b83511015611fc6575060001961100a565b600080611fdd85611fd8866008613340565b612516565b9092509050600019821415611ff8576000199250505061100a565b80612004836009613340565b61200e9190613340565b95945050505050565b6060816120335750604080516020810190915260008152611b6f565b600061203f8385613340565b90508381118015612051575080855110155b61209d5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610436565b604051915082604083010160405282825283850182038460208701018481015b808210156120d6578151838301526020820191506120bd565b505050509392505050565b600061100a8282611b60565b60008060006120fc85856126b9565b9092509050600019821415612117576000199250505061100a565b80612123836025613340565b61212d9190613340565b61200e906004613340565b604481015160009061100a565b60008385148015612154575081155b801561215f57508251155b1561216c5750600161195c565b61200e858486856126fb565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d457600080fd5b505afa1580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190612d95565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561226957600080fd5b505afa15801561227d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a19190612d95565b905060006122b66122b1866127a3565b612846565b9050828114156122c857829350612346565b818114156122d857819350612346565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c74790000000000000000000000000000000000000000000000000000006064820152608401610436565b60006123518661286e565b90506000198114156123cb5760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e00000000000000000000000000000000000000000000000000000000006064820152608401610436565b60011981141561241d5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e00000000000000000000006044820152606401610436565b60021981141561246f5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e2061206865616465720000006044820152606401610436565b6124997f00000000000000000000000000000000000000000000000000000000000000008661347c565b81101561250e5760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e000000000000000000000000006064820152608401610436565b505050505050565b60008060006125258585612a75565b905060ff811661256557600085858151811061255157634e487b7160e01b600052603260045260246000fd5b016020015190935060f81c915061269b9050565b83612571826001613358565b60ff1661257e9190613340565b85511015612595576000196000925092505061269b565b60008160ff16600214156125da576125cf6125bb6125b4876001613340565b8890611b60565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612691565b8160ff1660041415612604576125f7611f6d6125b4876001613340565b63ffffffff169050612691565b8160ff1660081415612691576126846126216125b4876001613340565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000611b6f6126b2836020613340565b8490611b60565b6000806126c7836025613340565b845110156126dc57506000199050600061269b565b6000806126ee86611fd8876024613340565b9097909650945050505050565b60006020845161270b91906134f0565b156127185750600061195c565b83516127265750600061195c565b818560005b86518110156127965761273f6002846134f0565b600114156127645761275d6127578883016020015190565b83612b2b565b915061277d565b61277a826127758984016020015190565b612b2b565b91505b60019290921c9161278f602082613340565b905061272b565b5090931495945050505050565b6000806127b1836048611b60565b60e81c9050600083604b815181106127d957634e487b7160e01b600052603260045260246000fd5b016020015160f81c9050600061280d83600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff16905060006128216003846134b2565b60ff169050612832816101006133d4565b61283c908361347c565b9695505050505050565b600061100a7bffff000000000000000000000000000000000000000000000000000083612b37565b60006050825161287e91906134f0565b1561288c5750600019919050565b506040805160808101909152605081526000908190815b8451811015612a6d576128b7858383612b43565b80156128d7576128c78284612be2565b6128d75750600119949350505050565b60006128e2836127a3565b90506128ed83611b92565b935080612a318560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b1115612a44575060021995945050505050565b612a57612a5082612846565b8690612c0b565b9450612a669050605082613340565b90506128a3565b505050919050565b6000828281518110612a9757634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60ff1415612ab05750600861100a565b828281518110612ad057634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60fe1415612ae95750600461100a565b828281518110612b0957634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60fd1415612b225750600261100a565b50600092915050565b6000611b6f8383612c69565b6000611b6f828461337d565b81516000612b518284613340565b90508281118015612b63575080855110155b612baf5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610436565b826020860101602085018382015b80831015612bd8578251825260209283019290910190612bbd565b5050505050505050565b600080612bee84612c97565b9050828114612c0157600091505061100a565b5060019392505050565b6000612c178284613340565b90508281101561100a5760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e000000000000006044820152606401610436565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b602481015160009061100a565b80356001600160a01b0381168114612cbb57600080fd5b919050565b600060808284031215612cd1578081fd5b50919050565b600060608284031215612cd1578081fd5b803563ffffffff81168114612cbb57600080fd5b803567ffffffffffffffff81168114612cbb57600080fd5b600060208284031215612d25578081fd5b611b6f82612ca4565b60008060408385031215612d40578081fd5b612d4983612ca4565b915060208301358015158114612d5d578182fd5b809150509250929050565b600060208284031215612d79578081fd5b81356bffffffffffffffffffffffff1981168114611b6f578182fd5b600060208284031215612da6578081fd5b5051919050565b600060208284031215612dbe578081fd5b81356001600160e01b031981168114611b6f578182fd5b600060208284031215612de6578081fd5b81356001600160c01b031981168114611b6f578182fd5b600080600060a08486031215612e11578081fd5b833567ffffffffffffffff80821115612e28578283fd5b612e3487838801612cc0565b94506020860135915080821115612e49578283fd5b50612e5686828701612cd7565b925050611f9f8560408601612cd7565b600080828403610100811215612e7a578283fd5b833567ffffffffffffffff811115612e90578384fd5b612e9c86828701612cc0565b93505060e0601f1982011215612eb0578182fd5b506020830190509250929050565b600060608284031215612ecf578081fd5b6040516060810181811067ffffffffffffffff82111715612efe57634e487b7160e01b83526041600452602483fd5b60405282358152612f1160208401612ce8565b6020820152612f2260408401612cfc565b60408201529392505050565b600060208284031215612f3f578081fd5b5035919050565b600060208284031215612f57578081fd5b611b6f82612ce8565b600060208284031215612f71578081fd5b611b6f82612cfc565b60006001600160e01b031980891683528688600485013786830160048101838152868882375093169390920160048101939093525050600801949350505050565b60008251815b81811015612fdb5760208186018101518583015201612fc1565b81811115612fe95782828501525b509190910192915050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006130cd6130c0613097602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526131916130c061309761306e613168601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061326c6132436006830161313f565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156132ba5781516001600160a01b031684529284019290840190600101613295565b50505083810382850152845180825285830191830190845b818110156132ee578351835292840192918401916001016132d2565b5090979650505050505050565b6000808335601e19843603018112613311578283fd5b83018035915067ffffffffffffffff82111561332b578283fd5b60200191503681900382131561269b57600080fd5b6000821982111561335357613353613504565b500190565b600060ff821660ff84168060ff0382111561337557613375613504565b019392505050565b60008261338c5761338c61351a565b500490565b600181815b808511156133cc5781600019048211156133b2576133b2613504565b808516156133bf57918102915b93841c9390800290613396565b509250929050565b6000611b6f83836000826133ea5750600161100a565b816133f75750600061100a565b816001811461340d576002811461341757613433565b600191505061100a565b60ff84111561342857613428613504565b50506001821b61100a565b5060208310610133831016604e8410600b8410161715613456575081810a61100a565b6134608383613391565b806000190482111561347457613474613504565b029392505050565b600081600019048311821515161561349657613496613504565b500290565b6000828210156134ad576134ad613504565b500390565b600060ff821660ff8416808210156134cc576134cc613504565b90039392505050565b60006000198214156134e9576134e9613504565b5060010190565b6000826134ff576134ff61351a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea2646970667358221220968673368bf3bb6d0d2fdb26d9f0a93fb62e71d055de028f220607039c5cbcdd64736f6c63430008040033",
|
|
471
|
+
"linkReferences": {},
|
|
472
|
+
"deployedLinkReferences": {}
|
|
473
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "IRelay",
|
|
4
|
+
"sourceName": "contracts/bridge/Bridge.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [],
|
|
8
|
+
"name": "getCurrentEpochDifficulty",
|
|
9
|
+
"outputs": [
|
|
10
|
+
{
|
|
11
|
+
"internalType": "uint256",
|
|
12
|
+
"name": "",
|
|
13
|
+
"type": "uint256"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"stateMutability": "view",
|
|
17
|
+
"type": "function"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"inputs": [],
|
|
21
|
+
"name": "getPrevEpochDifficulty",
|
|
22
|
+
"outputs": [
|
|
23
|
+
{
|
|
24
|
+
"internalType": "uint256",
|
|
25
|
+
"name": "",
|
|
26
|
+
"type": "uint256"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"stateMutability": "view",
|
|
30
|
+
"type": "function"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"bytecode": "0x",
|
|
34
|
+
"deployedBytecode": "0x",
|
|
35
|
+
"linkReferences": {},
|
|
36
|
+
"deployedLinkReferences": {}
|
|
37
|
+
}
|