@ensuro/core 2.0.0-beta3 → 2.0.0-beta6

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 (40) hide show
  1. package/build/contracts/AccessManager.sol/AccessManager.json +487 -0
  2. package/build/contracts/EToken.sol/EToken.json +4 -4
  3. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +4 -4
  4. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +2 -2
  5. package/build/contracts/PolicyPool.sol/PolicyPool.json +148 -15
  6. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +2 -2
  7. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +4 -4
  8. package/build/contracts/Reserve.sol/Reserve.json +2 -2
  9. package/build/contracts/RiskModule.sol/RiskModule.json +2 -2
  10. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +4 -4
  11. package/build/contracts/interfaces/{IPolicyPoolConfig.sol/IPolicyPoolConfig.json → IAccessManager.sol/IAccessManager.json} +2 -67
  12. package/build/contracts/interfaces/IPolicyPool.sol/IPolicyPool.json +15 -2
  13. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +2 -2
  14. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +19 -6
  15. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +6 -6
  16. package/contracts/AccessManager.sol +72 -0
  17. package/contracts/EToken.sol +6 -13
  18. package/contracts/PolicyNFT.sol +3 -3
  19. package/contracts/PolicyPool.sol +108 -43
  20. package/contracts/PolicyPoolComponent.sol +11 -11
  21. package/contracts/PremiumsAccount.sol +1 -1
  22. package/contracts/RiskModule.sol +4 -8
  23. package/contracts/interfaces/{IPolicyPoolConfig.sol → IAccessManager.sol} +2 -21
  24. package/contracts/interfaces/IPolicyPool.sol +10 -5
  25. package/contracts/mocks/PolicyPoolMock.sol +15 -13
  26. package/js/test-utils.js +178 -122
  27. package/package.json +1 -1
  28. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +0 -890
  29. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +0 -665
  30. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +0 -63
  31. package/build/contracts/mocks/LinkTokenMock.sol/LinkTokenMock.json +0 -370
  32. package/build/contracts/upgraded/IPolicyNFTv1.sol/IPolicyNFTv1.json +0 -322
  33. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +0 -584
  34. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +0 -615
  35. package/contracts/FlightDelayRiskModule.sol +0 -217
  36. package/contracts/PolicyPoolConfig.sol +0 -185
  37. package/contracts/dependencies/ChainlinkClientUpgradeable.sol +0 -371
  38. package/contracts/mocks/LinkTokenMock.sol +0 -30
  39. package/contracts/upgraded/IPolicyNFTv1.sol +0 -15
  40. package/contracts/upgraded/PolicyNFTv1.sol +0 -126
@@ -6,8 +6,8 @@
6
6
  {
7
7
  "inputs": [
8
8
  {
9
- "internalType": "contract IPolicyPoolConfig",
10
- "name": "config_",
9
+ "internalType": "contract IAccessManager",
10
+ "name": "access_",
11
11
  "type": "address"
12
12
  },
13
13
  {
@@ -56,6 +56,25 @@
56
56
  "name": "BeaconUpgraded",
57
57
  "type": "event"
58
58
  },
59
+ {
60
+ "anonymous": false,
61
+ "inputs": [
62
+ {
63
+ "indexed": true,
64
+ "internalType": "enum IAccessManager.GovernanceActions",
65
+ "name": "action",
66
+ "type": "uint8"
67
+ },
68
+ {
69
+ "indexed": false,
70
+ "internalType": "address",
71
+ "name": "value",
72
+ "type": "address"
73
+ }
74
+ ],
75
+ "name": "ComponentChanged",
76
+ "type": "event"
77
+ },
59
78
  {
60
79
  "anonymous": false,
61
80
  "inputs": [
@@ -67,7 +86,7 @@
67
86
  },
68
87
  {
69
88
  "indexed": false,
70
- "internalType": "enum PolicyPool.ETokenStatus",
89
+ "internalType": "enum PolicyPool.ComponentStatus",
71
90
  "name": "newStatus",
72
91
  "type": "uint8"
73
92
  }
@@ -228,7 +247,7 @@
228
247
  },
229
248
  {
230
249
  "indexed": false,
231
- "internalType": "enum PolicyPool.ETokenStatus",
250
+ "internalType": "enum PolicyPool.ComponentStatus",
232
251
  "name": "newStatus",
233
252
  "type": "uint8"
234
253
  }
@@ -236,6 +255,25 @@
236
255
  "name": "PremiumsAccountStatusChanged",
237
256
  "type": "event"
238
257
  },
258
+ {
259
+ "anonymous": false,
260
+ "inputs": [
261
+ {
262
+ "indexed": true,
263
+ "internalType": "contract IRiskModule",
264
+ "name": "riskModule",
265
+ "type": "address"
266
+ },
267
+ {
268
+ "indexed": false,
269
+ "internalType": "enum PolicyPool.ComponentStatus",
270
+ "name": "newStatus",
271
+ "type": "uint8"
272
+ }
273
+ ],
274
+ "name": "RiskModuleStatusChanged",
275
+ "type": "event"
276
+ },
239
277
  {
240
278
  "anonymous": false,
241
279
  "inputs": [
@@ -314,6 +352,19 @@
314
352
  "stateMutability": "view",
315
353
  "type": "function"
316
354
  },
355
+ {
356
+ "inputs": [],
357
+ "name": "access",
358
+ "outputs": [
359
+ {
360
+ "internalType": "contract IAccessManager",
361
+ "name": "",
362
+ "type": "address"
363
+ }
364
+ ],
365
+ "stateMutability": "view",
366
+ "type": "function"
367
+ },
317
368
  {
318
369
  "inputs": [
319
370
  {
@@ -340,6 +391,19 @@
340
391
  "stateMutability": "nonpayable",
341
392
  "type": "function"
342
393
  },
394
+ {
395
+ "inputs": [
396
+ {
397
+ "internalType": "contract IRiskModule",
398
+ "name": "riskModule",
399
+ "type": "address"
400
+ }
401
+ ],
402
+ "name": "addRiskModule",
403
+ "outputs": [],
404
+ "stateMutability": "nonpayable",
405
+ "type": "function"
406
+ },
343
407
  {
344
408
  "inputs": [
345
409
  {
@@ -348,7 +412,7 @@
348
412
  "type": "address"
349
413
  },
350
414
  {
351
- "internalType": "enum PolicyPool.ETokenStatus",
415
+ "internalType": "enum PolicyPool.ComponentStatus",
352
416
  "name": "newStatus",
353
417
  "type": "uint8"
354
418
  }
@@ -359,16 +423,21 @@
359
423
  "type": "function"
360
424
  },
361
425
  {
362
- "inputs": [],
363
- "name": "config",
364
- "outputs": [
426
+ "inputs": [
365
427
  {
366
- "internalType": "contract IPolicyPoolConfig",
367
- "name": "",
428
+ "internalType": "contract IRiskModule",
429
+ "name": "riskModule",
368
430
  "type": "address"
431
+ },
432
+ {
433
+ "internalType": "enum PolicyPool.ComponentStatus",
434
+ "name": "newStatus",
435
+ "type": "uint8"
369
436
  }
370
437
  ],
371
- "stateMutability": "view",
438
+ "name": "changeRiskModuleStatus",
439
+ "outputs": [],
440
+ "stateMutability": "nonpayable",
372
441
  "type": "function"
373
442
  },
374
443
  {
@@ -498,7 +567,7 @@
498
567
  "name": "getETokenStatus",
499
568
  "outputs": [
500
569
  {
501
- "internalType": "enum PolicyPool.ETokenStatus",
570
+ "internalType": "enum PolicyPool.ComponentStatus",
502
571
  "name": "",
503
572
  "type": "uint8"
504
573
  }
@@ -507,7 +576,32 @@
507
576
  "type": "function"
508
577
  },
509
578
  {
510
- "inputs": [],
579
+ "inputs": [
580
+ {
581
+ "internalType": "contract IRiskModule",
582
+ "name": "riskModule",
583
+ "type": "address"
584
+ }
585
+ ],
586
+ "name": "getRiskModuleStatus",
587
+ "outputs": [
588
+ {
589
+ "internalType": "enum PolicyPool.ComponentStatus",
590
+ "name": "",
591
+ "type": "uint8"
592
+ }
593
+ ],
594
+ "stateMutability": "view",
595
+ "type": "function"
596
+ },
597
+ {
598
+ "inputs": [
599
+ {
600
+ "internalType": "address",
601
+ "name": "treasury_",
602
+ "type": "address"
603
+ }
604
+ ],
511
605
  "name": "initialize",
512
606
  "outputs": [],
513
607
  "stateMutability": "nonpayable",
@@ -673,6 +767,19 @@
673
767
  "stateMutability": "nonpayable",
674
768
  "type": "function"
675
769
  },
770
+ {
771
+ "inputs": [
772
+ {
773
+ "internalType": "contract IRiskModule",
774
+ "name": "riskModule",
775
+ "type": "address"
776
+ }
777
+ ],
778
+ "name": "removeRiskModule",
779
+ "outputs": [],
780
+ "stateMutability": "nonpayable",
781
+ "type": "function"
782
+ },
676
783
  {
677
784
  "inputs": [
678
785
  {
@@ -853,6 +960,32 @@
853
960
  "stateMutability": "nonpayable",
854
961
  "type": "function"
855
962
  },
963
+ {
964
+ "inputs": [
965
+ {
966
+ "internalType": "address",
967
+ "name": "treasury_",
968
+ "type": "address"
969
+ }
970
+ ],
971
+ "name": "setTreasury",
972
+ "outputs": [],
973
+ "stateMutability": "nonpayable",
974
+ "type": "function"
975
+ },
976
+ {
977
+ "inputs": [],
978
+ "name": "treasury",
979
+ "outputs": [
980
+ {
981
+ "internalType": "address",
982
+ "name": "",
983
+ "type": "address"
984
+ }
985
+ ],
986
+ "stateMutability": "view",
987
+ "type": "function"
988
+ },
856
989
  {
857
990
  "inputs": [],
858
991
  "name": "unpause",
@@ -916,8 +1049,8 @@
916
1049
  "type": "function"
917
1050
  }
918
1051
  ],
919
- "bytecode": "0x6101006040523060601b6080523480156200001957600080fd5b5060405162003b5938038062003b598339810160408190526200003c9162000064565b6001600160601b0319606093841b811660a05291831b821660e05290911b1660c052620000d1565b6000806000606084860312156200007a57600080fd5b83516200008781620000b8565b60208501519093506200009a81620000b8565b6040850151909250620000ad81620000b8565b809150509250925092565b6001600160a01b0381168114620000ce57600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c613985620001d4600039600081816103ca0152818161139e01528181612391015281816127ec01528181612b670152612d650152600081816104630152818161072c01528181611411015281816114cb015281816115830152818161164f01526117980152600081816103190152818161063d015281816108d301528181610d62015281816110ff015281816111fc015281816115b10152818161183b01528181611c1a01528181611d2901528181611f01015281816122c501526127790152600081816105140152818161055d015281816107e5015281816108250152610c7e01526139856000f3fe6080604052600436106101665760003560e01c806379502c55116100d1578063b63d382e1161008a578063f3fef3a311610064578063f3fef3a314610487578063f67b2bad146104a7578063fcbb17fe146104c9578063ffa600e3146104e957600080fd5b8063b63d382e146103ee578063ca143d181461040e578063e5a6b10f1461045457600080fd5b806379502c551461030a5780637a702b3c146103515780638129fc1c146103715780638456cb5914610386578063917876601461039b578063af02808a146103bb57600080fd5b806352bab1941161012357806352bab1941461023e57806352d1902d1461025e5780635b494dd5146102735780635c975abb146102a757806365b71008146102ca5780636af6f1ef146102ea57600080fd5b806324ea54f41461016b5780633659cfe6146101a05780633f4ba83a146101c257806347e7ef24146101d75780634a47a3e0146101f75780634f1ef2861461022b575b600080fd5b34801561017757600080fd5b5061018d60008051602061393083398151915281565b6040519081526020015b60405180910390f35b3480156101ac57600080fd5b506101c06101bb366004613276565b610509565b005b3480156101ce57600080fd5b506101c06105f2565b3480156101e357600080fd5b506101c06101f23660046133f5565b6106a3565b34801561020357600080fd5b5061018d7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6101c06102393660046132b0565b6107da565b34801561024a57600080fd5b506101c0610259366004613276565b6108a7565b34801561026a57600080fd5b5061018d610c71565b34801561027f57600080fd5b5061018d7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156102b357600080fd5b5060335460ff166040519015158152602001610197565b3480156102d657600080fd5b506101c06102e5366004613276565b610d24565b3480156102f657600080fd5b506101c0610305366004613421565b610f53565b34801561031657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610197565b34801561035d57600080fd5b506101c061036c36600461346d565b610fd7565b34801561037d57600080fd5b506101c0610ff9565b34801561039257600080fd5b506101c06110d3565b3480156103a757600080fd5b5061018d6103b63660046134b7565b611169565b3480156103c757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610339565b3480156103fa57600080fd5b506101c0610409366004613276565b61180f565b34801561041a57600080fd5b50610447610429366004613276565b6001600160a01b0316600090815260c9602052604090205460ff1690565b6040516101979190613631565b34801561046057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610339565b34801561049357600080fd5b5061018d6104a23660046133f5565b611a8c565b3480156104b357600080fd5b5061018d6000805160206138e983398151915281565b3480156104d557600080fd5b506101c06104e43660046133b8565b611bcf565b3480156104f557600080fd5b506101c061050436600461343e565b611e83565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561055b5760405162461bcd60e51b81526004016105529061368c565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105a46000805160206138c9833981519152546001600160a01b031690565b6001600160a01b0316146105ca5760405162461bcd60e51b8152600401610552906136d8565b6105d381611eb6565b604080516000808252602082019092526105ef91839190611f60565b50565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b15801561067f57600080fd5b505afa158015610693573d6000803e3d6000fd5b5050505061069f6120df565b5050565b6106ab612131565b6001600160a01b038216600090815260c9602052604090205460ff1660018160038111156106db576106db613879565b1461071f5760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b6044820152606401610552565b6107546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338585612179565b6040516311f9fbc960e21b8152336004820152602481018390526001600160a01b038416906347e7ef2490604401602060405180830381600087803b15801561079c57600080fd5b505af11580156107b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d49190613375565b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156108235760405162461bcd60e51b81526004016105529061368c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661086c6000805160206138c9833981519152546001600160a01b031690565b6001600160a01b0316146108925760405162461bcd60e51b8152600401610552906136d8565b61089b82611eb6565b61069f82826001611f60565b6040516312d9a6ad60e01b81526000805160206138e983398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561091d57600080fd5b505afa158015610931573d6000803e3d6000fd5b505050506001600160a01b03821661098b5760405162461bcd60e51b815260206004820152601d60248201527f5072656d69756d734163636f756e742063616e2774206265207a65726f0000006044820152606401610552565b306001600160a01b0316826001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ce57600080fd5b505afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a069190613293565b6001600160a01b031614610a6c5760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f74206c696e6b656420746f2074686044820152661a5cc81c1bdbdb60ca1b6064820152608401610552565b6000826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf9190613293565b90506001600160a01b03811615610b4c576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050505b826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8557600080fd5b505afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd9190613293565b90506001600160a01b03811615610c2a576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050505b826001600160a01b03167f834362a634fb37104727a80cf5e936b5b1798edffcf4a89935f19d04eb0e88ec6001604051610c649190613631565b60405180910390a2505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d115760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610552565b506000805160206138c983398151915290565b6040516312d9a6ad60e01b81527f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2760048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015610dac57600080fd5b505afa158015610dc0573d6000803e3d6000fd5b505050506001600160a01b038216600090815260c9602052604090205460ff166002816003811115610df457610df4613879565b14610e395760405162461bcd60e51b815260206004820152601560248201527411551bdad95b881b9bdd0819195c1c9958d85d1959605a1b6044820152606401610552565b826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7257600080fd5b505afa158015610e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaa9190613375565b15610f065760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b6064820152608401610552565b6001600160a01b038316600081815260c96020526040808220805460ff19169055517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610c6491613631565b610f5b612131565b42610f6e6101c083016101a08401613515565b64ffffffffff161115610fbc5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610552565b6105ef610fce3683900383018361349a565b600060016121d3565b610fdf612131565b61069f610ff13684900384018461349a565b8260006121d3565b600054610100900460ff16158080156110195750600054600160ff909116105b806110335750303b158015611033575060005460ff166001145b61104f5760405162461bcd60e51b815260040161055290613724565b6000805460ff191660011790558015611072576000805461ff0019166101001790555b61107a6126a8565b6110826126cf565b61108a6126fe565b80156105ef576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b6040516312d9a6ad60e01b815260008051602061393083398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561114957600080fd5b505afa15801561115d573d6000803e3d6000fd5b505050506105ef61289f565b6000611173612131565b6101608401516001600160a01b03811633146111dd5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b6064820152608401610552565b604051635dfdc5d760e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063bbfb8bae9060240160006040518083038186803b15801561123e57600080fd5b505afa158015611252573d6000803e3d6000fd5b50505050826bffffffffffffffffffffffff166060826001600160a01b0316901b61127d9190613827565b8552611288856128dc565b60ca600087600001518152602001908152602001600020819055506000816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156112de57600080fd5b505afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190613293565b60405163e3638ea360e01b81529091506001600160a01b0382169063e3638ea3906113459089906004016137bd565b600060405180830381600087803b15801561135f57600080fd5b505af1158015611373573d6000803e3d6000fd5b50508751604051632851206560e21b81526001600160a01b03898116600483015260248201929092527f0000000000000000000000000000000000000000000000000000000000000000909116925063a14481949150604401600060405180830381600087803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b50505060c087015161143b91506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169087908490612179565b610140860151156114f3576114f385826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148357600080fd5b505afa158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190613293565b6101408901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b610120860151156115ab576115ab85826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153b57600080fd5b505afa15801561154f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115739190613293565b6101208901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b611677857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190613293565b60e08901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b600086610100015111801561170e5750816001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c057600080fd5b505afa1580156116d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f89190613293565b6001600160a01b0316856001600160a01b031614155b156117c0576117c085836001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b15801561175057600080fd5b505afa158015611764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117889190613293565b6101008901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b876040516117f991906137bd565b60405180910390a25050835190505b9392505050565b6040516312d9a6ad60e01b81526000805160206138e983398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b5050506001600160a01b038316600090815260c9602052604081205460ff1691508160038111156118cc576118cc613879565b146119195760405162461bcd60e51b815260206004820152601a60248201527f65546f6b656e20616c726561647920696e2074686520706f6f6c0000000000006044820152606401610552565b6001600160a01b0383166119665760405162461bcd60e51b815260206004820152601460248201527365546f6b656e2063616e2774206265207a65726f60601b6044820152606401610552565b306001600160a01b0316836001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e19190613293565b6001600160a01b031614611a375760405162461bcd60e51b815260206004820152601e60248201527f45546f6b656e206e6f74206c696e6b656420746f207468697320706f6f6c00006044820152606401610552565b6001600160a01b038316600081815260c9602052604090819020805460ff1916600190811790915590517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610c6491613631565b6000611a96612131565b6001600160a01b038316600090815260c9602052604090205460ff166001816003811115611ac657611ac6613879565b1480611ae357506002816003811115611ae157611ae1613879565b145b611b415760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b6064820152608401610552565b60405163f3fef3a360e01b8152336004820181905260248201859052906001600160a01b0386169063f3fef3a390604401602060405180830381600087803b158015611b8c57600080fd5b505af1158015611ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc49190613375565b925050505b92915050565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b158015611c5c57600080fd5b505afa158015611c70573d6000803e3d6000fd5b5050506001600160a01b038516600090815260c9602052604081205460ff169150816003811115611ca357611ca3613879565b1415611ce45760405162461bcd60e51b815260206004820152601060248201526f11551bdad95b881b9bdd08199bdd5b9960821b6044820152606401610552565b6003846003811115611cf857611cf8613879565b141580611dab5750604051632474521560e21b815260008051602061393083398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b158015611d7357600080fd5b505afa158015611d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dab9190613358565b611e015760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e642065546f6b656e6044820152607360f81b6064820152608401610552565b6001600160a01b038516600090815260c960205260409020805485919060ff19166001836003811115611e3657611e36613879565b0217905550846001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c85604051611e749190613631565b60405180910390a25050505050565b611e8b612131565b61069f611e9d3684900384018461349a565b82611ea9576000611eaf565b83602001355b60006121d3565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b158015611f4357600080fd5b505afa158015611f57573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611f9857611f938361290c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fd157600080fd5b505afa925050508015612001575060408051601f3d908101601f19168201909252611ffe91810190613375565b60015b6120645760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610552565b6000805160206138c983398151915281146120d35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610552565b50611f938383836129a8565b6120e76129cd565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff16156121775760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610552565b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526107d4908590612a16565b6121dc83612ae8565b61016083015181806121f657506001600160a01b03811633145b6122425760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c69636965736044820152606401610552565b82158061225a575042846101a0015164ffffffffff16115b6122a65760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610552565b6040516310f199ef60e31b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063878ccf789060240160006040518083038186803b15801561230757600080fd5b505afa15801561231b573d6000803e3d6000fd5b50505050836020015183111561236c5760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610552565b82158015906124f25784516040516331a9108f60e11b81526000916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636352211e916123c89160040190815260200190565b60206040518083038186803b1580156123e057600080fd5b505afa1580156123f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124189190613293565b9050826001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561245357600080fd5b505afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190613293565b6001600160a01b0316639d8c5ee78288886040518463ffffffff1660e01b81526004016124ba93929190613604565b600060405180830381600087803b1580156124d457600080fd5b505af11580156124e8573d6000803e3d6000fd5b50505050506125c1565b816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561252b57600080fd5b505afa15801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190613293565b6001600160a01b031663c7a9c70d866040518263ffffffff1660e01b815260040161258e91906137bd565b600060405180830381600087803b1580156125a857600080fd5b505af11580156125bc573d6000803e3d6000fd5b505050505b6020850151604051636a448ef160e01b815260048101919091526001600160a01b03831690636a448ef190602401600060405180830381600087803b15801561260957600080fd5b505af115801561261d573d6000803e3d6000fd5b5050505084600001518561016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e8660405161266691815260200190565b60405180910390a38451600090815260ca602052604081205583156126965784516126919085612b4e565b6126a1565b84516126a190612d4c565b5050505050565b600054610100900460ff166121775760405162461bcd60e51b815260040161055290613772565b600054610100900460ff166126f65760405162461bcd60e51b815260040161055290613772565b612177612e92565b600054610100900460ff161580801561271e5750600054600160ff909116105b806127385750303b158015612738575060005460ff166001145b6127545760405162461bcd60e51b815260040161055290613724565b6000805460ff191660011790558015612777576000805461ff0019166101001790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127d257600080fd5b505af11580156127e6573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561284557600080fd5b505af1158015612859573d6000803e3d6000fd5b5050505080156105ef576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016110c8565b6128a7612131565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121143390565b6000816040516020016128ef91906137bd565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381163b6129795760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610552565b6000805160206138c983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6129b183612ec5565b6000825111806129be5750805b15611f93576107d48383612f05565b60335460ff166121775760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610552565b6000612a6b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ff09092919063ffffffff16565b805190915015611f935780806020019051810190612a899190613358565b611f935760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610552565b805115801590612b0f57508051600090815260ca6020526040902054612b0d826128dc565b145b6105ef5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610552565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b158015612bb157600080fd5b505afa158015612bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be99190613293565b90506001600160a01b0381163b612bff57505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044810186905260648101859052608401602060405180830381600087803b158015612c6457600080fd5b505af1925050508015612c94575060408051601f3d908101601f19168201909252612c919181019061338e565b60015b612cdc573d808015612cc2576040519150601f19603f3d011682016040523d82523d6000602084013e612cc7565b606091505b508051612cd45750505050565b805181602001fd5b6001600160e01b03198116636b140e9f60e11b146107d45760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b6064820152608401610552565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b158015612daf57600080fd5b505afa158015612dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de79190613293565b90506001600160a01b0381163b612dfc575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101859052606401602060405180830381600087803b158015612e5a57600080fd5b505af1925050508015612e8a575060408051601f3d908101601f19168201909252612e879181019061338e565b60015b611f93575050565b600054610100900460ff16612eb95760405162461bcd60e51b815260040161055290613772565b6033805460ff19169055565b612ece8161290c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b612f6d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610552565b600080846001600160a01b031684604051612f8891906135e8565b600060405180830381855af49150503d8060008114612fc3576040519150601f19603f3d011682016040523d82523d6000602084013e612fc8565b606091505b5091509150611bc4828260405180606001604052806027815260200161390960279139613007565b6060612fff8484600085613040565b949350505050565b60608315613016575081611808565b8251156130265782518084602001fd5b8160405162461bcd60e51b81526004016105529190613659565b6060824710156130a15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610552565b6001600160a01b0385163b6130f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610552565b600080866001600160a01b0316858760405161311491906135e8565b60006040518083038185875af1925050503d8060008114613151576040519150601f19603f3d011682016040523d82523d6000602084013e613156565b606091505b5091509150613166828286613007565b979650505050505050565b803561317c816138a5565b919050565b60006101c0828403121561319457600080fd5b50919050565b60006101c082840312156131ad57600080fd5b6131b56137cc565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160613233818401613171565b90820152610180613245838201613261565b908201526101a0613257838201613261565b9082015292915050565b803564ffffffffff8116811461317c57600080fd5b60006020828403121561328857600080fd5b8135611808816138a5565b6000602082840312156132a557600080fd5b8151611808816138a5565b600080604083850312156132c357600080fd5b82356132ce816138a5565b915060208381013567ffffffffffffffff808211156132ec57600080fd5b818601915086601f83011261330057600080fd5b8135818111156133125761331261388f565b613324601f8201601f191685016137f6565b9150808252878482850101111561333a57600080fd5b80848401858401376000848284010152508093505050509250929050565b60006020828403121561336a57600080fd5b8151611808816138ba565b60006020828403121561338757600080fd5b5051919050565b6000602082840312156133a057600080fd5b81516001600160e01b03198116811461180857600080fd5b600080604083850312156133cb57600080fd5b82356133d6816138a5565b91506020830135600481106133ea57600080fd5b809150509250929050565b6000806040838503121561340857600080fd5b8235613413816138a5565b946020939093013593505050565b60006101c0828403121561343457600080fd5b6118088383613181565b6000806101e0838503121561345257600080fd5b61345c8484613181565b91506101c08301356133ea816138ba565b6000806101e0838503121561348157600080fd5b61348b8484613181565b946101c0939093013593505050565b60006101c082840312156134ad57600080fd5b611808838361319a565b600080600061020084860312156134cd57600080fd5b6134d7858561319a565b92506101c08401356134e8816138a5565b91506101e08401356bffffffffffffffffffffffff8116811461350a57600080fd5b809150509250925092565b60006020828403121561352757600080fd5b61180882613261565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516135b9828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff8116848301526107d4565b600082516135fa81846020870161384d565b9190910192915050565b6001600160a01b038416815261020081016136226020830185613530565b826101e0830152949350505050565b602081016004831061365357634e487b7160e01b600052602160045260246000fd5b91905290565b602081526000825180602084015261367881604085016020870161384d565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6101c08101611bc98284613530565b6040516101c0810167ffffffffffffffff811182821017156137f0576137f061388f565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561381f5761381f61388f565b604052919050565b6000821982111561384857634e487b7160e01b600052601160045260246000fd5b500190565b60005b83811015613868578181015183820152602001613850565b838111156107d45750506000910152565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146105ef57600080fd5b80151581146105ef57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212206631f526a03ad5079b1cf0c89f3823c1ad323096ad33f3ff1e58b78f5f36594464736f6c63430008060033",
920
- "deployedBytecode": "0x6080604052600436106101665760003560e01c806379502c55116100d1578063b63d382e1161008a578063f3fef3a311610064578063f3fef3a314610487578063f67b2bad146104a7578063fcbb17fe146104c9578063ffa600e3146104e957600080fd5b8063b63d382e146103ee578063ca143d181461040e578063e5a6b10f1461045457600080fd5b806379502c551461030a5780637a702b3c146103515780638129fc1c146103715780638456cb5914610386578063917876601461039b578063af02808a146103bb57600080fd5b806352bab1941161012357806352bab1941461023e57806352d1902d1461025e5780635b494dd5146102735780635c975abb146102a757806365b71008146102ca5780636af6f1ef146102ea57600080fd5b806324ea54f41461016b5780633659cfe6146101a05780633f4ba83a146101c257806347e7ef24146101d75780634a47a3e0146101f75780634f1ef2861461022b575b600080fd5b34801561017757600080fd5b5061018d60008051602061393083398151915281565b6040519081526020015b60405180910390f35b3480156101ac57600080fd5b506101c06101bb366004613276565b610509565b005b3480156101ce57600080fd5b506101c06105f2565b3480156101e357600080fd5b506101c06101f23660046133f5565b6106a3565b34801561020357600080fd5b5061018d7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6101c06102393660046132b0565b6107da565b34801561024a57600080fd5b506101c0610259366004613276565b6108a7565b34801561026a57600080fd5b5061018d610c71565b34801561027f57600080fd5b5061018d7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156102b357600080fd5b5060335460ff166040519015158152602001610197565b3480156102d657600080fd5b506101c06102e5366004613276565b610d24565b3480156102f657600080fd5b506101c0610305366004613421565b610f53565b34801561031657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610197565b34801561035d57600080fd5b506101c061036c36600461346d565b610fd7565b34801561037d57600080fd5b506101c0610ff9565b34801561039257600080fd5b506101c06110d3565b3480156103a757600080fd5b5061018d6103b63660046134b7565b611169565b3480156103c757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610339565b3480156103fa57600080fd5b506101c0610409366004613276565b61180f565b34801561041a57600080fd5b50610447610429366004613276565b6001600160a01b0316600090815260c9602052604090205460ff1690565b6040516101979190613631565b34801561046057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610339565b34801561049357600080fd5b5061018d6104a23660046133f5565b611a8c565b3480156104b357600080fd5b5061018d6000805160206138e983398151915281565b3480156104d557600080fd5b506101c06104e43660046133b8565b611bcf565b3480156104f557600080fd5b506101c061050436600461343e565b611e83565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561055b5760405162461bcd60e51b81526004016105529061368c565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105a46000805160206138c9833981519152546001600160a01b031690565b6001600160a01b0316146105ca5760405162461bcd60e51b8152600401610552906136d8565b6105d381611eb6565b604080516000808252602082019092526105ef91839190611f60565b50565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b15801561067f57600080fd5b505afa158015610693573d6000803e3d6000fd5b5050505061069f6120df565b5050565b6106ab612131565b6001600160a01b038216600090815260c9602052604090205460ff1660018160038111156106db576106db613879565b1461071f5760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b6044820152606401610552565b6107546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338585612179565b6040516311f9fbc960e21b8152336004820152602481018390526001600160a01b038416906347e7ef2490604401602060405180830381600087803b15801561079c57600080fd5b505af11580156107b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d49190613375565b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156108235760405162461bcd60e51b81526004016105529061368c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661086c6000805160206138c9833981519152546001600160a01b031690565b6001600160a01b0316146108925760405162461bcd60e51b8152600401610552906136d8565b61089b82611eb6565b61069f82826001611f60565b6040516312d9a6ad60e01b81526000805160206138e983398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561091d57600080fd5b505afa158015610931573d6000803e3d6000fd5b505050506001600160a01b03821661098b5760405162461bcd60e51b815260206004820152601d60248201527f5072656d69756d734163636f756e742063616e2774206265207a65726f0000006044820152606401610552565b306001600160a01b0316826001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ce57600080fd5b505afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a069190613293565b6001600160a01b031614610a6c5760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f74206c696e6b656420746f2074686044820152661a5cc81c1bdbdb60ca1b6064820152608401610552565b6000826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf9190613293565b90506001600160a01b03811615610b4c576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050505b826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8557600080fd5b505afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd9190613293565b90506001600160a01b03811615610c2a576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050505b826001600160a01b03167f834362a634fb37104727a80cf5e936b5b1798edffcf4a89935f19d04eb0e88ec6001604051610c649190613631565b60405180910390a2505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d115760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610552565b506000805160206138c983398151915290565b6040516312d9a6ad60e01b81527f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2760048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015610dac57600080fd5b505afa158015610dc0573d6000803e3d6000fd5b505050506001600160a01b038216600090815260c9602052604090205460ff166002816003811115610df457610df4613879565b14610e395760405162461bcd60e51b815260206004820152601560248201527411551bdad95b881b9bdd0819195c1c9958d85d1959605a1b6044820152606401610552565b826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7257600080fd5b505afa158015610e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaa9190613375565b15610f065760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b6064820152608401610552565b6001600160a01b038316600081815260c96020526040808220805460ff19169055517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610c6491613631565b610f5b612131565b42610f6e6101c083016101a08401613515565b64ffffffffff161115610fbc5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610552565b6105ef610fce3683900383018361349a565b600060016121d3565b610fdf612131565b61069f610ff13684900384018461349a565b8260006121d3565b600054610100900460ff16158080156110195750600054600160ff909116105b806110335750303b158015611033575060005460ff166001145b61104f5760405162461bcd60e51b815260040161055290613724565b6000805460ff191660011790558015611072576000805461ff0019166101001790555b61107a6126a8565b6110826126cf565b61108a6126fe565b80156105ef576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b6040516312d9a6ad60e01b815260008051602061393083398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561114957600080fd5b505afa15801561115d573d6000803e3d6000fd5b505050506105ef61289f565b6000611173612131565b6101608401516001600160a01b03811633146111dd5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b6064820152608401610552565b604051635dfdc5d760e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063bbfb8bae9060240160006040518083038186803b15801561123e57600080fd5b505afa158015611252573d6000803e3d6000fd5b50505050826bffffffffffffffffffffffff166060826001600160a01b0316901b61127d9190613827565b8552611288856128dc565b60ca600087600001518152602001908152602001600020819055506000816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156112de57600080fd5b505afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190613293565b60405163e3638ea360e01b81529091506001600160a01b0382169063e3638ea3906113459089906004016137bd565b600060405180830381600087803b15801561135f57600080fd5b505af1158015611373573d6000803e3d6000fd5b50508751604051632851206560e21b81526001600160a01b03898116600483015260248201929092527f0000000000000000000000000000000000000000000000000000000000000000909116925063a14481949150604401600060405180830381600087803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b50505060c087015161143b91506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169087908490612179565b610140860151156114f3576114f385826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148357600080fd5b505afa158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190613293565b6101408901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b610120860151156115ab576115ab85826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153b57600080fd5b505afa15801561154f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115739190613293565b6101208901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b611677857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190613293565b60e08901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b600086610100015111801561170e5750816001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c057600080fd5b505afa1580156116d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f89190613293565b6001600160a01b0316856001600160a01b031614155b156117c0576117c085836001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b15801561175057600080fd5b505afa158015611764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117889190613293565b6101008901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b876040516117f991906137bd565b60405180910390a25050835190505b9392505050565b6040516312d9a6ad60e01b81526000805160206138e983398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b5050506001600160a01b038316600090815260c9602052604081205460ff1691508160038111156118cc576118cc613879565b146119195760405162461bcd60e51b815260206004820152601a60248201527f65546f6b656e20616c726561647920696e2074686520706f6f6c0000000000006044820152606401610552565b6001600160a01b0383166119665760405162461bcd60e51b815260206004820152601460248201527365546f6b656e2063616e2774206265207a65726f60601b6044820152606401610552565b306001600160a01b0316836001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e19190613293565b6001600160a01b031614611a375760405162461bcd60e51b815260206004820152601e60248201527f45546f6b656e206e6f74206c696e6b656420746f207468697320706f6f6c00006044820152606401610552565b6001600160a01b038316600081815260c9602052604090819020805460ff1916600190811790915590517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610c6491613631565b6000611a96612131565b6001600160a01b038316600090815260c9602052604090205460ff166001816003811115611ac657611ac6613879565b1480611ae357506002816003811115611ae157611ae1613879565b145b611b415760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b6064820152608401610552565b60405163f3fef3a360e01b8152336004820181905260248201859052906001600160a01b0386169063f3fef3a390604401602060405180830381600087803b158015611b8c57600080fd5b505af1158015611ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc49190613375565b925050505b92915050565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b158015611c5c57600080fd5b505afa158015611c70573d6000803e3d6000fd5b5050506001600160a01b038516600090815260c9602052604081205460ff169150816003811115611ca357611ca3613879565b1415611ce45760405162461bcd60e51b815260206004820152601060248201526f11551bdad95b881b9bdd08199bdd5b9960821b6044820152606401610552565b6003846003811115611cf857611cf8613879565b141580611dab5750604051632474521560e21b815260008051602061393083398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b158015611d7357600080fd5b505afa158015611d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dab9190613358565b611e015760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e642065546f6b656e6044820152607360f81b6064820152608401610552565b6001600160a01b038516600090815260c960205260409020805485919060ff19166001836003811115611e3657611e36613879565b0217905550846001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c85604051611e749190613631565b60405180910390a25050505050565b611e8b612131565b61069f611e9d3684900384018461349a565b82611ea9576000611eaf565b83602001355b60006121d3565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b158015611f4357600080fd5b505afa158015611f57573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611f9857611f938361290c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fd157600080fd5b505afa925050508015612001575060408051601f3d908101601f19168201909252611ffe91810190613375565b60015b6120645760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610552565b6000805160206138c983398151915281146120d35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610552565b50611f938383836129a8565b6120e76129cd565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff16156121775760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610552565b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526107d4908590612a16565b6121dc83612ae8565b61016083015181806121f657506001600160a01b03811633145b6122425760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c69636965736044820152606401610552565b82158061225a575042846101a0015164ffffffffff16115b6122a65760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610552565b6040516310f199ef60e31b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063878ccf789060240160006040518083038186803b15801561230757600080fd5b505afa15801561231b573d6000803e3d6000fd5b50505050836020015183111561236c5760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610552565b82158015906124f25784516040516331a9108f60e11b81526000916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636352211e916123c89160040190815260200190565b60206040518083038186803b1580156123e057600080fd5b505afa1580156123f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124189190613293565b9050826001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561245357600080fd5b505afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190613293565b6001600160a01b0316639d8c5ee78288886040518463ffffffff1660e01b81526004016124ba93929190613604565b600060405180830381600087803b1580156124d457600080fd5b505af11580156124e8573d6000803e3d6000fd5b50505050506125c1565b816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561252b57600080fd5b505afa15801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190613293565b6001600160a01b031663c7a9c70d866040518263ffffffff1660e01b815260040161258e91906137bd565b600060405180830381600087803b1580156125a857600080fd5b505af11580156125bc573d6000803e3d6000fd5b505050505b6020850151604051636a448ef160e01b815260048101919091526001600160a01b03831690636a448ef190602401600060405180830381600087803b15801561260957600080fd5b505af115801561261d573d6000803e3d6000fd5b5050505084600001518561016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e8660405161266691815260200190565b60405180910390a38451600090815260ca602052604081205583156126965784516126919085612b4e565b6126a1565b84516126a190612d4c565b5050505050565b600054610100900460ff166121775760405162461bcd60e51b815260040161055290613772565b600054610100900460ff166126f65760405162461bcd60e51b815260040161055290613772565b612177612e92565b600054610100900460ff161580801561271e5750600054600160ff909116105b806127385750303b158015612738575060005460ff166001145b6127545760405162461bcd60e51b815260040161055290613724565b6000805460ff191660011790558015612777576000805461ff0019166101001790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127d257600080fd5b505af11580156127e6573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561284557600080fd5b505af1158015612859573d6000803e3d6000fd5b5050505080156105ef576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016110c8565b6128a7612131565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121143390565b6000816040516020016128ef91906137bd565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381163b6129795760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610552565b6000805160206138c983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6129b183612ec5565b6000825111806129be5750805b15611f93576107d48383612f05565b60335460ff166121775760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610552565b6000612a6b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ff09092919063ffffffff16565b805190915015611f935780806020019051810190612a899190613358565b611f935760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610552565b805115801590612b0f57508051600090815260ca6020526040902054612b0d826128dc565b145b6105ef5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610552565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b158015612bb157600080fd5b505afa158015612bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be99190613293565b90506001600160a01b0381163b612bff57505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044810186905260648101859052608401602060405180830381600087803b158015612c6457600080fd5b505af1925050508015612c94575060408051601f3d908101601f19168201909252612c919181019061338e565b60015b612cdc573d808015612cc2576040519150601f19603f3d011682016040523d82523d6000602084013e612cc7565b606091505b508051612cd45750505050565b805181602001fd5b6001600160e01b03198116636b140e9f60e11b146107d45760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b6064820152608401610552565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b158015612daf57600080fd5b505afa158015612dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de79190613293565b90506001600160a01b0381163b612dfc575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101859052606401602060405180830381600087803b158015612e5a57600080fd5b505af1925050508015612e8a575060408051601f3d908101601f19168201909252612e879181019061338e565b60015b611f93575050565b600054610100900460ff16612eb95760405162461bcd60e51b815260040161055290613772565b6033805460ff19169055565b612ece8161290c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b612f6d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610552565b600080846001600160a01b031684604051612f8891906135e8565b600060405180830381855af49150503d8060008114612fc3576040519150601f19603f3d011682016040523d82523d6000602084013e612fc8565b606091505b5091509150611bc4828260405180606001604052806027815260200161390960279139613007565b6060612fff8484600085613040565b949350505050565b60608315613016575081611808565b8251156130265782518084602001fd5b8160405162461bcd60e51b81526004016105529190613659565b6060824710156130a15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610552565b6001600160a01b0385163b6130f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610552565b600080866001600160a01b0316858760405161311491906135e8565b60006040518083038185875af1925050503d8060008114613151576040519150601f19603f3d011682016040523d82523d6000602084013e613156565b606091505b5091509150613166828286613007565b979650505050505050565b803561317c816138a5565b919050565b60006101c0828403121561319457600080fd5b50919050565b60006101c082840312156131ad57600080fd5b6131b56137cc565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160613233818401613171565b90820152610180613245838201613261565b908201526101a0613257838201613261565b9082015292915050565b803564ffffffffff8116811461317c57600080fd5b60006020828403121561328857600080fd5b8135611808816138a5565b6000602082840312156132a557600080fd5b8151611808816138a5565b600080604083850312156132c357600080fd5b82356132ce816138a5565b915060208381013567ffffffffffffffff808211156132ec57600080fd5b818601915086601f83011261330057600080fd5b8135818111156133125761331261388f565b613324601f8201601f191685016137f6565b9150808252878482850101111561333a57600080fd5b80848401858401376000848284010152508093505050509250929050565b60006020828403121561336a57600080fd5b8151611808816138ba565b60006020828403121561338757600080fd5b5051919050565b6000602082840312156133a057600080fd5b81516001600160e01b03198116811461180857600080fd5b600080604083850312156133cb57600080fd5b82356133d6816138a5565b91506020830135600481106133ea57600080fd5b809150509250929050565b6000806040838503121561340857600080fd5b8235613413816138a5565b946020939093013593505050565b60006101c0828403121561343457600080fd5b6118088383613181565b6000806101e0838503121561345257600080fd5b61345c8484613181565b91506101c08301356133ea816138ba565b6000806101e0838503121561348157600080fd5b61348b8484613181565b946101c0939093013593505050565b60006101c082840312156134ad57600080fd5b611808838361319a565b600080600061020084860312156134cd57600080fd5b6134d7858561319a565b92506101c08401356134e8816138a5565b91506101e08401356bffffffffffffffffffffffff8116811461350a57600080fd5b809150509250925092565b60006020828403121561352757600080fd5b61180882613261565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516135b9828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff8116848301526107d4565b600082516135fa81846020870161384d565b9190910192915050565b6001600160a01b038416815261020081016136226020830185613530565b826101e0830152949350505050565b602081016004831061365357634e487b7160e01b600052602160045260246000fd5b91905290565b602081526000825180602084015261367881604085016020870161384d565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6101c08101611bc98284613530565b6040516101c0810167ffffffffffffffff811182821017156137f0576137f061388f565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561381f5761381f61388f565b604052919050565b6000821982111561384857634e487b7160e01b600052601160045260246000fd5b500190565b60005b83811015613868578181015183820152602001613850565b838111156107d45750506000910152565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146105ef57600080fd5b80151581146105ef57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212206631f526a03ad5079b1cf0c89f3823c1ad323096ad33f3ff1e58b78f5f36594464736f6c63430008060033",
1052
+ "bytecode": "0x6101006040523060601b6080523480156200001957600080fd5b5060405162004715380380620047158339810160408190526200003c9162000064565b6001600160601b0319606093841b811660a05291831b821660e05290911b1660c052620000d1565b6000806000606084860312156200007a57600080fd5b83516200008781620000b8565b60208501519093506200009a81620000b8565b6040850151909250620000ad81620000b8565b809150509250925092565b6001600160a01b0381168114620000ce57600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c61451e620001f7600039600081816104ab0152818161162101528181612f130152818161336801528181613691015261388f01526000818161057701528181610880015281816116940152818161174e015281816118060152818161184401526119930152600081816103bd0152818161079101528181610a2701528181610e6001528181611123015281816111b901528181611a3601528181611d5401528181611f7c015281816121bd015281816122d8015281816123a501528181612472015281816125dc015281816126eb015281816127b8015281816128850152612a23015260008181610668015281816106b101528181610939015281816109790152610d7c015261451e6000f3fe6080604052600436106101d85760003560e01c80637f04870a11610102578063ccdcd9cf11610095578063f67b2bad11610064578063f67b2bad146105db578063f7d72a25146105fd578063fcbb17fe1461061d578063ffa600e31461063d57600080fd5b8063ccdcd9cf14610548578063e5a6b10f14610568578063f0f442601461059b578063f3fef3a3146105bb57600080fd5b8063af02808a116100d1578063af02808a1461049c578063b63d382e146104cf578063c4d66de8146104ef578063ca143d181461050f57600080fd5b80637f04870a146104015780638456cb59146104475780639042cf681461045c578063917876601461047c57600080fd5b806352d1902d1161017a57806365b710081161014957806365b710081461036e5780636af6f1ef1461038e57806371907f17146103ae5780637a702b3c146103e157600080fd5b806352d1902d146102d05780635b494dd5146102e55780635c975abb1461031957806361d027b31461033c57600080fd5b806347e7ef24116101b657806347e7ef24146102495780634a47a3e0146102695780634f1ef2861461029d57806352bab194146102b057600080fd5b806324ea54f4146101dd5780633659cfe6146102125780633f4ba83a14610234575b600080fd5b3480156101e957600080fd5b506101ff6000805160206144c983398151915281565b6040519081526020015b60405180910390f35b34801561021e57600080fd5b5061023261022d366004613daf565b61065d565b005b34801561024057600080fd5b50610232610746565b34801561025557600080fd5b50610232610264366004613f26565b6107f7565b34801561027557600080fd5b506101ff7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102326102ab366004613de9565b61092e565b3480156102bc57600080fd5b506102326102cb366004613daf565b6109fb565b3480156102dc57600080fd5b506101ff610d6f565b3480156102f157600080fd5b506101ff7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561032557600080fd5b5060335460ff166040519015158152602001610209565b34801561034857600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610209565b34801561037a57600080fd5b50610232610389366004613daf565b610e22565b34801561039a57600080fd5b506102326103a9366004613f52565b611051565b3480156103ba57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610356565b3480156103ed57600080fd5b506102326103fc366004613fa9565b6110d5565b34801561040d57600080fd5b5061043a61041c366004613daf565b6001600160a01b0316600090815260cb602052604090205460ff1690565b604051610209919061416d565b34801561045357600080fd5b506102326110f7565b34801561046857600080fd5b50610232610477366004613daf565b61118d565b34801561048857600080fd5b506101ff610497366004613ff3565b6113db565b3480156104a857600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610356565b3480156104db57600080fd5b506102326104ea366004613daf565b611a0a565b3480156104fb57600080fd5b5061023261050a366004613daf565b611c3a565b34801561051b57600080fd5b5061043a61052a366004613daf565b6001600160a01b0316600090815260ca602052604090205460ff1690565b34801561055457600080fd5b50610232610563366004613daf565b611d16565b34801561057457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610356565b3480156105a757600080fd5b506102326105b6366004613daf565b611f50565b3480156105c757600080fd5b506101ff6105d6366004613f26565b61202f565b3480156105e757600080fd5b506101ff60008051602061448283398151915281565b34801561060957600080fd5b50610232610618366004613ef1565b612172565b34801561062957600080fd5b50610232610638366004613ef1565b612591565b34801561064957600080fd5b50610232610658366004613f6f565b6129a5565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156106af5760405162461bcd60e51b81526004016106a6906141c8565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106f8600080516020614462833981519152546001600160a01b031690565b6001600160a01b03161461071e5760405162461bcd60e51b81526004016106a690614214565b610727816129d8565b6040805160008082526020820190925261074391839190612a82565b50565b60405163c5b8f5cf60e01b81526000805160206144c9833981519152600482018190526000805160206144828339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b1580156107d357600080fd5b505afa1580156107e7573d6000803e3d6000fd5b505050506107f3612c01565b5050565b6107ff612c53565b6001600160a01b038216600090815260ca602052604090205460ff16600181600381111561082f5761082f614412565b146108735760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b60448201526064016106a6565b6108a86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338585612c9b565b6040516311f9fbc960e21b8152336004820152602481018390526001600160a01b038416906347e7ef2490604401602060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109289190613eae565b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156109775760405162461bcd60e51b81526004016106a6906141c8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109c0600080516020614462833981519152546001600160a01b031690565b6001600160a01b0316146109e65760405162461bcd60e51b81526004016106a690614214565b6109ef826129d8565b6107f382826001612a82565b6040516312d9a6ad60e01b815260008051602061448283398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015610a7157600080fd5b505afa158015610a85573d6000803e3d6000fd5b50505050306001600160a01b0316826001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b158015610acc57600080fd5b505afa158015610ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b049190613dcc565b6001600160a01b031614610b6a5760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f74206c696e6b656420746f2074686044820152661a5cc81c1bdbdb60ca1b60648201526084016106a6565b6000826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba557600080fd5b505afa158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd9190613dcc565b90506001600160a01b03811615610c4a576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050505b826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8357600080fd5b505afa158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb9190613dcc565b90506001600160a01b03811615610d28576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610d0f57600080fd5b505af1158015610d23573d6000803e3d6000fd5b505050505b826001600160a01b03167f834362a634fb37104727a80cf5e936b5b1798edffcf4a89935f19d04eb0e88ec6001604051610d62919061416d565b60405180910390a2505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e0f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106a6565b5060008051602061446283398151915290565b6040516312d9a6ad60e01b81527f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2760048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015610eaa57600080fd5b505afa158015610ebe573d6000803e3d6000fd5b505050506001600160a01b038216600090815260ca602052604090205460ff166002816003811115610ef257610ef2614412565b14610f375760405162461bcd60e51b815260206004820152601560248201527411551bdad95b881b9bdd0819195c1c9958d85d1959605a1b60448201526064016106a6565b826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7057600080fd5b505afa158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa89190613eae565b156110045760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b60648201526084016106a6565b6001600160a01b038316600081815260ca6020526040808220805460ff19169055517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610d629161416d565b611059612c53565b4261106c6101c083016101a08401614051565b64ffffffffff1611156110ba5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b60448201526064016106a6565b6107436110cc36839003830183613fd6565b60006001612cf5565b6110dd612c53565b6107f36110ef36849003840184613fd6565b826000612cf5565b6040516312d9a6ad60e01b81526000805160206144c983398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561116d57600080fd5b505afa158015611181573d6000803e3d6000fd5b5050505061074361322a565b6040516312d9a6ad60e01b815260008051602061448283398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561120357600080fd5b505afa158015611217573d6000803e3d6000fd5b5060009250611224915050565b6001600160a01b038316600090815260cb602052604090205460ff16600381111561125157611251614412565b1461129e5760405162461bcd60e51b815260206004820152601f60248201527f5269736b204d6f64756c6520616c726561647920696e2074686520706f6f6c0060448201526064016106a6565b306001600160a01b0316826001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e157600080fd5b505afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113199190613dcc565b6001600160a01b03161461137a5760405162461bcd60e51b815260206004820152602260248201527f5269736b4d6f64756c65206e6f74206c696e6b656420746f207468697320706f6044820152611bdb60f21b60648201526084016106a6565b6001600160a01b038216600081815260cb602052604090819020805460ff1916600190811790915590517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b2916113cf9161416d565b60405180910390a25050565b60006113e5612c53565b6101608401516001600160a01b038116331461144f5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b60648201526084016106a6565b60016001600160a01b038216600090815260cb602052604090205460ff16600381111561147e5761147e614412565b146114d55760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b60648201526084016106a6565b6115006bffffffffffffffffffffffff84166bffffffffffffffffffffffff19606084901b166143c0565b855261150b85613267565b60cc600087600001518152602001908152602001600020819055506000816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561156157600080fd5b505afa158015611575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115999190613dcc565b60405163e3638ea360e01b81529091506001600160a01b0382169063e3638ea3906115c8908990600401614356565b600060405180830381600087803b1580156115e257600080fd5b505af11580156115f6573d6000803e3d6000fd5b50508751604051632851206560e21b81526001600160a01b03898116600483015260248201929092527f0000000000000000000000000000000000000000000000000000000000000000909116925063a14481949150604401600060405180830381600087803b15801561166957600080fd5b505af115801561167d573d6000803e3d6000fd5b50505060c08701516116be91506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169087908490612c9b565b610140860151156117765761177685826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561170657600080fd5b505afa15801561171a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173e9190613dcc565b6101408901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612c9b565b6101208601511561182e5761182e85826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117be57600080fd5b505afa1580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f69190613dcc565b6101208901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612c9b565b60c95460e0870151611872916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169289929190911690612c9b565b60008661010001511180156119095750816001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bb57600080fd5b505afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f39190613dcc565b6001600160a01b0316856001600160a01b031614155b156119bb576119bb85836001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b15801561194b57600080fd5b505afa15801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190613dcc565b6101008901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612c9b565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b876040516119f49190614356565b60405180910390a25050835190505b9392505050565b6040516312d9a6ad60e01b815260008051602061448283398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015611a8057600080fd5b505afa158015611a94573d6000803e3d6000fd5b5050506001600160a01b038316600090815260ca602052604081205460ff169150816003811115611ac757611ac7614412565b14611b145760405162461bcd60e51b815260206004820152601a60248201527f65546f6b656e20616c726561647920696e2074686520706f6f6c00000000000060448201526064016106a6565b306001600160a01b0316836001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b158015611b5757600080fd5b505afa158015611b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8f9190613dcc565b6001600160a01b031614611be55760405162461bcd60e51b815260206004820152601e60248201527f45546f6b656e206e6f74206c696e6b656420746f207468697320706f6f6c000060448201526064016106a6565b6001600160a01b038316600081815260ca602052604090819020805460ff1916600190811790915590517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610d629161416d565b600054610100900460ff1615808015611c5a5750600054600160ff909116105b80611c745750303b158015611c74575060005460ff166001145b611c905760405162461bcd60e51b81526004016106a690614260565b6000805460ff191660011790558015611cb3576000805461ff0019166101001790555b611cbb613297565b611cc36132be565b611ccc826132ed565b80156107f3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6040516312d9a6ad60e01b81527fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c060048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015611d9e57600080fd5b505afa158015611db2573d6000803e3d6000fd5b5060009250611dbf915050565b6001600160a01b038316600090815260cb602052604090205460ff166003811115611dec57611dec614412565b1415611e325760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016106a6565b816001600160a01b0316637ff8bf256040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6b57600080fd5b505afa158015611e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea39190613eae565b15611f035760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b60648201526084016106a6565b6001600160a01b038216600081815260cb6020526040808220805460ff19169055517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b2916113cf9161416d565b6040516312d9a6ad60e01b815260008051602061448283398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015611fc657600080fd5b505afa158015611fda573d6000803e3d6000fd5b505060c980546001600160a01b0319166001600160a01b038616908117909155604051908152600192507fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f91506020016113cf565b6000612039612c53565b6001600160a01b038316600090815260ca602052604090205460ff16600181600381111561206957612069614412565b14806120865750600281600381111561208457612084614412565b145b6120e45760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b60648201526084016106a6565b60405163f3fef3a360e01b8152336004820181905260248201859052906001600160a01b0386169063f3fef3a390604401602060405180830381600087803b15801561212f57600080fd5b505af1158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190613eae565b925050505b92915050565b60405163c5b8f5cf60e01b81526000805160206144c9833981519152600482018190526000805160206144828339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b1580156121ff57600080fd5b505afa158015612213573d6000803e3d6000fd5b5060009250612220915050565b6001600160a01b038516600090815260cb602052604090205460ff16600381111561224d5761224d614412565b14156122935760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016106a6565b60018360038111156122a7576122a7614412565b14801561235a5750604051632474521560e21b815260008051602061448283398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b15801561232257600080fd5b505afa158015612336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235a9190613e91565b806124275750600383600381111561237457612374614412565b1480156124275750604051632474521560e21b81526000805160206144c983398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b1580156123ef57600080fd5b505afa158015612403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124279190613e91565b806124f45750600283600381111561244157612441614412565b1480156124f45750604051632474521560e21b815260008051602061448283398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b1580156124bc57600080fd5b505afa1580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f49190613e91565b6125105760405162461bcd60e51b81526004016106a6906142ae565b6001600160a01b038416600090815260cb60205260409020805484919060ff1916600183600381111561254557612545614412565b0217905550836001600160a01b03167fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b284604051612583919061416d565b60405180910390a250505050565b60405163c5b8f5cf60e01b81526000805160206144c9833981519152600482018190526000805160206144828339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b15801561261e57600080fd5b505afa158015612632573d6000803e3d6000fd5b5050506001600160a01b038516600090815260ca602052604081205460ff16915081600381111561266557612665614412565b14156126a65760405162461bcd60e51b815260206004820152601060248201526f11551bdad95b881b9bdd08199bdd5b9960821b60448201526064016106a6565b60018460038111156126ba576126ba614412565b14801561276d5750604051632474521560e21b815260008051602061448283398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b15801561273557600080fd5b505afa158015612749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276d9190613e91565b8061283a5750600384600381111561278757612787614412565b14801561283a5750604051632474521560e21b81526000805160206144c983398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b15801561280257600080fd5b505afa158015612816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283a9190613e91565b806129075750600284600381111561285457612854614412565b1480156129075750604051632474521560e21b815260008051602061448283398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b1580156128cf57600080fd5b505afa1580156128e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129079190613e91565b6129235760405162461bcd60e51b81526004016106a6906142ae565b6001600160a01b038516600090815260ca60205260409020805485919060ff1916600183600381111561295857612958614412565b0217905550846001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c85604051612996919061416d565b60405180910390a25050505050565b6129ad612c53565b6107f36129bf36849003840184613fd6565b826129cb5760006129d1565b83602001355b6000612cf5565b60405163c5b8f5cf60e01b81526000805160206144c9833981519152600482018190526000805160206144828339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b158015612a6557600080fd5b505afa158015612a79573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612aba57612ab583613436565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612af357600080fd5b505afa925050508015612b23575060408051601f3d908101601f19168201909252612b2091810190613eae565b60015b612b865760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106a6565b6000805160206144628339815191528114612bf55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106a6565b50612ab58383836134d2565b612c096134f7565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff1615612c995760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106a6565b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610928908590613540565b612cfe83613612565b6101608301518180612d1857506001600160a01b03811633145b612d645760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c696369657360448201526064016106a6565b821580612d7c575042846101a0015164ffffffffff16115b612dc85760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c696379000000000000000060448201526064016106a6565b60016001600160a01b038216600090815260cb602052604090205460ff166003811115612df757612df7614412565b1480612e2f575060026001600160a01b038216600090815260cb602052604090205460ff166003811115612e2d57612e2d614412565b145b612ea15760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e7300000000000060648201526084016106a6565b8360200151831115612eee5760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b60448201526064016106a6565b82158015906130745784516040516331a9108f60e11b81526000916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636352211e91612f4a9160040190815260200190565b60206040518083038186803b158015612f6257600080fd5b505afa158015612f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9a9190613dcc565b9050826001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b158015612fd557600080fd5b505afa158015612fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300d9190613dcc565b6001600160a01b0316639d8c5ee78288886040518463ffffffff1660e01b815260040161303c93929190614140565b600060405180830381600087803b15801561305657600080fd5b505af115801561306a573d6000803e3d6000fd5b5050505050613143565b816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156130ad57600080fd5b505afa1580156130c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e59190613dcc565b6001600160a01b031663c7a9c70d866040518263ffffffff1660e01b81526004016131109190614356565b600060405180830381600087803b15801561312a57600080fd5b505af115801561313e573d6000803e3d6000fd5b505050505b6020850151604051636a448ef160e01b815260048101919091526001600160a01b03831690636a448ef190602401600060405180830381600087803b15801561318b57600080fd5b505af115801561319f573d6000803e3d6000fd5b5050505084600001518561016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e866040516131e891815260200190565b60405180910390a38451600090815260cc602052604081205583156132185784516132139085613678565b613223565b845161322390613876565b5050505050565b613232612c53565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612c363390565b60008160405160200161327a9190614356565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16612c995760405162461bcd60e51b81526004016106a69061430b565b600054610100900460ff166132e55760405162461bcd60e51b81526004016106a69061430b565b612c996139bc565b600054610100900460ff161580801561330d5750600054600160ff909116105b806133275750303b158015613327575060005460ff166001145b6133435760405162461bcd60e51b81526004016106a690614260565b6000805460ff191660011790558015613366576000805461ff0019166101001790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156133c157600080fd5b505af11580156133d5573d6000803e3d6000fd5b505060c980546001600160a01b0319166001600160a01b038616179055505080156107f3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611d0a565b6001600160a01b0381163b6134a35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106a6565b60008051602061446283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6134db836139ef565b6000825111806134e85750805b15612ab5576109288383613a2f565b60335460ff16612c995760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106a6565b6000613595826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b1a9092919063ffffffff16565b805190915015612ab557808060200190518101906135b39190613e91565b612ab55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a6565b80511580159061363957508051600090815260cc602052604090205461363782613267565b145b6107435760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b60448201526064016106a6565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b1580156136db57600080fd5b505afa1580156136ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137139190613dcc565b90506001600160a01b0381163b61372957505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044810186905260648101859052608401602060405180830381600087803b15801561378e57600080fd5b505af19250505080156137be575060408051601f3d908101601f191682019092526137bb91810190613ec7565b60015b613806573d8080156137ec576040519150601f19603f3d011682016040523d82523d6000602084013e6137f1565b606091505b5080516137fe5750505050565b805181602001fd5b6001600160e01b03198116636b140e9f60e11b146109285760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b60648201526084016106a6565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b1580156138d957600080fd5b505afa1580156138ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139119190613dcc565b90506001600160a01b0381163b613926575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101859052606401602060405180830381600087803b15801561398457600080fd5b505af19250505080156139b4575060408051601f3d908101601f191682019092526139b191810190613ec7565b60015b612ab5575050565b600054610100900460ff166139e35760405162461bcd60e51b81526004016106a69061430b565b6033805460ff19169055565b6139f881613436565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613a975760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016106a6565b600080846001600160a01b031684604051613ab29190614124565b600060405180830381855af49150503d8060008114613aed576040519150601f19603f3d011682016040523d82523d6000602084013e613af2565b606091505b509150915061216782826040518060600160405280602781526020016144a260279139613b31565b6060613b298484600085613b6a565b949350505050565b60608315613b40575081611a03565b825115613b505782518084602001fd5b8160405162461bcd60e51b81526004016106a69190614195565b606082471015613bcb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a6565b6001600160a01b0385163b613c225760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a6565b600080866001600160a01b03168587604051613c3e9190614124565b60006040518083038185875af1925050503d8060008114613c7b576040519150601f19603f3d011682016040523d82523d6000602084013e613c80565b606091505b5091509150613c90828286613b31565b979650505050505050565b8035613ca68161443e565b919050565b803560048110613ca657600080fd5b60006101c08284031215613ccd57600080fd5b50919050565b60006101c08284031215613ce657600080fd5b613cee614365565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160613d6c818401613c9b565b90820152610180613d7e838201613d9a565b908201526101a0613d90838201613d9a565b9082015292915050565b803564ffffffffff81168114613ca657600080fd5b600060208284031215613dc157600080fd5b8135611a038161443e565b600060208284031215613dde57600080fd5b8151611a038161443e565b60008060408385031215613dfc57600080fd5b8235613e078161443e565b915060208381013567ffffffffffffffff80821115613e2557600080fd5b818601915086601f830112613e3957600080fd5b813581811115613e4b57613e4b614428565b613e5d601f8201601f1916850161438f565b91508082528784828501011115613e7357600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215613ea357600080fd5b8151611a0381614453565b600060208284031215613ec057600080fd5b5051919050565b600060208284031215613ed957600080fd5b81516001600160e01b031981168114611a0357600080fd5b60008060408385031215613f0457600080fd5b8235613f0f8161443e565b9150613f1d60208401613cab565b90509250929050565b60008060408385031215613f3957600080fd5b8235613f448161443e565b946020939093013593505050565b60006101c08284031215613f6557600080fd5b611a038383613cba565b6000806101e08385031215613f8357600080fd5b613f8d8484613cba565b91506101c0830135613f9e81614453565b809150509250929050565b6000806101e08385031215613fbd57600080fd5b613fc78484613cba565b946101c0939093013593505050565b60006101c08284031215613fe957600080fd5b611a038383613cd3565b6000806000610200848603121561400957600080fd5b6140138585613cd3565b92506101c08401356140248161443e565b91506101e08401356bffffffffffffffffffffffff8116811461404657600080fd5b809150509250925092565b60006020828403121561406357600080fd5b611a0382613d9a565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516140f5828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff811684830152610928565b600082516141368184602087016143e6565b9190910192915050565b6001600160a01b0384168152610200810161415e602083018561406c565b826101e0830152949350505050565b602081016004831061418f57634e487b7160e01b600052602160045260246000fd5b91905290565b60208152600082518060208401526141b48160408501602087016143e6565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252603e908201527f4f6e6c7920475541524449414e2063616e2073757370656e64202f204f6e6c7960408201527f204c4556454c312063616e2061637469766174652f6465707265636174650000606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6101c0810161216c828461406c565b6040516101c0810167ffffffffffffffff8111828210171561438957614389614428565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156143b8576143b8614428565b604052919050565b600082198211156143e157634e487b7160e01b600052601160045260246000fd5b500190565b60005b838110156144015781810151838201526020016143e9565b838111156109285750506000910152565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461074357600080fd5b801515811461074357600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212208985fee0acad61d24a80030a55277883e1e09496993b188dea7655ae09f411b264736f6c63430008060033",
1053
+ "deployedBytecode": "0x6080604052600436106101d85760003560e01c80637f04870a11610102578063ccdcd9cf11610095578063f67b2bad11610064578063f67b2bad146105db578063f7d72a25146105fd578063fcbb17fe1461061d578063ffa600e31461063d57600080fd5b8063ccdcd9cf14610548578063e5a6b10f14610568578063f0f442601461059b578063f3fef3a3146105bb57600080fd5b8063af02808a116100d1578063af02808a1461049c578063b63d382e146104cf578063c4d66de8146104ef578063ca143d181461050f57600080fd5b80637f04870a146104015780638456cb59146104475780639042cf681461045c578063917876601461047c57600080fd5b806352d1902d1161017a57806365b710081161014957806365b710081461036e5780636af6f1ef1461038e57806371907f17146103ae5780637a702b3c146103e157600080fd5b806352d1902d146102d05780635b494dd5146102e55780635c975abb1461031957806361d027b31461033c57600080fd5b806347e7ef24116101b657806347e7ef24146102495780634a47a3e0146102695780634f1ef2861461029d57806352bab194146102b057600080fd5b806324ea54f4146101dd5780633659cfe6146102125780633f4ba83a14610234575b600080fd5b3480156101e957600080fd5b506101ff6000805160206144c983398151915281565b6040519081526020015b60405180910390f35b34801561021e57600080fd5b5061023261022d366004613daf565b61065d565b005b34801561024057600080fd5b50610232610746565b34801561025557600080fd5b50610232610264366004613f26565b6107f7565b34801561027557600080fd5b506101ff7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102326102ab366004613de9565b61092e565b3480156102bc57600080fd5b506102326102cb366004613daf565b6109fb565b3480156102dc57600080fd5b506101ff610d6f565b3480156102f157600080fd5b506101ff7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561032557600080fd5b5060335460ff166040519015158152602001610209565b34801561034857600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610209565b34801561037a57600080fd5b50610232610389366004613daf565b610e22565b34801561039a57600080fd5b506102326103a9366004613f52565b611051565b3480156103ba57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610356565b3480156103ed57600080fd5b506102326103fc366004613fa9565b6110d5565b34801561040d57600080fd5b5061043a61041c366004613daf565b6001600160a01b0316600090815260cb602052604090205460ff1690565b604051610209919061416d565b34801561045357600080fd5b506102326110f7565b34801561046857600080fd5b50610232610477366004613daf565b61118d565b34801561048857600080fd5b506101ff610497366004613ff3565b6113db565b3480156104a857600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610356565b3480156104db57600080fd5b506102326104ea366004613daf565b611a0a565b3480156104fb57600080fd5b5061023261050a366004613daf565b611c3a565b34801561051b57600080fd5b5061043a61052a366004613daf565b6001600160a01b0316600090815260ca602052604090205460ff1690565b34801561055457600080fd5b50610232610563366004613daf565b611d16565b34801561057457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610356565b3480156105a757600080fd5b506102326105b6366004613daf565b611f50565b3480156105c757600080fd5b506101ff6105d6366004613f26565b61202f565b3480156105e757600080fd5b506101ff60008051602061448283398151915281565b34801561060957600080fd5b50610232610618366004613ef1565b612172565b34801561062957600080fd5b50610232610638366004613ef1565b612591565b34801561064957600080fd5b50610232610658366004613f6f565b6129a5565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156106af5760405162461bcd60e51b81526004016106a6906141c8565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106f8600080516020614462833981519152546001600160a01b031690565b6001600160a01b03161461071e5760405162461bcd60e51b81526004016106a690614214565b610727816129d8565b6040805160008082526020820190925261074391839190612a82565b50565b60405163c5b8f5cf60e01b81526000805160206144c9833981519152600482018190526000805160206144828339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b1580156107d357600080fd5b505afa1580156107e7573d6000803e3d6000fd5b505050506107f3612c01565b5050565b6107ff612c53565b6001600160a01b038216600090815260ca602052604090205460ff16600181600381111561082f5761082f614412565b146108735760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b60448201526064016106a6565b6108a86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338585612c9b565b6040516311f9fbc960e21b8152336004820152602481018390526001600160a01b038416906347e7ef2490604401602060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109289190613eae565b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156109775760405162461bcd60e51b81526004016106a6906141c8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109c0600080516020614462833981519152546001600160a01b031690565b6001600160a01b0316146109e65760405162461bcd60e51b81526004016106a690614214565b6109ef826129d8565b6107f382826001612a82565b6040516312d9a6ad60e01b815260008051602061448283398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015610a7157600080fd5b505afa158015610a85573d6000803e3d6000fd5b50505050306001600160a01b0316826001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b158015610acc57600080fd5b505afa158015610ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b049190613dcc565b6001600160a01b031614610b6a5760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f74206c696e6b656420746f2074686044820152661a5cc81c1bdbdb60ca1b60648201526084016106a6565b6000826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba557600080fd5b505afa158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd9190613dcc565b90506001600160a01b03811615610c4a576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050505b826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8357600080fd5b505afa158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb9190613dcc565b90506001600160a01b03811615610d28576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610d0f57600080fd5b505af1158015610d23573d6000803e3d6000fd5b505050505b826001600160a01b03167f834362a634fb37104727a80cf5e936b5b1798edffcf4a89935f19d04eb0e88ec6001604051610d62919061416d565b60405180910390a2505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e0f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106a6565b5060008051602061446283398151915290565b6040516312d9a6ad60e01b81527f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2760048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015610eaa57600080fd5b505afa158015610ebe573d6000803e3d6000fd5b505050506001600160a01b038216600090815260ca602052604090205460ff166002816003811115610ef257610ef2614412565b14610f375760405162461bcd60e51b815260206004820152601560248201527411551bdad95b881b9bdd0819195c1c9958d85d1959605a1b60448201526064016106a6565b826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7057600080fd5b505afa158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa89190613eae565b156110045760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b60648201526084016106a6565b6001600160a01b038316600081815260ca6020526040808220805460ff19169055517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610d629161416d565b611059612c53565b4261106c6101c083016101a08401614051565b64ffffffffff1611156110ba5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b60448201526064016106a6565b6107436110cc36839003830183613fd6565b60006001612cf5565b6110dd612c53565b6107f36110ef36849003840184613fd6565b826000612cf5565b6040516312d9a6ad60e01b81526000805160206144c983398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561116d57600080fd5b505afa158015611181573d6000803e3d6000fd5b5050505061074361322a565b6040516312d9a6ad60e01b815260008051602061448283398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561120357600080fd5b505afa158015611217573d6000803e3d6000fd5b5060009250611224915050565b6001600160a01b038316600090815260cb602052604090205460ff16600381111561125157611251614412565b1461129e5760405162461bcd60e51b815260206004820152601f60248201527f5269736b204d6f64756c6520616c726561647920696e2074686520706f6f6c0060448201526064016106a6565b306001600160a01b0316826001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e157600080fd5b505afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113199190613dcc565b6001600160a01b03161461137a5760405162461bcd60e51b815260206004820152602260248201527f5269736b4d6f64756c65206e6f74206c696e6b656420746f207468697320706f6044820152611bdb60f21b60648201526084016106a6565b6001600160a01b038216600081815260cb602052604090819020805460ff1916600190811790915590517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b2916113cf9161416d565b60405180910390a25050565b60006113e5612c53565b6101608401516001600160a01b038116331461144f5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b60648201526084016106a6565b60016001600160a01b038216600090815260cb602052604090205460ff16600381111561147e5761147e614412565b146114d55760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b60648201526084016106a6565b6115006bffffffffffffffffffffffff84166bffffffffffffffffffffffff19606084901b166143c0565b855261150b85613267565b60cc600087600001518152602001908152602001600020819055506000816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561156157600080fd5b505afa158015611575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115999190613dcc565b60405163e3638ea360e01b81529091506001600160a01b0382169063e3638ea3906115c8908990600401614356565b600060405180830381600087803b1580156115e257600080fd5b505af11580156115f6573d6000803e3d6000fd5b50508751604051632851206560e21b81526001600160a01b03898116600483015260248201929092527f0000000000000000000000000000000000000000000000000000000000000000909116925063a14481949150604401600060405180830381600087803b15801561166957600080fd5b505af115801561167d573d6000803e3d6000fd5b50505060c08701516116be91506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169087908490612c9b565b610140860151156117765761177685826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561170657600080fd5b505afa15801561171a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173e9190613dcc565b6101408901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612c9b565b6101208601511561182e5761182e85826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117be57600080fd5b505afa1580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f69190613dcc565b6101208901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612c9b565b60c95460e0870151611872916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169289929190911690612c9b565b60008661010001511180156119095750816001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bb57600080fd5b505afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f39190613dcc565b6001600160a01b0316856001600160a01b031614155b156119bb576119bb85836001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b15801561194b57600080fd5b505afa15801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190613dcc565b6101008901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612c9b565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b876040516119f49190614356565b60405180910390a25050835190505b9392505050565b6040516312d9a6ad60e01b815260008051602061448283398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015611a8057600080fd5b505afa158015611a94573d6000803e3d6000fd5b5050506001600160a01b038316600090815260ca602052604081205460ff169150816003811115611ac757611ac7614412565b14611b145760405162461bcd60e51b815260206004820152601a60248201527f65546f6b656e20616c726561647920696e2074686520706f6f6c00000000000060448201526064016106a6565b306001600160a01b0316836001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b158015611b5757600080fd5b505afa158015611b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8f9190613dcc565b6001600160a01b031614611be55760405162461bcd60e51b815260206004820152601e60248201527f45546f6b656e206e6f74206c696e6b656420746f207468697320706f6f6c000060448201526064016106a6565b6001600160a01b038316600081815260ca602052604090819020805460ff1916600190811790915590517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610d629161416d565b600054610100900460ff1615808015611c5a5750600054600160ff909116105b80611c745750303b158015611c74575060005460ff166001145b611c905760405162461bcd60e51b81526004016106a690614260565b6000805460ff191660011790558015611cb3576000805461ff0019166101001790555b611cbb613297565b611cc36132be565b611ccc826132ed565b80156107f3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6040516312d9a6ad60e01b81527fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c060048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015611d9e57600080fd5b505afa158015611db2573d6000803e3d6000fd5b5060009250611dbf915050565b6001600160a01b038316600090815260cb602052604090205460ff166003811115611dec57611dec614412565b1415611e325760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016106a6565b816001600160a01b0316637ff8bf256040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6b57600080fd5b505afa158015611e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea39190613eae565b15611f035760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b60648201526084016106a6565b6001600160a01b038216600081815260cb6020526040808220805460ff19169055517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b2916113cf9161416d565b6040516312d9a6ad60e01b815260008051602061448283398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015611fc657600080fd5b505afa158015611fda573d6000803e3d6000fd5b505060c980546001600160a01b0319166001600160a01b038616908117909155604051908152600192507fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f91506020016113cf565b6000612039612c53565b6001600160a01b038316600090815260ca602052604090205460ff16600181600381111561206957612069614412565b14806120865750600281600381111561208457612084614412565b145b6120e45760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b60648201526084016106a6565b60405163f3fef3a360e01b8152336004820181905260248201859052906001600160a01b0386169063f3fef3a390604401602060405180830381600087803b15801561212f57600080fd5b505af1158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190613eae565b925050505b92915050565b60405163c5b8f5cf60e01b81526000805160206144c9833981519152600482018190526000805160206144828339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b1580156121ff57600080fd5b505afa158015612213573d6000803e3d6000fd5b5060009250612220915050565b6001600160a01b038516600090815260cb602052604090205460ff16600381111561224d5761224d614412565b14156122935760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016106a6565b60018360038111156122a7576122a7614412565b14801561235a5750604051632474521560e21b815260008051602061448283398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b15801561232257600080fd5b505afa158015612336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235a9190613e91565b806124275750600383600381111561237457612374614412565b1480156124275750604051632474521560e21b81526000805160206144c983398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b1580156123ef57600080fd5b505afa158015612403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124279190613e91565b806124f45750600283600381111561244157612441614412565b1480156124f45750604051632474521560e21b815260008051602061448283398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b1580156124bc57600080fd5b505afa1580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f49190613e91565b6125105760405162461bcd60e51b81526004016106a6906142ae565b6001600160a01b038416600090815260cb60205260409020805484919060ff1916600183600381111561254557612545614412565b0217905550836001600160a01b03167fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b284604051612583919061416d565b60405180910390a250505050565b60405163c5b8f5cf60e01b81526000805160206144c9833981519152600482018190526000805160206144828339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b15801561261e57600080fd5b505afa158015612632573d6000803e3d6000fd5b5050506001600160a01b038516600090815260ca602052604081205460ff16915081600381111561266557612665614412565b14156126a65760405162461bcd60e51b815260206004820152601060248201526f11551bdad95b881b9bdd08199bdd5b9960821b60448201526064016106a6565b60018460038111156126ba576126ba614412565b14801561276d5750604051632474521560e21b815260008051602061448283398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b15801561273557600080fd5b505afa158015612749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276d9190613e91565b8061283a5750600384600381111561278757612787614412565b14801561283a5750604051632474521560e21b81526000805160206144c983398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b15801561280257600080fd5b505afa158015612816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283a9190613e91565b806129075750600284600381111561285457612854614412565b1480156129075750604051632474521560e21b815260008051602061448283398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b1580156128cf57600080fd5b505afa1580156128e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129079190613e91565b6129235760405162461bcd60e51b81526004016106a6906142ae565b6001600160a01b038516600090815260ca60205260409020805485919060ff1916600183600381111561295857612958614412565b0217905550846001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c85604051612996919061416d565b60405180910390a25050505050565b6129ad612c53565b6107f36129bf36849003840184613fd6565b826129cb5760006129d1565b83602001355b6000612cf5565b60405163c5b8f5cf60e01b81526000805160206144c9833981519152600482018190526000805160206144828339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b158015612a6557600080fd5b505afa158015612a79573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612aba57612ab583613436565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612af357600080fd5b505afa925050508015612b23575060408051601f3d908101601f19168201909252612b2091810190613eae565b60015b612b865760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106a6565b6000805160206144628339815191528114612bf55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106a6565b50612ab58383836134d2565b612c096134f7565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff1615612c995760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106a6565b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610928908590613540565b612cfe83613612565b6101608301518180612d1857506001600160a01b03811633145b612d645760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c696369657360448201526064016106a6565b821580612d7c575042846101a0015164ffffffffff16115b612dc85760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c696379000000000000000060448201526064016106a6565b60016001600160a01b038216600090815260cb602052604090205460ff166003811115612df757612df7614412565b1480612e2f575060026001600160a01b038216600090815260cb602052604090205460ff166003811115612e2d57612e2d614412565b145b612ea15760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e7300000000000060648201526084016106a6565b8360200151831115612eee5760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b60448201526064016106a6565b82158015906130745784516040516331a9108f60e11b81526000916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636352211e91612f4a9160040190815260200190565b60206040518083038186803b158015612f6257600080fd5b505afa158015612f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9a9190613dcc565b9050826001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b158015612fd557600080fd5b505afa158015612fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300d9190613dcc565b6001600160a01b0316639d8c5ee78288886040518463ffffffff1660e01b815260040161303c93929190614140565b600060405180830381600087803b15801561305657600080fd5b505af115801561306a573d6000803e3d6000fd5b5050505050613143565b816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156130ad57600080fd5b505afa1580156130c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e59190613dcc565b6001600160a01b031663c7a9c70d866040518263ffffffff1660e01b81526004016131109190614356565b600060405180830381600087803b15801561312a57600080fd5b505af115801561313e573d6000803e3d6000fd5b505050505b6020850151604051636a448ef160e01b815260048101919091526001600160a01b03831690636a448ef190602401600060405180830381600087803b15801561318b57600080fd5b505af115801561319f573d6000803e3d6000fd5b5050505084600001518561016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e866040516131e891815260200190565b60405180910390a38451600090815260cc602052604081205583156132185784516132139085613678565b613223565b845161322390613876565b5050505050565b613232612c53565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612c363390565b60008160405160200161327a9190614356565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16612c995760405162461bcd60e51b81526004016106a69061430b565b600054610100900460ff166132e55760405162461bcd60e51b81526004016106a69061430b565b612c996139bc565b600054610100900460ff161580801561330d5750600054600160ff909116105b806133275750303b158015613327575060005460ff166001145b6133435760405162461bcd60e51b81526004016106a690614260565b6000805460ff191660011790558015613366576000805461ff0019166101001790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156133c157600080fd5b505af11580156133d5573d6000803e3d6000fd5b505060c980546001600160a01b0319166001600160a01b038616179055505080156107f3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611d0a565b6001600160a01b0381163b6134a35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106a6565b60008051602061446283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6134db836139ef565b6000825111806134e85750805b15612ab5576109288383613a2f565b60335460ff16612c995760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106a6565b6000613595826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b1a9092919063ffffffff16565b805190915015612ab557808060200190518101906135b39190613e91565b612ab55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a6565b80511580159061363957508051600090815260cc602052604090205461363782613267565b145b6107435760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b60448201526064016106a6565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b1580156136db57600080fd5b505afa1580156136ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137139190613dcc565b90506001600160a01b0381163b61372957505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044810186905260648101859052608401602060405180830381600087803b15801561378e57600080fd5b505af19250505080156137be575060408051601f3d908101601f191682019092526137bb91810190613ec7565b60015b613806573d8080156137ec576040519150601f19603f3d011682016040523d82523d6000602084013e6137f1565b606091505b5080516137fe5750505050565b805181602001fd5b6001600160e01b03198116636b140e9f60e11b146109285760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b60648201526084016106a6565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b1580156138d957600080fd5b505afa1580156138ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139119190613dcc565b90506001600160a01b0381163b613926575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101859052606401602060405180830381600087803b15801561398457600080fd5b505af19250505080156139b4575060408051601f3d908101601f191682019092526139b191810190613ec7565b60015b612ab5575050565b600054610100900460ff166139e35760405162461bcd60e51b81526004016106a69061430b565b6033805460ff19169055565b6139f881613436565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613a975760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016106a6565b600080846001600160a01b031684604051613ab29190614124565b600060405180830381855af49150503d8060008114613aed576040519150601f19603f3d011682016040523d82523d6000602084013e613af2565b606091505b509150915061216782826040518060600160405280602781526020016144a260279139613b31565b6060613b298484600085613b6a565b949350505050565b60608315613b40575081611a03565b825115613b505782518084602001fd5b8160405162461bcd60e51b81526004016106a69190614195565b606082471015613bcb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a6565b6001600160a01b0385163b613c225760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a6565b600080866001600160a01b03168587604051613c3e9190614124565b60006040518083038185875af1925050503d8060008114613c7b576040519150601f19603f3d011682016040523d82523d6000602084013e613c80565b606091505b5091509150613c90828286613b31565b979650505050505050565b8035613ca68161443e565b919050565b803560048110613ca657600080fd5b60006101c08284031215613ccd57600080fd5b50919050565b60006101c08284031215613ce657600080fd5b613cee614365565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160613d6c818401613c9b565b90820152610180613d7e838201613d9a565b908201526101a0613d90838201613d9a565b9082015292915050565b803564ffffffffff81168114613ca657600080fd5b600060208284031215613dc157600080fd5b8135611a038161443e565b600060208284031215613dde57600080fd5b8151611a038161443e565b60008060408385031215613dfc57600080fd5b8235613e078161443e565b915060208381013567ffffffffffffffff80821115613e2557600080fd5b818601915086601f830112613e3957600080fd5b813581811115613e4b57613e4b614428565b613e5d601f8201601f1916850161438f565b91508082528784828501011115613e7357600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215613ea357600080fd5b8151611a0381614453565b600060208284031215613ec057600080fd5b5051919050565b600060208284031215613ed957600080fd5b81516001600160e01b031981168114611a0357600080fd5b60008060408385031215613f0457600080fd5b8235613f0f8161443e565b9150613f1d60208401613cab565b90509250929050565b60008060408385031215613f3957600080fd5b8235613f448161443e565b946020939093013593505050565b60006101c08284031215613f6557600080fd5b611a038383613cba565b6000806101e08385031215613f8357600080fd5b613f8d8484613cba565b91506101c0830135613f9e81614453565b809150509250929050565b6000806101e08385031215613fbd57600080fd5b613fc78484613cba565b946101c0939093013593505050565b60006101c08284031215613fe957600080fd5b611a038383613cd3565b6000806000610200848603121561400957600080fd5b6140138585613cd3565b92506101c08401356140248161443e565b91506101e08401356bffffffffffffffffffffffff8116811461404657600080fd5b809150509250925092565b60006020828403121561406357600080fd5b611a0382613d9a565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516140f5828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff811684830152610928565b600082516141368184602087016143e6565b9190910192915050565b6001600160a01b0384168152610200810161415e602083018561406c565b826101e0830152949350505050565b602081016004831061418f57634e487b7160e01b600052602160045260246000fd5b91905290565b60208152600082518060208401526141b48160408501602087016143e6565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252603e908201527f4f6e6c7920475541524449414e2063616e2073757370656e64202f204f6e6c7960408201527f204c4556454c312063616e2061637469766174652f6465707265636174650000606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6101c0810161216c828461406c565b6040516101c0810167ffffffffffffffff8111828210171561438957614389614428565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156143b8576143b8614428565b604052919050565b600082198211156143e157634e487b7160e01b600052601160045260246000fd5b500190565b60005b838110156144015781810151838201526020016143e9565b838111156109285750506000910152565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461074357600080fd5b801515811461074357600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212208985fee0acad61d24a80030a55277883e1e09496993b188dea7655ae09f411b264736f6c63430008060033",
921
1054
  "linkReferences": {},
922
1055
  "deployedLinkReferences": {}
923
1056
  }
@@ -40,7 +40,7 @@
40
40
  "inputs": [
41
41
  {
42
42
  "indexed": true,
43
- "internalType": "enum IPolicyPoolConfig.GovernanceActions",
43
+ "internalType": "enum IAccessManager.GovernanceActions",
44
44
  "name": "action",
45
45
  "type": "uint8"
46
46
  },
@@ -59,7 +59,7 @@
59
59
  "inputs": [
60
60
  {
61
61
  "indexed": true,
62
- "internalType": "enum IPolicyPoolConfig.GovernanceActions",
62
+ "internalType": "enum IAccessManager.GovernanceActions",
63
63
  "name": "action",
64
64
  "type": "uint8"
65
65
  },