@venusprotocol/isolated-pools 1.0.0-dev.1 → 1.0.0-dev.11

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 (265) hide show
  1. package/README.md +1 -11
  2. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  3. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  4. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +4 -0
  5. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +183 -0
  6. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  7. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  8. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +4 -0
  9. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +56 -0
  10. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +4 -0
  11. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +24 -0
  12. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +56 -0
  14. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +19 -0
  16. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +80 -0
  18. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +24 -0
  20. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +113 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  32. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
  34. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  38. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +10 -0
  42. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +4 -0
  43. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +10 -0
  44. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +4 -0
  45. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.json +115 -0
  46. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +4 -0
  47. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +76 -0
  48. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +4 -0
  49. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +24 -0
  50. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +4 -0
  51. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +24 -0
  52. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
  53. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
  54. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +4 -0
  55. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json +86 -0
  56. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +4 -0
  57. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json +10 -0
  58. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +4 -0
  59. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +10 -0
  60. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +4 -0
  61. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +24 -0
  62. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +4 -0
  63. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.json +369 -0
  64. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +4 -0
  65. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.json +181 -0
  66. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +4 -0
  67. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.json +282 -0
  68. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +4 -0
  69. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +40 -0
  70. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +4 -0
  71. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +30 -0
  72. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +4 -0
  73. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +43 -0
  74. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +4 -0
  75. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +49 -0
  76. package/artifacts/build-info/5d0b3e7c7d317c28bfc8eca20c31f64e.json +1 -0
  77. package/artifacts/build-info/f19d689bc99e63a20dd2a17a14e2b84a.json +1 -0
  78. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.dbg.json +4 -0
  79. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.json +276 -0
  80. package/artifacts/contracts/Comptroller.sol/Comptroller.dbg.json +4 -0
  81. package/artifacts/contracts/Comptroller.sol/Comptroller.json +1667 -0
  82. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.dbg.json +4 -0
  83. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.json +285 -0
  84. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.dbg.json +4 -0
  85. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.json +170 -0
  86. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.dbg.json +4 -0
  87. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.json +173 -0
  88. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.dbg.json +4 -0
  89. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.json +156 -0
  90. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.dbg.json +4 -0
  91. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.json +10 -0
  92. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.dbg.json +4 -0
  93. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.json +50 -0
  94. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.dbg.json +4 -0
  95. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.json +97 -0
  96. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.dbg.json +4 -0
  97. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.json +307 -0
  98. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.dbg.json +4 -0
  99. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.json +1087 -0
  100. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +4 -0
  101. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +59 -0
  102. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.dbg.json +4 -0
  103. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.json +689 -0
  104. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.dbg.json +4 -0
  105. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.json +176 -0
  106. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.dbg.json +4 -0
  107. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.json +928 -0
  108. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +4 -0
  109. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.json +29 -0
  110. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.dbg.json +4 -0
  111. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.json +101 -0
  112. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +4 -0
  113. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.json +296 -0
  114. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.dbg.json +4 -0
  115. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.json +83 -0
  116. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.dbg.json +4 -0
  117. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.json +596 -0
  118. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.dbg.json +4 -0
  119. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.json +24 -0
  120. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.dbg.json +4 -0
  121. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.json +761 -0
  122. package/artifacts/contracts/VToken.sol/VToken.dbg.json +4 -0
  123. package/artifacts/contracts/VToken.sol/VToken.json +1850 -0
  124. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.dbg.json +4 -0
  125. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.json +1398 -0
  126. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.dbg.json +4 -0
  127. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.json +219 -0
  128. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.dbg.json +4 -0
  129. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.json +192 -0
  130. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.dbg.json +4 -0
  131. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +1712 -0
  132. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.dbg.json +4 -0
  133. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +94 -0
  134. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.dbg.json +4 -0
  135. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +1744 -0
  136. package/artifacts/contracts/test/ERC20.sol/ERC20.dbg.json +4 -0
  137. package/artifacts/contracts/test/ERC20.sol/ERC20.json +194 -0
  138. package/artifacts/contracts/test/ERC20.sol/ERC20Base.dbg.json +4 -0
  139. package/artifacts/contracts/test/ERC20.sol/ERC20Base.json +141 -0
  140. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.dbg.json +4 -0
  141. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.json +351 -0
  142. package/artifacts/contracts/test/ERC20.sol/ERC20NS.dbg.json +4 -0
  143. package/artifacts/contracts/test/ERC20.sol/ERC20NS.json +182 -0
  144. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.dbg.json +4 -0
  145. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.json +247 -0
  146. package/artifacts/contracts/test/ERC20.sol/StandardToken.dbg.json +4 -0
  147. package/artifacts/contracts/test/ERC20.sol/StandardToken.json +259 -0
  148. package/artifacts/contracts/test/EvilToken.sol/EvilToken.dbg.json +4 -0
  149. package/artifacts/contracts/test/EvilToken.sol/EvilToken.json +303 -0
  150. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.dbg.json +4 -0
  151. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.json +265 -0
  152. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.dbg.json +4 -0
  153. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.json +277 -0
  154. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.dbg.json +4 -0
  155. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.json +313 -0
  156. package/artifacts/contracts/test/FeeToken.sol/FeeToken.dbg.json +4 -0
  157. package/artifacts/contracts/test/FeeToken.sol/FeeToken.json +313 -0
  158. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.dbg.json +4 -0
  159. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.json +85 -0
  160. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +4 -0
  161. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.json +332 -0
  162. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.dbg.json +4 -0
  163. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.json +233 -0
  164. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.dbg.json +4 -0
  165. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.json +187 -0
  166. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.dbg.json +4 -0
  167. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.json +668 -0
  168. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.dbg.json +4 -0
  169. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.json +760 -0
  170. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.dbg.json +4 -0
  171. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.json +962 -0
  172. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.dbg.json +4 -0
  173. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.json +55 -0
  174. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.dbg.json +4 -0
  175. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.json +10 -0
  176. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.dbg.json +4 -0
  177. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.json +982 -0
  178. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.dbg.json +4 -0
  179. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.json +10 -0
  180. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.dbg.json +4 -0
  181. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.json +10 -0
  182. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.dbg.json +4 -0
  183. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.json +85 -0
  184. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.dbg.json +4 -0
  185. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.json +315 -0
  186. package/artifacts/contracts/test/SafeMath.sol/SafeMath.dbg.json +4 -0
  187. package/artifacts/contracts/test/SafeMath.sol/SafeMath.json +10 -0
  188. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.dbg.json +4 -0
  189. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.json +1946 -0
  190. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.dbg.json +4 -0
  191. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.json +2306 -0
  192. package/contracts/BaseJumpRateModelV2.sol +4 -3
  193. package/contracts/Comptroller.sol +40 -15
  194. package/contracts/ComptrollerInterface.sol +10 -0
  195. package/contracts/ComptrollerStorage.sol +5 -0
  196. package/contracts/ErrorReporter.sol +5 -0
  197. package/contracts/ExponentialNoError.sol +0 -7
  198. package/contracts/Lens/PoolLens.sol +13 -0
  199. package/contracts/MaxLoopsLimitHelper.sol +5 -0
  200. package/contracts/Pool/PoolRegistry.sol +58 -206
  201. package/contracts/Pool/PoolRegistryInterface.sol +12 -7
  202. package/contracts/Rewards/RewardsDistributor.sol +15 -0
  203. package/contracts/RiskFund/IProtocolShareReserve.sol +5 -0
  204. package/contracts/RiskFund/IRiskFund.sol +5 -0
  205. package/contracts/RiskFund/ProtocolShareReserve.sol +5 -0
  206. package/contracts/RiskFund/ReserveHelpers.sol +5 -0
  207. package/contracts/RiskFund/RiskFund.sol +5 -5
  208. package/contracts/Shortfall/IShortfall.sol +5 -0
  209. package/contracts/Shortfall/Shortfall.sol +33 -22
  210. package/contracts/VToken.sol +31 -9
  211. package/contracts/VTokenInterfaces.sol +10 -0
  212. package/contracts/WhitePaperInterestRateModel.sol +1 -1
  213. package/contracts/lib/imports.sol +11 -0
  214. package/contracts/test/MockDeflationaryToken.sol +113 -0
  215. package/dist/deploy/001-deploy-mock-tokens.d.ts +3 -0
  216. package/dist/deploy/001-deploy-mock-tokens.js +23 -0
  217. package/dist/deploy/002-price-oracle.d.ts +2 -0
  218. package/dist/deploy/002-price-oracle.js +9 -0
  219. package/dist/deploy/003-price-oracle-configure-feeds.d.ts +2 -0
  220. package/dist/deploy/003-price-oracle-configure-feeds.js +9 -0
  221. package/{deploy/004-swap-router.ts → dist/deploy/004-swap-router.d.ts} +0 -3
  222. package/dist/deploy/004-swap-router.js +8 -0
  223. package/dist/deploy/005-access-control.d.ts +3 -0
  224. package/dist/deploy/005-access-control.js +16 -0
  225. package/dist/deploy/006-deploy-factories.d.ts +3 -0
  226. package/dist/deploy/006-deploy-factories.js +37 -0
  227. package/dist/deploy/007-access-control-configure.d.ts +3 -0
  228. package/dist/deploy/007-access-control-configure.js +69 -0
  229. package/dist/deploy/008-deploy-pool-lens.d.ts +3 -0
  230. package/dist/deploy/008-deploy-pool-lens.js +15 -0
  231. package/dist/deploy/009-deploy-pools.d.ts +3 -0
  232. package/dist/deploy/009-deploy-pools.js +186 -0
  233. package/dist/deploy/010-rewards.d.ts +3 -0
  234. package/dist/deploy/010-rewards.js +76 -0
  235. package/dist/deploy/011-transfer-pools-ownership.d.ts +3 -0
  236. package/dist/deploy/011-transfer-pools-ownership.js +75 -0
  237. package/dist/deploy/012-riskfund-protocolshare.d.ts +3 -0
  238. package/dist/deploy/012-riskfund-protocolshare.js +139 -0
  239. package/dist/deploy/013-transfer-funds-ownership.d.ts +3 -0
  240. package/dist/deploy/013-transfer-funds-ownership.js +46 -0
  241. package/dist/hardhat.config.d.ts +14 -0
  242. package/dist/hardhat.config.js +237 -0
  243. package/dist/helpers/deploymentConfig.d.ts +59 -0
  244. package/dist/helpers/deploymentConfig.js +836 -0
  245. package/dist/helpers/utils.d.ts +3 -0
  246. package/dist/helpers/utils.js +28 -0
  247. package/package.json +3 -11
  248. package/contracts/Factories/JumpRateModelFactory.sol +0 -26
  249. package/contracts/Factories/VTokenProxyFactory.sol +0 -53
  250. package/contracts/Factories/WhitePaperInterestRateModelFactory.sol +0 -12
  251. package/contracts/Proxy/UpgradeableBeacon.sol +0 -10
  252. package/deploy/001-deploy-mock-tokens.ts +0 -29
  253. package/deploy/002-price-oracle.ts +0 -7
  254. package/deploy/003-price-oracle-configure-feeds.ts +0 -7
  255. package/deploy/005-access-control.ts +0 -20
  256. package/deploy/006-deploy-factories.ts +0 -82
  257. package/deploy/007-access-control-configure.ts +0 -142
  258. package/deploy/008-deploy-pool-lens.ts +0 -19
  259. package/deploy/009-deploy-pools.ts +0 -171
  260. package/deploy/010-rewards.ts +0 -84
  261. package/deploy/011-transfer-pools-ownership.ts +0 -93
  262. package/deploy/012-riskfund-protocolshare.ts +0 -140
  263. package/deploy/013-transfer-funds-ownership.ts +0 -63
  264. package/helpers/deploymentConfig.ts +0 -897
  265. package/helpers/utils.ts +0 -24
@@ -0,0 +1,596 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "RiskFund",
4
+ "sourceName": "contracts/RiskFund/RiskFund.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "stateMutability": "nonpayable",
9
+ "type": "constructor"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "loopsLimit",
16
+ "type": "uint256"
17
+ },
18
+ {
19
+ "internalType": "uint256",
20
+ "name": "requiredLoops",
21
+ "type": "uint256"
22
+ }
23
+ ],
24
+ "name": "MaxLoopsLimitExceeded",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [
29
+ {
30
+ "internalType": "address",
31
+ "name": "sender",
32
+ "type": "address"
33
+ },
34
+ {
35
+ "internalType": "address",
36
+ "name": "calledContract",
37
+ "type": "address"
38
+ },
39
+ {
40
+ "internalType": "string",
41
+ "name": "methodSignature",
42
+ "type": "string"
43
+ }
44
+ ],
45
+ "name": "Unauthorized",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [],
50
+ "name": "ZeroAddressNotAllowed",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "anonymous": false,
55
+ "inputs": [
56
+ {
57
+ "indexed": true,
58
+ "internalType": "address",
59
+ "name": "comptroller",
60
+ "type": "address"
61
+ },
62
+ {
63
+ "indexed": true,
64
+ "internalType": "address",
65
+ "name": "asset",
66
+ "type": "address"
67
+ },
68
+ {
69
+ "indexed": false,
70
+ "internalType": "uint256",
71
+ "name": "amount",
72
+ "type": "uint256"
73
+ }
74
+ ],
75
+ "name": "AssetsReservesUpdated",
76
+ "type": "event"
77
+ },
78
+ {
79
+ "anonymous": false,
80
+ "inputs": [
81
+ {
82
+ "indexed": false,
83
+ "internalType": "uint8",
84
+ "name": "version",
85
+ "type": "uint8"
86
+ }
87
+ ],
88
+ "name": "Initialized",
89
+ "type": "event"
90
+ },
91
+ {
92
+ "anonymous": false,
93
+ "inputs": [
94
+ {
95
+ "indexed": false,
96
+ "internalType": "uint256",
97
+ "name": "oldMaxLoopsLimit",
98
+ "type": "uint256"
99
+ },
100
+ {
101
+ "indexed": false,
102
+ "internalType": "uint256",
103
+ "name": "newmaxLoopsLimit",
104
+ "type": "uint256"
105
+ }
106
+ ],
107
+ "name": "MaxLoopsLimitUpdated",
108
+ "type": "event"
109
+ },
110
+ {
111
+ "anonymous": false,
112
+ "inputs": [
113
+ {
114
+ "indexed": false,
115
+ "internalType": "uint256",
116
+ "name": "oldMinAmountToConvert",
117
+ "type": "uint256"
118
+ },
119
+ {
120
+ "indexed": false,
121
+ "internalType": "uint256",
122
+ "name": "newMinAmountToConvert",
123
+ "type": "uint256"
124
+ }
125
+ ],
126
+ "name": "MinAmountToConvertUpdated",
127
+ "type": "event"
128
+ },
129
+ {
130
+ "anonymous": false,
131
+ "inputs": [
132
+ {
133
+ "indexed": false,
134
+ "internalType": "address",
135
+ "name": "oldAccessControlManager",
136
+ "type": "address"
137
+ },
138
+ {
139
+ "indexed": false,
140
+ "internalType": "address",
141
+ "name": "newAccessControlManager",
142
+ "type": "address"
143
+ }
144
+ ],
145
+ "name": "NewAccessControlManager",
146
+ "type": "event"
147
+ },
148
+ {
149
+ "anonymous": false,
150
+ "inputs": [
151
+ {
152
+ "indexed": true,
153
+ "internalType": "address",
154
+ "name": "previousOwner",
155
+ "type": "address"
156
+ },
157
+ {
158
+ "indexed": true,
159
+ "internalType": "address",
160
+ "name": "newOwner",
161
+ "type": "address"
162
+ }
163
+ ],
164
+ "name": "OwnershipTransferStarted",
165
+ "type": "event"
166
+ },
167
+ {
168
+ "anonymous": false,
169
+ "inputs": [
170
+ {
171
+ "indexed": true,
172
+ "internalType": "address",
173
+ "name": "previousOwner",
174
+ "type": "address"
175
+ },
176
+ {
177
+ "indexed": true,
178
+ "internalType": "address",
179
+ "name": "newOwner",
180
+ "type": "address"
181
+ }
182
+ ],
183
+ "name": "OwnershipTransferred",
184
+ "type": "event"
185
+ },
186
+ {
187
+ "anonymous": false,
188
+ "inputs": [
189
+ {
190
+ "indexed": true,
191
+ "internalType": "address",
192
+ "name": "oldPancakeSwapRouter",
193
+ "type": "address"
194
+ },
195
+ {
196
+ "indexed": true,
197
+ "internalType": "address",
198
+ "name": "newPancakeSwapRouter",
199
+ "type": "address"
200
+ }
201
+ ],
202
+ "name": "PancakeSwapRouterUpdated",
203
+ "type": "event"
204
+ },
205
+ {
206
+ "anonymous": false,
207
+ "inputs": [
208
+ {
209
+ "indexed": true,
210
+ "internalType": "address",
211
+ "name": "oldPoolRegistry",
212
+ "type": "address"
213
+ },
214
+ {
215
+ "indexed": true,
216
+ "internalType": "address",
217
+ "name": "newPoolRegistry",
218
+ "type": "address"
219
+ }
220
+ ],
221
+ "name": "PoolRegistryUpdated",
222
+ "type": "event"
223
+ },
224
+ {
225
+ "anonymous": false,
226
+ "inputs": [
227
+ {
228
+ "indexed": true,
229
+ "internalType": "address",
230
+ "name": "oldShortfallContract",
231
+ "type": "address"
232
+ },
233
+ {
234
+ "indexed": true,
235
+ "internalType": "address",
236
+ "name": "newShortfallContract",
237
+ "type": "address"
238
+ }
239
+ ],
240
+ "name": "ShortfallContractUpdated",
241
+ "type": "event"
242
+ },
243
+ {
244
+ "anonymous": false,
245
+ "inputs": [
246
+ {
247
+ "indexed": false,
248
+ "internalType": "address[]",
249
+ "name": "markets",
250
+ "type": "address[]"
251
+ },
252
+ {
253
+ "indexed": false,
254
+ "internalType": "uint256[]",
255
+ "name": "amountsOutMin",
256
+ "type": "uint256[]"
257
+ },
258
+ {
259
+ "indexed": false,
260
+ "internalType": "uint256",
261
+ "name": "totalAmount",
262
+ "type": "uint256"
263
+ }
264
+ ],
265
+ "name": "SwappedPoolsAssets",
266
+ "type": "event"
267
+ },
268
+ {
269
+ "anonymous": false,
270
+ "inputs": [
271
+ {
272
+ "indexed": true,
273
+ "internalType": "address",
274
+ "name": "comptroller",
275
+ "type": "address"
276
+ },
277
+ {
278
+ "indexed": false,
279
+ "internalType": "uint256",
280
+ "name": "amount",
281
+ "type": "uint256"
282
+ }
283
+ ],
284
+ "name": "TransferredReserveForAuction",
285
+ "type": "event"
286
+ },
287
+ {
288
+ "inputs": [],
289
+ "name": "acceptOwnership",
290
+ "outputs": [],
291
+ "stateMutability": "nonpayable",
292
+ "type": "function"
293
+ },
294
+ {
295
+ "inputs": [],
296
+ "name": "accessControlManager",
297
+ "outputs": [
298
+ {
299
+ "internalType": "contract IAccessControlManagerV8",
300
+ "name": "",
301
+ "type": "address"
302
+ }
303
+ ],
304
+ "stateMutability": "view",
305
+ "type": "function"
306
+ },
307
+ {
308
+ "inputs": [
309
+ {
310
+ "internalType": "address",
311
+ "name": "comptroller",
312
+ "type": "address"
313
+ },
314
+ {
315
+ "internalType": "address",
316
+ "name": "asset",
317
+ "type": "address"
318
+ }
319
+ ],
320
+ "name": "getPoolAssetReserve",
321
+ "outputs": [
322
+ {
323
+ "internalType": "uint256",
324
+ "name": "",
325
+ "type": "uint256"
326
+ }
327
+ ],
328
+ "stateMutability": "view",
329
+ "type": "function"
330
+ },
331
+ {
332
+ "inputs": [
333
+ {
334
+ "internalType": "address",
335
+ "name": "pancakeSwapRouter_",
336
+ "type": "address"
337
+ },
338
+ {
339
+ "internalType": "uint256",
340
+ "name": "minAmountToConvert_",
341
+ "type": "uint256"
342
+ },
343
+ {
344
+ "internalType": "address",
345
+ "name": "convertibleBaseAsset_",
346
+ "type": "address"
347
+ },
348
+ {
349
+ "internalType": "address",
350
+ "name": "accessControlManager_",
351
+ "type": "address"
352
+ },
353
+ {
354
+ "internalType": "uint256",
355
+ "name": "loopsLimit_",
356
+ "type": "uint256"
357
+ }
358
+ ],
359
+ "name": "initialize",
360
+ "outputs": [],
361
+ "stateMutability": "nonpayable",
362
+ "type": "function"
363
+ },
364
+ {
365
+ "inputs": [],
366
+ "name": "maxLoopsLimit",
367
+ "outputs": [
368
+ {
369
+ "internalType": "uint256",
370
+ "name": "",
371
+ "type": "uint256"
372
+ }
373
+ ],
374
+ "stateMutability": "view",
375
+ "type": "function"
376
+ },
377
+ {
378
+ "inputs": [],
379
+ "name": "owner",
380
+ "outputs": [
381
+ {
382
+ "internalType": "address",
383
+ "name": "",
384
+ "type": "address"
385
+ }
386
+ ],
387
+ "stateMutability": "view",
388
+ "type": "function"
389
+ },
390
+ {
391
+ "inputs": [],
392
+ "name": "pendingOwner",
393
+ "outputs": [
394
+ {
395
+ "internalType": "address",
396
+ "name": "",
397
+ "type": "address"
398
+ }
399
+ ],
400
+ "stateMutability": "view",
401
+ "type": "function"
402
+ },
403
+ {
404
+ "inputs": [
405
+ {
406
+ "internalType": "address",
407
+ "name": "",
408
+ "type": "address"
409
+ }
410
+ ],
411
+ "name": "poolReserves",
412
+ "outputs": [
413
+ {
414
+ "internalType": "uint256",
415
+ "name": "",
416
+ "type": "uint256"
417
+ }
418
+ ],
419
+ "stateMutability": "view",
420
+ "type": "function"
421
+ },
422
+ {
423
+ "inputs": [],
424
+ "name": "renounceOwnership",
425
+ "outputs": [],
426
+ "stateMutability": "nonpayable",
427
+ "type": "function"
428
+ },
429
+ {
430
+ "inputs": [
431
+ {
432
+ "internalType": "address",
433
+ "name": "accessControlManager_",
434
+ "type": "address"
435
+ }
436
+ ],
437
+ "name": "setAccessControlManager",
438
+ "outputs": [],
439
+ "stateMutability": "nonpayable",
440
+ "type": "function"
441
+ },
442
+ {
443
+ "inputs": [
444
+ {
445
+ "internalType": "uint256",
446
+ "name": "limit",
447
+ "type": "uint256"
448
+ }
449
+ ],
450
+ "name": "setMaxLoopsLimit",
451
+ "outputs": [],
452
+ "stateMutability": "nonpayable",
453
+ "type": "function"
454
+ },
455
+ {
456
+ "inputs": [
457
+ {
458
+ "internalType": "uint256",
459
+ "name": "minAmountToConvert_",
460
+ "type": "uint256"
461
+ }
462
+ ],
463
+ "name": "setMinAmountToConvert",
464
+ "outputs": [],
465
+ "stateMutability": "nonpayable",
466
+ "type": "function"
467
+ },
468
+ {
469
+ "inputs": [
470
+ {
471
+ "internalType": "address",
472
+ "name": "pancakeSwapRouter_",
473
+ "type": "address"
474
+ }
475
+ ],
476
+ "name": "setPancakeSwapRouter",
477
+ "outputs": [],
478
+ "stateMutability": "nonpayable",
479
+ "type": "function"
480
+ },
481
+ {
482
+ "inputs": [
483
+ {
484
+ "internalType": "address",
485
+ "name": "poolRegistry_",
486
+ "type": "address"
487
+ }
488
+ ],
489
+ "name": "setPoolRegistry",
490
+ "outputs": [],
491
+ "stateMutability": "nonpayable",
492
+ "type": "function"
493
+ },
494
+ {
495
+ "inputs": [
496
+ {
497
+ "internalType": "address",
498
+ "name": "shortfallContractAddress_",
499
+ "type": "address"
500
+ }
501
+ ],
502
+ "name": "setShortfallContractAddress",
503
+ "outputs": [],
504
+ "stateMutability": "nonpayable",
505
+ "type": "function"
506
+ },
507
+ {
508
+ "inputs": [
509
+ {
510
+ "internalType": "address[]",
511
+ "name": "markets",
512
+ "type": "address[]"
513
+ },
514
+ {
515
+ "internalType": "uint256[]",
516
+ "name": "amountsOutMin",
517
+ "type": "uint256[]"
518
+ },
519
+ {
520
+ "internalType": "address[][]",
521
+ "name": "paths",
522
+ "type": "address[][]"
523
+ }
524
+ ],
525
+ "name": "swapPoolsAssets",
526
+ "outputs": [
527
+ {
528
+ "internalType": "uint256",
529
+ "name": "",
530
+ "type": "uint256"
531
+ }
532
+ ],
533
+ "stateMutability": "nonpayable",
534
+ "type": "function"
535
+ },
536
+ {
537
+ "inputs": [
538
+ {
539
+ "internalType": "address",
540
+ "name": "newOwner",
541
+ "type": "address"
542
+ }
543
+ ],
544
+ "name": "transferOwnership",
545
+ "outputs": [],
546
+ "stateMutability": "nonpayable",
547
+ "type": "function"
548
+ },
549
+ {
550
+ "inputs": [
551
+ {
552
+ "internalType": "address",
553
+ "name": "comptroller",
554
+ "type": "address"
555
+ },
556
+ {
557
+ "internalType": "uint256",
558
+ "name": "amount",
559
+ "type": "uint256"
560
+ }
561
+ ],
562
+ "name": "transferReserveForAuction",
563
+ "outputs": [
564
+ {
565
+ "internalType": "uint256",
566
+ "name": "",
567
+ "type": "uint256"
568
+ }
569
+ ],
570
+ "stateMutability": "nonpayable",
571
+ "type": "function"
572
+ },
573
+ {
574
+ "inputs": [
575
+ {
576
+ "internalType": "address",
577
+ "name": "comptroller",
578
+ "type": "address"
579
+ },
580
+ {
581
+ "internalType": "address",
582
+ "name": "asset",
583
+ "type": "address"
584
+ }
585
+ ],
586
+ "name": "updateAssetsState",
587
+ "outputs": [],
588
+ "stateMutability": "nonpayable",
589
+ "type": "function"
590
+ }
591
+ ],
592
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b62000111565b600054610100900460ff1615620000565760405162461bcd60e51b81526004016200004d90620000af565b60405180910390fd5b60005460ff90811614620000ad576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249891620000a49162000101565b60405180910390a15b565b60208082528101620000fb81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b92915050565b60ff8216815260208101620000fb565b612cf680620001216000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637b77cd6a116100ad578063be26317e11610071578063be26317e1461023f578063d2d8703414610248578063e30c39781461025b578063f2fde38b1461026c578063f481395b1461027f57600080fd5b80637b77cd6a146101d357806380d45a2d146101e65780638da5cb5b146101f9578063aac59a7514610213578063b4a0bdf31461022657600080fd5b80636fb05275116100f45780636fb052751461018a578063715018a61461019d578063746460a9146101a557806377d4937f146101b857806379ba5097146101cb57600080fd5b80630a9837c5146101265780630e32cb861461014f5780632a1d0547146101645780634dd9584a14610177575b600080fd5b610139610134366004611a0e565b6102a0565b6040516101469190611a53565b60405180910390f35b61016261015d366004611a61565b61038e565b005b610162610172366004611a82565b6103a2565b610162610185366004611a61565b610512565b610139610198366004611afa565b610576565b61016261062a565b6101626101b3366004611b2d565b61063e565b6101626101c6366004611a61565b6106e3565b6101626107e0565b6101626101e1366004611a61565b610815565b6101626101f4366004611b2d565b610878565b6033546001600160a01b03165b6040516101469190611b57565b610162610221366004611afa565b610889565b6097546001600160a01b03166040516101469190611ba7565b61013960fc5481565b610139610256366004611c07565b610897565b6065546001600160a01b0316610206565b61016261027a366004611a61565b610be3565b61013961028d366004611a61565b6101326020526000908152604090205481565b610131546000906001600160a01b03163381146102d85760405162461bcd60e51b81526004016102cf90611d02565b60405180910390fd5b6001600160a01b038416600090815261013260205260409020548311156103115760405162461bcd60e51b81526004016102cf90611d54565b6001600160a01b03808516600090815261013260205260409020805485900390556101305461034291168285610c54565b836001600160a01b03167fc8d0a37ed16dfaa43514df00e18f478b60d5cc7b4bfc687103948b9020f737fd8460405161037b9190611a53565b60405180910390a2829150505b92915050565b610396610caf565b61039f81610cd9565b50565b600054610100900460ff16158080156103c25750600054600160ff909116105b806103dc5750303b1580156103dc575060005460ff166001145b6103f85760405162461bcd60e51b81526004016102cf90611daf565b6000805460ff19166001179055801561041b576000805461ff0019166101001790555b61042486610d52565b61042d84610d52565b6000851161044d5760405162461bcd60e51b81526004016102cf90611e04565b6000821161046d5760405162461bcd60e51b81526004016102cf90611e57565b610475610d79565b61047e83610da8565b61012e80546001600160a01b038089166001600160a01b03199283161790925561012f8790556101308054928716929091169190911790556104bf82610dcf565b801561050a576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061050190600190611e7b565b60405180910390a15b505050505050565b61051a610caf565b61052381610d52565b61012e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fd37b9d138f53ea58d7e50292588239a46efa8f523966febf4066da96defc77fd90600090a35050565b600061058182610d52565b826001600160a01b0316627e3dd26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e29190611e9c565b6105fe5760405162461bcd60e51b81526004016102cf90611f05565b506001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b610632610caf565b61063c6000610e2a565b565b61067c6040518060400160405280601e81526020017f7365744d696e416d6f756e74546f436f6e766572742875696e74323536290000815250610e43565b6000811161069c5760405162461bcd60e51b81526004016102cf90611e04565b61012f8054908290556040517fada67d0d38fa20c8ae6a5c17cb9d60b0fe7f2d4e4f27ac9ee55e54ac88de9d8d906106d79083908590611f15565b60405180910390a15050565b6106eb610caf565b6106f481610d52565b610130546040805163c8ecc0d360e01b815290516001600160a01b039283169284169163c8ecc0d391600480830192602092919082900301816000875af1158015610743573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107679190611f3b565b6001600160a01b03161461078d5760405162461bcd60e51b81526004016102cf90611f9c565b61013180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fb6e5fcf02f7fbb8acfbaa3bac4fd5abf9ff51e3f2e8884b5498927179b211b2890600090a35050565b60655433906001600160a01b0316811461080c5760405162461bcd60e51b81526004016102cf90611ff2565b61039f81610e2a565b61081d610caf565b61082681610d52565b60cb80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fa87b964d321035d2165e484ff4b722dd6eae30606c0b98887d2ed1a34e594bfe90600090a35050565b610880610caf565b61039f81610dcf565b6108938282610edd565b5050565b60006108ba604051806060016040528060308152602001612c9160309139610e43565b60cb546001600160a01b03166108cf81610d52565b8685146108ee5760405162461bcd60e51b81526004016102cf9061205c565b86831461090d5760405162461bcd60e51b81526004016102cf906120b9565b6000876109198161117b565b60005b81811015610b945760008b8b83818110610938576109386120c9565b905060200201602081019061094d9190611a61565b90506000816001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561098f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b391906120fe565b90506000866001600160a01b0316637aee632d836040518263ffffffff1660e01b81526004016109e39190611b57565b600060405180830381865afa158015610a00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a2891908101906122ea565b9050816001600160a01b031681604001516001600160a01b031614610a5f5760405162461bcd60e51b81526004016102cf90612369565b604051633d98a1e560e01b81526001600160a01b03831690633d98a1e590610a8b908690600401611ba7565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc9190611e9c565b610ae85760405162461bcd60e51b81526004016102cf906123a7565b6000610b3184848f8f89818110610b0157610b016120c9565b905060200201358e8e8a818110610b1a57610b1a6120c9565b9050602002810190610b2c91906123b7565b6111a4565b6001600160a01b03841660009081526101326020526040902054909150610b5990829061242a565b6001600160a01b03841660009081526101326020526040902055610b7d818861242a565b96505050505080610b8d90612442565b905061091c565b507fb17530966b045b50d4975e7f05048ca00d7335780c24f1c465165a4b94b2d37d8a8a8a8a86604051610bcc95949392919061250c565b60405180910390a1509150505b9695505050505050565b610beb610caf565b606580546001600160a01b0383166001600160a01b03199091168117909155610c1c6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610caa8363a9059cbb60e01b8484604051602401610c73929190612542565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611721565b505050565b6033546001600160a01b0316331461063c5760405162461bcd60e51b81526004016102cf90612582565b6001600160a01b038116610cff5760405162461bcd60e51b81526004016102cf906125d4565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906106d790839085906125e4565b6001600160a01b03811661039f576040516342bcdf7f60e11b815260040160405180910390fd5b600054610100900460ff16610da05760405162461bcd60e51b81526004016102cf90612647565b61063c6117b3565b600054610100900460ff166103965760405162461bcd60e51b81526004016102cf90612647565b60fc548111610df05760405162461bcd60e51b81526004016102cf90612696565b60fc8054908290556040517fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa906106d79083908590611f15565b606580546001600160a01b031916905561039f816117e3565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab90610e7690339086906004016126d8565b602060405180830381865afa158015610e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb79190611e9c565b90508061089357333083604051634a3fa29360e01b81526004016102cf939291906126f8565b610ee681610d52565b816001600160a01b0316627e3dd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f479190611e9c565b610f635760405162461bcd60e51b81526004016102cf90611f05565b60cb546001600160a01b031680610f8c5760405162461bcd60e51b81526004016102cf9061277b565b60405163266e0a7f60e01b81526000906001600160a01b0383169063266e0a7f90610fbd90879087906004016125e4565b602060405180830381865afa158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffe9190611f3b565b6001600160a01b0316036110245760405162461bcd60e51b81526004016102cf906127da565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190611053903090600401611b57565b602060405180830381865afa158015611070573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109491906127ea565b6001600160a01b038416600090815260c9602052604090205490915080821115611174576001600160a01b038416600090815260c9602052604081208054838503928392916110e490849061242a565b90915550506001600160a01b03808716600090815260ca602090815260408083209389168352929052908120805483929061112090849061242a565b92505081905550846001600160a01b0316866001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce388360405161116a9190611a53565b60405180910390a3505b5050505050565b60fc5481111561039f5760fc548160405163792bfb1b60e11b81526004016102cf929190611f15565b6000836000036111c65760405162461bcd60e51b81526004016102cf90612865565b61012f548410156111e95760405162461bcd60e51b81526004016102cf906128cf565b600080876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e9190611f3b565b610130546001600160a01b03898116600081815260ca6020908152604080832085881684528252918290205482516307dc0d1d60e41b81529251969750939094169492939192637dc0d1d0926004808401939192918290030181865afa1580156112bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e091906120fe565b6001600160a01b03166396e85ced8b6040518263ffffffff1660e01b815260040161130b9190611b57565b600060405180830381600087803b15801561132557600080fd5b505af1158015611339573d6000803e3d6000fd5b505050506000896001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a191906120fe565b6001600160a01b031663fc57d4df8c6040518263ffffffff1660e01b81526004016113cc9190611b57565b602060405180830381865afa1580156113e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140d91906127ea565b90508115611712576040805160208101909152818152600061142f8285611835565b905061012f54811061170f576001600160a01b038616600090815260c96020526040812080548692906114639084906128df565b90915550506001600160a01b03808d16600090815260ca60209081526040808320938a168352929052908120805486929061149f9084906128df565b90915550506001600160a01b038681169086161461170b57856001600160a01b03168a8a60008181106114d4576114d46120c9565b90506020020160208101906114e99190611a61565b6001600160a01b03161461150f5760405162461bcd60e51b81526004016102cf90612950565b6001600160a01b0385168a8a6115266001826128df565b818110611535576115356120c9565b905060200201602081019061154a9190611a61565b6001600160a01b0316146115705760405162461bcd60e51b81526004016102cf906129b2565b61012e5460405163095ea7b360e01b81526001600160a01b039182169188169063095ea7b3906115a79084906000906004016129d7565b6020604051808303816000875af11580156115c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ea9190611e9c565b5060405163095ea7b360e01b81526001600160a01b0388169063095ea7b3906116199084908990600401612542565b6020604051808303816000875af1158015611638573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165c9190611e9c565b506000816001600160a01b03166338ed1739878f8f8f30426040518763ffffffff1660e01b8152600401611695969594939291906129f2565b6000604051808303816000875af11580156116b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116dc9190810190612adf565b9050806116ea60018d6128df565b815181106116fa576116fa6120c9565b60200260200101519850505061170f565b8396505b50505b50929998505050505050505050565b6000611776826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166118559092919063ffffffff16565b90508051600014806117975750808060200190518101906117979190611e9c565b610caa5760405162461bcd60e51b81526004016102cf90612b61565b600054610100900460ff166117da5760405162461bcd60e51b81526004016102cf90612647565b61063c33610e2a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080611842848461186e565b905061184d8161189f565b949350505050565b606061186484846000856118b7565b90505b9392505050565b6040805160208101909152600081526040518060200160405280611896856000015185611953565b90529392505050565b805160009061038890670de0b6b3a764000090612b87565b6060824710156118d95760405162461bcd60e51b81526004016102cf90612bde565b600080866001600160a01b031685876040516118f59190612c10565b60006040518083038185875af1925050503d8060008114611932576040519150601f19603f3d011682016040523d82523d6000602084013e611937565b606091505b50915091506119488783838761195f565b979650505050505050565b60006118678284612c1c565b6060831561199e578251600003611997576001600160a01b0385163b6119975760405162461bcd60e51b81526004016102cf90612c6f565b508161184d565b61184d83838151156119b35781518083602001fd5b8060405162461bcd60e51b81526004016102cf9190612c7f565b60006001600160a01b038216610388565b6119e7816119cd565b811461039f57600080fd5b8035610388816119de565b806119e7565b8035610388816119fd565b60008060408385031215611a2457611a24600080fd5b6000611a3085856119f2565b9250506020611a4185828601611a03565b9150509250929050565b805b82525050565b602081016103888284611a4b565b600060208284031215611a7657611a76600080fd5b600061184d84846119f2565b600080600080600060a08688031215611a9d57611a9d600080fd5b6000611aa988886119f2565b9550506020611aba88828901611a03565b9450506040611acb888289016119f2565b9350506060611adc888289016119f2565b9250506080611aed88828901611a03565b9150509295509295909350565b60008060408385031215611b1057611b10600080fd5b6000611b1c85856119f2565b9250506020611a41858286016119f2565b600060208284031215611b4257611b42600080fd5b600061184d8484611a03565b611a4d816119cd565b602081016103888284611b4e565b60006103886001600160a01b038316611b7c565b90565b6001600160a01b031690565b600061038882611b65565b600061038882611b88565b611a4d81611b93565b602081016103888284611b9e565b60008083601f840112611bca57611bca600080fd5b50813567ffffffffffffffff811115611be557611be5600080fd5b602083019150836020820283011115611c0057611c00600080fd5b9250929050565b60008060008060008060608789031215611c2357611c23600080fd5b863567ffffffffffffffff811115611c3d57611c3d600080fd5b611c4989828a01611bb5565b9650965050602087013567ffffffffffffffff811115611c6b57611c6b600080fd5b611c7789828a01611bb5565b9450945050604087013567ffffffffffffffff811115611c9957611c99600080fd5b611ca589828a01611bb5565b92509250509295509295509295565b602e81526000602082017f5269736b2066756e643a204f6e6c792063616c6c61626c652062792053686f7281526d1d19985b1b0818dbdb9d1c9858dd60921b602082015291505b5060400190565b6020808252810161038881611cb4565b602581526000602082017f5269736b2046756e643a20496e73756666696369656e7420706f6f6c2072657381526432b93b329760d91b60208201529150611cfb565b6020808252810161038881611d12565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150611cfb565b6020808252810161038881611d64565b602881526000602082017f5269736b2046756e643a20496e76616c6964206d696e20616d6f756e7420746f8152670818dbdb9d995c9d60c21b60208201529150611cfb565b6020808252810161038881611dbf565b602681526000602082017f5269736b2046756e643a204c6f6f7073206c696d69742063616e206e6f74206281526565207a65726f60d01b60208201529150611cfb565b6020808252810161038881611e14565b600060ff8216610388565b611a4d81611e67565b602081016103888284611e72565b8015156119e7565b805161038881611e89565b600060208284031215611eb157611eb1600080fd5b600061184d8484611e91565b602b81526000602082017f5265736572766548656c706572733a20436f6d7074726f6c6c6572206164647281526a195cdcc81a5b9d985b1a5960aa1b60208201529150611cfb565b6020808252810161038881611ebd565b60408101611f238285611a4b565b6118676020830184611a4b565b8051610388816119de565b600060208284031215611f5057611f50600080fd5b600061184d8484611f30565b602381526000602082017f5269736b2046756e643a204261736520617373657420646f65736e2774206d618152620e8c6d60eb1b60208201529150611cfb565b6020808252810161038881611f5c565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150611cfb565b6020808252810161038881611fac565b603881526000602082017f5269736b2066756e643a206d61726b65747320616e6420616d6f756e74734f7581527f744d696e2061726520756e657175616c206c656e67746873000000000000000060208201529150611cfb565b6020808252810161038881612002565b603081526000602082017f5269736b2066756e643a206d61726b65747320616e642070617468732061726581526f20756e657175616c206c656e6774687360801b60208201529150611cfb565b602080825281016103888161206c565b634e487b7160e01b600052603260045260246000fd5b6000610388826119cd565b6119e7816120df565b8051610388816120ea565b60006020828403121561211357612113600080fd5b600061184d84846120f3565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff8211171561215b5761215b61211f565b6040525050565b600061216d60405190565b90506121798282612135565b919050565b600067ffffffffffffffff8211156121985761219861211f565b601f19601f83011660200192915050565b60005b838110156121c45781810151838201526020016121ac565b838111156121d3576000848401525b50505050565b60006121ec6121e78461217e565b612162565b90508281526020810184848401111561220757612207600080fd5b6122128482856121a9565b509392505050565b600082601f83011261222e5761222e600080fd5b815161184d8482602086016121d9565b8051610388816119fd565b600060a0828403121561225e5761225e600080fd5b61226860a0612162565b825190915067ffffffffffffffff81111561228557612285600080fd5b6122918482850161221a565b82525060206122a284848301611f30565b60208301525060406122b684828501611f30565b60408301525060606122ca8482850161223e565b60608301525060806122de8482850161223e565b60808301525092915050565b6000602082840312156122ff576122ff600080fd5b815167ffffffffffffffff81111561231957612319600080fd5b61184d84828501612249565b602781526000602082017f636f6d7074726f6c6c657220646f65736e277420657869737420706f6f6c20728152666567697374727960c81b60208201529150611cfb565b6020808252810161038881612325565b60148152600060208201731b585c9ad95d081a5cc81b9bdd081b1a5cdd195960621b815291505b5060200190565b6020808252810161038881612379565b6000808335601e19368590030181126123d2576123d2600080fd5b80840192508235915067ffffffffffffffff8211156123f3576123f3600080fd5b6020928301928202360383131561240c5761240c600080fd5b509250929050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561243d5761243d612414565b500190565b6000600019820361245557612455612414565b5060010190565b60006124688383611b4e565b505060200190565b600061186760208401846119f2565b8183526000602084019350818060005b858110156124bc576124a18284612470565b6124ab888261245c565b97506020830192505060010161248f565b509495945050505050565b82818337506000910152565b81835260006020840193506001600160fb1b038311156124f5576124f5600080fd5b6020830292506125068385846124c7565b50500190565b6060808252810161251e81878961247f565b905081810360208301526125338185876124d3565b9050610bd96040830184611a4b565b60408101611f238285611b4e565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006123a0565b6020808252810161038881612550565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150611cfb565b6020808252810161038881612592565b604081016125f28285611b4e565b6118676020830184611b4e565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150611cfb565b60208082528101610388816125ff565b602281526000602082017f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d8152611a5d60f21b60208201529150611cfb565b6020808252810161038881612657565b60006126b0825190565b8084526020840193506126c78185602086016121a9565b601f01601f19169290920192915050565b604081016126e68285611b4e565b818103602083015261186481846126a6565b606081016127068286611b4e565b6127136020830185611b4e565b818103604083015261272581846126a6565b95945050505050565b603081526000602082017f5265736572766548656c706572733a20506f6f6c20526567697374727920616481526f191c995cdcc81a5cc81b9bdd081cd95d60821b60208201529150611cfb565b602080825281016103888161272e565b603281526000602082017f5265736572766548656c706572733a2054686520706f6f6c20646f65736e2774815271081cdd5c1c1bdc9d081d1a1948185cdcd95d60721b60208201529150611cfb565b602080825281016103888161278b565b6000602082840312156127ff576127ff600080fd5b600061184d848461223e565b603c81526000602082017f5269736b46756e643a20616d6f756e744f75744d696e206d757374206265206781527f726561746572207468616e203020746f20737761702076546f6b656e0000000060208201529150611cfb565b602080825281016103888161280b565b604081526000602082017f5269736b46756e643a20616d6f756e744f75744d696e2073686f756c6420626581527f2067726561746572207468616e206d696e416d6f756e74546f436f6e7665727460208201529150611cfb565b6020808252810161038881612875565b6000828210156128f1576128f1612414565b500390565b603881526000602082017f5269736b46756e643a20737761702070617468206d757374207374617274207781527f6974682074686520756e6465726c79696e67206173736574000000000000000060208201529150611cfb565b60208082528101610388816128f6565b603581526000602082017f5269736b46756e643a2066696e616c6c792070617468206d75737420626520638152741bdb9d995c9d1a589b194818985cd948185cdcd95d605a1b60208201529150611cfb565b6020808252810161038881612960565b6000610388611b798381565b611a4d816129c2565b604081016129e58285611b4e565b61186760208301846129ce565b60a08101612a008289611a4b565b612a0d6020830188611a4b565b8181036040830152612a2081868861247f565b9050612a2f6060830185611b4e565b6119486080830184611a4b565b600067ffffffffffffffff821115612a5657612a5661211f565b5060209081020190565b6000612a6e6121e784612a3c565b83815290506020808201908402830185811115612a8d57612a8d600080fd5b835b81811015612ab15780612aa2888261223e565b84525060209283019201612a8f565b5050509392505050565b600082601f830112612acf57612acf600080fd5b815161184d848260208601612a60565b600060208284031215612af457612af4600080fd5b815167ffffffffffffffff811115612b0e57612b0e600080fd5b61184d84828501612abb565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b60208201529150611cfb565b6020808252810161038881612b1a565b634e487b7160e01b600052601260045260246000fd5b600082612b9657612b96612b71565b500490565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b60208201529150611cfb565b6020808252810161038881612b9b565b6000612bf8825190565b612c068185602086016121a9565b9290920192915050565b60006118678284612bee565b6000816000190483118215151615612c3657612c36612414565b500290565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000815291506123a0565b6020808252810161038881612c3b565b6020808252810161186781846126a656fe73776170506f6f6c7341737365747328616464726573735b5d2c75696e743235365b5d2c616464726573735b5d5b5d29a2646970667358221220769afe7571fb7c984c04c918afbd142f3dafd727eca7943751f89b4e89e6d87a64736f6c634300080d0033",
593
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c80637b77cd6a116100ad578063be26317e11610071578063be26317e1461023f578063d2d8703414610248578063e30c39781461025b578063f2fde38b1461026c578063f481395b1461027f57600080fd5b80637b77cd6a146101d357806380d45a2d146101e65780638da5cb5b146101f9578063aac59a7514610213578063b4a0bdf31461022657600080fd5b80636fb05275116100f45780636fb052751461018a578063715018a61461019d578063746460a9146101a557806377d4937f146101b857806379ba5097146101cb57600080fd5b80630a9837c5146101265780630e32cb861461014f5780632a1d0547146101645780634dd9584a14610177575b600080fd5b610139610134366004611a0e565b6102a0565b6040516101469190611a53565b60405180910390f35b61016261015d366004611a61565b61038e565b005b610162610172366004611a82565b6103a2565b610162610185366004611a61565b610512565b610139610198366004611afa565b610576565b61016261062a565b6101626101b3366004611b2d565b61063e565b6101626101c6366004611a61565b6106e3565b6101626107e0565b6101626101e1366004611a61565b610815565b6101626101f4366004611b2d565b610878565b6033546001600160a01b03165b6040516101469190611b57565b610162610221366004611afa565b610889565b6097546001600160a01b03166040516101469190611ba7565b61013960fc5481565b610139610256366004611c07565b610897565b6065546001600160a01b0316610206565b61016261027a366004611a61565b610be3565b61013961028d366004611a61565b6101326020526000908152604090205481565b610131546000906001600160a01b03163381146102d85760405162461bcd60e51b81526004016102cf90611d02565b60405180910390fd5b6001600160a01b038416600090815261013260205260409020548311156103115760405162461bcd60e51b81526004016102cf90611d54565b6001600160a01b03808516600090815261013260205260409020805485900390556101305461034291168285610c54565b836001600160a01b03167fc8d0a37ed16dfaa43514df00e18f478b60d5cc7b4bfc687103948b9020f737fd8460405161037b9190611a53565b60405180910390a2829150505b92915050565b610396610caf565b61039f81610cd9565b50565b600054610100900460ff16158080156103c25750600054600160ff909116105b806103dc5750303b1580156103dc575060005460ff166001145b6103f85760405162461bcd60e51b81526004016102cf90611daf565b6000805460ff19166001179055801561041b576000805461ff0019166101001790555b61042486610d52565b61042d84610d52565b6000851161044d5760405162461bcd60e51b81526004016102cf90611e04565b6000821161046d5760405162461bcd60e51b81526004016102cf90611e57565b610475610d79565b61047e83610da8565b61012e80546001600160a01b038089166001600160a01b03199283161790925561012f8790556101308054928716929091169190911790556104bf82610dcf565b801561050a576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061050190600190611e7b565b60405180910390a15b505050505050565b61051a610caf565b61052381610d52565b61012e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fd37b9d138f53ea58d7e50292588239a46efa8f523966febf4066da96defc77fd90600090a35050565b600061058182610d52565b826001600160a01b0316627e3dd26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e29190611e9c565b6105fe5760405162461bcd60e51b81526004016102cf90611f05565b506001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b610632610caf565b61063c6000610e2a565b565b61067c6040518060400160405280601e81526020017f7365744d696e416d6f756e74546f436f6e766572742875696e74323536290000815250610e43565b6000811161069c5760405162461bcd60e51b81526004016102cf90611e04565b61012f8054908290556040517fada67d0d38fa20c8ae6a5c17cb9d60b0fe7f2d4e4f27ac9ee55e54ac88de9d8d906106d79083908590611f15565b60405180910390a15050565b6106eb610caf565b6106f481610d52565b610130546040805163c8ecc0d360e01b815290516001600160a01b039283169284169163c8ecc0d391600480830192602092919082900301816000875af1158015610743573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107679190611f3b565b6001600160a01b03161461078d5760405162461bcd60e51b81526004016102cf90611f9c565b61013180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fb6e5fcf02f7fbb8acfbaa3bac4fd5abf9ff51e3f2e8884b5498927179b211b2890600090a35050565b60655433906001600160a01b0316811461080c5760405162461bcd60e51b81526004016102cf90611ff2565b61039f81610e2a565b61081d610caf565b61082681610d52565b60cb80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fa87b964d321035d2165e484ff4b722dd6eae30606c0b98887d2ed1a34e594bfe90600090a35050565b610880610caf565b61039f81610dcf565b6108938282610edd565b5050565b60006108ba604051806060016040528060308152602001612c9160309139610e43565b60cb546001600160a01b03166108cf81610d52565b8685146108ee5760405162461bcd60e51b81526004016102cf9061205c565b86831461090d5760405162461bcd60e51b81526004016102cf906120b9565b6000876109198161117b565b60005b81811015610b945760008b8b83818110610938576109386120c9565b905060200201602081019061094d9190611a61565b90506000816001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561098f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b391906120fe565b90506000866001600160a01b0316637aee632d836040518263ffffffff1660e01b81526004016109e39190611b57565b600060405180830381865afa158015610a00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a2891908101906122ea565b9050816001600160a01b031681604001516001600160a01b031614610a5f5760405162461bcd60e51b81526004016102cf90612369565b604051633d98a1e560e01b81526001600160a01b03831690633d98a1e590610a8b908690600401611ba7565b602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc9190611e9c565b610ae85760405162461bcd60e51b81526004016102cf906123a7565b6000610b3184848f8f89818110610b0157610b016120c9565b905060200201358e8e8a818110610b1a57610b1a6120c9565b9050602002810190610b2c91906123b7565b6111a4565b6001600160a01b03841660009081526101326020526040902054909150610b5990829061242a565b6001600160a01b03841660009081526101326020526040902055610b7d818861242a565b96505050505080610b8d90612442565b905061091c565b507fb17530966b045b50d4975e7f05048ca00d7335780c24f1c465165a4b94b2d37d8a8a8a8a86604051610bcc95949392919061250c565b60405180910390a1509150505b9695505050505050565b610beb610caf565b606580546001600160a01b0383166001600160a01b03199091168117909155610c1c6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610caa8363a9059cbb60e01b8484604051602401610c73929190612542565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611721565b505050565b6033546001600160a01b0316331461063c5760405162461bcd60e51b81526004016102cf90612582565b6001600160a01b038116610cff5760405162461bcd60e51b81526004016102cf906125d4565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906106d790839085906125e4565b6001600160a01b03811661039f576040516342bcdf7f60e11b815260040160405180910390fd5b600054610100900460ff16610da05760405162461bcd60e51b81526004016102cf90612647565b61063c6117b3565b600054610100900460ff166103965760405162461bcd60e51b81526004016102cf90612647565b60fc548111610df05760405162461bcd60e51b81526004016102cf90612696565b60fc8054908290556040517fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa906106d79083908590611f15565b606580546001600160a01b031916905561039f816117e3565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab90610e7690339086906004016126d8565b602060405180830381865afa158015610e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb79190611e9c565b90508061089357333083604051634a3fa29360e01b81526004016102cf939291906126f8565b610ee681610d52565b816001600160a01b0316627e3dd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f479190611e9c565b610f635760405162461bcd60e51b81526004016102cf90611f05565b60cb546001600160a01b031680610f8c5760405162461bcd60e51b81526004016102cf9061277b565b60405163266e0a7f60e01b81526000906001600160a01b0383169063266e0a7f90610fbd90879087906004016125e4565b602060405180830381865afa158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffe9190611f3b565b6001600160a01b0316036110245760405162461bcd60e51b81526004016102cf906127da565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190611053903090600401611b57565b602060405180830381865afa158015611070573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109491906127ea565b6001600160a01b038416600090815260c9602052604090205490915080821115611174576001600160a01b038416600090815260c9602052604081208054838503928392916110e490849061242a565b90915550506001600160a01b03808716600090815260ca602090815260408083209389168352929052908120805483929061112090849061242a565b92505081905550846001600160a01b0316866001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce388360405161116a9190611a53565b60405180910390a3505b5050505050565b60fc5481111561039f5760fc548160405163792bfb1b60e11b81526004016102cf929190611f15565b6000836000036111c65760405162461bcd60e51b81526004016102cf90612865565b61012f548410156111e95760405162461bcd60e51b81526004016102cf906128cf565b600080876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e9190611f3b565b610130546001600160a01b03898116600081815260ca6020908152604080832085881684528252918290205482516307dc0d1d60e41b81529251969750939094169492939192637dc0d1d0926004808401939192918290030181865afa1580156112bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e091906120fe565b6001600160a01b03166396e85ced8b6040518263ffffffff1660e01b815260040161130b9190611b57565b600060405180830381600087803b15801561132557600080fd5b505af1158015611339573d6000803e3d6000fd5b505050506000896001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a191906120fe565b6001600160a01b031663fc57d4df8c6040518263ffffffff1660e01b81526004016113cc9190611b57565b602060405180830381865afa1580156113e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140d91906127ea565b90508115611712576040805160208101909152818152600061142f8285611835565b905061012f54811061170f576001600160a01b038616600090815260c96020526040812080548692906114639084906128df565b90915550506001600160a01b03808d16600090815260ca60209081526040808320938a168352929052908120805486929061149f9084906128df565b90915550506001600160a01b038681169086161461170b57856001600160a01b03168a8a60008181106114d4576114d46120c9565b90506020020160208101906114e99190611a61565b6001600160a01b03161461150f5760405162461bcd60e51b81526004016102cf90612950565b6001600160a01b0385168a8a6115266001826128df565b818110611535576115356120c9565b905060200201602081019061154a9190611a61565b6001600160a01b0316146115705760405162461bcd60e51b81526004016102cf906129b2565b61012e5460405163095ea7b360e01b81526001600160a01b039182169188169063095ea7b3906115a79084906000906004016129d7565b6020604051808303816000875af11580156115c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ea9190611e9c565b5060405163095ea7b360e01b81526001600160a01b0388169063095ea7b3906116199084908990600401612542565b6020604051808303816000875af1158015611638573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165c9190611e9c565b506000816001600160a01b03166338ed1739878f8f8f30426040518763ffffffff1660e01b8152600401611695969594939291906129f2565b6000604051808303816000875af11580156116b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116dc9190810190612adf565b9050806116ea60018d6128df565b815181106116fa576116fa6120c9565b60200260200101519850505061170f565b8396505b50505b50929998505050505050505050565b6000611776826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166118559092919063ffffffff16565b90508051600014806117975750808060200190518101906117979190611e9c565b610caa5760405162461bcd60e51b81526004016102cf90612b61565b600054610100900460ff166117da5760405162461bcd60e51b81526004016102cf90612647565b61063c33610e2a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080611842848461186e565b905061184d8161189f565b949350505050565b606061186484846000856118b7565b90505b9392505050565b6040805160208101909152600081526040518060200160405280611896856000015185611953565b90529392505050565b805160009061038890670de0b6b3a764000090612b87565b6060824710156118d95760405162461bcd60e51b81526004016102cf90612bde565b600080866001600160a01b031685876040516118f59190612c10565b60006040518083038185875af1925050503d8060008114611932576040519150601f19603f3d011682016040523d82523d6000602084013e611937565b606091505b50915091506119488783838761195f565b979650505050505050565b60006118678284612c1c565b6060831561199e578251600003611997576001600160a01b0385163b6119975760405162461bcd60e51b81526004016102cf90612c6f565b508161184d565b61184d83838151156119b35781518083602001fd5b8060405162461bcd60e51b81526004016102cf9190612c7f565b60006001600160a01b038216610388565b6119e7816119cd565b811461039f57600080fd5b8035610388816119de565b806119e7565b8035610388816119fd565b60008060408385031215611a2457611a24600080fd5b6000611a3085856119f2565b9250506020611a4185828601611a03565b9150509250929050565b805b82525050565b602081016103888284611a4b565b600060208284031215611a7657611a76600080fd5b600061184d84846119f2565b600080600080600060a08688031215611a9d57611a9d600080fd5b6000611aa988886119f2565b9550506020611aba88828901611a03565b9450506040611acb888289016119f2565b9350506060611adc888289016119f2565b9250506080611aed88828901611a03565b9150509295509295909350565b60008060408385031215611b1057611b10600080fd5b6000611b1c85856119f2565b9250506020611a41858286016119f2565b600060208284031215611b4257611b42600080fd5b600061184d8484611a03565b611a4d816119cd565b602081016103888284611b4e565b60006103886001600160a01b038316611b7c565b90565b6001600160a01b031690565b600061038882611b65565b600061038882611b88565b611a4d81611b93565b602081016103888284611b9e565b60008083601f840112611bca57611bca600080fd5b50813567ffffffffffffffff811115611be557611be5600080fd5b602083019150836020820283011115611c0057611c00600080fd5b9250929050565b60008060008060008060608789031215611c2357611c23600080fd5b863567ffffffffffffffff811115611c3d57611c3d600080fd5b611c4989828a01611bb5565b9650965050602087013567ffffffffffffffff811115611c6b57611c6b600080fd5b611c7789828a01611bb5565b9450945050604087013567ffffffffffffffff811115611c9957611c99600080fd5b611ca589828a01611bb5565b92509250509295509295509295565b602e81526000602082017f5269736b2066756e643a204f6e6c792063616c6c61626c652062792053686f7281526d1d19985b1b0818dbdb9d1c9858dd60921b602082015291505b5060400190565b6020808252810161038881611cb4565b602581526000602082017f5269736b2046756e643a20496e73756666696369656e7420706f6f6c2072657381526432b93b329760d91b60208201529150611cfb565b6020808252810161038881611d12565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150611cfb565b6020808252810161038881611d64565b602881526000602082017f5269736b2046756e643a20496e76616c6964206d696e20616d6f756e7420746f8152670818dbdb9d995c9d60c21b60208201529150611cfb565b6020808252810161038881611dbf565b602681526000602082017f5269736b2046756e643a204c6f6f7073206c696d69742063616e206e6f74206281526565207a65726f60d01b60208201529150611cfb565b6020808252810161038881611e14565b600060ff8216610388565b611a4d81611e67565b602081016103888284611e72565b8015156119e7565b805161038881611e89565b600060208284031215611eb157611eb1600080fd5b600061184d8484611e91565b602b81526000602082017f5265736572766548656c706572733a20436f6d7074726f6c6c6572206164647281526a195cdcc81a5b9d985b1a5960aa1b60208201529150611cfb565b6020808252810161038881611ebd565b60408101611f238285611a4b565b6118676020830184611a4b565b8051610388816119de565b600060208284031215611f5057611f50600080fd5b600061184d8484611f30565b602381526000602082017f5269736b2046756e643a204261736520617373657420646f65736e2774206d618152620e8c6d60eb1b60208201529150611cfb565b6020808252810161038881611f5c565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150611cfb565b6020808252810161038881611fac565b603881526000602082017f5269736b2066756e643a206d61726b65747320616e6420616d6f756e74734f7581527f744d696e2061726520756e657175616c206c656e67746873000000000000000060208201529150611cfb565b6020808252810161038881612002565b603081526000602082017f5269736b2066756e643a206d61726b65747320616e642070617468732061726581526f20756e657175616c206c656e6774687360801b60208201529150611cfb565b602080825281016103888161206c565b634e487b7160e01b600052603260045260246000fd5b6000610388826119cd565b6119e7816120df565b8051610388816120ea565b60006020828403121561211357612113600080fd5b600061184d84846120f3565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff8211171561215b5761215b61211f565b6040525050565b600061216d60405190565b90506121798282612135565b919050565b600067ffffffffffffffff8211156121985761219861211f565b601f19601f83011660200192915050565b60005b838110156121c45781810151838201526020016121ac565b838111156121d3576000848401525b50505050565b60006121ec6121e78461217e565b612162565b90508281526020810184848401111561220757612207600080fd5b6122128482856121a9565b509392505050565b600082601f83011261222e5761222e600080fd5b815161184d8482602086016121d9565b8051610388816119fd565b600060a0828403121561225e5761225e600080fd5b61226860a0612162565b825190915067ffffffffffffffff81111561228557612285600080fd5b6122918482850161221a565b82525060206122a284848301611f30565b60208301525060406122b684828501611f30565b60408301525060606122ca8482850161223e565b60608301525060806122de8482850161223e565b60808301525092915050565b6000602082840312156122ff576122ff600080fd5b815167ffffffffffffffff81111561231957612319600080fd5b61184d84828501612249565b602781526000602082017f636f6d7074726f6c6c657220646f65736e277420657869737420706f6f6c20728152666567697374727960c81b60208201529150611cfb565b6020808252810161038881612325565b60148152600060208201731b585c9ad95d081a5cc81b9bdd081b1a5cdd195960621b815291505b5060200190565b6020808252810161038881612379565b6000808335601e19368590030181126123d2576123d2600080fd5b80840192508235915067ffffffffffffffff8211156123f3576123f3600080fd5b6020928301928202360383131561240c5761240c600080fd5b509250929050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561243d5761243d612414565b500190565b6000600019820361245557612455612414565b5060010190565b60006124688383611b4e565b505060200190565b600061186760208401846119f2565b8183526000602084019350818060005b858110156124bc576124a18284612470565b6124ab888261245c565b97506020830192505060010161248f565b509495945050505050565b82818337506000910152565b81835260006020840193506001600160fb1b038311156124f5576124f5600080fd5b6020830292506125068385846124c7565b50500190565b6060808252810161251e81878961247f565b905081810360208301526125338185876124d3565b9050610bd96040830184611a4b565b60408101611f238285611b4e565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006123a0565b6020808252810161038881612550565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150611cfb565b6020808252810161038881612592565b604081016125f28285611b4e565b6118676020830184611b4e565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150611cfb565b60208082528101610388816125ff565b602281526000602082017f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d8152611a5d60f21b60208201529150611cfb565b6020808252810161038881612657565b60006126b0825190565b8084526020840193506126c78185602086016121a9565b601f01601f19169290920192915050565b604081016126e68285611b4e565b818103602083015261186481846126a6565b606081016127068286611b4e565b6127136020830185611b4e565b818103604083015261272581846126a6565b95945050505050565b603081526000602082017f5265736572766548656c706572733a20506f6f6c20526567697374727920616481526f191c995cdcc81a5cc81b9bdd081cd95d60821b60208201529150611cfb565b602080825281016103888161272e565b603281526000602082017f5265736572766548656c706572733a2054686520706f6f6c20646f65736e2774815271081cdd5c1c1bdc9d081d1a1948185cdcd95d60721b60208201529150611cfb565b602080825281016103888161278b565b6000602082840312156127ff576127ff600080fd5b600061184d848461223e565b603c81526000602082017f5269736b46756e643a20616d6f756e744f75744d696e206d757374206265206781527f726561746572207468616e203020746f20737761702076546f6b656e0000000060208201529150611cfb565b602080825281016103888161280b565b604081526000602082017f5269736b46756e643a20616d6f756e744f75744d696e2073686f756c6420626581527f2067726561746572207468616e206d696e416d6f756e74546f436f6e7665727460208201529150611cfb565b6020808252810161038881612875565b6000828210156128f1576128f1612414565b500390565b603881526000602082017f5269736b46756e643a20737761702070617468206d757374207374617274207781527f6974682074686520756e6465726c79696e67206173736574000000000000000060208201529150611cfb565b60208082528101610388816128f6565b603581526000602082017f5269736b46756e643a2066696e616c6c792070617468206d75737420626520638152741bdb9d995c9d1a589b194818985cd948185cdcd95d605a1b60208201529150611cfb565b6020808252810161038881612960565b6000610388611b798381565b611a4d816129c2565b604081016129e58285611b4e565b61186760208301846129ce565b60a08101612a008289611a4b565b612a0d6020830188611a4b565b8181036040830152612a2081868861247f565b9050612a2f6060830185611b4e565b6119486080830184611a4b565b600067ffffffffffffffff821115612a5657612a5661211f565b5060209081020190565b6000612a6e6121e784612a3c565b83815290506020808201908402830185811115612a8d57612a8d600080fd5b835b81811015612ab15780612aa2888261223e565b84525060209283019201612a8f565b5050509392505050565b600082601f830112612acf57612acf600080fd5b815161184d848260208601612a60565b600060208284031215612af457612af4600080fd5b815167ffffffffffffffff811115612b0e57612b0e600080fd5b61184d84828501612abb565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b60208201529150611cfb565b6020808252810161038881612b1a565b634e487b7160e01b600052601260045260246000fd5b600082612b9657612b96612b71565b500490565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b60208201529150611cfb565b6020808252810161038881612b9b565b6000612bf8825190565b612c068185602086016121a9565b9290920192915050565b60006118678284612bee565b6000816000190483118215151615612c3657612c36612414565b500290565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000815291506123a0565b6020808252810161038881612c3b565b6020808252810161186781846126a656fe73776170506f6f6c7341737365747328616464726573735b5d2c75696e743235365b5d2c616464726573735b5d5b5d29a2646970667358221220769afe7571fb7c984c04c918afbd142f3dafd727eca7943751f89b4e89e6d87a64736f6c634300080d0033",
594
+ "linkReferences": {},
595
+ "deployedLinkReferences": {}
596
+ }