@allorc/a423-sdk 0.2.0 → 0.4.0

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.
@@ -0,0 +1,661 @@
1
+ {
2
+ "compiler": "0.8.30+commit.73712a01.Emscripten.clang",
3
+ "abi": [
4
+ {
5
+ "inputs": [
6
+ {
7
+ "internalType": "address",
8
+ "name": "token_",
9
+ "type": "address"
10
+ }
11
+ ],
12
+ "stateMutability": "nonpayable",
13
+ "type": "constructor"
14
+ },
15
+ {
16
+ "inputs": [],
17
+ "name": "Deadline",
18
+ "type": "error"
19
+ },
20
+ {
21
+ "inputs": [],
22
+ "name": "ECDSAInvalidSignature",
23
+ "type": "error"
24
+ },
25
+ {
26
+ "inputs": [
27
+ {
28
+ "internalType": "uint256",
29
+ "name": "length",
30
+ "type": "uint256"
31
+ }
32
+ ],
33
+ "name": "ECDSAInvalidSignatureLength",
34
+ "type": "error"
35
+ },
36
+ {
37
+ "inputs": [
38
+ {
39
+ "internalType": "bytes32",
40
+ "name": "s",
41
+ "type": "bytes32"
42
+ }
43
+ ],
44
+ "name": "ECDSAInvalidSignatureS",
45
+ "type": "error"
46
+ },
47
+ {
48
+ "inputs": [],
49
+ "name": "InvalidShortString",
50
+ "type": "error"
51
+ },
52
+ {
53
+ "inputs": [],
54
+ "name": "InvalidTerms",
55
+ "type": "error"
56
+ },
57
+ {
58
+ "inputs": [],
59
+ "name": "ReentrancyGuardReentrantCall",
60
+ "type": "error"
61
+ },
62
+ {
63
+ "inputs": [
64
+ {
65
+ "internalType": "address",
66
+ "name": "token",
67
+ "type": "address"
68
+ }
69
+ ],
70
+ "name": "SafeERC20FailedOperation",
71
+ "type": "error"
72
+ },
73
+ {
74
+ "inputs": [
75
+ {
76
+ "internalType": "string",
77
+ "name": "str",
78
+ "type": "string"
79
+ }
80
+ ],
81
+ "name": "StringTooLong",
82
+ "type": "error"
83
+ },
84
+ {
85
+ "inputs": [],
86
+ "name": "TokenAmountMismatch",
87
+ "type": "error"
88
+ },
89
+ {
90
+ "inputs": [],
91
+ "name": "Unauthorized",
92
+ "type": "error"
93
+ },
94
+ {
95
+ "inputs": [],
96
+ "name": "WrongState",
97
+ "type": "error"
98
+ },
99
+ {
100
+ "anonymous": false,
101
+ "inputs": [
102
+ {
103
+ "indexed": true,
104
+ "internalType": "bytes32",
105
+ "name": "jobId",
106
+ "type": "bytes32"
107
+ },
108
+ {
109
+ "indexed": false,
110
+ "internalType": "bytes32",
111
+ "name": "reasonHash",
112
+ "type": "bytes32"
113
+ }
114
+ ],
115
+ "name": "Disputed",
116
+ "type": "event"
117
+ },
118
+ {
119
+ "anonymous": false,
120
+ "inputs": [],
121
+ "name": "EIP712DomainChanged",
122
+ "type": "event"
123
+ },
124
+ {
125
+ "anonymous": false,
126
+ "inputs": [
127
+ {
128
+ "indexed": true,
129
+ "internalType": "bytes32",
130
+ "name": "jobId",
131
+ "type": "bytes32"
132
+ },
133
+ {
134
+ "indexed": true,
135
+ "internalType": "bytes32",
136
+ "name": "agreementHash",
137
+ "type": "bytes32"
138
+ },
139
+ {
140
+ "indexed": true,
141
+ "internalType": "address",
142
+ "name": "payer",
143
+ "type": "address"
144
+ },
145
+ {
146
+ "indexed": false,
147
+ "internalType": "address",
148
+ "name": "worker",
149
+ "type": "address"
150
+ },
151
+ {
152
+ "indexed": false,
153
+ "internalType": "uint256",
154
+ "name": "amount",
155
+ "type": "uint256"
156
+ }
157
+ ],
158
+ "name": "Funded",
159
+ "type": "event"
160
+ },
161
+ {
162
+ "anonymous": false,
163
+ "inputs": [
164
+ {
165
+ "indexed": true,
166
+ "internalType": "bytes32",
167
+ "name": "jobId",
168
+ "type": "bytes32"
169
+ },
170
+ {
171
+ "indexed": false,
172
+ "internalType": "uint256",
173
+ "name": "workerAmount",
174
+ "type": "uint256"
175
+ },
176
+ {
177
+ "indexed": false,
178
+ "internalType": "uint256",
179
+ "name": "payerAmount",
180
+ "type": "uint256"
181
+ },
182
+ {
183
+ "indexed": false,
184
+ "internalType": "uint8",
185
+ "name": "reason",
186
+ "type": "uint8"
187
+ }
188
+ ],
189
+ "name": "Settled",
190
+ "type": "event"
191
+ },
192
+ {
193
+ "anonymous": false,
194
+ "inputs": [
195
+ {
196
+ "indexed": true,
197
+ "internalType": "bytes32",
198
+ "name": "jobId",
199
+ "type": "bytes32"
200
+ },
201
+ {
202
+ "indexed": false,
203
+ "internalType": "bytes32",
204
+ "name": "resultHash",
205
+ "type": "bytes32"
206
+ }
207
+ ],
208
+ "name": "Submitted",
209
+ "type": "event"
210
+ },
211
+ {
212
+ "anonymous": false,
213
+ "inputs": [
214
+ {
215
+ "indexed": true,
216
+ "internalType": "bytes32",
217
+ "name": "jobId",
218
+ "type": "bytes32"
219
+ },
220
+ {
221
+ "indexed": false,
222
+ "internalType": "bytes32",
223
+ "name": "resultHash",
224
+ "type": "bytes32"
225
+ }
226
+ ],
227
+ "name": "Verified",
228
+ "type": "event"
229
+ },
230
+ {
231
+ "inputs": [],
232
+ "name": "TERMS_TYPEHASH",
233
+ "outputs": [
234
+ {
235
+ "internalType": "bytes32",
236
+ "name": "",
237
+ "type": "bytes32"
238
+ }
239
+ ],
240
+ "stateMutability": "view",
241
+ "type": "function"
242
+ },
243
+ {
244
+ "inputs": [
245
+ {
246
+ "internalType": "bytes32",
247
+ "name": "id",
248
+ "type": "bytes32"
249
+ },
250
+ {
251
+ "internalType": "bytes32",
252
+ "name": "reasonHash",
253
+ "type": "bytes32"
254
+ }
255
+ ],
256
+ "name": "dispute",
257
+ "outputs": [],
258
+ "stateMutability": "nonpayable",
259
+ "type": "function"
260
+ },
261
+ {
262
+ "inputs": [],
263
+ "name": "eip712Domain",
264
+ "outputs": [
265
+ {
266
+ "internalType": "bytes1",
267
+ "name": "fields",
268
+ "type": "bytes1"
269
+ },
270
+ {
271
+ "internalType": "string",
272
+ "name": "name",
273
+ "type": "string"
274
+ },
275
+ {
276
+ "internalType": "string",
277
+ "name": "version",
278
+ "type": "string"
279
+ },
280
+ {
281
+ "internalType": "uint256",
282
+ "name": "chainId",
283
+ "type": "uint256"
284
+ },
285
+ {
286
+ "internalType": "address",
287
+ "name": "verifyingContract",
288
+ "type": "address"
289
+ },
290
+ {
291
+ "internalType": "bytes32",
292
+ "name": "salt",
293
+ "type": "bytes32"
294
+ },
295
+ {
296
+ "internalType": "uint256[]",
297
+ "name": "extensions",
298
+ "type": "uint256[]"
299
+ }
300
+ ],
301
+ "stateMutability": "view",
302
+ "type": "function"
303
+ },
304
+ {
305
+ "inputs": [
306
+ {
307
+ "components": [
308
+ {
309
+ "internalType": "bytes32",
310
+ "name": "jobId",
311
+ "type": "bytes32"
312
+ },
313
+ {
314
+ "internalType": "address",
315
+ "name": "payer",
316
+ "type": "address"
317
+ },
318
+ {
319
+ "internalType": "address",
320
+ "name": "worker",
321
+ "type": "address"
322
+ },
323
+ {
324
+ "internalType": "address",
325
+ "name": "verifier",
326
+ "type": "address"
327
+ },
328
+ {
329
+ "internalType": "address",
330
+ "name": "arbitrator",
331
+ "type": "address"
332
+ },
333
+ {
334
+ "internalType": "uint256",
335
+ "name": "amount",
336
+ "type": "uint256"
337
+ },
338
+ {
339
+ "internalType": "uint64",
340
+ "name": "workDeadline",
341
+ "type": "uint64"
342
+ },
343
+ {
344
+ "internalType": "uint64",
345
+ "name": "reviewDeadline",
346
+ "type": "uint64"
347
+ },
348
+ {
349
+ "internalType": "uint64",
350
+ "name": "resolutionDeadline",
351
+ "type": "uint64"
352
+ },
353
+ {
354
+ "internalType": "uint16",
355
+ "name": "timeoutWorkerBps",
356
+ "type": "uint16"
357
+ },
358
+ {
359
+ "internalType": "bytes32",
360
+ "name": "agreementHash",
361
+ "type": "bytes32"
362
+ }
363
+ ],
364
+ "internalType": "struct A423Escrow.Terms",
365
+ "name": "t",
366
+ "type": "tuple"
367
+ },
368
+ {
369
+ "internalType": "bytes",
370
+ "name": "workerSignature",
371
+ "type": "bytes"
372
+ }
373
+ ],
374
+ "name": "fund",
375
+ "outputs": [],
376
+ "stateMutability": "nonpayable",
377
+ "type": "function"
378
+ },
379
+ {
380
+ "inputs": [
381
+ {
382
+ "internalType": "bytes32",
383
+ "name": "id",
384
+ "type": "bytes32"
385
+ }
386
+ ],
387
+ "name": "getJob",
388
+ "outputs": [
389
+ {
390
+ "components": [
391
+ {
392
+ "components": [
393
+ {
394
+ "internalType": "bytes32",
395
+ "name": "jobId",
396
+ "type": "bytes32"
397
+ },
398
+ {
399
+ "internalType": "address",
400
+ "name": "payer",
401
+ "type": "address"
402
+ },
403
+ {
404
+ "internalType": "address",
405
+ "name": "worker",
406
+ "type": "address"
407
+ },
408
+ {
409
+ "internalType": "address",
410
+ "name": "verifier",
411
+ "type": "address"
412
+ },
413
+ {
414
+ "internalType": "address",
415
+ "name": "arbitrator",
416
+ "type": "address"
417
+ },
418
+ {
419
+ "internalType": "uint256",
420
+ "name": "amount",
421
+ "type": "uint256"
422
+ },
423
+ {
424
+ "internalType": "uint64",
425
+ "name": "workDeadline",
426
+ "type": "uint64"
427
+ },
428
+ {
429
+ "internalType": "uint64",
430
+ "name": "reviewDeadline",
431
+ "type": "uint64"
432
+ },
433
+ {
434
+ "internalType": "uint64",
435
+ "name": "resolutionDeadline",
436
+ "type": "uint64"
437
+ },
438
+ {
439
+ "internalType": "uint16",
440
+ "name": "timeoutWorkerBps",
441
+ "type": "uint16"
442
+ },
443
+ {
444
+ "internalType": "bytes32",
445
+ "name": "agreementHash",
446
+ "type": "bytes32"
447
+ }
448
+ ],
449
+ "internalType": "struct A423Escrow.Terms",
450
+ "name": "terms",
451
+ "type": "tuple"
452
+ },
453
+ {
454
+ "internalType": "enum A423Escrow.State",
455
+ "name": "state",
456
+ "type": "uint8"
457
+ },
458
+ {
459
+ "internalType": "bytes32",
460
+ "name": "resultHash",
461
+ "type": "bytes32"
462
+ },
463
+ {
464
+ "internalType": "uint256",
465
+ "name": "workerPaid",
466
+ "type": "uint256"
467
+ }
468
+ ],
469
+ "internalType": "struct A423Escrow.Job",
470
+ "name": "",
471
+ "type": "tuple"
472
+ }
473
+ ],
474
+ "stateMutability": "view",
475
+ "type": "function"
476
+ },
477
+ {
478
+ "inputs": [
479
+ {
480
+ "internalType": "bytes32",
481
+ "name": "id",
482
+ "type": "bytes32"
483
+ }
484
+ ],
485
+ "name": "refundExpired",
486
+ "outputs": [],
487
+ "stateMutability": "nonpayable",
488
+ "type": "function"
489
+ },
490
+ {
491
+ "inputs": [
492
+ {
493
+ "internalType": "bytes32",
494
+ "name": "id",
495
+ "type": "bytes32"
496
+ }
497
+ ],
498
+ "name": "release",
499
+ "outputs": [],
500
+ "stateMutability": "nonpayable",
501
+ "type": "function"
502
+ },
503
+ {
504
+ "inputs": [
505
+ {
506
+ "internalType": "bytes32",
507
+ "name": "id",
508
+ "type": "bytes32"
509
+ },
510
+ {
511
+ "internalType": "uint256",
512
+ "name": "workerAmount",
513
+ "type": "uint256"
514
+ }
515
+ ],
516
+ "name": "resolve",
517
+ "outputs": [],
518
+ "stateMutability": "nonpayable",
519
+ "type": "function"
520
+ },
521
+ {
522
+ "inputs": [
523
+ {
524
+ "internalType": "bytes32",
525
+ "name": "id",
526
+ "type": "bytes32"
527
+ },
528
+ {
529
+ "internalType": "bytes32",
530
+ "name": "resultHash",
531
+ "type": "bytes32"
532
+ }
533
+ ],
534
+ "name": "submit",
535
+ "outputs": [],
536
+ "stateMutability": "nonpayable",
537
+ "type": "function"
538
+ },
539
+ {
540
+ "inputs": [
541
+ {
542
+ "components": [
543
+ {
544
+ "internalType": "bytes32",
545
+ "name": "jobId",
546
+ "type": "bytes32"
547
+ },
548
+ {
549
+ "internalType": "address",
550
+ "name": "payer",
551
+ "type": "address"
552
+ },
553
+ {
554
+ "internalType": "address",
555
+ "name": "worker",
556
+ "type": "address"
557
+ },
558
+ {
559
+ "internalType": "address",
560
+ "name": "verifier",
561
+ "type": "address"
562
+ },
563
+ {
564
+ "internalType": "address",
565
+ "name": "arbitrator",
566
+ "type": "address"
567
+ },
568
+ {
569
+ "internalType": "uint256",
570
+ "name": "amount",
571
+ "type": "uint256"
572
+ },
573
+ {
574
+ "internalType": "uint64",
575
+ "name": "workDeadline",
576
+ "type": "uint64"
577
+ },
578
+ {
579
+ "internalType": "uint64",
580
+ "name": "reviewDeadline",
581
+ "type": "uint64"
582
+ },
583
+ {
584
+ "internalType": "uint64",
585
+ "name": "resolutionDeadline",
586
+ "type": "uint64"
587
+ },
588
+ {
589
+ "internalType": "uint16",
590
+ "name": "timeoutWorkerBps",
591
+ "type": "uint16"
592
+ },
593
+ {
594
+ "internalType": "bytes32",
595
+ "name": "agreementHash",
596
+ "type": "bytes32"
597
+ }
598
+ ],
599
+ "internalType": "struct A423Escrow.Terms",
600
+ "name": "t",
601
+ "type": "tuple"
602
+ }
603
+ ],
604
+ "name": "termsDigest",
605
+ "outputs": [
606
+ {
607
+ "internalType": "bytes32",
608
+ "name": "",
609
+ "type": "bytes32"
610
+ }
611
+ ],
612
+ "stateMutability": "view",
613
+ "type": "function"
614
+ },
615
+ {
616
+ "inputs": [
617
+ {
618
+ "internalType": "bytes32",
619
+ "name": "id",
620
+ "type": "bytes32"
621
+ }
622
+ ],
623
+ "name": "timeout",
624
+ "outputs": [],
625
+ "stateMutability": "nonpayable",
626
+ "type": "function"
627
+ },
628
+ {
629
+ "inputs": [],
630
+ "name": "token",
631
+ "outputs": [
632
+ {
633
+ "internalType": "contract IERC20",
634
+ "name": "",
635
+ "type": "address"
636
+ }
637
+ ],
638
+ "stateMutability": "view",
639
+ "type": "function"
640
+ },
641
+ {
642
+ "inputs": [
643
+ {
644
+ "internalType": "bytes32",
645
+ "name": "id",
646
+ "type": "bytes32"
647
+ },
648
+ {
649
+ "internalType": "bytes32",
650
+ "name": "resultHash",
651
+ "type": "bytes32"
652
+ }
653
+ ],
654
+ "name": "verify",
655
+ "outputs": [],
656
+ "stateMutability": "nonpayable",
657
+ "type": "function"
658
+ }
659
+ ],
660
+ "bytecode": "0x610180604052348015610010575f5ffd5b506040516127c43803806127c483398101604081905261002f916101df565b6040518060400160405280600a81526020016941343233457363726f7760b01b815250604051806040016040528060018152602001603160f81b81525060015f8190555061008760018361016760201b90919060201c565b61012052610096816002610167565b61014052815160208084019190912060e052815190820120610100524660a05261012260e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b0381163b5f0361015557604051630256965f60e01b815260040160405180910390fd5b6001600160a01b0316610160526103cc565b5f6020835110156101825761017b83610199565b9050610193565b8161018d84826102a4565b5060ff90505b92915050565b5f5f829050601f815111156101cc578260405163305a27a960e01b81526004016101c3919061035e565b60405180910390fd5b80516101d7826103a9565b179392505050565b5f602082840312156101ef575f5ffd5b81516001600160a01b0381168114610205575f5ffd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061023457607f821691505b60208210810361025257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029f57805f5260205f20601f840160051c8101602085101561027d5750805b601f840160051c820191505b8181101561029c575f8155600101610289565b50505b505050565b81516001600160401b038111156102bd576102bd61020c565b6102d1816102cb8454610220565b84610258565b6020601f821160018114610303575f83156102ec5750848201515b5f19600385901b1c1916600184901b17845561029c565b5f84815260208120601f198516915b828110156103325787850151825560209485019460019092019101610312565b508482101561034f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401525f5b8181101561038a576020818601810151604086840101520161036d565b505f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610252575f1960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516101605161236561045f5f395f81816101f601528181610cfa01528181610d8a01528181610dd901528181611641015281816116d60152818161174e01528181611794015261183601525f61144601525f61141401525f6115da01525f6115b201525f61150d01525f61153701525f61156101526123655ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806384b0196e11610088578063d26ff86e11610063578063d26ff86e146101ab578063edb70d9e146101be578063f729cf0d146101d1578063fc0c546a146101f1575f5ffd5b806384b0196e1461016a5780638a92631714610185578063cc3e049b14610198575f5ffd5b8063099d2518146100cf5780633aa36987146100f55780634e8fee001461011c57806367d42a8b14610131578063795ea18e1461014457806382cbf88b14610157575b5f5ffd5b6100e26100dd366004611c4f565b610230565b6040519081526020015b60405180910390f35b6100e27f3a82e9543b510404d05948b3e6cbf4e32f66690f864ccb5ef67ee5927a49a4ba81565b61012f61012a366004611c71565b610288565b005b61012f61013f366004611c91565b61039f565b61012f610152366004611c91565b61046f565b61012f610165366004611c71565b6105cb565b61017261070e565b6040516100ec9796959493929190611ceb565b61012f610193366004611d81565b610750565b61012f6101a6366004611c91565b610eee565b61012f6101b9366004611c71565b610f76565b61012f6101cc366004611c71565b61107c565b6101e46101df366004611c91565b611154565b6040516100ec9190611e34565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ec565b5f6102827f3a82e9543b510404d05948b3e6cbf4e32f66690f864ccb5ef67ee5927a49a4ba83604051602001610267929190611fa1565b604051602081830303815290604052805190602001206112d6565b92915050565b5f828152600360208190526040909120908101546001600160a01b031633146102c3576040516282b42960e81b815260040160405180910390fd5b6002600882015460ff1660078111156102de576102de611e00565b146102fc57604051636f20b45d60e11b815260040160405180910390fd5b6006810154600160401b90046001600160401b03164211156103315760405163637910d560e11b815260040160405180910390fd5b8060090154821461035557604051630256965f60e01b815260040160405180910390fd5b60088101805460ff1916600317905560405182815283907f5c83c73bb0b96f8bc4b95aabcb7980de29ee8ec40cf1aa83c5bd999b44077557906020015b60405180910390a2505050565b6103a7611302565b5f818152600360208190526040909120908101546001600160a01b031633146103e2576040516282b42960e81b815260040160405180910390fd5b6003600882015460ff1660078111156103fd576103fd611e00565b1461041b57604051636f20b45d60e11b815260040160405180910390fd5b6006810154600160801b90046001600160401b03164211156104505760405163637910d560e11b815260040160405180910390fd5b6104628282835f01600501545f61132a565b5061046c60015f55565b50565b610477611302565b5f8181526003602052604090206002600882015460ff16600781111561049f5761049f611e00565b141580156104c657506003600882015460ff1660078111156104c3576104c3611e00565b14155b80156104eb57506004600882015460ff1660078111156104e8576104e8611e00565b14155b1561050957604051636f20b45d60e11b815260040160405180910390fd5b6006810154600160801b90046001600160401b0316421161053d5760405163637910d560e11b815260040160405180910390fd5b600681015460058201545f9161271091600160c01b90910461ffff16906105659083906120ca565b61056f91906120f1565b6105799190612108565b60068301546005840154600160c01b90910461ffff169061059d9061271090612108565b6105a791906120f1565b6105b1919061211b565b90506105c0838383600361132a565b505061046c60015f55565b5f82815260036020526040902060018101546001600160a01b03163314801590610602575060028101546001600160a01b03163314155b801561061b575060038101546001600160a01b03163314155b15610638576040516282b42960e81b815260040160405180910390fd5b6002600882015460ff16600781111561065357610653611e00565b1415801561067a57506003600882015460ff16600781111561067757610677611e00565b14155b1561069857604051636f20b45d60e11b815260040160405180910390fd5b6006810154600160801b90046001600160401b03164211156106cd5760405163637910d560e11b815260040160405180910390fd5b60088101805460ff1916600417905560405182815283907f8e39eab2c454d024fb5c89b50dabc51f5068c7a283891d06aa91f5ba96acded190602001610392565b5f6060805f5f5f606061071f61140d565b61072761143f565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b610758611302565b610768604084016020850161212e565b6001600160a01b0316336001600160a01b031614610798576040516282b42960e81b815260040160405180910390fd5b82355f9081526003602052604081206008015460ff1660078111156107bf576107bf611e00565b146107dd57604051636f20b45d60e11b815260040160405180910390fd5b823515806107ee5750610140830135155b806107fb575060a0830135155b8061081d57505f610812606085016040860161212e565b6001600160a01b0316145b806108575750610833604084016020850161212e565b6001600160a01b031661084c606085016040860161212e565b6001600160a01b0316145b8061087957505f61086e608085016060860161212e565b6001600160a01b0316145b8061089b57505f61089060a085016080860161212e565b6001600160a01b0316145b806108d557506108b1604084016020850161212e565b6001600160a01b03166108ca60a085016080860161212e565b6001600160a01b0316145b8061090f57506108eb606084016040850161212e565b6001600160a01b031661090460a085016080860161212e565b6001600160a01b0316145b80610930575061271061092a61014085016101208601612147565b61ffff16115b1561094e57604051630256965f60e01b815260040160405180910390fd5b4261095f60e0850160c08601612160565b6001600160401b03161115806109a6575061098060e0840160c08501612160565b6001600160401b031661099a610100850160e08601612160565b6001600160401b031611155b806109e457506109bd610100840160e08501612160565b6001600160401b03166109d861012085016101008601612160565b6001600160401b031611155b15610a0257604051630256965f60e01b815260040160405180910390fd5b5f610a13606085016040860161212e565b6001600160a01b03163b5f03610a9457610a33606085016040860161212e565b6001600160a01b0316610a83610a4886610230565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061146c92505050565b6001600160a01b0316149050610b35565b610aa4606085016040860161212e565b6001600160a01b0316631626ba7e610abb86610230565b85856040518463ffffffff1660e01b8152600401610adb93929190612179565b602060405180830381865afa925050508015610b14575060408051601f3d908101601f19168201909252610b11918101906121ae565b60015b610b1f57505f610b35565b6001600160e01b031916630b135d3f60e11b1490505b80610b52576040516282b42960e81b815260040160405180910390fd5b604051806080016040528085803603810190610b6e919061220a565b8152602001600181525f602080830182905260409283018290528735825260038082529183902084518051825580830151600180840180546001600160a01b039384166001600160a01b03199182161790915596830151600285018054918416918916919091179055606083015195840180549683169688169690961790955560808201516004840180549190921696169590951790945560a0840151600582015560c084015160068201805460e087015161010088015161012089015161ffff16600160c01b0261ffff60c01b196001600160401b03928316600160801b021669ffffffffffffffffffff60801b19938316600160401b026fffffffffffffffffffffffffffffffff19909516929096169190911792909217169290921791909117905561014090930151600780850191909155908401516008840180549193909260ff19909216918490811115610cc957610cc9611e00565b02179055506040828101516009830155606090920151600a90910155516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d47573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6b91906122d3565b9050610db6610d80604087016020880161212e565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016903060a0890135611494565b610dc460a08601358261211b565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610e26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4a91906122d3565b14610e685760405163570883e560e01b815260040160405180910390fd5b610e78604086016020870161212e565b6001600160a01b031661014086013586357f32f3ba658fc1eefa6d5ca6ba35e8715bb439f7713edf2d61c03f4920fcb8cbab610eba60608a0160408b0161212e565b604080516001600160a01b03909216825260a08b013560208301520160405180910390a45050610ee960015f55565b505050565b610ef6611302565b5f8181526003602052604090206001600882015460ff166007811115610f1e57610f1e611e00565b14610f3c57604051636f20b45d60e11b815260040160405180910390fd5b60068101546001600160401b03164211610f695760405163637910d560e11b815260040160405180910390fd5b61046282825f600161132a565b5f82815260036020526040902060028101546001600160a01b03163314610faf576040516282b42960e81b815260040160405180910390fd5b6001600882015460ff166007811115610fca57610fca611e00565b14610fe857604051636f20b45d60e11b815260040160405180910390fd5b60068101546001600160401b03164211156110165760405163637910d560e11b815260040160405180910390fd5b8161103457604051630256965f60e01b815260040160405180910390fd5b6009810182905560088101805460ff1916600217905560405182815283907fa2f32e666157494cac7b795a43a2914dcb77efd9515b47db67dd15d332234f9790602001610392565b611084611302565b5f82815260036020526040902060048101546001600160a01b031633146110bd576040516282b42960e81b815260040160405180910390fd5b6004600882015460ff1660078111156110d8576110d8611e00565b146110f657604051636f20b45d60e11b815260040160405180910390fd5b6006810154600160801b90046001600160401b031642118061111b5750600581015482115b1561113957604051630256965f60e01b815260040160405180910390fd5b611146838284600261132a565b5061115060015f55565b5050565b604080516101e0810182525f6080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c0830182905282526020820181905291810182905260608101919091525f8281526003602081815260409283902083516101e0810190945280546080850190815260018201546001600160a01b0390811660a08701526002830154811660c087015293820154841660e08601526004820154909316610100850152600581015461012085015260068101546001600160401b03808216610140870152600160401b82048116610160870152600160801b820416610180860152600160c01b900461ffff166101a08501526007808201546101c0860152928452600881015490929184019160ff909116908111156112a7576112a7611e00565b60078111156112b8576112b8611e00565b815260098201546020820152600a9091015460409091015292915050565b5f6102826112e2611501565b8360405161190160f01b8152600281019290925260228201526042902090565b60025f540361132457604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b60058301545f9061133c9084906122ea565b9050821561135857801561135157600761135b565b600561135b565b60065b60088501805460ff1916600183600781111561137957611379611e00565b0217905550600a840183905582156113a35760028401546113a3906001600160a01b03168461162a565b80156113c15760018401546113c1906001600160a01b03168261162a565b604080518481526020810183905260ff841681830152905186917fb3a77f60f2042a66aa50b5810774aab5f1a2dd6799ee891ebb9fe98b95fec57f919081900360600190a25050505050565b606061143a7f000000000000000000000000000000000000000000000000000000000000000060016118c0565b905090565b606061143a7f000000000000000000000000000000000000000000000000000000000000000060026118c0565b5f5f5f5f61147a8686611969565b92509250925061148a82826119b2565b5090949350505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526114fb9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611a6f565b50505050565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561155957507f000000000000000000000000000000000000000000000000000000000000000046145b1561158357507f000000000000000000000000000000000000000000000000000000000000000090565b61143a604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561168e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b291906122d3565b6040516370a0823160e01b81526001600160a01b0385811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561171b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061173f91906122d3565b90506117756001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611adb565b61177f83836122ea565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156117e1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180591906122d3565b1415806118a25750611817838261211b565b6040516370a0823160e01b81526001600160a01b0386811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561187b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189f91906122d3565b14155b156114fb5760405163570883e560e01b815260040160405180910390fd5b606060ff83146118da576118d383611b0c565b9050610282565b8180546118e6906122fd565b80601f0160208091040260200160405190810160405280929190818152602001828054611912906122fd565b801561195d5780601f106119345761010080835404028352916020019161195d565b820191905f5260205f20905b81548152906001019060200180831161194057829003601f168201915b50505050509050610282565b5f5f5f83516041036119a0576020840151604085015160608601515f1a61199288828585611b49565b9550955095505050506119ab565b505081515f91506002905b9250925092565b5f8260038111156119c5576119c5611e00565b036119ce575050565b60018260038111156119e2576119e2611e00565b03611a005760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611a1457611a14611e00565b03611a3a5760405163fce698f760e01b8152600481018290526024015b60405180910390fd5b6003826003811115611a4e57611a4e611e00565b03611150576040516335e2f38360e21b815260048101829052602401611a31565b5f5f60205f8451602086015f885af180611a8e576040513d5f823e3d81fd5b50505f513d91508115611aa5578060011415611ab2565b6001600160a01b0384163b155b156114fb57604051635274afe760e01b81526001600160a01b0385166004820152602401611a31565b6040516001600160a01b03838116602483015260448201839052610ee991859182169063a9059cbb906064016114c9565b60605f611b1883611c11565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611b8257505f91506003905082611c07565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611bd3573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611bfe57505f925060019150829050611c07565b92505f91508190505b9450945094915050565b5f60ff8216601f81111561028257604051632cd44ac360e21b815260040160405180910390fd5b5f6101608284031215611c49575f5ffd5b50919050565b5f6101608284031215611c60575f5ffd5b611c6a8383611c38565b9392505050565b5f5f60408385031215611c82575f5ffd5b50508035926020909101359150565b5f60208284031215611ca1575f5ffd5b5035919050565b5f81518084525f5b81811015611ccc57602081850181015186830182015201611cb0565b505f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b8816815260e060208201525f611d0960e0830189611ca8565b8281036040840152611d1b8189611ca8565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611d70578351835260209384019390920191600101611d52565b50909b9a5050505050505050505050565b5f5f5f6101808486031215611d94575f5ffd5b611d9e8585611c38565b92506101608401356001600160401b03811115611db9575f5ffd5b8401601f81018613611dc9575f5ffd5b80356001600160401b03811115611dde575f5ffd5b866020828401011115611def575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b60088110611e3057634e487b7160e01b5f52602160045260245ffd5b9052565b5f6101c0820190508251805183526020810151611e5c60208501826001600160a01b03169052565b506040810151611e7760408501826001600160a01b03169052565b506060810151611e9260608501826001600160a01b03169052565b506080810151611ead60808501826001600160a01b03169052565b5060a081015160a084015260c0810151611ed260c08501826001600160401b03169052565b5060e0810151611eed60e08501826001600160401b03169052565b50610100810151611f0a6101008501826001600160401b03169052565b50610120810151611f2261012085018261ffff169052565b50610140810151610140840152506020830151611f43610160840182611e14565b5060408301516101808301526060909201516101a09091015290565b80356001600160a01b0381168114611f75575f5ffd5b919050565b80356001600160401b0381168114611f75575f5ffd5b803561ffff81168114611f75575f5ffd5b8281528135602080830191909152610180820190611fc0908401611f5f565b6001600160a01b038116604084015250611fdc60408401611f5f565b6001600160a01b038116606084015250611ff860608401611f5f565b6001600160a01b03811660808401525061201460808401611f5f565b6001600160a01b03811660a08401525060a083013560c08381019190915261203d908401611f7a565b6001600160401b03811660e08401525061205960e08401611f7a565b6001600160401b038116610100840152506120776101008401611f7a565b6001600160401b038116610120840152506120956101208401611f90565b61ffff81166101408401525061014092909201356101609190910152919050565b634e487b7160e01b5f52601260045260245ffd5b5f826120d8576120d86120b6565b500690565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610282576102826120dd565b5f82612116576121166120b6565b500490565b80820180821115610282576102826120dd565b5f6020828403121561213e575f5ffd5b611c6a82611f5f565b5f60208284031215612157575f5ffd5b611c6a82611f90565b5f60208284031215612170575f5ffd5b611c6a82611f7a565b83815260406020820152816040820152818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f602082840312156121be575f5ffd5b81516001600160e01b031981168114611c6a575f5ffd5b60405161016081016001600160401b038111828210171561220457634e487b7160e01b5f52604160045260245ffd5b60405290565b5f61016082840312801561221c575f5ffd5b506122256121d5565b8235815261223560208401611f5f565b602082015261224660408401611f5f565b604082015261225760608401611f5f565b606082015261226860808401611f5f565b608082015260a0838101359082015261228360c08401611f7a565b60c082015261229460e08401611f7a565b60e08201526122a66101008401611f7a565b6101008201526122b96101208401611f90565b610120820152610140928301359281019290925250919050565b5f602082840312156122e3575f5ffd5b5051919050565b81810381811115610282576102826120dd565b600181811c9082168061231157607f821691505b602082108103611c4957634e487b7160e01b5f52602260045260245ffdfea26469706673582212205baa27a5ede03269f91b23ac0ffdafa9d221f7764d1f438eee508bec48f9def564736f6c634300081e0033"
661
+ }