@venusprotocol/isolated-pools 1.0.0-dev.7 → 1.0.0-dev.9

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 (227) hide show
  1. package/README.md +1 -11
  2. package/contracts/BaseJumpRateModelV2.sol +3 -2
  3. package/contracts/Comptroller.sol +22 -2
  4. package/contracts/ComptrollerInterface.sol +10 -0
  5. package/contracts/ComptrollerStorage.sol +5 -0
  6. package/contracts/ErrorReporter.sol +5 -0
  7. package/contracts/Lens/PoolLens.sol +13 -0
  8. package/contracts/MaxLoopsLimitHelper.sol +5 -0
  9. package/contracts/Pool/PoolRegistry.sol +58 -208
  10. package/contracts/Pool/PoolRegistryInterface.sol +12 -7
  11. package/contracts/Rewards/RewardsDistributor.sol +15 -0
  12. package/contracts/RiskFund/IProtocolShareReserve.sol +5 -0
  13. package/contracts/RiskFund/IRiskFund.sol +5 -0
  14. package/contracts/RiskFund/ProtocolShareReserve.sol +5 -0
  15. package/contracts/RiskFund/ReserveHelpers.sol +5 -0
  16. package/contracts/RiskFund/RiskFund.sol +3 -0
  17. package/contracts/Shortfall/IShortfall.sol +5 -0
  18. package/contracts/Shortfall/Shortfall.sol +10 -0
  19. package/contracts/VToken.sol +24 -2
  20. package/contracts/VTokenInterfaces.sol +10 -0
  21. package/contracts/lib/imports.sol +11 -0
  22. package/dist/deploy/006-deploy-factories.js +1 -32
  23. package/dist/deploy/007-access-control-configure.js +2 -6
  24. package/dist/deploy/009-deploy-pools.js +84 -23
  25. package/package.json +1 -1
  26. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +0 -4
  27. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +0 -215
  28. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +0 -4
  29. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +0 -183
  30. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +0 -4
  31. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +0 -63
  32. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +0 -4
  33. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +0 -56
  34. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +0 -4
  35. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +0 -24
  36. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +0 -4
  37. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +0 -56
  38. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +0 -4
  39. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +0 -19
  40. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +0 -4
  41. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +0 -80
  42. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +0 -4
  43. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +0 -24
  44. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +0 -4
  45. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +0 -113
  46. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +0 -4
  47. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +0 -297
  48. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +0 -4
  49. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +0 -194
  50. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +0 -4
  51. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +0 -233
  52. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +0 -4
  53. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +0 -10
  54. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +0 -4
  55. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +0 -10
  56. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +0 -4
  57. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +0 -10
  58. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +0 -4
  59. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +0 -10
  60. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +0 -4
  61. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +0 -30
  62. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +0 -4
  63. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +0 -30
  64. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +0 -4
  65. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +0 -10
  66. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +0 -4
  67. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +0 -10
  68. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +0 -4
  69. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.json +0 -115
  70. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +0 -4
  71. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +0 -76
  72. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +0 -4
  73. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +0 -24
  74. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +0 -4
  75. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +0 -24
  76. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
  77. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +0 -194
  78. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +0 -4
  79. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json +0 -86
  80. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +0 -4
  81. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json +0 -10
  82. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +0 -4
  83. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +0 -10
  84. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +0 -4
  85. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +0 -24
  86. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +0 -4
  87. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.json +0 -369
  88. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +0 -4
  89. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.json +0 -181
  90. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +0 -4
  91. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.json +0 -282
  92. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +0 -4
  93. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +0 -40
  94. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +0 -4
  95. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +0 -30
  96. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +0 -4
  97. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +0 -43
  98. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +0 -4
  99. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +0 -49
  100. package/artifacts/build-info/eb7e5feedaca37f948646aa7bfff0291.json +0 -1
  101. package/artifacts/build-info/f19d689bc99e63a20dd2a17a14e2b84a.json +0 -1
  102. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.dbg.json +0 -4
  103. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.json +0 -276
  104. package/artifacts/contracts/Comptroller.sol/Comptroller.dbg.json +0 -4
  105. package/artifacts/contracts/Comptroller.sol/Comptroller.json +0 -1667
  106. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.dbg.json +0 -4
  107. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.json +0 -285
  108. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.dbg.json +0 -4
  109. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.json +0 -170
  110. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.dbg.json +0 -4
  111. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.json +0 -173
  112. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.dbg.json +0 -4
  113. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.json +0 -156
  114. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.dbg.json +0 -4
  115. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.json +0 -10
  116. package/artifacts/contracts/Factories/JumpRateModelFactory.sol/JumpRateModelFactory.dbg.json +0 -4
  117. package/artifacts/contracts/Factories/JumpRateModelFactory.sol/JumpRateModelFactory.json +0 -50
  118. package/artifacts/contracts/Factories/VTokenProxyFactory.sol/VTokenProxyFactory.dbg.json +0 -4
  119. package/artifacts/contracts/Factories/VTokenProxyFactory.sol/VTokenProxyFactory.json +0 -191
  120. package/artifacts/contracts/Factories/WhitePaperInterestRateModelFactory.sol/WhitePaperInterestRateModelFactory.dbg.json +0 -4
  121. package/artifacts/contracts/Factories/WhitePaperInterestRateModelFactory.sol/WhitePaperInterestRateModelFactory.json +0 -35
  122. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.dbg.json +0 -4
  123. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.json +0 -50
  124. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.dbg.json +0 -4
  125. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.json +0 -97
  126. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.dbg.json +0 -4
  127. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.json +0 -307
  128. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.dbg.json +0 -4
  129. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.json +0 -1087
  130. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +0 -4
  131. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +0 -59
  132. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.dbg.json +0 -4
  133. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.json +0 -923
  134. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.dbg.json +0 -4
  135. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.json +0 -176
  136. package/artifacts/contracts/Proxy/UpgradeableBeacon.sol/Beacon.dbg.json +0 -4
  137. package/artifacts/contracts/Proxy/UpgradeableBeacon.sol/Beacon.json +0 -113
  138. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.dbg.json +0 -4
  139. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.json +0 -928
  140. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +0 -4
  141. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.json +0 -29
  142. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.dbg.json +0 -4
  143. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.json +0 -101
  144. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +0 -4
  145. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.json +0 -296
  146. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.dbg.json +0 -4
  147. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.json +0 -83
  148. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.dbg.json +0 -4
  149. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.json +0 -615
  150. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.dbg.json +0 -4
  151. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.json +0 -24
  152. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.dbg.json +0 -4
  153. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.json +0 -756
  154. package/artifacts/contracts/VToken.sol/VToken.dbg.json +0 -4
  155. package/artifacts/contracts/VToken.sol/VToken.json +0 -1850
  156. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.dbg.json +0 -4
  157. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.json +0 -1398
  158. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.dbg.json +0 -4
  159. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.json +0 -219
  160. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.dbg.json +0 -4
  161. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.json +0 -192
  162. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.dbg.json +0 -4
  163. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +0 -1712
  164. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.dbg.json +0 -4
  165. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +0 -94
  166. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.dbg.json +0 -4
  167. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +0 -1744
  168. package/artifacts/contracts/test/ERC20.sol/ERC20.dbg.json +0 -4
  169. package/artifacts/contracts/test/ERC20.sol/ERC20.json +0 -194
  170. package/artifacts/contracts/test/ERC20.sol/ERC20Base.dbg.json +0 -4
  171. package/artifacts/contracts/test/ERC20.sol/ERC20Base.json +0 -141
  172. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.dbg.json +0 -4
  173. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.json +0 -351
  174. package/artifacts/contracts/test/ERC20.sol/ERC20NS.dbg.json +0 -4
  175. package/artifacts/contracts/test/ERC20.sol/ERC20NS.json +0 -182
  176. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.dbg.json +0 -4
  177. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.json +0 -247
  178. package/artifacts/contracts/test/ERC20.sol/StandardToken.dbg.json +0 -4
  179. package/artifacts/contracts/test/ERC20.sol/StandardToken.json +0 -259
  180. package/artifacts/contracts/test/EvilToken.sol/EvilToken.dbg.json +0 -4
  181. package/artifacts/contracts/test/EvilToken.sol/EvilToken.json +0 -303
  182. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.dbg.json +0 -4
  183. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.json +0 -265
  184. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.dbg.json +0 -4
  185. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.json +0 -277
  186. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.dbg.json +0 -4
  187. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.json +0 -313
  188. package/artifacts/contracts/test/FeeToken.sol/FeeToken.dbg.json +0 -4
  189. package/artifacts/contracts/test/FeeToken.sol/FeeToken.json +0 -313
  190. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.dbg.json +0 -4
  191. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.json +0 -85
  192. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +0 -4
  193. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.json +0 -332
  194. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.dbg.json +0 -4
  195. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.json +0 -233
  196. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.dbg.json +0 -4
  197. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.json +0 -187
  198. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.dbg.json +0 -4
  199. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.json +0 -668
  200. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.dbg.json +0 -4
  201. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.json +0 -760
  202. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.dbg.json +0 -4
  203. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.json +0 -962
  204. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.dbg.json +0 -4
  205. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.json +0 -55
  206. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.dbg.json +0 -4
  207. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.json +0 -10
  208. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.dbg.json +0 -4
  209. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.json +0 -982
  210. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.dbg.json +0 -4
  211. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.json +0 -10
  212. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.dbg.json +0 -4
  213. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.json +0 -10
  214. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.dbg.json +0 -4
  215. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.json +0 -85
  216. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.dbg.json +0 -4
  217. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.json +0 -315
  218. package/artifacts/contracts/test/SafeMath.sol/SafeMath.dbg.json +0 -4
  219. package/artifacts/contracts/test/SafeMath.sol/SafeMath.json +0 -10
  220. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.dbg.json +0 -4
  221. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.json +0 -1946
  222. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.dbg.json +0 -4
  223. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.json +0 -2306
  224. package/contracts/Factories/JumpRateModelFactory.sol +0 -26
  225. package/contracts/Factories/VTokenProxyFactory.sol +0 -53
  226. package/contracts/Factories/WhitePaperInterestRateModelFactory.sol +0 -12
  227. package/contracts/Proxy/UpgradeableBeacon.sol +0 -10
@@ -1,1850 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "VToken",
4
- "sourceName": "contracts/VToken.sol",
5
- "abi": [
6
- {
7
- "inputs": [],
8
- "stateMutability": "nonpayable",
9
- "type": "constructor"
10
- },
11
- {
12
- "inputs": [
13
- {
14
- "internalType": "uint256",
15
- "name": "actualAddAmount",
16
- "type": "uint256"
17
- }
18
- ],
19
- "name": "AddReservesFactorFreshCheck",
20
- "type": "error"
21
- },
22
- {
23
- "inputs": [],
24
- "name": "BorrowCashNotAvailable",
25
- "type": "error"
26
- },
27
- {
28
- "inputs": [],
29
- "name": "BorrowFreshnessCheck",
30
- "type": "error"
31
- },
32
- {
33
- "inputs": [],
34
- "name": "ForceLiquidateBorrowUnauthorized",
35
- "type": "error"
36
- },
37
- {
38
- "inputs": [],
39
- "name": "HealBorrowUnauthorized",
40
- "type": "error"
41
- },
42
- {
43
- "inputs": [
44
- {
45
- "internalType": "uint256",
46
- "name": "errorCode",
47
- "type": "uint256"
48
- }
49
- ],
50
- "name": "LiquidateAccrueCollateralInterestFailed",
51
- "type": "error"
52
- },
53
- {
54
- "inputs": [],
55
- "name": "LiquidateCloseAmountIsUintMax",
56
- "type": "error"
57
- },
58
- {
59
- "inputs": [],
60
- "name": "LiquidateCloseAmountIsZero",
61
- "type": "error"
62
- },
63
- {
64
- "inputs": [],
65
- "name": "LiquidateCollateralFreshnessCheck",
66
- "type": "error"
67
- },
68
- {
69
- "inputs": [],
70
- "name": "LiquidateFreshnessCheck",
71
- "type": "error"
72
- },
73
- {
74
- "inputs": [],
75
- "name": "LiquidateLiquidatorIsBorrower",
76
- "type": "error"
77
- },
78
- {
79
- "inputs": [],
80
- "name": "LiquidateSeizeLiquidatorIsBorrower",
81
- "type": "error"
82
- },
83
- {
84
- "inputs": [],
85
- "name": "MintFreshnessCheck",
86
- "type": "error"
87
- },
88
- {
89
- "inputs": [],
90
- "name": "ProtocolSeizeShareTooBig",
91
- "type": "error"
92
- },
93
- {
94
- "inputs": [],
95
- "name": "RedeemFreshnessCheck",
96
- "type": "error"
97
- },
98
- {
99
- "inputs": [],
100
- "name": "RedeemTransferOutNotPossible",
101
- "type": "error"
102
- },
103
- {
104
- "inputs": [],
105
- "name": "ReduceReservesCashNotAvailable",
106
- "type": "error"
107
- },
108
- {
109
- "inputs": [],
110
- "name": "ReduceReservesCashValidation",
111
- "type": "error"
112
- },
113
- {
114
- "inputs": [],
115
- "name": "ReduceReservesFreshCheck",
116
- "type": "error"
117
- },
118
- {
119
- "inputs": [],
120
- "name": "RepayBorrowFreshnessCheck",
121
- "type": "error"
122
- },
123
- {
124
- "inputs": [],
125
- "name": "SetInterestRateModelFreshCheck",
126
- "type": "error"
127
- },
128
- {
129
- "inputs": [],
130
- "name": "SetReserveFactorBoundsCheck",
131
- "type": "error"
132
- },
133
- {
134
- "inputs": [],
135
- "name": "SetReserveFactorFreshCheck",
136
- "type": "error"
137
- },
138
- {
139
- "inputs": [],
140
- "name": "TransferNotAllowed",
141
- "type": "error"
142
- },
143
- {
144
- "inputs": [
145
- {
146
- "internalType": "address",
147
- "name": "sender",
148
- "type": "address"
149
- },
150
- {
151
- "internalType": "address",
152
- "name": "calledContract",
153
- "type": "address"
154
- },
155
- {
156
- "internalType": "string",
157
- "name": "methodSignature",
158
- "type": "string"
159
- }
160
- ],
161
- "name": "Unauthorized",
162
- "type": "error"
163
- },
164
- {
165
- "inputs": [],
166
- "name": "ZeroAddressNotAllowed",
167
- "type": "error"
168
- },
169
- {
170
- "anonymous": false,
171
- "inputs": [
172
- {
173
- "indexed": false,
174
- "internalType": "uint256",
175
- "name": "cashPrior",
176
- "type": "uint256"
177
- },
178
- {
179
- "indexed": false,
180
- "internalType": "uint256",
181
- "name": "interestAccumulated",
182
- "type": "uint256"
183
- },
184
- {
185
- "indexed": false,
186
- "internalType": "uint256",
187
- "name": "borrowIndex",
188
- "type": "uint256"
189
- },
190
- {
191
- "indexed": false,
192
- "internalType": "uint256",
193
- "name": "totalBorrows",
194
- "type": "uint256"
195
- }
196
- ],
197
- "name": "AccrueInterest",
198
- "type": "event"
199
- },
200
- {
201
- "anonymous": false,
202
- "inputs": [
203
- {
204
- "indexed": true,
205
- "internalType": "address",
206
- "name": "owner",
207
- "type": "address"
208
- },
209
- {
210
- "indexed": true,
211
- "internalType": "address",
212
- "name": "spender",
213
- "type": "address"
214
- },
215
- {
216
- "indexed": false,
217
- "internalType": "uint256",
218
- "name": "amount",
219
- "type": "uint256"
220
- }
221
- ],
222
- "name": "Approval",
223
- "type": "event"
224
- },
225
- {
226
- "anonymous": false,
227
- "inputs": [
228
- {
229
- "indexed": true,
230
- "internalType": "address",
231
- "name": "borrower",
232
- "type": "address"
233
- },
234
- {
235
- "indexed": false,
236
- "internalType": "uint256",
237
- "name": "badDebtDelta",
238
- "type": "uint256"
239
- },
240
- {
241
- "indexed": false,
242
- "internalType": "uint256",
243
- "name": "badDebtOld",
244
- "type": "uint256"
245
- },
246
- {
247
- "indexed": false,
248
- "internalType": "uint256",
249
- "name": "badDebtNew",
250
- "type": "uint256"
251
- }
252
- ],
253
- "name": "BadDebtIncreased",
254
- "type": "event"
255
- },
256
- {
257
- "anonymous": false,
258
- "inputs": [
259
- {
260
- "indexed": false,
261
- "internalType": "uint256",
262
- "name": "badDebtOld",
263
- "type": "uint256"
264
- },
265
- {
266
- "indexed": false,
267
- "internalType": "uint256",
268
- "name": "badDebtNew",
269
- "type": "uint256"
270
- }
271
- ],
272
- "name": "BadDebtRecovered",
273
- "type": "event"
274
- },
275
- {
276
- "anonymous": false,
277
- "inputs": [
278
- {
279
- "indexed": true,
280
- "internalType": "address",
281
- "name": "borrower",
282
- "type": "address"
283
- },
284
- {
285
- "indexed": false,
286
- "internalType": "uint256",
287
- "name": "borrowAmount",
288
- "type": "uint256"
289
- },
290
- {
291
- "indexed": false,
292
- "internalType": "uint256",
293
- "name": "accountBorrows",
294
- "type": "uint256"
295
- },
296
- {
297
- "indexed": false,
298
- "internalType": "uint256",
299
- "name": "totalBorrows",
300
- "type": "uint256"
301
- }
302
- ],
303
- "name": "Borrow",
304
- "type": "event"
305
- },
306
- {
307
- "anonymous": false,
308
- "inputs": [
309
- {
310
- "indexed": true,
311
- "internalType": "address",
312
- "name": "payer",
313
- "type": "address"
314
- },
315
- {
316
- "indexed": true,
317
- "internalType": "address",
318
- "name": "borrower",
319
- "type": "address"
320
- },
321
- {
322
- "indexed": false,
323
- "internalType": "uint256",
324
- "name": "repayAmount",
325
- "type": "uint256"
326
- }
327
- ],
328
- "name": "HealBorrow",
329
- "type": "event"
330
- },
331
- {
332
- "anonymous": false,
333
- "inputs": [
334
- {
335
- "indexed": false,
336
- "internalType": "uint8",
337
- "name": "version",
338
- "type": "uint8"
339
- }
340
- ],
341
- "name": "Initialized",
342
- "type": "event"
343
- },
344
- {
345
- "anonymous": false,
346
- "inputs": [
347
- {
348
- "indexed": true,
349
- "internalType": "address",
350
- "name": "liquidator",
351
- "type": "address"
352
- },
353
- {
354
- "indexed": true,
355
- "internalType": "address",
356
- "name": "borrower",
357
- "type": "address"
358
- },
359
- {
360
- "indexed": false,
361
- "internalType": "uint256",
362
- "name": "repayAmount",
363
- "type": "uint256"
364
- },
365
- {
366
- "indexed": true,
367
- "internalType": "address",
368
- "name": "vTokenCollateral",
369
- "type": "address"
370
- },
371
- {
372
- "indexed": false,
373
- "internalType": "uint256",
374
- "name": "seizeTokens",
375
- "type": "uint256"
376
- }
377
- ],
378
- "name": "LiquidateBorrow",
379
- "type": "event"
380
- },
381
- {
382
- "anonymous": false,
383
- "inputs": [
384
- {
385
- "indexed": true,
386
- "internalType": "address",
387
- "name": "minter",
388
- "type": "address"
389
- },
390
- {
391
- "indexed": false,
392
- "internalType": "uint256",
393
- "name": "mintAmount",
394
- "type": "uint256"
395
- },
396
- {
397
- "indexed": false,
398
- "internalType": "uint256",
399
- "name": "mintTokens",
400
- "type": "uint256"
401
- },
402
- {
403
- "indexed": false,
404
- "internalType": "uint256",
405
- "name": "accountBalance",
406
- "type": "uint256"
407
- }
408
- ],
409
- "name": "Mint",
410
- "type": "event"
411
- },
412
- {
413
- "anonymous": false,
414
- "inputs": [
415
- {
416
- "indexed": false,
417
- "internalType": "address",
418
- "name": "oldAccessControlManager",
419
- "type": "address"
420
- },
421
- {
422
- "indexed": false,
423
- "internalType": "address",
424
- "name": "newAccessControlManager",
425
- "type": "address"
426
- }
427
- ],
428
- "name": "NewAccessControlManager",
429
- "type": "event"
430
- },
431
- {
432
- "anonymous": false,
433
- "inputs": [
434
- {
435
- "indexed": true,
436
- "internalType": "contract ComptrollerInterface",
437
- "name": "oldComptroller",
438
- "type": "address"
439
- },
440
- {
441
- "indexed": true,
442
- "internalType": "contract ComptrollerInterface",
443
- "name": "newComptroller",
444
- "type": "address"
445
- }
446
- ],
447
- "name": "NewComptroller",
448
- "type": "event"
449
- },
450
- {
451
- "anonymous": false,
452
- "inputs": [
453
- {
454
- "indexed": true,
455
- "internalType": "contract InterestRateModel",
456
- "name": "oldInterestRateModel",
457
- "type": "address"
458
- },
459
- {
460
- "indexed": true,
461
- "internalType": "contract InterestRateModel",
462
- "name": "newInterestRateModel",
463
- "type": "address"
464
- }
465
- ],
466
- "name": "NewMarketInterestRateModel",
467
- "type": "event"
468
- },
469
- {
470
- "anonymous": false,
471
- "inputs": [
472
- {
473
- "indexed": false,
474
- "internalType": "uint256",
475
- "name": "oldProtocolSeizeShareMantissa",
476
- "type": "uint256"
477
- },
478
- {
479
- "indexed": false,
480
- "internalType": "uint256",
481
- "name": "newProtocolSeizeShareMantissa",
482
- "type": "uint256"
483
- }
484
- ],
485
- "name": "NewProtocolSeizeShare",
486
- "type": "event"
487
- },
488
- {
489
- "anonymous": false,
490
- "inputs": [
491
- {
492
- "indexed": true,
493
- "internalType": "address",
494
- "name": "oldProtocolShareReserve",
495
- "type": "address"
496
- },
497
- {
498
- "indexed": true,
499
- "internalType": "address",
500
- "name": "newProtocolShareReserve",
501
- "type": "address"
502
- }
503
- ],
504
- "name": "NewProtocolShareReserve",
505
- "type": "event"
506
- },
507
- {
508
- "anonymous": false,
509
- "inputs": [
510
- {
511
- "indexed": false,
512
- "internalType": "uint256",
513
- "name": "oldReserveFactorMantissa",
514
- "type": "uint256"
515
- },
516
- {
517
- "indexed": false,
518
- "internalType": "uint256",
519
- "name": "newReserveFactorMantissa",
520
- "type": "uint256"
521
- }
522
- ],
523
- "name": "NewReserveFactor",
524
- "type": "event"
525
- },
526
- {
527
- "anonymous": false,
528
- "inputs": [
529
- {
530
- "indexed": true,
531
- "internalType": "address",
532
- "name": "oldShortfall",
533
- "type": "address"
534
- },
535
- {
536
- "indexed": true,
537
- "internalType": "address",
538
- "name": "newShortfall",
539
- "type": "address"
540
- }
541
- ],
542
- "name": "NewShortfallContract",
543
- "type": "event"
544
- },
545
- {
546
- "anonymous": false,
547
- "inputs": [
548
- {
549
- "indexed": true,
550
- "internalType": "address",
551
- "name": "previousOwner",
552
- "type": "address"
553
- },
554
- {
555
- "indexed": true,
556
- "internalType": "address",
557
- "name": "newOwner",
558
- "type": "address"
559
- }
560
- ],
561
- "name": "OwnershipTransferStarted",
562
- "type": "event"
563
- },
564
- {
565
- "anonymous": false,
566
- "inputs": [
567
- {
568
- "indexed": true,
569
- "internalType": "address",
570
- "name": "previousOwner",
571
- "type": "address"
572
- },
573
- {
574
- "indexed": true,
575
- "internalType": "address",
576
- "name": "newOwner",
577
- "type": "address"
578
- }
579
- ],
580
- "name": "OwnershipTransferred",
581
- "type": "event"
582
- },
583
- {
584
- "anonymous": false,
585
- "inputs": [
586
- {
587
- "indexed": true,
588
- "internalType": "address",
589
- "name": "redeemer",
590
- "type": "address"
591
- },
592
- {
593
- "indexed": false,
594
- "internalType": "uint256",
595
- "name": "redeemAmount",
596
- "type": "uint256"
597
- },
598
- {
599
- "indexed": false,
600
- "internalType": "uint256",
601
- "name": "redeemTokens",
602
- "type": "uint256"
603
- },
604
- {
605
- "indexed": false,
606
- "internalType": "uint256",
607
- "name": "accountBalance",
608
- "type": "uint256"
609
- }
610
- ],
611
- "name": "Redeem",
612
- "type": "event"
613
- },
614
- {
615
- "anonymous": false,
616
- "inputs": [
617
- {
618
- "indexed": true,
619
- "internalType": "address",
620
- "name": "payer",
621
- "type": "address"
622
- },
623
- {
624
- "indexed": true,
625
- "internalType": "address",
626
- "name": "borrower",
627
- "type": "address"
628
- },
629
- {
630
- "indexed": false,
631
- "internalType": "uint256",
632
- "name": "repayAmount",
633
- "type": "uint256"
634
- },
635
- {
636
- "indexed": false,
637
- "internalType": "uint256",
638
- "name": "accountBorrows",
639
- "type": "uint256"
640
- },
641
- {
642
- "indexed": false,
643
- "internalType": "uint256",
644
- "name": "totalBorrows",
645
- "type": "uint256"
646
- }
647
- ],
648
- "name": "RepayBorrow",
649
- "type": "event"
650
- },
651
- {
652
- "anonymous": false,
653
- "inputs": [
654
- {
655
- "indexed": true,
656
- "internalType": "address",
657
- "name": "benefactor",
658
- "type": "address"
659
- },
660
- {
661
- "indexed": false,
662
- "internalType": "uint256",
663
- "name": "addAmount",
664
- "type": "uint256"
665
- },
666
- {
667
- "indexed": false,
668
- "internalType": "uint256",
669
- "name": "newTotalReserves",
670
- "type": "uint256"
671
- }
672
- ],
673
- "name": "ReservesAdded",
674
- "type": "event"
675
- },
676
- {
677
- "anonymous": false,
678
- "inputs": [
679
- {
680
- "indexed": true,
681
- "internalType": "address",
682
- "name": "admin",
683
- "type": "address"
684
- },
685
- {
686
- "indexed": false,
687
- "internalType": "uint256",
688
- "name": "reduceAmount",
689
- "type": "uint256"
690
- },
691
- {
692
- "indexed": false,
693
- "internalType": "uint256",
694
- "name": "newTotalReserves",
695
- "type": "uint256"
696
- }
697
- ],
698
- "name": "ReservesReduced",
699
- "type": "event"
700
- },
701
- {
702
- "anonymous": false,
703
- "inputs": [
704
- {
705
- "indexed": true,
706
- "internalType": "address",
707
- "name": "token",
708
- "type": "address"
709
- }
710
- ],
711
- "name": "SweepToken",
712
- "type": "event"
713
- },
714
- {
715
- "anonymous": false,
716
- "inputs": [
717
- {
718
- "indexed": true,
719
- "internalType": "address",
720
- "name": "from",
721
- "type": "address"
722
- },
723
- {
724
- "indexed": true,
725
- "internalType": "address",
726
- "name": "to",
727
- "type": "address"
728
- },
729
- {
730
- "indexed": false,
731
- "internalType": "uint256",
732
- "name": "amount",
733
- "type": "uint256"
734
- }
735
- ],
736
- "name": "Transfer",
737
- "type": "event"
738
- },
739
- {
740
- "inputs": [],
741
- "name": "NO_ERROR",
742
- "outputs": [
743
- {
744
- "internalType": "uint256",
745
- "name": "",
746
- "type": "uint256"
747
- }
748
- ],
749
- "stateMutability": "view",
750
- "type": "function"
751
- },
752
- {
753
- "inputs": [],
754
- "name": "acceptOwnership",
755
- "outputs": [],
756
- "stateMutability": "nonpayable",
757
- "type": "function"
758
- },
759
- {
760
- "inputs": [],
761
- "name": "accessControlManager",
762
- "outputs": [
763
- {
764
- "internalType": "contract IAccessControlManagerV8",
765
- "name": "",
766
- "type": "address"
767
- }
768
- ],
769
- "stateMutability": "view",
770
- "type": "function"
771
- },
772
- {
773
- "inputs": [],
774
- "name": "accrualBlockNumber",
775
- "outputs": [
776
- {
777
- "internalType": "uint256",
778
- "name": "",
779
- "type": "uint256"
780
- }
781
- ],
782
- "stateMutability": "view",
783
- "type": "function"
784
- },
785
- {
786
- "inputs": [],
787
- "name": "accrueInterest",
788
- "outputs": [
789
- {
790
- "internalType": "uint256",
791
- "name": "",
792
- "type": "uint256"
793
- }
794
- ],
795
- "stateMutability": "nonpayable",
796
- "type": "function"
797
- },
798
- {
799
- "inputs": [
800
- {
801
- "internalType": "uint256",
802
- "name": "addAmount",
803
- "type": "uint256"
804
- }
805
- ],
806
- "name": "addReserves",
807
- "outputs": [],
808
- "stateMutability": "nonpayable",
809
- "type": "function"
810
- },
811
- {
812
- "inputs": [
813
- {
814
- "internalType": "address",
815
- "name": "owner",
816
- "type": "address"
817
- },
818
- {
819
- "internalType": "address",
820
- "name": "spender",
821
- "type": "address"
822
- }
823
- ],
824
- "name": "allowance",
825
- "outputs": [
826
- {
827
- "internalType": "uint256",
828
- "name": "",
829
- "type": "uint256"
830
- }
831
- ],
832
- "stateMutability": "view",
833
- "type": "function"
834
- },
835
- {
836
- "inputs": [
837
- {
838
- "internalType": "address",
839
- "name": "spender",
840
- "type": "address"
841
- },
842
- {
843
- "internalType": "uint256",
844
- "name": "amount",
845
- "type": "uint256"
846
- }
847
- ],
848
- "name": "approve",
849
- "outputs": [
850
- {
851
- "internalType": "bool",
852
- "name": "",
853
- "type": "bool"
854
- }
855
- ],
856
- "stateMutability": "nonpayable",
857
- "type": "function"
858
- },
859
- {
860
- "inputs": [],
861
- "name": "badDebt",
862
- "outputs": [
863
- {
864
- "internalType": "uint256",
865
- "name": "",
866
- "type": "uint256"
867
- }
868
- ],
869
- "stateMutability": "view",
870
- "type": "function"
871
- },
872
- {
873
- "inputs": [
874
- {
875
- "internalType": "uint256",
876
- "name": "recoveredAmount_",
877
- "type": "uint256"
878
- }
879
- ],
880
- "name": "badDebtRecovered",
881
- "outputs": [],
882
- "stateMutability": "nonpayable",
883
- "type": "function"
884
- },
885
- {
886
- "inputs": [
887
- {
888
- "internalType": "address",
889
- "name": "owner",
890
- "type": "address"
891
- }
892
- ],
893
- "name": "balanceOf",
894
- "outputs": [
895
- {
896
- "internalType": "uint256",
897
- "name": "",
898
- "type": "uint256"
899
- }
900
- ],
901
- "stateMutability": "view",
902
- "type": "function"
903
- },
904
- {
905
- "inputs": [
906
- {
907
- "internalType": "address",
908
- "name": "owner",
909
- "type": "address"
910
- }
911
- ],
912
- "name": "balanceOfUnderlying",
913
- "outputs": [
914
- {
915
- "internalType": "uint256",
916
- "name": "",
917
- "type": "uint256"
918
- }
919
- ],
920
- "stateMutability": "nonpayable",
921
- "type": "function"
922
- },
923
- {
924
- "inputs": [
925
- {
926
- "internalType": "uint256",
927
- "name": "borrowAmount",
928
- "type": "uint256"
929
- }
930
- ],
931
- "name": "borrow",
932
- "outputs": [
933
- {
934
- "internalType": "uint256",
935
- "name": "",
936
- "type": "uint256"
937
- }
938
- ],
939
- "stateMutability": "nonpayable",
940
- "type": "function"
941
- },
942
- {
943
- "inputs": [
944
- {
945
- "internalType": "address",
946
- "name": "account",
947
- "type": "address"
948
- }
949
- ],
950
- "name": "borrowBalanceCurrent",
951
- "outputs": [
952
- {
953
- "internalType": "uint256",
954
- "name": "",
955
- "type": "uint256"
956
- }
957
- ],
958
- "stateMutability": "nonpayable",
959
- "type": "function"
960
- },
961
- {
962
- "inputs": [
963
- {
964
- "internalType": "address",
965
- "name": "account",
966
- "type": "address"
967
- }
968
- ],
969
- "name": "borrowBalanceStored",
970
- "outputs": [
971
- {
972
- "internalType": "uint256",
973
- "name": "",
974
- "type": "uint256"
975
- }
976
- ],
977
- "stateMutability": "view",
978
- "type": "function"
979
- },
980
- {
981
- "inputs": [],
982
- "name": "borrowIndex",
983
- "outputs": [
984
- {
985
- "internalType": "uint256",
986
- "name": "",
987
- "type": "uint256"
988
- }
989
- ],
990
- "stateMutability": "view",
991
- "type": "function"
992
- },
993
- {
994
- "inputs": [],
995
- "name": "borrowRatePerBlock",
996
- "outputs": [
997
- {
998
- "internalType": "uint256",
999
- "name": "",
1000
- "type": "uint256"
1001
- }
1002
- ],
1003
- "stateMutability": "view",
1004
- "type": "function"
1005
- },
1006
- {
1007
- "inputs": [],
1008
- "name": "comptroller",
1009
- "outputs": [
1010
- {
1011
- "internalType": "contract ComptrollerInterface",
1012
- "name": "",
1013
- "type": "address"
1014
- }
1015
- ],
1016
- "stateMutability": "view",
1017
- "type": "function"
1018
- },
1019
- {
1020
- "inputs": [],
1021
- "name": "decimals",
1022
- "outputs": [
1023
- {
1024
- "internalType": "uint8",
1025
- "name": "",
1026
- "type": "uint8"
1027
- }
1028
- ],
1029
- "stateMutability": "view",
1030
- "type": "function"
1031
- },
1032
- {
1033
- "inputs": [
1034
- {
1035
- "internalType": "address",
1036
- "name": "spender",
1037
- "type": "address"
1038
- },
1039
- {
1040
- "internalType": "uint256",
1041
- "name": "subtractedValue",
1042
- "type": "uint256"
1043
- }
1044
- ],
1045
- "name": "decreaseAllowance",
1046
- "outputs": [
1047
- {
1048
- "internalType": "bool",
1049
- "name": "",
1050
- "type": "bool"
1051
- }
1052
- ],
1053
- "stateMutability": "nonpayable",
1054
- "type": "function"
1055
- },
1056
- {
1057
- "inputs": [],
1058
- "name": "exchangeRateCurrent",
1059
- "outputs": [
1060
- {
1061
- "internalType": "uint256",
1062
- "name": "",
1063
- "type": "uint256"
1064
- }
1065
- ],
1066
- "stateMutability": "nonpayable",
1067
- "type": "function"
1068
- },
1069
- {
1070
- "inputs": [],
1071
- "name": "exchangeRateStored",
1072
- "outputs": [
1073
- {
1074
- "internalType": "uint256",
1075
- "name": "",
1076
- "type": "uint256"
1077
- }
1078
- ],
1079
- "stateMutability": "view",
1080
- "type": "function"
1081
- },
1082
- {
1083
- "inputs": [
1084
- {
1085
- "internalType": "address",
1086
- "name": "liquidator",
1087
- "type": "address"
1088
- },
1089
- {
1090
- "internalType": "address",
1091
- "name": "borrower",
1092
- "type": "address"
1093
- },
1094
- {
1095
- "internalType": "uint256",
1096
- "name": "repayAmount",
1097
- "type": "uint256"
1098
- },
1099
- {
1100
- "internalType": "contract VTokenInterface",
1101
- "name": "vTokenCollateral",
1102
- "type": "address"
1103
- },
1104
- {
1105
- "internalType": "bool",
1106
- "name": "skipLiquidityCheck",
1107
- "type": "bool"
1108
- }
1109
- ],
1110
- "name": "forceLiquidateBorrow",
1111
- "outputs": [],
1112
- "stateMutability": "nonpayable",
1113
- "type": "function"
1114
- },
1115
- {
1116
- "inputs": [
1117
- {
1118
- "internalType": "address",
1119
- "name": "account",
1120
- "type": "address"
1121
- }
1122
- ],
1123
- "name": "getAccountSnapshot",
1124
- "outputs": [
1125
- {
1126
- "internalType": "uint256",
1127
- "name": "error",
1128
- "type": "uint256"
1129
- },
1130
- {
1131
- "internalType": "uint256",
1132
- "name": "vTokenBalance",
1133
- "type": "uint256"
1134
- },
1135
- {
1136
- "internalType": "uint256",
1137
- "name": "borrowBalance",
1138
- "type": "uint256"
1139
- },
1140
- {
1141
- "internalType": "uint256",
1142
- "name": "exchangeRate",
1143
- "type": "uint256"
1144
- }
1145
- ],
1146
- "stateMutability": "view",
1147
- "type": "function"
1148
- },
1149
- {
1150
- "inputs": [],
1151
- "name": "getCash",
1152
- "outputs": [
1153
- {
1154
- "internalType": "uint256",
1155
- "name": "",
1156
- "type": "uint256"
1157
- }
1158
- ],
1159
- "stateMutability": "view",
1160
- "type": "function"
1161
- },
1162
- {
1163
- "inputs": [
1164
- {
1165
- "internalType": "address",
1166
- "name": "payer",
1167
- "type": "address"
1168
- },
1169
- {
1170
- "internalType": "address",
1171
- "name": "borrower",
1172
- "type": "address"
1173
- },
1174
- {
1175
- "internalType": "uint256",
1176
- "name": "repayAmount",
1177
- "type": "uint256"
1178
- }
1179
- ],
1180
- "name": "healBorrow",
1181
- "outputs": [],
1182
- "stateMutability": "nonpayable",
1183
- "type": "function"
1184
- },
1185
- {
1186
- "inputs": [
1187
- {
1188
- "internalType": "address",
1189
- "name": "spender",
1190
- "type": "address"
1191
- },
1192
- {
1193
- "internalType": "uint256",
1194
- "name": "addedValue",
1195
- "type": "uint256"
1196
- }
1197
- ],
1198
- "name": "increaseAllowance",
1199
- "outputs": [
1200
- {
1201
- "internalType": "bool",
1202
- "name": "",
1203
- "type": "bool"
1204
- }
1205
- ],
1206
- "stateMutability": "nonpayable",
1207
- "type": "function"
1208
- },
1209
- {
1210
- "inputs": [
1211
- {
1212
- "internalType": "address",
1213
- "name": "underlying_",
1214
- "type": "address"
1215
- },
1216
- {
1217
- "internalType": "contract ComptrollerInterface",
1218
- "name": "comptroller_",
1219
- "type": "address"
1220
- },
1221
- {
1222
- "internalType": "contract InterestRateModel",
1223
- "name": "interestRateModel_",
1224
- "type": "address"
1225
- },
1226
- {
1227
- "internalType": "uint256",
1228
- "name": "initialExchangeRateMantissa_",
1229
- "type": "uint256"
1230
- },
1231
- {
1232
- "internalType": "string",
1233
- "name": "name_",
1234
- "type": "string"
1235
- },
1236
- {
1237
- "internalType": "string",
1238
- "name": "symbol_",
1239
- "type": "string"
1240
- },
1241
- {
1242
- "internalType": "uint8",
1243
- "name": "decimals_",
1244
- "type": "uint8"
1245
- },
1246
- {
1247
- "internalType": "address",
1248
- "name": "admin_",
1249
- "type": "address"
1250
- },
1251
- {
1252
- "internalType": "address",
1253
- "name": "accessControlManager_",
1254
- "type": "address"
1255
- },
1256
- {
1257
- "components": [
1258
- {
1259
- "internalType": "address",
1260
- "name": "shortfall",
1261
- "type": "address"
1262
- },
1263
- {
1264
- "internalType": "address payable",
1265
- "name": "protocolShareReserve",
1266
- "type": "address"
1267
- }
1268
- ],
1269
- "internalType": "struct VTokenInterface.RiskManagementInit",
1270
- "name": "riskManagement",
1271
- "type": "tuple"
1272
- },
1273
- {
1274
- "internalType": "uint256",
1275
- "name": "reserveFactorMantissa_",
1276
- "type": "uint256"
1277
- }
1278
- ],
1279
- "name": "initialize",
1280
- "outputs": [],
1281
- "stateMutability": "nonpayable",
1282
- "type": "function"
1283
- },
1284
- {
1285
- "inputs": [],
1286
- "name": "interestRateModel",
1287
- "outputs": [
1288
- {
1289
- "internalType": "contract InterestRateModel",
1290
- "name": "",
1291
- "type": "address"
1292
- }
1293
- ],
1294
- "stateMutability": "view",
1295
- "type": "function"
1296
- },
1297
- {
1298
- "inputs": [],
1299
- "name": "isVToken",
1300
- "outputs": [
1301
- {
1302
- "internalType": "bool",
1303
- "name": "",
1304
- "type": "bool"
1305
- }
1306
- ],
1307
- "stateMutability": "pure",
1308
- "type": "function"
1309
- },
1310
- {
1311
- "inputs": [
1312
- {
1313
- "internalType": "address",
1314
- "name": "borrower",
1315
- "type": "address"
1316
- },
1317
- {
1318
- "internalType": "uint256",
1319
- "name": "repayAmount",
1320
- "type": "uint256"
1321
- },
1322
- {
1323
- "internalType": "contract VTokenInterface",
1324
- "name": "vTokenCollateral",
1325
- "type": "address"
1326
- }
1327
- ],
1328
- "name": "liquidateBorrow",
1329
- "outputs": [
1330
- {
1331
- "internalType": "uint256",
1332
- "name": "",
1333
- "type": "uint256"
1334
- }
1335
- ],
1336
- "stateMutability": "nonpayable",
1337
- "type": "function"
1338
- },
1339
- {
1340
- "inputs": [
1341
- {
1342
- "internalType": "uint256",
1343
- "name": "mintAmount",
1344
- "type": "uint256"
1345
- }
1346
- ],
1347
- "name": "mint",
1348
- "outputs": [
1349
- {
1350
- "internalType": "uint256",
1351
- "name": "",
1352
- "type": "uint256"
1353
- }
1354
- ],
1355
- "stateMutability": "nonpayable",
1356
- "type": "function"
1357
- },
1358
- {
1359
- "inputs": [
1360
- {
1361
- "internalType": "address",
1362
- "name": "minter",
1363
- "type": "address"
1364
- },
1365
- {
1366
- "internalType": "uint256",
1367
- "name": "mintAmount",
1368
- "type": "uint256"
1369
- }
1370
- ],
1371
- "name": "mintBehalf",
1372
- "outputs": [
1373
- {
1374
- "internalType": "uint256",
1375
- "name": "",
1376
- "type": "uint256"
1377
- }
1378
- ],
1379
- "stateMutability": "nonpayable",
1380
- "type": "function"
1381
- },
1382
- {
1383
- "inputs": [],
1384
- "name": "name",
1385
- "outputs": [
1386
- {
1387
- "internalType": "string",
1388
- "name": "",
1389
- "type": "string"
1390
- }
1391
- ],
1392
- "stateMutability": "view",
1393
- "type": "function"
1394
- },
1395
- {
1396
- "inputs": [],
1397
- "name": "owner",
1398
- "outputs": [
1399
- {
1400
- "internalType": "address",
1401
- "name": "",
1402
- "type": "address"
1403
- }
1404
- ],
1405
- "stateMutability": "view",
1406
- "type": "function"
1407
- },
1408
- {
1409
- "inputs": [],
1410
- "name": "pendingOwner",
1411
- "outputs": [
1412
- {
1413
- "internalType": "address",
1414
- "name": "",
1415
- "type": "address"
1416
- }
1417
- ],
1418
- "stateMutability": "view",
1419
- "type": "function"
1420
- },
1421
- {
1422
- "inputs": [],
1423
- "name": "protocolSeizeShareMantissa",
1424
- "outputs": [
1425
- {
1426
- "internalType": "uint256",
1427
- "name": "",
1428
- "type": "uint256"
1429
- }
1430
- ],
1431
- "stateMutability": "view",
1432
- "type": "function"
1433
- },
1434
- {
1435
- "inputs": [],
1436
- "name": "protocolShareReserve",
1437
- "outputs": [
1438
- {
1439
- "internalType": "address payable",
1440
- "name": "",
1441
- "type": "address"
1442
- }
1443
- ],
1444
- "stateMutability": "view",
1445
- "type": "function"
1446
- },
1447
- {
1448
- "inputs": [
1449
- {
1450
- "internalType": "uint256",
1451
- "name": "redeemTokens",
1452
- "type": "uint256"
1453
- }
1454
- ],
1455
- "name": "redeem",
1456
- "outputs": [
1457
- {
1458
- "internalType": "uint256",
1459
- "name": "",
1460
- "type": "uint256"
1461
- }
1462
- ],
1463
- "stateMutability": "nonpayable",
1464
- "type": "function"
1465
- },
1466
- {
1467
- "inputs": [
1468
- {
1469
- "internalType": "uint256",
1470
- "name": "redeemAmount",
1471
- "type": "uint256"
1472
- }
1473
- ],
1474
- "name": "redeemUnderlying",
1475
- "outputs": [
1476
- {
1477
- "internalType": "uint256",
1478
- "name": "",
1479
- "type": "uint256"
1480
- }
1481
- ],
1482
- "stateMutability": "nonpayable",
1483
- "type": "function"
1484
- },
1485
- {
1486
- "inputs": [
1487
- {
1488
- "internalType": "uint256",
1489
- "name": "reduceAmount",
1490
- "type": "uint256"
1491
- }
1492
- ],
1493
- "name": "reduceReserves",
1494
- "outputs": [],
1495
- "stateMutability": "nonpayable",
1496
- "type": "function"
1497
- },
1498
- {
1499
- "inputs": [],
1500
- "name": "renounceOwnership",
1501
- "outputs": [],
1502
- "stateMutability": "nonpayable",
1503
- "type": "function"
1504
- },
1505
- {
1506
- "inputs": [
1507
- {
1508
- "internalType": "uint256",
1509
- "name": "repayAmount",
1510
- "type": "uint256"
1511
- }
1512
- ],
1513
- "name": "repayBorrow",
1514
- "outputs": [
1515
- {
1516
- "internalType": "uint256",
1517
- "name": "",
1518
- "type": "uint256"
1519
- }
1520
- ],
1521
- "stateMutability": "nonpayable",
1522
- "type": "function"
1523
- },
1524
- {
1525
- "inputs": [
1526
- {
1527
- "internalType": "address",
1528
- "name": "borrower",
1529
- "type": "address"
1530
- },
1531
- {
1532
- "internalType": "uint256",
1533
- "name": "repayAmount",
1534
- "type": "uint256"
1535
- }
1536
- ],
1537
- "name": "repayBorrowBehalf",
1538
- "outputs": [
1539
- {
1540
- "internalType": "uint256",
1541
- "name": "",
1542
- "type": "uint256"
1543
- }
1544
- ],
1545
- "stateMutability": "nonpayable",
1546
- "type": "function"
1547
- },
1548
- {
1549
- "inputs": [],
1550
- "name": "reserveFactorMantissa",
1551
- "outputs": [
1552
- {
1553
- "internalType": "uint256",
1554
- "name": "",
1555
- "type": "uint256"
1556
- }
1557
- ],
1558
- "stateMutability": "view",
1559
- "type": "function"
1560
- },
1561
- {
1562
- "inputs": [
1563
- {
1564
- "internalType": "address",
1565
- "name": "liquidator",
1566
- "type": "address"
1567
- },
1568
- {
1569
- "internalType": "address",
1570
- "name": "borrower",
1571
- "type": "address"
1572
- },
1573
- {
1574
- "internalType": "uint256",
1575
- "name": "seizeTokens",
1576
- "type": "uint256"
1577
- }
1578
- ],
1579
- "name": "seize",
1580
- "outputs": [],
1581
- "stateMutability": "nonpayable",
1582
- "type": "function"
1583
- },
1584
- {
1585
- "inputs": [
1586
- {
1587
- "internalType": "address",
1588
- "name": "accessControlManager_",
1589
- "type": "address"
1590
- }
1591
- ],
1592
- "name": "setAccessControlManager",
1593
- "outputs": [],
1594
- "stateMutability": "nonpayable",
1595
- "type": "function"
1596
- },
1597
- {
1598
- "inputs": [
1599
- {
1600
- "internalType": "contract InterestRateModel",
1601
- "name": "newInterestRateModel",
1602
- "type": "address"
1603
- }
1604
- ],
1605
- "name": "setInterestRateModel",
1606
- "outputs": [],
1607
- "stateMutability": "nonpayable",
1608
- "type": "function"
1609
- },
1610
- {
1611
- "inputs": [
1612
- {
1613
- "internalType": "uint256",
1614
- "name": "newProtocolSeizeShareMantissa_",
1615
- "type": "uint256"
1616
- }
1617
- ],
1618
- "name": "setProtocolSeizeShare",
1619
- "outputs": [],
1620
- "stateMutability": "nonpayable",
1621
- "type": "function"
1622
- },
1623
- {
1624
- "inputs": [
1625
- {
1626
- "internalType": "address payable",
1627
- "name": "protocolShareReserve_",
1628
- "type": "address"
1629
- }
1630
- ],
1631
- "name": "setProtocolShareReserve",
1632
- "outputs": [],
1633
- "stateMutability": "nonpayable",
1634
- "type": "function"
1635
- },
1636
- {
1637
- "inputs": [
1638
- {
1639
- "internalType": "uint256",
1640
- "name": "newReserveFactorMantissa",
1641
- "type": "uint256"
1642
- }
1643
- ],
1644
- "name": "setReserveFactor",
1645
- "outputs": [],
1646
- "stateMutability": "nonpayable",
1647
- "type": "function"
1648
- },
1649
- {
1650
- "inputs": [
1651
- {
1652
- "internalType": "address",
1653
- "name": "shortfall_",
1654
- "type": "address"
1655
- }
1656
- ],
1657
- "name": "setShortfallContract",
1658
- "outputs": [],
1659
- "stateMutability": "nonpayable",
1660
- "type": "function"
1661
- },
1662
- {
1663
- "inputs": [],
1664
- "name": "shortfall",
1665
- "outputs": [
1666
- {
1667
- "internalType": "address",
1668
- "name": "",
1669
- "type": "address"
1670
- }
1671
- ],
1672
- "stateMutability": "view",
1673
- "type": "function"
1674
- },
1675
- {
1676
- "inputs": [],
1677
- "name": "supplyRatePerBlock",
1678
- "outputs": [
1679
- {
1680
- "internalType": "uint256",
1681
- "name": "",
1682
- "type": "uint256"
1683
- }
1684
- ],
1685
- "stateMutability": "view",
1686
- "type": "function"
1687
- },
1688
- {
1689
- "inputs": [
1690
- {
1691
- "internalType": "contract IERC20Upgradeable",
1692
- "name": "token",
1693
- "type": "address"
1694
- }
1695
- ],
1696
- "name": "sweepToken",
1697
- "outputs": [],
1698
- "stateMutability": "nonpayable",
1699
- "type": "function"
1700
- },
1701
- {
1702
- "inputs": [],
1703
- "name": "symbol",
1704
- "outputs": [
1705
- {
1706
- "internalType": "string",
1707
- "name": "",
1708
- "type": "string"
1709
- }
1710
- ],
1711
- "stateMutability": "view",
1712
- "type": "function"
1713
- },
1714
- {
1715
- "inputs": [],
1716
- "name": "totalBorrows",
1717
- "outputs": [
1718
- {
1719
- "internalType": "uint256",
1720
- "name": "",
1721
- "type": "uint256"
1722
- }
1723
- ],
1724
- "stateMutability": "view",
1725
- "type": "function"
1726
- },
1727
- {
1728
- "inputs": [],
1729
- "name": "totalBorrowsCurrent",
1730
- "outputs": [
1731
- {
1732
- "internalType": "uint256",
1733
- "name": "",
1734
- "type": "uint256"
1735
- }
1736
- ],
1737
- "stateMutability": "nonpayable",
1738
- "type": "function"
1739
- },
1740
- {
1741
- "inputs": [],
1742
- "name": "totalReserves",
1743
- "outputs": [
1744
- {
1745
- "internalType": "uint256",
1746
- "name": "",
1747
- "type": "uint256"
1748
- }
1749
- ],
1750
- "stateMutability": "view",
1751
- "type": "function"
1752
- },
1753
- {
1754
- "inputs": [],
1755
- "name": "totalSupply",
1756
- "outputs": [
1757
- {
1758
- "internalType": "uint256",
1759
- "name": "",
1760
- "type": "uint256"
1761
- }
1762
- ],
1763
- "stateMutability": "view",
1764
- "type": "function"
1765
- },
1766
- {
1767
- "inputs": [
1768
- {
1769
- "internalType": "address",
1770
- "name": "dst",
1771
- "type": "address"
1772
- },
1773
- {
1774
- "internalType": "uint256",
1775
- "name": "amount",
1776
- "type": "uint256"
1777
- }
1778
- ],
1779
- "name": "transfer",
1780
- "outputs": [
1781
- {
1782
- "internalType": "bool",
1783
- "name": "",
1784
- "type": "bool"
1785
- }
1786
- ],
1787
- "stateMutability": "nonpayable",
1788
- "type": "function"
1789
- },
1790
- {
1791
- "inputs": [
1792
- {
1793
- "internalType": "address",
1794
- "name": "src",
1795
- "type": "address"
1796
- },
1797
- {
1798
- "internalType": "address",
1799
- "name": "dst",
1800
- "type": "address"
1801
- },
1802
- {
1803
- "internalType": "uint256",
1804
- "name": "amount",
1805
- "type": "uint256"
1806
- }
1807
- ],
1808
- "name": "transferFrom",
1809
- "outputs": [
1810
- {
1811
- "internalType": "bool",
1812
- "name": "",
1813
- "type": "bool"
1814
- }
1815
- ],
1816
- "stateMutability": "nonpayable",
1817
- "type": "function"
1818
- },
1819
- {
1820
- "inputs": [
1821
- {
1822
- "internalType": "address",
1823
- "name": "newOwner",
1824
- "type": "address"
1825
- }
1826
- ],
1827
- "name": "transferOwnership",
1828
- "outputs": [],
1829
- "stateMutability": "nonpayable",
1830
- "type": "function"
1831
- },
1832
- {
1833
- "inputs": [],
1834
- "name": "underlying",
1835
- "outputs": [
1836
- {
1837
- "internalType": "address",
1838
- "name": "",
1839
- "type": "address"
1840
- }
1841
- ],
1842
- "stateMutability": "view",
1843
- "type": "function"
1844
- }
1845
- ],
1846
- "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b62000111565b600054610100900460ff1615620000565760405162461bcd60e51b81526004016200004d90620000af565b60405180910390fd5b60005460ff90811614620000ad576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249891620000a49162000101565b60405180910390a15b565b60208082528101620000fb81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b92915050565b60ff8216815260208101620000fb565b614b4980620001216000396000f3fe608060405234801561001057600080fd5b50600436106103d05760003560e01c8063757212f0116101ff578063ae9d70b01161011a578063dd62ed3e116100ad578063f2fde38b1161007c578063f2fde38b14610817578063f3fdb15a1461082a578063f5e3c4621461083d578063f8f9da281461085057600080fd5b8063dd62ed3e146107a2578063e30c3978146107db578063e9a44fd9146107ec578063ef60450c1461080457600080fd5b8063bd6d894d116100e9578063bd6d894d14610751578063c37f68e214610759578063c5ebeaec1461077c578063db006a751461078f57600080fd5b8063ae9d70b01461071c578063b2a02ff114610724578063b4a0bdf314610737578063bbcac5571461074857600080fd5b80638f840ddd11610192578063a457c2d711610161578063a457c2d7146106e5578063a6afed95146106f8578063a9059cbb14610700578063aa5af0fd1461071357600080fd5b80638f840ddd146106ae57806395d89b41146106b757806395dd9193146106bf578063a0712d68146106d257600080fd5b80638a42c319116101ce5780638a42c319146106645780638bbdb6db146106775780638bcd40161461068a5780638da5cb5b1461069d57600080fd5b8063757212f0146106235780637821a5141461063657806379ba509714610649578063852a12e31461065157600080fd5b8063313ce567116102ef5780635fe3b567116102825780636f307dc3116102515780636f307dc3146105d257806370a08231146105ea578063715018a61461061357806373acee981461061b57600080fd5b80635fe3b567146105985780636752e702146105b857806369ab3250146105c15780636c540baf146105c957600080fd5b80633d9ea3a1116102be5780633d9ea3a11461056257806341f641ee1461056957806344fe6ffe1461057c57806347bd37181461058f57600080fd5b8063313ce5671461051a57806339509351146105345780633af9e669146105475780633b1d21a21461055a57600080fd5b806318160ddd116103675780631c446983116103365780631c446983146104ce57806323323e03146104e157806323b872dd146104f45780632608f8181461050757600080fd5b806318160ddd1461048a578063182df0f51461049357806319b1faef1461049b5780631be19560146104bb57600080fd5b80630e752702116103a35780630e7527021461043b578063107568df1461045b578063173b99041461046e57806317bfdfbc1461047757600080fd5b806306fdde03146103d557806307e27959146103f3578063095ea7b3146104085780630e32cb8614610428575b600080fd5b6103dd610858565b6040516103ea9190613a8f565b60405180910390f35b610406610401366004613ab8565b6108e6565b005b61041b610416366004613afe565b61093d565b6040516103ea9190613b45565b610406610436366004613b53565b6109b5565b61044e610449366004613ab8565b6109c9565b6040516103ea9190613b7a565b610406610469366004613b53565b610a23565b61044e60d05481565b61044e610485366004613b53565b610a34565b61044e60d55481565b61044e610a89565b60db546104ae906001600160a01b031681565b6040516103ea9190613b91565b6104066104c9366004613bbe565b610a98565b6104066104dc366004613ab8565b610bc5565b61044e6104ef366004613afe565b610c40565b61041b610502366004613bdf565b610ca2565b61044e610515366004613afe565b610cf4565b60cc546105279060ff1681565b6040516103ea9190613c38565b61041b610542366004613afe565b610d4f565b61044e610555366004613b53565b610dfb565b61044e610e41565b600161041b565b610406610577366004613b53565b610e4b565b61040661058a366004613bdf565b610e5c565b61044e60d35481565b60cd546105ab906001600160a01b031681565b6040516103ea9190613c88565b61044e60da5481565b61044e600081565b61044e60d15481565b60c9546104ae9061010090046001600160a01b031681565b61044e6105f8366004613b53565b6001600160a01b0316600090815260d7602052604090205490565b6104066110f1565b61044e611105565b610406610631366004613ab8565b611151565b610406610644366004613ab8565b611278565b6104066112c7565b61044e61065f366004613ab8565b6112fc565b610406610672366004613def565b611355565b610406610685366004613f29565b611443565b610406610698366004613bbe565b611482565b6033546001600160a01b03166104ae565b61044e60d45481565b6103dd6114d2565b61044e6106cd366004613b53565b6114df565b61044e6106e0366004613ab8565b6114ea565b61041b6106f3366004613afe565b61152d565b61044e6115dc565b61041b61070e366004613afe565b61178e565b61044e60d25481565b61044e6117df565b610406610732366004613bdf565b611868565b6097546001600160a01b03166105ab565b61044e60d65481565b61044e6118b2565b61076c610767366004613b53565b611904565b6040516103ea9493929190613fa1565b61044e61078a366004613ab8565b611945565b61044e61079d366004613ab8565b611987565b61044e6107b0366004613fd6565b6001600160a01b03918216600090815260d86020908152604080832093909416825291909152205490565b6065546001600160a01b03166104ae565b60cc546104ae9061010090046001600160a01b031681565b610406610812366004613ab8565b6119cb565b610406610825366004613b53565b611a60565b60ce546105ab906001600160a01b031681565b61044e61084b366004614009565b611ad1565b61044e611aeb565b60ca805461086590614065565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614065565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b60c95460ff166109115760405162461bcd60e51b8152600401610908906140b5565b60405180910390fd5b60c9805460ff191690556109236115dc565b5061092d81611b2f565b5060c9805460ff19166001179055565b600061094883611ca2565b33600081815260d8602090815260408083206001600160a01b038816808552925291829020859055905182907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109a1908790613b7a565b60405180910390a360019150505b92915050565b6109bd611cc9565b6109c681611cf3565b50565b60c95460009060ff166109ee5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610a006115dc565b50610a0c333384611d78565b506000905060c9805460ff19166001179055919050565b610a2b611cc9565b6109c681611ecd565b60c95460009060ff16610a595760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610a6b6115dc565b50610a7582611f30565b905060c9805460ff19166001179055919050565b6000610a93611fa0565b905090565b6033546001600160a01b03163314610ac25760405162461bcd60e51b815260040161090890614114565b60c9546001600160a01b03610100909104811690821603610af55760405162461bcd60e51b815260040161090890614173565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610b24903090600401613b91565b602060405180830381865afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b65919061418e565b9050610b8d610b7c6033546001600160a01b031690565b6001600160a01b0384169083612015565b6040516001600160a01b038316907f35ce4c546a473796a8e70ec2d4af4f2031afe357afa7057b6ea7fa340730e1b290600090a25050565b60c95460ff16610be75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905560408051808201909152601981527f73657452657365727665466163746f722875696e7432353629000000000000006020820152610c2e90612070565b610c366115dc565b5061092d8161210e565b60c95460009060ff16610c655760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610c7883611ca2565b610c806115dc565b50610c8c338484612193565b50600060c9805460ff1916600117905592915050565b60c95460009060ff16610cc75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610cdd33858585612329565b50600160c9805460ff191660011790559392505050565b60c95460009060ff16610d195760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610d2b6115dc565b50610d37338484611d78565b506000905060c9805460ff1916600117905592915050565b6000610d5a83611ca2565b33600081815260d8602090815260408083206001600160a01b0388168452909152902054610d8884826141c5565b6001600160a01b03808416600081815260d860209081526040808320948b1680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610de8908590613b7a565b60405180910390a3506001949350505050565b6000806040518060200160405280610e116118b2565b90526001600160a01b038416600090815260d76020526040902054909150610e3a908290612508565b9392505050565b6000610a93612520565b610e53611cc9565b6109c68161259f565b60c95460ff16610e7e5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690558015610ef35760cd5460405163eade3eed60e01b81526001600160a01b039091169063eade3eed90610ec090309086906004016141dd565b600060405180830381600087803b158015610eda57600080fd5b505af1158015610eee573d6000803e3d6000fd5b505050505b60cd546001600160a01b03163314610f1e57604051632c40292560e01b815260040160405180910390fd5b6000610f2983611f30565b60d35490915060008315610fa257610f4186856125fa565b9050610f4d81836141f8565b91506001600160a01b038086169087167f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a183610f8981886141f8565b86604051610f999392919061420f565b60405180910390a35b6000610fae82856141f8565b905080156110725760d6546000610fc583836141c5565b9050610fd183866141f8565b94508060d681905550876001600160a01b0316306001600160a01b03167f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1856000896040516110229392919061424c565b60405180910390a3876001600160a01b03167f90125ffdb441e57c4f6bf69789206424859f206bea5727f2d81ad2470826ef6a8484846040516110679392919061420f565b60405180910390a250505b6001600160a01b03808716600081815260d9602052604080822091825560d25460019092019190915560d38690555190918916907f9fe0294717a8efbc6ace1c151b73a4c89982339b2228a27d1ca21394e348986f906110d3908990613b7a565b60405180910390a3505060c9805460ff191660011790555050505050565b6110f9611cc9565b6111036000612712565b565b60c95460009060ff1661112a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905561113c6115dc565b505060d35460c9805460ff1916600117905590565b61118f6040518060400160405280601e81526020017f73657450726f746f636f6c5365697a6553686172652875696e74323536290000815250612070565b60cd5460408051634ada90af60e01b815290516000926001600160a01b031691634ada90af9160048083019260209291908290030181865afa1580156111d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fd919061418e565b905080611212670de0b6b3a7640000846141c5565b11156112315760405163034dd2c160e11b815260040160405180910390fd5b60da8054908390556040517ff5815f353a60e815cce7553e4f60c533a59d26b1b5504ea4b6db8d60da3e4da29061126b9083908690614267565b60405180910390a1505050565b60c95460ff1661129a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556112ac6115dc565b506112b68161272b565b505060c9805460ff19166001179055565b60655433906001600160a01b031681146112f35760405162461bcd60e51b8152600401610908906142c8565b6109c681612712565b60c95460009060ff166113215760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556113336115dc565b50611340336000846127b8565b50600060c9805460ff19166001179055919050565b600054610100900460ff16158080156113755750600054600160ff909116105b8061138f5750303b15801561138f575060005460ff166001145b6113ab5760405162461bcd60e51b815260040161090890614323565b6000805460ff1916600117905580156113ce576000805461ff0019166101001790555b6113d785611ca2565b6113ea8c8c8c8c8c8c8c8c8c8c8c612a34565b8015611435576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061142c90600190614347565b60405180910390a15b505050505050505050505050565b60cd546001600160a01b0316331461146e57604051635c85a5e760e01b815260040160405180910390fd5b61147b8585858585612bf0565b5050505050565b6114c06040518060400160405280601d81526020017f736574496e746572657374526174654d6f64656c286164647265737329000000815250612070565b6114c86115dc565b506109c681612cd0565b60cb805461086590614065565b60006109af82611f30565b60c95460009060ff1661150f5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556115216115dc565b50611340333384612193565b600061153883611ca2565b33600081815260d8602090815260408083206001600160a01b03881684529091529020548381101561157c5760405162461bcd60e51b815260040161090890614389565b6001600160a01b03808316600081815260d860209081526040808320948a1680845294909152908190209387900393849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610de8908590613b7a565b60d15460009043908181036115f45760009250505090565b60006115fe612520565b60d35460d45460d25460ce5460d6546040516301cee29d60e21b81529596509394929391926000926001600160a01b039092169163073b8a749161164a91899189918991600401613fa1565b602060405180830381865afa158015611667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168b919061418e565b905065048c273950008111156116b35760405162461bcd60e51b8152600401610908906143cd565b60006116bf87896141f8565b905060006116db60405180602001604052808581525083612ddb565b905060006116e98288612508565b905060006116f788836141c5565b90506000611716604051806020016040528060d054815250848a612e0c565b9050600061172585898a612e0c565b60d18e905560d281905560d384905560d48390556040519091507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc0490611772908d90879085908890613fa1565b60405180910390a160009d505050505050505050505050505090565b60c95460009060ff166117b35760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556117c933808585612329565b50600160c9805460ff1916600117905592915050565b60ce546000906001600160a01b0316630cde8d1c6117fb612520565b60d35460d45460d05460d6546040518663ffffffff1660e01b81526004016118279594939291906143dd565b602060405180830381865afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a93919061418e565b60c95460ff1661188a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556118a033848484612e2d565b505060c9805460ff1916600117905550565b60c95460009060ff166118d75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556118e96115dc565b506118f2611fa0565b905060c9805460ff1916600117905590565b6001600160a01b038116600090815260d76020526040812054819081908190819061192e87611f30565b611936611fa0565b93509350935093509193509193565b60c95460009060ff1661196a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905561197c6115dc565b506113403383613066565b60c95460009060ff166119ac5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556119be6115dc565b50611340338360006127b8565b60db546001600160a01b031633146119f55760405162461bcd60e51b815260040161090890614467565b60d654811115611a175760405162461bcd60e51b8152600401610908906144bd565b60d6546000611a2683836141f8565b90508060d6819055507f9e19ec7d2b8f8a94df8cc0072453ace318d221e3cbb2731d0eaa0baac856520f828260405161126b929190614267565b611a68611cc9565b606580546001600160a01b0383166001600160a01b03199091168117909155611a996033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000611ae1338585856000612bf0565b5060009392505050565b60ce546000906001600160a01b031663073b8a74611b07612520565b60d35460d45460d6546040518563ffffffff1660e01b81526004016118279493929190613fa1565b60004360d15414611b5357604051630dff50cb60e41b815260040160405180910390fd5b81611b5c612520565b1015611b7b57604051633345e99960e01b815260040160405180910390fd5b60d454821115611b9e576040516378d2980560e11b815260040160405180910390fd5b8160d454611bac91906141f8565b60d481905560cc54909150611bcf9061010090046001600160a01b0316836131d5565b60cc5460cd5460c95460405163aac59a7560e01b81526001600160a01b036101009485900481169463aac59a7594611c149490831693919004909116906004016141dd565b600060405180830381600087803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b5050505060cc60019054906101000a90046001600160a01b03166001600160a01b03167f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e8383604051611c96929190614267565b60405180910390a25050565b6001600160a01b0381166109c6576040516342bcdf7f60e11b815260040160405180910390fd5b6033546001600160a01b031633146111035760405162461bcd60e51b8152600401610908906144ff565b6001600160a01b038116611d195760405162461bcd60e51b815260040161090890614551565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa090611d6c90839085906141dd565b60405180910390a15050565b60cd5460405163eade3eed60e01b81526000916001600160a01b03169063eade3eed90611dab90309087906004016141dd565b600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b50505050611de44390565b60d15414611e055760405163c9021e2f60e01b815260040160405180910390fd5b6000611e1084611f30565b9050600081841015611e225783611e24565b815b90506000611e3287836125fa565b90506000611e4082856141f8565b905060008260d354611e5291906141f8565b6001600160a01b03808a16600081815260d960205260409081902086815560d25460019091015560d38490555192935091908b16907f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a190611eb89087908790879061420f565b60405180910390a35090979650505050505050565b611ed681611ca2565b60cc80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fafec95c8612496c3ecf5dddc71e393528fe29bd145fbaf9c6b496d78d7e2d79b90600090a35050565b6001600160a01b038116600090815260d9602090815260408083208151808301909252805480835260019091015492820192909252908203611f755750600092915050565b60d2548151600091611f8691614561565b9050816020015181611f989190614596565b949350505050565b60d554600090808203611fb557505060cf5490565b6000611fbf612520565b9050600060d45460d65460d35484611fd791906141c5565b611fe191906141c5565b611feb91906141f8565b9050600083612002670de0b6b3a764000084614561565b61200c9190614596565b95945050505050565b61206b8363a9059cbb60e01b84846040516024016120349291906145aa565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526131f1565b505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906120a390339086906004016145b8565b602060405180830381865afa1580156120c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e491906145e3565b90508061210a57333083604051634a3fa29360e01b815260040161090893929190614604565b5050565b4360d1541461213057604051637dfca6b760e11b815260040160405180910390fd5b670de0b6b3a76400008111156121595760405163717220f360e11b815260040160405180910390fd5b60d08054908290556040517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f82146090611d6c9083908590614267565b60cd5460405163c0891ba960e01b81526001600160a01b039091169063c0891ba9906121c790309086908690600401614631565b600060405180830381600087803b1580156121e157600080fd5b505af11580156121f5573d6000803e3d6000fd5b505050506122004390565b60d15414612221576040516338d8859760e01b815260040160405180910390fd5b60006040518060200160405280612236611fa0565b90529050600061224685846125fa565b905060006122548284613283565b90508060d55461226491906141c5565b60d5556001600160a01b038516600090815260d7602052604081205461228b9083906141c5565b6001600160a01b038716600081815260d760205260409081902083905551919250907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb906122de9086908690869061420f565b60405180910390a2856001600160a01b031660006001600160a01b0316600080516020614af4833981519152846040516123189190613b7a565b60405180910390a350505050505050565b60cd54604051636d0be88d60e01b81526001600160a01b0390911690636d0be88d9061235f90309087908790879060040161464c565b600060405180830381600087803b15801561237957600080fd5b505af115801561238d573d6000803e3d6000fd5b50505050816001600160a01b0316836001600160a01b0316036123c357604051638cd22d1960e01b815260040160405180910390fd5b6000836001600160a01b0316856001600160a01b0316036123e7575060001961240f565b506001600160a01b03808416600090815260d860209081526040808320938816835292905220545b600061241b83836141f8565b6001600160a01b038616600090815260d76020526040812054919250906124439085906141f8565b6001600160a01b038616600090815260d760205260408120549192509061246b9086906141c5565b6001600160a01b03808916600090815260d76020526040808220869055918916815220819055905060001984146124c5576001600160a01b03808816600090815260d860209081526040808320938c168352929052208390555b856001600160a01b0316876001600160a01b0316600080516020614af4833981519152876040516124f69190613b7a565b60405180910390a35050505050505050565b6000806125158484612ddb565b9050611f98816132a1565b60c9546040516370a0823160e01b815260009161010090046001600160a01b03169081906370a0823190612558903090600401613b91565b602060405180830381865afa158015612575573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612599919061418e565b91505090565b6125a881611ca2565b60db80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6dbf1ff28f860de5edafa4c6505e37c0aba213288cc4166c5352b6d3776c79ef90600090a35050565b60c9546040516370a0823160e01b815260009161010090046001600160a01b031690829082906370a0823190612634903090600401613b91565b602060405180830381865afa158015612651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612675919061418e565b905061268c6001600160a01b0383168630876132b9565b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906126bb903090600401613b91565b602060405180830381865afa1580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc919061418e565b905061270882826141f8565b9695505050505050565b606580546001600160a01b03191690556109c6816132e0565b600080804360d1541461275357806040516338acf79960e01b81526004016109089190613b7a565b61275d33856125fa565b90508060d45461276d91906141c5565b60d481905560405190925033907fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5906127a99084908690614267565b60405180910390a29392505050565b8115806127c3575080155b6127df5760405162461bcd60e51b8152600401610908906146c5565b4360d15414612801576040516397b5cfcd60e01b815260040160405180910390fd5b60006040518060200160405280612816611fa0565b905290506000808415612837578491506128308386612508565b9050612878565b6128418484613283565b9150600061284f8385613332565b905080158015906128605750848114155b15612873578261286f816146d5565b9350505b849150505b811580156128865750600081115b8061289957508115801590612899575080155b156128b65760405162461bcd60e51b815260040161090890614730565b60cd54604051634732387560e11b81526001600160a01b0390911690638e6470ea906128ea9030908a908790600401614631565b600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b505050508060d454612928612520565b61293291906141f8565b1015612951576040516391240a1b60e01b815260040160405180910390fd5b8160d55461295f91906141f8565b60d5556001600160a01b038616600090815260d760205260408120546129869084906141f8565b6001600160a01b038816600090815260d76020526040902081905590506129ad87836131d5565b306001600160a01b0316876001600160a01b0316600080516020614af4833981519152856040516129de9190613b7a565b60405180910390a3866001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646838584604051612a239392919061420f565b60405180910390a250505050505050565b600054610100900460ff16612a5b5760405162461bcd60e51b815260040161090890614788565b612a63613355565b612a6c83613384565b60d154158015612a7c575060d254155b612a985760405162461bcd60e51b8152600401610908906147d8565b60cf88905587612aba5760405162461bcd60e51b815260040161090890614835565b612ac38a6133ab565b4360d155670de0b6b3a764000060d255612adc89612cd0565b612ae58161210e565b8651612af89060ca9060208a0190613998565b508551612b0c9060cb906020890190613998565b5060cc805460ff191660ff87161790558151612b279061259f565b612b348260200151611ecd565b66b1a2bc2ec5000060da5560c98054610100600160a81b0319166101006001600160a01b038e811682029290921792839055604080516318160ddd60e01b8152905191909304909116916318160ddd9160048083019260209291908290030181865afa158015612ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcc919061418e565b5060c9805460ff19166001179055612be384612712565b5050505050505050505050565b60c95460ff16612c125760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055612c246115dc565b506000826001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8b919061418e565b90508015612cae5780604051633eea49b760e11b81526004016109089190613b7a565b612cbb8686868686613486565b505060c9805460ff1916600117905550505050565b60004360d15414612cf457604051630be2a5cb60e11b815260040160405180910390fd5b60ce60009054906101000a90046001600160a01b03169050816001600160a01b0316632191f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e91906145e3565b612d8a5760405162461bcd60e51b815260040161090890614879565b60ce80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f92690600090a35050565b6040805160208101909152600081526040518060200160405280612e0385600001518561382b565b90529392505050565b600080612e198585612ddb565b905061200c612e27826132a1565b84613837565b60cd5460405163037883e560e31b81526001600160a01b0390911690631bc41f2890612e63903090889088908890600401614889565b600060405180830381600087803b158015612e7d57600080fd5b505af1158015612e91573d6000803e3d6000fd5b50505050826001600160a01b0316826001600160a01b031603612ec757604051633a94626760e11b815260040160405180910390fd5b6000612ee382604051806020016040528060da54815250613332565b90506000612ef182846141f8565b905060006040518060200160405280612f08611fa0565b905290506000612f188285612508565b905060008160d454612f2a91906141c5565b60d481905560d554909150612f409086906141f8565b60d5556001600160a01b038716600090815260d76020526040902054612f679087906141f8565b6001600160a01b03808916600090815260d7602052604080822093909355908a1681522054612f979085906141c5565b6001600160a01b03808a16600081815260d760205260409081902093909355915190891690600080516020614af483398151915290612fd7908890613b7a565b60405180910390a3306001600160a01b0316876001600160a01b0316600080516020614af4833981519152876040516130109190613b7a565b60405180910390a3306001600160a01b03167fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc58383604051613053929190614267565b60405180910390a2505050505050505050565b60cd5460405163df71403b60e01b81526001600160a01b039091169063df71403b9061309a90309086908690600401614631565b600060405180830381600087803b1580156130b457600080fd5b505af11580156130c8573d6000803e3d6000fd5b505050506130d34390565b60d154146130f457604051630e8d8c6160e21b815260040160405180910390fd5b8060d454613100612520565b61310a91906141f8565b1015613129576040516348c2588160e01b815260040160405180910390fd5b600061313483611f30565b9050600061314283836141c5565b905060008360d35461315491906141c5565b6001600160a01b038616600090815260d96020526040902083815560d25460019091015560d3819055905061318985856131d5565b846001600160a01b03167f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab808584846040516131c69392919061420f565b60405180910390a25050505050565b60c95461010090046001600160a01b031661206b818484612015565b6000613246826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138439092919063ffffffff16565b905080516000148061326757508080602001905181019061326791906145e3565b61206b5760405162461bcd60e51b815260040161090890614905565b6000610e3a61329a84670de0b6b3a764000061382b565b8351613852565b80516000906109af90670de0b6b3a764000090614596565b6132da846323b872dd60e01b85858560405160240161203493929190614631565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000670de0b6b3a764000061334b84846000015161382b565b610e3a9190614596565b600054610100900460ff1661337c5760405162461bcd60e51b815260040161090890614788565b61110361385e565b600054610100900460ff166109bd5760405162461bcd60e51b815260040161090890614788565b60cd5460408051623f1ee960e11b815290516001600160a01b0392831692841691627e3dd29160048083019260209291908290030181865afa1580156133f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341991906145e3565b6134355760405162461bcd60e51b815260040161090890614879565b60cd80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d90600090a35050565b60cd5460405163e89d51ad60e01b81526001600160a01b039091169063e89d51ad906134be9030908690899089908890600401614915565b600060405180830381600087803b1580156134d857600080fd5b505af11580156134ec573d6000803e3d6000fd5b505050506134f74390565b60d15414613518576040516380965b1b60e01b815260040160405180910390fd5b43826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357b919061418e565b1461359957604051631046f38d60e31b815260040160405180910390fd5b846001600160a01b0316846001600160a01b0316036135cb57604051631bd1a62160e21b815260040160405180910390fd5b826000036135ec5760405163d29da7ef60e01b815260040160405180910390fd5b600019830361360e57604051635982c5bb60e11b815260040160405180910390fd5b600061361b868686611d78565b60cd5460405163c488847b60e01b815291925060009182916001600160a01b03169063c488847b9061365590309089908890600401614631565b6040805180830381865afa158015613671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136959190614957565b91509150600082146136b95760405162461bcd60e51b8152600401610908906149da565b6040516370a0823160e01b815281906001600160a01b038716906370a08231906136e7908b90600401613b91565b602060405180830381865afa158015613704573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613728919061418e565b10156137465760405162461bcd60e51b815260040161090890614a1e565b306001600160a01b038616036137675761376230898984612e2d565b6137ca565b60405163b2a02ff160e01b81526001600160a01b0386169063b2a02ff190613797908b908b908690600401614631565b600060405180830381600087803b1580156137b157600080fd5b505af11580156137c5573d6000803e3d6000fd5b505050505b846001600160a01b0316876001600160a01b0316896001600160a01b03167f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb528685604051613819929190614267565b60405180910390a45050505050505050565b6000610e3a8284614561565b6000610e3a82846141c5565b6060611f98848460008561388e565b6000610e3a8284614596565b600054610100900460ff166138855760405162461bcd60e51b815260040161090890614788565b61110333612712565b6060824710156138b05760405162461bcd60e51b815260040161090890614a71565b600080866001600160a01b031685876040516138cc9190614aa3565b60006040518083038185875af1925050503d8060008114613909576040519150601f19603f3d011682016040523d82523d6000602084013e61390e565b606091505b509150915061391f8783838761392a565b979650505050505050565b60608315613969578251600003613962576001600160a01b0385163b6139625760405162461bcd60e51b815260040161090890614ae3565b5081611f98565b611f98838381511561397e5781518083602001fd5b8060405162461bcd60e51b81526004016109089190613a8f565b8280546139a490614065565b90600052602060002090601f0160209004810192826139c65760008555613a0c565b82601f106139df57805160ff1916838001178555613a0c565b82800160010185558215613a0c579182015b82811115613a0c5782518255916020019190600101906139f1565b50613a18929150613a1c565b5090565b5b80821115613a185760008155600101613a1d565b60005b83811015613a4c578181015183820152602001613a34565b838111156132da5750506000910152565b6000613a67825190565b808452602084019350613a7e818560208601613a31565b601f01601f19169290920192915050565b60208082528101610e3a8184613a5d565b805b81146109c657600080fd5b80356109af81613aa0565b600060208284031215613acd57613acd600080fd5b6000611f988484613aad565b60006001600160a01b0382166109af565b613aa281613ad9565b80356109af81613aea565b60008060408385031215613b1457613b14600080fd5b6000613b208585613af3565b9250506020613b3185828601613aad565b9150509250929050565b8015155b82525050565b602081016109af8284613b3b565b600060208284031215613b6857613b68600080fd5b6000611f988484613af3565b80613b3f565b602081016109af8284613b74565b613b3f81613ad9565b602081016109af8284613b88565b60006109af82613ad9565b613aa281613b9f565b80356109af81613baa565b600060208284031215613bd357613bd3600080fd5b6000611f988484613bb3565b600080600060608486031215613bf757613bf7600080fd5b6000613c038686613af3565b9350506020613c1486828701613af3565b9250506040613c2586828701613aad565b9150509250925092565b60ff8116613b3f565b602081016109af8284613c2f565b60006109af6001600160a01b038316613c5d565b90565b6001600160a01b031690565b60006109af82613c46565b60006109af82613c69565b613b3f81613c74565b602081016109af8284613c7f565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715613cd257613cd2613c96565b6040525050565b6000613ce460405190565b9050613cf08282613cac565b919050565b600067ffffffffffffffff821115613d0f57613d0f613c96565b601f19601f83011660200192915050565b82818337506000910152565b6000613d3f613d3a84613cf5565b613cd9565b905082815260208101848484011115613d5a57613d5a600080fd5b613d65848285613d20565b509392505050565b600082601f830112613d8157613d81600080fd5b8135611f98848260208601613d2c565b60ff8116613aa2565b80356109af81613d91565b600060408284031215613dba57613dba600080fd5b613dc46040613cd9565b90506000613dd28484613af3565b8252506020613de384848301613af3565b60208301525092915050565b60008060008060008060008060008060006101808c8e031215613e1457613e14600080fd5b6000613e208e8e613af3565b9b50506020613e318e828f01613bb3565b9a50506040613e428e828f01613bb3565b9950506060613e538e828f01613aad565b98505060808c013567ffffffffffffffff811115613e7357613e73600080fd5b613e7f8e828f01613d6d565b97505060a08c013567ffffffffffffffff811115613e9f57613e9f600080fd5b613eab8e828f01613d6d565b96505060c0613ebc8e828f01613d9a565b95505060e0613ecd8e828f01613af3565b945050610100613edf8e828f01613af3565b935050610120613ef18e828f01613da5565b925050610160613f038e828f01613aad565b9150509295989b509295989b9093969950565b801515613aa2565b80356109af81613f16565b600080600080600060a08688031215613f4457613f44600080fd5b6000613f508888613af3565b9550506020613f6188828901613af3565b9450506040613f7288828901613aad565b9350506060613f8388828901613bb3565b9250506080613f9488828901613f1e565b9150509295509295909350565b60808101613faf8287613b74565b613fbc6020830186613b74565b613fc96040830185613b74565b61200c6060830184613b74565b60008060408385031215613fec57613fec600080fd5b6000613ff88585613af3565b9250506020613b3185828601613af3565b60008060006060848603121561402157614021600080fd5b600061402d8686613af3565b935050602061403e86828701613aad565b9250506040613c2586828701613bb3565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061407957607f821691505b60208210810361408b5761408b61404f565b50919050565b600a8152600060208201691c994b595b9d195c995960b21b815291505b5060200190565b602080825281016109af81614091565b602f81526000602082017f56546f6b656e3a3a7377656570546f6b656e3a206f6e6c792061646d696e206381526e616e20737765657020746f6b656e7360881b602082015291505b5060400190565b602080825281016109af816140c5565b603281526000602082017f56546f6b656e3a3a7377656570546f6b656e3a2063616e206e6f74207377656581527138103ab73232b9363cb4b733903a37b5b2b760711b6020820152915061410d565b602080825281016109af81614124565b80516109af81613aa0565b6000602082840312156141a3576141a3600080fd5b6000611f988484614183565b634e487b7160e01b600052601160045260246000fd5b600082198211156141d8576141d86141af565b500190565b604081016141eb8285613b88565b610e3a6020830184613b88565b60008282101561420a5761420a6141af565b500390565b6060810161421d8286613b74565b61422a6020830185613b74565b611f986040830184613b74565b60006109af613c5a8381565b613b3f81614237565b6060810161425a8286613b74565b61422a6020830185614243565b604081016142758285613b74565b610e3a6020830184613b74565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b6020820152915061410d565b602080825281016109af81614282565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061410d565b602080825281016109af816142d8565b600060ff82166109af565b613b3f81614333565b602081016109af828461433e565b601e81526000602082017f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000815291506140ae565b602080825281016109af81614355565b601c81526000602082017f626f72726f772072617465206973206162737572646c79206869676800000000815291506140ae565b602080825281016109af81614399565b60a081016143eb8288613b74565b6143f86020830187613b74565b6144056040830186613b74565b6144126060830185613b74565b6127086080830184613b74565b602b81526000602082017f6f6e6c792073686f727466616c6c20636f6e74726163742063616e207570646181526a1d1948189859081919589d60aa1b6020820152915061410d565b602080825281016109af8161441f565b602981526000602082017f6d6f7265207468616e206261642064656274207265636f76657265642066726f815268369030bab1ba34b7b760b91b6020820152915061410d565b602080825281016109af81614477565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006140ae565b602080825281016109af816144cd565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061410d565b602080825281016109af8161450f565b600081600019048311821515161561457b5761457b6141af565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826145a5576145a5614580565b500490565b604081016142758285613b88565b604081016145c68285613b88565b8181036020830152611f988184613a5d565b80516109af81613f16565b6000602082840312156145f8576145f8600080fd5b6000611f9884846145d8565b606081016146128286613b88565b61461f6020830185613b88565b818103604083015261200c8184613a5d565b6060810161463f8286613b88565b61422a6020830185613b88565b6080810161465a8287613b88565b6146676020830186613b88565b613fc96040830185613b88565b603481526000602082017f6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d418152736d6f756e74496e206d757374206265207a65726f60601b6020820152915061410d565b602080825281016109af81614674565b600060001982036146e8576146e86141af565b5060010190565b602481526000602082017f72656465656d546f6b656e73206f722072656465656d416d6f756e74206973208152637a65726f60e01b6020820152915061410d565b602080825281016109af816146ef565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061410d565b602080825281016109af81614740565b602381526000602082017f6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f8152626e636560e81b6020820152915061410d565b602080825281016109af81614798565b603081526000602082017f696e697469616c2065786368616e67652072617465206d75737420626520677281526f32b0ba32b9103a3430b7103d32b9379760811b6020820152915061410d565b602080825281016109af816147e8565b601c81526000602082017f6d61726b6572206d6574686f642072657475726e65642066616c736500000000815291506140ae565b602080825281016109af81614845565b608081016148978287613b88565b6148a46020830186613b88565b6148b16040830185613b88565b61200c6060830184613b88565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b6020820152915061410d565b602080825281016109af816148be565b60a081016149238288613b88565b6149306020830187613b88565b61493d6040830186613b88565b61494a6060830185613b74565b6127086080830184613b3b565b6000806040838503121561496d5761496d600080fd5b60006149798585614183565b9250506020613b3185828601614183565b603381526000602082017f4c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f815272105353d5539517d4d152569157d19052531151606a1b6020820152915061410d565b602080825281016109af8161498a565b601881526000602082017f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000815291506140ae565b602080825281016109af816149ea565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b6020820152915061410d565b602080825281016109af81614a2e565b6000614a8b825190565b614a99818560208601613a31565b9290920192915050565b6000610e3a8284614a81565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000815291506140ae565b602080825281016109af81614aaf56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220261d73497e1c75c5cef00a5ff29f50eaf4f389308d0596da8667e5235dbc564364736f6c634300080d0033",
1847
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103d05760003560e01c8063757212f0116101ff578063ae9d70b01161011a578063dd62ed3e116100ad578063f2fde38b1161007c578063f2fde38b14610817578063f3fdb15a1461082a578063f5e3c4621461083d578063f8f9da281461085057600080fd5b8063dd62ed3e146107a2578063e30c3978146107db578063e9a44fd9146107ec578063ef60450c1461080457600080fd5b8063bd6d894d116100e9578063bd6d894d14610751578063c37f68e214610759578063c5ebeaec1461077c578063db006a751461078f57600080fd5b8063ae9d70b01461071c578063b2a02ff114610724578063b4a0bdf314610737578063bbcac5571461074857600080fd5b80638f840ddd11610192578063a457c2d711610161578063a457c2d7146106e5578063a6afed95146106f8578063a9059cbb14610700578063aa5af0fd1461071357600080fd5b80638f840ddd146106ae57806395d89b41146106b757806395dd9193146106bf578063a0712d68146106d257600080fd5b80638a42c319116101ce5780638a42c319146106645780638bbdb6db146106775780638bcd40161461068a5780638da5cb5b1461069d57600080fd5b8063757212f0146106235780637821a5141461063657806379ba509714610649578063852a12e31461065157600080fd5b8063313ce567116102ef5780635fe3b567116102825780636f307dc3116102515780636f307dc3146105d257806370a08231146105ea578063715018a61461061357806373acee981461061b57600080fd5b80635fe3b567146105985780636752e702146105b857806369ab3250146105c15780636c540baf146105c957600080fd5b80633d9ea3a1116102be5780633d9ea3a11461056257806341f641ee1461056957806344fe6ffe1461057c57806347bd37181461058f57600080fd5b8063313ce5671461051a57806339509351146105345780633af9e669146105475780633b1d21a21461055a57600080fd5b806318160ddd116103675780631c446983116103365780631c446983146104ce57806323323e03146104e157806323b872dd146104f45780632608f8181461050757600080fd5b806318160ddd1461048a578063182df0f51461049357806319b1faef1461049b5780631be19560146104bb57600080fd5b80630e752702116103a35780630e7527021461043b578063107568df1461045b578063173b99041461046e57806317bfdfbc1461047757600080fd5b806306fdde03146103d557806307e27959146103f3578063095ea7b3146104085780630e32cb8614610428575b600080fd5b6103dd610858565b6040516103ea9190613a8f565b60405180910390f35b610406610401366004613ab8565b6108e6565b005b61041b610416366004613afe565b61093d565b6040516103ea9190613b45565b610406610436366004613b53565b6109b5565b61044e610449366004613ab8565b6109c9565b6040516103ea9190613b7a565b610406610469366004613b53565b610a23565b61044e60d05481565b61044e610485366004613b53565b610a34565b61044e60d55481565b61044e610a89565b60db546104ae906001600160a01b031681565b6040516103ea9190613b91565b6104066104c9366004613bbe565b610a98565b6104066104dc366004613ab8565b610bc5565b61044e6104ef366004613afe565b610c40565b61041b610502366004613bdf565b610ca2565b61044e610515366004613afe565b610cf4565b60cc546105279060ff1681565b6040516103ea9190613c38565b61041b610542366004613afe565b610d4f565b61044e610555366004613b53565b610dfb565b61044e610e41565b600161041b565b610406610577366004613b53565b610e4b565b61040661058a366004613bdf565b610e5c565b61044e60d35481565b60cd546105ab906001600160a01b031681565b6040516103ea9190613c88565b61044e60da5481565b61044e600081565b61044e60d15481565b60c9546104ae9061010090046001600160a01b031681565b61044e6105f8366004613b53565b6001600160a01b0316600090815260d7602052604090205490565b6104066110f1565b61044e611105565b610406610631366004613ab8565b611151565b610406610644366004613ab8565b611278565b6104066112c7565b61044e61065f366004613ab8565b6112fc565b610406610672366004613def565b611355565b610406610685366004613f29565b611443565b610406610698366004613bbe565b611482565b6033546001600160a01b03166104ae565b61044e60d45481565b6103dd6114d2565b61044e6106cd366004613b53565b6114df565b61044e6106e0366004613ab8565b6114ea565b61041b6106f3366004613afe565b61152d565b61044e6115dc565b61041b61070e366004613afe565b61178e565b61044e60d25481565b61044e6117df565b610406610732366004613bdf565b611868565b6097546001600160a01b03166105ab565b61044e60d65481565b61044e6118b2565b61076c610767366004613b53565b611904565b6040516103ea9493929190613fa1565b61044e61078a366004613ab8565b611945565b61044e61079d366004613ab8565b611987565b61044e6107b0366004613fd6565b6001600160a01b03918216600090815260d86020908152604080832093909416825291909152205490565b6065546001600160a01b03166104ae565b60cc546104ae9061010090046001600160a01b031681565b610406610812366004613ab8565b6119cb565b610406610825366004613b53565b611a60565b60ce546105ab906001600160a01b031681565b61044e61084b366004614009565b611ad1565b61044e611aeb565b60ca805461086590614065565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614065565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b60c95460ff166109115760405162461bcd60e51b8152600401610908906140b5565b60405180910390fd5b60c9805460ff191690556109236115dc565b5061092d81611b2f565b5060c9805460ff19166001179055565b600061094883611ca2565b33600081815260d8602090815260408083206001600160a01b038816808552925291829020859055905182907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109a1908790613b7a565b60405180910390a360019150505b92915050565b6109bd611cc9565b6109c681611cf3565b50565b60c95460009060ff166109ee5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610a006115dc565b50610a0c333384611d78565b506000905060c9805460ff19166001179055919050565b610a2b611cc9565b6109c681611ecd565b60c95460009060ff16610a595760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610a6b6115dc565b50610a7582611f30565b905060c9805460ff19166001179055919050565b6000610a93611fa0565b905090565b6033546001600160a01b03163314610ac25760405162461bcd60e51b815260040161090890614114565b60c9546001600160a01b03610100909104811690821603610af55760405162461bcd60e51b815260040161090890614173565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610b24903090600401613b91565b602060405180830381865afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b65919061418e565b9050610b8d610b7c6033546001600160a01b031690565b6001600160a01b0384169083612015565b6040516001600160a01b038316907f35ce4c546a473796a8e70ec2d4af4f2031afe357afa7057b6ea7fa340730e1b290600090a25050565b60c95460ff16610be75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905560408051808201909152601981527f73657452657365727665466163746f722875696e7432353629000000000000006020820152610c2e90612070565b610c366115dc565b5061092d8161210e565b60c95460009060ff16610c655760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610c7883611ca2565b610c806115dc565b50610c8c338484612193565b50600060c9805460ff1916600117905592915050565b60c95460009060ff16610cc75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610cdd33858585612329565b50600160c9805460ff191660011790559392505050565b60c95460009060ff16610d195760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610d2b6115dc565b50610d37338484611d78565b506000905060c9805460ff1916600117905592915050565b6000610d5a83611ca2565b33600081815260d8602090815260408083206001600160a01b0388168452909152902054610d8884826141c5565b6001600160a01b03808416600081815260d860209081526040808320948b1680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610de8908590613b7a565b60405180910390a3506001949350505050565b6000806040518060200160405280610e116118b2565b90526001600160a01b038416600090815260d76020526040902054909150610e3a908290612508565b9392505050565b6000610a93612520565b610e53611cc9565b6109c68161259f565b60c95460ff16610e7e5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690558015610ef35760cd5460405163eade3eed60e01b81526001600160a01b039091169063eade3eed90610ec090309086906004016141dd565b600060405180830381600087803b158015610eda57600080fd5b505af1158015610eee573d6000803e3d6000fd5b505050505b60cd546001600160a01b03163314610f1e57604051632c40292560e01b815260040160405180910390fd5b6000610f2983611f30565b60d35490915060008315610fa257610f4186856125fa565b9050610f4d81836141f8565b91506001600160a01b038086169087167f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a183610f8981886141f8565b86604051610f999392919061420f565b60405180910390a35b6000610fae82856141f8565b905080156110725760d6546000610fc583836141c5565b9050610fd183866141f8565b94508060d681905550876001600160a01b0316306001600160a01b03167f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1856000896040516110229392919061424c565b60405180910390a3876001600160a01b03167f90125ffdb441e57c4f6bf69789206424859f206bea5727f2d81ad2470826ef6a8484846040516110679392919061420f565b60405180910390a250505b6001600160a01b03808716600081815260d9602052604080822091825560d25460019092019190915560d38690555190918916907f9fe0294717a8efbc6ace1c151b73a4c89982339b2228a27d1ca21394e348986f906110d3908990613b7a565b60405180910390a3505060c9805460ff191660011790555050505050565b6110f9611cc9565b6111036000612712565b565b60c95460009060ff1661112a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905561113c6115dc565b505060d35460c9805460ff1916600117905590565b61118f6040518060400160405280601e81526020017f73657450726f746f636f6c5365697a6553686172652875696e74323536290000815250612070565b60cd5460408051634ada90af60e01b815290516000926001600160a01b031691634ada90af9160048083019260209291908290030181865afa1580156111d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fd919061418e565b905080611212670de0b6b3a7640000846141c5565b11156112315760405163034dd2c160e11b815260040160405180910390fd5b60da8054908390556040517ff5815f353a60e815cce7553e4f60c533a59d26b1b5504ea4b6db8d60da3e4da29061126b9083908690614267565b60405180910390a1505050565b60c95460ff1661129a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556112ac6115dc565b506112b68161272b565b505060c9805460ff19166001179055565b60655433906001600160a01b031681146112f35760405162461bcd60e51b8152600401610908906142c8565b6109c681612712565b60c95460009060ff166113215760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556113336115dc565b50611340336000846127b8565b50600060c9805460ff19166001179055919050565b600054610100900460ff16158080156113755750600054600160ff909116105b8061138f5750303b15801561138f575060005460ff166001145b6113ab5760405162461bcd60e51b815260040161090890614323565b6000805460ff1916600117905580156113ce576000805461ff0019166101001790555b6113d785611ca2565b6113ea8c8c8c8c8c8c8c8c8c8c8c612a34565b8015611435576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061142c90600190614347565b60405180910390a15b505050505050505050505050565b60cd546001600160a01b0316331461146e57604051635c85a5e760e01b815260040160405180910390fd5b61147b8585858585612bf0565b5050505050565b6114c06040518060400160405280601d81526020017f736574496e746572657374526174654d6f64656c286164647265737329000000815250612070565b6114c86115dc565b506109c681612cd0565b60cb805461086590614065565b60006109af82611f30565b60c95460009060ff1661150f5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556115216115dc565b50611340333384612193565b600061153883611ca2565b33600081815260d8602090815260408083206001600160a01b03881684529091529020548381101561157c5760405162461bcd60e51b815260040161090890614389565b6001600160a01b03808316600081815260d860209081526040808320948a1680845294909152908190209387900393849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610de8908590613b7a565b60d15460009043908181036115f45760009250505090565b60006115fe612520565b60d35460d45460d25460ce5460d6546040516301cee29d60e21b81529596509394929391926000926001600160a01b039092169163073b8a749161164a91899189918991600401613fa1565b602060405180830381865afa158015611667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168b919061418e565b905065048c273950008111156116b35760405162461bcd60e51b8152600401610908906143cd565b60006116bf87896141f8565b905060006116db60405180602001604052808581525083612ddb565b905060006116e98288612508565b905060006116f788836141c5565b90506000611716604051806020016040528060d054815250848a612e0c565b9050600061172585898a612e0c565b60d18e905560d281905560d384905560d48390556040519091507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc0490611772908d90879085908890613fa1565b60405180910390a160009d505050505050505050505050505090565b60c95460009060ff166117b35760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556117c933808585612329565b50600160c9805460ff1916600117905592915050565b60ce546000906001600160a01b0316630cde8d1c6117fb612520565b60d35460d45460d05460d6546040518663ffffffff1660e01b81526004016118279594939291906143dd565b602060405180830381865afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a93919061418e565b60c95460ff1661188a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556118a033848484612e2d565b505060c9805460ff1916600117905550565b60c95460009060ff166118d75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556118e96115dc565b506118f2611fa0565b905060c9805460ff1916600117905590565b6001600160a01b038116600090815260d76020526040812054819081908190819061192e87611f30565b611936611fa0565b93509350935093509193509193565b60c95460009060ff1661196a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905561197c6115dc565b506113403383613066565b60c95460009060ff166119ac5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556119be6115dc565b50611340338360006127b8565b60db546001600160a01b031633146119f55760405162461bcd60e51b815260040161090890614467565b60d654811115611a175760405162461bcd60e51b8152600401610908906144bd565b60d6546000611a2683836141f8565b90508060d6819055507f9e19ec7d2b8f8a94df8cc0072453ace318d221e3cbb2731d0eaa0baac856520f828260405161126b929190614267565b611a68611cc9565b606580546001600160a01b0383166001600160a01b03199091168117909155611a996033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000611ae1338585856000612bf0565b5060009392505050565b60ce546000906001600160a01b031663073b8a74611b07612520565b60d35460d45460d6546040518563ffffffff1660e01b81526004016118279493929190613fa1565b60004360d15414611b5357604051630dff50cb60e41b815260040160405180910390fd5b81611b5c612520565b1015611b7b57604051633345e99960e01b815260040160405180910390fd5b60d454821115611b9e576040516378d2980560e11b815260040160405180910390fd5b8160d454611bac91906141f8565b60d481905560cc54909150611bcf9061010090046001600160a01b0316836131d5565b60cc5460cd5460c95460405163aac59a7560e01b81526001600160a01b036101009485900481169463aac59a7594611c149490831693919004909116906004016141dd565b600060405180830381600087803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b5050505060cc60019054906101000a90046001600160a01b03166001600160a01b03167f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e8383604051611c96929190614267565b60405180910390a25050565b6001600160a01b0381166109c6576040516342bcdf7f60e11b815260040160405180910390fd5b6033546001600160a01b031633146111035760405162461bcd60e51b8152600401610908906144ff565b6001600160a01b038116611d195760405162461bcd60e51b815260040161090890614551565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa090611d6c90839085906141dd565b60405180910390a15050565b60cd5460405163eade3eed60e01b81526000916001600160a01b03169063eade3eed90611dab90309087906004016141dd565b600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b50505050611de44390565b60d15414611e055760405163c9021e2f60e01b815260040160405180910390fd5b6000611e1084611f30565b9050600081841015611e225783611e24565b815b90506000611e3287836125fa565b90506000611e4082856141f8565b905060008260d354611e5291906141f8565b6001600160a01b03808a16600081815260d960205260409081902086815560d25460019091015560d38490555192935091908b16907f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a190611eb89087908790879061420f565b60405180910390a35090979650505050505050565b611ed681611ca2565b60cc80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fafec95c8612496c3ecf5dddc71e393528fe29bd145fbaf9c6b496d78d7e2d79b90600090a35050565b6001600160a01b038116600090815260d9602090815260408083208151808301909252805480835260019091015492820192909252908203611f755750600092915050565b60d2548151600091611f8691614561565b9050816020015181611f989190614596565b949350505050565b60d554600090808203611fb557505060cf5490565b6000611fbf612520565b9050600060d45460d65460d35484611fd791906141c5565b611fe191906141c5565b611feb91906141f8565b9050600083612002670de0b6b3a764000084614561565b61200c9190614596565b95945050505050565b61206b8363a9059cbb60e01b84846040516024016120349291906145aa565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526131f1565b505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906120a390339086906004016145b8565b602060405180830381865afa1580156120c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e491906145e3565b90508061210a57333083604051634a3fa29360e01b815260040161090893929190614604565b5050565b4360d1541461213057604051637dfca6b760e11b815260040160405180910390fd5b670de0b6b3a76400008111156121595760405163717220f360e11b815260040160405180910390fd5b60d08054908290556040517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f82146090611d6c9083908590614267565b60cd5460405163c0891ba960e01b81526001600160a01b039091169063c0891ba9906121c790309086908690600401614631565b600060405180830381600087803b1580156121e157600080fd5b505af11580156121f5573d6000803e3d6000fd5b505050506122004390565b60d15414612221576040516338d8859760e01b815260040160405180910390fd5b60006040518060200160405280612236611fa0565b90529050600061224685846125fa565b905060006122548284613283565b90508060d55461226491906141c5565b60d5556001600160a01b038516600090815260d7602052604081205461228b9083906141c5565b6001600160a01b038716600081815260d760205260409081902083905551919250907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb906122de9086908690869061420f565b60405180910390a2856001600160a01b031660006001600160a01b0316600080516020614af4833981519152846040516123189190613b7a565b60405180910390a350505050505050565b60cd54604051636d0be88d60e01b81526001600160a01b0390911690636d0be88d9061235f90309087908790879060040161464c565b600060405180830381600087803b15801561237957600080fd5b505af115801561238d573d6000803e3d6000fd5b50505050816001600160a01b0316836001600160a01b0316036123c357604051638cd22d1960e01b815260040160405180910390fd5b6000836001600160a01b0316856001600160a01b0316036123e7575060001961240f565b506001600160a01b03808416600090815260d860209081526040808320938816835292905220545b600061241b83836141f8565b6001600160a01b038616600090815260d76020526040812054919250906124439085906141f8565b6001600160a01b038616600090815260d760205260408120549192509061246b9086906141c5565b6001600160a01b03808916600090815260d76020526040808220869055918916815220819055905060001984146124c5576001600160a01b03808816600090815260d860209081526040808320938c168352929052208390555b856001600160a01b0316876001600160a01b0316600080516020614af4833981519152876040516124f69190613b7a565b60405180910390a35050505050505050565b6000806125158484612ddb565b9050611f98816132a1565b60c9546040516370a0823160e01b815260009161010090046001600160a01b03169081906370a0823190612558903090600401613b91565b602060405180830381865afa158015612575573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612599919061418e565b91505090565b6125a881611ca2565b60db80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6dbf1ff28f860de5edafa4c6505e37c0aba213288cc4166c5352b6d3776c79ef90600090a35050565b60c9546040516370a0823160e01b815260009161010090046001600160a01b031690829082906370a0823190612634903090600401613b91565b602060405180830381865afa158015612651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612675919061418e565b905061268c6001600160a01b0383168630876132b9565b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906126bb903090600401613b91565b602060405180830381865afa1580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc919061418e565b905061270882826141f8565b9695505050505050565b606580546001600160a01b03191690556109c6816132e0565b600080804360d1541461275357806040516338acf79960e01b81526004016109089190613b7a565b61275d33856125fa565b90508060d45461276d91906141c5565b60d481905560405190925033907fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5906127a99084908690614267565b60405180910390a29392505050565b8115806127c3575080155b6127df5760405162461bcd60e51b8152600401610908906146c5565b4360d15414612801576040516397b5cfcd60e01b815260040160405180910390fd5b60006040518060200160405280612816611fa0565b905290506000808415612837578491506128308386612508565b9050612878565b6128418484613283565b9150600061284f8385613332565b905080158015906128605750848114155b15612873578261286f816146d5565b9350505b849150505b811580156128865750600081115b8061289957508115801590612899575080155b156128b65760405162461bcd60e51b815260040161090890614730565b60cd54604051634732387560e11b81526001600160a01b0390911690638e6470ea906128ea9030908a908790600401614631565b600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b505050508060d454612928612520565b61293291906141f8565b1015612951576040516391240a1b60e01b815260040160405180910390fd5b8160d55461295f91906141f8565b60d5556001600160a01b038616600090815260d760205260408120546129869084906141f8565b6001600160a01b038816600090815260d76020526040902081905590506129ad87836131d5565b306001600160a01b0316876001600160a01b0316600080516020614af4833981519152856040516129de9190613b7a565b60405180910390a3866001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646838584604051612a239392919061420f565b60405180910390a250505050505050565b600054610100900460ff16612a5b5760405162461bcd60e51b815260040161090890614788565b612a63613355565b612a6c83613384565b60d154158015612a7c575060d254155b612a985760405162461bcd60e51b8152600401610908906147d8565b60cf88905587612aba5760405162461bcd60e51b815260040161090890614835565b612ac38a6133ab565b4360d155670de0b6b3a764000060d255612adc89612cd0565b612ae58161210e565b8651612af89060ca9060208a0190613998565b508551612b0c9060cb906020890190613998565b5060cc805460ff191660ff87161790558151612b279061259f565b612b348260200151611ecd565b66b1a2bc2ec5000060da5560c98054610100600160a81b0319166101006001600160a01b038e811682029290921792839055604080516318160ddd60e01b8152905191909304909116916318160ddd9160048083019260209291908290030181865afa158015612ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcc919061418e565b5060c9805460ff19166001179055612be384612712565b5050505050505050505050565b60c95460ff16612c125760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055612c246115dc565b506000826001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8b919061418e565b90508015612cae5780604051633eea49b760e11b81526004016109089190613b7a565b612cbb8686868686613486565b505060c9805460ff1916600117905550505050565b60004360d15414612cf457604051630be2a5cb60e11b815260040160405180910390fd5b60ce60009054906101000a90046001600160a01b03169050816001600160a01b0316632191f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e91906145e3565b612d8a5760405162461bcd60e51b815260040161090890614879565b60ce80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f92690600090a35050565b6040805160208101909152600081526040518060200160405280612e0385600001518561382b565b90529392505050565b600080612e198585612ddb565b905061200c612e27826132a1565b84613837565b60cd5460405163037883e560e31b81526001600160a01b0390911690631bc41f2890612e63903090889088908890600401614889565b600060405180830381600087803b158015612e7d57600080fd5b505af1158015612e91573d6000803e3d6000fd5b50505050826001600160a01b0316826001600160a01b031603612ec757604051633a94626760e11b815260040160405180910390fd5b6000612ee382604051806020016040528060da54815250613332565b90506000612ef182846141f8565b905060006040518060200160405280612f08611fa0565b905290506000612f188285612508565b905060008160d454612f2a91906141c5565b60d481905560d554909150612f409086906141f8565b60d5556001600160a01b038716600090815260d76020526040902054612f679087906141f8565b6001600160a01b03808916600090815260d7602052604080822093909355908a1681522054612f979085906141c5565b6001600160a01b03808a16600081815260d760205260409081902093909355915190891690600080516020614af483398151915290612fd7908890613b7a565b60405180910390a3306001600160a01b0316876001600160a01b0316600080516020614af4833981519152876040516130109190613b7a565b60405180910390a3306001600160a01b03167fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc58383604051613053929190614267565b60405180910390a2505050505050505050565b60cd5460405163df71403b60e01b81526001600160a01b039091169063df71403b9061309a90309086908690600401614631565b600060405180830381600087803b1580156130b457600080fd5b505af11580156130c8573d6000803e3d6000fd5b505050506130d34390565b60d154146130f457604051630e8d8c6160e21b815260040160405180910390fd5b8060d454613100612520565b61310a91906141f8565b1015613129576040516348c2588160e01b815260040160405180910390fd5b600061313483611f30565b9050600061314283836141c5565b905060008360d35461315491906141c5565b6001600160a01b038616600090815260d96020526040902083815560d25460019091015560d3819055905061318985856131d5565b846001600160a01b03167f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab808584846040516131c69392919061420f565b60405180910390a25050505050565b60c95461010090046001600160a01b031661206b818484612015565b6000613246826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138439092919063ffffffff16565b905080516000148061326757508080602001905181019061326791906145e3565b61206b5760405162461bcd60e51b815260040161090890614905565b6000610e3a61329a84670de0b6b3a764000061382b565b8351613852565b80516000906109af90670de0b6b3a764000090614596565b6132da846323b872dd60e01b85858560405160240161203493929190614631565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000670de0b6b3a764000061334b84846000015161382b565b610e3a9190614596565b600054610100900460ff1661337c5760405162461bcd60e51b815260040161090890614788565b61110361385e565b600054610100900460ff166109bd5760405162461bcd60e51b815260040161090890614788565b60cd5460408051623f1ee960e11b815290516001600160a01b0392831692841691627e3dd29160048083019260209291908290030181865afa1580156133f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341991906145e3565b6134355760405162461bcd60e51b815260040161090890614879565b60cd80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d90600090a35050565b60cd5460405163e89d51ad60e01b81526001600160a01b039091169063e89d51ad906134be9030908690899089908890600401614915565b600060405180830381600087803b1580156134d857600080fd5b505af11580156134ec573d6000803e3d6000fd5b505050506134f74390565b60d15414613518576040516380965b1b60e01b815260040160405180910390fd5b43826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357b919061418e565b1461359957604051631046f38d60e31b815260040160405180910390fd5b846001600160a01b0316846001600160a01b0316036135cb57604051631bd1a62160e21b815260040160405180910390fd5b826000036135ec5760405163d29da7ef60e01b815260040160405180910390fd5b600019830361360e57604051635982c5bb60e11b815260040160405180910390fd5b600061361b868686611d78565b60cd5460405163c488847b60e01b815291925060009182916001600160a01b03169063c488847b9061365590309089908890600401614631565b6040805180830381865afa158015613671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136959190614957565b91509150600082146136b95760405162461bcd60e51b8152600401610908906149da565b6040516370a0823160e01b815281906001600160a01b038716906370a08231906136e7908b90600401613b91565b602060405180830381865afa158015613704573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613728919061418e565b10156137465760405162461bcd60e51b815260040161090890614a1e565b306001600160a01b038616036137675761376230898984612e2d565b6137ca565b60405163b2a02ff160e01b81526001600160a01b0386169063b2a02ff190613797908b908b908690600401614631565b600060405180830381600087803b1580156137b157600080fd5b505af11580156137c5573d6000803e3d6000fd5b505050505b846001600160a01b0316876001600160a01b0316896001600160a01b03167f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb528685604051613819929190614267565b60405180910390a45050505050505050565b6000610e3a8284614561565b6000610e3a82846141c5565b6060611f98848460008561388e565b6000610e3a8284614596565b600054610100900460ff166138855760405162461bcd60e51b815260040161090890614788565b61110333612712565b6060824710156138b05760405162461bcd60e51b815260040161090890614a71565b600080866001600160a01b031685876040516138cc9190614aa3565b60006040518083038185875af1925050503d8060008114613909576040519150601f19603f3d011682016040523d82523d6000602084013e61390e565b606091505b509150915061391f8783838761392a565b979650505050505050565b60608315613969578251600003613962576001600160a01b0385163b6139625760405162461bcd60e51b815260040161090890614ae3565b5081611f98565b611f98838381511561397e5781518083602001fd5b8060405162461bcd60e51b81526004016109089190613a8f565b8280546139a490614065565b90600052602060002090601f0160209004810192826139c65760008555613a0c565b82601f106139df57805160ff1916838001178555613a0c565b82800160010185558215613a0c579182015b82811115613a0c5782518255916020019190600101906139f1565b50613a18929150613a1c565b5090565b5b80821115613a185760008155600101613a1d565b60005b83811015613a4c578181015183820152602001613a34565b838111156132da5750506000910152565b6000613a67825190565b808452602084019350613a7e818560208601613a31565b601f01601f19169290920192915050565b60208082528101610e3a8184613a5d565b805b81146109c657600080fd5b80356109af81613aa0565b600060208284031215613acd57613acd600080fd5b6000611f988484613aad565b60006001600160a01b0382166109af565b613aa281613ad9565b80356109af81613aea565b60008060408385031215613b1457613b14600080fd5b6000613b208585613af3565b9250506020613b3185828601613aad565b9150509250929050565b8015155b82525050565b602081016109af8284613b3b565b600060208284031215613b6857613b68600080fd5b6000611f988484613af3565b80613b3f565b602081016109af8284613b74565b613b3f81613ad9565b602081016109af8284613b88565b60006109af82613ad9565b613aa281613b9f565b80356109af81613baa565b600060208284031215613bd357613bd3600080fd5b6000611f988484613bb3565b600080600060608486031215613bf757613bf7600080fd5b6000613c038686613af3565b9350506020613c1486828701613af3565b9250506040613c2586828701613aad565b9150509250925092565b60ff8116613b3f565b602081016109af8284613c2f565b60006109af6001600160a01b038316613c5d565b90565b6001600160a01b031690565b60006109af82613c46565b60006109af82613c69565b613b3f81613c74565b602081016109af8284613c7f565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715613cd257613cd2613c96565b6040525050565b6000613ce460405190565b9050613cf08282613cac565b919050565b600067ffffffffffffffff821115613d0f57613d0f613c96565b601f19601f83011660200192915050565b82818337506000910152565b6000613d3f613d3a84613cf5565b613cd9565b905082815260208101848484011115613d5a57613d5a600080fd5b613d65848285613d20565b509392505050565b600082601f830112613d8157613d81600080fd5b8135611f98848260208601613d2c565b60ff8116613aa2565b80356109af81613d91565b600060408284031215613dba57613dba600080fd5b613dc46040613cd9565b90506000613dd28484613af3565b8252506020613de384848301613af3565b60208301525092915050565b60008060008060008060008060008060006101808c8e031215613e1457613e14600080fd5b6000613e208e8e613af3565b9b50506020613e318e828f01613bb3565b9a50506040613e428e828f01613bb3565b9950506060613e538e828f01613aad565b98505060808c013567ffffffffffffffff811115613e7357613e73600080fd5b613e7f8e828f01613d6d565b97505060a08c013567ffffffffffffffff811115613e9f57613e9f600080fd5b613eab8e828f01613d6d565b96505060c0613ebc8e828f01613d9a565b95505060e0613ecd8e828f01613af3565b945050610100613edf8e828f01613af3565b935050610120613ef18e828f01613da5565b925050610160613f038e828f01613aad565b9150509295989b509295989b9093969950565b801515613aa2565b80356109af81613f16565b600080600080600060a08688031215613f4457613f44600080fd5b6000613f508888613af3565b9550506020613f6188828901613af3565b9450506040613f7288828901613aad565b9350506060613f8388828901613bb3565b9250506080613f9488828901613f1e565b9150509295509295909350565b60808101613faf8287613b74565b613fbc6020830186613b74565b613fc96040830185613b74565b61200c6060830184613b74565b60008060408385031215613fec57613fec600080fd5b6000613ff88585613af3565b9250506020613b3185828601613af3565b60008060006060848603121561402157614021600080fd5b600061402d8686613af3565b935050602061403e86828701613aad565b9250506040613c2586828701613bb3565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061407957607f821691505b60208210810361408b5761408b61404f565b50919050565b600a8152600060208201691c994b595b9d195c995960b21b815291505b5060200190565b602080825281016109af81614091565b602f81526000602082017f56546f6b656e3a3a7377656570546f6b656e3a206f6e6c792061646d696e206381526e616e20737765657020746f6b656e7360881b602082015291505b5060400190565b602080825281016109af816140c5565b603281526000602082017f56546f6b656e3a3a7377656570546f6b656e3a2063616e206e6f74207377656581527138103ab73232b9363cb4b733903a37b5b2b760711b6020820152915061410d565b602080825281016109af81614124565b80516109af81613aa0565b6000602082840312156141a3576141a3600080fd5b6000611f988484614183565b634e487b7160e01b600052601160045260246000fd5b600082198211156141d8576141d86141af565b500190565b604081016141eb8285613b88565b610e3a6020830184613b88565b60008282101561420a5761420a6141af565b500390565b6060810161421d8286613b74565b61422a6020830185613b74565b611f986040830184613b74565b60006109af613c5a8381565b613b3f81614237565b6060810161425a8286613b74565b61422a6020830185614243565b604081016142758285613b74565b610e3a6020830184613b74565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b6020820152915061410d565b602080825281016109af81614282565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061410d565b602080825281016109af816142d8565b600060ff82166109af565b613b3f81614333565b602081016109af828461433e565b601e81526000602082017f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000815291506140ae565b602080825281016109af81614355565b601c81526000602082017f626f72726f772072617465206973206162737572646c79206869676800000000815291506140ae565b602080825281016109af81614399565b60a081016143eb8288613b74565b6143f86020830187613b74565b6144056040830186613b74565b6144126060830185613b74565b6127086080830184613b74565b602b81526000602082017f6f6e6c792073686f727466616c6c20636f6e74726163742063616e207570646181526a1d1948189859081919589d60aa1b6020820152915061410d565b602080825281016109af8161441f565b602981526000602082017f6d6f7265207468616e206261642064656274207265636f76657265642066726f815268369030bab1ba34b7b760b91b6020820152915061410d565b602080825281016109af81614477565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006140ae565b602080825281016109af816144cd565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061410d565b602080825281016109af8161450f565b600081600019048311821515161561457b5761457b6141af565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826145a5576145a5614580565b500490565b604081016142758285613b88565b604081016145c68285613b88565b8181036020830152611f988184613a5d565b80516109af81613f16565b6000602082840312156145f8576145f8600080fd5b6000611f9884846145d8565b606081016146128286613b88565b61461f6020830185613b88565b818103604083015261200c8184613a5d565b6060810161463f8286613b88565b61422a6020830185613b88565b6080810161465a8287613b88565b6146676020830186613b88565b613fc96040830185613b88565b603481526000602082017f6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d418152736d6f756e74496e206d757374206265207a65726f60601b6020820152915061410d565b602080825281016109af81614674565b600060001982036146e8576146e86141af565b5060010190565b602481526000602082017f72656465656d546f6b656e73206f722072656465656d416d6f756e74206973208152637a65726f60e01b6020820152915061410d565b602080825281016109af816146ef565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061410d565b602080825281016109af81614740565b602381526000602082017f6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f8152626e636560e81b6020820152915061410d565b602080825281016109af81614798565b603081526000602082017f696e697469616c2065786368616e67652072617465206d75737420626520677281526f32b0ba32b9103a3430b7103d32b9379760811b6020820152915061410d565b602080825281016109af816147e8565b601c81526000602082017f6d61726b6572206d6574686f642072657475726e65642066616c736500000000815291506140ae565b602080825281016109af81614845565b608081016148978287613b88565b6148a46020830186613b88565b6148b16040830185613b88565b61200c6060830184613b88565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b6020820152915061410d565b602080825281016109af816148be565b60a081016149238288613b88565b6149306020830187613b88565b61493d6040830186613b88565b61494a6060830185613b74565b6127086080830184613b3b565b6000806040838503121561496d5761496d600080fd5b60006149798585614183565b9250506020613b3185828601614183565b603381526000602082017f4c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f815272105353d5539517d4d152569157d19052531151606a1b6020820152915061410d565b602080825281016109af8161498a565b601881526000602082017f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000815291506140ae565b602080825281016109af816149ea565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b6020820152915061410d565b602080825281016109af81614a2e565b6000614a8b825190565b614a99818560208601613a31565b9290920192915050565b6000610e3a8284614a81565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000815291506140ae565b602080825281016109af81614aaf56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220261d73497e1c75c5cef00a5ff29f50eaf4f389308d0596da8667e5235dbc564364736f6c634300080d0033",
1848
- "linkReferences": {},
1849
- "deployedLinkReferences": {}
1850
- }