olas-operate-middleware 0.1.0rc59__py3-none-any.whl → 0.13.2__py3-none-any.whl

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.
Files changed (98) hide show
  1. olas_operate_middleware-0.13.2.dist-info/METADATA +75 -0
  2. olas_operate_middleware-0.13.2.dist-info/RECORD +101 -0
  3. {olas_operate_middleware-0.1.0rc59.dist-info → olas_operate_middleware-0.13.2.dist-info}/WHEEL +1 -1
  4. operate/__init__.py +17 -0
  5. operate/account/user.py +35 -9
  6. operate/bridge/bridge_manager.py +470 -0
  7. operate/bridge/providers/lifi_provider.py +377 -0
  8. operate/bridge/providers/native_bridge_provider.py +677 -0
  9. operate/bridge/providers/provider.py +469 -0
  10. operate/bridge/providers/relay_provider.py +457 -0
  11. operate/cli.py +1565 -417
  12. operate/constants.py +60 -12
  13. operate/data/README.md +19 -0
  14. operate/data/contracts/{service_staking_token → dual_staking_token}/__init__.py +2 -2
  15. operate/data/contracts/dual_staking_token/build/DualStakingToken.json +443 -0
  16. operate/data/contracts/dual_staking_token/contract.py +132 -0
  17. operate/data/contracts/dual_staking_token/contract.yaml +23 -0
  18. operate/{ledger/base.py → data/contracts/foreign_omnibridge/__init__.py} +2 -19
  19. operate/data/contracts/foreign_omnibridge/build/ForeignOmnibridge.json +1372 -0
  20. operate/data/contracts/foreign_omnibridge/contract.py +130 -0
  21. operate/data/contracts/foreign_omnibridge/contract.yaml +23 -0
  22. operate/{ledger/solana.py → data/contracts/home_omnibridge/__init__.py} +2 -20
  23. operate/data/contracts/home_omnibridge/build/HomeOmnibridge.json +1421 -0
  24. operate/data/contracts/home_omnibridge/contract.py +80 -0
  25. operate/data/contracts/home_omnibridge/contract.yaml +23 -0
  26. operate/data/contracts/l1_standard_bridge/__init__.py +20 -0
  27. operate/data/contracts/l1_standard_bridge/build/L1StandardBridge.json +831 -0
  28. operate/data/contracts/l1_standard_bridge/contract.py +158 -0
  29. operate/data/contracts/l1_standard_bridge/contract.yaml +23 -0
  30. operate/data/contracts/l2_standard_bridge/__init__.py +20 -0
  31. operate/data/contracts/l2_standard_bridge/build/L2StandardBridge.json +626 -0
  32. operate/data/contracts/l2_standard_bridge/contract.py +130 -0
  33. operate/data/contracts/l2_standard_bridge/contract.yaml +23 -0
  34. operate/data/contracts/mech_activity/__init__.py +20 -0
  35. operate/data/contracts/mech_activity/build/MechActivity.json +111 -0
  36. operate/data/contracts/mech_activity/contract.py +44 -0
  37. operate/data/contracts/mech_activity/contract.yaml +23 -0
  38. operate/data/contracts/optimism_mintable_erc20/__init__.py +20 -0
  39. operate/data/contracts/optimism_mintable_erc20/build/OptimismMintableERC20.json +491 -0
  40. operate/data/contracts/optimism_mintable_erc20/contract.py +45 -0
  41. operate/data/contracts/optimism_mintable_erc20/contract.yaml +23 -0
  42. operate/data/contracts/recovery_module/__init__.py +20 -0
  43. operate/data/contracts/recovery_module/build/RecoveryModule.json +811 -0
  44. operate/data/contracts/recovery_module/contract.py +61 -0
  45. operate/data/contracts/recovery_module/contract.yaml +23 -0
  46. operate/data/contracts/requester_activity_checker/__init__.py +20 -0
  47. operate/data/contracts/requester_activity_checker/build/RequesterActivityChecker.json +111 -0
  48. operate/data/contracts/requester_activity_checker/contract.py +33 -0
  49. operate/data/contracts/requester_activity_checker/contract.yaml +23 -0
  50. operate/data/contracts/staking_token/__init__.py +20 -0
  51. operate/data/contracts/staking_token/build/StakingToken.json +1336 -0
  52. operate/data/contracts/{service_staking_token → staking_token}/contract.py +27 -13
  53. operate/data/contracts/staking_token/contract.yaml +23 -0
  54. operate/data/contracts/uniswap_v2_erc20/contract.yaml +3 -1
  55. operate/data/contracts/uniswap_v2_erc20/tests/__init__.py +20 -0
  56. operate/data/contracts/uniswap_v2_erc20/tests/test_contract.py +363 -0
  57. operate/keys.py +118 -33
  58. operate/ledger/__init__.py +159 -56
  59. operate/ledger/profiles.py +321 -18
  60. operate/migration.py +555 -0
  61. operate/{http → operate_http}/__init__.py +3 -2
  62. operate/{http → operate_http}/exceptions.py +6 -4
  63. operate/operate_types.py +544 -0
  64. operate/pearl.py +13 -1
  65. operate/quickstart/analyse_logs.py +118 -0
  66. operate/quickstart/claim_staking_rewards.py +104 -0
  67. operate/quickstart/reset_configs.py +106 -0
  68. operate/quickstart/reset_password.py +70 -0
  69. operate/quickstart/reset_staking.py +145 -0
  70. operate/quickstart/run_service.py +726 -0
  71. operate/quickstart/stop_service.py +72 -0
  72. operate/quickstart/terminate_on_chain_service.py +83 -0
  73. operate/quickstart/utils.py +298 -0
  74. operate/resource.py +62 -3
  75. operate/services/agent_runner.py +202 -0
  76. operate/services/deployment_runner.py +868 -0
  77. operate/services/funding_manager.py +929 -0
  78. operate/services/health_checker.py +280 -0
  79. operate/services/manage.py +2356 -620
  80. operate/services/protocol.py +1246 -340
  81. operate/services/service.py +756 -391
  82. operate/services/utils/mech.py +103 -0
  83. operate/services/utils/tendermint.py +86 -12
  84. operate/settings.py +70 -0
  85. operate/utils/__init__.py +135 -0
  86. operate/utils/gnosis.py +407 -80
  87. operate/utils/single_instance.py +226 -0
  88. operate/utils/ssl.py +133 -0
  89. operate/wallet/master.py +708 -123
  90. operate/wallet/wallet_recovery_manager.py +507 -0
  91. olas_operate_middleware-0.1.0rc59.dist-info/METADATA +0 -304
  92. olas_operate_middleware-0.1.0rc59.dist-info/RECORD +0 -41
  93. operate/data/contracts/service_staking_token/build/ServiceStakingToken.json +0 -1273
  94. operate/data/contracts/service_staking_token/contract.yaml +0 -23
  95. operate/ledger/ethereum.py +0 -48
  96. operate/types.py +0 -260
  97. {olas_operate_middleware-0.1.0rc59.dist-info → olas_operate_middleware-0.13.2.dist-info}/entry_points.txt +0 -0
  98. {olas_operate_middleware-0.1.0rc59.dist-info → olas_operate_middleware-0.13.2.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,1421 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "HomeOmnibridge",
4
+ "sourceName": "HomeOmnibridge.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "string",
10
+ "name": "_suffix",
11
+ "type": "string"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "anonymous": false,
19
+ "inputs": [
20
+ {
21
+ "indexed": true,
22
+ "internalType": "address",
23
+ "name": "token",
24
+ "type": "address"
25
+ },
26
+ {
27
+ "indexed": false,
28
+ "internalType": "uint256",
29
+ "name": "newLimit",
30
+ "type": "uint256"
31
+ }
32
+ ],
33
+ "name": "DailyLimitChanged",
34
+ "type": "event"
35
+ },
36
+ {
37
+ "anonymous": false,
38
+ "inputs": [
39
+ {
40
+ "indexed": true,
41
+ "internalType": "address",
42
+ "name": "token",
43
+ "type": "address"
44
+ },
45
+ {
46
+ "indexed": false,
47
+ "internalType": "uint256",
48
+ "name": "newLimit",
49
+ "type": "uint256"
50
+ }
51
+ ],
52
+ "name": "ExecutionDailyLimitChanged",
53
+ "type": "event"
54
+ },
55
+ {
56
+ "anonymous": false,
57
+ "inputs": [
58
+ {
59
+ "indexed": true,
60
+ "internalType": "bytes32",
61
+ "name": "messageId",
62
+ "type": "bytes32"
63
+ },
64
+ {
65
+ "indexed": false,
66
+ "internalType": "address",
67
+ "name": "token",
68
+ "type": "address"
69
+ },
70
+ {
71
+ "indexed": false,
72
+ "internalType": "address",
73
+ "name": "recipient",
74
+ "type": "address"
75
+ },
76
+ {
77
+ "indexed": false,
78
+ "internalType": "uint256",
79
+ "name": "value",
80
+ "type": "uint256"
81
+ }
82
+ ],
83
+ "name": "FailedMessageFixed",
84
+ "type": "event"
85
+ },
86
+ {
87
+ "anonymous": false,
88
+ "inputs": [
89
+ {
90
+ "indexed": false,
91
+ "internalType": "uint256",
92
+ "name": "fee",
93
+ "type": "uint256"
94
+ },
95
+ {
96
+ "indexed": true,
97
+ "internalType": "address",
98
+ "name": "token",
99
+ "type": "address"
100
+ },
101
+ {
102
+ "indexed": true,
103
+ "internalType": "bytes32",
104
+ "name": "messageId",
105
+ "type": "bytes32"
106
+ }
107
+ ],
108
+ "name": "FeeDistributed",
109
+ "type": "event"
110
+ },
111
+ {
112
+ "anonymous": false,
113
+ "inputs": [
114
+ {
115
+ "indexed": true,
116
+ "internalType": "address",
117
+ "name": "token",
118
+ "type": "address"
119
+ },
120
+ {
121
+ "indexed": false,
122
+ "internalType": "uint256",
123
+ "name": "fee",
124
+ "type": "uint256"
125
+ }
126
+ ],
127
+ "name": "FeeDistributionFailed",
128
+ "type": "event"
129
+ },
130
+ {
131
+ "anonymous": false,
132
+ "inputs": [
133
+ {
134
+ "indexed": true,
135
+ "internalType": "address",
136
+ "name": "nativeToken",
137
+ "type": "address"
138
+ },
139
+ {
140
+ "indexed": true,
141
+ "internalType": "address",
142
+ "name": "bridgedToken",
143
+ "type": "address"
144
+ }
145
+ ],
146
+ "name": "NewTokenRegistered",
147
+ "type": "event"
148
+ },
149
+ {
150
+ "anonymous": false,
151
+ "inputs": [
152
+ {
153
+ "indexed": false,
154
+ "internalType": "address",
155
+ "name": "previousOwner",
156
+ "type": "address"
157
+ },
158
+ {
159
+ "indexed": false,
160
+ "internalType": "address",
161
+ "name": "newOwner",
162
+ "type": "address"
163
+ }
164
+ ],
165
+ "name": "OwnershipTransferred",
166
+ "type": "event"
167
+ },
168
+ {
169
+ "anonymous": false,
170
+ "inputs": [
171
+ {
172
+ "indexed": true,
173
+ "internalType": "address",
174
+ "name": "token",
175
+ "type": "address"
176
+ },
177
+ {
178
+ "indexed": true,
179
+ "internalType": "address",
180
+ "name": "recipient",
181
+ "type": "address"
182
+ },
183
+ {
184
+ "indexed": false,
185
+ "internalType": "uint256",
186
+ "name": "value",
187
+ "type": "uint256"
188
+ },
189
+ {
190
+ "indexed": true,
191
+ "internalType": "bytes32",
192
+ "name": "messageId",
193
+ "type": "bytes32"
194
+ }
195
+ ],
196
+ "name": "TokensBridged",
197
+ "type": "event"
198
+ },
199
+ {
200
+ "anonymous": false,
201
+ "inputs": [
202
+ {
203
+ "indexed": true,
204
+ "internalType": "address",
205
+ "name": "token",
206
+ "type": "address"
207
+ },
208
+ {
209
+ "indexed": true,
210
+ "internalType": "address",
211
+ "name": "sender",
212
+ "type": "address"
213
+ },
214
+ {
215
+ "indexed": false,
216
+ "internalType": "uint256",
217
+ "name": "value",
218
+ "type": "uint256"
219
+ },
220
+ {
221
+ "indexed": true,
222
+ "internalType": "bytes32",
223
+ "name": "messageId",
224
+ "type": "bytes32"
225
+ }
226
+ ],
227
+ "name": "TokensBridgingInitiated",
228
+ "type": "event"
229
+ },
230
+ {
231
+ "inputs": [],
232
+ "name": "bridgeContract",
233
+ "outputs": [
234
+ {
235
+ "internalType": "contract IAMB",
236
+ "name": "",
237
+ "type": "address"
238
+ }
239
+ ],
240
+ "stateMutability": "view",
241
+ "type": "function"
242
+ },
243
+ {
244
+ "inputs": [
245
+ {
246
+ "internalType": "address",
247
+ "name": "_nativeToken",
248
+ "type": "address"
249
+ }
250
+ ],
251
+ "name": "bridgedTokenAddress",
252
+ "outputs": [
253
+ {
254
+ "internalType": "address",
255
+ "name": "",
256
+ "type": "address"
257
+ }
258
+ ],
259
+ "stateMutability": "view",
260
+ "type": "function"
261
+ },
262
+ {
263
+ "inputs": [
264
+ {
265
+ "internalType": "address",
266
+ "name": "_token",
267
+ "type": "address"
268
+ },
269
+ {
270
+ "internalType": "address",
271
+ "name": "_to",
272
+ "type": "address"
273
+ }
274
+ ],
275
+ "name": "claimTokens",
276
+ "outputs": [],
277
+ "stateMutability": "nonpayable",
278
+ "type": "function"
279
+ },
280
+ {
281
+ "inputs": [
282
+ {
283
+ "internalType": "address",
284
+ "name": "_bridgedToken",
285
+ "type": "address"
286
+ },
287
+ {
288
+ "internalType": "address",
289
+ "name": "_token",
290
+ "type": "address"
291
+ },
292
+ {
293
+ "internalType": "address",
294
+ "name": "_to",
295
+ "type": "address"
296
+ }
297
+ ],
298
+ "name": "claimTokensFromTokenContract",
299
+ "outputs": [],
300
+ "stateMutability": "nonpayable",
301
+ "type": "function"
302
+ },
303
+ {
304
+ "inputs": [
305
+ {
306
+ "internalType": "address",
307
+ "name": "_token",
308
+ "type": "address"
309
+ }
310
+ ],
311
+ "name": "dailyLimit",
312
+ "outputs": [
313
+ {
314
+ "internalType": "uint256",
315
+ "name": "",
316
+ "type": "uint256"
317
+ }
318
+ ],
319
+ "stateMutability": "view",
320
+ "type": "function"
321
+ },
322
+ {
323
+ "inputs": [
324
+ {
325
+ "internalType": "address",
326
+ "name": "_token",
327
+ "type": "address"
328
+ },
329
+ {
330
+ "internalType": "string",
331
+ "name": "_name",
332
+ "type": "string"
333
+ },
334
+ {
335
+ "internalType": "string",
336
+ "name": "_symbol",
337
+ "type": "string"
338
+ },
339
+ {
340
+ "internalType": "uint8",
341
+ "name": "_decimals",
342
+ "type": "uint8"
343
+ },
344
+ {
345
+ "internalType": "address",
346
+ "name": "_recipient",
347
+ "type": "address"
348
+ },
349
+ {
350
+ "internalType": "uint256",
351
+ "name": "_value",
352
+ "type": "uint256"
353
+ }
354
+ ],
355
+ "name": "deployAndHandleBridgedTokens",
356
+ "outputs": [],
357
+ "stateMutability": "nonpayable",
358
+ "type": "function"
359
+ },
360
+ {
361
+ "inputs": [
362
+ {
363
+ "internalType": "address",
364
+ "name": "_token",
365
+ "type": "address"
366
+ },
367
+ {
368
+ "internalType": "string",
369
+ "name": "_name",
370
+ "type": "string"
371
+ },
372
+ {
373
+ "internalType": "string",
374
+ "name": "_symbol",
375
+ "type": "string"
376
+ },
377
+ {
378
+ "internalType": "uint8",
379
+ "name": "_decimals",
380
+ "type": "uint8"
381
+ },
382
+ {
383
+ "internalType": "address",
384
+ "name": "_recipient",
385
+ "type": "address"
386
+ },
387
+ {
388
+ "internalType": "uint256",
389
+ "name": "_value",
390
+ "type": "uint256"
391
+ },
392
+ {
393
+ "internalType": "bytes",
394
+ "name": "_data",
395
+ "type": "bytes"
396
+ }
397
+ ],
398
+ "name": "deployAndHandleBridgedTokensAndCall",
399
+ "outputs": [],
400
+ "stateMutability": "nonpayable",
401
+ "type": "function"
402
+ },
403
+ {
404
+ "inputs": [
405
+ {
406
+ "internalType": "address",
407
+ "name": "_token",
408
+ "type": "address"
409
+ }
410
+ ],
411
+ "name": "executionDailyLimit",
412
+ "outputs": [
413
+ {
414
+ "internalType": "uint256",
415
+ "name": "",
416
+ "type": "uint256"
417
+ }
418
+ ],
419
+ "stateMutability": "view",
420
+ "type": "function"
421
+ },
422
+ {
423
+ "inputs": [
424
+ {
425
+ "internalType": "address",
426
+ "name": "_token",
427
+ "type": "address"
428
+ }
429
+ ],
430
+ "name": "executionMaxPerTx",
431
+ "outputs": [
432
+ {
433
+ "internalType": "uint256",
434
+ "name": "",
435
+ "type": "uint256"
436
+ }
437
+ ],
438
+ "stateMutability": "view",
439
+ "type": "function"
440
+ },
441
+ {
442
+ "inputs": [],
443
+ "name": "feeManager",
444
+ "outputs": [
445
+ {
446
+ "internalType": "contract OmnibridgeFeeManager",
447
+ "name": "",
448
+ "type": "address"
449
+ }
450
+ ],
451
+ "stateMutability": "view",
452
+ "type": "function"
453
+ },
454
+ {
455
+ "inputs": [
456
+ {
457
+ "internalType": "bytes32",
458
+ "name": "_messageId",
459
+ "type": "bytes32"
460
+ }
461
+ ],
462
+ "name": "fixFailedMessage",
463
+ "outputs": [],
464
+ "stateMutability": "nonpayable",
465
+ "type": "function"
466
+ },
467
+ {
468
+ "inputs": [
469
+ {
470
+ "internalType": "address",
471
+ "name": "_token",
472
+ "type": "address"
473
+ },
474
+ {
475
+ "internalType": "address",
476
+ "name": "_receiver",
477
+ "type": "address"
478
+ }
479
+ ],
480
+ "name": "fixMediatorBalance",
481
+ "outputs": [],
482
+ "stateMutability": "nonpayable",
483
+ "type": "function"
484
+ },
485
+ {
486
+ "inputs": [
487
+ {
488
+ "internalType": "address",
489
+ "name": "_homeToken",
490
+ "type": "address"
491
+ }
492
+ ],
493
+ "name": "foreignTokenAddress",
494
+ "outputs": [
495
+ {
496
+ "internalType": "address",
497
+ "name": "",
498
+ "type": "address"
499
+ }
500
+ ],
501
+ "stateMutability": "view",
502
+ "type": "function"
503
+ },
504
+ {
505
+ "inputs": [],
506
+ "name": "forwardingRulesManager",
507
+ "outputs": [
508
+ {
509
+ "internalType": "contract MultiTokenForwardingRulesManager",
510
+ "name": "",
511
+ "type": "address"
512
+ }
513
+ ],
514
+ "stateMutability": "view",
515
+ "type": "function"
516
+ },
517
+ {
518
+ "inputs": [],
519
+ "name": "gasLimitManager",
520
+ "outputs": [
521
+ {
522
+ "internalType": "contract SelectorTokenGasLimitManager",
523
+ "name": "",
524
+ "type": "address"
525
+ }
526
+ ],
527
+ "stateMutability": "view",
528
+ "type": "function"
529
+ },
530
+ {
531
+ "inputs": [],
532
+ "name": "getBridgeInterfacesVersion",
533
+ "outputs": [
534
+ {
535
+ "internalType": "uint64",
536
+ "name": "major",
537
+ "type": "uint64"
538
+ },
539
+ {
540
+ "internalType": "uint64",
541
+ "name": "minor",
542
+ "type": "uint64"
543
+ },
544
+ {
545
+ "internalType": "uint64",
546
+ "name": "patch",
547
+ "type": "uint64"
548
+ }
549
+ ],
550
+ "stateMutability": "pure",
551
+ "type": "function"
552
+ },
553
+ {
554
+ "inputs": [],
555
+ "name": "getBridgeMode",
556
+ "outputs": [
557
+ {
558
+ "internalType": "bytes4",
559
+ "name": "_data",
560
+ "type": "bytes4"
561
+ }
562
+ ],
563
+ "stateMutability": "pure",
564
+ "type": "function"
565
+ },
566
+ {
567
+ "inputs": [],
568
+ "name": "getCurrentDay",
569
+ "outputs": [
570
+ {
571
+ "internalType": "uint256",
572
+ "name": "",
573
+ "type": "uint256"
574
+ }
575
+ ],
576
+ "stateMutability": "view",
577
+ "type": "function"
578
+ },
579
+ {
580
+ "inputs": [
581
+ {
582
+ "internalType": "address",
583
+ "name": "_token",
584
+ "type": "address"
585
+ },
586
+ {
587
+ "internalType": "address",
588
+ "name": "_recipient",
589
+ "type": "address"
590
+ },
591
+ {
592
+ "internalType": "uint256",
593
+ "name": "_value",
594
+ "type": "uint256"
595
+ }
596
+ ],
597
+ "name": "handleBridgedTokens",
598
+ "outputs": [],
599
+ "stateMutability": "nonpayable",
600
+ "type": "function"
601
+ },
602
+ {
603
+ "inputs": [
604
+ {
605
+ "internalType": "address",
606
+ "name": "_token",
607
+ "type": "address"
608
+ },
609
+ {
610
+ "internalType": "address",
611
+ "name": "_recipient",
612
+ "type": "address"
613
+ },
614
+ {
615
+ "internalType": "uint256",
616
+ "name": "_value",
617
+ "type": "uint256"
618
+ },
619
+ {
620
+ "internalType": "bytes",
621
+ "name": "_data",
622
+ "type": "bytes"
623
+ }
624
+ ],
625
+ "name": "handleBridgedTokensAndCall",
626
+ "outputs": [],
627
+ "stateMutability": "nonpayable",
628
+ "type": "function"
629
+ },
630
+ {
631
+ "inputs": [
632
+ {
633
+ "internalType": "address",
634
+ "name": "_token",
635
+ "type": "address"
636
+ },
637
+ {
638
+ "internalType": "address",
639
+ "name": "_recipient",
640
+ "type": "address"
641
+ },
642
+ {
643
+ "internalType": "uint256",
644
+ "name": "_value",
645
+ "type": "uint256"
646
+ }
647
+ ],
648
+ "name": "handleNativeTokens",
649
+ "outputs": [],
650
+ "stateMutability": "nonpayable",
651
+ "type": "function"
652
+ },
653
+ {
654
+ "inputs": [
655
+ {
656
+ "internalType": "address",
657
+ "name": "_token",
658
+ "type": "address"
659
+ },
660
+ {
661
+ "internalType": "address",
662
+ "name": "_recipient",
663
+ "type": "address"
664
+ },
665
+ {
666
+ "internalType": "uint256",
667
+ "name": "_value",
668
+ "type": "uint256"
669
+ },
670
+ {
671
+ "internalType": "bytes",
672
+ "name": "_data",
673
+ "type": "bytes"
674
+ }
675
+ ],
676
+ "name": "handleNativeTokensAndCall",
677
+ "outputs": [],
678
+ "stateMutability": "nonpayable",
679
+ "type": "function"
680
+ },
681
+ {
682
+ "inputs": [
683
+ {
684
+ "internalType": "address",
685
+ "name": "_foreignToken",
686
+ "type": "address"
687
+ }
688
+ ],
689
+ "name": "homeTokenAddress",
690
+ "outputs": [
691
+ {
692
+ "internalType": "address",
693
+ "name": "",
694
+ "type": "address"
695
+ }
696
+ ],
697
+ "stateMutability": "view",
698
+ "type": "function"
699
+ },
700
+ {
701
+ "inputs": [
702
+ {
703
+ "internalType": "address",
704
+ "name": "_bridgeContract",
705
+ "type": "address"
706
+ },
707
+ {
708
+ "internalType": "address",
709
+ "name": "_mediatorContract",
710
+ "type": "address"
711
+ },
712
+ {
713
+ "internalType": "uint256[3]",
714
+ "name": "_dailyLimitMaxPerTxMinPerTxArray",
715
+ "type": "uint256[3]"
716
+ },
717
+ {
718
+ "internalType": "uint256[2]",
719
+ "name": "_executionDailyLimitExecutionMaxPerTxArray",
720
+ "type": "uint256[2]"
721
+ },
722
+ {
723
+ "internalType": "address",
724
+ "name": "_gasLimitManager",
725
+ "type": "address"
726
+ },
727
+ {
728
+ "internalType": "address",
729
+ "name": "_owner",
730
+ "type": "address"
731
+ },
732
+ {
733
+ "internalType": "address",
734
+ "name": "_tokenFactory",
735
+ "type": "address"
736
+ },
737
+ {
738
+ "internalType": "address",
739
+ "name": "_feeManager",
740
+ "type": "address"
741
+ },
742
+ {
743
+ "internalType": "address",
744
+ "name": "_forwardingRulesManager",
745
+ "type": "address"
746
+ }
747
+ ],
748
+ "name": "initialize",
749
+ "outputs": [
750
+ {
751
+ "internalType": "bool",
752
+ "name": "",
753
+ "type": "bool"
754
+ }
755
+ ],
756
+ "stateMutability": "nonpayable",
757
+ "type": "function"
758
+ },
759
+ {
760
+ "inputs": [
761
+ {
762
+ "internalType": "address",
763
+ "name": "_token",
764
+ "type": "address"
765
+ }
766
+ ],
767
+ "name": "isBridgedTokenDeployAcknowledged",
768
+ "outputs": [
769
+ {
770
+ "internalType": "bool",
771
+ "name": "",
772
+ "type": "bool"
773
+ }
774
+ ],
775
+ "stateMutability": "view",
776
+ "type": "function"
777
+ },
778
+ {
779
+ "inputs": [],
780
+ "name": "isInitialized",
781
+ "outputs": [
782
+ {
783
+ "internalType": "bool",
784
+ "name": "",
785
+ "type": "bool"
786
+ }
787
+ ],
788
+ "stateMutability": "view",
789
+ "type": "function"
790
+ },
791
+ {
792
+ "inputs": [
793
+ {
794
+ "internalType": "address",
795
+ "name": "_token",
796
+ "type": "address"
797
+ }
798
+ ],
799
+ "name": "isRegisteredAsNativeToken",
800
+ "outputs": [
801
+ {
802
+ "internalType": "bool",
803
+ "name": "",
804
+ "type": "bool"
805
+ }
806
+ ],
807
+ "stateMutability": "view",
808
+ "type": "function"
809
+ },
810
+ {
811
+ "inputs": [
812
+ {
813
+ "internalType": "address",
814
+ "name": "_token",
815
+ "type": "address"
816
+ }
817
+ ],
818
+ "name": "isTokenRegistered",
819
+ "outputs": [
820
+ {
821
+ "internalType": "bool",
822
+ "name": "",
823
+ "type": "bool"
824
+ }
825
+ ],
826
+ "stateMutability": "view",
827
+ "type": "function"
828
+ },
829
+ {
830
+ "inputs": [
831
+ {
832
+ "internalType": "address",
833
+ "name": "_token",
834
+ "type": "address"
835
+ }
836
+ ],
837
+ "name": "maxAvailablePerTx",
838
+ "outputs": [
839
+ {
840
+ "internalType": "uint256",
841
+ "name": "",
842
+ "type": "uint256"
843
+ }
844
+ ],
845
+ "stateMutability": "view",
846
+ "type": "function"
847
+ },
848
+ {
849
+ "inputs": [
850
+ {
851
+ "internalType": "address",
852
+ "name": "_token",
853
+ "type": "address"
854
+ }
855
+ ],
856
+ "name": "maxPerTx",
857
+ "outputs": [
858
+ {
859
+ "internalType": "uint256",
860
+ "name": "",
861
+ "type": "uint256"
862
+ }
863
+ ],
864
+ "stateMutability": "view",
865
+ "type": "function"
866
+ },
867
+ {
868
+ "inputs": [
869
+ {
870
+ "internalType": "address",
871
+ "name": "_token",
872
+ "type": "address"
873
+ }
874
+ ],
875
+ "name": "mediatorBalance",
876
+ "outputs": [
877
+ {
878
+ "internalType": "uint256",
879
+ "name": "",
880
+ "type": "uint256"
881
+ }
882
+ ],
883
+ "stateMutability": "view",
884
+ "type": "function"
885
+ },
886
+ {
887
+ "inputs": [],
888
+ "name": "mediatorContractOnOtherSide",
889
+ "outputs": [
890
+ {
891
+ "internalType": "address",
892
+ "name": "",
893
+ "type": "address"
894
+ }
895
+ ],
896
+ "stateMutability": "view",
897
+ "type": "function"
898
+ },
899
+ {
900
+ "inputs": [
901
+ {
902
+ "internalType": "bytes32",
903
+ "name": "_messageId",
904
+ "type": "bytes32"
905
+ }
906
+ ],
907
+ "name": "messageFixed",
908
+ "outputs": [
909
+ {
910
+ "internalType": "bool",
911
+ "name": "",
912
+ "type": "bool"
913
+ }
914
+ ],
915
+ "stateMutability": "view",
916
+ "type": "function"
917
+ },
918
+ {
919
+ "inputs": [
920
+ {
921
+ "internalType": "address",
922
+ "name": "_tokenFactory",
923
+ "type": "address"
924
+ },
925
+ {
926
+ "internalType": "address",
927
+ "name": "_forwardingRulesManager",
928
+ "type": "address"
929
+ },
930
+ {
931
+ "internalType": "address",
932
+ "name": "_gasLimitManager",
933
+ "type": "address"
934
+ },
935
+ {
936
+ "internalType": "address",
937
+ "name": "_feeManager",
938
+ "type": "address"
939
+ }
940
+ ],
941
+ "name": "migrateTo_3_3_0",
942
+ "outputs": [],
943
+ "stateMutability": "nonpayable",
944
+ "type": "function"
945
+ },
946
+ {
947
+ "inputs": [
948
+ {
949
+ "internalType": "address",
950
+ "name": "_token",
951
+ "type": "address"
952
+ }
953
+ ],
954
+ "name": "minPerTx",
955
+ "outputs": [
956
+ {
957
+ "internalType": "uint256",
958
+ "name": "",
959
+ "type": "uint256"
960
+ }
961
+ ],
962
+ "stateMutability": "view",
963
+ "type": "function"
964
+ },
965
+ {
966
+ "inputs": [
967
+ {
968
+ "internalType": "address",
969
+ "name": "_bridgedToken",
970
+ "type": "address"
971
+ }
972
+ ],
973
+ "name": "nativeTokenAddress",
974
+ "outputs": [
975
+ {
976
+ "internalType": "address",
977
+ "name": "",
978
+ "type": "address"
979
+ }
980
+ ],
981
+ "stateMutability": "view",
982
+ "type": "function"
983
+ },
984
+ {
985
+ "inputs": [
986
+ {
987
+ "internalType": "address",
988
+ "name": "_from",
989
+ "type": "address"
990
+ },
991
+ {
992
+ "internalType": "uint256",
993
+ "name": "_value",
994
+ "type": "uint256"
995
+ },
996
+ {
997
+ "internalType": "bytes",
998
+ "name": "_data",
999
+ "type": "bytes"
1000
+ }
1001
+ ],
1002
+ "name": "onTokenTransfer",
1003
+ "outputs": [
1004
+ {
1005
+ "internalType": "bool",
1006
+ "name": "",
1007
+ "type": "bool"
1008
+ }
1009
+ ],
1010
+ "stateMutability": "nonpayable",
1011
+ "type": "function"
1012
+ },
1013
+ {
1014
+ "inputs": [],
1015
+ "name": "owner",
1016
+ "outputs": [
1017
+ {
1018
+ "internalType": "address",
1019
+ "name": "",
1020
+ "type": "address"
1021
+ }
1022
+ ],
1023
+ "stateMutability": "view",
1024
+ "type": "function"
1025
+ },
1026
+ {
1027
+ "inputs": [
1028
+ {
1029
+ "internalType": "contract IERC677",
1030
+ "name": "token",
1031
+ "type": "address"
1032
+ },
1033
+ {
1034
+ "internalType": "uint256",
1035
+ "name": "_value",
1036
+ "type": "uint256"
1037
+ }
1038
+ ],
1039
+ "name": "relayTokens",
1040
+ "outputs": [],
1041
+ "stateMutability": "nonpayable",
1042
+ "type": "function"
1043
+ },
1044
+ {
1045
+ "inputs": [
1046
+ {
1047
+ "internalType": "contract IERC677",
1048
+ "name": "token",
1049
+ "type": "address"
1050
+ },
1051
+ {
1052
+ "internalType": "address",
1053
+ "name": "_receiver",
1054
+ "type": "address"
1055
+ },
1056
+ {
1057
+ "internalType": "uint256",
1058
+ "name": "_value",
1059
+ "type": "uint256"
1060
+ }
1061
+ ],
1062
+ "name": "relayTokens",
1063
+ "outputs": [],
1064
+ "stateMutability": "nonpayable",
1065
+ "type": "function"
1066
+ },
1067
+ {
1068
+ "inputs": [
1069
+ {
1070
+ "internalType": "contract IERC677",
1071
+ "name": "token",
1072
+ "type": "address"
1073
+ },
1074
+ {
1075
+ "internalType": "address",
1076
+ "name": "_receiver",
1077
+ "type": "address"
1078
+ },
1079
+ {
1080
+ "internalType": "uint256",
1081
+ "name": "_value",
1082
+ "type": "uint256"
1083
+ },
1084
+ {
1085
+ "internalType": "bytes",
1086
+ "name": "_data",
1087
+ "type": "bytes"
1088
+ }
1089
+ ],
1090
+ "name": "relayTokensAndCall",
1091
+ "outputs": [],
1092
+ "stateMutability": "nonpayable",
1093
+ "type": "function"
1094
+ },
1095
+ {
1096
+ "inputs": [
1097
+ {
1098
+ "internalType": "bytes32",
1099
+ "name": "_messageId",
1100
+ "type": "bytes32"
1101
+ }
1102
+ ],
1103
+ "name": "requestFailedMessageFix",
1104
+ "outputs": [],
1105
+ "stateMutability": "nonpayable",
1106
+ "type": "function"
1107
+ },
1108
+ {
1109
+ "inputs": [
1110
+ {
1111
+ "internalType": "address",
1112
+ "name": "_bridgeContract",
1113
+ "type": "address"
1114
+ }
1115
+ ],
1116
+ "name": "setBridgeContract",
1117
+ "outputs": [],
1118
+ "stateMutability": "nonpayable",
1119
+ "type": "function"
1120
+ },
1121
+ {
1122
+ "inputs": [
1123
+ {
1124
+ "internalType": "address",
1125
+ "name": "_nativeToken",
1126
+ "type": "address"
1127
+ },
1128
+ {
1129
+ "internalType": "address",
1130
+ "name": "_bridgedToken",
1131
+ "type": "address"
1132
+ }
1133
+ ],
1134
+ "name": "setCustomTokenAddressPair",
1135
+ "outputs": [],
1136
+ "stateMutability": "nonpayable",
1137
+ "type": "function"
1138
+ },
1139
+ {
1140
+ "inputs": [
1141
+ {
1142
+ "internalType": "address",
1143
+ "name": "_token",
1144
+ "type": "address"
1145
+ },
1146
+ {
1147
+ "internalType": "uint256",
1148
+ "name": "_dailyLimit",
1149
+ "type": "uint256"
1150
+ }
1151
+ ],
1152
+ "name": "setDailyLimit",
1153
+ "outputs": [],
1154
+ "stateMutability": "nonpayable",
1155
+ "type": "function"
1156
+ },
1157
+ {
1158
+ "inputs": [
1159
+ {
1160
+ "internalType": "address",
1161
+ "name": "_token",
1162
+ "type": "address"
1163
+ },
1164
+ {
1165
+ "internalType": "uint256",
1166
+ "name": "_dailyLimit",
1167
+ "type": "uint256"
1168
+ }
1169
+ ],
1170
+ "name": "setExecutionDailyLimit",
1171
+ "outputs": [],
1172
+ "stateMutability": "nonpayable",
1173
+ "type": "function"
1174
+ },
1175
+ {
1176
+ "inputs": [
1177
+ {
1178
+ "internalType": "address",
1179
+ "name": "_token",
1180
+ "type": "address"
1181
+ },
1182
+ {
1183
+ "internalType": "uint256",
1184
+ "name": "_maxPerTx",
1185
+ "type": "uint256"
1186
+ }
1187
+ ],
1188
+ "name": "setExecutionMaxPerTx",
1189
+ "outputs": [],
1190
+ "stateMutability": "nonpayable",
1191
+ "type": "function"
1192
+ },
1193
+ {
1194
+ "inputs": [
1195
+ {
1196
+ "internalType": "address",
1197
+ "name": "_feeManager",
1198
+ "type": "address"
1199
+ }
1200
+ ],
1201
+ "name": "setFeeManager",
1202
+ "outputs": [],
1203
+ "stateMutability": "nonpayable",
1204
+ "type": "function"
1205
+ },
1206
+ {
1207
+ "inputs": [
1208
+ {
1209
+ "internalType": "address",
1210
+ "name": "_manager",
1211
+ "type": "address"
1212
+ }
1213
+ ],
1214
+ "name": "setForwardingRulesManager",
1215
+ "outputs": [],
1216
+ "stateMutability": "nonpayable",
1217
+ "type": "function"
1218
+ },
1219
+ {
1220
+ "inputs": [
1221
+ {
1222
+ "internalType": "address",
1223
+ "name": "_manager",
1224
+ "type": "address"
1225
+ }
1226
+ ],
1227
+ "name": "setGasLimitManager",
1228
+ "outputs": [],
1229
+ "stateMutability": "nonpayable",
1230
+ "type": "function"
1231
+ },
1232
+ {
1233
+ "inputs": [
1234
+ {
1235
+ "internalType": "address",
1236
+ "name": "_token",
1237
+ "type": "address"
1238
+ },
1239
+ {
1240
+ "internalType": "uint256",
1241
+ "name": "_maxPerTx",
1242
+ "type": "uint256"
1243
+ }
1244
+ ],
1245
+ "name": "setMaxPerTx",
1246
+ "outputs": [],
1247
+ "stateMutability": "nonpayable",
1248
+ "type": "function"
1249
+ },
1250
+ {
1251
+ "inputs": [
1252
+ {
1253
+ "internalType": "address",
1254
+ "name": "_mediatorContract",
1255
+ "type": "address"
1256
+ }
1257
+ ],
1258
+ "name": "setMediatorContractOnOtherSide",
1259
+ "outputs": [],
1260
+ "stateMutability": "nonpayable",
1261
+ "type": "function"
1262
+ },
1263
+ {
1264
+ "inputs": [
1265
+ {
1266
+ "internalType": "address",
1267
+ "name": "_token",
1268
+ "type": "address"
1269
+ },
1270
+ {
1271
+ "internalType": "uint256",
1272
+ "name": "_minPerTx",
1273
+ "type": "uint256"
1274
+ }
1275
+ ],
1276
+ "name": "setMinPerTx",
1277
+ "outputs": [],
1278
+ "stateMutability": "nonpayable",
1279
+ "type": "function"
1280
+ },
1281
+ {
1282
+ "inputs": [
1283
+ {
1284
+ "internalType": "address",
1285
+ "name": "_tokenFactory",
1286
+ "type": "address"
1287
+ }
1288
+ ],
1289
+ "name": "setTokenFactory",
1290
+ "outputs": [],
1291
+ "stateMutability": "nonpayable",
1292
+ "type": "function"
1293
+ },
1294
+ {
1295
+ "inputs": [],
1296
+ "name": "tokenFactory",
1297
+ "outputs": [
1298
+ {
1299
+ "internalType": "contract TokenFactory",
1300
+ "name": "",
1301
+ "type": "address"
1302
+ }
1303
+ ],
1304
+ "stateMutability": "view",
1305
+ "type": "function"
1306
+ },
1307
+ {
1308
+ "inputs": [
1309
+ {
1310
+ "internalType": "address",
1311
+ "name": "_token",
1312
+ "type": "address"
1313
+ },
1314
+ {
1315
+ "internalType": "uint256",
1316
+ "name": "_day",
1317
+ "type": "uint256"
1318
+ }
1319
+ ],
1320
+ "name": "totalExecutedPerDay",
1321
+ "outputs": [
1322
+ {
1323
+ "internalType": "uint256",
1324
+ "name": "",
1325
+ "type": "uint256"
1326
+ }
1327
+ ],
1328
+ "stateMutability": "view",
1329
+ "type": "function"
1330
+ },
1331
+ {
1332
+ "inputs": [
1333
+ {
1334
+ "internalType": "address",
1335
+ "name": "_token",
1336
+ "type": "address"
1337
+ },
1338
+ {
1339
+ "internalType": "uint256",
1340
+ "name": "_day",
1341
+ "type": "uint256"
1342
+ }
1343
+ ],
1344
+ "name": "totalSpentPerDay",
1345
+ "outputs": [
1346
+ {
1347
+ "internalType": "uint256",
1348
+ "name": "",
1349
+ "type": "uint256"
1350
+ }
1351
+ ],
1352
+ "stateMutability": "view",
1353
+ "type": "function"
1354
+ },
1355
+ {
1356
+ "inputs": [
1357
+ {
1358
+ "internalType": "address",
1359
+ "name": "newOwner",
1360
+ "type": "address"
1361
+ }
1362
+ ],
1363
+ "name": "transferOwnership",
1364
+ "outputs": [],
1365
+ "stateMutability": "nonpayable",
1366
+ "type": "function"
1367
+ },
1368
+ {
1369
+ "inputs": [
1370
+ {
1371
+ "internalType": "address",
1372
+ "name": "_token",
1373
+ "type": "address"
1374
+ },
1375
+ {
1376
+ "internalType": "uint256",
1377
+ "name": "_amount",
1378
+ "type": "uint256"
1379
+ }
1380
+ ],
1381
+ "name": "withinExecutionLimit",
1382
+ "outputs": [
1383
+ {
1384
+ "internalType": "bool",
1385
+ "name": "",
1386
+ "type": "bool"
1387
+ }
1388
+ ],
1389
+ "stateMutability": "view",
1390
+ "type": "function"
1391
+ },
1392
+ {
1393
+ "inputs": [
1394
+ {
1395
+ "internalType": "address",
1396
+ "name": "_token",
1397
+ "type": "address"
1398
+ },
1399
+ {
1400
+ "internalType": "uint256",
1401
+ "name": "_amount",
1402
+ "type": "uint256"
1403
+ }
1404
+ ],
1405
+ "name": "withinLimit",
1406
+ "outputs": [
1407
+ {
1408
+ "internalType": "bool",
1409
+ "name": "",
1410
+ "type": "bool"
1411
+ }
1412
+ ],
1413
+ "stateMutability": "view",
1414
+ "type": "function"
1415
+ }
1416
+ ],
1417
+ "bytecode": "",
1418
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103a45760003560e01c80636e5d6bea116101e9578063c2173d431161010f578063d7405481116100ad578063ec47de2a1161007c578063ec47de2a14611047578063f2c54fe814611073578063f2fde38b1461109f578063f3f51415146110c5576103a4565b8063d740548114610f29578063db6fff8c14610fed578063dfbe4ae014611019578063e77772fe1461103f576103a4565b8063cd596583116100e9578063cd59658314610daf578063d0342acd14610db7578063d0fb020314610de5578063d522cfd714610ded576103a4565b8063c2173d4314610cbd578063c534576114610ce3578063c722b1be14610da7576103a4565b80639a4a439511610187578063a4c0ed3611610156578063a4c0ed3614610b7c578063ab3a25d914610c35578063ad58bdd114610c61578063ae813e9f14610c97576103a4565b80639a4a439514610afd5780639cb7595a14610b1a5780639d4051ae14610b4e578063a4b1c24314610b56576103a4565b8063867f7a4d116101c3578063867f7a4d14610a03578063871c076014610ac75780638da5cb5b14610acf57806390ad84a814610ad7576103a4565b80636e5d6bea1461098b5780637610722f146109b15780637837cf91146109d7576103a4565b80632d70061f116102ce578063437764df1161026c578063613fa2f21161023b578063613fa2f2146108d957806361c04f84146108ff57806364696f971461092557806369ffa08a1461095d576103a4565b8063437764df1461084b578063472d35b91461087057806347ac7d6a1461089657806359339982146108bc576103a4565b80633a50bc87116102a85780633a50bc871461078a5780633da98c8b146107b65780633e6968b61461081d57806340f8dd8614610825576103a4565b80632d70061f1461071a5780632f73a9f81461075c578063392e53cd14610782576103a4565b8063125e4cfb1161034657806326aa101f1161031557806326aa101f146105ac578063272255bb146105d25780632803212f146106085780632ae87cdd14610634576103a4565b8063125e4cfb146104ec57806316ef191314610522578063194153d3146105485780631ba9212d1461056e576103a4565b80630950d515116103825780630950d5151461043b5780630b26cf66146104585780630b71a4a71461047e57806310775238146104ac576103a4565b806301e4f53a146103a957806301fcc1d3146103d7578063032f693f14610403575b600080fd5b6103d5600480360360408110156103bf57600080fd5b506001600160a01b0381351690602001356110eb565b005b6103d5600480360360408110156103ed57600080fd5b506001600160a01b03813516906020013561112a565b6104296004803603602081101561041957600080fd5b50356001600160a01b03166111c9565b60408051918252519081900360200190f35b6103d56004803603602081101561045157600080fd5b5035611221565b6103d56004803603602081101561046e57600080fd5b50356001600160a01b03166112ca565b6103d56004803603604081101561049457600080fd5b506001600160a01b03813581169160200135166112de565b6104d8600480360360408110156104c257600080fd5b506001600160a01b0381351690602001356113b3565b604080519115158252519081900360200190f35b6103d56004803603606081101561050257600080fd5b506001600160a01b03813581169160208101359091169060400135611426565b6104296004803603602081101561053857600080fd5b50356001600160a01b0316611460565b6104296004803603602081101561055e57600080fd5b50356001600160a01b03166114bd565b6103d56004803603608081101561058457600080fd5b506001600160a01b038135811691602081013582169160408201358116916060013516611518565b6104d8600480360360208110156105c257600080fd5b50356001600160a01b031661164b565b6103d5600480360360608110156105e857600080fd5b506001600160a01b0381358116916020810135909116906040013561165e565b6103d56004803603604081101561061e57600080fd5b506001600160a01b038135169060200135611681565b6103d5600480360360c081101561064a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561067457600080fd5b82018360208201111561068657600080fd5b803590602001918460018302840111600160201b831117156106a757600080fd5b919390929091602081019035600160201b8111156106c457600080fd5b8201836020820111156106d657600080fd5b803590602001918460018302840111600160201b831117156106f757600080fd5b919350915060ff813516906001600160a01b036020820135169060400135611750565b6107406004803603602081101561073057600080fd5b50356001600160a01b0316611782565b604080516001600160a01b039092168252519081900360200190f35b6103d56004803603602081101561077257600080fd5b50356001600160a01b03166117e8565b6104d86117f9565b6104d8600480360360408110156107a057600080fd5b506001600160a01b03813516906020013561184a565b6104d860048036036101808110156107cd57600080fd5b506001600160a01b0381358116916020810135821691604082019160a081019160e082013581169161010081013582169161012082013581169161014081013582169161016090910135166118a0565b610429611a88565b6104296004803603602081101561083b57600080fd5b50356001600160a01b0316611a91565b610853611af0565b604080516001600160e01b03199092168252519081900360200190f35b6103d56004803603602081101561088657600080fd5b50356001600160a01b0316611afb565b610740600480360360208110156108ac57600080fd5b50356001600160a01b0316611b0c565b6104d8600480360360208110156108d257600080fd5b5035611b17565b6103d5600480360360208110156108ef57600080fd5b50356001600160a01b0316611b6a565b6107406004803603602081101561091557600080fd5b50356001600160a01b0316611b7b565b6103d56004803603606081101561093b57600080fd5b506001600160a01b038135811691602081013582169160409091013516611be4565b6103d56004803603604081101561097357600080fd5b506001600160a01b0381358116916020013516611c69565b6103d5600480360360208110156109a157600080fd5b50356001600160a01b0316611ca0565b610429600480360360208110156109c757600080fd5b50356001600160a01b0316611cb1565b6103d5600480360360408110156109ed57600080fd5b506001600160a01b038135169060200135611d0b565b6103d560048036036080811015610a1957600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610a5357600080fd5b820183602082011115610a6557600080fd5b803590602001918460018302840111600160201b83111715610a8657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611de3945050505050565b610740611e0d565b610740611e64565b6103d560048036036020811015610aed57600080fd5b50356001600160a01b0316611ebb565b6103d560048036036020811015610b1357600080fd5b5035611ecc565b610b226120c1565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b6107406120cb565b61042960048036036020811015610b6c57600080fd5b50356001600160a01b0316612122565b6104d860048036036060811015610b9257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610bc157600080fd5b820183602082011115610bd357600080fd5b803590602001918460018302840111600160201b83111715610bf457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121a7945050505050565b61042960048036036040811015610c4b57600080fd5b506001600160a01b03813516906020013561220e565b6103d560048036036060811015610c7757600080fd5b506001600160a01b03813581169160208101359091169060400135612274565b6104d860048036036020811015610cad57600080fd5b50356001600160a01b0316612282565b6104d860048036036020811015610cd357600080fd5b50356001600160a01b03166122db565b6103d560048036036080811015610cf957600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610d3357600080fd5b820183602082011115610d4557600080fd5b803590602001918460018302840111600160201b83111715610d6657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612308945050505050565b610740612348565b61074061239f565b6103d560048036036040811015610dcd57600080fd5b506001600160a01b03813581169160200135166123f6565b6107406124b5565b6103d5600480360360e0811015610e0357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610e2d57600080fd5b820183602082011115610e3f57600080fd5b803590602001918460018302840111600160201b83111715610e6057600080fd5b919390929091602081019035600160201b811115610e7d57600080fd5b820183602082011115610e8f57600080fd5b803590602001918460018302840111600160201b83111715610eb057600080fd5b9193909260ff833516926001600160a01b03602082013516926040820135929091608081019060600135600160201b811115610eeb57600080fd5b820183602082011115610efd57600080fd5b803590602001918460018302840111600160201b83111715610f1e57600080fd5b50909250905061250c565b6103d560048036036080811015610f3f57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610f7957600080fd5b820183602082011115610f8b57600080fd5b803590602001918460018302840111600160201b83111715610fac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612582945050505050565b6103d56004803603604081101561100357600080fd5b506001600160a01b03813516906020013561258e565b6107406004803603602081101561102f57600080fd5b50356001600160a01b031661262b565b610740612636565b6103d56004803603604081101561105d57600080fd5b506001600160a01b03813516906020013561268d565b6104296004803603604081101561108957600080fd5b506001600160a01b03813516906020013561272e565b6103d5600480360360208110156110b557600080fd5b50356001600160a01b0316612797565b610429600480360360208110156110db57600080fd5b50356001600160a01b03166127a8565b6111268233836000805b506040519080825280601f01601f191660200182016040528015611120576020820181803683370190505b506127fe565b5050565b61113261295f565b61113b8261164b565b61114457600080fd5b8015806111635750600081118015611163575061116082611a91565b81105b61116c57600080fd5b60408051700caf0cac6eae8d2dedc9ac2f0a0cae4a8f607b1b60208083019190915260609490941b6001600160601b0319166031820152815180820360250181526045909101825280519084012060009081529283905290912055565b60408051670dac2f0a0cae4a8f60c31b6020808301919091526001600160601b0319606085901b1660288301528251601c818403018152603c909201835281519181019190912060009081529081905220545b919050565b611229612986565b61123281611b17565b1561123c57600080fd5b600061124782612a30565b9050600061125483612a89565b9050600061126184612ae6565b905061126c84612b35565b611277838383612b8e565b604080516001600160a01b03808616825284166020820152808201839052905185917f07b5483b8e4bd8ea240a474d5117738350e7d431e3668c48a97910b0b397796a919081900360600190a250505050565b6112d261295f565b6112db81612baf565b50565b6112e661295f565b6112ef8161164b565b156112f957600080fd5b600061130482611b7b565b6001600160a01b03161461131757600080fd5b600061132283611782565b6001600160a01b03161461133557600080fd5b61134a6001600160a01b038216306001612c2b565b806001600160a01b03166342966c6860016040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561139157600080fd5b505af11580156113a5573d6000803e3d6000fd5b505050506111268282612cb7565b6000806113d1836113cb866113c6611a88565b61220e565b90612db2565b905060006113df60006127a8565b1180156113f45750806113f1856127a8565b10155b80156114085750611404846111c9565b8311155b801561141c575061141884612122565b8310155b9150505b92915050565b61142e612986565b600061143984611782565b90506114448161164b565b61144d57600080fd5b61145a8160008585612e13565b50505050565b60408051700caf0cac6eae8d2dedc9ac2f0a0cae4a8f607b1b60208083019190915260609390931b6001600160601b0319166031820152815180820360250181526045909101825280519083012060009081529182905290205490565b604080516e6d65646961746f7242616c616e636560881b60208083019190915260609390931b6001600160601b031916602f820152815180820360230181526043909101825280519083012060009081529182905290205490565b7f1ba9212d27ad775f3f89cdd276d3829dd95d169a049be071de905db3bbca633e600081905260046020527f39ed9a5a925de329b4b8d3797a51d757351f7bb58fe4f46a37c1af393b814a685460ff161561157257600080fd5b33301461157e57600080fd5b61158785612f3d565b61159084612fb9565b61159983613046565b6115a2826130d3565b604080516919185a5b1e531a5b5a5d60b21b6020808301919091526000602a83018190528351601e818503018152603e84018086528151918401919091208252918190528381206ec097ce7bc90715b34b9f10000000009081905590915291517fca0b3dabefdbd8c72c0a9cf4a6e9d107da897abf036ef3f3f3b010cdd259415991819003605e0190a26000908152600460205260409020805460ff1916600117905550505050565b60008061165783612122565b1192915050565b611666612986565b61166f83613160565b61167c8360018484612e13565b505050565b61168961295f565b6116928261164b565b61169b57600080fd5b6116a4826111c9565b8111806116af575080155b6116b857600080fd5b604080516919185a5b1e531a5b5a5d60b21b6020808301919091526001600160601b0319606086901b16602a8301528251601e818403018152603e83018085528151918301919091206000908152918290529083902084905583905290516001600160a01b038416917fca0b3dabefdbd8c72c0a9cf4a6e9d107da897abf036ef3f3f3b010cdd25941599190819003605e0190a25050565b611758612986565b600061176889898989898961321c565b90506117778160008585612e13565b505050505050505050565b604080516f686f6d65546f6b656e4164647265737360801b60208083019190915260609390931b6001600160601b03191660308201528151808203602401815260449091018252805190830120600090815260029092529020546001600160a01b031690565b6117f061295f565b6112db81612f3d565b7f0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba60005260046020527f078d888f9b66f3f8bfa10909e31f1e16240db73449f0500afdbbe3a70da457cc5460ff1690565b600080611862836113cb8661185d611a88565b61272e565b905060006118706000611a91565b11801561188557508061188285611a91565b10155b801561141c575061189584611460565b909211159392505050565b60408051600481526024810182526020810180516001600160e01b03166337ef410160e11b1781529151815160009384936060933093919290918291908083835b602083106119005780518252601f1990920191602091820191016118e1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611960576040519150601f19603f3d011682016040523d82523d6000602084013e611965565b606091505b50915091508115806119a15750805160201480156119a1575080806020019051602081101561199357600080fd5b50516001600160a01b031633145b806119ab57503330145b6119b457600080fd5b6119bc6117f9565b156119c657600080fd5b6119cf8c612baf565b6119d88b61356a565b611a0c60008b60038060200260405190810160405280929190826003602002808284376000920191909152506135d4915050565b604080518082018252611a3b91600091908c906002908390839080828437600092019190915250613728915050565b611a4488613046565b611a4d87613817565b611a5686612f3d565b611a5f856130d3565b611a6884612fb9565b611a706138df565b611a786117f9565b9c9b505050505050505050505050565b62015180420490565b6040805172195e1958dd5d1a5bdb91185a5b1e531a5b5a5d606a1b60208083019190915260609390931b6001600160601b0319166033820152815180820360270181526047909101825280519083012060009081529182905290205490565b6358a8b61360e11b90565b611b0361295f565b6112db816130d3565b600061142082611b7b565b604080516b1b595cdcd859d9519a5e195960a21b602080830191909152602c80830185905283518084039091018152604c909201835281519181019190912060009081526004909152205460ff16919050565b611b7261295f565b6112db81613046565b6040805172666f726569676e546f6b656e4164647265737360681b60208083019190915260609390931b6001600160601b03191660338201528151808203602701815260479091018252805190830120600090815260029092529020546001600160a01b031690565b611bec613936565b826001600160a01b03166369ffa08a83836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b158015611c4c57600080fd5b505af1158015611c60573d6000803e3d6000fd5b50505050505050565b611c71613936565b6001600160a01b0382161580611c8d5750611c8b8261164b565b155b611c9657600080fd5b61112682826139af565b611ca861295f565b6112db8161356a565b600080611cbd836111c9565b90506000611cca846127a8565b90506000611cda856113c6611a88565b90506000818311611cec576000611cf0565b8183035b9050808410611cff5780611d01565b835b9695505050505050565b611d1361295f565b611d1c8261164b565b611d2557600080fd5b611d2e82611460565b811180611d39575080155b611d4257600080fd5b6040805172195e1958dd5d1a5bdb91185a5b1e531a5b5a5d606a1b6020808301919091526001600160601b0319606086901b16603383015282516027818403018152604783018085528151918301919091206000908152918290529083902084905583905290516001600160a01b038416917f4c177b42dbe934b3abbc0208c11a42e46589983431616f1710ab19969c5ed62e919081900360670190a25050565b611deb612986565b611df484613160565b611e018460018585612e13565b61145a838584846139e9565b7f98aa806e31e94a687a31c65769cb99670064dd7f5a87526da075c5fb4eab988060005260026020527f0c1206883be66049a02d4937078367c00b3d71dd1a9465df969363c6ddeac96d546001600160a01b031690565b7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060005260026020527fb7802e97e87ef2842a6cce7da7ffaeaedaa2f61a6a7870b23d9d01fc9b73712e546001600160a01b031690565b611ec361295f565b6112db81612fb9565b6000611ed661239f565b9050806001600160a01b031663cb08a10c836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611f1c57600080fd5b505afa158015611f30573d6000803e3d6000fd5b505050506040513d6020811015611f4657600080fd5b505115611f5257600080fd5b306001600160a01b0316816001600160a01b0316633f9a8e7e846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611fa057600080fd5b505afa158015611fb4573d6000803e3d6000fd5b505050506040513d6020811015611fca57600080fd5b50516001600160a01b031614611fdf57600080fd5b611fe7611e0d565b6001600160a01b0316816001600160a01b0316634a610b04846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561203457600080fd5b505afa158015612048573d6000803e3d6000fd5b505050506040513d602081101561205e57600080fd5b50516001600160a01b03161461207357600080fd5b6040805160248082018590528251808303909101815260449091019091526020810180516001600160e01b0316630950d51560e01b908117909152906120ba816001613b56565b5050505050565b6003806001909192565b7f5f5bc4e0b888be22a35f2166061a04607296c26861006b9b8e089a172696a82260005260026020527f60072fd9ffad01d76b1d1421ce17a3613dc06795e4b113745995ad1d84a52121546001600160a01b031690565b60408051670dad2dca0cae4a8f60c31b6020808301919091526001600160601b0319606085901b1660288301528251601c818403018152603c9092018352815191810191909120600090815290819052908120546001600160a01b03831661218b57905061121c565b6000811161219a57600061219d565b60015b60ff169392505050565b60006121b1613d6a565b61220457604080516000815260208101909152825185906014116121f4576121d884613d8f565b90506014845111156121f4578351601319016014850190815291505b6122013387838886613d96565b50505b5060019392505050565b604080516f746f74616c5370656e7450657244617960801b60208083019190915260609490941b6001600160601b031916603082015260448082019390935281518082039093018352606401815281519183019190912060009081529182905290205490565b61167c8383836000806110f5565b604080516861636b4465706c6f7960b81b60208083019190915260609390931b6001600160601b03191660298201528151808203601d018152603d90910182528051908301206000908152600490925290205460ff1690565b60006122e68261164b565b8015611420575060006122f883611b7b565b6001600160a01b03161492915050565b612310612986565b600061231b85611782565b90506123268161164b565b61232f57600080fd5b61233c8160008686612e13565b6120ba848285856139e9565b7f5f86f226cd489cc09187d5f5e0adfb94308af0d4ceac482dd8a8adea9d80daf460005260026020527fab9e97adef29adb9492a44df89badb4a706f8f35202918df21ca61ed056c4868546001600160a01b031690565b7f811bbb11e8899da471f0e69a3ed55090fc90215227fc5fb1cb0d6e962ea7b74f60005260026020527fb4ed64697d3ef8518241966f7c6f28b0d72f20f51198717d198d2d55076c593d546001600160a01b031690565b6123fe613936565b806001600160a01b03811661241257600080fd5b61241b836122db565b61242457600080fd5b600061242f84613ef6565b90506000811161243e57600080fd5b600061244985611cb1565b90506000811161245857600080fd5b80821115612464578091505b61247685612470611a88565b84613f4a565b6040805160008082526020820190925260609161249891889088908790613fc8565b905060006124a7826001613b56565b9050611c6081888887614643565b7f779a349c5bee7817f04c960f525ee3e2f2516078c38c68a3149787976ee837e560005260026020527fc155b21a14c4592b97825e495fbe0d2705fb46420018cac5bfa7a09c43fae517546001600160a01b031690565b612514612986565b60006125248b8b8b8b8b8b61321c565b90506125338160008787612e13565b61257585828686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139e992505050565b5050505050505050505050565b61145a848484846127fe565b61259661295f565b61259f8261164b565b6125a857600080fd5b8015806125ce57506125b982612122565b811180156125ce57506125cb826127a8565b81105b6125d757600080fd5b60408051670dac2f0a0cae4a8f60c31b60208083019190915260609490941b6001600160601b03191660288201528151808203601c018152603c909101825280519084012060009081529283905290912055565b600061142082611782565b7f269c5905f777ee6391c7a361d17039a7d62f52ba9fffeb98c5ade342705731a360005260026020527f15c764a0cd4bb3d72a49abedd3d6793c3b93c0d57f43174a348b443be86f79c1546001600160a01b031690565b61269561295f565b61269e8261164b565b6126a757600080fd5b6000811180156126be57506126bb826127a8565b81105b80156126d157506126ce826111c9565b81105b6126da57600080fd5b60408051670dad2dca0cae4a8f60c31b60208083019190915260609490941b6001600160601b03191660288201528151808203601c018152603c909101825280519084012060009081529283905290912055565b6040805172746f74616c457865637574656450657244617960681b60208083019190915260609490941b6001600160601b031916603382015260478082019390935281518082039093018352606701815281519183019190912060009081529182905290205490565b61279f61295f565b6112db81613817565b604080516919185a5b1e531a5b5a5d60b21b60208083019190915260609390931b6001600160601b031916602a8201528151808203601e018152603e909101825280519083012060009081529182905290205490565b612806613d6a565b1561281057600080fd5b6000846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561285f57600080fd5b505afa158015612873573d6000803e3d6000fd5b505050506040513d602081101561288957600080fd5b5051905061289760016146b3565b6128ac6001600160a01b0386163330866146d7565b6128b660006146b3565b600061293b82876001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561290957600080fd5b505afa15801561291d573d6000803e3d6000fd5b505050506040513d602081101561293357600080fd5b505190614731565b90508381111561294a57600080fd5b6129578633878487613d96565b505050505050565b612967611e64565b6001600160a01b0316336001600160a01b03161461298457600080fd5b565b600061299061239f565b9050336001600160a01b038216146129a757600080fd5b6129af611e0d565b6001600160a01b0316816001600160a01b031663d67bdd256040518163ffffffff1660e01b815260040160206040518083038186803b1580156129f157600080fd5b505afa158015612a05573d6000803e3d6000fd5b505050506040513d6020811015612a1b57600080fd5b50516001600160a01b0316146112db57600080fd5b604080516b36b2b9b9b0b3b2aa37b5b2b760a11b602080830191909152602c80830185905283518084039091018152604c90920183528151918101919091206000908152600290915220546001600160a01b0316919050565b604080516f1b595cdcd859d9549958da5c1a595b9d60821b602080830191909152603080830185905283518084039091018152605090920183528151918101919091206000908152600290915220546001600160a01b0316919050565b604080516b6d65737361676556616c756560a01b602080830191909152602c80830185905283518084039091018152604c90920183528151918101919091206000908152908190522054919050565b604080516b1b595cdcd859d9519a5e195960a21b602080830191909152602c8083019490945282518083039094018452604c9091018252825192810192909220600090815260049092529020805460ff19166001179055565b61167c6000612b9c85611b7b565b6001600160a01b03161484848485614773565b612bb8816147c7565b612bc157600080fd5b7f811bbb11e8899da471f0e69a3ed55090fc90215227fc5fb1cb0d6e962ea7b74f60005260026020527fb4ed64697d3ef8518241966f7c6f28b0d72f20f51198717d198d2d55076c593d80546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b03166340c10f1983836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612c8257600080fd5b505af1158015612c96573d6000803e3d6000fd5b505050506040513d6020811015612cac57600080fd5b505161167c57600080fd5b604080516f686f6d65546f6b656e4164647265737360801b6020808301919091526001600160601b0319606086811b82166030850152845160248186030181526044850186528051908401206000908152600280855286822080546001600160a01b03808b166001600160a01b0319928316811790935572666f726569676e546f6b656e4164647265737360681b60648a0152948a901b90951660778801528751606b818903018152608b909701808952875197870197909720835294529485208054909216908716908117909155909290917f78d063210f4fb6b4cc932390bb8045fa2465e51349590182dab8b9e84c57a6ee9190a35050565b600082820183811015612e0c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b612e1b613d6a565b15612e2557600080fd5b612e2f848261184a565b612e3857600080fd5b612e4a84612e44611a88565b83614803565b806000612e7a7f03be2b2875cb41e0e77355e802a16769bb8dfcf825061cde185c73bf94f1262586838986614884565b90506000612e86614c2f565b90508115612edb5760408051838152905182916001600160a01b038a16917fd560a522f77cfb4924d6fe51be1615e540a48a8931c48fe0349c7f47ebabe7479181900360200190a3612ed88383614731565b92505b612ee88688878688614773565b80856001600160a01b0316886001600160a01b03167f9afd47907e25028cdaca89d193518c302bbb128617d5a992c5abd45815526593866040518082815260200191505060405180910390a450505050505050565b612f46816147c7565b612f4f57600080fd5b7f269c5905f777ee6391c7a361d17039a7d62f52ba9fffeb98c5ade342705731a360005260026020527f15c764a0cd4bb3d72a49abedd3d6793c3b93c0d57f43174a348b443be86f79c180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381161580612fd35750612fd3816147c7565b612fdc57600080fd5b7f5f86f226cd489cc09187d5f5e0adfb94308af0d4ceac482dd8a8adea9d80daf460005260026020527fab9e97adef29adb9492a44df89badb4a706f8f35202918df21ca61ed056c486880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811615806130605750613060816147c7565b61306957600080fd5b7f5f5bc4e0b888be22a35f2166061a04607296c26861006b9b8e089a172696a82260005260026020527f60072fd9ffad01d76b1d1421ce17a3613dc06795e4b113745995ad1d84a5212180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811615806130ed57506130ed816147c7565b6130f657600080fd5b7f779a349c5bee7817f04c960f525ee3e2f2516078c38c68a3149787976ee837e560005260026020527fc155b21a14c4592b97825e495fbe0d2705fb46420018cac5bfa7a09c43fae51780546001600160a01b0319166001600160a01b0392909216919091179055565b604080516861636b4465706c6f7960b81b6020808301919091526001600160601b0319606085901b1660298301528251601d818403018152603d909201835281519181019190912060009081526004909152205460ff166112db57604080516861636b4465706c6f7960b81b6020808301919091526001600160601b0319606085901b1660298301528251601d818403018152603d90920183528151918101919091206000908152600490915220805460ff1916600117905550565b60008061322888611782565b90506001600160a01b0381166134cf57606087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152939450606093925089915088908190840183828082843760009201919091525050845192935050501515806132bd575060008151115b6132c657600080fd5b81516132d4578091506132dd565b80516132dd5750805b6132e682614ca2565b91506132f0612636565b6001600160a01b031663a39d6acf83838861330961239f565b6001600160a01b0316631544298e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561334157600080fd5b505afa158015613355573d6000803e3d6000fd5b505050506040513d602081101561336b57600080fd5b50516040516001600160e01b031960e087901b16815260ff831660448201526064810182905260806004820190815285516084830152855190918291602482019160a40190602089019080838360005b838110156133d35781810151838201526020016133bb565b50505050905090810190601f1680156134005780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561343357818101518382015260200161341b565b50505050905090810190601f1680156134605780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561348357600080fd5b505af1158015613497573d6000803e3d6000fd5b505050506040513d60208110156134ad57600080fd5b505192506134bb8a84612cb7565b6134c8838660ff16614d57565b505061355f565b6134d88161164b565b61355f578260ff16816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561351957600080fd5b505afa15801561352d573d6000803e3d6000fd5b505050506040513d602081101561354357600080fd5b505160ff161461355257600080fd5b61355f818460ff16614d57565b979650505050505050565b7f98aa806e31e94a687a31c65769cb99670064dd7f5a87526da075c5fb4eab988060005260026020527f0c1206883be66049a02d4937078367c00b3d71dd1a9465df969363c6ddeac96d80546001600160a01b0319166001600160a01b0392909216919091179055565b6040810151158015906135ee575060408101516020820151115b80156135fe575060208101518151115b61360757600080fd5b8051604080516919185a5b1e531a5b5a5d60b21b602082810191909152606086901b6001600160601b031916602a83018190528351808403601e018152603e8401855280519083012060009081528083528481209590955581860151670dac2f0a0cae4a8f60c31b605e850152606684018290528451605a818603018152607a8501865280519084012086528583528486205583860151670dad2dca0cae4a8f60c31b609a85015260a28401919091528351609681850301815260b690930184528251928201929092208452839052908220556001600160a01b038316907fca0b3dabefdbd8c72c0a9cf4a6e9d107da897abf036ef3f3f3b010cdd25941599083905b60200201516040518082815260200191505060405180910390a25050565b805160208201511061373957600080fd5b80516040805172195e1958dd5d1a5bdb91185a5b1e531a5b5a5d606a1b602082810191909152606086901b6001600160601b031916603383018190528351808403602701815260478401855280519083012060009081528083528481209590955581860151700caf0cac6eae8d2dedc9ac2f0a0cae4a8f607b1b606785015260788401919091528351606c818503018152608c90930184528251928201929092208452839052908220556001600160a01b038316907f4c177b42dbe934b3abbc0208c11a42e46589983431616f1710ab19969c5ed62e90839061370a565b6001600160a01b03811661382a57600080fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0613853611e64565b604080516001600160a01b03928316815291841660208301528051918290030190a17f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060005260026020527fb7802e97e87ef2842a6cce7da7ffaeaedaa2f61a6a7870b23d9d01fc9b73712e80546001600160a01b0319166001600160a01b0392909216919091179055565b7f0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba60005260046020527f078d888f9b66f3f8bfa10909e31f1e16240db73449f0500afdbbe3a70da457cc805460ff19166001179055565b306001600160a01b0316636fde82026040518163ffffffff1660e01b815260040160206040518083038186803b15801561396f57600080fd5b505afa158015613983573d6000803e3d6000fd5b505050506040513d602081101561399957600080fd5b50516001600160a01b0316331461298457600080fd5b806001600160a01b0381166139c357600080fd5b6001600160a01b0383166139df576139da82614edb565b61167c565b61167c8383614ee6565b6139f2846147c7565b1561145a57836001600160a01b031663db7af85460e01b84848460405160240180846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613a61578181015183820152602001613a49565b50505050905090810190601f168015613a8e5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990991698909817885251815191979096508695509350915081905083835b60208310613af45780518252601f199092019160209182019101613ad5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611c60576040519150601f19603f3d011682016040523d82523d6000602084013e611c60565b600080613b61611e0d565b90506000613b6e85614f73565b90506000613b7a61239f565b905084613c7357806001600160a01b03166394643f718488856040518463ffffffff1660e01b815260040180846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015613bf4578181015183820152602001613bdc565b50505050905090810190601f168015613c215780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015613c4257600080fd5b505af1158015613c56573d6000803e3d6000fd5b505050506040513d6020811015613c6c57600080fd5b5051611d01565b806001600160a01b031663dc8601b38488856040518463ffffffff1660e01b815260040180846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015613ce6578181015183820152602001613cce565b50505050905090810190601f168015613d135780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015613d3457600080fd5b505af1158015613d48573d6000803e3d6000fd5b505050506040513d6020811015613d5e57600080fd5b50519695505050505050565b7f6168652c307c1e813ca11cfb3a601f1cf3b22452021a5052d8b05f1f1f8a3e925490565b6014015190565b6001600160a01b03831615801590613dc75750613db1611e0d565b6001600160a01b0316836001600160a01b031614155b613dd057600080fd5b613dd98561164b565b613df9576000613de8866150a7565b9050613df7868260ff16614d57565b505b613e0385836113b3565b613e0c57600080fd5b613e1885612470611a88565b6000613e2386611b7b565b90506000613e5e7f741ede137d0537e88e0ea0ff25b1f22d837903dbbee8980b4a06e8523247ee266001600160a01b03841615888a88614884565b90506000613e6c8583614731565b90506060613e7d848a898589613fc8565b90506000613e9582613e908c8c8c615275565b613b56565b9050613ea3818b8b86614643565b8315613eea5760408051858152905182916001600160a01b038d16917fd560a522f77cfb4924d6fe51be1615e540a48a8931c48fe0349c7f47ebabe7479181900360200190a35b50505050505050505050565b6000611420613f04836114bd565b604080516370a0823160e01b815230600482015290516001600160a01b038616916370a08231916024808301926020929190829003018186803b15801561290957600080fd5b613f58816113cb858561220e565b600080858560405160200180806f746f74616c5370656e7450657244617960801b815250601001836001600160a01b031660601b81526014018281526020019250505060405160208183030381529060405280519060200120815260200190815260200160002081905550505050565b606060008083511180613fed57506000356001600160e01b03191663d740548160e01b145b90506001600160a01b0387166144a8576140138661400e866113cb8a6114bd565b615324565b61401c86612282565b15614159578061407a57604080516001600160a01b0380891660248301528716604482015260648082018790528251808303909101815260849091019091526020810180516001600160e01b031663125e4cfb60e01b179052614151565b63c534576160e01b8686868660405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156140ea5781810151838201526020016140d2565b50505050905090810190601f1680156141175780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909916989098179097525050505050505b91505061463a565b6000614164876150a7565b905060606141718861537f565b9050606061417e89615545565b9050600082511180614191575060008151115b61419a57600080fd5b836142ed57632ae87cdd60e01b898383868c8c60405160240180876001600160a01b0316815260200180602001806020018660ff168152602001856001600160a01b03168152602001848152602001838103835288818151815260200191508051906020019080838360005b8381101561421e578181015183820152602001614206565b50505050905090810190601f16801561424b5780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b8381101561427e578181015183820152602001614266565b50505050905090810190601f1680156142ab5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909c169b909b17909a525061449d975050505050505050565b63d522cfd760e01b898383868c8c8c60405160240180886001600160a01b0316815260200180602001806020018760ff168152602001866001600160a01b031681526020018581526020018060200184810384528a818151815260200191508051906020019080838360005b83811015614371578181015183820152602001614359565b50505050905090810190601f16801561439e5780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b838110156143d15781810151838201526020016143b9565b50505050905090810190601f1680156143fe5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015614431578181015183820152602001614419565b50505050905090810190601f16801561445e5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909e169d909d17909c5250505050505050505050505b94505050505061463a565b856001600160a01b03166342966c68856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156144ee57600080fd5b505af1158015614502573d6000803e3d6000fd5b505050508061455f57604080516001600160a01b03808a1660248301528716604482015260648082018790528251808303909101815260849091019091526020810180516001600160e01b031663272255bb60e01b179052614636565b63867f7a4d60e01b8786868660405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156145cf5781810151838201526020016145b7565b50505050905090810190601f1680156145fc5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909916989098179097525050505050505b9150505b95945050505050565b61464d8484615678565b61465784836156e4565b6146618482615754565b83826001600160a01b0316846001600160a01b03167f59a9a8027b9c87b961e254899821c9a276b5efc35d1f7409ea4f291470f1629a846040518082815260200191505060405180910390a450505050565b7f6168652c307c1e813ca11cfb3a601f1cf3b22452021a5052d8b05f1f1f8a3e9255565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261145a9085906157a3565b6000612e0c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615854565b84156147a95761478d6001600160a01b03851684846158eb565b6147a48461400e8361479e886114bd565b90614731565b6120ba565b6120ba83836147b78761593d565b6001600160a01b03169190612c2b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906147fb57508115155b949350505050565b614811816113cb858561272e565b6000808585604051602001808072746f74616c457865637574656450657244617960681b815250601301836001600160a01b031660601b81526014018281526020019250505060405160208183030381529060405280519060200120815260200190815260200160002081905550505050565b60008061488f6124b5565b90506001600160a01b03811615614c22577f741ede137d0537e88e0ea0ff25b1f22d837903dbbee8980b4a06e8523247ee26871480156149445750806001600160a01b031663071664c5866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561491757600080fd5b505afa15801561492b573d6000803e3d6000fd5b505050506040513d602081101561494157600080fd5b50515b1561495357600091505061463a565b6000816001600160a01b031663710c60138987876040518463ffffffff1660e01b815260040180848152602001836001600160a01b03168152602001828152602001935050505060206040518083038186803b1580156149b257600080fd5b505afa1580156149c6573d6000803e3d6000fd5b505050506040513d60208110156149dc57600080fd5b505190508015614c19577f741ede137d0537e88e0ea0ff25b1f22d837903dbbee8980b4a06e8523247ee26881415614a2757614a226001600160a01b03861683836158eb565b614bb1565b600087614a3b576340c10f1960e01b614a44565b63a9059cbb60e01b5b604080516001600160a01b038681166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b03166001600160e01b0319861617815292518251949550600094606094928c16939282918083835b60208310614ac55780518252601f199092019160209182019101614aa6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b27576040519150601f19603f3d011682016040523d82523d6000602084013e614b2c565b606091505b509150915081614b83576040805185815290516001600160a01b038a16917fb8842ee9d1603ef0f5620c01feb6cf2e7921091eba728cbce562041a86ee109a919081900360200190a260009550505050505061463a565b80511580614ba45750808060200190516020811015614ba157600080fd5b50515b614bad57600080fd5b5050505b816001600160a01b0316634e281a7b866040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015614c0057600080fd5b505af1158015614c14573d6000803e3d6000fd5b505050505b915061463a9050565b5060009695505050505050565b6000614c3961239f565b6001600160a01b031663669f618b6040518163ffffffff1660e01b815260040160206040518083038186803b158015614c7157600080fd5b505afa158015614c85573d6000803e3d6000fd5b505050506040513d6020811015614c9b57600080fd5b5051905090565b606080827f2066726f6d204d61696e6e6574000000000000000000000000000000000000006040516020018083805190602001908083835b60208310614cf95780518252601f199092019160209182019101614cda565b51815160209384036101000a60001901801990921691161790529201938452506040805180850381529390910190525093517f000000000000000000000000000000000000000000000000000000000000000d018452509192915050565b60006012821015614e4b5781601203600a0a90506000614d8182614d7b6000612122565b90615983565b90506000614d9383614d7b60006111c9565b90506000614da584614d7b60006127a8565b90506000614db785614d7b6000611460565b90506000614dc986614d7b6000611a91565b905084614dff5760019450848411614dff5760649350606491508383111580614df25750818111155b15614dff57506127109150815b614e23886040518060600160405280868152602001878152602001888152506135d4565b614e4188604051806040016040528084815260200185815250613728565b505050505061167c565b60128203600a0a9050614ea4836040518060600160405280614e7785614e7160006127a8565b906159c5565b8152602001614e8a85614e7160006111c9565b8152602001614e9d85614e716000612122565b90526135d4565b61167c836040518060400160405280614ec185614e716000611a91565b8152602001614ed485614e716000611460565b9052613728565b476111268282615a1e565b604080516370a0823160e01b8152306004820152905183916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015614f3157600080fd5b505afa158015614f45573d6000803e3d6000fd5b505050506040513d6020811015614f5b57600080fd5b5051905061145a6001600160a01b03831684836158eb565b600080614f7e6120cb565b90506001600160a01b03811661500357614f9661239f565b6001600160a01b031663e5789d036040518163ffffffff1660e01b815260040160206040518083038186803b158015614fce57600080fd5b505afa158015614fe2573d6000803e3d6000fd5b505050506040513d6020811015614ff857600080fd5b5051915061121c9050565b60405163fb47201960e01b81526020600482018181528551602484015285516001600160a01b0385169363fb4720199388939283926044019185019080838360005b8381101561505d578181015183820152602001615045565b50505050905090810190601f16801561508a5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015614fce57600080fd5b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1781529151815160009384936060936001600160a01b03881693919290918291908083835b602083106151105780518252601f1990920191602091820191016150f1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114615170576040519150601f19603f3d011682016040523d82523d6000602084013e615175565b606091505b5091509150816152565760408051600481526024810182526020810180516001600160e01b0316632e0f262560e01b178152915181516001600160a01b0388169382918083835b602083106151db5780518252601f1990920191602091820191016151bc565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461523b576040519150601f19603f3d011682016040523d82523d6000602084013e615240565b606091505b509092509050816152565760009250505061121c565b80806020019051602081101561526b57600080fd5b5051949350505050565b600080615280612348565b90506001600160a01b038116158061463a57506040805163f7baa04960e01b81526001600160a01b03878116600483015286811660248301528581166044830152915160009284169163f7baa049916064808301926020929190829003018186803b1580156152ee57600080fd5b505afa158015615302573d6000803e3d6000fd5b505050506040513d602081101561531857600080fd5b50511395945050505050565b604080516e6d65646961746f7242616c616e636560881b60208083019190915260609490941b6001600160601b031916602f820152815180820360230181526043909101825280519084012060009081529283905290912055565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b1781529151815160609360009385936001600160a01b03881693919290918291908083835b602083106153e85780518252601f1990920191602091820191016153c9565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114615448576040519150601f19603f3d011682016040523d82523d6000602084013e61544d565b606091505b50915091508161553c5760408051600481526024810182526020810180516001600160e01b03166351fa6fbf60e11b178152915181516001600160a01b0388169382918083835b602083106154b35780518252601f199092019160209182019101615494565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114615513576040519150601f19603f3d011682016040523d82523d6000602084013e615518565b606091505b5090925090508161553c57604051806020016040528060008152509250505061121c565b6147fb81615a83565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b1781529151815160609360009385936001600160a01b03881693919290918291908083835b602083106155ae5780518252601f19909201916020918201910161558f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461560e576040519150601f19603f3d011682016040523d82523d6000602084013e615613565b606091505b50915091508161553c5760408051600481526024810182526020810180516001600160e01b0316631eedf1af60e31b178152915181516001600160a01b038816938291808383602083106154b35780518252601f199092019160209182019101615494565b604080516b36b2b9b9b0b3b2aa37b5b2b760a11b602080830191909152602c8083019590955282518083039095018552604c90910182528351938101939093206000908152600290935290912080546001600160a01b0319166001600160a01b03909216919091179055565b604080516f1b595cdcd859d9549958da5c1a595b9d60821b60208083019190915260308083019590955282518083039095018552605090910182528351938101939093206000908152600290935290912080546001600160a01b0319166001600160a01b03909216919091179055565b604080516b6d65737361676556616c756560a01b602080830191909152602c8083019590955282518083039095018552604c909101825283519381019390932060009081529283905290912055565b60606157f8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316615bdf9092919063ffffffff16565b80519091501561167c5780806020019051602081101561581757600080fd5b505161167c5760405162461bcd60e51b815260040180806020018281038252602a815260200180615e20602a913960400191505060405180910390fd5b600081848411156158e35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156158a8578181015183820152602001615890565b50505050905090810190601f1680156158d55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261167c9084906157a3565b60006001600160a01b03821673b7d311e2eb55f2f68a9440da38e7989210b9a05e141561597f575073857dd07866c1e19eb2cdfcef7ae655ce7f9e560d61121c565b5090565b6000612e0c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615bee565b6000826159d457506000611420565b828202828482816159e157fe5b0414612e0c5760405162461bcd60e51b8152600401808060200182810382526021815260200180615dff6021913960400191505060405180910390fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050611126578082604051615a5590615dc0565b6001600160a01b039091168152604051908190036020019082f090508015801561145a573d6000803e3d6000fd5b6060602082511115615b5957818060200190516020811015615aa457600080fd5b8101908080516040519392919084600160201b821115615ac357600080fd5b908301906020820185811115615ad857600080fd5b8251600160201b811182820188101715615af157600080fd5b82525081516020918201929091019080838360005b83811015615b1e578181015183820152602001615b06565b50505050905090810190601f168015615b4b5780820380516001836020036101000a031916815260200191505b50604052505050905061121c565b815160201415615bca576000828060200190516020811015615b7a57600080fd5b50516040805160208082528183019092529192506060919060208201818036833701905050905060008260208301525b8215615bbf5760089290921b91600101615baa565b8152915061121c9050565b5060408051602081019091526000815261121c565b60606147fb8484600085615c53565b60008183615c3d5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156158a8578181015183820152602001615890565b506000838581615c4957fe5b0495945050505050565b6060615c5e856147c7565b615caf576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310615cee5780518252601f199092019160209182019101615ccf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615d50576040519150601f19603f3d011682016040523d82523d6000602084013e615d55565b606091505b50915091508115615d695791506147fb9050565b805115615d795780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156158a8578181015183820152602001615890565b603280615dcd8339019056fe60806040526040516032380380603283398181016040526020811015602357600080fd5b50516001600160a01b038116fffe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122016ad8a7dfc627988e4caf299120e2273aae2be383102b8f744ab97c4389ae59364736f6c63430007050033",
1419
+ "linkReferences": {},
1420
+ "deployedLinkReferences": {}
1421
+ }