@venusprotocol/venus-protocol 10.1.0-slim-dev.6 → 10.1.0-slim-dev.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/artifacts/contracts/Admin/VBNBAdmin.sol/VBNBAdmin.json +2 -2
  2. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/VBNBAdminStorage.json +2 -2
  3. package/artifacts/contracts/Comptroller/ComptrollerInterface.sol/ComptrollerInterface.json +65 -0
  4. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV10Storage.json +2 -2
  5. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV11Storage.json +2 -2
  6. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV12Storage.json +2 -2
  7. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV13Storage.json +2 -2
  8. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV14Storage.json +2 -2
  9. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV15Storage.json +2 -2
  10. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV16Storage.json +2 -2
  11. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV17Storage.json +2 -2
  12. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV18Storage.json +736 -0
  13. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV1Storage.json +2 -2
  14. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV2Storage.json +2 -2
  15. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV3Storage.json +2 -2
  16. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV4Storage.json +2 -2
  17. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV5Storage.json +2 -2
  18. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV6Storage.json +2 -2
  19. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV7Storage.json +2 -2
  20. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV8Storage.json +2 -2
  21. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV9Storage.json +2 -2
  22. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/UnitrollerAdminStorage.json +2 -2
  23. package/artifacts/contracts/Comptroller/Diamond/Diamond.sol/Diamond.json +34 -2
  24. package/artifacts/contracts/Comptroller/Diamond/DiamondConsolidated.sol/DiamondConsolidated.json +310 -2
  25. package/artifacts/contracts/Comptroller/Diamond/facets/FacetBase.sol/FacetBase.json +128 -2
  26. package/artifacts/contracts/Comptroller/Diamond/facets/FlashLoanFacet.sol/FlashLoanFacet.json +1208 -0
  27. package/artifacts/contracts/Comptroller/Diamond/facets/MarketFacet.sol/MarketFacet.json +128 -2
  28. package/artifacts/contracts/Comptroller/Diamond/facets/PolicyFacet.sol/PolicyFacet.json +128 -2
  29. package/artifacts/contracts/Comptroller/Diamond/facets/RewardFacet.sol/RewardFacet.json +128 -2
  30. package/artifacts/contracts/Comptroller/Diamond/facets/SetterFacet.sol/SetterFacet.json +197 -2
  31. package/artifacts/contracts/Comptroller/Diamond/facets/XVSRewardsHelper.sol/XVSRewardsHelper.json +128 -2
  32. package/artifacts/contracts/Comptroller/Diamond/interfaces/IFlashLoanFacet.sol/IFlashLoanFacet.json +44 -0
  33. package/artifacts/contracts/Comptroller/Diamond/interfaces/ISetterFacet.sol/ISetterFacet.json +31 -0
  34. package/artifacts/contracts/Comptroller/Unitroller.sol/Unitroller.json +96 -2
  35. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV10StorageR1.json +2 -2
  36. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV11StorageR1.json +2 -2
  37. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV12StorageR1.json +2 -2
  38. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV13StorageR1.json +2 -2
  39. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV14StorageR1.json +2 -2
  40. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV15StorageR1.json +2 -2
  41. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV16StorageR1.json +2 -2
  42. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV1StorageR1.json +2 -2
  43. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV2StorageR1.json +2 -2
  44. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV3StorageR1.json +2 -2
  45. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV4StorageR1.json +2 -2
  46. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV5StorageR1.json +2 -2
  47. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV6StorageR1.json +2 -2
  48. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV7StorageR1.json +2 -2
  49. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV8StorageR1.json +2 -2
  50. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV9StorageR1.json +2 -2
  51. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/UnitrollerAdminStorageR1.json +2 -2
  52. package/artifacts/contracts/Comptroller/legacy/Diamond/DiamondConsolidatedR1.sol/DiamondConsolidatedR1.json +96 -2
  53. package/artifacts/contracts/Comptroller/legacy/Diamond/DiamondR1.sol/DiamondR1.json +2 -2
  54. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/FacetBaseR1.sol/FacetBaseR1.json +96 -2
  55. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/MarketFacetR1.sol/MarketFacetR1.json +96 -2
  56. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/PolicyFacetR1.sol/PolicyFacetR1.json +96 -2
  57. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/RewardFacetR1.sol/RewardFacetR1.json +96 -2
  58. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/SetterFacetR1.sol/SetterFacetR1.json +96 -2
  59. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/XVSRewardsHelperR1.sol/XVSRewardsHelperR1.json +96 -2
  60. package/artifacts/contracts/FlashLoan/interfaces/IFlashLoanReceiver.sol/IFlashLoanReceiver.json +60 -0
  61. package/artifacts/contracts/Lens/ComptrollerLens.sol/ComptrollerLens.json +96 -2
  62. package/artifacts/contracts/Lens/SnapshotLens.sol/SnapshotLens.json +2 -2
  63. package/artifacts/contracts/Lens/VenusLens.sol/VenusLens.json +2 -2
  64. package/artifacts/contracts/Liquidator/Liquidator.sol/Liquidator.json +2 -2
  65. package/artifacts/contracts/Tokens/VAI/VAIController.sol/VAIController.json +2 -2
  66. package/artifacts/contracts/Tokens/VAI/VAIControllerStorage.sol/VAIControllerStorageG1.json +2 -2
  67. package/artifacts/contracts/Tokens/VAI/VAIControllerStorage.sol/VAIControllerStorageG2.json +2 -2
  68. package/artifacts/contracts/Tokens/VAI/VAIControllerStorage.sol/VAIControllerStorageG3.json +2 -2
  69. package/artifacts/contracts/Tokens/VAI/VAIControllerStorage.sol/VAIControllerStorageG4.json +2 -2
  70. package/artifacts/contracts/Tokens/VAI/VAIControllerStorage.sol/VAIUnitrollerAdminStorage.json +2 -2
  71. package/artifacts/contracts/Tokens/VAI/VAIUnitroller.sol/VAIUnitroller.json +2 -2
  72. package/artifacts/contracts/Tokens/VTokens/VBNB.sol/VBNB.json +372 -2
  73. package/artifacts/contracts/Tokens/VTokens/VBep20.sol/VBep20.json +372 -2
  74. package/artifacts/contracts/Tokens/VTokens/VBep20Delegate.sol/VBep20Delegate.json +372 -2
  75. package/artifacts/contracts/Tokens/VTokens/VBep20Delegator.sol/VBep20Delegator.json +229 -2
  76. package/artifacts/contracts/Tokens/VTokens/VBep20Immutable.sol/VBep20Immutable.json +372 -2
  77. package/artifacts/contracts/Tokens/VTokens/VToken.sol/VToken.json +370 -0
  78. package/artifacts/contracts/Tokens/VTokens/VTokenInterfaces.sol/VTokenInterface.json +227 -0
  79. package/artifacts/contracts/Tokens/VTokens/VTokenInterfaces.sol/VTokenStorage.json +54 -2
  80. package/artifacts/contracts/Tokens/VTokens/VTokenInterfaces.sol/VTokenStorageBase.json +2 -2
  81. package/artifacts/contracts/Tokens/test/IERC20NonStandard.sol/IERC20NonStandard.json +182 -0
  82. package/artifacts/contracts/Utils/ErrorReporter.sol/ComptrollerErrorReporter.json +96 -2
  83. package/artifacts/contracts/Utils/ErrorReporter.sol/TokenErrorReporter.json +2 -2
  84. package/artifacts/contracts/Utils/ErrorReporter.sol/VAIControllerErrorReporter.json +2 -2
  85. package/artifacts/contracts/Utils/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +16 -0
  86. package/artifacts/contracts/Utils/TransientSlot.sol/TransientSlot.json +10 -0
  87. package/artifacts/contracts/test/BadFlashLoanReceiver.sol/BadFlashLoanReceiver.json +112 -0
  88. package/artifacts/contracts/test/BorrowDebtFlashLoanReceiver.sol/BorrowDebtFlashLoanReceiver.json +112 -0
  89. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +310 -2
  90. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +2 -2
  91. package/artifacts/contracts/test/ComptrollerMock.sol/ComptrollerMock.json +310 -2
  92. package/artifacts/contracts/test/ComptrollerMockR1.sol/ComptrollerMockR1.json +96 -2
  93. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +310 -2
  94. package/artifacts/contracts/test/DiamondHarness.sol/DiamondHarness.json +34 -2
  95. package/artifacts/contracts/test/EvilXDelegator.sol/EvilXDelegator.json +253 -2
  96. package/artifacts/contracts/test/EvilXToken.sol/EvilXToken.json +372 -2
  97. package/artifacts/contracts/test/EvilXToken.sol/VBep20Scenario.json +372 -2
  98. package/artifacts/contracts/test/FlashLoanReceiverBase.sol/FlashLoanReceiverBase.json +73 -0
  99. package/artifacts/contracts/test/InsufficientRepaymentFlashLoanReceiver.sol/InsufficientRepaymentFlashLoanReceiver.json +112 -0
  100. package/artifacts/contracts/test/LiquidatorHarness.sol/LiquidatorHarness.json +2 -2
  101. package/artifacts/contracts/test/MockFlashLoanReceiver.sol/MockFlashLoanReceiver.json +112 -0
  102. package/artifacts/contracts/test/MockProtocolShareReserve.sol/MockProtocolShareReserve.json +2 -2
  103. package/artifacts/contracts/test/MockVBNB.sol/MockVBNB.json +372 -2
  104. package/artifacts/contracts/test/SimplePriceOracle.sol/SimplePriceOracle.json +2 -2
  105. package/artifacts/contracts/test/VAIControllerHarness.sol/VAIControllerHarness.json +2 -2
  106. package/artifacts/contracts/test/VBep20Harness.sol/VBep20DelegateHarness.json +372 -2
  107. package/artifacts/contracts/test/VBep20Harness.sol/VBep20DelegateScenario.json +372 -2
  108. package/artifacts/contracts/test/VBep20Harness.sol/VBep20DelegateScenarioExtra.json +372 -2
  109. package/artifacts/contracts/test/VBep20Harness.sol/VBep20DelegatorScenario.json +213 -42
  110. package/artifacts/contracts/test/VBep20Harness.sol/VBep20Harness.json +372 -2
  111. package/artifacts/contracts/test/VBep20Harness.sol/VBep20Scenario.json +372 -2
  112. package/artifacts/contracts/test/VBep20Harness.sol/VEvil.json +372 -2
  113. package/artifacts/contracts/test/VBep20MockDelegate.sol/VBep20MockDelegate.json +372 -2
  114. package/deployments/bscmainnet_addresses.json +8 -7
  115. package/deployments/bsctestnet_addresses.json +8 -7
  116. package/package.json +3 -2
@@ -130,6 +130,25 @@
130
130
  "stateMutability": "view",
131
131
  "type": "function"
132
132
  },
133
+ {
134
+ "inputs": [
135
+ {
136
+ "internalType": "address",
137
+ "name": "",
138
+ "type": "address"
139
+ }
140
+ ],
141
+ "name": "authorizedFlashLoan",
142
+ "outputs": [
143
+ {
144
+ "internalType": "bool",
145
+ "name": "",
146
+ "type": "bool"
147
+ }
148
+ ],
149
+ "stateMutability": "view",
150
+ "type": "function"
151
+ },
133
152
  {
134
153
  "inputs": [],
135
154
  "name": "borrowCapGuardian",
@@ -338,6 +357,19 @@
338
357
  "stateMutability": "view",
339
358
  "type": "function"
340
359
  },
360
+ {
361
+ "inputs": [],
362
+ "name": "flashLoanPaused",
363
+ "outputs": [
364
+ {
365
+ "internalType": "bool",
366
+ "name": "",
367
+ "type": "bool"
368
+ }
369
+ ],
370
+ "stateMutability": "view",
371
+ "type": "function"
372
+ },
341
373
  {
342
374
  "inputs": [
343
375
  {
@@ -900,8 +932,8 @@
900
932
  "type": "function"
901
933
  }
902
934
  ],
903
- "bytecode": "0x6080604052348015600e575f80fd5b506120438061001c5f395ff3fe608060405234801561000f575f80fd5b50600436106102d4575f3560e01c80638c1ac18a11610180578063bec04f72116100e7578063dcfbc0c7116100a0578063e87554461161007a578063e8755446146108c7578063f445d703146108d0578063f851a440146108fd578063fa6331d81461090f576102d4565b8063dcfbc0c71461086a578063e37d4b791461087d578063e57e69c6146108b4576102d4565b8063bec04f721461077f578063c5f956af14610788578063c7ee005e1461079b578063cdffacc6146107ae578063d3270f9914610844578063dce1544914610857576102d4565b8063a657e57911610139578063a657e579146106ac578063adfca15e146106bf578063b2eafc39146106df578063b8324c7c146106f2578063bb82aa5e1461074d578063bbb8864a14610760576102d4565b80638c1ac18a1461060e5780638f738f36146106305780639254f5e51461065b57806394b2294b1461066e57806396c99064146106775780639bb27d6214610699576102d4565b8063425fad581161023f57806373769099116101f85780637a0ed627116101d25780637a0ed627146105b45780637d172bd5146105c95780637dc0d1d0146105dc5780638a7dc165146105ef576102d4565b8063737690991461054f578063765513831461058f5780637a070c2d146105a1576102d4565b8063425fad58146104cd5780634a584432146104e057806352d84d1e146104ff57806352ef6b2c146105125780635dd3fc9d14610527578063719f701b14610546576102d4565b806321af45691161029157806321af45691461042657806324a3d6221461045157806326782247146104645780632bc7e29e146104775780634088c73e1461049657806341a18d2c146104a3576102d4565b806302c3bcbb1461036857806304ef9d581461039a57806308e0225c146103a35780630db4b4e5146103cd57806310b98338146103d65780631d504dc614610413575b5f80356001600160e01b0319168152602e60205260409020546001600160a01b0316806103485760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b365f80375f80365f845af43d5f803e808015610362573d5ff35b3d5ffd5b005b610387610376366004611977565b60276020525f908152604090205481565b6040519081526020015b60405180910390f35b61038760225481565b6103876103b1366004611999565b601360209081525f928352604080842090915290825290205481565b610387601d5481565b6104036103e4366004611999565b602c60209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610391565b610366610421366004611977565b610918565b601e54610439906001600160a01b031681565b6040516001600160a01b039091168152602001610391565b600a54610439906001600160a01b031681565b600154610439906001600160a01b031681565b610387610485366004611977565b60166020525f908152604090205481565b6018546104039060ff1681565b6103876104b1366004611999565b601260209081525f928352604080842090915290825290205481565b6018546104039062010000900460ff1681565b6103876104ee366004611977565b601f6020525f908152604090205481565b61043961050d3660046119d0565b610a76565b61051a610a9e565b60405161039191906119e7565b610387610535366004611977565b602b6020525f908152604090205481565b610387601c5481565b61057761055d366004611977565b60356020525f90815260409020546001600160601b031681565b6040516001600160601b039091168152602001610391565b60185461040390610100900460ff1681565b6104396105af366004611a4f565b610afe565b6105bc610b73565b6040516103919190611aac565b601b54610439906001600160a01b031681565b600454610439906001600160a01b031681565b6103876105fd366004611977565b60146020525f908152604090205481565b61040361061c366004611977565b602d6020525f908152604090205460ff1681565b61038761063e366004611977565b6001600160a01b03165f908152602f602052604090206001015490565b601554610439906001600160a01b031681565b61038760075481565b61068a610685366004611b29565b610cf7565b60405161039193929190611b7d565b602554610439906001600160a01b031681565b603754610577906001600160601b031681565b6106d26106cd366004611977565b610da4565b6040516103919190611ba6565b602054610439906001600160a01b031681565b610729610700366004611977565b60106020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b604080516001600160e01b03909316835263ffffffff909116602083015201610391565b600254610439906001600160a01b031681565b61038761076e366004611977565b602a6020525f908152604090205481565b61038760175481565b602154610439906001600160a01b031681565b603154610439906001600160a01b031681565b6108176107bc366004611a4f565b604080518082019091525f8082526020820152506001600160e01b0319165f908152602e60209081526040918290208251808401909352546001600160a01b0381168352600160a01b90046001600160601b03169082015290565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610391565b602654610439906001600160a01b031681565b610439610865366004611bb8565b610e39565b600354610439906001600160a01b031681565b61072961088b366004611977565b60116020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b6103666108c2366004611c73565b610e6d565b61038760055481565b6104036108de366004611999565b603260209081525f928352604080842090915290825290205460ff1681565b5f54610439906001600160a01b031681565b610387601a5481565b806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610954573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109789190611dd9565b6001600160a01b0316336001600160a01b0316146109d45760405162461bcd60e51b815260206004820152601960248201527837b7363c903ab734ba3937b63632b91030b236b4b71031b0b760391b604482015260640161033f565b806001600160a01b031663c1e803346040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610a11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a359190611df4565b15610a735760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161033f565b50565b600d8181548110610a85575f80fd5b5f918252602090912001546001600160a01b0316905081565b60606030805480602002602001604051908101604052809291908181526020018280548015610af457602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610ad6575b5050505050905090565b6001600160e01b031981165f908152602e60205260408120546001600160a01b031680610b6d5760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604482015260640161033f565b92915050565b6030546060905f8167ffffffffffffffff811115610b9357610b93611be2565b604051908082528060200260200182016040528015610bd857816020015b604080518082019091525f815260606020820152815260200190600190039081610bb15790505b5090505f5b82811015610cf0575f60308281548110610bf957610bf9611e0b565b905f5260205f20015f9054906101000a90046001600160a01b0316905080838381518110610c2957610c29611e0b565b6020908102919091018101516001600160a01b0392831690529082165f908152602f825260409081902080548251818502810185019093528083529192909190830182828015610cc257602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610c845790505b5050505050838381518110610cd957610cd9611e0b565b602090810291909101810151015250600101610bdd565b5092915050565b60366020525f9081526040902080548190610d1190611e1f565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3d90611e1f565b8015610d885780601f10610d5f57610100808354040283529160200191610d88565b820191905f5260205f20905b815481529060010190602001808311610d6b57829003601f168201915b5050506002909301549192505060ff8082169161010090041683565b6001600160a01b0381165f908152602f6020908152604091829020805483518184028101840190945280845260609392830182828015610e2d57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610def5790505b50505050509050919050565b6008602052815f5260405f208181548110610e52575f80fd5b5f918252602090912001546001600160a01b03169150829050565b5f546001600160a01b03163314610ec25760405162461bcd60e51b815260206004820152601960248201527837b7363c903ab734ba3937b63632b91030b236b4b71031b0b760391b604482015260640161033f565b610a738180515f5b8181101561107d575f838281518110610ee557610ee5611e0b565b60200260200101516020015190505f6002811115610f0557610f05611e57565b816002811115610f1757610f17611e57565b03610f6457610f5f848381518110610f3157610f31611e0b565b60200260200101515f0151858481518110610f4e57610f4e611e0b565b6020026020010151604001516110b9565b611074565b6001816002811115610f7857610f78611e57565b03610fc057610f5f848381518110610f9257610f92611e0b565b60200260200101515f0151858481518110610faf57610faf611e0b565b602002602001015160400151611218565b6002816002811115610fd457610fd4611e57565b0361101c57610f5f848381518110610fee57610fee611e0b565b60200260200101515f015185848151811061100b5761100b611e0b565b602002602001015160400151611387565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b606482015260840161033f565b50600101610eca565b507f2e97860c6f47eab0292d51fa3ceec7e373c62af1e7eb2a28ae82998b80de6cfd826040516110ad9190611e6b565b60405180910390a15050565b80515f036110d95760405162461bcd60e51b815260040161033f90611f04565b6001600160a01b0382166110ff5760405162461bcd60e51b815260040161033f90611f4f565b6001600160a01b0382165f908152602f6020526040812054906001600160601b03821690036111315761113183611488565b81515f5b81811015611211575f84828151811061115057611150611e0b565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b031680156111ee5760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b606482015260840161033f565b6111f982868961152a565b61120285611faf565b94505050806001019050611135565b5050505050565b80515f036112385760405162461bcd60e51b815260040161033f90611f04565b6001600160a01b03821661125e5760405162461bcd60e51b815260040161033f90611f4f565b6001600160a01b0382165f908152602f6020526040812054906001600160601b03821690036112905761129083611488565b81515f5b81811015611211575f8482815181106112af576112af611e0b565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b03908116908716810361135a5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161033f565b61136481836115c8565b61136f82868961152a565b61137885611faf565b94505050806001019050611294565b80515f8190036113a95760405162461bcd60e51b815260040161033f90611f04565b6001600160a01b0383161561141f5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b606482015260840161033f565b5f5b81811015611482575f83828151811061143c5761143c611e0b565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b031661147881836115c8565b5050600101611421565b50505050565b6114c7816040518060400160405280601e81526020017f4469616d6f6e643a204e657720666163657420686173206e6f20636f6465000081525061190d565b603080546001600160a01b039092165f818152602f60205260408120600190810185905584018355919091527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb90910180546001600160a01b0319169091179055565b6001600160e01b031983165f818152602e6020818152604080842080546001600160601b03909816600160a01b026001600160a01b0398891617815595909616808452602f825295832080546001810182559084528184206008820401805460e09990991c60046007909316929092026101000a91820263ffffffff909202199098161790965591905290925281546001600160a01b031916179055565b6001600160a01b0382166116445760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161033f565b6001600160e01b031981165f908152602e60209081526040808320546001600160a01b0386168452602f909252822054600160a01b9091046001600160601b0316919061169390600190611fd4565b905080821461177f576001600160a01b0384165f908152602f602052604081208054839081106116c5576116c5611e0b565b5f91825260208083206008830401546001600160a01b0389168452602f9091526040909220805460079092166004026101000a90920460e01b92508291908590811061171357611713611e0b565b5f91825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b0319929092168252602e90526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384165f908152602f602052604090208054806117a5576117a5611fe7565b5f828152602080822060085f1990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b031985168252602e905260408120819055819003611482576030545f9061180490600190611fd4565b6001600160a01b0386165f908152602f60205260409020600101549091508082146118a8575f6030838154811061183d5761183d611e0b565b5f91825260209091200154603080546001600160a01b03909216925082918490811061186b5761186b611e0b565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152602f909152604090206001018190555b60308054806118b9576118b9611fe7565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0388168252602f905260408120906118fc828261192e565b600182015f90555050505050505050565b813b81816114825760405162461bcd60e51b815260040161033f9190611ffb565b5080545f825560070160089004905f5260205f2090810190610a7391905b8082111561195f575f815560010161194c565b5090565b6001600160a01b0381168114610a73575f80fd5b5f60208284031215611987575f80fd5b813561199281611963565b9392505050565b5f80604083850312156119aa575f80fd5b82356119b581611963565b915060208301356119c581611963565b809150509250929050565b5f602082840312156119e0575f80fd5b5035919050565b602080825282518282018190525f9190848201906040850190845b81811015611a275783516001600160a01b031683529284019291840191600101611a02565b50909695505050505050565b80356001600160e01b031981168114611a4a575f80fd5b919050565b5f60208284031215611a5f575f80fd5b61199282611a33565b5f815180845260208085019450602084015f5b83811015611aa15781516001600160e01b03191687529582019590820190600101611a7b565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015611b1b57888303603f19018552815180516001600160a01b03168452870151878401879052611b0887850182611a68565b9588019593505090860190600101611ad3565b509098975050505050505050565b5f60208284031215611b39575f80fd5b81356001600160601b0381168114611992575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f611b8f6060830186611b4f565b931515602083015250901515604090910152919050565b602081525f6119926020830184611a68565b5f8060408385031215611bc9575f80fd5b8235611bd481611963565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611c1957611c19611be2565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c4857611c48611be2565b604052919050565b5f67ffffffffffffffff821115611c6957611c69611be2565b5060051b60200190565b5f6020808385031215611c84575f80fd5b823567ffffffffffffffff80821115611c9b575f80fd5b818501915085601f830112611cae575f80fd5b8135611cc1611cbc82611c50565b611c1f565b81815260059190911b83018401908481019088831115611cdf575f80fd5b8585015b83811015611dcc57803585811115611cf9575f80fd5b86016060818c03601f1901811315611d0f575f80fd5b611d17611bf6565b89830135611d2481611963565b815260408381013560038110611d38575f80fd5b828c0152918301359188831115611d4d575f80fd5b82840193508d603f850112611d60575f80fd5b8a8401359250611d72611cbc84611c50565b83815260059390931b84018101928b8101908f851115611d90575f80fd5b948201945b84861015611db557611da686611a33565b8252948c0194908c0190611d95565b918301919091525085525050918601918601611ce3565b5098975050505050505050565b5f60208284031215611de9575f80fd5b815161199281611963565b5f60208284031215611e04575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b600181811c90821680611e3357607f821691505b602082108103611e5157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015611b1b57888303603f19018552815180516001600160a01b031684528781015160609060038110611ed557634e487b7160e01b5f52602160045260245ffd5b858a01529087015187850182905290611ef081860183611a68565b968901969450505090860190600101611e92565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160601b03808316818103611fca57611fca611f9b565b6001019392505050565b81810381811115610b6d57610b6d611f9b565b634e487b7160e01b5f52603160045260245ffd5b602081525f6119926020830184611b4f56fea2646970667358221220a52c32409844a7fd4d7ad646c85f377a795b15900f72097a3fb0363a5246b69464736f6c63430008190033",
904
- "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106102d4575f3560e01c80638c1ac18a11610180578063bec04f72116100e7578063dcfbc0c7116100a0578063e87554461161007a578063e8755446146108c7578063f445d703146108d0578063f851a440146108fd578063fa6331d81461090f576102d4565b8063dcfbc0c71461086a578063e37d4b791461087d578063e57e69c6146108b4576102d4565b8063bec04f721461077f578063c5f956af14610788578063c7ee005e1461079b578063cdffacc6146107ae578063d3270f9914610844578063dce1544914610857576102d4565b8063a657e57911610139578063a657e579146106ac578063adfca15e146106bf578063b2eafc39146106df578063b8324c7c146106f2578063bb82aa5e1461074d578063bbb8864a14610760576102d4565b80638c1ac18a1461060e5780638f738f36146106305780639254f5e51461065b57806394b2294b1461066e57806396c99064146106775780639bb27d6214610699576102d4565b8063425fad581161023f57806373769099116101f85780637a0ed627116101d25780637a0ed627146105b45780637d172bd5146105c95780637dc0d1d0146105dc5780638a7dc165146105ef576102d4565b8063737690991461054f578063765513831461058f5780637a070c2d146105a1576102d4565b8063425fad58146104cd5780634a584432146104e057806352d84d1e146104ff57806352ef6b2c146105125780635dd3fc9d14610527578063719f701b14610546576102d4565b806321af45691161029157806321af45691461042657806324a3d6221461045157806326782247146104645780632bc7e29e146104775780634088c73e1461049657806341a18d2c146104a3576102d4565b806302c3bcbb1461036857806304ef9d581461039a57806308e0225c146103a35780630db4b4e5146103cd57806310b98338146103d65780631d504dc614610413575b5f80356001600160e01b0319168152602e60205260409020546001600160a01b0316806103485760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b365f80375f80365f845af43d5f803e808015610362573d5ff35b3d5ffd5b005b610387610376366004611977565b60276020525f908152604090205481565b6040519081526020015b60405180910390f35b61038760225481565b6103876103b1366004611999565b601360209081525f928352604080842090915290825290205481565b610387601d5481565b6104036103e4366004611999565b602c60209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610391565b610366610421366004611977565b610918565b601e54610439906001600160a01b031681565b6040516001600160a01b039091168152602001610391565b600a54610439906001600160a01b031681565b600154610439906001600160a01b031681565b610387610485366004611977565b60166020525f908152604090205481565b6018546104039060ff1681565b6103876104b1366004611999565b601260209081525f928352604080842090915290825290205481565b6018546104039062010000900460ff1681565b6103876104ee366004611977565b601f6020525f908152604090205481565b61043961050d3660046119d0565b610a76565b61051a610a9e565b60405161039191906119e7565b610387610535366004611977565b602b6020525f908152604090205481565b610387601c5481565b61057761055d366004611977565b60356020525f90815260409020546001600160601b031681565b6040516001600160601b039091168152602001610391565b60185461040390610100900460ff1681565b6104396105af366004611a4f565b610afe565b6105bc610b73565b6040516103919190611aac565b601b54610439906001600160a01b031681565b600454610439906001600160a01b031681565b6103876105fd366004611977565b60146020525f908152604090205481565b61040361061c366004611977565b602d6020525f908152604090205460ff1681565b61038761063e366004611977565b6001600160a01b03165f908152602f602052604090206001015490565b601554610439906001600160a01b031681565b61038760075481565b61068a610685366004611b29565b610cf7565b60405161039193929190611b7d565b602554610439906001600160a01b031681565b603754610577906001600160601b031681565b6106d26106cd366004611977565b610da4565b6040516103919190611ba6565b602054610439906001600160a01b031681565b610729610700366004611977565b60106020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b604080516001600160e01b03909316835263ffffffff909116602083015201610391565b600254610439906001600160a01b031681565b61038761076e366004611977565b602a6020525f908152604090205481565b61038760175481565b602154610439906001600160a01b031681565b603154610439906001600160a01b031681565b6108176107bc366004611a4f565b604080518082019091525f8082526020820152506001600160e01b0319165f908152602e60209081526040918290208251808401909352546001600160a01b0381168352600160a01b90046001600160601b03169082015290565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610391565b602654610439906001600160a01b031681565b610439610865366004611bb8565b610e39565b600354610439906001600160a01b031681565b61072961088b366004611977565b60116020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b6103666108c2366004611c73565b610e6d565b61038760055481565b6104036108de366004611999565b603260209081525f928352604080842090915290825290205460ff1681565b5f54610439906001600160a01b031681565b610387601a5481565b806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610954573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109789190611dd9565b6001600160a01b0316336001600160a01b0316146109d45760405162461bcd60e51b815260206004820152601960248201527837b7363c903ab734ba3937b63632b91030b236b4b71031b0b760391b604482015260640161033f565b806001600160a01b031663c1e803346040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610a11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a359190611df4565b15610a735760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161033f565b50565b600d8181548110610a85575f80fd5b5f918252602090912001546001600160a01b0316905081565b60606030805480602002602001604051908101604052809291908181526020018280548015610af457602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610ad6575b5050505050905090565b6001600160e01b031981165f908152602e60205260408120546001600160a01b031680610b6d5760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604482015260640161033f565b92915050565b6030546060905f8167ffffffffffffffff811115610b9357610b93611be2565b604051908082528060200260200182016040528015610bd857816020015b604080518082019091525f815260606020820152815260200190600190039081610bb15790505b5090505f5b82811015610cf0575f60308281548110610bf957610bf9611e0b565b905f5260205f20015f9054906101000a90046001600160a01b0316905080838381518110610c2957610c29611e0b565b6020908102919091018101516001600160a01b0392831690529082165f908152602f825260409081902080548251818502810185019093528083529192909190830182828015610cc257602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610c845790505b5050505050838381518110610cd957610cd9611e0b565b602090810291909101810151015250600101610bdd565b5092915050565b60366020525f9081526040902080548190610d1190611e1f565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3d90611e1f565b8015610d885780601f10610d5f57610100808354040283529160200191610d88565b820191905f5260205f20905b815481529060010190602001808311610d6b57829003601f168201915b5050506002909301549192505060ff8082169161010090041683565b6001600160a01b0381165f908152602f6020908152604091829020805483518184028101840190945280845260609392830182828015610e2d57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610def5790505b50505050509050919050565b6008602052815f5260405f208181548110610e52575f80fd5b5f918252602090912001546001600160a01b03169150829050565b5f546001600160a01b03163314610ec25760405162461bcd60e51b815260206004820152601960248201527837b7363c903ab734ba3937b63632b91030b236b4b71031b0b760391b604482015260640161033f565b610a738180515f5b8181101561107d575f838281518110610ee557610ee5611e0b565b60200260200101516020015190505f6002811115610f0557610f05611e57565b816002811115610f1757610f17611e57565b03610f6457610f5f848381518110610f3157610f31611e0b565b60200260200101515f0151858481518110610f4e57610f4e611e0b565b6020026020010151604001516110b9565b611074565b6001816002811115610f7857610f78611e57565b03610fc057610f5f848381518110610f9257610f92611e0b565b60200260200101515f0151858481518110610faf57610faf611e0b565b602002602001015160400151611218565b6002816002811115610fd457610fd4611e57565b0361101c57610f5f848381518110610fee57610fee611e0b565b60200260200101515f015185848151811061100b5761100b611e0b565b602002602001015160400151611387565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b606482015260840161033f565b50600101610eca565b507f2e97860c6f47eab0292d51fa3ceec7e373c62af1e7eb2a28ae82998b80de6cfd826040516110ad9190611e6b565b60405180910390a15050565b80515f036110d95760405162461bcd60e51b815260040161033f90611f04565b6001600160a01b0382166110ff5760405162461bcd60e51b815260040161033f90611f4f565b6001600160a01b0382165f908152602f6020526040812054906001600160601b03821690036111315761113183611488565b81515f5b81811015611211575f84828151811061115057611150611e0b565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b031680156111ee5760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b606482015260840161033f565b6111f982868961152a565b61120285611faf565b94505050806001019050611135565b5050505050565b80515f036112385760405162461bcd60e51b815260040161033f90611f04565b6001600160a01b03821661125e5760405162461bcd60e51b815260040161033f90611f4f565b6001600160a01b0382165f908152602f6020526040812054906001600160601b03821690036112905761129083611488565b81515f5b81811015611211575f8482815181106112af576112af611e0b565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b03908116908716810361135a5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161033f565b61136481836115c8565b61136f82868961152a565b61137885611faf565b94505050806001019050611294565b80515f8190036113a95760405162461bcd60e51b815260040161033f90611f04565b6001600160a01b0383161561141f5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b606482015260840161033f565b5f5b81811015611482575f83828151811061143c5761143c611e0b565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b031661147881836115c8565b5050600101611421565b50505050565b6114c7816040518060400160405280601e81526020017f4469616d6f6e643a204e657720666163657420686173206e6f20636f6465000081525061190d565b603080546001600160a01b039092165f818152602f60205260408120600190810185905584018355919091527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb90910180546001600160a01b0319169091179055565b6001600160e01b031983165f818152602e6020818152604080842080546001600160601b03909816600160a01b026001600160a01b0398891617815595909616808452602f825295832080546001810182559084528184206008820401805460e09990991c60046007909316929092026101000a91820263ffffffff909202199098161790965591905290925281546001600160a01b031916179055565b6001600160a01b0382166116445760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161033f565b6001600160e01b031981165f908152602e60209081526040808320546001600160a01b0386168452602f909252822054600160a01b9091046001600160601b0316919061169390600190611fd4565b905080821461177f576001600160a01b0384165f908152602f602052604081208054839081106116c5576116c5611e0b565b5f91825260208083206008830401546001600160a01b0389168452602f9091526040909220805460079092166004026101000a90920460e01b92508291908590811061171357611713611e0b565b5f91825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b0319929092168252602e90526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384165f908152602f602052604090208054806117a5576117a5611fe7565b5f828152602080822060085f1990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b031985168252602e905260408120819055819003611482576030545f9061180490600190611fd4565b6001600160a01b0386165f908152602f60205260409020600101549091508082146118a8575f6030838154811061183d5761183d611e0b565b5f91825260209091200154603080546001600160a01b03909216925082918490811061186b5761186b611e0b565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152602f909152604090206001018190555b60308054806118b9576118b9611fe7565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0388168252602f905260408120906118fc828261192e565b600182015f90555050505050505050565b813b81816114825760405162461bcd60e51b815260040161033f9190611ffb565b5080545f825560070160089004905f5260205f2090810190610a7391905b8082111561195f575f815560010161194c565b5090565b6001600160a01b0381168114610a73575f80fd5b5f60208284031215611987575f80fd5b813561199281611963565b9392505050565b5f80604083850312156119aa575f80fd5b82356119b581611963565b915060208301356119c581611963565b809150509250929050565b5f602082840312156119e0575f80fd5b5035919050565b602080825282518282018190525f9190848201906040850190845b81811015611a275783516001600160a01b031683529284019291840191600101611a02565b50909695505050505050565b80356001600160e01b031981168114611a4a575f80fd5b919050565b5f60208284031215611a5f575f80fd5b61199282611a33565b5f815180845260208085019450602084015f5b83811015611aa15781516001600160e01b03191687529582019590820190600101611a7b565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015611b1b57888303603f19018552815180516001600160a01b03168452870151878401879052611b0887850182611a68565b9588019593505090860190600101611ad3565b509098975050505050505050565b5f60208284031215611b39575f80fd5b81356001600160601b0381168114611992575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f611b8f6060830186611b4f565b931515602083015250901515604090910152919050565b602081525f6119926020830184611a68565b5f8060408385031215611bc9575f80fd5b8235611bd481611963565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611c1957611c19611be2565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c4857611c48611be2565b604052919050565b5f67ffffffffffffffff821115611c6957611c69611be2565b5060051b60200190565b5f6020808385031215611c84575f80fd5b823567ffffffffffffffff80821115611c9b575f80fd5b818501915085601f830112611cae575f80fd5b8135611cc1611cbc82611c50565b611c1f565b81815260059190911b83018401908481019088831115611cdf575f80fd5b8585015b83811015611dcc57803585811115611cf9575f80fd5b86016060818c03601f1901811315611d0f575f80fd5b611d17611bf6565b89830135611d2481611963565b815260408381013560038110611d38575f80fd5b828c0152918301359188831115611d4d575f80fd5b82840193508d603f850112611d60575f80fd5b8a8401359250611d72611cbc84611c50565b83815260059390931b84018101928b8101908f851115611d90575f80fd5b948201945b84861015611db557611da686611a33565b8252948c0194908c0190611d95565b918301919091525085525050918601918601611ce3565b5098975050505050505050565b5f60208284031215611de9575f80fd5b815161199281611963565b5f60208284031215611e04575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b600181811c90821680611e3357607f821691505b602082108103611e5157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015611b1b57888303603f19018552815180516001600160a01b031684528781015160609060038110611ed557634e487b7160e01b5f52602160045260245ffd5b858a01529087015187850182905290611ef081860183611a68565b968901969450505090860190600101611e92565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160601b03808316818103611fca57611fca611f9b565b6001019392505050565b81810381811115610b6d57610b6d611f9b565b634e487b7160e01b5f52603160045260245ffd5b602081525f6119926020830184611b4f56fea2646970667358221220a52c32409844a7fd4d7ad646c85f377a795b15900f72097a3fb0363a5246b69464736f6c63430008190033",
935
+ "bytecode": "0x6080604052348015600e575f80fd5b506120a88061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061030a575f3560e01c80638c1ac18a1161019b578063c5f956af116100e7578063e0f6123d116100a0578063e87554461161007a578063e87554461461092c578063f445d70314610935578063f851a44014610962578063fa6331d8146109745761030a565b8063e0f6123d146108c0578063e37d4b79146108e2578063e57e69c6146109195761030a565b8063c5f956af146107cb578063c7ee005e146107de578063cdffacc6146107f1578063d3270f9914610887578063dce154491461089a578063dcfbc0c7146108ad5761030a565b8063a657e57911610154578063b8324c7c1161012e578063b8324c7c14610735578063bb82aa5e14610790578063bbb8864a146107a3578063bec04f72146107c25761030a565b8063a657e579146106ef578063adfca15e14610702578063b2eafc39146107225761030a565b80638c1ac18a146106515780638f738f36146106735780639254f5e51461069e57806394b2294b146106b157806396c99064146106ba5780639bb27d62146106dc5761030a565b80634a5844321161025a57806376551383116102135780637d172bd5116101ed5780637d172bd5146105ff5780637dc0d1d0146106125780637fb8e8cd146106255780638a7dc165146106325761030a565b806376551383146105c55780637a070c2d146105d75780637a0ed627146105ea5761030a565b80634a5844321461051657806352d84d1e1461053557806352ef6b2c146105485780635dd3fc9d1461055d578063719f701b1461057c57806373769099146105855761030a565b806321af4569116102c75780632bc7e29e116102a15780632bc7e29e146104ad5780634088c73e146104cc57806341a18d2c146104d9578063425fad58146105035761030a565b806321af45691461045c57806324a3d62214610487578063267822471461049a5761030a565b806302c3bcbb1461039e57806304ef9d58146103d057806308e0225c146103d95780630db4b4e51461040357806310b983381461040c5780631d504dc614610449575b5f80356001600160e01b0319168152602e60205260409020546001600160a01b03168061037e5760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b365f80375f80365f845af43d5f803e808015610398573d5ff35b3d5ffd5b005b6103bd6103ac3660046119dc565b60276020525f908152604090205481565b6040519081526020015b60405180910390f35b6103bd60225481565b6103bd6103e73660046119fe565b601360209081525f928352604080842090915290825290205481565b6103bd601d5481565b61043961041a3660046119fe565b602c60209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016103c7565b61039c6104573660046119dc565b61097d565b601e5461046f906001600160a01b031681565b6040516001600160a01b0390911681526020016103c7565b600a5461046f906001600160a01b031681565b60015461046f906001600160a01b031681565b6103bd6104bb3660046119dc565b60166020525f908152604090205481565b6018546104399060ff1681565b6103bd6104e73660046119fe565b601260209081525f928352604080842090915290825290205481565b6018546104399062010000900460ff1681565b6103bd6105243660046119dc565b601f6020525f908152604090205481565b61046f610543366004611a35565b610adb565b610550610b03565b6040516103c79190611a4c565b6103bd61056b3660046119dc565b602b6020525f908152604090205481565b6103bd601c5481565b6105ad6105933660046119dc565b60356020525f90815260409020546001600160601b031681565b6040516001600160601b0390911681526020016103c7565b60185461043990610100900460ff1681565b61046f6105e5366004611ab4565b610b63565b6105f2610bd8565b6040516103c79190611b11565b601b5461046f906001600160a01b031681565b60045461046f906001600160a01b031681565b6039546104399060ff1681565b6103bd6106403660046119dc565b60146020525f908152604090205481565b61043961065f3660046119dc565b602d6020525f908152604090205460ff1681565b6103bd6106813660046119dc565b6001600160a01b03165f908152602f602052604090206001015490565b60155461046f906001600160a01b031681565b6103bd60075481565b6106cd6106c8366004611b8e565b610d5c565b6040516103c793929190611be2565b60255461046f906001600160a01b031681565b6037546105ad906001600160601b031681565b6107156107103660046119dc565b610e09565b6040516103c79190611c0b565b60205461046f906001600160a01b031681565b61076c6107433660046119dc565b60106020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b604080516001600160e01b03909316835263ffffffff9091166020830152016103c7565b60025461046f906001600160a01b031681565b6103bd6107b13660046119dc565b602a6020525f908152604090205481565b6103bd60175481565b60215461046f906001600160a01b031681565b60315461046f906001600160a01b031681565b61085a6107ff366004611ab4565b604080518082019091525f8082526020820152506001600160e01b0319165f908152602e60209081526040918290208251808401909352546001600160a01b0381168352600160a01b90046001600160601b03169082015290565b6040805182516001600160a01b031681526020928301516001600160601b031692810192909252016103c7565b60265461046f906001600160a01b031681565b61046f6108a8366004611c1d565b610e9e565b60035461046f906001600160a01b031681565b6104396108ce3660046119dc565b60386020525f908152604090205460ff1681565b61076c6108f03660046119dc565b60116020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b61039c610927366004611cd8565b610ed2565b6103bd60055481565b6104396109433660046119fe565b603260209081525f928352604080842090915290825290205460ff1681565b5f5461046f906001600160a01b031681565b6103bd601a5481565b806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109dd9190611e3e565b6001600160a01b0316336001600160a01b031614610a395760405162461bcd60e51b815260206004820152601960248201527837b7363c903ab734ba3937b63632b91030b236b4b71031b0b760391b6044820152606401610375565b806001600160a01b031663c1e803346040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610a76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9a9190611e59565b15610ad85760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b6044820152606401610375565b50565b600d8181548110610aea575f80fd5b5f918252602090912001546001600160a01b0316905081565b60606030805480602002602001604051908101604052809291908181526020018280548015610b5957602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610b3b575b5050505050905090565b6001600160e01b031981165f908152602e60205260408120546001600160a01b031680610bd25760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f742065786973746044820152606401610375565b92915050565b6030546060905f8167ffffffffffffffff811115610bf857610bf8611c47565b604051908082528060200260200182016040528015610c3d57816020015b604080518082019091525f815260606020820152815260200190600190039081610c165790505b5090505f5b82811015610d55575f60308281548110610c5e57610c5e611e70565b905f5260205f20015f9054906101000a90046001600160a01b0316905080838381518110610c8e57610c8e611e70565b6020908102919091018101516001600160a01b0392831690529082165f908152602f825260409081902080548251818502810185019093528083529192909190830182828015610d2757602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ce95790505b5050505050838381518110610d3e57610d3e611e70565b602090810291909101810151015250600101610c42565b5092915050565b60366020525f9081526040902080548190610d7690611e84565b80601f0160208091040260200160405190810160405280929190818152602001828054610da290611e84565b8015610ded5780601f10610dc457610100808354040283529160200191610ded565b820191905f5260205f20905b815481529060010190602001808311610dd057829003601f168201915b5050506002909301549192505060ff8082169161010090041683565b6001600160a01b0381165f908152602f6020908152604091829020805483518184028101840190945280845260609392830182828015610e9257602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610e545790505b50505050509050919050565b6008602052815f5260405f208181548110610eb7575f80fd5b5f918252602090912001546001600160a01b03169150829050565b5f546001600160a01b03163314610f275760405162461bcd60e51b815260206004820152601960248201527837b7363c903ab734ba3937b63632b91030b236b4b71031b0b760391b6044820152606401610375565b610ad88180515f5b818110156110e2575f838281518110610f4a57610f4a611e70565b60200260200101516020015190505f6002811115610f6a57610f6a611ebc565b816002811115610f7c57610f7c611ebc565b03610fc957610fc4848381518110610f9657610f96611e70565b60200260200101515f0151858481518110610fb357610fb3611e70565b60200260200101516040015161111e565b6110d9565b6001816002811115610fdd57610fdd611ebc565b0361102557610fc4848381518110610ff757610ff7611e70565b60200260200101515f015185848151811061101457611014611e70565b60200260200101516040015161127d565b600281600281111561103957611039611ebc565b0361108157610fc484838151811061105357611053611e70565b60200260200101515f015185848151811061107057611070611e70565b6020026020010151604001516113ec565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b6064820152608401610375565b50600101610f2f565b507f2e97860c6f47eab0292d51fa3ceec7e373c62af1e7eb2a28ae82998b80de6cfd826040516111129190611ed0565b60405180910390a15050565b80515f0361113e5760405162461bcd60e51b815260040161037590611f69565b6001600160a01b0382166111645760405162461bcd60e51b815260040161037590611fb4565b6001600160a01b0382165f908152602f6020526040812054906001600160601b038216900361119657611196836114ed565b81515f5b81811015611276575f8482815181106111b5576111b5611e70565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b031680156112535760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b6064820152608401610375565b61125e82868961158f565b61126785612014565b9450505080600101905061119a565b5050505050565b80515f0361129d5760405162461bcd60e51b815260040161037590611f69565b6001600160a01b0382166112c35760405162461bcd60e51b815260040161037590611fb4565b6001600160a01b0382165f908152602f6020526040812054906001600160601b03821690036112f5576112f5836114ed565b81515f5b81811015611276575f84828151811061131457611314611e70565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b0390811690871681036113bf5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e00000000000000006064820152608401610375565b6113c9818361162d565b6113d482868961158f565b6113dd85612014565b945050508060010190506112f9565b80515f81900361140e5760405162461bcd60e51b815260040161037590611f69565b6001600160a01b038316156114845760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b6064820152608401610375565b5f5b818110156114e7575f8382815181106114a1576114a1611e70565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b03166114dd818361162d565b5050600101611486565b50505050565b61152c816040518060400160405280601e81526020017f4469616d6f6e643a204e657720666163657420686173206e6f20636f64650000815250611972565b603080546001600160a01b039092165f818152602f60205260408120600190810185905584018355919091527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb90910180546001600160a01b0319169091179055565b6001600160e01b031983165f818152602e6020818152604080842080546001600160601b03909816600160a01b026001600160a01b0398891617815595909616808452602f825295832080546001810182559084528184206008820401805460e09990991c60046007909316929092026101000a91820263ffffffff909202199098161790965591905290925281546001600160a01b031916179055565b6001600160a01b0382166116a95760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401610375565b6001600160e01b031981165f908152602e60209081526040808320546001600160a01b0386168452602f909252822054600160a01b9091046001600160601b031691906116f890600190612039565b90508082146117e4576001600160a01b0384165f908152602f6020526040812080548390811061172a5761172a611e70565b5f91825260208083206008830401546001600160a01b0389168452602f9091526040909220805460079092166004026101000a90920460e01b92508291908590811061177857611778611e70565b5f91825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b0319929092168252602e90526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384165f908152602f6020526040902080548061180a5761180a61204c565b5f828152602080822060085f1990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b031985168252602e9052604081208190558190036114e7576030545f9061186990600190612039565b6001600160a01b0386165f908152602f602052604090206001015490915080821461190d575f603083815481106118a2576118a2611e70565b5f91825260209091200154603080546001600160a01b0390921692508291849081106118d0576118d0611e70565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152602f909152604090206001018190555b603080548061191e5761191e61204c565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0388168252602f905260408120906119618282611993565b600182015f90555050505050505050565b813b81816114e75760405162461bcd60e51b81526004016103759190612060565b5080545f825560070160089004905f5260205f2090810190610ad891905b808211156119c4575f81556001016119b1565b5090565b6001600160a01b0381168114610ad8575f80fd5b5f602082840312156119ec575f80fd5b81356119f7816119c8565b9392505050565b5f8060408385031215611a0f575f80fd5b8235611a1a816119c8565b91506020830135611a2a816119c8565b809150509250929050565b5f60208284031215611a45575f80fd5b5035919050565b602080825282518282018190525f9190848201906040850190845b81811015611a8c5783516001600160a01b031683529284019291840191600101611a67565b50909695505050505050565b80356001600160e01b031981168114611aaf575f80fd5b919050565b5f60208284031215611ac4575f80fd5b6119f782611a98565b5f815180845260208085019450602084015f5b83811015611b065781516001600160e01b03191687529582019590820190600101611ae0565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015611b8057888303603f19018552815180516001600160a01b03168452870151878401879052611b6d87850182611acd565b9588019593505090860190600101611b38565b509098975050505050505050565b5f60208284031215611b9e575f80fd5b81356001600160601b03811681146119f7575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f611bf46060830186611bb4565b931515602083015250901515604090910152919050565b602081525f6119f76020830184611acd565b5f8060408385031215611c2e575f80fd5b8235611c39816119c8565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611c7e57611c7e611c47565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cad57611cad611c47565b604052919050565b5f67ffffffffffffffff821115611cce57611cce611c47565b5060051b60200190565b5f6020808385031215611ce9575f80fd5b823567ffffffffffffffff80821115611d00575f80fd5b818501915085601f830112611d13575f80fd5b8135611d26611d2182611cb5565b611c84565b81815260059190911b83018401908481019088831115611d44575f80fd5b8585015b83811015611e3157803585811115611d5e575f80fd5b86016060818c03601f1901811315611d74575f80fd5b611d7c611c5b565b89830135611d89816119c8565b815260408381013560038110611d9d575f80fd5b828c0152918301359188831115611db2575f80fd5b82840193508d603f850112611dc5575f80fd5b8a8401359250611dd7611d2184611cb5565b83815260059390931b84018101928b8101908f851115611df5575f80fd5b948201945b84861015611e1a57611e0b86611a98565b8252948c0194908c0190611dfa565b918301919091525085525050918601918601611d48565b5098975050505050505050565b5f60208284031215611e4e575f80fd5b81516119f7816119c8565b5f60208284031215611e69575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b600181811c90821680611e9857607f821691505b602082108103611eb657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015611b8057888303603f19018552815180516001600160a01b031684528781015160609060038110611f3a57634e487b7160e01b5f52602160045260245ffd5b858a01529087015187850182905290611f5581860183611acd565b968901969450505090860190600101611ef7565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160601b0380831681810361202f5761202f612000565b6001019392505050565b81810381811115610bd257610bd2612000565b634e487b7160e01b5f52603160045260245ffd5b602081525f6119f76020830184611bb456fea2646970667358221220e0123ac3c4e07cfddd071f55d228c868c8b24d21ba672ee4db8d0f675028014564736f6c63430008190033",
936
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061030a575f3560e01c80638c1ac18a1161019b578063c5f956af116100e7578063e0f6123d116100a0578063e87554461161007a578063e87554461461092c578063f445d70314610935578063f851a44014610962578063fa6331d8146109745761030a565b8063e0f6123d146108c0578063e37d4b79146108e2578063e57e69c6146109195761030a565b8063c5f956af146107cb578063c7ee005e146107de578063cdffacc6146107f1578063d3270f9914610887578063dce154491461089a578063dcfbc0c7146108ad5761030a565b8063a657e57911610154578063b8324c7c1161012e578063b8324c7c14610735578063bb82aa5e14610790578063bbb8864a146107a3578063bec04f72146107c25761030a565b8063a657e579146106ef578063adfca15e14610702578063b2eafc39146107225761030a565b80638c1ac18a146106515780638f738f36146106735780639254f5e51461069e57806394b2294b146106b157806396c99064146106ba5780639bb27d62146106dc5761030a565b80634a5844321161025a57806376551383116102135780637d172bd5116101ed5780637d172bd5146105ff5780637dc0d1d0146106125780637fb8e8cd146106255780638a7dc165146106325761030a565b806376551383146105c55780637a070c2d146105d75780637a0ed627146105ea5761030a565b80634a5844321461051657806352d84d1e1461053557806352ef6b2c146105485780635dd3fc9d1461055d578063719f701b1461057c57806373769099146105855761030a565b806321af4569116102c75780632bc7e29e116102a15780632bc7e29e146104ad5780634088c73e146104cc57806341a18d2c146104d9578063425fad58146105035761030a565b806321af45691461045c57806324a3d62214610487578063267822471461049a5761030a565b806302c3bcbb1461039e57806304ef9d58146103d057806308e0225c146103d95780630db4b4e51461040357806310b983381461040c5780631d504dc614610449575b5f80356001600160e01b0319168152602e60205260409020546001600160a01b03168061037e5760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b365f80375f80365f845af43d5f803e808015610398573d5ff35b3d5ffd5b005b6103bd6103ac3660046119dc565b60276020525f908152604090205481565b6040519081526020015b60405180910390f35b6103bd60225481565b6103bd6103e73660046119fe565b601360209081525f928352604080842090915290825290205481565b6103bd601d5481565b61043961041a3660046119fe565b602c60209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016103c7565b61039c6104573660046119dc565b61097d565b601e5461046f906001600160a01b031681565b6040516001600160a01b0390911681526020016103c7565b600a5461046f906001600160a01b031681565b60015461046f906001600160a01b031681565b6103bd6104bb3660046119dc565b60166020525f908152604090205481565b6018546104399060ff1681565b6103bd6104e73660046119fe565b601260209081525f928352604080842090915290825290205481565b6018546104399062010000900460ff1681565b6103bd6105243660046119dc565b601f6020525f908152604090205481565b61046f610543366004611a35565b610adb565b610550610b03565b6040516103c79190611a4c565b6103bd61056b3660046119dc565b602b6020525f908152604090205481565b6103bd601c5481565b6105ad6105933660046119dc565b60356020525f90815260409020546001600160601b031681565b6040516001600160601b0390911681526020016103c7565b60185461043990610100900460ff1681565b61046f6105e5366004611ab4565b610b63565b6105f2610bd8565b6040516103c79190611b11565b601b5461046f906001600160a01b031681565b60045461046f906001600160a01b031681565b6039546104399060ff1681565b6103bd6106403660046119dc565b60146020525f908152604090205481565b61043961065f3660046119dc565b602d6020525f908152604090205460ff1681565b6103bd6106813660046119dc565b6001600160a01b03165f908152602f602052604090206001015490565b60155461046f906001600160a01b031681565b6103bd60075481565b6106cd6106c8366004611b8e565b610d5c565b6040516103c793929190611be2565b60255461046f906001600160a01b031681565b6037546105ad906001600160601b031681565b6107156107103660046119dc565b610e09565b6040516103c79190611c0b565b60205461046f906001600160a01b031681565b61076c6107433660046119dc565b60106020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b604080516001600160e01b03909316835263ffffffff9091166020830152016103c7565b60025461046f906001600160a01b031681565b6103bd6107b13660046119dc565b602a6020525f908152604090205481565b6103bd60175481565b60215461046f906001600160a01b031681565b60315461046f906001600160a01b031681565b61085a6107ff366004611ab4565b604080518082019091525f8082526020820152506001600160e01b0319165f908152602e60209081526040918290208251808401909352546001600160a01b0381168352600160a01b90046001600160601b03169082015290565b6040805182516001600160a01b031681526020928301516001600160601b031692810192909252016103c7565b60265461046f906001600160a01b031681565b61046f6108a8366004611c1d565b610e9e565b60035461046f906001600160a01b031681565b6104396108ce3660046119dc565b60386020525f908152604090205460ff1681565b61076c6108f03660046119dc565b60116020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b61039c610927366004611cd8565b610ed2565b6103bd60055481565b6104396109433660046119fe565b603260209081525f928352604080842090915290825290205460ff1681565b5f5461046f906001600160a01b031681565b6103bd601a5481565b806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109dd9190611e3e565b6001600160a01b0316336001600160a01b031614610a395760405162461bcd60e51b815260206004820152601960248201527837b7363c903ab734ba3937b63632b91030b236b4b71031b0b760391b6044820152606401610375565b806001600160a01b031663c1e803346040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610a76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9a9190611e59565b15610ad85760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b6044820152606401610375565b50565b600d8181548110610aea575f80fd5b5f918252602090912001546001600160a01b0316905081565b60606030805480602002602001604051908101604052809291908181526020018280548015610b5957602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610b3b575b5050505050905090565b6001600160e01b031981165f908152602e60205260408120546001600160a01b031680610bd25760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f742065786973746044820152606401610375565b92915050565b6030546060905f8167ffffffffffffffff811115610bf857610bf8611c47565b604051908082528060200260200182016040528015610c3d57816020015b604080518082019091525f815260606020820152815260200190600190039081610c165790505b5090505f5b82811015610d55575f60308281548110610c5e57610c5e611e70565b905f5260205f20015f9054906101000a90046001600160a01b0316905080838381518110610c8e57610c8e611e70565b6020908102919091018101516001600160a01b0392831690529082165f908152602f825260409081902080548251818502810185019093528083529192909190830182828015610d2757602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ce95790505b5050505050838381518110610d3e57610d3e611e70565b602090810291909101810151015250600101610c42565b5092915050565b60366020525f9081526040902080548190610d7690611e84565b80601f0160208091040260200160405190810160405280929190818152602001828054610da290611e84565b8015610ded5780601f10610dc457610100808354040283529160200191610ded565b820191905f5260205f20905b815481529060010190602001808311610dd057829003601f168201915b5050506002909301549192505060ff8082169161010090041683565b6001600160a01b0381165f908152602f6020908152604091829020805483518184028101840190945280845260609392830182828015610e9257602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610e545790505b50505050509050919050565b6008602052815f5260405f208181548110610eb7575f80fd5b5f918252602090912001546001600160a01b03169150829050565b5f546001600160a01b03163314610f275760405162461bcd60e51b815260206004820152601960248201527837b7363c903ab734ba3937b63632b91030b236b4b71031b0b760391b6044820152606401610375565b610ad88180515f5b818110156110e2575f838281518110610f4a57610f4a611e70565b60200260200101516020015190505f6002811115610f6a57610f6a611ebc565b816002811115610f7c57610f7c611ebc565b03610fc957610fc4848381518110610f9657610f96611e70565b60200260200101515f0151858481518110610fb357610fb3611e70565b60200260200101516040015161111e565b6110d9565b6001816002811115610fdd57610fdd611ebc565b0361102557610fc4848381518110610ff757610ff7611e70565b60200260200101515f015185848151811061101457611014611e70565b60200260200101516040015161127d565b600281600281111561103957611039611ebc565b0361108157610fc484838151811061105357611053611e70565b60200260200101515f015185848151811061107057611070611e70565b6020026020010151604001516113ec565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b6064820152608401610375565b50600101610f2f565b507f2e97860c6f47eab0292d51fa3ceec7e373c62af1e7eb2a28ae82998b80de6cfd826040516111129190611ed0565b60405180910390a15050565b80515f0361113e5760405162461bcd60e51b815260040161037590611f69565b6001600160a01b0382166111645760405162461bcd60e51b815260040161037590611fb4565b6001600160a01b0382165f908152602f6020526040812054906001600160601b038216900361119657611196836114ed565b81515f5b81811015611276575f8482815181106111b5576111b5611e70565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b031680156112535760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b6064820152608401610375565b61125e82868961158f565b61126785612014565b9450505080600101905061119a565b5050505050565b80515f0361129d5760405162461bcd60e51b815260040161037590611f69565b6001600160a01b0382166112c35760405162461bcd60e51b815260040161037590611fb4565b6001600160a01b0382165f908152602f6020526040812054906001600160601b03821690036112f5576112f5836114ed565b81515f5b81811015611276575f84828151811061131457611314611e70565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b0390811690871681036113bf5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e00000000000000006064820152608401610375565b6113c9818361162d565b6113d482868961158f565b6113dd85612014565b945050508060010190506112f9565b80515f81900361140e5760405162461bcd60e51b815260040161037590611f69565b6001600160a01b038316156114845760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b6064820152608401610375565b5f5b818110156114e7575f8382815181106114a1576114a1611e70565b6020908102919091018101516001600160e01b031981165f908152602e9092526040909120549091506001600160a01b03166114dd818361162d565b5050600101611486565b50505050565b61152c816040518060400160405280601e81526020017f4469616d6f6e643a204e657720666163657420686173206e6f20636f64650000815250611972565b603080546001600160a01b039092165f818152602f60205260408120600190810185905584018355919091527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb90910180546001600160a01b0319169091179055565b6001600160e01b031983165f818152602e6020818152604080842080546001600160601b03909816600160a01b026001600160a01b0398891617815595909616808452602f825295832080546001810182559084528184206008820401805460e09990991c60046007909316929092026101000a91820263ffffffff909202199098161790965591905290925281546001600160a01b031916179055565b6001600160a01b0382166116a95760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401610375565b6001600160e01b031981165f908152602e60209081526040808320546001600160a01b0386168452602f909252822054600160a01b9091046001600160601b031691906116f890600190612039565b90508082146117e4576001600160a01b0384165f908152602f6020526040812080548390811061172a5761172a611e70565b5f91825260208083206008830401546001600160a01b0389168452602f9091526040909220805460079092166004026101000a90920460e01b92508291908590811061177857611778611e70565b5f91825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b0319929092168252602e90526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384165f908152602f6020526040902080548061180a5761180a61204c565b5f828152602080822060085f1990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b031985168252602e9052604081208190558190036114e7576030545f9061186990600190612039565b6001600160a01b0386165f908152602f602052604090206001015490915080821461190d575f603083815481106118a2576118a2611e70565b5f91825260209091200154603080546001600160a01b0390921692508291849081106118d0576118d0611e70565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152602f909152604090206001018190555b603080548061191e5761191e61204c565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0388168252602f905260408120906119618282611993565b600182015f90555050505050505050565b813b81816114e75760405162461bcd60e51b81526004016103759190612060565b5080545f825560070160089004905f5260205f2090810190610ad891905b808211156119c4575f81556001016119b1565b5090565b6001600160a01b0381168114610ad8575f80fd5b5f602082840312156119ec575f80fd5b81356119f7816119c8565b9392505050565b5f8060408385031215611a0f575f80fd5b8235611a1a816119c8565b91506020830135611a2a816119c8565b809150509250929050565b5f60208284031215611a45575f80fd5b5035919050565b602080825282518282018190525f9190848201906040850190845b81811015611a8c5783516001600160a01b031683529284019291840191600101611a67565b50909695505050505050565b80356001600160e01b031981168114611aaf575f80fd5b919050565b5f60208284031215611ac4575f80fd5b6119f782611a98565b5f815180845260208085019450602084015f5b83811015611b065781516001600160e01b03191687529582019590820190600101611ae0565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015611b8057888303603f19018552815180516001600160a01b03168452870151878401879052611b6d87850182611acd565b9588019593505090860190600101611b38565b509098975050505050505050565b5f60208284031215611b9e575f80fd5b81356001600160601b03811681146119f7575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f611bf46060830186611bb4565b931515602083015250901515604090910152919050565b602081525f6119f76020830184611acd565b5f8060408385031215611c2e575f80fd5b8235611c39816119c8565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611c7e57611c7e611c47565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cad57611cad611c47565b604052919050565b5f67ffffffffffffffff821115611cce57611cce611c47565b5060051b60200190565b5f6020808385031215611ce9575f80fd5b823567ffffffffffffffff80821115611d00575f80fd5b818501915085601f830112611d13575f80fd5b8135611d26611d2182611cb5565b611c84565b81815260059190911b83018401908481019088831115611d44575f80fd5b8585015b83811015611e3157803585811115611d5e575f80fd5b86016060818c03601f1901811315611d74575f80fd5b611d7c611c5b565b89830135611d89816119c8565b815260408381013560038110611d9d575f80fd5b828c0152918301359188831115611db2575f80fd5b82840193508d603f850112611dc5575f80fd5b8a8401359250611dd7611d2184611cb5565b83815260059390931b84018101928b8101908f851115611df5575f80fd5b948201945b84861015611e1a57611e0b86611a98565b8252948c0194908c0190611dfa565b918301919091525085525050918601918601611d48565b5098975050505050505050565b5f60208284031215611e4e575f80fd5b81516119f7816119c8565b5f60208284031215611e69575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b600181811c90821680611e9857607f821691505b602082108103611eb657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015611b8057888303603f19018552815180516001600160a01b031684528781015160609060038110611f3a57634e487b7160e01b5f52602160045260245ffd5b858a01529087015187850182905290611f5581860183611acd565b968901969450505090860190600101611ef7565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160601b0380831681810361202f5761202f612000565b6001019392505050565b81810381811115610bd257610bd2612000565b634e487b7160e01b5f52603160045260245ffd5b602081525f6119f76020830184611bb456fea2646970667358221220e0123ac3c4e07cfddd071f55d228c868c8b24d21ba672ee4db8d0f675028014564736f6c63430008190033",
905
937
  "linkReferences": {},
906
938
  "deployedLinkReferences": {}
907
939
  }
@@ -59,6 +59,69 @@
59
59
  "stateMutability": "nonpayable",
60
60
  "type": "constructor"
61
61
  },
62
+ {
63
+ "inputs": [],
64
+ "name": "FlashLoanAlreadyActive",
65
+ "type": "error"
66
+ },
67
+ {
68
+ "inputs": [
69
+ {
70
+ "internalType": "uint256",
71
+ "name": "fee",
72
+ "type": "uint256"
73
+ },
74
+ {
75
+ "internalType": "uint256",
76
+ "name": "maxFee",
77
+ "type": "uint256"
78
+ }
79
+ ],
80
+ "name": "FlashLoanFeeTooHigh",
81
+ "type": "error"
82
+ },
83
+ {
84
+ "inputs": [
85
+ {
86
+ "internalType": "uint256",
87
+ "name": "fee",
88
+ "type": "uint256"
89
+ },
90
+ {
91
+ "internalType": "uint256",
92
+ "name": "maxFee",
93
+ "type": "uint256"
94
+ }
95
+ ],
96
+ "name": "FlashLoanProtocolShareTooHigh",
97
+ "type": "error"
98
+ },
99
+ {
100
+ "inputs": [],
101
+ "name": "InsufficientCash",
102
+ "type": "error"
103
+ },
104
+ {
105
+ "inputs": [
106
+ {
107
+ "internalType": "uint256",
108
+ "name": "actualAmount",
109
+ "type": "uint256"
110
+ },
111
+ {
112
+ "internalType": "uint256",
113
+ "name": "requiredTotalFee",
114
+ "type": "uint256"
115
+ }
116
+ ],
117
+ "name": "InsufficientRepayment",
118
+ "type": "error"
119
+ },
120
+ {
121
+ "inputs": [],
122
+ "name": "InvalidComptroller",
123
+ "type": "error"
124
+ },
62
125
  {
63
126
  "anonymous": false,
64
127
  "inputs": [
@@ -146,6 +209,56 @@
146
209
  "name": "Borrow",
147
210
  "type": "event"
148
211
  },
212
+ {
213
+ "anonymous": false,
214
+ "inputs": [
215
+ {
216
+ "indexed": false,
217
+ "internalType": "uint256",
218
+ "name": "oldFlashLoanFeeMantissa",
219
+ "type": "uint256"
220
+ },
221
+ {
222
+ "indexed": false,
223
+ "internalType": "uint256",
224
+ "name": "newFlashLoanFeeMantissa",
225
+ "type": "uint256"
226
+ },
227
+ {
228
+ "indexed": false,
229
+ "internalType": "uint256",
230
+ "name": "oldFlashLoanProtocolShare",
231
+ "type": "uint256"
232
+ },
233
+ {
234
+ "indexed": false,
235
+ "internalType": "uint256",
236
+ "name": "newFlashLoanProtocolShare",
237
+ "type": "uint256"
238
+ }
239
+ ],
240
+ "name": "FlashLoanFeeUpdated",
241
+ "type": "event"
242
+ },
243
+ {
244
+ "anonymous": false,
245
+ "inputs": [
246
+ {
247
+ "indexed": false,
248
+ "internalType": "bool",
249
+ "name": "previousStatus",
250
+ "type": "bool"
251
+ },
252
+ {
253
+ "indexed": false,
254
+ "internalType": "bool",
255
+ "name": "newStatus",
256
+ "type": "bool"
257
+ }
258
+ ],
259
+ "name": "FlashLoanStatusChanged",
260
+ "type": "event"
261
+ },
149
262
  {
150
263
  "anonymous": false,
151
264
  "inputs": [
@@ -590,6 +703,68 @@
590
703
  "name": "Transfer",
591
704
  "type": "event"
592
705
  },
706
+ {
707
+ "anonymous": false,
708
+ "inputs": [
709
+ {
710
+ "indexed": true,
711
+ "internalType": "address",
712
+ "name": "asset",
713
+ "type": "address"
714
+ },
715
+ {
716
+ "indexed": true,
717
+ "internalType": "address",
718
+ "name": "sender",
719
+ "type": "address"
720
+ },
721
+ {
722
+ "indexed": false,
723
+ "internalType": "uint256",
724
+ "name": "amount",
725
+ "type": "uint256"
726
+ },
727
+ {
728
+ "indexed": false,
729
+ "internalType": "uint256",
730
+ "name": "totalFee",
731
+ "type": "uint256"
732
+ },
733
+ {
734
+ "indexed": false,
735
+ "internalType": "uint256",
736
+ "name": "protocolFee",
737
+ "type": "uint256"
738
+ }
739
+ ],
740
+ "name": "TransferInUnderlyingFlashLoan",
741
+ "type": "event"
742
+ },
743
+ {
744
+ "anonymous": false,
745
+ "inputs": [
746
+ {
747
+ "indexed": false,
748
+ "internalType": "address",
749
+ "name": "asset",
750
+ "type": "address"
751
+ },
752
+ {
753
+ "indexed": false,
754
+ "internalType": "address",
755
+ "name": "receiver",
756
+ "type": "address"
757
+ },
758
+ {
759
+ "indexed": false,
760
+ "internalType": "uint256",
761
+ "name": "amount",
762
+ "type": "uint256"
763
+ }
764
+ ],
765
+ "name": "TransferOutUnderlyingFlashLoan",
766
+ "type": "event"
767
+ },
593
768
  {
594
769
  "stateMutability": "nonpayable",
595
770
  "type": "fallback"
@@ -1055,6 +1230,69 @@
1055
1230
  "stateMutability": "view",
1056
1231
  "type": "function"
1057
1232
  },
1233
+ {
1234
+ "inputs": [],
1235
+ "name": "flashLoanAmount",
1236
+ "outputs": [
1237
+ {
1238
+ "internalType": "uint256",
1239
+ "name": "",
1240
+ "type": "uint256"
1241
+ }
1242
+ ],
1243
+ "stateMutability": "view",
1244
+ "type": "function"
1245
+ },
1246
+ {
1247
+ "inputs": [
1248
+ {
1249
+ "internalType": "address",
1250
+ "name": "borrower",
1251
+ "type": "address"
1252
+ },
1253
+ {
1254
+ "internalType": "uint256",
1255
+ "name": "borrowAmount",
1256
+ "type": "uint256"
1257
+ }
1258
+ ],
1259
+ "name": "flashLoanDebtPosition",
1260
+ "outputs": [
1261
+ {
1262
+ "internalType": "uint256",
1263
+ "name": "",
1264
+ "type": "uint256"
1265
+ }
1266
+ ],
1267
+ "stateMutability": "nonpayable",
1268
+ "type": "function"
1269
+ },
1270
+ {
1271
+ "inputs": [],
1272
+ "name": "flashLoanFeeMantissa",
1273
+ "outputs": [
1274
+ {
1275
+ "internalType": "uint256",
1276
+ "name": "",
1277
+ "type": "uint256"
1278
+ }
1279
+ ],
1280
+ "stateMutability": "view",
1281
+ "type": "function"
1282
+ },
1283
+ {
1284
+ "inputs": [],
1285
+ "name": "flashLoanProtocolShareMantissa",
1286
+ "outputs": [
1287
+ {
1288
+ "internalType": "uint256",
1289
+ "name": "",
1290
+ "type": "uint256"
1291
+ }
1292
+ ],
1293
+ "stateMutability": "view",
1294
+ "type": "function"
1295
+ },
1058
1296
  {
1059
1297
  "inputs": [
1060
1298
  {
@@ -1128,6 +1366,19 @@
1128
1366
  "stateMutability": "view",
1129
1367
  "type": "function"
1130
1368
  },
1369
+ {
1370
+ "inputs": [],
1371
+ "name": "isFlashLoanEnabled",
1372
+ "outputs": [
1373
+ {
1374
+ "internalType": "bool",
1375
+ "name": "",
1376
+ "type": "bool"
1377
+ }
1378
+ ],
1379
+ "stateMutability": "view",
1380
+ "type": "function"
1381
+ },
1131
1382
  {
1132
1383
  "inputs": [],
1133
1384
  "name": "isVToken",
@@ -1546,8 +1797,8 @@
1546
1797
  "type": "function"
1547
1798
  }
1548
1799
  ],
1549
- "bytecode": "0x608060405234801561000f575f80fd5b50604051611e58380380611e5883398101604081905261002e916103b4565b60038054610100600160a81b031916336101000217905560405161009b908390610068908d908d908d908d908d908d908d906024016104d1565b60408051601f198184030181529190526020810180516001600160e01b03908116631a31d46560e01b179091526100dc16565b506100a7825f8361014f565b5050600380546001600160a01b0390921661010002610100600160a81b03199092169190911790555061056495505050505050565b60605f80846001600160a01b0316846040516100f89190610535565b5f60405180830381855af49150503d805f8114610130576040519150601f19603f3d011682016040523d82523d5f602084013e610135565b606091505b50909250905081610147573d60208201fd5b949350505050565b60035461010090046001600160a01b031633146101d85760405162461bcd60e51b815260206004820152603960248201527f56426570323044656c656761746f723a3a5f736574496d706c656d656e74617460448201527f696f6e3a2043616c6c6572206d7573742062652061646d696e00000000000000606482015260840160405180910390fd5b8115610217576040805160048152602481019091526020810180516001600160e01b0390811663153ab50560e01b1790915261021591906102ce16565b505b601280546001600160a01b038581166001600160a01b03198316179092556040519116906102809061024d90849060240161054b565b60408051601f198184030181529190526020810180516001600160e01b03908116630adccee560e31b179091526102ce16565b50601254604080516001600160a01b03808516825290921660208301527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a150505050565b6012546060906102e7906001600160a01b0316836100dc565b92915050565b80516001600160a01b0381168114610303575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261032b575f80fd5b81516001600160401b038082111561034557610345610308565b604051601f8301601f19908116603f0116810190828211818310171561036d5761036d610308565b81604052838152866020858801011115610385575f80fd5b8360208701602083015e5f602085830101528094505050505092915050565b805160ff81168114610303575f80fd5b5f805f805f805f805f806101408b8d0312156103ce575f80fd5b6103d78b6102ed565b99506103e560208c016102ed565b98506103f360408c016102ed565b60608c015160808d015191995097506001600160401b0380821115610416575f80fd5b6104228e838f0161031c565b975060a08d0151915080821115610437575f80fd5b6104438e838f0161031c565b965061045160c08e016103a4565b955061045f60e08e016102ed565b945061046e6101008e016102ed565b93506101208d0151915080821115610484575f80fd5b506104918d828e0161031c565b9150509295989b9194979a5092959850565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b0388811682528781166020830152861660408201526060810185905260e0608082018190525f9061050b908301866104a3565b82810360a084015261051d81866104a3565b91505060ff831660c083015298975050505050505050565b5f82518060208501845e5f920191825250919050565b602081525f61055d60208301846104a3565b9392505050565b6118e7806105715f395ff3fe608060405234801561000f575f80fd5b506004361061035b575f3560e01c806373acee98116101d1578063bd6d894d11610102578063e9c714f2116100a0578063f5e3c4621161007a578063f5e3c46214610756578063f851a44014610769578063f8f9da2814610781578063fca7820b146107895761035b565b8063e9c714f214610728578063f2b3abbd14610730578063f3fdb15a146107435761035b565b8063d1109c2f116100dc578063d1109c2f146106e6578063db006a75146106ef578063dd62ed3e14610702578063e9a44fd9146107155761035b565b8063bd6d894d14610698578063c37f68e2146106a0578063c5ebeaec146106d35761035b565b8063a9059cbb1161016f578063ae9d70b011610149578063ae9d70b014610657578063b2a02ff11461065f578063b4a0bdf314610672578063b71d1a0c146106855761035b565b8063a9059cbb14610632578063aa5af0fd14610645578063ae96f1411461064e5761035b565b806395d89b41116101ab57806395d89b41146105fc57806395dd919314610604578063a0712d6814610617578063a6afed951461062a5761035b565b806373acee98146105d8578063852a12e3146105e05780638f840ddd146105f35761035b565b80633af9e669116102ab578063555bcc4011610249578063601a0bf111610223578063601a0bf1146105965780636c540baf146105a95780636f307dc3146105b257806370a08231146105c55761035b565b8063555bcc401461055d5780635c60da1b146105705780635fe3b567146105835761035b565b80633e941010116102855780633e9410101461051b5780634487152f1461052e5780634576b5db1461054157806347bd3718146105545761035b565b80633af9e669146104f85780633b1d21a21461050b5780633d9ea3a1146105135761035b565b806318160ddd1161031857806323b872dd116102f257806323b872dd146104885780632608f8181461049b57806326782247146104ae578063313ce567146104d95761035b565b806318160ddd14610464578063182df0f51461046d57806323323e03146104755761035b565b806306fdde03146103d35780630933c1ed146103f1578063095ea7b3146104045780630e75270214610427578063173b99041461044857806317bfdfbc14610451575b6012546040515f916001600160a01b03169061037a90839036906114b8565b5f60405180830381855af49150503d805f81146103b2576040519150601f19603f3d011682016040523d82523d5f602084013e6103b7565b606091505b505090506040513d5f823e8180156103cd573d82f35b3d82fd5b005b6103db61079c565b6040516103e891906114f5565b60405180910390f35b6103db6103ff3660046115c5565b610828565b61041761041236600461160e565b610847565b60405190151581526020016103e8565b61043a610435366004611638565b6108b8565b6040519081526020016103e8565b61043a60085481565b61043a61045f36600461164f565b61091c565b61043a600d5481565b61043a610968565b61043a61048336600461160e565b6109ba565b61041761049636600461166a565b610a23565b61043a6104a936600461160e565b610a9d565b6004546104c1906001600160a01b031681565b6040516001600160a01b0390911681526020016103e8565b6003546104e69060ff1681565b60405160ff90911681526020016103e8565b61043a61050636600461164f565b610af0565b61043a610b3c565b610417600181565b61043a610529366004611638565b610b72565b6103db61053c3660046115c5565b610bb9565b61043a61054f36600461164f565b610c70565b61043a600b5481565b6103d161056b3660046116b5565b610cbc565b6012546104c1906001600160a01b031681565b6005546104c1906001600160a01b031681565b61043a6105a4366004611638565b610e32565b61043a60095481565b6011546104c1906001600160a01b031681565b61043a6105d336600461164f565b610e79565b61043a610ec5565b61043a6105ee366004611638565b610efb565b61043a600c5481565b6103db610f42565b61043a61061236600461164f565b610f4f565b61043a610625366004611638565b610f9b565b61043a610fe2565b61041761064036600461160e565b611018565b61043a600a5481565b61043a60145481565b61043a61106b565b61043a61066d36600461166a565b6110a1565b6016546104c1906001600160a01b031681565b61043a61069336600461164f565b611112565b61043a61115e565b6106b36106ae36600461164f565b611194565b6040805194855260208501939093529183015260608201526080016103e8565b61043a6106e1366004611638565b611211565b61043a60135481565b61043a6106fd366004611638565b611258565b61043a610710366004611713565b61129f565b6015546104c1906001600160a01b031681565b61043a6112f3565b61043a61073e36600461164f565b611329565b6006546104c1906001600160a01b031681565b61043a61076436600461174a565b611375565b6003546104c19061010090046001600160a01b031681565b61043a6113d0565b61043a610797366004611638565b611406565b600180546107a990611789565b80601f01602080910402602001604051908101604052809291908181526020018280546107d590611789565b80156108205780601f106107f757610100808354040283529160200191610820565b820191905f5260205f20905b81548152906001019060200180831161080357829003601f168201915b505050505081565b601254606090610841906001600160a01b03168361144d565b92915050565b6040516001600160a01b0383166024820152604481018290525f90819061089a9060640160408051601f198184030181529190526020810180516001600160e01b031663095ea7b360e01b179052610828565b9050808060200190518101906108b091906117c1565b949350505050565b5f806108ff836040516024016108d091815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663073a938160e11b179052610828565b90508080602001905181019061091591906117dc565b9392505050565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b03166305eff7ef60e21b179052610828565b6040805160048152602481019091526020810180516001600160e01b031663182df0f560e01b1790525f90819061099e90610bb9565b9050808060200190518101906109b491906117dc565b91505090565b6040516001600160a01b0383166024820152604481018290525f908190610a0d9060640160408051601f198184030181529190526020810180516001600160e01b03166323323e0360e01b179052610828565b9050808060200190518101906108b091906117dc565b6040516001600160a01b03808516602483015283166044820152606481018290525f908190610a7e9060840160408051601f198184030181529190526020810180516001600160e01b03166323b872dd60e01b179052610828565b905080806020019051810190610a9491906117c1565b95945050505050565b6040516001600160a01b0383166024820152604481018290525f908190610a0d9060640160408051601f198184030181529190526020810180516001600160e01b03166304c11f0360e31b179052610828565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b0316633af9e66960e01b179052610828565b6040805160048152602481019091526020810180516001600160e01b0316631d8e90d160e11b1790525f90819061099e90610bb9565b5f806108ff83604051602401610b8a91815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166303e9410160e41b179052610828565b60605f80306001600160a01b031684604051602401610bd891906114f5565b60408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b17905251610c0d91906117f3565b5f60405180830381855afa9150503d805f8114610c45576040519150601f19603f3d011682016040523d82523d5f602084013e610c4a565b606091505b50909250905081610c5c573d60208201fd5b808060200190518101906108b09190611809565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b0316634576b5db60e01b179052610828565b60035461010090046001600160a01b03163314610d455760405162461bcd60e51b815260206004820152603960248201527f56426570323044656c656761746f723a3a5f736574496d706c656d656e74617460448201527f696f6e3a2043616c6c6572206d7573742062652061646d696e00000000000000606482015260840160405180910390fd5b8115610d7f576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b179052610d7d90610828565b505b601280546001600160a01b038581166001600160a01b0319831617909255604051911690610de490610db59084906024016114f5565b60408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b179052610828565b50601254604080516001600160a01b03808516825290921660208301527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a150505050565b5f806108ff83604051602401610e4a91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663601a0bf160e01b179052610828565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b03166370a0823160e01b179052610bb9565b6040805160048152602481019091526020810180516001600160e01b0316630e759dd360e31b1790525f90819061099e90610828565b5f806108ff83604051602401610f1391815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663852a12e360e01b179052610828565b600280546107a990611789565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b03166395dd919360e01b179052610bb9565b5f806108ff83604051602401610fb391815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663140e25ad60e31b179052610828565b6040805160048152602481019091526020810180516001600160e01b031663a6afed9560e01b1790525f90819061099e90610828565b6040516001600160a01b0383166024820152604481018290525f90819061089a9060640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b179052610828565b6040805160048152602481019091526020810180516001600160e01b0316630ae9d70b60e41b1790525f90819061099e90610bb9565b6040516001600160a01b03808516602483015283166044820152606481018290525f9081906110fc9060840160408051601f198184030181529190526020810180516001600160e01b031663b2a02ff160e01b179052610828565b905080806020019051810190610a9491906117dc565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b0316632dc7468360e21b179052610828565b6040805160048152602481019091526020810180516001600160e01b031663bd6d894d60e01b1790525f90819061099e90610828565b5f805f805f6111eb866040516024016111bc91906001600160a01b0391909116815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166361bfb47160e11b179052610bb9565b905080806020019051810190611201919061187e565b9450945094509450509193509193565b5f806108ff8360405160240161122991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663317afabb60e21b179052610828565b5f806108ff8360405160240161127091815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663db006a7560e01b179052610828565b6040516001600160a01b038084166024830152821660448201525f908190610a0d9060640160408051601f198184030181529190526020810180516001600160e01b0316636eb1769f60e11b179052610bb9565b6040805160048152602481019091526020810180516001600160e01b03166374e38a7960e11b1790525f90819061099e90610828565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b031663f2b3abbd60e01b179052610828565b6040516001600160a01b03808516602483015260448201849052821660648201525f9081906110fc9060840160408051601f198184030181529190526020810180516001600160e01b0316637af1e23160e11b179052610828565b6040805160048152602481019091526020810180516001600160e01b0316631f1f3b4560e31b1790525f90819061099e90610bb9565b5f806108ff8360405160240161141e91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663fca7820b60e01b179052610828565b60605f80846001600160a01b03168460405161146991906117f3565b5f60405180830381855af49150503d805f81146114a1576040519150601f19603f3d011682016040523d82523d5f602084013e6114a6565b606091505b509092509050816108b0573d60208201fd5b818382375f9101908152919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61091560208301846114c7565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561154457611544611507565b604052919050565b5f67ffffffffffffffff82111561156557611565611507565b50601f01601f191660200190565b5f82601f830112611582575f80fd5b81356115956115908261154c565b61151b565b8181528460208386010111156115a9575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156115d5575f80fd5b813567ffffffffffffffff8111156115eb575f80fd5b6108b084828501611573565b6001600160a01b038116811461160b575f80fd5b50565b5f806040838503121561161f575f80fd5b823561162a816115f7565b946020939093013593505050565b5f60208284031215611648575f80fd5b5035919050565b5f6020828403121561165f575f80fd5b8135610915816115f7565b5f805f6060848603121561167c575f80fd5b8335611687816115f7565b92506020840135611697816115f7565b929592945050506040919091013590565b801515811461160b575f80fd5b5f805f606084860312156116c7575f80fd5b83356116d2816115f7565b925060208401356116e2816116a8565b9150604084013567ffffffffffffffff8111156116fd575f80fd5b61170986828701611573565b9150509250925092565b5f8060408385031215611724575f80fd5b823561172f816115f7565b9150602083013561173f816115f7565b809150509250929050565b5f805f6060848603121561175c575f80fd5b8335611767816115f7565b925060208401359150604084013561177e816115f7565b809150509250925092565b600181811c9082168061179d57607f821691505b6020821081036117bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f602082840312156117d1575f80fd5b8151610915816116a8565b5f602082840312156117ec575f80fd5b5051919050565b5f82518060208501845e5f920191825250919050565b5f60208284031215611819575f80fd5b815167ffffffffffffffff81111561182f575f80fd5b8201601f8101841361183f575f80fd5b805161184d6115908261154c565b818152856020838501011115611861575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f805f8060808587031215611891575f80fd5b50508251602084015160408501516060909501519196909550909250905056fea264697066735822122054efdb60ee3d97ead41f395cf1bdce5033e7e353b5f562e415bc6706fd066d0564736f6c63430008190033",
1550
- "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061035b575f3560e01c806373acee98116101d1578063bd6d894d11610102578063e9c714f2116100a0578063f5e3c4621161007a578063f5e3c46214610756578063f851a44014610769578063f8f9da2814610781578063fca7820b146107895761035b565b8063e9c714f214610728578063f2b3abbd14610730578063f3fdb15a146107435761035b565b8063d1109c2f116100dc578063d1109c2f146106e6578063db006a75146106ef578063dd62ed3e14610702578063e9a44fd9146107155761035b565b8063bd6d894d14610698578063c37f68e2146106a0578063c5ebeaec146106d35761035b565b8063a9059cbb1161016f578063ae9d70b011610149578063ae9d70b014610657578063b2a02ff11461065f578063b4a0bdf314610672578063b71d1a0c146106855761035b565b8063a9059cbb14610632578063aa5af0fd14610645578063ae96f1411461064e5761035b565b806395d89b41116101ab57806395d89b41146105fc57806395dd919314610604578063a0712d6814610617578063a6afed951461062a5761035b565b806373acee98146105d8578063852a12e3146105e05780638f840ddd146105f35761035b565b80633af9e669116102ab578063555bcc4011610249578063601a0bf111610223578063601a0bf1146105965780636c540baf146105a95780636f307dc3146105b257806370a08231146105c55761035b565b8063555bcc401461055d5780635c60da1b146105705780635fe3b567146105835761035b565b80633e941010116102855780633e9410101461051b5780634487152f1461052e5780634576b5db1461054157806347bd3718146105545761035b565b80633af9e669146104f85780633b1d21a21461050b5780633d9ea3a1146105135761035b565b806318160ddd1161031857806323b872dd116102f257806323b872dd146104885780632608f8181461049b57806326782247146104ae578063313ce567146104d95761035b565b806318160ddd14610464578063182df0f51461046d57806323323e03146104755761035b565b806306fdde03146103d35780630933c1ed146103f1578063095ea7b3146104045780630e75270214610427578063173b99041461044857806317bfdfbc14610451575b6012546040515f916001600160a01b03169061037a90839036906114b8565b5f60405180830381855af49150503d805f81146103b2576040519150601f19603f3d011682016040523d82523d5f602084013e6103b7565b606091505b505090506040513d5f823e8180156103cd573d82f35b3d82fd5b005b6103db61079c565b6040516103e891906114f5565b60405180910390f35b6103db6103ff3660046115c5565b610828565b61041761041236600461160e565b610847565b60405190151581526020016103e8565b61043a610435366004611638565b6108b8565b6040519081526020016103e8565b61043a60085481565b61043a61045f36600461164f565b61091c565b61043a600d5481565b61043a610968565b61043a61048336600461160e565b6109ba565b61041761049636600461166a565b610a23565b61043a6104a936600461160e565b610a9d565b6004546104c1906001600160a01b031681565b6040516001600160a01b0390911681526020016103e8565b6003546104e69060ff1681565b60405160ff90911681526020016103e8565b61043a61050636600461164f565b610af0565b61043a610b3c565b610417600181565b61043a610529366004611638565b610b72565b6103db61053c3660046115c5565b610bb9565b61043a61054f36600461164f565b610c70565b61043a600b5481565b6103d161056b3660046116b5565b610cbc565b6012546104c1906001600160a01b031681565b6005546104c1906001600160a01b031681565b61043a6105a4366004611638565b610e32565b61043a60095481565b6011546104c1906001600160a01b031681565b61043a6105d336600461164f565b610e79565b61043a610ec5565b61043a6105ee366004611638565b610efb565b61043a600c5481565b6103db610f42565b61043a61061236600461164f565b610f4f565b61043a610625366004611638565b610f9b565b61043a610fe2565b61041761064036600461160e565b611018565b61043a600a5481565b61043a60145481565b61043a61106b565b61043a61066d36600461166a565b6110a1565b6016546104c1906001600160a01b031681565b61043a61069336600461164f565b611112565b61043a61115e565b6106b36106ae36600461164f565b611194565b6040805194855260208501939093529183015260608201526080016103e8565b61043a6106e1366004611638565b611211565b61043a60135481565b61043a6106fd366004611638565b611258565b61043a610710366004611713565b61129f565b6015546104c1906001600160a01b031681565b61043a6112f3565b61043a61073e36600461164f565b611329565b6006546104c1906001600160a01b031681565b61043a61076436600461174a565b611375565b6003546104c19061010090046001600160a01b031681565b61043a6113d0565b61043a610797366004611638565b611406565b600180546107a990611789565b80601f01602080910402602001604051908101604052809291908181526020018280546107d590611789565b80156108205780601f106107f757610100808354040283529160200191610820565b820191905f5260205f20905b81548152906001019060200180831161080357829003601f168201915b505050505081565b601254606090610841906001600160a01b03168361144d565b92915050565b6040516001600160a01b0383166024820152604481018290525f90819061089a9060640160408051601f198184030181529190526020810180516001600160e01b031663095ea7b360e01b179052610828565b9050808060200190518101906108b091906117c1565b949350505050565b5f806108ff836040516024016108d091815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663073a938160e11b179052610828565b90508080602001905181019061091591906117dc565b9392505050565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b03166305eff7ef60e21b179052610828565b6040805160048152602481019091526020810180516001600160e01b031663182df0f560e01b1790525f90819061099e90610bb9565b9050808060200190518101906109b491906117dc565b91505090565b6040516001600160a01b0383166024820152604481018290525f908190610a0d9060640160408051601f198184030181529190526020810180516001600160e01b03166323323e0360e01b179052610828565b9050808060200190518101906108b091906117dc565b6040516001600160a01b03808516602483015283166044820152606481018290525f908190610a7e9060840160408051601f198184030181529190526020810180516001600160e01b03166323b872dd60e01b179052610828565b905080806020019051810190610a9491906117c1565b95945050505050565b6040516001600160a01b0383166024820152604481018290525f908190610a0d9060640160408051601f198184030181529190526020810180516001600160e01b03166304c11f0360e31b179052610828565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b0316633af9e66960e01b179052610828565b6040805160048152602481019091526020810180516001600160e01b0316631d8e90d160e11b1790525f90819061099e90610bb9565b5f806108ff83604051602401610b8a91815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166303e9410160e41b179052610828565b60605f80306001600160a01b031684604051602401610bd891906114f5565b60408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b17905251610c0d91906117f3565b5f60405180830381855afa9150503d805f8114610c45576040519150601f19603f3d011682016040523d82523d5f602084013e610c4a565b606091505b50909250905081610c5c573d60208201fd5b808060200190518101906108b09190611809565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b0316634576b5db60e01b179052610828565b60035461010090046001600160a01b03163314610d455760405162461bcd60e51b815260206004820152603960248201527f56426570323044656c656761746f723a3a5f736574496d706c656d656e74617460448201527f696f6e3a2043616c6c6572206d7573742062652061646d696e00000000000000606482015260840160405180910390fd5b8115610d7f576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b179052610d7d90610828565b505b601280546001600160a01b038581166001600160a01b0319831617909255604051911690610de490610db59084906024016114f5565b60408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b179052610828565b50601254604080516001600160a01b03808516825290921660208301527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a150505050565b5f806108ff83604051602401610e4a91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663601a0bf160e01b179052610828565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b03166370a0823160e01b179052610bb9565b6040805160048152602481019091526020810180516001600160e01b0316630e759dd360e31b1790525f90819061099e90610828565b5f806108ff83604051602401610f1391815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663852a12e360e01b179052610828565b600280546107a990611789565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b03166395dd919360e01b179052610bb9565b5f806108ff83604051602401610fb391815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663140e25ad60e31b179052610828565b6040805160048152602481019091526020810180516001600160e01b031663a6afed9560e01b1790525f90819061099e90610828565b6040516001600160a01b0383166024820152604481018290525f90819061089a9060640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b179052610828565b6040805160048152602481019091526020810180516001600160e01b0316630ae9d70b60e41b1790525f90819061099e90610bb9565b6040516001600160a01b03808516602483015283166044820152606481018290525f9081906110fc9060840160408051601f198184030181529190526020810180516001600160e01b031663b2a02ff160e01b179052610828565b905080806020019051810190610a9491906117dc565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b0316632dc7468360e21b179052610828565b6040805160048152602481019091526020810180516001600160e01b031663bd6d894d60e01b1790525f90819061099e90610828565b5f805f805f6111eb866040516024016111bc91906001600160a01b0391909116815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166361bfb47160e11b179052610bb9565b905080806020019051810190611201919061187e565b9450945094509450509193509193565b5f806108ff8360405160240161122991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663317afabb60e21b179052610828565b5f806108ff8360405160240161127091815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663db006a7560e01b179052610828565b6040516001600160a01b038084166024830152821660448201525f908190610a0d9060640160408051601f198184030181529190526020810180516001600160e01b0316636eb1769f60e11b179052610bb9565b6040805160048152602481019091526020810180516001600160e01b03166374e38a7960e11b1790525f90819061099e90610828565b6040516001600160a01b03821660248201525f9081906108ff9060440160408051601f198184030181529190526020810180516001600160e01b031663f2b3abbd60e01b179052610828565b6040516001600160a01b03808516602483015260448201849052821660648201525f9081906110fc9060840160408051601f198184030181529190526020810180516001600160e01b0316637af1e23160e11b179052610828565b6040805160048152602481019091526020810180516001600160e01b0316631f1f3b4560e31b1790525f90819061099e90610bb9565b5f806108ff8360405160240161141e91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663fca7820b60e01b179052610828565b60605f80846001600160a01b03168460405161146991906117f3565b5f60405180830381855af49150503d805f81146114a1576040519150601f19603f3d011682016040523d82523d5f602084013e6114a6565b606091505b509092509050816108b0573d60208201fd5b818382375f9101908152919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61091560208301846114c7565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561154457611544611507565b604052919050565b5f67ffffffffffffffff82111561156557611565611507565b50601f01601f191660200190565b5f82601f830112611582575f80fd5b81356115956115908261154c565b61151b565b8181528460208386010111156115a9575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156115d5575f80fd5b813567ffffffffffffffff8111156115eb575f80fd5b6108b084828501611573565b6001600160a01b038116811461160b575f80fd5b50565b5f806040838503121561161f575f80fd5b823561162a816115f7565b946020939093013593505050565b5f60208284031215611648575f80fd5b5035919050565b5f6020828403121561165f575f80fd5b8135610915816115f7565b5f805f6060848603121561167c575f80fd5b8335611687816115f7565b92506020840135611697816115f7565b929592945050506040919091013590565b801515811461160b575f80fd5b5f805f606084860312156116c7575f80fd5b83356116d2816115f7565b925060208401356116e2816116a8565b9150604084013567ffffffffffffffff8111156116fd575f80fd5b61170986828701611573565b9150509250925092565b5f8060408385031215611724575f80fd5b823561172f816115f7565b9150602083013561173f816115f7565b809150509250929050565b5f805f6060848603121561175c575f80fd5b8335611767816115f7565b925060208401359150604084013561177e816115f7565b809150509250925092565b600181811c9082168061179d57607f821691505b6020821081036117bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f602082840312156117d1575f80fd5b8151610915816116a8565b5f602082840312156117ec575f80fd5b5051919050565b5f82518060208501845e5f920191825250919050565b5f60208284031215611819575f80fd5b815167ffffffffffffffff81111561182f575f80fd5b8201601f8101841361183f575f80fd5b805161184d6115908261154c565b818152856020838501011115611861575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f805f8060808587031215611891575f80fd5b50508251602084015160408501516060909501519196909550909250905056fea264697066735822122054efdb60ee3d97ead41f395cf1bdce5033e7e353b5f562e415bc6706fd066d0564736f6c63430008190033",
1800
+ "bytecode": "0x608060405234801561000f575f80fd5b50604051611f34380380611f3483398101604081905261002e916103b4565b60038054610100600160a81b031916336101000217905560405161009b908390610068908d908d908d908d908d908d908d906024016104d1565b60408051601f198184030181529190526020810180516001600160e01b03908116631a31d46560e01b179091526100dc16565b506100a7825f8361014f565b5050600380546001600160a01b0390921661010002610100600160a81b03199092169190911790555061056495505050505050565b60605f80846001600160a01b0316846040516100f89190610535565b5f60405180830381855af49150503d805f8114610130576040519150601f19603f3d011682016040523d82523d5f602084013e610135565b606091505b50909250905081610147573d60208201fd5b949350505050565b60035461010090046001600160a01b031633146101d85760405162461bcd60e51b815260206004820152603960248201527f56426570323044656c656761746f723a3a5f736574496d706c656d656e74617460448201527f696f6e3a2043616c6c6572206d7573742062652061646d696e00000000000000606482015260840160405180910390fd5b8115610217576040805160048152602481019091526020810180516001600160e01b0390811663153ab50560e01b1790915261021591906102ce16565b505b601280546001600160a01b038581166001600160a01b03198316179092556040519116906102809061024d90849060240161054b565b60408051601f198184030181529190526020810180516001600160e01b03908116630adccee560e31b179091526102ce16565b50601254604080516001600160a01b03808516825290921660208301527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a150505050565b6012546060906102e7906001600160a01b0316836100dc565b92915050565b80516001600160a01b0381168114610303575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261032b575f80fd5b81516001600160401b038082111561034557610345610308565b604051601f8301601f19908116603f0116810190828211818310171561036d5761036d610308565b81604052838152866020858801011115610385575f80fd5b8360208701602083015e5f602085830101528094505050505092915050565b805160ff81168114610303575f80fd5b5f805f805f805f805f806101408b8d0312156103ce575f80fd5b6103d78b6102ed565b99506103e560208c016102ed565b98506103f360408c016102ed565b60608c015160808d015191995097506001600160401b0380821115610416575f80fd5b6104228e838f0161031c565b975060a08d0151915080821115610437575f80fd5b6104438e838f0161031c565b965061045160c08e016103a4565b955061045f60e08e016102ed565b945061046e6101008e016102ed565b93506101208d0151915080821115610484575f80fd5b506104918d828e0161031c565b9150509295989b9194979a5092959850565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b0388811682528781166020830152861660408201526060810185905260e0608082018190525f9061050b908301866104a3565b82810360a084015261051d81866104a3565b91505060ff831660c083015298975050505050505050565b5f82518060208501845e5f920191825250919050565b602081525f61055d60208301846104a3565b9392505050565b6119c3806105715f395ff3fe608060405234801561000f575f80fd5b50600436106103a2575f3560e01c806373843962116101e7578063b71d1a0c1161010d578063e9a44fd9116100ab578063f5e3c4621161007a578063f5e3c462146107df578063f851a440146107f2578063f8f9da281461080a578063fca7820b14610812576103a2565b8063e9a44fd91461079e578063e9c714f2146107b1578063f2b3abbd146107b9578063f3fdb15a146107cc576103a2565b8063c5ebeaec116100e7578063c5ebeaec1461075c578063d1109c2f1461076f578063db006a7514610778578063dd62ed3e1461078b576103a2565b8063b71d1a0c1461070e578063bd6d894d14610721578063c37f68e214610729576103a2565b8063a6afed9511610185578063ae96f14111610154578063ae96f141146106d7578063ae9d70b0146106e0578063b2a02ff1146106e8578063b4a0bdf3146106fb576103a2565b8063a6afed951461069f578063a9059cbb146106a7578063aa5af0fd146106ba578063ae3fcb1f146106c3576103a2565b80638f840ddd116101c15780638f840ddd1461066857806395d89b411461067157806395dd919314610679578063a0712d681461068c576103a2565b8063738439621461064457806373acee981461064d578063852a12e314610655576103a2565b80633af9e669116102cc578063555bcc401161026a57806366ce8d7d1161023957806366ce8d7d146106025780636c540baf146106155780636f307dc31461061e57806370a0823114610631576103a2565b8063555bcc40146105b65780635c60da1b146105c95780635fe3b567146105dc578063601a0bf1146105ef576103a2565b80633e941010116102a65780633e941010146105745780634487152f146105875780634576b5db1461059a57806347bd3718146105ad576103a2565b80633af9e669146105515780633b1d21a2146105645780633d9ea3a11461056c576103a2565b8063182df0f5116103445780632608f818116103135780632608f818146104eb57806326782247146104fe57806328e2dc6c14610529578063313ce56714610532576103a2565b8063182df0f5146104b4578063217e7de2146104bc57806323323e03146104c557806323b872dd146104d8576103a2565b80630e752702116103805780630e7527021461046e578063173b99041461048f57806317bfdfbc1461049857806318160ddd146104ab576103a2565b806306fdde031461041a5780630933c1ed14610438578063095ea7b31461044b575b6012546040515f916001600160a01b0316906103c19083903690611594565b5f60405180830381855af49150503d805f81146103f9576040519150601f19603f3d011682016040523d82523d5f602084013e6103fe565b606091505b505090506040513d5f823e818015610414573d82f35b3d82fd5b005b610422610825565b60405161042f91906115d1565b60405180910390f35b6104226104463660046116a1565b6108b1565b61045e6104593660046116ea565b6108d0565b604051901515815260200161042f565b61048161047c366004611714565b610941565b60405190815260200161042f565b61048160085481565b6104816104a636600461172b565b6109a5565b610481600d5481565b6104816109f1565b61048160185481565b6104816104d33660046116ea565b610a43565b61045e6104e6366004611746565b610aac565b6104816104f93660046116ea565b610b26565b600454610511906001600160a01b031681565b6040516001600160a01b03909116815260200161042f565b61048160175481565b60035461053f9060ff1681565b60405160ff909116815260200161042f565b61048161055f36600461172b565b610b79565b610481610bc5565b61045e600181565b610481610582366004611714565b610bfb565b6104226105953660046116a1565b610c42565b6104816105a836600461172b565b610cf9565b610481600b5481565b6104186105c4366004611791565b610d45565b601254610511906001600160a01b031681565b600554610511906001600160a01b031681565b6104816105fd366004611714565b610ebb565b6104816106103660046116ea565b610f02565b61048160095481565b601154610511906001600160a01b031681565b61048161063f36600461172b565b610f55565b61048160195481565b610481610fa1565b610481610663366004611714565b610fd7565b610481600c5481565b61042261101e565b61048161068736600461172b565b61102b565b61048161069a366004611714565b611077565b6104816110be565b61045e6106b53660046116ea565b6110f4565b610481600a5481565b60165461045e90600160a01b900460ff1681565b61048160145481565b610481611147565b6104816106f6366004611746565b61117d565b601654610511906001600160a01b031681565b61048161071c36600461172b565b6111ee565b61048161123a565b61073c61073736600461172b565b611270565b60408051948552602085019390935291830152606082015260800161042f565b61048161076a366004611714565b6112ed565b61048160135481565b610481610786366004611714565b611334565b6104816107993660046117ef565b61137b565b601554610511906001600160a01b031681565b6104816113cf565b6104816107c736600461172b565b611405565b600654610511906001600160a01b031681565b6104816107ed366004611826565b611451565b6003546105119061010090046001600160a01b031681565b6104816114ac565b610481610820366004611714565b6114e2565b6001805461083290611865565b80601f016020809104026020016040519081016040528092919081815260200182805461085e90611865565b80156108a95780601f10610880576101008083540402835291602001916108a9565b820191905f5260205f20905b81548152906001019060200180831161088c57829003601f168201915b505050505081565b6012546060906108ca906001600160a01b031683611529565b92915050565b6040516001600160a01b0383166024820152604481018290525f9081906109239060640160408051601f198184030181529190526020810180516001600160e01b031663095ea7b360e01b1790526108b1565b905080806020019051810190610939919061189d565b949350505050565b5f806109888360405160240161095991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663073a938160e11b1790526108b1565b90508080602001905181019061099e91906118b8565b9392505050565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b03166305eff7ef60e21b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b031663182df0f560e01b1790525f908190610a2790610c42565b905080806020019051810190610a3d91906118b8565b91505090565b6040516001600160a01b0383166024820152604481018290525f908190610a969060640160408051601f198184030181529190526020810180516001600160e01b03166323323e0360e01b1790526108b1565b90508080602001905181019061093991906118b8565b6040516001600160a01b03808516602483015283166044820152606481018290525f908190610b079060840160408051601f198184030181529190526020810180516001600160e01b03166323b872dd60e01b1790526108b1565b905080806020019051810190610b1d919061189d565b95945050505050565b6040516001600160a01b0383166024820152604481018290525f908190610a969060640160408051601f198184030181529190526020810180516001600160e01b03166304c11f0360e31b1790526108b1565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b0316633af9e66960e01b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b0316631d8e90d160e11b1790525f908190610a2790610c42565b5f8061098883604051602401610c1391815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166303e9410160e41b1790526108b1565b60605f80306001600160a01b031684604051602401610c6191906115d1565b60408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b17905251610c9691906118cf565b5f60405180830381855afa9150503d805f8114610cce576040519150601f19603f3d011682016040523d82523d5f602084013e610cd3565b606091505b50909250905081610ce5573d60208201fd5b8080602001905181019061093991906118e5565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b0316634576b5db60e01b1790526108b1565b60035461010090046001600160a01b03163314610dce5760405162461bcd60e51b815260206004820152603960248201527f56426570323044656c656761746f723a3a5f736574496d706c656d656e74617460448201527f696f6e3a2043616c6c6572206d7573742062652061646d696e00000000000000606482015260840160405180910390fd5b8115610e08576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b179052610e06906108b1565b505b601280546001600160a01b038581166001600160a01b0319831617909255604051911690610e6d90610e3e9084906024016115d1565b60408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b1790526108b1565b50601254604080516001600160a01b03808516825290921660208301527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a150505050565b5f8061098883604051602401610ed391815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663601a0bf160e01b1790526108b1565b6040516001600160a01b0383166024820152604481018290525f908190610a969060640160408051601f198184030181529190526020810180516001600160e01b03166366ce8d7d60e01b1790526108b1565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b03166370a0823160e01b179052610c42565b6040805160048152602481019091526020810180516001600160e01b0316630e759dd360e31b1790525f908190610a27906108b1565b5f8061098883604051602401610fef91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663852a12e360e01b1790526108b1565b6002805461083290611865565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b03166395dd919360e01b179052610c42565b5f806109888360405160240161108f91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663140e25ad60e31b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b031663a6afed9560e01b1790525f908190610a27906108b1565b6040516001600160a01b0383166024820152604481018290525f9081906109239060640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b0316630ae9d70b60e41b1790525f908190610a2790610c42565b6040516001600160a01b03808516602483015283166044820152606481018290525f9081906111d89060840160408051601f198184030181529190526020810180516001600160e01b031663b2a02ff160e01b1790526108b1565b905080806020019051810190610b1d91906118b8565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b0316632dc7468360e21b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b031663bd6d894d60e01b1790525f908190610a27906108b1565b5f805f805f6112c78660405160240161129891906001600160a01b0391909116815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166361bfb47160e11b179052610c42565b9050808060200190518101906112dd919061195a565b9450945094509450509193509193565b5f806109888360405160240161130591815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663317afabb60e21b1790526108b1565b5f806109888360405160240161134c91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663db006a7560e01b1790526108b1565b6040516001600160a01b038084166024830152821660448201525f908190610a969060640160408051601f198184030181529190526020810180516001600160e01b0316636eb1769f60e11b179052610c42565b6040805160048152602481019091526020810180516001600160e01b03166374e38a7960e11b1790525f908190610a27906108b1565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b031663f2b3abbd60e01b1790526108b1565b6040516001600160a01b03808516602483015260448201849052821660648201525f9081906111d89060840160408051601f198184030181529190526020810180516001600160e01b0316637af1e23160e11b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b0316631f1f3b4560e31b1790525f908190610a2790610c42565b5f80610988836040516024016114fa91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663fca7820b60e01b1790526108b1565b60605f80846001600160a01b03168460405161154591906118cf565b5f60405180830381855af49150503d805f811461157d576040519150601f19603f3d011682016040523d82523d5f602084013e611582565b606091505b50909250905081610939573d60208201fd5b818382375f9101908152919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61099e60208301846115a3565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611620576116206115e3565b604052919050565b5f67ffffffffffffffff821115611641576116416115e3565b50601f01601f191660200190565b5f82601f83011261165e575f80fd5b813561167161166c82611628565b6115f7565b818152846020838601011115611685575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156116b1575f80fd5b813567ffffffffffffffff8111156116c7575f80fd5b6109398482850161164f565b6001600160a01b03811681146116e7575f80fd5b50565b5f80604083850312156116fb575f80fd5b8235611706816116d3565b946020939093013593505050565b5f60208284031215611724575f80fd5b5035919050565b5f6020828403121561173b575f80fd5b813561099e816116d3565b5f805f60608486031215611758575f80fd5b8335611763816116d3565b92506020840135611773816116d3565b929592945050506040919091013590565b80151581146116e7575f80fd5b5f805f606084860312156117a3575f80fd5b83356117ae816116d3565b925060208401356117be81611784565b9150604084013567ffffffffffffffff8111156117d9575f80fd5b6117e58682870161164f565b9150509250925092565b5f8060408385031215611800575f80fd5b823561180b816116d3565b9150602083013561181b816116d3565b809150509250929050565b5f805f60608486031215611838575f80fd5b8335611843816116d3565b925060208401359150604084013561185a816116d3565b809150509250925092565b600181811c9082168061187957607f821691505b60208210810361189757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f602082840312156118ad575f80fd5b815161099e81611784565b5f602082840312156118c8575f80fd5b5051919050565b5f82518060208501845e5f920191825250919050565b5f602082840312156118f5575f80fd5b815167ffffffffffffffff81111561190b575f80fd5b8201601f8101841361191b575f80fd5b805161192961166c82611628565b81815285602083850101111561193d575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f805f806080858703121561196d575f80fd5b50508251602084015160408501516060909501519196909550909250905056fea2646970667358221220a74fdf8cc2cb76f86266bf61bc257a36d9c16cccd241eab8e9fd1cb6a167667c64736f6c63430008190033",
1801
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106103a2575f3560e01c806373843962116101e7578063b71d1a0c1161010d578063e9a44fd9116100ab578063f5e3c4621161007a578063f5e3c462146107df578063f851a440146107f2578063f8f9da281461080a578063fca7820b14610812576103a2565b8063e9a44fd91461079e578063e9c714f2146107b1578063f2b3abbd146107b9578063f3fdb15a146107cc576103a2565b8063c5ebeaec116100e7578063c5ebeaec1461075c578063d1109c2f1461076f578063db006a7514610778578063dd62ed3e1461078b576103a2565b8063b71d1a0c1461070e578063bd6d894d14610721578063c37f68e214610729576103a2565b8063a6afed9511610185578063ae96f14111610154578063ae96f141146106d7578063ae9d70b0146106e0578063b2a02ff1146106e8578063b4a0bdf3146106fb576103a2565b8063a6afed951461069f578063a9059cbb146106a7578063aa5af0fd146106ba578063ae3fcb1f146106c3576103a2565b80638f840ddd116101c15780638f840ddd1461066857806395d89b411461067157806395dd919314610679578063a0712d681461068c576103a2565b8063738439621461064457806373acee981461064d578063852a12e314610655576103a2565b80633af9e669116102cc578063555bcc401161026a57806366ce8d7d1161023957806366ce8d7d146106025780636c540baf146106155780636f307dc31461061e57806370a0823114610631576103a2565b8063555bcc40146105b65780635c60da1b146105c95780635fe3b567146105dc578063601a0bf1146105ef576103a2565b80633e941010116102a65780633e941010146105745780634487152f146105875780634576b5db1461059a57806347bd3718146105ad576103a2565b80633af9e669146105515780633b1d21a2146105645780633d9ea3a11461056c576103a2565b8063182df0f5116103445780632608f818116103135780632608f818146104eb57806326782247146104fe57806328e2dc6c14610529578063313ce56714610532576103a2565b8063182df0f5146104b4578063217e7de2146104bc57806323323e03146104c557806323b872dd146104d8576103a2565b80630e752702116103805780630e7527021461046e578063173b99041461048f57806317bfdfbc1461049857806318160ddd146104ab576103a2565b806306fdde031461041a5780630933c1ed14610438578063095ea7b31461044b575b6012546040515f916001600160a01b0316906103c19083903690611594565b5f60405180830381855af49150503d805f81146103f9576040519150601f19603f3d011682016040523d82523d5f602084013e6103fe565b606091505b505090506040513d5f823e818015610414573d82f35b3d82fd5b005b610422610825565b60405161042f91906115d1565b60405180910390f35b6104226104463660046116a1565b6108b1565b61045e6104593660046116ea565b6108d0565b604051901515815260200161042f565b61048161047c366004611714565b610941565b60405190815260200161042f565b61048160085481565b6104816104a636600461172b565b6109a5565b610481600d5481565b6104816109f1565b61048160185481565b6104816104d33660046116ea565b610a43565b61045e6104e6366004611746565b610aac565b6104816104f93660046116ea565b610b26565b600454610511906001600160a01b031681565b6040516001600160a01b03909116815260200161042f565b61048160175481565b60035461053f9060ff1681565b60405160ff909116815260200161042f565b61048161055f36600461172b565b610b79565b610481610bc5565b61045e600181565b610481610582366004611714565b610bfb565b6104226105953660046116a1565b610c42565b6104816105a836600461172b565b610cf9565b610481600b5481565b6104186105c4366004611791565b610d45565b601254610511906001600160a01b031681565b600554610511906001600160a01b031681565b6104816105fd366004611714565b610ebb565b6104816106103660046116ea565b610f02565b61048160095481565b601154610511906001600160a01b031681565b61048161063f36600461172b565b610f55565b61048160195481565b610481610fa1565b610481610663366004611714565b610fd7565b610481600c5481565b61042261101e565b61048161068736600461172b565b61102b565b61048161069a366004611714565b611077565b6104816110be565b61045e6106b53660046116ea565b6110f4565b610481600a5481565b60165461045e90600160a01b900460ff1681565b61048160145481565b610481611147565b6104816106f6366004611746565b61117d565b601654610511906001600160a01b031681565b61048161071c36600461172b565b6111ee565b61048161123a565b61073c61073736600461172b565b611270565b60408051948552602085019390935291830152606082015260800161042f565b61048161076a366004611714565b6112ed565b61048160135481565b610481610786366004611714565b611334565b6104816107993660046117ef565b61137b565b601554610511906001600160a01b031681565b6104816113cf565b6104816107c736600461172b565b611405565b600654610511906001600160a01b031681565b6104816107ed366004611826565b611451565b6003546105119061010090046001600160a01b031681565b6104816114ac565b610481610820366004611714565b6114e2565b6001805461083290611865565b80601f016020809104026020016040519081016040528092919081815260200182805461085e90611865565b80156108a95780601f10610880576101008083540402835291602001916108a9565b820191905f5260205f20905b81548152906001019060200180831161088c57829003601f168201915b505050505081565b6012546060906108ca906001600160a01b031683611529565b92915050565b6040516001600160a01b0383166024820152604481018290525f9081906109239060640160408051601f198184030181529190526020810180516001600160e01b031663095ea7b360e01b1790526108b1565b905080806020019051810190610939919061189d565b949350505050565b5f806109888360405160240161095991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663073a938160e11b1790526108b1565b90508080602001905181019061099e91906118b8565b9392505050565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b03166305eff7ef60e21b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b031663182df0f560e01b1790525f908190610a2790610c42565b905080806020019051810190610a3d91906118b8565b91505090565b6040516001600160a01b0383166024820152604481018290525f908190610a969060640160408051601f198184030181529190526020810180516001600160e01b03166323323e0360e01b1790526108b1565b90508080602001905181019061093991906118b8565b6040516001600160a01b03808516602483015283166044820152606481018290525f908190610b079060840160408051601f198184030181529190526020810180516001600160e01b03166323b872dd60e01b1790526108b1565b905080806020019051810190610b1d919061189d565b95945050505050565b6040516001600160a01b0383166024820152604481018290525f908190610a969060640160408051601f198184030181529190526020810180516001600160e01b03166304c11f0360e31b1790526108b1565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b0316633af9e66960e01b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b0316631d8e90d160e11b1790525f908190610a2790610c42565b5f8061098883604051602401610c1391815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166303e9410160e41b1790526108b1565b60605f80306001600160a01b031684604051602401610c6191906115d1565b60408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b17905251610c9691906118cf565b5f60405180830381855afa9150503d805f8114610cce576040519150601f19603f3d011682016040523d82523d5f602084013e610cd3565b606091505b50909250905081610ce5573d60208201fd5b8080602001905181019061093991906118e5565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b0316634576b5db60e01b1790526108b1565b60035461010090046001600160a01b03163314610dce5760405162461bcd60e51b815260206004820152603960248201527f56426570323044656c656761746f723a3a5f736574496d706c656d656e74617460448201527f696f6e3a2043616c6c6572206d7573742062652061646d696e00000000000000606482015260840160405180910390fd5b8115610e08576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b179052610e06906108b1565b505b601280546001600160a01b038581166001600160a01b0319831617909255604051911690610e6d90610e3e9084906024016115d1565b60408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b1790526108b1565b50601254604080516001600160a01b03808516825290921660208301527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a150505050565b5f8061098883604051602401610ed391815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663601a0bf160e01b1790526108b1565b6040516001600160a01b0383166024820152604481018290525f908190610a969060640160408051601f198184030181529190526020810180516001600160e01b03166366ce8d7d60e01b1790526108b1565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b03166370a0823160e01b179052610c42565b6040805160048152602481019091526020810180516001600160e01b0316630e759dd360e31b1790525f908190610a27906108b1565b5f8061098883604051602401610fef91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663852a12e360e01b1790526108b1565b6002805461083290611865565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b03166395dd919360e01b179052610c42565b5f806109888360405160240161108f91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663140e25ad60e31b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b031663a6afed9560e01b1790525f908190610a27906108b1565b6040516001600160a01b0383166024820152604481018290525f9081906109239060640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b0316630ae9d70b60e41b1790525f908190610a2790610c42565b6040516001600160a01b03808516602483015283166044820152606481018290525f9081906111d89060840160408051601f198184030181529190526020810180516001600160e01b031663b2a02ff160e01b1790526108b1565b905080806020019051810190610b1d91906118b8565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b0316632dc7468360e21b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b031663bd6d894d60e01b1790525f908190610a27906108b1565b5f805f805f6112c78660405160240161129891906001600160a01b0391909116815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166361bfb47160e11b179052610c42565b9050808060200190518101906112dd919061195a565b9450945094509450509193509193565b5f806109888360405160240161130591815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663317afabb60e21b1790526108b1565b5f806109888360405160240161134c91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663db006a7560e01b1790526108b1565b6040516001600160a01b038084166024830152821660448201525f908190610a969060640160408051601f198184030181529190526020810180516001600160e01b0316636eb1769f60e11b179052610c42565b6040805160048152602481019091526020810180516001600160e01b03166374e38a7960e11b1790525f908190610a27906108b1565b6040516001600160a01b03821660248201525f9081906109889060440160408051601f198184030181529190526020810180516001600160e01b031663f2b3abbd60e01b1790526108b1565b6040516001600160a01b03808516602483015260448201849052821660648201525f9081906111d89060840160408051601f198184030181529190526020810180516001600160e01b0316637af1e23160e11b1790526108b1565b6040805160048152602481019091526020810180516001600160e01b0316631f1f3b4560e31b1790525f908190610a2790610c42565b5f80610988836040516024016114fa91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663fca7820b60e01b1790526108b1565b60605f80846001600160a01b03168460405161154591906118cf565b5f60405180830381855af49150503d805f811461157d576040519150601f19603f3d011682016040523d82523d5f602084013e611582565b606091505b50909250905081610939573d60208201fd5b818382375f9101908152919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61099e60208301846115a3565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611620576116206115e3565b604052919050565b5f67ffffffffffffffff821115611641576116416115e3565b50601f01601f191660200190565b5f82601f83011261165e575f80fd5b813561167161166c82611628565b6115f7565b818152846020838601011115611685575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156116b1575f80fd5b813567ffffffffffffffff8111156116c7575f80fd5b6109398482850161164f565b6001600160a01b03811681146116e7575f80fd5b50565b5f80604083850312156116fb575f80fd5b8235611706816116d3565b946020939093013593505050565b5f60208284031215611724575f80fd5b5035919050565b5f6020828403121561173b575f80fd5b813561099e816116d3565b5f805f60608486031215611758575f80fd5b8335611763816116d3565b92506020840135611773816116d3565b929592945050506040919091013590565b80151581146116e7575f80fd5b5f805f606084860312156117a3575f80fd5b83356117ae816116d3565b925060208401356117be81611784565b9150604084013567ffffffffffffffff8111156117d9575f80fd5b6117e58682870161164f565b9150509250925092565b5f8060408385031215611800575f80fd5b823561180b816116d3565b9150602083013561181b816116d3565b809150509250929050565b5f805f60608486031215611838575f80fd5b8335611843816116d3565b925060208401359150604084013561185a816116d3565b809150509250925092565b600181811c9082168061187957607f821691505b60208210810361189757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f602082840312156118ad575f80fd5b815161099e81611784565b5f602082840312156118c8575f80fd5b5051919050565b5f82518060208501845e5f920191825250919050565b5f602082840312156118f5575f80fd5b815167ffffffffffffffff81111561190b575f80fd5b8201601f8101841361191b575f80fd5b805161192961166c82611628565b81815285602083850101111561193d575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f805f806080858703121561196d575f80fd5b50508251602084015160408501516060909501519196909550909250905056fea2646970667358221220a74fdf8cc2cb76f86266bf61bc257a36d9c16cccd241eab8e9fd1cb6a167667c64736f6c63430008190033",
1551
1802
  "linkReferences": {},
1552
1803
  "deployedLinkReferences": {}
1553
1804
  }