@raac/rpc 1.1.0-beta.2 → 1.1.0-beta.20

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 (549) hide show
  1. package/dist/RPCLibrary.js +77 -21
  2. package/dist/artifacts/core/collectors/FeeCollector.sol/FeeCollector.json +83 -29
  3. package/dist/artifacts/core/minters/RAACMinter/RAACMinter.sol/RAACMinter.json +82 -31
  4. package/dist/artifacts/core/oracles/BaseVRFv2Consumer.sol/BaseVRFv2Consumer.json +114 -5
  5. package/dist/artifacts/core/oracles/RAACPrimeRateOracle.sol/RAACPrimeRateOracle.json +412 -0
  6. package/dist/artifacts/core/pools/LendingPool/ERC20AssetAdapter.sol/ERC20AssetAdapter.json +465 -0
  7. package/dist/artifacts/core/pools/LendingPool/ERC721AssetAdapter.sol/ERC721AssetAdapter.json +497 -0
  8. package/dist/artifacts/core/pools/LendingPool/LendingPool.sol/LendingPool.json +1015 -351
  9. package/dist/artifacts/core/pools/StabilityPool/StabilityPool.sol/StabilityPool.json +180 -99
  10. package/dist/artifacts/core/primitives/RAACHousePrices.sol/RAACHousePrices.json +39 -2
  11. package/dist/artifacts/core/tokens/DEToken.sol/DEToken.json +2 -29
  12. package/dist/artifacts/core/tokens/RAACNFT.sol/RAACNFT.json +158 -38
  13. package/dist/artifacts/core/tokens/RAACToken.sol/RAACToken.json +2 -2
  14. package/dist/artifacts/core/tokens/RToken.sol/RToken.json +2 -81
  15. package/dist/artifacts/core/tokens/RWAIndexToken.sol/RWAIndexToken.json +591 -0
  16. package/dist/artifacts/core/tokens/veRAACToken.sol/veRAACToken.json +557 -223
  17. package/dist/artifacts/core/vaults/ERC20VaultAdapter.sol/ERC20VaultAdapter.json +354 -0
  18. package/dist/artifacts/core/vaults/ERC721VaultAdapter.sol/ERC721VaultAdapter.json +356 -0
  19. package/dist/artifacts/core/vaults/RWAVault.sol/RWAVault.json +1036 -0
  20. package/dist/artifacts/mocks/core/oracles/MockVRFCoordinatorV2.sol/MockVRFCoordinatorV2.json +622 -207
  21. package/dist/artifacts/mocks/core/tokens/crvUSDToken.sol/crvUSDToken.json +2 -2
  22. package/dist/artifacts/zeno/Auction.sol/Auction.json +104 -15
  23. package/dist/artifacts/zeno/AuctionFactory.sol/AuctionFactory.json +7 -2
  24. package/dist/artifacts/zeno/Zeno.sol/Zeno.json +108 -38
  25. package/dist/artifacts/zeno/ZenoFactory.sol/ZenoFactory.json +17 -2
  26. package/dist/assets/getSupply.js +3 -0
  27. package/dist/configs/chains/11155111.json +8 -3
  28. package/dist/configs/chains/17000.json +38 -3
  29. package/dist/configs/chains/8453.json +49 -14
  30. package/dist/configs/createConfig.js +3 -3
  31. package/dist/methods/approveToken.js +1 -9
  32. package/dist/minter/tick.js +3 -7
  33. package/dist/nfts/approveNFT.js +25 -0
  34. package/dist/nfts/getApprovalForAll.js +32 -0
  35. package/dist/nfts/getNFTApproval.js +33 -0
  36. package/dist/nfts/setApprovalForAll.js +34 -0
  37. package/dist/pools/lendingPool/_helpers.js +40 -0
  38. package/dist/pools/lendingPool/adapters/erc20/getERC20AdapterBalance.js +20 -0
  39. package/dist/pools/lendingPool/adapters/erc20/getERC20AdapterInfo.js +32 -0
  40. package/dist/pools/lendingPool/adapters/erc721/getERC721AdapterDeposits.js +20 -0
  41. package/dist/pools/lendingPool/adapters/erc721/getERC721AdapterInfo.js +32 -0
  42. package/dist/pools/lendingPool/borrowFromLendingPool.js +11 -14
  43. package/dist/pools/lendingPool/borrowFromLendingPoolWithInsurance.js +11 -29
  44. package/dist/pools/lendingPool/calculateInsuranceFee.js +12 -8
  45. package/dist/pools/lendingPool/closeLiquidation.js +16 -14
  46. package/dist/pools/lendingPool/depositAssetToLendingPool.js +22 -0
  47. package/dist/pools/lendingPool/depositToLendingPool.js +4 -11
  48. package/dist/pools/lendingPool/getAdapterAddress.js +44 -0
  49. package/dist/pools/lendingPool/getAdapters.js +20 -0
  50. package/dist/pools/lendingPool/getEligibleUserDeposits.js +2 -5
  51. package/dist/pools/lendingPool/getHealthFactor.js +15 -13
  52. package/dist/pools/lendingPool/getLendingPoolInfo.js +18 -33
  53. package/dist/pools/lendingPool/getLendingPoolTotalLiquidity.js +2 -6
  54. package/dist/pools/lendingPool/getParameters.js +29 -0
  55. package/dist/pools/lendingPool/getPositionDebt.js +12 -11
  56. package/dist/pools/lendingPool/getPositionScaledDebt.js +16 -13
  57. package/dist/pools/lendingPool/getPositionView.js +17 -10
  58. package/dist/pools/lendingPool/getPositionsScaledDebt.js +3 -5
  59. package/dist/pools/lendingPool/getRawUserDepositsInLendingPool.js +2 -5
  60. package/dist/pools/lendingPool/getUserCollateralValue.js +3 -5
  61. package/dist/pools/lendingPool/getWithdrawRequestInfo.js +22 -0
  62. package/dist/pools/lendingPool/initializeLiquidation.js +12 -12
  63. package/dist/pools/lendingPool/openVaultPosition.js +39 -0
  64. package/dist/pools/lendingPool/repayToLendingPool.js +11 -14
  65. package/dist/pools/lendingPool/requestWithdraw.js +28 -0
  66. package/dist/pools/lendingPool/types.js +2 -0
  67. package/dist/pools/lendingPool/vaultOpened.js +22 -0
  68. package/dist/pools/lendingPool/withdrawAssetFromLendingPool.js +21 -0
  69. package/dist/pools/lendingPool/withdrawFromLendingPool.js +9 -11
  70. package/dist/pools/rwaVault/_helpers.js +41 -0
  71. package/dist/pools/rwaVault/adapters/erc20/getERC20VaultAdapterAssetValue.js +21 -0
  72. package/dist/pools/rwaVault/adapters/erc20/getERC20VaultAdapterInfo.js +30 -0
  73. package/dist/pools/rwaVault/adapters/erc20/getERC20VaultAdapterTotalValue.js +20 -0
  74. package/dist/pools/rwaVault/adapters/erc721/getERC721VaultAdapterAssetValue.js +21 -0
  75. package/dist/pools/rwaVault/adapters/erc721/getERC721VaultAdapterDeposits.js +20 -0
  76. package/dist/pools/rwaVault/adapters/erc721/getERC721VaultAdapterInfo.js +30 -0
  77. package/dist/pools/rwaVault/adapters/erc721/getERC721VaultAdapterTotalValue.js +20 -0
  78. package/dist/pools/rwaVault/depositToRWAVault.js +23 -0
  79. package/dist/pools/rwaVault/getAdapterAddress.js +43 -0
  80. package/dist/pools/rwaVault/getAdapters.js +20 -0
  81. package/dist/pools/rwaVault/getNextRandomNFT.js +21 -0
  82. package/dist/pools/rwaVault/getRWAVaultInfo.js +48 -0
  83. package/dist/pools/rwaVault/redeemNFTFromRWAVault.js +23 -0
  84. package/dist/pools/rwaVault/requestRandomSeed.js +23 -0
  85. package/dist/pools/rwaVault/types.js +2 -0
  86. package/dist/pools/stabilityPool/depositToStabilityPool.js +0 -6
  87. package/dist/pools/stabilityPool/withdrawFromStabilityPool.js +0 -6
  88. package/dist/scripts/index.js +29 -32
  89. package/dist/types/RPCLibrary.d.ts +68 -22
  90. package/dist/types/configs/createConfig.d.ts +1 -1
  91. package/dist/types/nfts/approveNFT.d.ts +9 -0
  92. package/dist/types/nfts/getApprovalForAll.d.ts +14 -0
  93. package/dist/types/nfts/getNFTApproval.d.ts +14 -0
  94. package/dist/types/nfts/setApprovalForAll.d.ts +14 -0
  95. package/dist/types/pools/lendingPool/_helpers.d.ts +10 -0
  96. package/dist/types/pools/lendingPool/adapters/erc20/getERC20AdapterBalance.d.ts +3 -0
  97. package/dist/types/pools/lendingPool/adapters/erc20/getERC20AdapterInfo.d.ts +10 -0
  98. package/dist/types/pools/lendingPool/adapters/erc721/getERC721AdapterDeposits.d.ts +3 -0
  99. package/dist/types/pools/lendingPool/adapters/erc721/getERC721AdapterInfo.d.ts +10 -0
  100. package/dist/types/pools/lendingPool/borrowFromLendingPool.d.ts +4 -3
  101. package/dist/types/pools/lendingPool/borrowFromLendingPoolWithInsurance.d.ts +4 -3
  102. package/dist/types/pools/lendingPool/calculateInsuranceFee.d.ts +3 -2
  103. package/dist/types/pools/lendingPool/closeLiquidation.d.ts +7 -5
  104. package/dist/types/pools/lendingPool/depositAssetToLendingPool.d.ts +5 -0
  105. package/dist/types/pools/lendingPool/getAdapterAddress.d.ts +16 -0
  106. package/dist/types/pools/lendingPool/getAdapters.d.ts +8 -0
  107. package/dist/types/pools/lendingPool/getHealthFactor.d.ts +6 -4
  108. package/dist/types/pools/lendingPool/getLendingPoolInfo.d.ts +1 -3
  109. package/dist/types/pools/lendingPool/getParameters.d.ts +17 -0
  110. package/dist/types/pools/lendingPool/getPositionDebt.d.ts +4 -3
  111. package/dist/types/pools/lendingPool/getPositionScaledDebt.d.ts +8 -5
  112. package/dist/types/pools/lendingPool/getPositionView.d.ts +14 -16
  113. package/dist/types/pools/lendingPool/getWithdrawRequestInfo.d.ts +8 -0
  114. package/dist/types/pools/lendingPool/initializeLiquidation.d.ts +4 -3
  115. package/dist/types/pools/lendingPool/openVaultPosition.d.ts +4 -0
  116. package/dist/types/pools/lendingPool/repayToLendingPool.d.ts +4 -3
  117. package/dist/types/pools/lendingPool/requestWithdraw.d.ts +4 -0
  118. package/dist/types/pools/lendingPool/types.d.ts +7 -0
  119. package/dist/types/pools/lendingPool/vaultOpened.d.ts +11 -0
  120. package/dist/types/pools/lendingPool/withdrawAssetFromLendingPool.d.ts +4 -0
  121. package/dist/types/pools/rwaVault/_helpers.d.ts +10 -0
  122. package/dist/types/pools/rwaVault/adapters/erc20/getERC20VaultAdapterAssetValue.d.ts +3 -0
  123. package/dist/types/pools/rwaVault/adapters/erc20/getERC20VaultAdapterInfo.d.ts +9 -0
  124. package/dist/types/pools/rwaVault/adapters/erc20/getERC20VaultAdapterTotalValue.d.ts +3 -0
  125. package/dist/types/pools/rwaVault/adapters/erc721/getERC721VaultAdapterAssetValue.d.ts +3 -0
  126. package/dist/types/pools/rwaVault/adapters/erc721/getERC721VaultAdapterDeposits.d.ts +3 -0
  127. package/dist/types/pools/rwaVault/adapters/erc721/getERC721VaultAdapterInfo.d.ts +9 -0
  128. package/dist/types/pools/rwaVault/adapters/erc721/getERC721VaultAdapterTotalValue.d.ts +3 -0
  129. package/dist/types/pools/rwaVault/depositToRWAVault.d.ts +5 -0
  130. package/dist/types/pools/rwaVault/getAdapterAddress.d.ts +16 -0
  131. package/dist/types/pools/rwaVault/getAdapters.d.ts +8 -0
  132. package/dist/types/pools/rwaVault/getNextRandomNFT.d.ts +8 -0
  133. package/dist/types/pools/rwaVault/getRWAVaultInfo.d.ts +20 -0
  134. package/dist/types/pools/rwaVault/redeemNFTFromRWAVault.d.ts +4 -0
  135. package/dist/types/pools/rwaVault/requestRandomSeed.d.ts +4 -0
  136. package/dist/types/pools/rwaVault/types.d.ts +7 -0
  137. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.d.ts +103 -0
  138. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/shared/interfaces/IERC677Receiver.d.ts +37 -0
  139. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/shared/interfaces/LinkTokenInterface.d.ts +143 -0
  140. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/shared/interfaces/index.d.ts +3 -0
  141. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/dev/SubscriptionAPI.d.ts +529 -0
  142. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/dev/VRFConsumerBaseV2Plus.d.ts +109 -0
  143. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/dev/index.d.ts +6 -0
  144. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/dev/interfaces/IVRFCoordinatorV2Plus.d.ts +192 -0
  145. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/dev/interfaces/IVRFMigratableConsumerV2Plus.d.ts +45 -0
  146. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/dev/interfaces/IVRFSubscriptionV2Plus.d.ts +155 -0
  147. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/dev/interfaces/index.d.ts +3 -0
  148. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/dev/libraries/VRFV2PlusClient.d.ts +25 -0
  149. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/dev/libraries/index.d.ts +1 -0
  150. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/index.d.ts +4 -0
  151. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/mocks/VRFCoordinatorV2_5Mock.d.ts +731 -0
  152. package/dist/types/typechain-types/@chainlink/contracts/src/v0.8/vrf/mocks/index.d.ts +1 -0
  153. package/dist/types/typechain-types/@openzeppelin/contracts/access/Ownable2Step.d.ts +77 -0
  154. package/dist/types/typechain-types/@openzeppelin/contracts/access/index.d.ts +1 -0
  155. package/dist/types/typechain-types/@openzeppelin/contracts/interfaces/IERC1363.d.ts +231 -0
  156. package/dist/types/typechain-types/@openzeppelin/contracts/interfaces/IERC2981.d.ts +49 -0
  157. package/dist/types/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts +2 -0
  158. package/dist/types/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.d.ts +0 -1
  159. package/dist/types/typechain-types/@openzeppelin/contracts/utils/Errors.d.ts +20 -0
  160. package/dist/types/typechain-types/@openzeppelin/contracts/utils/cryptography/MerkleProof.d.ts +20 -0
  161. package/dist/types/typechain-types/@openzeppelin/contracts/utils/cryptography/index.d.ts +1 -0
  162. package/dist/types/typechain-types/@openzeppelin/contracts/utils/index.d.ts +1 -0
  163. package/dist/types/typechain-types/@openzeppelin/contracts/utils/math/index.d.ts +0 -1
  164. package/dist/types/typechain-types/contracts/core/collectors/FeeCollector.d.ts +30 -1
  165. package/dist/types/typechain-types/contracts/core/collectors/NFTRoyaltyFeeCollector.sol/IWETH10Minimal.d.ts +53 -0
  166. package/dist/types/typechain-types/contracts/core/collectors/NFTRoyaltyFeeCollector.sol/NFTRoyaltyFeeCollector.d.ts +115 -0
  167. package/dist/types/typechain-types/contracts/core/collectors/NFTRoyaltyFeeCollector.sol/index.d.ts +2 -0
  168. package/dist/types/typechain-types/contracts/core/collectors/Treasury.d.ts +15 -1
  169. package/dist/types/typechain-types/contracts/core/collectors/index.d.ts +2 -0
  170. package/dist/types/typechain-types/contracts/core/governance/gauges/BaseGauge.d.ts +616 -142
  171. package/dist/types/typechain-types/contracts/core/governance/gauges/GaugeController.d.ts +396 -108
  172. package/dist/types/typechain-types/contracts/core/governance/gauges/GaugeRewardsDistributor.d.ts +623 -0
  173. package/dist/types/typechain-types/contracts/core/governance/gauges/RAACGauge.d.ts +609 -155
  174. package/dist/types/typechain-types/contracts/core/governance/gauges/RWAGauge.d.ts +610 -156
  175. package/dist/types/typechain-types/contracts/core/governance/gauges/index.d.ts +1 -0
  176. package/dist/types/typechain-types/contracts/core/governance/index.d.ts +0 -2
  177. package/dist/types/typechain-types/contracts/core/governance/proposals/Governance.d.ts +45 -67
  178. package/dist/types/typechain-types/contracts/core/index.d.ts +4 -0
  179. package/dist/types/typechain-types/contracts/core/lockers/LLamaTemple.d.ts +721 -0
  180. package/dist/types/typechain-types/contracts/core/lockers/index.d.ts +1 -0
  181. package/dist/types/typechain-types/contracts/core/minters/RAACMinter/RAACMinter.d.ts +69 -12
  182. package/dist/types/typechain-types/contracts/core/oracles/BaseChainlinkFunctionsOracle.d.ts +22 -4
  183. package/dist/types/typechain-types/contracts/core/oracles/BaseVRFv2Consumer.d.ts +40 -2
  184. package/dist/types/typechain-types/contracts/core/oracles/RAACHousePriceOracle.d.ts +41 -8
  185. package/dist/types/typechain-types/contracts/core/oracles/RAACPrimeRateOracle.d.ts +39 -7
  186. package/dist/types/typechain-types/contracts/core/pools/LendingPool/ERC20AssetAdapter.sol/ERC20AssetAdapter.d.ts +232 -0
  187. package/dist/types/typechain-types/contracts/core/pools/LendingPool/ERC20AssetAdapter.sol/IERC20Adapter.d.ts +25 -0
  188. package/dist/types/typechain-types/contracts/core/pools/LendingPool/ERC20AssetAdapter.sol/IPriceOracle.d.ts +25 -0
  189. package/dist/types/typechain-types/contracts/core/pools/LendingPool/ERC20AssetAdapter.sol/index.d.ts +3 -0
  190. package/dist/types/typechain-types/contracts/core/pools/LendingPool/ERC721AssetAdapter.sol/ERC721AssetAdapter.d.ts +254 -0
  191. package/dist/types/typechain-types/contracts/core/pools/LendingPool/ERC721AssetAdapter.sol/IPriceOracle.d.ts +29 -0
  192. package/dist/types/typechain-types/contracts/core/pools/LendingPool/ERC721AssetAdapter.sol/index.d.ts +2 -0
  193. package/dist/types/typechain-types/contracts/core/pools/LendingPool/LendingPool.d.ts +689 -213
  194. package/dist/types/typechain-types/contracts/core/pools/LendingPool/LendingPoolStorage.d.ts +440 -0
  195. package/dist/types/typechain-types/contracts/core/pools/LendingPool/LiquidationProxy.d.ts +538 -0
  196. package/dist/types/typechain-types/contracts/core/pools/LendingPool/VaultProxy.d.ts +485 -0
  197. package/dist/types/typechain-types/contracts/core/pools/LendingPool/index.d.ts +7 -0
  198. package/dist/types/typechain-types/contracts/core/pools/StabilityPool/LiquidationStrategyProxy.d.ts +158 -0
  199. package/dist/types/typechain-types/contracts/core/pools/StabilityPool/LiquidationSwap.d.ts +124 -0
  200. package/dist/types/typechain-types/contracts/core/pools/StabilityPool/StabilityPool.d.ts +135 -79
  201. package/dist/types/typechain-types/contracts/core/pools/StabilityPool/StabilityPoolStorage.d.ts +140 -0
  202. package/dist/types/typechain-types/contracts/core/pools/StabilityPool/index.d.ts +3 -1
  203. package/dist/types/typechain-types/contracts/core/primitives/ComplianceRegistry.d.ts +203 -0
  204. package/dist/types/typechain-types/contracts/core/primitives/RAACHousePrices.d.ts +23 -1
  205. package/dist/types/typechain-types/contracts/core/primitives/WithCompliance.d.ts +25 -0
  206. package/dist/types/typechain-types/contracts/core/primitives/index.d.ts +2 -0
  207. package/dist/types/typechain-types/contracts/core/tokens/DebtToken.d.ts +8 -8
  208. package/dist/types/typechain-types/contracts/core/tokens/RAACNFT.d.ts +94 -11
  209. package/dist/types/typechain-types/contracts/core/tokens/RToken.d.ts +1 -17
  210. package/dist/types/typechain-types/contracts/core/tokens/RWAIndexToken.d.ts +264 -0
  211. package/dist/types/typechain-types/contracts/core/tokens/VeRAACToken.d.ts +433 -172
  212. package/dist/types/typechain-types/contracts/core/tokens/index.d.ts +1 -1
  213. package/dist/types/typechain-types/contracts/core/vaults/ERC20VaultAdapter.sol/ERC20VaultAdapter.d.ts +174 -0
  214. package/dist/types/typechain-types/contracts/core/vaults/ERC20VaultAdapter.sol/IPriceOracle.d.ts +25 -0
  215. package/dist/types/typechain-types/contracts/core/vaults/ERC20VaultAdapter.sol/index.d.ts +2 -0
  216. package/dist/types/typechain-types/contracts/core/vaults/ERC721VaultAdapter.sol/ERC721VaultAdapter.d.ts +178 -0
  217. package/dist/types/typechain-types/contracts/core/vaults/ERC721VaultAdapter.sol/IPriceOracle.d.ts +29 -0
  218. package/dist/types/typechain-types/contracts/core/vaults/ERC721VaultAdapter.sol/index.d.ts +2 -0
  219. package/dist/types/typechain-types/contracts/core/vaults/RWAVault.d.ts +511 -0
  220. package/dist/types/typechain-types/contracts/core/vaults/index.d.ts +5 -0
  221. package/dist/types/typechain-types/contracts/interfaces/IComplianceRegistry.d.ts +63 -0
  222. package/dist/types/typechain-types/contracts/interfaces/INFTLiquidator.d.ts +190 -23
  223. package/dist/types/typechain-types/contracts/interfaces/INFTWhitelist.d.ts +75 -0
  224. package/dist/types/typechain-types/contracts/interfaces/core/collectors/IFeeCollector.d.ts +9 -0
  225. package/dist/types/typechain-types/contracts/interfaces/core/governance/gauges/IBaseGauge.d.ts +527 -0
  226. package/dist/types/typechain-types/contracts/interfaces/core/governance/gauges/IGaugeController.d.ts +222 -40
  227. package/dist/types/typechain-types/contracts/interfaces/core/governance/gauges/IGaugeRewardsDistributor.d.ts +351 -0
  228. package/dist/types/typechain-types/contracts/interfaces/core/governance/gauges/index.d.ts +2 -1
  229. package/dist/types/typechain-types/contracts/interfaces/core/governance/index.d.ts +0 -1
  230. package/dist/types/typechain-types/contracts/interfaces/core/governance/proposals/IGovernance.d.ts +45 -67
  231. package/dist/types/typechain-types/contracts/interfaces/core/index.d.ts +2 -0
  232. package/dist/types/typechain-types/contracts/interfaces/core/lockers/ILLamaLocker.d.ts +332 -0
  233. package/dist/types/typechain-types/contracts/interfaces/core/lockers/ILLamaTemple.d.ts +302 -0
  234. package/dist/types/typechain-types/contracts/interfaces/core/lockers/index.d.ts +2 -0
  235. package/dist/types/typechain-types/contracts/interfaces/core/minters/RAACMinter/IRAACMinter.d.ts +30 -1
  236. package/dist/types/typechain-types/contracts/interfaces/core/minters/RAACMinter/IRAACMinterRewardsReceiver.d.ts +49 -0
  237. package/dist/types/typechain-types/contracts/interfaces/core/minters/RAACMinter/index.d.ts +1 -0
  238. package/dist/types/typechain-types/contracts/interfaces/core/oracles/IBaseVRFv2Consumer.d.ts +5 -1
  239. package/dist/types/typechain-types/contracts/interfaces/core/oracles/IRAACHousePrices.d.ts +31 -24
  240. package/dist/types/typechain-types/contracts/interfaces/core/pools/LendingPool/IAssetAdapter.d.ts +143 -0
  241. package/dist/types/typechain-types/contracts/interfaces/core/pools/LendingPool/IERC721Adapter.d.ts +51 -0
  242. package/dist/types/typechain-types/contracts/interfaces/core/pools/LendingPool/ILendingPool.d.ts +330 -150
  243. package/dist/types/typechain-types/contracts/interfaces/core/pools/LendingPool/ILendingPoolStorage.d.ts +102 -0
  244. package/dist/types/typechain-types/contracts/interfaces/core/pools/LendingPool/index.d.ts +3 -0
  245. package/dist/types/typechain-types/contracts/interfaces/core/pools/StabilityPool/ILiquidationSwap.d.ts +51 -0
  246. package/dist/types/typechain-types/contracts/interfaces/core/pools/StabilityPool/IStabilityPool.d.ts +19 -64
  247. package/dist/types/typechain-types/contracts/interfaces/core/pools/StabilityPool/IStabilityPoolStorage.d.ts +49 -0
  248. package/dist/types/typechain-types/contracts/interfaces/core/pools/StabilityPool/index.d.ts +2 -0
  249. package/dist/types/typechain-types/contracts/interfaces/core/tokens/IDebtToken.d.ts +6 -6
  250. package/dist/types/typechain-types/contracts/interfaces/core/tokens/IRAACNFT.d.ts +70 -7
  251. package/dist/types/typechain-types/contracts/interfaces/core/tokens/IVaultToken.d.ts +197 -0
  252. package/dist/types/typechain-types/contracts/interfaces/core/tokens/IveRAACToken.d.ts +295 -36
  253. package/dist/types/typechain-types/contracts/interfaces/core/tokens/index.d.ts +1 -0
  254. package/dist/types/typechain-types/contracts/interfaces/core/vaults/IBaseHybridVault.d.ts +208 -0
  255. package/dist/types/typechain-types/contracts/interfaces/core/vaults/IVaultAssetAdapter.d.ts +89 -0
  256. package/dist/types/typechain-types/contracts/interfaces/core/vaults/index.d.ts +2 -0
  257. package/dist/types/typechain-types/contracts/interfaces/curve/ICurveLiquidityGaugeV5.d.ts +357 -0
  258. package/dist/types/typechain-types/contracts/interfaces/curve/index.d.ts +1 -0
  259. package/dist/types/typechain-types/contracts/interfaces/index.d.ts +2 -4
  260. package/dist/types/typechain-types/contracts/interfaces/zeno/IAuction.d.ts +18 -3
  261. package/dist/types/typechain-types/contracts/interfaces/zeno/IZENO.d.ts +31 -1
  262. package/dist/types/typechain-types/contracts/libraries/governance/LockManager.d.ts +9 -2
  263. package/dist/types/typechain-types/contracts/libraries/governance/PowerCheckpoint.d.ts +34 -1
  264. package/dist/types/typechain-types/contracts/libraries/governance/index.d.ts +0 -3
  265. package/dist/types/typechain-types/contracts/libraries/math/TimeWeightedAverage.d.ts +1 -25
  266. package/dist/types/typechain-types/contracts/mocks/core/collectors/MockWETH.d.ts +225 -0
  267. package/dist/types/typechain-types/contracts/mocks/core/collectors/index.d.ts +1 -0
  268. package/dist/types/typechain-types/contracts/mocks/core/curve/CurveLiquidityGaugeV5Mock.sol/CurveLiquidityGaugeV5Mock.d.ts +56 -0
  269. package/dist/types/typechain-types/contracts/mocks/core/curve/CurveLiquidityGaugeV5Mock.sol/ILiquidityGauge.d.ts +35 -0
  270. package/dist/types/typechain-types/contracts/mocks/core/curve/CurveLiquidityGaugeV5Mock.sol/index.d.ts +2 -0
  271. package/dist/types/typechain-types/contracts/mocks/core/curve/index.d.ts +2 -0
  272. package/dist/types/typechain-types/contracts/mocks/core/governance/gauges/MockGaugeController.d.ts +2 -6
  273. package/dist/types/typechain-types/contracts/mocks/core/governance/gauges/index.d.ts +0 -1
  274. package/dist/types/typechain-types/contracts/mocks/core/index.d.ts +4 -0
  275. package/dist/types/typechain-types/contracts/mocks/core/lockers/LLamaLocker.sol/LlamaLocker.d.ts +394 -0
  276. package/dist/types/typechain-types/contracts/mocks/core/lockers/LLamaLocker.sol/index.d.ts +1 -0
  277. package/dist/types/typechain-types/contracts/mocks/core/lockers/index.d.ts +2 -0
  278. package/dist/types/typechain-types/contracts/mocks/core/oracles/MockERC20PriceOracle.sol/IPriceOracle.d.ts +25 -0
  279. package/dist/types/typechain-types/contracts/mocks/core/oracles/MockERC20PriceOracle.sol/MockERC20PriceOracle.d.ts +33 -0
  280. package/dist/types/typechain-types/contracts/mocks/core/oracles/MockERC20PriceOracle.sol/index.d.ts +2 -0
  281. package/dist/types/typechain-types/contracts/mocks/core/oracles/MockFunctionsRouter.sol/MockFunctionsRouter.d.ts +2 -2
  282. package/dist/types/typechain-types/contracts/mocks/core/oracles/MockVRFCoordinatorV2.d.ts +349 -148
  283. package/dist/types/typechain-types/contracts/mocks/core/oracles/TestRAACHousePriceOracle.d.ts +41 -8
  284. package/dist/types/typechain-types/contracts/mocks/core/oracles/TestRAACPrimeRateOracle.d.ts +39 -7
  285. package/dist/types/typechain-types/contracts/mocks/core/oracles/index.d.ts +2 -0
  286. package/dist/types/typechain-types/contracts/mocks/core/pools/MockLendingPoolDebtToken.d.ts +328 -140
  287. package/dist/types/typechain-types/contracts/mocks/core/tokens/MockFeeCollectorToken.d.ts +1 -5
  288. package/dist/types/typechain-types/contracts/mocks/core/tokens/MockToken.d.ts +1 -5
  289. package/dist/types/typechain-types/contracts/mocks/core/tokens/index.d.ts +0 -1
  290. package/dist/types/typechain-types/contracts/mocks/libraries/governance/BoostCalculatorMock.d.ts +68 -139
  291. package/dist/types/typechain-types/contracts/mocks/libraries/governance/LockManagerMock.d.ts +19 -9
  292. package/dist/types/typechain-types/contracts/mocks/libraries/governance/PowerCheckpointMock.d.ts +37 -18
  293. package/dist/types/typechain-types/contracts/mocks/libraries/governance/index.d.ts +0 -3
  294. package/dist/types/typechain-types/contracts/mocks/tests/index.d.ts +0 -2
  295. package/dist/types/typechain-types/contracts/zeno/Auction.d.ts +37 -8
  296. package/dist/types/typechain-types/contracts/zeno/ZENO.d.ts +62 -6
  297. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest__factory.d.ts +1 -1
  298. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/shared/access/ConfirmedOwnerWithProposal__factory.d.ts +1 -1
  299. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/shared/access/ConfirmedOwner__factory.d.ts +1 -1
  300. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface__factory.d.ts +93 -0
  301. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/shared/interfaces/IERC677Receiver__factory.d.ts +25 -0
  302. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/shared/interfaces/LinkTokenInterface__factory.d.ts +191 -0
  303. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/shared/interfaces/index.d.ts +3 -0
  304. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/dev/SubscriptionAPI__factory.d.ts +663 -0
  305. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/dev/VRFConsumerBaseV2Plus__factory.d.ts +139 -0
  306. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/dev/index.d.ts +4 -0
  307. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/dev/interfaces/IVRFCoordinatorV2Plus__factory.d.ts +194 -0
  308. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/dev/interfaces/IVRFMigratableConsumerV2Plus__factory.d.ts +27 -0
  309. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/dev/interfaces/IVRFSubscriptionV2Plus__factory.d.ts +155 -0
  310. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/dev/interfaces/index.d.ts +3 -0
  311. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/dev/libraries/VRFV2PlusClient__factory.d.ts +32 -0
  312. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/dev/libraries/index.d.ts +1 -0
  313. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/index.d.ts +2 -0
  314. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/mocks/VRFCoordinatorV2_5Mock__factory.d.ts +944 -0
  315. package/dist/types/typechain-types/factories/@chainlink/contracts/src/v0.8/vrf/mocks/index.d.ts +1 -0
  316. package/dist/types/typechain-types/factories/@openzeppelin/contracts/access/Ownable2Step__factory.d.ts +95 -0
  317. package/dist/types/typechain-types/factories/@openzeppelin/contracts/access/index.d.ts +1 -0
  318. package/dist/types/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1363__factory.d.ts +289 -0
  319. package/dist/types/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC2981__factory.d.ts +43 -0
  320. package/dist/types/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts +2 -0
  321. package/dist/types/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/SafeERC20__factory.d.ts +1 -1
  322. package/dist/types/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.d.ts +0 -1
  323. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts +1 -13
  324. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.d.ts +50 -0
  325. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/ShortStrings__factory.d.ts +1 -1
  326. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/Strings__factory.d.ts +9 -1
  327. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.d.ts +1 -1
  328. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/MerkleProof__factory.d.ts +26 -0
  329. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/index.d.ts +1 -0
  330. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts +1 -0
  331. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/math/Math__factory.d.ts +1 -1
  332. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.d.ts +1 -1
  333. package/dist/types/typechain-types/factories/@openzeppelin/contracts/utils/math/index.d.ts +0 -1
  334. package/dist/types/typechain-types/factories/contracts/core/collectors/FeeCollector__factory.d.ts +65 -21
  335. package/dist/types/typechain-types/factories/contracts/core/collectors/NFTRoyaltyFeeCollector.sol/IWETH10Minimal__factory.d.ts +49 -0
  336. package/dist/types/typechain-types/factories/contracts/core/collectors/NFTRoyaltyFeeCollector.sol/NFTRoyaltyFeeCollector__factory.d.ts +177 -0
  337. package/dist/types/typechain-types/factories/contracts/core/collectors/NFTRoyaltyFeeCollector.sol/index.d.ts +2 -0
  338. package/dist/types/typechain-types/factories/contracts/core/collectors/Treasury__factory.d.ts +15 -1
  339. package/dist/types/typechain-types/factories/contracts/core/collectors/index.d.ts +1 -0
  340. package/dist/types/typechain-types/factories/contracts/core/governance/boost/BoostController__factory.d.ts +1 -1
  341. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/BaseGauge__factory.d.ts +698 -144
  342. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/GaugeController__factory.d.ts +461 -137
  343. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/GaugeRewardsDistributor__factory.d.ts +848 -0
  344. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/RAACGauge__factory.d.ts +686 -162
  345. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/RWAGauge__factory.d.ts +689 -155
  346. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/index.d.ts +1 -0
  347. package/dist/types/typechain-types/factories/contracts/core/governance/index.d.ts +0 -1
  348. package/dist/types/typechain-types/factories/contracts/core/governance/proposals/Governance__factory.d.ts +42 -80
  349. package/dist/types/typechain-types/factories/contracts/core/governance/proposals/TimelockController__factory.d.ts +1 -1
  350. package/dist/types/typechain-types/factories/contracts/core/index.d.ts +2 -0
  351. package/dist/types/typechain-types/factories/contracts/core/lockers/LLamaTemple__factory.d.ts +1028 -0
  352. package/dist/types/typechain-types/factories/contracts/core/lockers/index.d.ts +1 -0
  353. package/dist/types/typechain-types/factories/contracts/core/minters/RAACMinter/RAACMinter__factory.d.ts +66 -25
  354. package/dist/types/typechain-types/factories/contracts/core/minters/RAACReleaseOrchestrator/RAACReleaseOrchestrator__factory.d.ts +5 -1
  355. package/dist/types/typechain-types/factories/contracts/core/oracles/BaseChainlinkFunctionsOracle__factory.d.ts +37 -1
  356. package/dist/types/typechain-types/factories/contracts/core/oracles/BaseVRFv2Consumer__factory.d.ts +90 -6
  357. package/dist/types/typechain-types/factories/contracts/core/oracles/RAACHousePriceOracle__factory.d.ts +64 -9
  358. package/dist/types/typechain-types/factories/contracts/core/oracles/RAACPrimeRateOracle__factory.d.ts +49 -3
  359. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/ERC20AssetAdapter.sol/ERC20AssetAdapter__factory.d.ts +369 -0
  360. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/ERC20AssetAdapter.sol/IERC20Adapter__factory.d.ts +21 -0
  361. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/ERC20AssetAdapter.sol/IPriceOracle__factory.d.ts +17 -0
  362. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/ERC20AssetAdapter.sol/index.d.ts +3 -0
  363. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/ERC721AssetAdapter.sol/ERC721AssetAdapter__factory.d.ts +393 -0
  364. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/ERC721AssetAdapter.sol/IPriceOracle__factory.d.ts +21 -0
  365. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/ERC721AssetAdapter.sol/index.d.ts +2 -0
  366. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/LendingPoolStorage__factory.d.ts +578 -0
  367. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/LendingPool__factory.d.ts +863 -338
  368. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/LiquidationProxy__factory.d.ts +716 -0
  369. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/VaultProxy__factory.d.ts +636 -0
  370. package/dist/types/typechain-types/factories/contracts/core/pools/LendingPool/index.d.ts +5 -0
  371. package/dist/types/typechain-types/factories/contracts/core/pools/StabilityPool/LiquidationStrategyProxy__factory.d.ts +281 -0
  372. package/dist/types/typechain-types/factories/contracts/core/pools/StabilityPool/LiquidationSwap__factory.d.ts +227 -0
  373. package/dist/types/typechain-types/factories/contracts/core/pools/StabilityPool/NFTLiquidator__factory.d.ts +1 -1
  374. package/dist/types/typechain-types/factories/contracts/core/pools/StabilityPool/StabilityPoolStorage__factory.d.ts +255 -0
  375. package/dist/types/typechain-types/factories/contracts/core/pools/StabilityPool/StabilityPool__factory.d.ts +151 -85
  376. package/dist/types/typechain-types/factories/contracts/core/pools/StabilityPool/index.d.ts +3 -1
  377. package/dist/types/typechain-types/factories/contracts/core/primitives/ComplianceRegistry__factory.d.ts +276 -0
  378. package/dist/types/typechain-types/factories/contracts/core/primitives/RAACHousePrices__factory.d.ts +29 -1
  379. package/dist/types/typechain-types/factories/contracts/core/primitives/WithCompliance__factory.d.ts +17 -0
  380. package/dist/types/typechain-types/factories/contracts/core/primitives/index.d.ts +2 -0
  381. package/dist/types/typechain-types/factories/contracts/core/tokens/DEToken__factory.d.ts +1 -21
  382. package/dist/types/typechain-types/factories/contracts/core/tokens/DebtToken__factory.d.ts +8 -8
  383. package/dist/types/typechain-types/factories/contracts/core/tokens/IndexToken__factory.d.ts +1 -1
  384. package/dist/types/typechain-types/factories/contracts/core/tokens/LPToken__factory.d.ts +1 -1
  385. package/dist/types/typechain-types/factories/contracts/core/tokens/RAACNFT__factory.d.ts +124 -31
  386. package/dist/types/typechain-types/factories/contracts/core/tokens/RAACToken__factory.d.ts +1 -1
  387. package/dist/types/typechain-types/factories/contracts/core/tokens/RToken__factory.d.ts +1 -61
  388. package/dist/types/typechain-types/factories/contracts/core/tokens/RWAIndexToken__factory.d.ts +465 -0
  389. package/dist/types/typechain-types/factories/contracts/core/tokens/VeRAACToken__factory.d.ts +446 -186
  390. package/dist/types/typechain-types/factories/contracts/core/tokens/index.d.ts +1 -1
  391. package/dist/types/typechain-types/factories/contracts/core/vaults/ERC20VaultAdapter.sol/ERC20VaultAdapter__factory.d.ts +285 -0
  392. package/dist/types/typechain-types/factories/contracts/core/vaults/ERC20VaultAdapter.sol/IPriceOracle__factory.d.ts +17 -0
  393. package/dist/types/typechain-types/factories/contracts/core/vaults/ERC20VaultAdapter.sol/index.d.ts +2 -0
  394. package/dist/types/typechain-types/factories/contracts/core/vaults/ERC721VaultAdapter.sol/ERC721VaultAdapter__factory.d.ts +287 -0
  395. package/dist/types/typechain-types/factories/contracts/core/vaults/ERC721VaultAdapter.sol/IPriceOracle__factory.d.ts +21 -0
  396. package/dist/types/typechain-types/factories/contracts/core/vaults/ERC721VaultAdapter.sol/index.d.ts +2 -0
  397. package/dist/types/typechain-types/factories/contracts/core/vaults/RWAVault__factory.d.ts +808 -0
  398. package/dist/types/typechain-types/factories/contracts/core/vaults/index.d.ts +3 -0
  399. package/dist/types/typechain-types/factories/contracts/interfaces/IComplianceRegistry__factory.d.ts +67 -0
  400. package/dist/types/typechain-types/factories/contracts/interfaces/INFTLiquidator__factory.d.ts +213 -6
  401. package/dist/types/typechain-types/factories/contracts/interfaces/INFTWhitelist__factory.d.ts +77 -0
  402. package/dist/types/typechain-types/factories/contracts/interfaces/core/collectors/IFeeCollector__factory.d.ts +32 -0
  403. package/dist/types/typechain-types/factories/contracts/interfaces/core/governance/gauges/IBaseGauge__factory.d.ts +643 -0
  404. package/dist/types/typechain-types/factories/contracts/interfaces/core/governance/gauges/IGaugeController__factory.d.ts +239 -65
  405. package/dist/types/typechain-types/factories/{@openzeppelin/contracts/token/ERC721/extensions/ERC721Wrapper__factory.d.ts → contracts/interfaces/core/governance/gauges/IGaugeRewardsDistributor__factory.d.ts} +209 -201
  406. package/dist/types/typechain-types/factories/contracts/interfaces/core/governance/gauges/index.d.ts +2 -1
  407. package/dist/types/typechain-types/factories/contracts/interfaces/core/governance/index.d.ts +0 -1
  408. package/dist/types/typechain-types/factories/contracts/interfaces/core/governance/proposals/IGovernance__factory.d.ts +41 -79
  409. package/dist/types/typechain-types/factories/contracts/interfaces/core/index.d.ts +1 -0
  410. package/dist/types/typechain-types/factories/contracts/interfaces/core/lockers/ILLamaLocker__factory.d.ts +390 -0
  411. package/dist/types/typechain-types/factories/contracts/interfaces/core/lockers/ILLamaTemple__factory.d.ts +390 -0
  412. package/dist/types/typechain-types/factories/contracts/interfaces/core/lockers/index.d.ts +2 -0
  413. package/dist/types/typechain-types/factories/contracts/interfaces/core/minters/RAACMinter/IRAACMinterRewardsReceiver__factory.d.ts +35 -0
  414. package/dist/types/typechain-types/factories/contracts/interfaces/core/minters/RAACMinter/IRAACMinter__factory.d.ts +33 -0
  415. package/dist/types/typechain-types/factories/contracts/interfaces/core/minters/RAACMinter/index.d.ts +1 -0
  416. package/dist/types/typechain-types/factories/contracts/interfaces/core/minters/RAACReleaseOrchestrator/IReleaseOrchestrator__factory.d.ts +4 -0
  417. package/dist/types/typechain-types/factories/contracts/interfaces/core/oracles/IBaseVRFv2Consumer__factory.d.ts +14 -0
  418. package/dist/types/typechain-types/factories/contracts/interfaces/core/oracles/IRAACHousePrices__factory.d.ts +24 -29
  419. package/dist/types/typechain-types/factories/contracts/interfaces/core/pools/LendingPool/IAssetAdapter__factory.d.ts +189 -0
  420. package/dist/types/typechain-types/factories/contracts/interfaces/core/pools/LendingPool/IERC721Adapter__factory.d.ts +53 -0
  421. package/dist/types/typechain-types/factories/contracts/interfaces/core/pools/LendingPool/ILendingPoolStorage__factory.d.ts +183 -0
  422. package/dist/types/typechain-types/factories/contracts/interfaces/core/pools/LendingPool/ILendingPool__factory.d.ts +398 -143
  423. package/dist/types/typechain-types/factories/contracts/interfaces/core/pools/LendingPool/index.d.ts +3 -0
  424. package/dist/types/typechain-types/factories/contracts/interfaces/core/pools/StabilityPool/ILiquidationSwap__factory.d.ts +53 -0
  425. package/dist/types/typechain-types/factories/contracts/interfaces/core/pools/StabilityPool/IStabilityPoolStorage__factory.d.ts +56 -0
  426. package/dist/types/typechain-types/factories/contracts/interfaces/core/pools/StabilityPool/IStabilityPool__factory.d.ts +26 -75
  427. package/dist/types/typechain-types/factories/contracts/interfaces/core/pools/StabilityPool/index.d.ts +2 -0
  428. package/dist/types/typechain-types/factories/contracts/interfaces/core/tokens/IDebtToken__factory.d.ts +6 -6
  429. package/dist/types/typechain-types/factories/contracts/interfaces/core/tokens/IRAACNFT__factory.d.ts +79 -4
  430. package/dist/types/typechain-types/factories/contracts/interfaces/core/tokens/IVaultToken__factory.d.ts +223 -0
  431. package/dist/types/typechain-types/factories/contracts/interfaces/core/tokens/IveRAACToken__factory.d.ts +355 -29
  432. package/dist/types/typechain-types/factories/contracts/interfaces/core/tokens/index.d.ts +1 -0
  433. package/dist/types/typechain-types/factories/contracts/interfaces/core/vaults/IBaseHybridVault__factory.d.ts +256 -0
  434. package/dist/types/typechain-types/factories/contracts/interfaces/core/vaults/IVaultAssetAdapter__factory.d.ts +119 -0
  435. package/dist/types/typechain-types/factories/contracts/interfaces/core/vaults/index.d.ts +2 -0
  436. package/dist/types/typechain-types/factories/contracts/interfaces/curve/ICurveLiquidityGaugeV5__factory.d.ts +503 -0
  437. package/dist/types/typechain-types/factories/contracts/interfaces/curve/index.d.ts +1 -0
  438. package/dist/types/typechain-types/factories/contracts/interfaces/index.d.ts +2 -4
  439. package/dist/types/typechain-types/factories/contracts/interfaces/zeno/IAuction__factory.d.ts +44 -1
  440. package/dist/types/typechain-types/factories/contracts/interfaces/zeno/IZENO__factory.d.ts +42 -0
  441. package/dist/types/typechain-types/factories/contracts/libraries/governance/BoostCalculator__factory.d.ts +1 -1
  442. package/dist/types/typechain-types/factories/contracts/libraries/governance/Checkpoints__factory.d.ts +1 -1
  443. package/dist/types/typechain-types/factories/contracts/libraries/governance/LockManager__factory.d.ts +10 -1
  444. package/dist/types/typechain-types/factories/contracts/libraries/governance/PowerCheckpoint__factory.d.ts +47 -1
  445. package/dist/types/typechain-types/factories/contracts/libraries/governance/RAACVoting__factory.d.ts +1 -1
  446. package/dist/types/typechain-types/factories/contracts/libraries/governance/VotingPowerLib__factory.d.ts +1 -1
  447. package/dist/types/typechain-types/factories/contracts/libraries/governance/index.d.ts +0 -3
  448. package/dist/types/typechain-types/factories/contracts/libraries/math/TimeWeightedAverage__factory.d.ts +1 -29
  449. package/dist/types/typechain-types/factories/contracts/libraries/pools/ReserveLibrary__factory.d.ts +1 -1
  450. package/dist/types/typechain-types/factories/contracts/libraries/utils/StringUtils__factory.d.ts +1 -1
  451. package/dist/types/typechain-types/factories/contracts/mocks/core/collectors/MockTreasury__factory.d.ts +1 -1
  452. package/dist/types/typechain-types/factories/contracts/mocks/core/collectors/MockWETH__factory.d.ts +353 -0
  453. package/dist/types/typechain-types/factories/contracts/mocks/core/collectors/index.d.ts +1 -0
  454. package/dist/types/typechain-types/factories/contracts/mocks/core/curve/CurveLiquidityGaugeV5Mock.sol/CurveLiquidityGaugeV5Mock__factory.d.ts +65 -0
  455. package/dist/types/typechain-types/factories/contracts/mocks/core/curve/CurveLiquidityGaugeV5Mock.sol/ILiquidityGauge__factory.d.ts +21 -0
  456. package/dist/types/typechain-types/factories/contracts/mocks/core/curve/CurveLiquidityGaugeV5Mock.sol/index.d.ts +2 -0
  457. package/dist/types/typechain-types/factories/contracts/mocks/core/curve/index.d.ts +1 -0
  458. package/dist/types/typechain-types/factories/contracts/mocks/core/governance/gauges/MockBaseGauge__factory.d.ts +1 -1
  459. package/dist/types/typechain-types/factories/contracts/mocks/core/governance/gauges/MockGaugeController__factory.d.ts +1 -15
  460. package/dist/types/typechain-types/factories/contracts/mocks/core/governance/gauges/index.d.ts +0 -1
  461. package/dist/types/typechain-types/factories/contracts/mocks/core/governance/proposals/TimelockTestTarget__factory.d.ts +1 -1
  462. package/dist/types/typechain-types/factories/contracts/mocks/core/index.d.ts +2 -0
  463. package/dist/types/typechain-types/factories/contracts/mocks/core/lockers/LLamaLocker.sol/LlamaLocker__factory.d.ts +591 -0
  464. package/dist/types/typechain-types/factories/contracts/mocks/core/lockers/LLamaLocker.sol/index.d.ts +1 -0
  465. package/dist/types/typechain-types/factories/contracts/mocks/core/lockers/index.d.ts +1 -0
  466. package/dist/types/typechain-types/factories/contracts/mocks/core/oracles/MockERC20PriceOracle.sol/IPriceOracle__factory.d.ts +17 -0
  467. package/dist/types/typechain-types/factories/contracts/mocks/core/oracles/MockERC20PriceOracle.sol/MockERC20PriceOracle__factory.d.ts +42 -0
  468. package/dist/types/typechain-types/factories/contracts/mocks/core/oracles/MockERC20PriceOracle.sol/index.d.ts +2 -0
  469. package/dist/types/typechain-types/factories/contracts/mocks/core/oracles/MockFunctionsRouter.sol/MockFunctionsRouter__factory.d.ts +2 -2
  470. package/dist/types/typechain-types/factories/contracts/mocks/core/oracles/MockOracle__factory.d.ts +1 -1
  471. package/dist/types/typechain-types/factories/contracts/mocks/core/oracles/MockVRFCoordinatorV2__factory.d.ts +490 -166
  472. package/dist/types/typechain-types/factories/contracts/mocks/core/oracles/TestRAACHousePriceOracle__factory.d.ts +67 -12
  473. package/dist/types/typechain-types/factories/contracts/mocks/core/oracles/TestRAACPrimeRateOracle__factory.d.ts +49 -3
  474. package/dist/types/typechain-types/factories/contracts/mocks/core/oracles/index.d.ts +1 -0
  475. package/dist/types/typechain-types/factories/contracts/mocks/core/pools/MockLendingPoolCollector__factory.d.ts +1 -21
  476. package/dist/types/typechain-types/factories/contracts/mocks/core/pools/MockLendingPoolDebtToken__factory.d.ts +397 -132
  477. package/dist/types/typechain-types/factories/contracts/mocks/core/pools/MockLendingPool__factory.d.ts +1 -1
  478. package/dist/types/typechain-types/factories/contracts/mocks/core/pools/MockLiquidityPool__factory.d.ts +1 -21
  479. package/dist/types/typechain-types/factories/contracts/mocks/core/pools/MockPool__factory.d.ts +1 -1
  480. package/dist/types/typechain-types/factories/contracts/mocks/core/pools/MockStabilityPool__factory.d.ts +1 -1
  481. package/dist/types/typechain-types/factories/contracts/mocks/core/primitives/MockContractWithConfig__factory.d.ts +1 -1
  482. package/dist/types/typechain-types/factories/contracts/mocks/core/primitives/MockContract__factory.d.ts +1 -1
  483. package/dist/types/typechain-types/factories/contracts/mocks/core/primitives/MockDistributableContract__factory.d.ts +1 -21
  484. package/dist/types/typechain-types/factories/contracts/mocks/core/primitives/RAACHousePricesMock__factory.d.ts +1 -1
  485. package/dist/types/typechain-types/factories/contracts/mocks/core/tokens/CrvUSDToken__factory.d.ts +1 -1
  486. package/dist/types/typechain-types/factories/contracts/mocks/core/tokens/ERC20Mock__factory.d.ts +8 -4
  487. package/dist/types/typechain-types/factories/contracts/mocks/core/tokens/ERC721Mock__factory.d.ts +1 -1
  488. package/dist/types/typechain-types/factories/contracts/mocks/core/tokens/MockCollectableUnderlying__factory.d.ts +1 -21
  489. package/dist/types/typechain-types/factories/contracts/mocks/core/tokens/MockFeeCollectorToken__factory.d.ts +1 -15
  490. package/dist/types/typechain-types/factories/contracts/mocks/core/tokens/MockToken__factory.d.ts +1 -15
  491. package/dist/types/typechain-types/factories/contracts/mocks/core/tokens/MockUSDC__factory.d.ts +1 -1
  492. package/dist/types/typechain-types/factories/contracts/mocks/core/tokens/MockVeToken__factory.d.ts +1 -1
  493. package/dist/types/typechain-types/factories/contracts/mocks/core/tokens/RAACMockERC20__factory.d.ts +1 -1
  494. package/dist/types/typechain-types/factories/contracts/mocks/core/tokens/index.d.ts +0 -1
  495. package/dist/types/typechain-types/factories/contracts/mocks/core/vaults/MockVault__factory.d.ts +1 -21
  496. package/dist/types/typechain-types/factories/contracts/mocks/libraries/MockStringUtils__factory.d.ts +1 -1
  497. package/dist/types/typechain-types/factories/contracts/mocks/libraries/governance/BoostCalculatorMock__factory.d.ts +53 -122
  498. package/dist/types/typechain-types/factories/contracts/mocks/libraries/governance/CheckpointsMock__factory.d.ts +1 -1
  499. package/dist/types/typechain-types/factories/contracts/mocks/libraries/governance/LockManagerMock__factory.d.ts +21 -12
  500. package/dist/types/typechain-types/factories/contracts/mocks/libraries/governance/PowerCheckpointMock__factory.d.ts +39 -14
  501. package/dist/types/typechain-types/factories/contracts/mocks/libraries/governance/RAACVotingMock__factory.d.ts +1 -1
  502. package/dist/types/typechain-types/factories/contracts/mocks/libraries/governance/VotingPowerMock__factory.d.ts +1 -1
  503. package/dist/types/typechain-types/factories/contracts/mocks/libraries/governance/index.d.ts +0 -3
  504. package/dist/types/typechain-types/factories/contracts/mocks/libraries/math/TimeWeightedAverageMock__factory.d.ts +1 -1
  505. package/dist/types/typechain-types/factories/contracts/mocks/libraries/math/WadRayMathMock__factory.d.ts +1 -1
  506. package/dist/types/typechain-types/factories/contracts/mocks/libraries/pools/ReserveLibraryMock__factory.d.ts +1 -1
  507. package/dist/types/typechain-types/factories/contracts/mocks/tests/MaliciousDeposit__factory.d.ts +1 -1
  508. package/dist/types/typechain-types/factories/contracts/mocks/tests/MaliciousWithdraw__factory.d.ts +1 -1
  509. package/dist/types/typechain-types/factories/contracts/mocks/tests/VeRAACFuzzHelper__factory.d.ts +1 -1
  510. package/dist/types/typechain-types/factories/contracts/mocks/tests/VotingPowerFuzzHelper.sol/VotingPowerFuzzHelper__factory.d.ts +1 -1
  511. package/dist/types/typechain-types/factories/contracts/mocks/tests/index.d.ts +0 -1
  512. package/dist/types/typechain-types/factories/contracts/zeno/AuctionFactory__factory.d.ts +5 -1
  513. package/dist/types/typechain-types/factories/contracts/zeno/Auction__factory.d.ts +83 -14
  514. package/dist/types/typechain-types/factories/contracts/zeno/ZENOFactory__factory.d.ts +13 -1
  515. package/dist/types/typechain-types/factories/contracts/zeno/ZENO__factory.d.ts +87 -31
  516. package/dist/types/typechain-types/index.d.ts +112 -42
  517. package/dist/types/utils/artifacts.d.ts +1733 -26
  518. package/dist/types/wallet/assets/approveNFT.d.ts +0 -0
  519. package/dist/types/wallet/assets/getAllowance.d.ts +1 -1
  520. package/dist/types/wallet/assets/getBalance.d.ts +5 -1
  521. package/dist/utils/artifacts.js +18 -5
  522. package/dist/wallet/assets/approveAsset.js +2 -6
  523. package/dist/wallet/assets/approveNFT.js +0 -0
  524. package/dist/wallet/assets/burnAsset.js +0 -6
  525. package/dist/wallet/assets/getAllowance.js +3 -3
  526. package/dist/wallet/assets/getBalance.js +20 -6
  527. package/dist/wallet/assets/mintAsset.js +1 -6
  528. package/dist/wallet/assets/transferAsset.js +0 -7
  529. package/package.json +2 -2
  530. package/dist/artifacts/core/tokens/IndexToken.sol/IndexToken.json +0 -770
  531. package/dist/contracts/indexToken/getNextRandomNFT.js +0 -30
  532. package/dist/contracts/indexToken/redeemNFT.js +0 -39
  533. package/dist/pools/lendingPool/claimReward.js +0 -22
  534. package/dist/pools/lendingPool/depositNFTToLendingPool.js +0 -50
  535. package/dist/pools/lendingPool/getAllUserData.js +0 -28
  536. package/dist/pools/lendingPool/getPendingReward.js +0 -20
  537. package/dist/pools/lendingPool/withdrawNFTFromLendingPool.js +0 -24
  538. package/dist/pools/stabilityPool/calculateRAACRewards.js +0 -21
  539. package/dist/pools/stabilityPool/depositNFTToStabilityPool.js +0 -40
  540. package/dist/types/contracts/indexToken/getNextRandomNFT.d.ts +0 -7
  541. package/dist/types/contracts/indexToken/redeemNFT.d.ts +0 -4
  542. package/dist/types/pools/lendingPool/claimReward.d.ts +0 -4
  543. package/dist/types/pools/lendingPool/depositNFTToLendingPool.d.ts +0 -4
  544. package/dist/types/pools/lendingPool/getAllUserData.d.ts +0 -16
  545. package/dist/types/pools/lendingPool/getPendingReward.d.ts +0 -4
  546. package/dist/types/pools/lendingPool/withdrawNFTFromLendingPool.d.ts +0 -4
  547. package/dist/types/pools/stabilityPool/calculateRAACRewards.d.ts +0 -4
  548. package/dist/types/pools/stabilityPool/depositNFTToStabilityPool.d.ts +0 -4
  549. package/dist/types/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/ERC721Wrapper.d.ts +0 -261
@@ -22,18 +22,28 @@
22
22
  },
23
23
  {
24
24
  "internalType": "address",
25
- "name": "_raacNFTAddress",
25
+ "name": "_liquidationProxyAddress",
26
26
  "type": "address"
27
27
  },
28
28
  {
29
29
  "internalType": "address",
30
- "name": "_priceOracleAddress",
30
+ "name": "_vaultProxy",
31
+ "type": "address"
32
+ },
33
+ {
34
+ "internalType": "address",
35
+ "name": "_complianceRegistry",
31
36
  "type": "address"
32
37
  },
33
38
  {
34
39
  "internalType": "uint256",
35
40
  "name": "_initialPrimeRate",
36
41
  "type": "uint256"
42
+ },
43
+ {
44
+ "internalType": "address",
45
+ "name": "_admin",
46
+ "type": "address"
37
47
  }
38
48
  ],
39
49
  "stateMutability": "nonpayable",
@@ -41,29 +51,63 @@
41
51
  },
42
52
  {
43
53
  "inputs": [],
44
- "name": "AddressCannotBeZero",
54
+ "name": "AccessControlBadConfirmation",
45
55
  "type": "error"
46
56
  },
47
57
  {
48
58
  "inputs": [
49
59
  {
50
60
  "internalType": "address",
51
- "name": "target",
61
+ "name": "account",
52
62
  "type": "address"
63
+ },
64
+ {
65
+ "internalType": "bytes32",
66
+ "name": "neededRole",
67
+ "type": "bytes32"
53
68
  }
54
69
  ],
55
- "name": "AddressEmptyCode",
70
+ "name": "AccessControlUnauthorizedAccount",
56
71
  "type": "error"
57
72
  },
58
73
  {
59
- "inputs": [
60
- {
61
- "internalType": "address",
62
- "name": "account",
63
- "type": "address"
64
- }
65
- ],
66
- "name": "AddressInsufficientBalance",
74
+ "inputs": [],
75
+ "name": "AccessDenied",
76
+ "type": "error"
77
+ },
78
+ {
79
+ "inputs": [],
80
+ "name": "AdapterAlreadySupported",
81
+ "type": "error"
82
+ },
83
+ {
84
+ "inputs": [],
85
+ "name": "AdapterNotSupported",
86
+ "type": "error"
87
+ },
88
+ {
89
+ "inputs": [],
90
+ "name": "AddressCannotBeZero",
91
+ "type": "error"
92
+ },
93
+ {
94
+ "inputs": [],
95
+ "name": "AmountDifferentThanRequested",
96
+ "type": "error"
97
+ },
98
+ {
99
+ "inputs": [],
100
+ "name": "ApprovalFailed",
101
+ "type": "error"
102
+ },
103
+ {
104
+ "inputs": [],
105
+ "name": "BlacklistedAddress",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "inputs": [],
110
+ "name": "BorrowCapReached",
67
111
  "type": "error"
68
112
  },
69
113
  {
@@ -83,22 +127,27 @@
83
127
  },
84
128
  {
85
129
  "inputs": [],
86
- "name": "DebtNotZero",
130
+ "name": "CapExceedSupply",
87
131
  "type": "error"
88
132
  },
89
133
  {
90
134
  "inputs": [],
91
- "name": "EnforcedPause",
135
+ "name": "CapZero",
92
136
  "type": "error"
93
137
  },
94
138
  {
95
139
  "inputs": [],
96
- "name": "ExpectedPause",
140
+ "name": "DebtNotZero",
141
+ "type": "error"
142
+ },
143
+ {
144
+ "inputs": [],
145
+ "name": "EnforcedPause",
97
146
  "type": "error"
98
147
  },
99
148
  {
100
149
  "inputs": [],
101
- "name": "FailedInnerCall",
150
+ "name": "ExpectedPause",
102
151
  "type": "error"
103
152
  },
104
153
  {
@@ -131,6 +180,11 @@
131
180
  "name": "InsufficientLiquidity",
132
181
  "type": "error"
133
182
  },
183
+ {
184
+ "inputs": [],
185
+ "name": "InsufficientLiquidityAfterWithdrawal",
186
+ "type": "error"
187
+ },
134
188
  {
135
189
  "inputs": [],
136
190
  "name": "InvalidAmount",
@@ -141,6 +195,16 @@
141
195
  "name": "InvalidAmount",
142
196
  "type": "error"
143
197
  },
198
+ {
199
+ "inputs": [],
200
+ "name": "InvalidBoolean",
201
+ "type": "error"
202
+ },
203
+ {
204
+ "inputs": [],
205
+ "name": "InvalidGracePeriod",
206
+ "type": "error"
207
+ },
144
208
  {
145
209
  "inputs": [],
146
210
  "name": "InvalidInterestRateMode",
@@ -161,6 +225,11 @@
161
225
  "name": "InvalidParameter",
162
226
  "type": "error"
163
227
  },
228
+ {
229
+ "inputs": [],
230
+ "name": "InvalidPercentage",
231
+ "type": "error"
232
+ },
164
233
  {
165
234
  "inputs": [],
166
235
  "name": "InvalidVaultAsset",
@@ -183,22 +252,22 @@
183
252
  },
184
253
  {
185
254
  "inputs": [],
186
- "name": "NFTNotInsured",
255
+ "name": "NoActiveRewardToken",
187
256
  "type": "error"
188
257
  },
189
258
  {
190
259
  "inputs": [],
191
- "name": "NoActiveRewardToken",
260
+ "name": "NoCollateral",
192
261
  "type": "error"
193
262
  },
194
263
  {
195
264
  "inputs": [],
196
- "name": "NoCollateral",
265
+ "name": "NoDeposits",
197
266
  "type": "error"
198
267
  },
199
268
  {
200
269
  "inputs": [],
201
- "name": "NoDeposits",
270
+ "name": "NoPendingWithdraw",
202
271
  "type": "error"
203
272
  },
204
273
  {
@@ -206,11 +275,26 @@
206
275
  "name": "NoRewardsToClaim",
207
276
  "type": "error"
208
277
  },
278
+ {
279
+ "inputs": [],
280
+ "name": "NoVaultSet",
281
+ "type": "error"
282
+ },
209
283
  {
210
284
  "inputs": [],
211
285
  "name": "NotEnoughCollateralToBorrow",
212
286
  "type": "error"
213
287
  },
288
+ {
289
+ "inputs": [],
290
+ "name": "NotEnoughLiquidity",
291
+ "type": "error"
292
+ },
293
+ {
294
+ "inputs": [],
295
+ "name": "NotInsured",
296
+ "type": "error"
297
+ },
214
298
  {
215
299
  "inputs": [],
216
300
  "name": "NotOwnerOfNFT",
@@ -310,6 +394,21 @@
310
394
  "name": "StalePrice",
311
395
  "type": "error"
312
396
  },
397
+ {
398
+ "inputs": [],
399
+ "name": "SupplyCapReached",
400
+ "type": "error"
401
+ },
402
+ {
403
+ "inputs": [],
404
+ "name": "TimelockDisabled",
405
+ "type": "error"
406
+ },
407
+ {
408
+ "inputs": [],
409
+ "name": "TimelockNotExpired",
410
+ "type": "error"
411
+ },
313
412
  {
314
413
  "inputs": [],
315
414
  "name": "TransferFailed",
@@ -325,6 +424,16 @@
325
424
  "name": "UserAlreadyUnderLiquidation",
326
425
  "type": "error"
327
426
  },
427
+ {
428
+ "inputs": [],
429
+ "name": "VaultPositionAlreadyOpened",
430
+ "type": "error"
431
+ },
432
+ {
433
+ "inputs": [],
434
+ "name": "VaultPositionNotOpened",
435
+ "type": "error"
436
+ },
328
437
  {
329
438
  "inputs": [],
330
439
  "name": "WithdrawalWouldLeaveUserUnderCollateralized",
@@ -335,6 +444,32 @@
335
444
  "name": "WithdrawalsArePaused",
336
445
  "type": "error"
337
446
  },
447
+ {
448
+ "anonymous": false,
449
+ "inputs": [
450
+ {
451
+ "indexed": false,
452
+ "internalType": "address",
453
+ "name": "adapter",
454
+ "type": "address"
455
+ }
456
+ ],
457
+ "name": "AdapterRegistered",
458
+ "type": "event"
459
+ },
460
+ {
461
+ "anonymous": false,
462
+ "inputs": [
463
+ {
464
+ "indexed": false,
465
+ "internalType": "address",
466
+ "name": "adapter",
467
+ "type": "address"
468
+ }
469
+ ],
470
+ "name": "AdapterRemoved",
471
+ "type": "event"
472
+ },
338
473
  {
339
474
  "anonymous": false,
340
475
  "inputs": [
@@ -354,6 +489,25 @@
354
489
  "name": "Borrow",
355
490
  "type": "event"
356
491
  },
492
+ {
493
+ "anonymous": false,
494
+ "inputs": [
495
+ {
496
+ "indexed": false,
497
+ "internalType": "uint256",
498
+ "name": "oldalue",
499
+ "type": "uint256"
500
+ },
501
+ {
502
+ "indexed": false,
503
+ "internalType": "uint256",
504
+ "name": "newValue",
505
+ "type": "uint256"
506
+ }
507
+ ],
508
+ "name": "BorrowCapUpdated",
509
+ "type": "event"
510
+ },
357
511
  {
358
512
  "anonymous": false,
359
513
  "inputs": [
@@ -485,9 +639,21 @@
485
639
  "inputs": [
486
640
  {
487
641
  "indexed": true,
488
- "internalType": "uint256",
489
- "name": "tokenId",
490
- "type": "uint256"
642
+ "internalType": "address",
643
+ "name": "asset",
644
+ "type": "address"
645
+ },
646
+ {
647
+ "indexed": false,
648
+ "internalType": "address",
649
+ "name": "user",
650
+ "type": "address"
651
+ },
652
+ {
653
+ "indexed": false,
654
+ "internalType": "bytes",
655
+ "name": "data",
656
+ "type": "bytes"
491
657
  },
492
658
  {
493
659
  "indexed": false,
@@ -496,7 +662,7 @@
496
662
  "type": "uint256"
497
663
  }
498
664
  ],
499
- "name": "InsuredNFT",
665
+ "name": "InsuredAsset",
500
666
  "type": "event"
501
667
  },
502
668
  {
@@ -559,10 +725,16 @@
559
725
  "type": "address"
560
726
  },
561
727
  {
562
- "indexed": true,
563
- "internalType": "uint256",
564
- "name": "tokenId",
565
- "type": "uint256"
728
+ "indexed": false,
729
+ "internalType": "address",
730
+ "name": "adapter",
731
+ "type": "address"
732
+ },
733
+ {
734
+ "indexed": false,
735
+ "internalType": "bytes",
736
+ "name": "data",
737
+ "type": "bytes"
566
738
  }
567
739
  ],
568
740
  "name": "LiquidationClosed",
@@ -584,10 +756,16 @@
584
756
  "type": "address"
585
757
  },
586
758
  {
587
- "indexed": true,
588
- "internalType": "uint256",
589
- "name": "tokenId",
590
- "type": "uint256"
759
+ "indexed": false,
760
+ "internalType": "address",
761
+ "name": "adapter",
762
+ "type": "address"
763
+ },
764
+ {
765
+ "indexed": false,
766
+ "internalType": "bytes",
767
+ "name": "data",
768
+ "type": "bytes"
591
769
  },
592
770
  {
593
771
  "indexed": false,
@@ -621,10 +799,16 @@
621
799
  "type": "address"
622
800
  },
623
801
  {
624
- "indexed": true,
625
- "internalType": "uint256",
626
- "name": "tokenId",
627
- "type": "uint256"
802
+ "indexed": false,
803
+ "internalType": "address",
804
+ "name": "adapter",
805
+ "type": "address"
806
+ },
807
+ {
808
+ "indexed": false,
809
+ "internalType": "bytes",
810
+ "name": "data",
811
+ "type": "bytes"
628
812
  }
629
813
  ],
630
814
  "name": "LiquidationInitiated",
@@ -655,6 +839,25 @@
655
839
  "name": "LiquidationParametersUpdated",
656
840
  "type": "event"
657
841
  },
842
+ {
843
+ "anonymous": false,
844
+ "inputs": [
845
+ {
846
+ "indexed": true,
847
+ "internalType": "address",
848
+ "name": "oldLiquidationProxy",
849
+ "type": "address"
850
+ },
851
+ {
852
+ "indexed": true,
853
+ "internalType": "address",
854
+ "name": "newLiquidationProxy",
855
+ "type": "address"
856
+ }
857
+ ],
858
+ "name": "LiquidationProxyUpdated",
859
+ "type": "event"
860
+ },
658
861
  {
659
862
  "anonymous": false,
660
863
  "inputs": [
@@ -756,6 +959,31 @@
756
959
  "name": "OwnershipTransferred",
757
960
  "type": "event"
758
961
  },
962
+ {
963
+ "anonymous": false,
964
+ "inputs": [
965
+ {
966
+ "indexed": false,
967
+ "internalType": "enum ILendingPool.OwnerParameter",
968
+ "name": "parameter",
969
+ "type": "uint8"
970
+ },
971
+ {
972
+ "indexed": false,
973
+ "internalType": "uint256",
974
+ "name": "oldalue",
975
+ "type": "uint256"
976
+ },
977
+ {
978
+ "indexed": false,
979
+ "internalType": "uint256",
980
+ "name": "newValue",
981
+ "type": "uint256"
982
+ }
983
+ ],
984
+ "name": "ParameterChanged",
985
+ "type": "event"
986
+ },
759
987
  {
760
988
  "anonymous": false,
761
989
  "inputs": [
@@ -1007,33 +1235,165 @@
1007
1235
  "inputs": [
1008
1236
  {
1009
1237
  "indexed": true,
1010
- "internalType": "address",
1011
- "name": "oldStabilityPool",
1012
- "type": "address"
1238
+ "internalType": "bytes32",
1239
+ "name": "role",
1240
+ "type": "bytes32"
1013
1241
  },
1014
1242
  {
1015
1243
  "indexed": true,
1016
- "internalType": "address",
1017
- "name": "newStabilityPool",
1018
- "type": "address"
1244
+ "internalType": "bytes32",
1245
+ "name": "previousAdminRole",
1246
+ "type": "bytes32"
1247
+ },
1248
+ {
1249
+ "indexed": true,
1250
+ "internalType": "bytes32",
1251
+ "name": "newAdminRole",
1252
+ "type": "bytes32"
1019
1253
  }
1020
1254
  ],
1021
- "name": "StabilityPoolUpdated",
1255
+ "name": "RoleAdminChanged",
1022
1256
  "type": "event"
1023
1257
  },
1024
1258
  {
1025
1259
  "anonymous": false,
1026
1260
  "inputs": [
1027
1261
  {
1028
- "indexed": false,
1029
- "internalType": "address",
1030
- "name": "account",
1031
- "type": "address"
1262
+ "indexed": true,
1263
+ "internalType": "bytes32",
1264
+ "name": "role",
1265
+ "type": "bytes32"
1266
+ },
1267
+ {
1268
+ "indexed": true,
1269
+ "internalType": "address",
1270
+ "name": "account",
1271
+ "type": "address"
1272
+ },
1273
+ {
1274
+ "indexed": true,
1275
+ "internalType": "address",
1276
+ "name": "sender",
1277
+ "type": "address"
1278
+ }
1279
+ ],
1280
+ "name": "RoleGranted",
1281
+ "type": "event"
1282
+ },
1283
+ {
1284
+ "anonymous": false,
1285
+ "inputs": [
1286
+ {
1287
+ "indexed": true,
1288
+ "internalType": "bytes32",
1289
+ "name": "role",
1290
+ "type": "bytes32"
1291
+ },
1292
+ {
1293
+ "indexed": true,
1294
+ "internalType": "address",
1295
+ "name": "account",
1296
+ "type": "address"
1297
+ },
1298
+ {
1299
+ "indexed": true,
1300
+ "internalType": "address",
1301
+ "name": "sender",
1302
+ "type": "address"
1303
+ }
1304
+ ],
1305
+ "name": "RoleRevoked",
1306
+ "type": "event"
1307
+ },
1308
+ {
1309
+ "anonymous": false,
1310
+ "inputs": [
1311
+ {
1312
+ "indexed": true,
1313
+ "internalType": "address",
1314
+ "name": "oldStabilityPool",
1315
+ "type": "address"
1316
+ },
1317
+ {
1318
+ "indexed": true,
1319
+ "internalType": "address",
1320
+ "name": "newStabilityPool",
1321
+ "type": "address"
1322
+ }
1323
+ ],
1324
+ "name": "StabilityPoolUpdated",
1325
+ "type": "event"
1326
+ },
1327
+ {
1328
+ "anonymous": false,
1329
+ "inputs": [
1330
+ {
1331
+ "indexed": false,
1332
+ "internalType": "uint256",
1333
+ "name": "oldalue",
1334
+ "type": "uint256"
1335
+ },
1336
+ {
1337
+ "indexed": false,
1338
+ "internalType": "uint256",
1339
+ "name": "newValue",
1340
+ "type": "uint256"
1341
+ }
1342
+ ],
1343
+ "name": "SupplyCapUpdated",
1344
+ "type": "event"
1345
+ },
1346
+ {
1347
+ "anonymous": false,
1348
+ "inputs": [
1349
+ {
1350
+ "indexed": false,
1351
+ "internalType": "address",
1352
+ "name": "account",
1353
+ "type": "address"
1032
1354
  }
1033
1355
  ],
1034
1356
  "name": "Unpaused",
1035
1357
  "type": "event"
1036
1358
  },
1359
+ {
1360
+ "anonymous": false,
1361
+ "inputs": [
1362
+ {
1363
+ "indexed": false,
1364
+ "internalType": "address",
1365
+ "name": "user",
1366
+ "type": "address"
1367
+ },
1368
+ {
1369
+ "indexed": false,
1370
+ "internalType": "uint256",
1371
+ "name": "fee",
1372
+ "type": "uint256"
1373
+ }
1374
+ ],
1375
+ "name": "VaultOpeningFeePaid",
1376
+ "type": "event"
1377
+ },
1378
+ {
1379
+ "anonymous": false,
1380
+ "inputs": [
1381
+ {
1382
+ "indexed": false,
1383
+ "internalType": "uint256",
1384
+ "name": "oldalue",
1385
+ "type": "uint256"
1386
+ },
1387
+ {
1388
+ "indexed": false,
1389
+ "internalType": "uint256",
1390
+ "name": "newValue",
1391
+ "type": "uint256"
1392
+ }
1393
+ ],
1394
+ "name": "VaultOpeningFeeUpdated",
1395
+ "type": "event"
1396
+ },
1037
1397
  {
1038
1398
  "anonymous": false,
1039
1399
  "inputs": [
@@ -1123,6 +1483,19 @@
1123
1483
  "name": "Withdraw",
1124
1484
  "type": "event"
1125
1485
  },
1486
+ {
1487
+ "anonymous": false,
1488
+ "inputs": [
1489
+ {
1490
+ "indexed": true,
1491
+ "internalType": "address",
1492
+ "name": "user",
1493
+ "type": "address"
1494
+ }
1495
+ ],
1496
+ "name": "WithdrawCancelled",
1497
+ "type": "event"
1498
+ },
1126
1499
  {
1127
1500
  "anonymous": false,
1128
1501
  "inputs": [
@@ -1142,6 +1515,50 @@
1142
1515
  "name": "WithdrawFeeUpdated",
1143
1516
  "type": "event"
1144
1517
  },
1518
+ {
1519
+ "anonymous": false,
1520
+ "inputs": [
1521
+ {
1522
+ "indexed": true,
1523
+ "internalType": "address",
1524
+ "name": "user",
1525
+ "type": "address"
1526
+ },
1527
+ {
1528
+ "indexed": false,
1529
+ "internalType": "uint256",
1530
+ "name": "amount",
1531
+ "type": "uint256"
1532
+ },
1533
+ {
1534
+ "indexed": false,
1535
+ "internalType": "uint256",
1536
+ "name": "readyAt",
1537
+ "type": "uint256"
1538
+ }
1539
+ ],
1540
+ "name": "WithdrawQueued",
1541
+ "type": "event"
1542
+ },
1543
+ {
1544
+ "anonymous": false,
1545
+ "inputs": [
1546
+ {
1547
+ "indexed": false,
1548
+ "internalType": "uint256",
1549
+ "name": "oldValue",
1550
+ "type": "uint256"
1551
+ },
1552
+ {
1553
+ "indexed": false,
1554
+ "internalType": "uint256",
1555
+ "name": "newValue",
1556
+ "type": "uint256"
1557
+ }
1558
+ ],
1559
+ "name": "WithdrawTimelockDurationUpdated",
1560
+ "type": "event"
1561
+ },
1145
1562
  {
1146
1563
  "anonymous": false,
1147
1564
  "inputs": [
@@ -1194,12 +1611,75 @@
1194
1611
  "stateMutability": "view",
1195
1612
  "type": "function"
1196
1613
  },
1614
+ {
1615
+ "inputs": [],
1616
+ "name": "DEFAULT_ADMIN_ROLE",
1617
+ "outputs": [
1618
+ {
1619
+ "internalType": "bytes32",
1620
+ "name": "",
1621
+ "type": "bytes32"
1622
+ }
1623
+ ],
1624
+ "stateMutability": "view",
1625
+ "type": "function"
1626
+ },
1627
+ {
1628
+ "inputs": [],
1629
+ "name": "GOVERNANCE_ROLE",
1630
+ "outputs": [
1631
+ {
1632
+ "internalType": "bytes32",
1633
+ "name": "",
1634
+ "type": "bytes32"
1635
+ }
1636
+ ],
1637
+ "stateMutability": "view",
1638
+ "type": "function"
1639
+ },
1640
+ {
1641
+ "inputs": [],
1642
+ "name": "PROTOCOL_ROLE",
1643
+ "outputs": [
1644
+ {
1645
+ "internalType": "bytes32",
1646
+ "name": "",
1647
+ "type": "bytes32"
1648
+ }
1649
+ ],
1650
+ "stateMutability": "view",
1651
+ "type": "function"
1652
+ },
1197
1653
  {
1198
1654
  "inputs": [
1199
1655
  {
1200
1656
  "internalType": "uint256",
1201
- "name": "tokenId",
1657
+ "name": "",
1202
1658
  "type": "uint256"
1659
+ }
1660
+ ],
1661
+ "name": "adapters",
1662
+ "outputs": [
1663
+ {
1664
+ "internalType": "address",
1665
+ "name": "",
1666
+ "type": "address"
1667
+ }
1668
+ ],
1669
+ "stateMutability": "view",
1670
+ "type": "function"
1671
+ },
1672
+ {
1673
+ "inputs": [
1674
+ {
1675
+ "internalType": "address",
1676
+ "name": "adapter",
1677
+ "type": "address"
1678
+ },
1679
+ {
1680
+ "internalType": "bytes",
1681
+ "name": "data",
1682
+ "type": "bytes"
1203
1683
  },
1204
1684
  {
1205
1685
  "internalType": "uint256",
@@ -1215,9 +1695,14 @@
1215
1695
  {
1216
1696
  "inputs": [
1217
1697
  {
1218
- "internalType": "uint256",
1219
- "name": "tokenId",
1220
- "type": "uint256"
1698
+ "internalType": "address",
1699
+ "name": "adapter",
1700
+ "type": "address"
1701
+ },
1702
+ {
1703
+ "internalType": "bytes",
1704
+ "name": "data",
1705
+ "type": "bytes"
1221
1706
  },
1222
1707
  {
1223
1708
  "internalType": "uint256",
@@ -1234,13 +1719,18 @@
1234
1719
  "inputs": [
1235
1720
  {
1236
1721
  "internalType": "address",
1237
- "name": "userAddress",
1722
+ "name": "adapter",
1238
1723
  "type": "address"
1239
1724
  },
1240
1725
  {
1241
- "internalType": "uint256",
1242
- "name": "tokenId",
1243
- "type": "uint256"
1726
+ "internalType": "address",
1727
+ "name": "user",
1728
+ "type": "address"
1729
+ },
1730
+ {
1731
+ "internalType": "bytes",
1732
+ "name": "data",
1733
+ "type": "bytes"
1244
1734
  }
1245
1735
  ],
1246
1736
  "name": "calculateHealthFactor",
@@ -1256,15 +1746,20 @@
1256
1746
  },
1257
1747
  {
1258
1748
  "inputs": [
1749
+ {
1750
+ "internalType": "address",
1751
+ "name": "adapter",
1752
+ "type": "address"
1753
+ },
1259
1754
  {
1260
1755
  "internalType": "address",
1261
1756
  "name": "user",
1262
1757
  "type": "address"
1263
1758
  },
1264
1759
  {
1265
- "internalType": "uint256",
1266
- "name": "tokenId",
1267
- "type": "uint256"
1760
+ "internalType": "bytes",
1761
+ "name": "data",
1762
+ "type": "bytes"
1268
1763
  },
1269
1764
  {
1270
1765
  "internalType": "uint256",
@@ -1283,19 +1778,6 @@
1283
1778
  "stateMutability": "view",
1284
1779
  "type": "function"
1285
1780
  },
1286
- {
1287
- "inputs": [],
1288
- "name": "canPaybackDebt",
1289
- "outputs": [
1290
- {
1291
- "internalType": "bool",
1292
- "name": "",
1293
- "type": "bool"
1294
- }
1295
- ],
1296
- "stateMutability": "view",
1297
- "type": "function"
1298
- },
1299
1781
  {
1300
1782
  "inputs": [],
1301
1783
  "name": "claimCollectorRewards",
@@ -1325,9 +1807,14 @@
1325
1807
  {
1326
1808
  "inputs": [
1327
1809
  {
1328
- "internalType": "uint256",
1329
- "name": "tokenId",
1330
- "type": "uint256"
1810
+ "internalType": "address",
1811
+ "name": "adapter",
1812
+ "type": "address"
1813
+ },
1814
+ {
1815
+ "internalType": "bytes",
1816
+ "name": "data",
1817
+ "type": "bytes"
1331
1818
  }
1332
1819
  ],
1333
1820
  "name": "closeLiquidation",
@@ -1337,10 +1824,10 @@
1337
1824
  },
1338
1825
  {
1339
1826
  "inputs": [],
1340
- "name": "debtToken",
1827
+ "name": "complianceRegistry",
1341
1828
  "outputs": [
1342
1829
  {
1343
- "internalType": "contract IDebtToken",
1830
+ "internalType": "contract IComplianceRegistry",
1344
1831
  "name": "",
1345
1832
  "type": "address"
1346
1833
  }
@@ -1361,28 +1848,20 @@
1361
1848
  "stateMutability": "nonpayable",
1362
1849
  "type": "function"
1363
1850
  },
1364
- {
1365
- "inputs": [],
1366
- "name": "depositFee",
1367
- "outputs": [
1368
- {
1369
- "internalType": "uint256",
1370
- "name": "",
1371
- "type": "uint256"
1372
- }
1373
- ],
1374
- "stateMutability": "view",
1375
- "type": "function"
1376
- },
1377
1851
  {
1378
1852
  "inputs": [
1379
1853
  {
1380
- "internalType": "uint256",
1381
- "name": "tokenId",
1382
- "type": "uint256"
1854
+ "internalType": "address",
1855
+ "name": "adapter",
1856
+ "type": "address"
1857
+ },
1858
+ {
1859
+ "internalType": "bytes",
1860
+ "name": "data",
1861
+ "type": "bytes"
1383
1862
  }
1384
1863
  ],
1385
- "name": "depositNFT",
1864
+ "name": "depositAsset",
1386
1865
  "outputs": [],
1387
1866
  "stateMutability": "nonpayable",
1388
1867
  "type": "function"
@@ -1417,13 +1896,18 @@
1417
1896
  "inputs": [
1418
1897
  {
1419
1898
  "internalType": "address",
1420
- "name": "userAddress",
1899
+ "name": "adapter",
1421
1900
  "type": "address"
1422
1901
  },
1423
1902
  {
1424
- "internalType": "uint256",
1425
- "name": "tokenId",
1426
- "type": "uint256"
1903
+ "internalType": "address",
1904
+ "name": "user",
1905
+ "type": "address"
1906
+ },
1907
+ {
1908
+ "internalType": "bytes",
1909
+ "name": "data",
1910
+ "type": "bytes"
1427
1911
  }
1428
1912
  ],
1429
1913
  "name": "finalizeLiquidation",
@@ -1431,79 +1915,14 @@
1431
1915
  "stateMutability": "nonpayable",
1432
1916
  "type": "function"
1433
1917
  },
1434
- {
1435
- "inputs": [
1436
- {
1437
- "internalType": "address",
1438
- "name": "userAddress",
1439
- "type": "address"
1440
- }
1441
- ],
1442
- "name": "getAllUserData",
1918
+ {
1919
+ "inputs": [],
1920
+ "name": "getAdapters",
1443
1921
  "outputs": [
1444
1922
  {
1445
- "components": [
1446
- {
1447
- "internalType": "uint256[]",
1448
- "name": "nftTokenIds",
1449
- "type": "uint256[]"
1450
- },
1451
- {
1452
- "internalType": "uint256",
1453
- "name": "scaledDebtBalance",
1454
- "type": "uint256"
1455
- },
1456
- {
1457
- "internalType": "uint256",
1458
- "name": "collateralValue",
1459
- "type": "uint256"
1460
- },
1461
- {
1462
- "components": [
1463
- {
1464
- "internalType": "uint256",
1465
- "name": "rawDebtBalance",
1466
- "type": "uint256"
1467
- },
1468
- {
1469
- "internalType": "uint256",
1470
- "name": "scaledDebtBalance",
1471
- "type": "uint256"
1472
- },
1473
- {
1474
- "internalType": "uint256",
1475
- "name": "healthFactor",
1476
- "type": "uint256"
1477
- },
1478
- {
1479
- "internalType": "bool",
1480
- "name": "isUnderLiquidation",
1481
- "type": "bool"
1482
- },
1483
- {
1484
- "internalType": "uint256",
1485
- "name": "liquidationStartTime",
1486
- "type": "uint256"
1487
- },
1488
- {
1489
- "internalType": "uint256",
1490
- "name": "positionIndex",
1491
- "type": "uint256"
1492
- },
1493
- {
1494
- "internalType": "bool",
1495
- "name": "isInsured",
1496
- "type": "bool"
1497
- }
1498
- ],
1499
- "internalType": "struct ILendingPool.NFTPositionView[]",
1500
- "name": "positions",
1501
- "type": "tuple[]"
1502
- }
1503
- ],
1504
- "internalType": "struct ILendingPool.UserDataView",
1923
+ "internalType": "address[]",
1505
1924
  "name": "",
1506
- "type": "tuple"
1925
+ "type": "address[]"
1507
1926
  }
1508
1927
  ],
1509
1928
  "stateMutability": "view",
@@ -1511,13 +1930,23 @@
1511
1930
  },
1512
1931
  {
1513
1932
  "inputs": [
1933
+ {
1934
+ "internalType": "address",
1935
+ "name": "adapter",
1936
+ "type": "address"
1937
+ },
1514
1938
  {
1515
1939
  "internalType": "address",
1516
1940
  "name": "user",
1517
1941
  "type": "address"
1942
+ },
1943
+ {
1944
+ "internalType": "bytes",
1945
+ "name": "data",
1946
+ "type": "bytes"
1518
1947
  }
1519
1948
  ],
1520
- "name": "getEligibleUserDeposits",
1949
+ "name": "getAssetValue",
1521
1950
  "outputs": [
1522
1951
  {
1523
1952
  "internalType": "uint256",
@@ -1531,12 +1960,12 @@
1531
1960
  {
1532
1961
  "inputs": [
1533
1962
  {
1534
- "internalType": "uint256",
1535
- "name": "tokenId",
1536
- "type": "uint256"
1963
+ "internalType": "address",
1964
+ "name": "user",
1965
+ "type": "address"
1537
1966
  }
1538
1967
  ],
1539
- "name": "getNFTPrice",
1968
+ "name": "getEligibleUserDeposits",
1540
1969
  "outputs": [
1541
1970
  {
1542
1971
  "internalType": "uint256",
@@ -1594,15 +2023,20 @@
1594
2023
  },
1595
2024
  {
1596
2025
  "inputs": [
2026
+ {
2027
+ "internalType": "address",
2028
+ "name": "adapter",
2029
+ "type": "address"
2030
+ },
1597
2031
  {
1598
2032
  "internalType": "address",
1599
2033
  "name": "user",
1600
2034
  "type": "address"
1601
2035
  },
1602
2036
  {
1603
- "internalType": "uint256",
1604
- "name": "tokenId",
1605
- "type": "uint256"
2037
+ "internalType": "bytes",
2038
+ "name": "data",
2039
+ "type": "bytes"
1606
2040
  }
1607
2041
  ],
1608
2042
  "name": "getPosition",
@@ -1640,7 +2074,7 @@
1640
2074
  "type": "uint256"
1641
2075
  }
1642
2076
  ],
1643
- "internalType": "struct ILendingPool.NFTPosition",
2077
+ "internalType": "struct ILendingPoolStorage.CollateralPosition",
1644
2078
  "name": "",
1645
2079
  "type": "tuple"
1646
2080
  }
@@ -1650,15 +2084,20 @@
1650
2084
  },
1651
2085
  {
1652
2086
  "inputs": [
2087
+ {
2088
+ "internalType": "address",
2089
+ "name": "adapter",
2090
+ "type": "address"
2091
+ },
1653
2092
  {
1654
2093
  "internalType": "address",
1655
2094
  "name": "user",
1656
2095
  "type": "address"
1657
2096
  },
1658
2097
  {
1659
- "internalType": "uint256",
1660
- "name": "tokenId",
1661
- "type": "uint256"
2098
+ "internalType": "bytes",
2099
+ "name": "data",
2100
+ "type": "bytes"
1662
2101
  }
1663
2102
  ],
1664
2103
  "name": "getPositionData",
@@ -1681,13 +2120,18 @@
1681
2120
  "inputs": [
1682
2121
  {
1683
2122
  "internalType": "address",
1684
- "name": "userAddress",
2123
+ "name": "adapter",
1685
2124
  "type": "address"
1686
2125
  },
1687
2126
  {
1688
- "internalType": "uint256",
1689
- "name": "tokenId",
1690
- "type": "uint256"
2127
+ "internalType": "address",
2128
+ "name": "user",
2129
+ "type": "address"
2130
+ },
2131
+ {
2132
+ "internalType": "bytes",
2133
+ "name": "data",
2134
+ "type": "bytes"
1691
2135
  }
1692
2136
  ],
1693
2137
  "name": "getPositionDebt",
@@ -1705,13 +2149,18 @@
1705
2149
  "inputs": [
1706
2150
  {
1707
2151
  "internalType": "address",
1708
- "name": "userAddress",
2152
+ "name": "adapter",
1709
2153
  "type": "address"
1710
2154
  },
1711
2155
  {
1712
- "internalType": "uint256",
1713
- "name": "tokenId",
1714
- "type": "uint256"
2156
+ "internalType": "address",
2157
+ "name": "user",
2158
+ "type": "address"
2159
+ },
2160
+ {
2161
+ "internalType": "bytes",
2162
+ "name": "data",
2163
+ "type": "bytes"
1715
2164
  }
1716
2165
  ],
1717
2166
  "name": "getPositionScaledDebt",
@@ -1727,15 +2176,20 @@
1727
2176
  },
1728
2177
  {
1729
2178
  "inputs": [
2179
+ {
2180
+ "internalType": "address",
2181
+ "name": "adapter",
2182
+ "type": "address"
2183
+ },
1730
2184
  {
1731
2185
  "internalType": "address",
1732
2186
  "name": "user",
1733
2187
  "type": "address"
1734
2188
  },
1735
2189
  {
1736
- "internalType": "uint256",
1737
- "name": "tokenId",
1738
- "type": "uint256"
2190
+ "internalType": "bytes",
2191
+ "name": "data",
2192
+ "type": "bytes"
1739
2193
  }
1740
2194
  ],
1741
2195
  "name": "getPositionView",
@@ -1776,9 +2230,19 @@
1776
2230
  "internalType": "bool",
1777
2231
  "name": "isInsured",
1778
2232
  "type": "bool"
2233
+ },
2234
+ {
2235
+ "internalType": "address",
2236
+ "name": "adapter",
2237
+ "type": "address"
2238
+ },
2239
+ {
2240
+ "internalType": "address",
2241
+ "name": "asset",
2242
+ "type": "address"
1779
2243
  }
1780
2244
  ],
1781
- "internalType": "struct ILendingPool.NFTPositionView",
2245
+ "internalType": "struct ILendingPoolStorage.CollateralPositionView",
1782
2246
  "name": "",
1783
2247
  "type": "tuple"
1784
2248
  }
@@ -1790,7 +2254,7 @@
1790
2254
  "inputs": [
1791
2255
  {
1792
2256
  "internalType": "address",
1793
- "name": "userAddress",
2257
+ "name": "user",
1794
2258
  "type": "address"
1795
2259
  }
1796
2260
  ],
@@ -1818,19 +2282,6 @@
1818
2282
  "stateMutability": "view",
1819
2283
  "type": "function"
1820
2284
  },
1821
- {
1822
- "inputs": [],
1823
- "name": "getRAACNFTAddress",
1824
- "outputs": [
1825
- {
1826
- "internalType": "address",
1827
- "name": "",
1828
- "type": "address"
1829
- }
1830
- ],
1831
- "stateMutability": "view",
1832
- "type": "function"
1833
- },
1834
2285
  {
1835
2286
  "inputs": [],
1836
2287
  "name": "getReserveRateData",
@@ -1941,6 +2392,25 @@
1941
2392
  "stateMutability": "view",
1942
2393
  "type": "function"
1943
2394
  },
2395
+ {
2396
+ "inputs": [
2397
+ {
2398
+ "internalType": "bytes32",
2399
+ "name": "role",
2400
+ "type": "bytes32"
2401
+ }
2402
+ ],
2403
+ "name": "getRoleAdmin",
2404
+ "outputs": [
2405
+ {
2406
+ "internalType": "bytes32",
2407
+ "name": "",
2408
+ "type": "bytes32"
2409
+ }
2410
+ ],
2411
+ "stateMutability": "view",
2412
+ "type": "function"
2413
+ },
1944
2414
  {
1945
2415
  "inputs": [],
1946
2416
  "name": "getUnclaimedVaultRewards",
@@ -1956,15 +2426,20 @@
1956
2426
  },
1957
2427
  {
1958
2428
  "inputs": [
2429
+ {
2430
+ "internalType": "address",
2431
+ "name": "adapter",
2432
+ "type": "address"
2433
+ },
1959
2434
  {
1960
2435
  "internalType": "address",
1961
2436
  "name": "user",
1962
2437
  "type": "address"
1963
2438
  },
1964
2439
  {
1965
- "internalType": "uint256",
1966
- "name": "tokenId",
1967
- "type": "uint256"
2440
+ "internalType": "bytes",
2441
+ "name": "data",
2442
+ "type": "bytes"
1968
2443
  }
1969
2444
  ],
1970
2445
  "name": "getUninsuredBalance",
@@ -1982,7 +2457,7 @@
1982
2457
  "inputs": [
1983
2458
  {
1984
2459
  "internalType": "address",
1985
- "name": "userAddress",
2460
+ "name": "user",
1986
2461
  "type": "address"
1987
2462
  }
1988
2463
  ],
@@ -1990,7 +2465,7 @@
1990
2465
  "outputs": [
1991
2466
  {
1992
2467
  "internalType": "uint256",
1993
- "name": "",
2468
+ "name": "totalValue",
1994
2469
  "type": "uint256"
1995
2470
  }
1996
2471
  ],
@@ -2001,7 +2476,7 @@
2001
2476
  "inputs": [
2002
2477
  {
2003
2478
  "internalType": "address",
2004
- "name": "userAddress",
2479
+ "name": "user",
2005
2480
  "type": "address"
2006
2481
  }
2007
2482
  ],
@@ -2009,7 +2484,7 @@
2009
2484
  "outputs": [
2010
2485
  {
2011
2486
  "internalType": "uint256",
2012
- "name": "",
2487
+ "name": "totalDebt",
2013
2488
  "type": "uint256"
2014
2489
  }
2015
2490
  ],
@@ -2057,30 +2532,40 @@
2057
2532
  {
2058
2533
  "inputs": [
2059
2534
  {
2060
- "internalType": "uint256",
2061
- "name": "nftId",
2062
- "type": "uint256"
2063
- }
2064
- ],
2065
- "name": "getUserOfDepositedNFT",
2066
- "outputs": [
2535
+ "internalType": "bytes32",
2536
+ "name": "role",
2537
+ "type": "bytes32"
2538
+ },
2067
2539
  {
2068
2540
  "internalType": "address",
2069
- "name": "",
2541
+ "name": "account",
2070
2542
  "type": "address"
2071
2543
  }
2072
2544
  ],
2073
- "stateMutability": "view",
2545
+ "name": "grantRole",
2546
+ "outputs": [],
2547
+ "stateMutability": "nonpayable",
2074
2548
  "type": "function"
2075
2549
  },
2076
2550
  {
2077
- "inputs": [],
2078
- "name": "healthFactorLiquidationThreshold",
2551
+ "inputs": [
2552
+ {
2553
+ "internalType": "bytes32",
2554
+ "name": "role",
2555
+ "type": "bytes32"
2556
+ },
2557
+ {
2558
+ "internalType": "address",
2559
+ "name": "account",
2560
+ "type": "address"
2561
+ }
2562
+ ],
2563
+ "name": "hasRole",
2079
2564
  "outputs": [
2080
2565
  {
2081
- "internalType": "uint256",
2566
+ "internalType": "bool",
2082
2567
  "name": "",
2083
- "type": "uint256"
2568
+ "type": "bool"
2084
2569
  }
2085
2570
  ],
2086
2571
  "stateMutability": "view",
@@ -2090,13 +2575,18 @@
2090
2575
  "inputs": [
2091
2576
  {
2092
2577
  "internalType": "address",
2093
- "name": "userAddress",
2578
+ "name": "adapter",
2094
2579
  "type": "address"
2095
2580
  },
2096
2581
  {
2097
- "internalType": "uint256",
2098
- "name": "tokenId",
2099
- "type": "uint256"
2582
+ "internalType": "address",
2583
+ "name": "user",
2584
+ "type": "address"
2585
+ },
2586
+ {
2587
+ "internalType": "bytes",
2588
+ "name": "data",
2589
+ "type": "bytes"
2100
2590
  }
2101
2591
  ],
2102
2592
  "name": "initiateLiquidation",
@@ -2106,98 +2596,134 @@
2106
2596
  },
2107
2597
  {
2108
2598
  "inputs": [],
2109
- "name": "insuranceFee",
2599
+ "name": "liquidationProxy",
2110
2600
  "outputs": [
2111
2601
  {
2112
- "internalType": "uint256",
2602
+ "internalType": "address",
2113
2603
  "name": "",
2114
- "type": "uint256"
2604
+ "type": "address"
2115
2605
  }
2116
2606
  ],
2117
2607
  "stateMutability": "view",
2118
2608
  "type": "function"
2119
2609
  },
2120
2610
  {
2121
- "inputs": [],
2122
- "name": "liquidationGracePeriod",
2123
- "outputs": [
2611
+ "inputs": [
2612
+ {
2613
+ "internalType": "address",
2614
+ "name": "",
2615
+ "type": "address"
2616
+ },
2617
+ {
2618
+ "internalType": "address",
2619
+ "name": "",
2620
+ "type": "address"
2621
+ },
2124
2622
  {
2125
2623
  "internalType": "uint256",
2126
2624
  "name": "",
2127
2625
  "type": "uint256"
2626
+ },
2627
+ {
2628
+ "internalType": "bytes",
2629
+ "name": "",
2630
+ "type": "bytes"
2128
2631
  }
2129
2632
  ],
2130
- "stateMutability": "view",
2131
- "type": "function"
2132
- },
2133
- {
2134
- "inputs": [],
2135
- "name": "liquidationThreshold",
2633
+ "name": "onERC721Received",
2136
2634
  "outputs": [
2137
2635
  {
2138
- "internalType": "uint256",
2636
+ "internalType": "bytes4",
2139
2637
  "name": "",
2140
- "type": "uint256"
2638
+ "type": "bytes4"
2141
2639
  }
2142
2640
  ],
2143
- "stateMutability": "view",
2641
+ "stateMutability": "nonpayable",
2642
+ "type": "function"
2643
+ },
2644
+ {
2645
+ "inputs": [],
2646
+ "name": "openVaultPosition",
2647
+ "outputs": [],
2648
+ "stateMutability": "nonpayable",
2144
2649
  "type": "function"
2145
2650
  },
2146
2651
  {
2147
2652
  "inputs": [],
2148
- "name": "liquidityBufferRatio",
2653
+ "name": "owner",
2149
2654
  "outputs": [
2150
2655
  {
2151
- "internalType": "uint256",
2656
+ "internalType": "address",
2152
2657
  "name": "",
2153
- "type": "uint256"
2658
+ "type": "address"
2154
2659
  }
2155
2660
  ],
2156
2661
  "stateMutability": "view",
2157
2662
  "type": "function"
2158
2663
  },
2159
2664
  {
2160
- "inputs": [
2665
+ "inputs": [],
2666
+ "name": "parameters",
2667
+ "outputs": [
2161
2668
  {
2162
- "internalType": "address",
2163
- "name": "",
2164
- "type": "address"
2669
+ "internalType": "bool",
2670
+ "name": "canPaybackDebt",
2671
+ "type": "bool"
2165
2672
  },
2166
2673
  {
2167
- "internalType": "address",
2168
- "name": "",
2169
- "type": "address"
2674
+ "internalType": "bool",
2675
+ "name": "withdrawalsPaused",
2676
+ "type": "bool"
2170
2677
  },
2171
2678
  {
2172
2679
  "internalType": "uint256",
2173
- "name": "",
2680
+ "name": "liquidationThreshold",
2174
2681
  "type": "uint256"
2175
2682
  },
2176
2683
  {
2177
- "internalType": "bytes",
2178
- "name": "",
2179
- "type": "bytes"
2180
- }
2181
- ],
2182
- "name": "onERC721Received",
2183
- "outputs": [
2684
+ "internalType": "uint256",
2685
+ "name": "healthFactorLiquidationThreshold",
2686
+ "type": "uint256"
2687
+ },
2688
+ {
2689
+ "internalType": "uint256",
2690
+ "name": "liquidationGracePeriod",
2691
+ "type": "uint256"
2692
+ },
2693
+ {
2694
+ "internalType": "uint256",
2695
+ "name": "insuranceFee",
2696
+ "type": "uint256"
2697
+ },
2698
+ {
2699
+ "internalType": "uint256",
2700
+ "name": "depositFee",
2701
+ "type": "uint256"
2702
+ },
2703
+ {
2704
+ "internalType": "uint256",
2705
+ "name": "liquidityBufferRatio",
2706
+ "type": "uint256"
2707
+ },
2708
+ {
2709
+ "internalType": "uint256",
2710
+ "name": "supplyCap",
2711
+ "type": "uint256"
2712
+ },
2713
+ {
2714
+ "internalType": "uint256",
2715
+ "name": "borrowCap",
2716
+ "type": "uint256"
2717
+ },
2184
2718
  {
2185
- "internalType": "bytes4",
2186
- "name": "",
2187
- "type": "bytes4"
2188
- }
2189
- ],
2190
- "stateMutability": "nonpayable",
2191
- "type": "function"
2192
- },
2193
- {
2194
- "inputs": [],
2195
- "name": "owner",
2196
- "outputs": [
2719
+ "internalType": "uint256",
2720
+ "name": "withdrawTimelockDuration",
2721
+ "type": "uint256"
2722
+ },
2197
2723
  {
2198
- "internalType": "address",
2199
- "name": "",
2200
- "type": "address"
2724
+ "internalType": "uint256",
2725
+ "name": "vaultOpeningFee",
2726
+ "type": "uint256"
2201
2727
  }
2202
2728
  ],
2203
2729
  "stateMutability": "view",
@@ -2231,9 +2757,9 @@
2231
2757
  "type": "address"
2232
2758
  },
2233
2759
  {
2234
- "internalType": "uint256",
2760
+ "internalType": "bytes32",
2235
2761
  "name": "",
2236
- "type": "uint256"
2762
+ "type": "bytes32"
2237
2763
  }
2238
2764
  ],
2239
2765
  "name": "positions",
@@ -2272,19 +2798,6 @@
2272
2798
  "stateMutability": "view",
2273
2799
  "type": "function"
2274
2800
  },
2275
- {
2276
- "inputs": [],
2277
- "name": "priceOracle",
2278
- "outputs": [
2279
- {
2280
- "internalType": "contract IRAACHousePrices",
2281
- "name": "",
2282
- "type": "address"
2283
- }
2284
- ],
2285
- "stateMutability": "view",
2286
- "type": "function"
2287
- },
2288
2801
  {
2289
2802
  "inputs": [],
2290
2803
  "name": "primeRateOracle",
@@ -2298,32 +2811,6 @@
2298
2811
  "stateMutability": "view",
2299
2812
  "type": "function"
2300
2813
  },
2301
- {
2302
- "inputs": [],
2303
- "name": "rToken",
2304
- "outputs": [
2305
- {
2306
- "internalType": "contract IRToken",
2307
- "name": "",
2308
- "type": "address"
2309
- }
2310
- ],
2311
- "stateMutability": "view",
2312
- "type": "function"
2313
- },
2314
- {
2315
- "inputs": [],
2316
- "name": "raacNFT",
2317
- "outputs": [
2318
- {
2319
- "internalType": "contract IRAACNFT",
2320
- "name": "",
2321
- "type": "address"
2322
- }
2323
- ],
2324
- "stateMutability": "view",
2325
- "type": "function"
2326
- },
2327
2814
  {
2328
2815
  "inputs": [],
2329
2816
  "name": "rateData",
@@ -2372,6 +2859,19 @@
2372
2859
  "stateMutability": "view",
2373
2860
  "type": "function"
2374
2861
  },
2862
+ {
2863
+ "inputs": [
2864
+ {
2865
+ "internalType": "address",
2866
+ "name": "adapter",
2867
+ "type": "address"
2868
+ }
2869
+ ],
2870
+ "name": "registerAdapter",
2871
+ "outputs": [],
2872
+ "stateMutability": "nonpayable",
2873
+ "type": "function"
2874
+ },
2375
2875
  {
2376
2876
  "inputs": [],
2377
2877
  "name": "renounceOwnership",
@@ -2382,9 +2882,32 @@
2382
2882
  {
2383
2883
  "inputs": [
2384
2884
  {
2385
- "internalType": "uint256",
2386
- "name": "tokenId",
2387
- "type": "uint256"
2885
+ "internalType": "bytes32",
2886
+ "name": "role",
2887
+ "type": "bytes32"
2888
+ },
2889
+ {
2890
+ "internalType": "address",
2891
+ "name": "callerConfirmation",
2892
+ "type": "address"
2893
+ }
2894
+ ],
2895
+ "name": "renounceRole",
2896
+ "outputs": [],
2897
+ "stateMutability": "nonpayable",
2898
+ "type": "function"
2899
+ },
2900
+ {
2901
+ "inputs": [
2902
+ {
2903
+ "internalType": "address",
2904
+ "name": "adapter",
2905
+ "type": "address"
2906
+ },
2907
+ {
2908
+ "internalType": "bytes",
2909
+ "name": "data",
2910
+ "type": "bytes"
2388
2911
  },
2389
2912
  {
2390
2913
  "internalType": "uint256",
@@ -2400,9 +2923,14 @@
2400
2923
  {
2401
2924
  "inputs": [
2402
2925
  {
2403
- "internalType": "uint256",
2404
- "name": "tokenId",
2405
- "type": "uint256"
2926
+ "internalType": "address",
2927
+ "name": "adapter",
2928
+ "type": "address"
2929
+ },
2930
+ {
2931
+ "internalType": "bytes",
2932
+ "name": "data",
2933
+ "type": "bytes"
2406
2934
  },
2407
2935
  {
2408
2936
  "internalType": "uint256",
@@ -2420,6 +2948,19 @@
2420
2948
  "stateMutability": "nonpayable",
2421
2949
  "type": "function"
2422
2950
  },
2951
+ {
2952
+ "inputs": [
2953
+ {
2954
+ "internalType": "uint256",
2955
+ "name": "amount",
2956
+ "type": "uint256"
2957
+ }
2958
+ ],
2959
+ "name": "requestWithdraw",
2960
+ "outputs": [],
2961
+ "stateMutability": "nonpayable",
2962
+ "type": "function"
2963
+ },
2423
2964
  {
2424
2965
  "inputs": [
2425
2966
  {
@@ -2492,16 +3033,21 @@
2492
3033
  "type": "function"
2493
3034
  },
2494
3035
  {
2495
- "inputs": [],
2496
- "name": "reserveAssetToken",
2497
- "outputs": [
3036
+ "inputs": [
2498
3037
  {
2499
- "internalType": "contract IERC20",
2500
- "name": "",
3038
+ "internalType": "bytes32",
3039
+ "name": "role",
3040
+ "type": "bytes32"
3041
+ },
3042
+ {
3043
+ "internalType": "address",
3044
+ "name": "account",
2501
3045
  "type": "address"
2502
3046
  }
2503
3047
  ],
2504
- "stateMutability": "view",
3048
+ "name": "revokeRole",
3049
+ "outputs": [],
3050
+ "stateMutability": "nonpayable",
2505
3051
  "type": "function"
2506
3052
  },
2507
3053
  {
@@ -2540,6 +3086,19 @@
2540
3086
  "stateMutability": "nonpayable",
2541
3087
  "type": "function"
2542
3088
  },
3089
+ {
3090
+ "inputs": [
3091
+ {
3092
+ "internalType": "address",
3093
+ "name": "_liquidationProxy",
3094
+ "type": "address"
3095
+ }
3096
+ ],
3097
+ "name": "setLiquidationProxy",
3098
+ "outputs": [],
3099
+ "stateMutability": "nonpayable",
3100
+ "type": "function"
3101
+ },
2543
3102
  {
2544
3103
  "inputs": [
2545
3104
  {
@@ -2636,6 +3195,63 @@
2636
3195
  "stateMutability": "view",
2637
3196
  "type": "function"
2638
3197
  },
3198
+ {
3199
+ "inputs": [
3200
+ {
3201
+ "internalType": "address",
3202
+ "name": "adapter",
3203
+ "type": "address"
3204
+ }
3205
+ ],
3206
+ "name": "supportedAdapter",
3207
+ "outputs": [
3208
+ {
3209
+ "internalType": "bool",
3210
+ "name": "",
3211
+ "type": "bool"
3212
+ }
3213
+ ],
3214
+ "stateMutability": "view",
3215
+ "type": "function"
3216
+ },
3217
+ {
3218
+ "inputs": [
3219
+ {
3220
+ "internalType": "address",
3221
+ "name": "",
3222
+ "type": "address"
3223
+ }
3224
+ ],
3225
+ "name": "supportedAdapters",
3226
+ "outputs": [
3227
+ {
3228
+ "internalType": "bool",
3229
+ "name": "",
3230
+ "type": "bool"
3231
+ }
3232
+ ],
3233
+ "stateMutability": "view",
3234
+ "type": "function"
3235
+ },
3236
+ {
3237
+ "inputs": [
3238
+ {
3239
+ "internalType": "bytes4",
3240
+ "name": "interfaceId",
3241
+ "type": "bytes4"
3242
+ }
3243
+ ],
3244
+ "name": "supportsInterface",
3245
+ "outputs": [
3246
+ {
3247
+ "internalType": "bool",
3248
+ "name": "",
3249
+ "type": "bool"
3250
+ }
3251
+ ],
3252
+ "stateMutability": "view",
3253
+ "type": "function"
3254
+ },
2639
3255
  {
2640
3256
  "inputs": [
2641
3257
  {
@@ -2674,6 +3290,19 @@
2674
3290
  "stateMutability": "nonpayable",
2675
3291
  "type": "function"
2676
3292
  },
3293
+ {
3294
+ "inputs": [
3295
+ {
3296
+ "internalType": "address",
3297
+ "name": "adapter",
3298
+ "type": "address"
3299
+ }
3300
+ ],
3301
+ "name": "unregisterAdapter",
3302
+ "outputs": [],
3303
+ "stateMutability": "nonpayable",
3304
+ "type": "function"
3305
+ },
2677
3306
  {
2678
3307
  "inputs": [],
2679
3308
  "name": "updateState",
@@ -2726,6 +3355,38 @@
2726
3355
  "stateMutability": "view",
2727
3356
  "type": "function"
2728
3357
  },
3358
+ {
3359
+ "inputs": [
3360
+ {
3361
+ "internalType": "address",
3362
+ "name": "",
3363
+ "type": "address"
3364
+ }
3365
+ ],
3366
+ "name": "vaultOpened",
3367
+ "outputs": [
3368
+ {
3369
+ "internalType": "bool",
3370
+ "name": "",
3371
+ "type": "bool"
3372
+ }
3373
+ ],
3374
+ "stateMutability": "view",
3375
+ "type": "function"
3376
+ },
3377
+ {
3378
+ "inputs": [],
3379
+ "name": "vaultProxy",
3380
+ "outputs": [
3381
+ {
3382
+ "internalType": "address",
3383
+ "name": "",
3384
+ "type": "address"
3385
+ }
3386
+ ],
3387
+ "stateMutability": "view",
3388
+ "type": "function"
3389
+ },
2729
3390
  {
2730
3391
  "inputs": [],
2731
3392
  "name": "vaultRewards",
@@ -2780,45 +3441,48 @@
2780
3441
  {
2781
3442
  "inputs": [
2782
3443
  {
2783
- "internalType": "uint256",
2784
- "name": "tokenId",
2785
- "type": "uint256"
3444
+ "internalType": "address",
3445
+ "name": "adapter",
3446
+ "type": "address"
3447
+ },
3448
+ {
3449
+ "internalType": "bytes",
3450
+ "name": "data",
3451
+ "type": "bytes"
2786
3452
  }
2787
3453
  ],
2788
- "name": "withdrawNFT",
3454
+ "name": "withdrawAsset",
2789
3455
  "outputs": [],
2790
3456
  "stateMutability": "nonpayable",
2791
3457
  "type": "function"
2792
3458
  },
2793
3459
  {
2794
- "inputs": [],
2795
- "name": "withdrawalFee",
2796
- "outputs": [
3460
+ "inputs": [
2797
3461
  {
2798
- "internalType": "uint256",
3462
+ "internalType": "address",
2799
3463
  "name": "",
2800
- "type": "uint256"
3464
+ "type": "address"
2801
3465
  }
2802
3466
  ],
2803
- "stateMutability": "view",
2804
- "type": "function"
2805
- },
2806
- {
2807
- "inputs": [],
2808
- "name": "withdrawalsPaused",
3467
+ "name": "withdrawTimelock",
2809
3468
  "outputs": [
2810
3469
  {
2811
- "internalType": "bool",
2812
- "name": "",
2813
- "type": "bool"
3470
+ "internalType": "uint256",
3471
+ "name": "amount",
3472
+ "type": "uint256"
3473
+ },
3474
+ {
3475
+ "internalType": "uint256",
3476
+ "name": "readyAt",
3477
+ "type": "uint256"
2814
3478
  }
2815
3479
  ],
2816
3480
  "stateMutability": "view",
2817
3481
  "type": "function"
2818
3482
  }
2819
3483
  ],
2820
- "bytecode": "0x60a0604052601e805460ff60a01b1916600160a01b17905561012c6029556000602a819055602b556107d0602d55602e805460ff191690553480156200004457600080fd5b50604051620063b2380380620063b28339810160408190526200006791620002ff565b33806200008e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000099816200026b565b50600180556002805460ff191690556001600160a01b0386161580620000c657506001600160a01b038516155b80620000d957506001600160a01b038416155b80620000ec57506001600160a01b038316155b80620000ff57506001600160a01b038216155b8062000109575080155b1562000128576040516303988b8160e61b815260040160405180910390fd5b601b80546001600160a01b03199081166001600160a01b03898116918217909355858316608052601980548316868516179055601c80548316898516908117909155601d8054841694891694851790557b033b2e3c9fd0803ce800000000000000033b2e3c9fd0803ce80000006008556009805464ffffffffff19164264ffffffffff1617905560038054841690911790556004805483169091179055600580549091169091179055600c819055620001e4816109c4620002bb565b600d55600c54620001f890611388620002bb565b600e55600c546200020c90619c40620002bb565b600f55620002296b033b2e3c9fd0803ce8000000611f40620002bb565b6010555050600060115550506b033b2e3c9fd0803ce8000000600a819055600b555050611f40602655670de0b6b3a76400006027556203f48060285562000377565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081156113881983900484111517620002d457600080fd5b506127109102611388010490565b80516001600160a01b0381168114620002fa57600080fd5b919050565b60008060008060008060c087890312156200031957600080fd5b6200032487620002e2565b95506200033460208801620002e2565b94506200034460408801620002e2565b93506200035460608801620002e2565b92506200036460808801620002e2565b915060a087015190509295509295509295565b608051615ff5620003bd600039600081816108e0015281816109b901528181610ff101528181612a43015281816133b0015281816134e201526135c50152615ff56000f3fe608060405234801561001057600080fd5b506004361061042c5760003560e01c80638aabb2d11161022d578063c4f8911c11610131578063e91a7ca6116100be578063e91a7ca614610c25578063e9f2838e14610c38578063ec915ee614610c45578063ef5bac2514610ca6578063f1caf09f14610d6b578063f2fde38b14610d7e578063f5b3b9e714610d91578063f8d8989814610da4578063f91c3b0d14610db7578063fbf4a61214610dca578063fbfa77cf14610dd957600080fd5b8063c4f8911c14610ac0578063c6d6916c14610ad3578063c891091314610ae6578063cd3293de14610b09578063d17e988314610bb3578063d5db7d5d14610bc6578063d81a698614610bd9578063d8aed14514610bec578063e5711e8b14610bff578063e65896c914610c1257600080fd5b8063a5b350c9116101ba578063a5b350c914610973578063a8de483414610986578063a90d728f14610999578063a9bf805c146109a1578063ac919fd4146109b4578063b6b55f25146109db578063b88a802f146109ee578063bf4eccdf146109f6578063bfd91c2314610a09578063c1be667714610a29578063c415b95c14610aad57600080fd5b80638aabb2d1146108b85780638aee8127146108cb5780638bc2ff5b146108de5780638bc7e8c4146109045780638da5cb5b1461090d578063929761791461091e57806397c4fac71461093157806398d721e01461093a5780639daa54b41461094d578063a42dce801461096057600080fd5b80632ab414fc116103345780636061ffc3116102c15780636061ffc3146107af57806367a52793146107ef5780636817031b146107f8578063715018a61461080b57806375417da614610813578063768bab45146108265780637bc7780b1461083957806383ba103f146108415780638429d51f146108545780638456cb591461089f578063883c6b24146108a757600080fd5b80632ab414fc146106205780632e1a7d4d146106335780633adbb5af146106465780633e20bf14146106a95780633f4ba83a146106cd5780634031234c146106d557806340c65f72146106de5780634df9d6ba146106f1578063523a19ac146107045780635c975abb146107a457600080fd5b8063150b7a02116103bd578063150b7a021461055357806316a6c4c51461057f57806316c621e0146105885780631705ffad1461059b57806319c2d37e146105a45780631d00ac3a146105b75780631d4bf4a0146105d75780631d8557d7146105df5780632630c12f146105e757806327156a68146105fa5780632a5bf6d21461060d57600080fd5b8063023245d714610431578063048c661d14610446578063057e9b7b1461046f57806309bf1e73146104865780630ab30d8a146104905780630c34b914146104a85780630c42dcaf146105115780630c679a7b1461051a5780630d4085121461052d5780630ecbcdab14610540575b600080fd5b61044461043f366004615723565b610dec565b005b601e54610459906001600160a01b031681565b604051610466919061573c565b60405180910390f35b61047860275481565b604051908152602001610466565b6104786203f48081565b600854600160801b90046001600160801b0316610478565b6104b06110a2565b6040516104669190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b610478611f4081565b610444610528366004615765565b611138565b61047861053b366004615782565b611162565b61044461054e3660046157ae565b6111de565b610566610561366004615812565b611228565b6040516001600160e01b03199091168152602001610466565b61047860285481565b610444610596366004615723565b611239565b610478602d5481565b6104786105b2366004615782565b6112ea565b6105ca6105c5366004615782565b611363565b6040516104669190615921565b602154610478565b610444611439565b601954610459906001600160a01b031681565b610478610608366004615765565b611447565b61047861061b366004615765565b61146c565b61044461062e36600461592f565b6114de565b610444610641366004615723565b611a07565b610659610654366004615782565b611b39565b6040516104669190600060c08201905082518252602083015115156020830152604083015160408301526060830151606083015260808301511515608083015260a083015160a083015292915050565b601e546106bd90600160a01b900460ff1681565b6040519015158152602001610466565b610444611bee565b61047860265481565b601c54610459906001600160a01b031681565b6104786106ff366004615765565b611bfe565b61078f610712366004615782565b6001600160a01b0391909116600090815260126020908152604080832093835292815290829020825160c0810184528154808252600183015460ff90811615159483019490945260028301549482019490945260038201546060820181905260048301549093161515608082015260059091015460a09091015291565b60408051928352602083019190915201610466565b60025460ff166106bd565b6014546015546016546107ca926001600160a01b0316919083565b604080516001600160a01b039094168452602084019290925290820152606001610466565b610478602a5481565b610444610806366004615765565b611ca0565b610444611f43565b610478610821366004615765565b611f55565b610444610834366004615782565b611fdc565b600c54610478565b61047861084f366004615782565b6120c4565b60205460215460225460235460245460255461087295949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610466565b6104446120f8565b6008546001600160801b0316610478565b6104446108c6366004615723565b612108565b6104446108d9366004615765565b612292565b7f0000000000000000000000000000000000000000000000000000000000000000610459565b610478602b5481565b6000546001600160a01b0316610459565b61047861092c366004615723565b6122e6565b61047860295481565b610444610948366004615765565b61237c565b61047861095b366004615765565b61242c565b61044461096e366004615765565b6124af565b610478610981366004615782565b612530565b610444610994366004615951565b6125d9565b610478612676565b601a54610459906001600160a01b031681565b6104597f000000000000000000000000000000000000000000000000000000000000000081565b6104446109e9366004615723565b612750565b6106bd6128a3565b610444610a04366004615782565b6128c2565b610a1c610a17366004615765565b612c25565b60405161046691906159cf565b610a7e610a37366004615782565b6012602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939460ff938416949293919291169086565b6040805196875294151560208701529385019290925260608401521515608083015260a082015260c001610466565b601f54610459906001600160a01b031681565b610444610ace366004615723565b612e49565b610444610ae1366004615765565b612e80565b610478610af4366004615765565b60136020526000908152604090206001015481565b600354600454600554600654600754600854600954610b55966001600160a01b0390811696811695169392916001600160801b0380821692600160801b909204169064ffffffffff1688565b604080516001600160a01b03998a16815297891660208901529590971694860194909452606085019290925260808401526001600160801b0390811660a08401521660c082015264ffffffffff90911660e082015261010001610466565b610478610bc1366004615765565b612f88565b601b54610459906001600160a01b031681565b610444610be73660046157ae565b613056565b610444610bfa3660046157ae565b613249565b610444610c0d366004615a45565b613286565b610478610c20366004615765565b6132f7565b610444610c33366004615723565b613374565b602e546106bd9060ff1681565b600a54600b54600c54600d54600e54600f54601054601154610c6b979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610466565b610d5e6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091525060408051610100810182526003546001600160a01b039081168252600454811660208301526005541691810191909152600654606082015260075460808201526008546001600160801b0380821660a0840152600160801b9091041660c082015260095464ffffffffff1660e082015290565b6040516104669190615a86565b610459610d79366004615723565b613593565b610444610d8c366004615765565b613654565b610478610d9f366004615b03565b61368f565b601d54610459906001600160a01b031681565b610444610dc5366004615782565b6136c1565b610478670de0b6b3a764000081565b602c54610459906001600160a01b031681565b610df46137f6565b610dfc613820565b3360009081526012602090815260408083208484529091529020600181015460ff1615610e3c576040516367c11db560e01b815260040160405180910390fd5b336000908152601360209081526040808320858452600281019092529091205460ff16610e7c5760405163346fad7360e01b815260040160405180910390fd5b610e886003600a613844565b6000610e9433856112ea565b90508015610eb5576040516302c9375f60e21b815260040160405180910390fd5b60008481526002830160209081526040808320805460ff19169055602f909152812080546001600160a01b03191690558254610ef390600190615b4e565b6001600160401b03811115610f0a57610f0a6157d0565b604051908082528060200260200182016040528015610f33578160200160208202803683370190505b5090506000805b8454811015610fc65786856000018281548110610f5957610f59615b61565b906000526020600020015414610fb457846000018181548110610f7e57610f7e615b61565b9060005260206000200154838381518110610f9b57610f9b615b61565b602090810291909101015281610fb081615b77565b9250505b80610fbe81615b77565b915050610f3a565b508151610fd9908590602085019061565e565b50604051632142170760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342842e0e9061102a90309033908b90600401615b90565b600060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b50506040518881523392507f2aa1b4c95f3b2da9c955947fca584743ea0d457708fadf209c093061e98c4ccb915060200160405180910390a2505050505061109f60018055565b50565b6110ea60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506040805161010081018252600a548152600b546020820152600c5491810191909152600d546060820152600e546080820152600f5460a082015260105460c082015260115460e082015290565b61114061384e565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b60008061116e836122e6565b9050600061117c8585612530565b9050600181101561119c57676765c793fa10079d601b1b925050506111d8565b60006111b36026548461387b90919063ffffffff16565b9050816111c882670de0b6b3a7640000615bb4565b6111d29190615bcb565b93505050505b92915050565b6111e66137f6565b6111ee613820565b80806000036112105760405163162908e360e11b815260040160405180910390fd5b61121a83836138a1565b5061122460018055565b5050565b630a85bd0160e11b5b949350505050565b6112416137f6565b6014546001600160a01b031661126a57604051632506892760e01b815260040160405180910390fd5b8060000361128b5760405163162908e360e11b815260040160405180910390fd5b6014546112a3906001600160a01b0316333084613b4c565b6112ac81613bac565b60405181815233907fe79ffd9a88f13c8c49fb545410401d9877ab90d9dcf7b15d4dc0601993a0d9139060200160405180910390a261109f60018055565b6001600160a01b0382166000908152601260209081526040808320848452825291829020825160c0810184528154808252600183015460ff908116151594830194909452600283015494820194909452600382015460608201526004820154909216151560808301526005015460a09091015292915050565b61136b6156a5565b6113736156a5565b6001600160a01b0384166000908152601260209081526040808320868452825291829020825160c0808201855282548252600183015460ff90811615159483018590526002840154958301958652600384015460608085019190915260048501549091161515608080850191825260059095015460a0850152908701949094529351918501919091528051845290511515918301919091526114158585612530565b60208301526114248585611162565b60408301526060015160a08201529392505050565b6114456003600a613844565b565b6000806114538361146c565b9050600061146084612f88565b90506112318183615bed565b600354604051630481930d60e21b81526000916001600160a01b0316906312064c349061149d90859060040161573c565b602060405180830381865afa1580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d89190615c00565b6114e661384e565b60008260098111156114fa576114fa615c19565b03611593576127108111156115565760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c69717569646174696f6e207468726573686f6c6400000060448201526064015b60405180910390fd5b6026819055602754602854604080518481526020810193909352820152600080516020615fa0833981519152906060015b60405180910390a15050565b60018260098111156115a7576115a7615c19565b036115e05760278190556026546028546040805192835260208301849052820152600080516020615fa083398151915290606001611587565b60028260098111156115f4576115f4615c19565b036116895762015180811015801561160f575062093a808111155b6116525760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590819dc9858d9481c195c9a5bd960621b604482015260640161154d565b60288190556026546027546040805192835260208301919091528101829052600080516020615fa083398151915290606001611587565b600382600981111561169d5761169d615c19565b03611736576127108111156116ef5760405162461bcd60e51b8152602060048201526018602482015277526174696f2063616e6e6f7420657863656564203130302560401b604482015260640161154d565b602d80549082905560408051828152602081018490527fab45a8374e3d1f623df0e88a957317731ccc02ed377e5b0213661f85bf60b73191015b60405180910390a1505050565b600482600981111561174a5761174a615c19565b036117b85760018111156117705760405162461bcd60e51b815260040161154d90615c2f565b602e805460ff19166001831490811790915560405160ff909116151581527f0565da69314136ea081c6239b9813f6ef6d213f57210dfef1d470af55b0235f390602001611587565b60058260098111156117cc576117cc615c19565b036118485760018111156117f25760405162461bcd60e51b815260040161154d90615c2f565b601e8054600160a01b60018414810260ff60a01b199092169190911791829055604051910460ff16151581527f932a526fd95bf1b5aab775a957e284733f02db3a9824802cbcbb4fbca239cbe190602001611587565b600682600981111561185c5761185c615c19565b036118e9576127108111156118ab5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420696e737572616e63652066656560581b604482015260640161154d565b602980549082905560408051828152602081018490527f87c461d1c2c7c5cd98495e5517aa11d9df56d0819cc4e8e53d9664c4b18f6db19101611729565b60078260098111156118fd576118fd615c19565b0361194057601180549082905560408051828152602081018490527f1d830358c94d390366ad7162b72e731448e195f3576e63b1f57f5e43c719c5aa9101611729565b600882600981111561195457611954615c19565b0361199757602a80549082905560408051828152602081018490527f828cf983933545af35b9ba46eec951db1cb4c5433c3ec403aeced2963c2647909101611729565b60098260098111156119ab576119ab615c19565b036119ee57602b80549082905560408051828152602081018490527f733071ab8253b372ed26a6d1b04aec71c4bfcd209c93397df32bb77478cdd2c89101611729565b604051630309cb8760e51b815260040160405180910390fd5b611a0f6137f6565b611a17613820565b8080600003611a395760405163162908e360e11b815260040160405180910390fd5b602e5460ff1615611a5d576040516370a7336d60e11b815260040160405180910390fd5b611a6633613c2f565b611a726003600a613844565b601f546000906001600160a01b031615611a9957602b54611a9490849061387b565b611a9c565b60005b90506000611aaa8285615b4e565b9050611ab581613cd6565b6000611ac56003600a8433614009565b50509050611ad1614131565b8215611af657601f54600454611af6916001600160a01b039182169133911686613b4c565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a25050505061109f60018055565b611b766040518060c00160405280600081526020016000151581526020016000815260200160008152602001600015158152602001600081525090565b506001600160a01b0382166000908152601260209081526040808320848452825291829020825160c08101845281548152600182015460ff908116151593820193909352600282015493810193909352600381015460608401526004810154909116151560808301526005015460a082015292915050565b611bf661384e565b6114456142e8565b6014546000906001600160a01b0316611c1957506000919050565b6000611c2483611447565b905080600003611c375750600092915050565b6001600160a01b038316600090815260176020526040812054601554670de0b6b3a764000091611c6691615b4e565b611c709084615bb4565b611c7a9190615bcb565b6001600160a01b0385166000908152601860205260409020549091506112319082615bed565b611ca861384e565b602c546001600160a01b03828116911614801590611cd05750602c546001600160a01b031615155b15611e3957602c5460405163ce96cb7760e01b81526001600160a01b039091169063ce96cb7790611d0590309060040161573c565b602060405180830381865afa925050508015611d3e575060408051601f3d908101601f19168201909252611d3b91810190615c00565b60015b611e2e57611d4a615c5e565b806308c379a003611da75750611d5e615c79565b80611d695750611dc0565b602c546040516001600160a01b03909116907fc4cede9b2b63ba72d39d2f630b4b742e1cada59d7a073ac4e10da9ac7b2eb10590600090a250611e39565b634e487b7103611dc057611db9615d02565b90611d6957505b3d808015611dea576040519150601f19603f3d011682016040523d82523d6000602084013e611def565b606091505b50602c546040516001600160a01b03909116907fc4cede9b2b63ba72d39d2f630b4b742e1cada59d7a073ac4e10da9ac7b2eb10590600090a250611e39565b611e3781614334565b505b602c80546001600160a01b031981166001600160a01b0384811691821790935560048054604080516338d52e0f60e01b815290519486169591909116936338d52e0f928281019260209291908290030181865afa158015611e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec29190615d22565b6001600160a01b031614158015611ee157506001600160a01b03821615155b15611eff57604051631b3b488360e11b815260040160405180910390fd5b816001600160a01b0316816001600160a01b03167f483bdedaaf23706a9800ac1af0d852b34927780d79f9d6ba60a80c7cad75ea3960405160405180910390a35050565b611f4b61384e565b61144560006144f3565b600080805b6001600160a01b0384166000908152601360205260409020548111611fd5576001600160a01b038416600090815260136020908152604080832084845260020190915290205460ff1615611fc3576000611fb3826122e6565b9050611fbf8184615bed565b9250505b80611fcd81615b77565b915050611f5a565b5092915050565b611fe461384e565b611ff06003600a613844565b6001600160a01b03821661205c5760405162461bcd60e51b815260206004820152602d60248201527f4c656e64696e67506f6f6c3a20526563697069656e742063616e6e6f7420626560448201526c207a65726f206164647265737360981b606482015260840161154d565b60035460405163768bab4560e01b81526001600160a01b039091169063768bab459061208e9085908590600401615d3f565b600060405180830381600087803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b505050505050565b6001600160a01b03821660009081526012602090815260408083208484529091528120600581015481546112319190615b4e565b61210061384e565b611445614543565b6121106137f6565b612118613820565b3360008181526012602090815260408083208584529091529020600181015460ff166121575760405163013e5dc360e61b815260040160405180910390fd5b6001600160a01b038216600090815260136020908152604080832086845260020190915290205460ff1661219e5760405163346fad7360e01b815260040160405180910390fd5b60285481600201546121b09190615bed565b4211156121d057604051634b3c322760e11b815260040160405180910390fd5b600481015460ff166121f557604051632d1118e960e21b815260040160405180910390fd5b6122016003600a613844565b600061220d8385612530565b9050801561222e576040516312bf4cab60e01b815260040160405180910390fd5b60018201805460ff1990811690915560006002840181905560048401805490921690915560405185916001600160a01b038616917fd66fca94ddede030b58f223f22d6b43407a443bd68e2e73d38ab7675cf480acc9190a350505061109f60018055565b61229a61384e565b6014546001600160a01b0316156122c45760405163b6de9a7160e01b815260040160405180910390fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b60195460405163b94fe91760e01b815260048101839052600091829182916001600160a01b03169063b94fe917906024016040805180830381865afa158015612333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123579190615d58565b9150915081600003611fd557604051633b0c4c3160e11b815260040160405180910390fd5b61238461384e565b6001600160a01b0381166123ab576040516303988b8160e61b815260040160405180910390fd5b601e546001600160a01b03908116908216036123da5760405163aba916dd60e01b815260040160405180910390fd5b601e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f593eaf5e0e1afc1c041a664a437fdae719a628836785d06572b008e6ca5c189d90600090a35050565b600080805b6001600160a01b038416600090815260136020526040902054811015611fd5576001600160a01b038416600090815260136020526040902080546124919186918490811061248157612481615b61565b9060005260206000200154612530565b61249b9083615bed565b9150806124a781615b77565b915050612431565b6124b761384e565b6001600160a01b0381166124de576040516303988b8160e61b815260040160405180910390fd5b601f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f5d16ad41baeb009cd23eb8f6c7cde5c2e0cd5acf4a33926ab488875c37c37f3890600090a35050565b6001600160a01b03821660009081526012602090815260408083208484528252808320815160c08101835281548152600182015460ff9081161515948201949094526002820154928101929092526003810154606083018190526004820154909316151560808301526005015460a082015260085490916125cd916125c59190600160801b90046001600160801b0316615b4e565b825190614580565b81516112319190615bed565b6125e16137f6565b6125e9613820565b818060000361260b5760405163162908e360e11b815260040160405180910390fd5b601e54600160a01b900460ff16612635576040516312cefcd560e31b815260040160405180910390fd5b6001600160a01b03821661265c576040516303988b8160e61b815260040160405180910390fd5b6126678484846145c3565b5061267160018055565b505050565b601f546000906001600160a01b031633146126a3576040516282b42960e81b815260040160405180910390fd5b602c546001600160a01b03166126ea5760405162461bcd60e51b815260206004820152600c60248201526b139bc81d985d5b1d081cd95d60a21b604482015260640161154d565b60045460218054426022556000909155601f546001600160a01b039283169261271691849116836148c1565b6040518181527f7edfb0d5d58c6a3d398df94a9bdfa2b33f3fa42ae40d72ebdc717d2db3953ee59060200160405180910390a19150505b90565b6127586137f6565b612760613820565b80806000036127825760405163162908e360e11b815260040160405180910390fd5b61278b33613c2f565b6127976003600a613844565b601f546000906001600160a01b0316156127be57602a546127b990849061387b565b6127c1565b60005b905060006127cf8285615b4e565b905060006127e16003600a84336148e7565b33600090815260136020526040812060010154919250036128165733600090815260136020526040902060010182905561283e565b3360009081526013602052604081206001018054849290612838908490615bed565b90915550505b612846614131565b821561286b57601f5460045461286b916001600160a01b039182169133911686613b4c565b604080518381526020810183905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159101611b24565b60006128ad6137f6565b6128b633613c2f565b50600161274d60018055565b6128ca6137f6565b601e546001600160a01b031633146128f4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03821660009081526012602090815260408083208484529091529020600181015460ff1661293c5760405163013e5dc360e61b815260040160405180910390fd5b6001600160a01b038316600090815260136020908152604080832085845260020190915290205460ff166129835760405163346fad7360e01b815260040160405180910390fd5b61298f6003600a613844565b600481015460ff1680156129b4575060285481600201546129b09190615bed565b4211155b156129d2576040516363e5f12d60e11b815260040160405180910390fd5b60006129de8484612530565b60018301805460ff199081169091556000600280860182905560048087018054851690556001600160a01b03808a1684526013602090815260408086208b87529094019052928290208054909416909355601e5490516323b872dd60e01b81529394507f00000000000000000000000000000000000000000000000000000000000000008216936323b872dd93612a7b9330931691899101615b90565b600060405180830381600087803b158015612a9557600080fd5b505af1158015612aa9573d6000803e3d6000fd5b5050506000848152602f602052604080822080546001600160a01b03191690556005546008549151636f3df85160e11b81529293508392839283926001600160a01b03169163de7bf0a291612b18918c918a91600160801b9091046001600160801b0316908d90600401615d7c565b6080604051808303816000875af1158015612b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5b9190615dab565b600854600160801b90046001600160801b031660038b810191909155546004549498509296509094509250612b9f916001600160a01b039081169133911687613b4c565b6000808755600587018190556007849055612bc190600390600a908790614a2b565b601e5487906001600160a01b03808b1691167f3f2ad1b98f8838e6f90c126ac5f8a9875c7acf2a56aeb8a630c0fa475b07056a88612bfe856122e6565b6040805192835260208301919091520160405180910390a450505050505061122460018055565b612c2d6156e6565b6001600160a01b0382166000908152601360205260409020612c4d6156e6565b815460408051602080840282018101909252828152918491830182828015612c9457602002820191906000526020600020905b815481526020019060010190808311612c80575b505050918352505081546001600160401b03811115612cb557612cb56157d0565b604051908082528060200260200182016040528015612cee57816020015b612cdb6156a5565b815260200190600190039081612cd35790505b506060820152600060208201819052604082018190525b8254811015612e4157306001600160a01b0316631d00ac3a86856000018481548110612d3357612d33615b61565b90600052602060002001546040518363ffffffff1660e01b8152600401612d5b929190615d3f565b60e060405180830381865afa158015612d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9c9190615df6565b82606001518281518110612db257612db2615b61565b602002602001018190525081606001518181518110612dd357612dd3615b61565b60200260200101516020015182602001818151612df09190615bed565b9052508254612e1b90849083908110612e0b57612e0b615b61565b90600052602060002001546122e6565b82604001818151612e2c9190615bed565b90525080612e3981615b77565b915050612d05565b509392505050565b601a546001600160a01b03163314612e73576040516282b42960e81b815260040160405180910390fd5b61109f6003600a83614b7d565b6003546001600160a01b03163314612eda5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792052546f6b656e2063616e2075706461746520726577617264730000604482015260640161154d565b6000612ee582611447565b90508015612f68576001600160a01b038216600090815260176020526040812054601554670de0b6b3a764000091612f1c91615b4e565b612f269084615bb4565b612f309190615bcb565b90508015612f66576001600160a01b03831660009081526018602052604081208054839290612f60908490615bed565b90915550505b505b506015546001600160a01b03909116600090815260176020526040902055565b601e546000906001600160a01b0316612fa357506000919050565b601e5460405160009182916001600160a01b0390911690612fc890869060240161573c565b60408051601f198184030181529181526020820180516001600160e01b031663c084b10b60e01b17905251612ffd9190615e84565b600060405180830381855afa9150503d8060008114613038576040519150601f19603f3d011682016040523d82523d6000602084013e61303d565b606091505b5091509150808060200190518101906112319190615c00565b61305e6137f6565b613066613820565b33600081815260126020908152604080832086845290915281209161308b90856120c4565b9050600061309a33868661368f565b601b54601f54604051636eb1769f60e11b81523360048201526001600160a01b039182166024820152929350839291169063dd62ed3e90604401602060405180830381865afa1580156130f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131159190615c00565b1015613134576040516339e067d560e21b815260040160405180910390fd5b601b546040516370a0823160e01b815282916001600160a01b0316906370a082319061316490339060040161573c565b602060405180830381865afa158015613181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a59190615c00565b10156131c457604051631e9acf1760e31b815260040160405180910390fd5b6131ce85856138a1565b6131d781614c56565b60048301805460ff191660011790556131f08483615bed565b8360050160008282546132039190615bed565b909155505060405182815285907fd5c2dc3f0ec76ece0185d374bca424347955bce9b5e7b08757bb8e1bb8d9c0a99060200160405180910390a250505061122460018055565b6132516137f6565b613259613820565b808060000361327b5760405163162908e360e11b815260040160405180910390fd5b61121a8383336145c3565b61328e61384e565b6003546001600160a01b03908116908416036132e35760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba103932b9b1bab290292a37b5b2b760611b604482015260640161154d565b6126716001600160a01b03841683836148c1565b600080805b6001600160a01b038416600090815260136020526040902054811015611fd5576001600160a01b038416600090815260136020908152604080832084845260020190915290205460ff1615613362576133558482612530565b61335f9083615bed565b91505b8061336c81615b77565b9150506132fc565b61337c6137f6565b613384613820565b6133906003600a613844565b6040516331a9108f60e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156133f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341b9190615d22565b6001600160a01b031614613442576040516384b359d160e01b815260040160405180910390fd5b336000908152601360209081526040808320848452600281019092529091205460ff16156134835760405163e8edca8360e01b815260040160405180910390fd5b60008281526002820160209081526040808320805460ff191660019081179091558454908101855584845282842001859055848352602f9091529081902080546001600160a01b031916339081179091559051632142170760e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316916342842e0e91613522919030908790600401615b90565b600060405180830381600087803b15801561353c57600080fd5b505af1158015613550573d6000803e3d6000fd5b50506040518481523392507f1c4b8380f61aea3d5d98cbadaf2e6b2e4f3d8ca8c0fce1290b26ac267158745f915060200160405180910390a25061109f60018055565b6000818152602f60205260408120546001600160a01b0316613638576040516331a9108f60e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d89190615d22565b506000908152602f60205260409020546001600160a01b031690565b61365c61384e565b6001600160a01b038116613686576000604051631e4fbdf760e01b815260040161154d919061573c565b61109f816144f3565b60008061369c85856120c4565b90506136b660295484836136b09190615bed565b9061387b565b9150505b9392505050565b6136c96137f6565b6136d1613820565b6001600160a01b03821660009081526012602090815260408083208484529091529020600181015460ff161561371a5760405163b84f7eb560e01b815260040160405180910390fd5b6001600160a01b038316600090815260136020908152604080832085845260020190915290205460ff166137615760405163346fad7360e01b815260040160405180910390fd5b61376d6003600a613844565b60006137798484611162565b9050602754811061379d5760405163317416e560e11b815260040160405180910390fd5b6001828101805460ff1916909117905542600283015560405183906001600160a01b0386169033907f4601ff28b457321206747d0540f02cfb8a9d6bf3021146378e8544e1817e20e790600090a4505061122460018055565b60026001540361381957604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b60025460ff16156114455760405163d93c066560e01b815260040160405180910390fd5b6112248282614d49565b6000546001600160a01b03163314611445573360405163118cdaa760e01b815260040161154d919061573c565b60008115611388198390048411151761389357600080fd5b506127109102611388010490565b3360009081526012602090815260408083208584529091529020600181015460ff16156138e157604051630bff073160e31b815260040160405180910390fd5b336000908152601360209081526040808320868452600281019092529091205460ff166139215760405163346fad7360e01b815260040160405180910390fd5b600061392c856122e6565b90508060000361394f57604051638dc8d9b360e01b815260040160405180910390fd5b61395b6003600a613844565b61396484613cd6565b600061397b6026548361387b90919063ffffffff16565b90508461398833886112ea565b6139929190615bed565b8110156139b257604051630369fbd160e51b815260040160405180910390fd5b600554600854604051639ceeaca760e01b81523360048201819052602482015260448101889052600160801b9091046001600160801b0316606482015260848101889052600091829182916001600160a01b031690639ceeaca79060a4016060604051808303816000875af1158015613a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a539190615eb3565b600854600160801b90046001600160801b031660038b81019190915554604051635c921eb960e01b815293965091945092506001600160a01b031690635c921eb990613aa59033908c90600401615d3f565b600060405180830381600087803b158015613abf57600080fd5b505af1158015613ad3573d6000803e3d6000fd5b5050505081876000016000828254613aeb9190615bed565b90915550506007819055613b046003600a60008b614a2b565b613b0c614131565b60405188815233907fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a367509060200160405180910390a2505050505050505050565b613ba684856001600160a01b03166323b872dd868686604051602401613b7493929190615b90565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614e72565b50505050565b6014546001600160a01b0316613bd557604051632506892760e01b815260040160405180910390fd5b6006546000819003613be5575050565b811561122457600081613c0084670de0b6b3a7640000615bb4565b613c0a9190615bcb565b90508060146001016000828254613c219190615bed565b909155505042601655505050565b6014546001600160a01b0316613c425750565b6000613c4d82611bfe565b90508015611224576001600160a01b038083166000908152601860209081526040808320839055601554601790925290912055601454613c8f911683836148c1565b816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea682604051613cca91815260200190565b60405180910390a25050565b602c546001600160a01b0316613ce95750565b600480546003546040516370a0823160e01b81526000936001600160a01b03938416936370a0823193613d1f939116910161573c565b602060405180830381865afa158015613d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d609190615c00565b905081811015611224576000613d768284615b4e565b602c5460405163ce96cb7760e01b81529192506000916001600160a01b039091169063ce96cb7790613dac90309060040161573c565b602060405180830381865afa158015613dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ded9190615c00565b90506000613dfb8285615bed565b905082811015613e645760405162461bcd60e51b815260206004820152602e60248201527f4e6f7420656e6f756768206c697175696469747920746f2066756c66696c6c2060448201526d1d1a19481dda5d1a191c985dd85b60921b606482015260840161154d565b6006546000613e738783615b4e565b905060008115613e8e57602d54613e8b90839061387b565b90505b8585811115613e9a5750845b8015613ea957613ea981614334565b600480546040516370a0823160e01b81526001600160a01b03909116916370a0823191613ed89130910161573c565b602060405180830381865afa158015613ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f199190615c00565b600480546003546040516370a0823160e01b81526001600160a01b03928316936370a0823193613f4b9316910161573c565b602060405180830381865afa158015613f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8c9190615c00565b613f969190615bed565b975088881015613ffe5760405162461bcd60e51b815260206004820152602d60248201527f496e73756666696369656e74206c69717569646974792061667465722076617560448201526c1b1d081dda5d1a191c985dd85b609a1b606482015260840161154d565b505050505050505050565b600080600060018510156140305760405163162908e360e11b815260040160405180910390fd5b61403a8787614d49565b86546005880154604051636b81068560e11b8152600092839283926001600160a01b039092169163d7020d0a91614083918b9182918e916001600160801b031690600401615ee8565b6060604051808303816000875af11580156140a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c69190615f19565b9250925092508295506140dc8a8a600084614a2b565b60408051828152602081018590526001600160a01b038916917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568910160405180910390a2999198508997509095505050505050565b602c546001600160a01b031661414357565b600654602d5460009061415790839061387b565b600480546003546040516370a0823160e01b81529394506000936001600160a01b03928316936370a082319361418f9316910161573c565b602060405180830381865afa1580156141ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d09190615c00565b9050818111156141f75760006141e68383615b4e565b90506141f181614ecc565b506142ae565b818110156142ae57600061420b8284615b4e565b90506000602c60009054906101000a90046001600160a01b03166001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa158015614262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142869190615c00565b905060008183116142975782614299565b815b905080156142aa576142aa81614334565b5050505b6020805460408051848152928301919091527f8f9497c27f572ff1a65e8b2c7a0706d466466ae0b5efc78462b5f0021da669569101611729565b6142f0615101565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405161432a919061573c565b60405180910390a1565b602c546040516328c0620360e01b8152600160048201526000916001600160a01b0316906328c0620390602401602060405180830381865afa15801561437e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143a29190615c00565b602c54604051632d182be560e21b815260048101859052306024820181905260448201529192506000916001600160a01b039091169063b460af94906064016020604051808303816000875af1158015614400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144249190615c00565b90506000602060030154831115614487576023546000906144459085615b4e565b9050670de0b6b3a764000061445a8285615bb4565b6144649190615bcb565b9150816020600101600082825461447b9190615bed565b9091555061448b915050565b5060005b60006144978286615b4e565b6003546004549192506144b7916001600160a01b039081169116836148c1565b6020548511156144cb5760006020556144e6565b84602060000160008282546144e09190615b4e565b90915550505b5050506023555042602455565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61454b613820565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861431d3390565b600081156b019d971e4fe8401e7400000019839004841115176145a257600080fd5b50676765c793fa10079d601b1b91026b019d971e4fe8401e74000000010490565b816000036145e45760405163162908e360e11b815260040160405180910390fd5b6001600160a01b03811661460b576040516303988b8160e61b815260040160405180910390fd5b6001600160a01b0381166000908152601360209081526040808320868452600281019092529091205460ff166146545760405163346fad7360e01b815260040160405180910390fd5b6146606003600a613844565b6001600160a01b03821660009081526012602090815260408083208784529091529020600181015460ff16801561469c5750600481015460ff16155b156146ba5760405163224aae4f60e21b815260040160405180910390fd5b600181015460ff1680156146de575060285481600201546146db9190615bed565b42115b156146fc57604051634b3c322760e11b815260040160405180910390fd5b60006147088487612530565b90506000818611614719578561471b565b815b9050600080600080600360020160009054906101000a90046001600160a01b03166001600160a01b031663de7bf0a28a87600360050160109054906101000a90046001600160801b03168f6040518563ffffffff1660e01b81526004016147859493929190615d7c565b6080604051808303816000875af11580156147a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147c89190615dab565b600854600160801b90046001600160801b031660038c81019190915554600454949850929650909450925061480c916001600160a01b039081169133911688613b4c565b60078390558015614831578087600001600082825461482b9190615bed565b90915550505b865461483e908390615b4e565b8088556005880154111561485457865460058801555b865460000361486557600060058801555b6148746003600a876000614a2b565b6040518581526001600160a01b038a169033907f05f2eeda0e08e4b437f487c8d7d29b14537d15e3488170dc3de5dbdf8dac46849060200160405180910390a35050505050505050505050565b61267183846001600160a01b031663a9059cbb8585604051602401613b74929190615d3f565b6000600183101561490b5760405163162908e360e11b815260040160405180910390fd5b6149158585614d49565b84546001860154614935916001600160a01b039182169133911686613b4c565b8454600586015460405163b3f1c93d60e01b81526000928392839283926001600160a01b03169163b3f1c93d916149809130918b918d916001600160801b0390911690600401615ee8565b6080604051808303816000875af115801561499f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149c39190615f47565b93509350935093508294506149db8989896000614a2b565b60408051888152602081018790526001600160a01b038816917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a250505050949350505050565b8115614a5857614a3a82615124565b6001600160801b03168460030154614a529190615bed565b60038501555b8015614aaa578084600301541015614a835760405163bb55fd2760e01b815260040160405180910390fd5b614a8c81615124565b6001600160801b03168460030154614aa49190615b4e565b60038501555b600384015460048501546000614ac0878761515c565b90506000614ace88886151bd565b90506000614ae489600301548a60040154615218565b9050614b08886002015489600301548a600401548b600501548c6006015486615264565b600189018190556007890154614b209183918761534e565b8855614b2c8989614d49565b875460018901546040517f48f4f83c2f1843e8fd7ef13ffcff40fca5055dc1b9b074cd9dd0f9a8a8e09dd992614b6a92908252602082015260400190565b60405180910390a1505050505050505050565b6001811015614b9f5760405163824c180760e01b815260040160405180910390fd5b60028201548015614c02576000614bb8826101f461387b565b90506000828411614bd257614bcd8484615b4e565b614bdc565b614bdc8385615b4e565b905081811115614bff57604051631a8b543360e21b815260040160405180910390fd5b50505b60028301829055614c168484600080614a2b565b60408051828152602081018490527fd45d1eb66419c036e2fa401916c7db417696f889cf4ab8ca92272327e8e1c83e91015b60405180910390a150505050565b601f546001600160a01b0316614c7f576040516303988b8160e61b815260040160405180910390fd5b80600003614ca05760405163162908e360e11b815260040160405180910390fd5b601f5460048054604051636033e31560e01b81526001600160a01b0391821692810192909252336024830152604482018490527f65991ea5d80f7b6dc8c32648f59c5a653beb10caddae8fefad6966b35a0a65f1606483015290911690636033e315906084016020604051808303816000875af1158015614d25573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112249190615f84565b6006820154600090614d629064ffffffffff1642615b4e565b90506001811015614d7257505050565b60058301546001600160801b03166001811015614da257604051630a1cf3ed60e21b815260040160405180910390fd5b82546005850154614dbe919084906001600160801b0316615395565b6005850180546001600160801b0319166001600160801b0392831617908190556001850154614df99290918591600160801b909104166153b2565b6005850180546001600160801b03908116600160801b93821684028181179384905560068901805464ffffffffff19164264ffffffffff16179055604080519184169092178152939092041660208301527ff92a3abee06d57c996e7e19eb34560241fdc1fe67e9ebd503177710bf9fd82049101614c48565b6000614e876001600160a01b038416836153ce565b90508051600014158015614eac575080806020019051810190614eaa9190615f84565b155b156126715782604051635274afe760e01b815260040161154d919061573c565b600354604051635c921eb960e01b81526001600160a01b0390911690635c921eb990614efe9030908590600401615d3f565b600060405180830381600087803b158015614f1857600080fd5b505af1158015614f2c573d6000803e3d6000fd5b505060048054602c5460405163095ea7b360e01b81526001600160a01b03928316955063095ea7b39450614f67939190921691869101615d3f565b6020604051808303816000875af1158015614f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614faa9190615f84565b50602c54604051636e553f6560e01b8152600481018390523060248201526000916001600160a01b031690636e553f65906044016020604051808303816000875af1158015614ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150219190615c00565b602c546040516328c0620360e01b81526000600482018190529293506001600160a01b03909116906328c0620390602401602060405180830381865afa15801561506f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150939190615c00565b9050600082116150dc5760405162461bcd60e51b815260206004820152601460248201527315985d5b1d0819195c1bdcda5d0819985a5b195960621b604482015260640161154d565b82602060000160008282546150f19190615bed565b9091555050602355505042602555565b60025460ff1661144557604051638dfc202b60e01b815260040160405180910390fd5b60006001600160801b03821115615158576040516306dfcc6560e41b8152608060048201526024810183905260440161154d565b5090565b600682015460009081906151779064ffffffffff1642615b4e565b9050600181101561518e57505060048201546111d8565b6005840154600184015461123191600160801b90046001600160801b0316906151b790846153dc565b90614580565b600682015460009081906151d89064ffffffffff1642615b4e565b905060018110156151f857505060058201546001600160801b03166111d8565b60058401548354611231916001600160801b0316906151b790848361542b565b600060018310156152355750676765c793fa10079d601b1b6111d8565b600061525361524e6152478587615bed565b859061545f565b615124565b6001600160801b0316949350505050565b600085871115806152755750838710155b806152805750858511155b8061528b5750838510155b156152a95760405163abc83fed60e01b815260040160405180910390fd5b60008383116152eb5760006152be888a615b4e565b905060006152d6866152d08785614580565b9061545f565b90506152e2818a615bed565b92505050615343565b60006152f78585615b4e565b9050600061531086676765c793fa10079d601b1b615b4e565b9050600061531e8b89615b4e565b90506000615330836152d08685614580565b905061533c818d615bed565b9450505050505b979650505050505050565b6000600182101561536157506000611231565b600061536d8686614580565b9050600061537b8286614580565b905060006153898284615b4e565b98975050505050505050565b6000806153a385858561542b565b90506136b661524e8285614580565b6000806153bf85856153dc565b90506136b661524e8483614580565b60606136ba8383600061549c565b600060018210156153f95750676765c793fa10079d601b1b6111d8565b6000615409846301e1338061545f565b905060006154178285614580565b905061542281615539565b95945050505050565b6000806154388486615bb4565b90506154486301e1338082615bcb565b90506136b681676765c793fa10079d601b1b615bed565b60008115676765c793fa10079d601b1b6002840419048411171561548257600080fd5b50676765c793fa10079d601b1b9190910260028204010490565b6060814710156154c1573060405163cd78605960e01b815260040161154d919061573c565b600080856001600160a01b031684866040516154dd9190615e84565b60006040518083038185875af1925050503d806000811461551a576040519150601f19603f3d011682016040523d82523d6000602084013e61551f565b606091505b509150915061552f8683836155e2565b9695505050505050565b6000816000036155555750676765c793fa10079d601b1b919050565b506b169e43a85eb381aa580000006b1363156bbee3016d700000006b1027e72f1f128130880000006b0cecb8f27f4200f3a00000006b09b18ab5df7180b6b80000006b06765c793fa10079d000000086800204808702919091048087029290920480870293909304808702949094048087029590950495010101010101676765c793fa10079d601b1b0190565b6060826155f7576155f282615635565b6136ba565b815115801561560e57506001600160a01b0384163b155b1561562e5783604051639996b31560e01b815260040161154d919061573c565b50806136ba565b8051156156455780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b828054828255906000526020600020908101928215615699579160200282015b8281111561569957825182559160200191906001019061567e565b5061515892915061570e565b6040518060e0016040528060008152602001600081526020016000815260200160001515815260200160008152602001600081526020016000151581525090565b6040518060800160405280606081526020016000815260200160008152602001606081525090565b5b80821115615158576000815560010161570f565b60006020828403121561573557600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461109f57600080fd5b60006020828403121561577757600080fd5b81356136ba81615750565b6000806040838503121561579557600080fd5b82356157a081615750565b946020939093013593505050565b600080604083850312156157c157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561580b5761580b6157d0565b6040525050565b6000806000806080858703121561582857600080fd5b843561583381615750565b935060208581013561584481615750565b93506040860135925060608601356001600160401b038082111561586757600080fd5b818801915088601f83011261587b57600080fd5b81358181111561588d5761588d6157d0565b60405191506158a5601f8201601f19168501836157e6565b80825289848285010111156158b957600080fd5b808484018584013760008482840101525080935050505092959194509250565b8051825260208101516020830152604081015160408301526060810151151560608301526080810151608083015260a081015160a083015260c0810151151560c08301525050565b60e081016111d882846158d9565b6000806040838503121561594257600080fd5b8235600a81106157a057600080fd5b60008060006060848603121561596657600080fd5b8335925060208401359150604084013561597f81615750565b809150509250925092565b600081518084526020808501945080840160005b838110156159c4576159b18783516158d9565b60e096909601959082019060010161599e565b509495945050505050565b60208082528251608083830152805160a0840181905260009291820190839060c08601905b80831015615a1457835182529284019260019290920191908401906159f4565b508387015160408701526040870151606087015260608701519350601f19868203016080870152615343818561598a565b600080600060608486031215615a5a57600080fd5b8335615a6581615750565b92506020840135615a7581615750565b929592945050506040919091013590565b60006101008201905060018060a01b0380845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160018060801b0380821660a08501528060c08601511660c0850152505060e0830151611fd560e084018264ffffffffff169052565b600080600060608486031215615b1857600080fd5b8335615b2381615750565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156111d8576111d8615b38565b634e487b7160e01b600052603260045260246000fd5b600060018201615b8957615b89615b38565b5060010190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b80820281158282048414176111d8576111d8615b38565b600082615be857634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156111d8576111d8615b38565b600060208284031215615c1257600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b602080825260159082015274496e76616c696420626f6f6c65616e2076616c756560581b604082015260600190565b600060033d111561274d5760046000803e5060005160e01c90565b600060443d1015615c875790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615cb657505050505090565b8285019150815181811115615cce5750505050505090565b843d8701016020828501011115615ce85750505050505090565b615cf7602082860101876157e6565b509095945050505050565b60008060233d1115615d1e576020600460003e50506000516001905b9091565b600060208284031215615d3457600080fd5b81516136ba81615750565b6001600160a01b03929092168252602082015260400190565b60008060408385031215615d6b57600080fd5b505080516020909101519092909150565b6001600160a01b0394909416845260208401929092526001600160801b03166040830152606082015260800190565b60008060008060808587031215615dc157600080fd5b505082516020840151604085015160609095015191969095509092509050565b80518015158114615df157600080fd5b919050565b600060e08284031215615e0857600080fd5b60405160e081018181106001600160401b0382111715615e2a57615e2a6157d0565b8060405250825181526020830151602082015260408301516040820152615e5360608401615de1565b60608201526080830151608082015260a083015160a0820152615e7860c08401615de1565b60c08201529392505050565b6000825160005b81811015615ea55760208186018101518583015201615e8b565b506000920191825250919050565b600080600060608486031215615ec857600080fd5b615ed184615de1565b925060208401519150604084015190509250925092565b6001600160a01b03948516815292909316602083015260408201526001600160801b03909116606082015260800190565b600080600060608486031215615f2e57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215615f5d57600080fd5b615f6685615de1565b60208601516040870151606090970151919890975090945092505050565b600060208284031215615f9657600080fd5b6136ba82615de156feafabe1c7d6c2e86cbfc67a8ba53d25a7f8ef59b97d972dd4bf7d7525ba7fdddfa264697066735822122077d870c1259900b9eda51e9c93e2d2091f654cac2a08bee284105008a890f39264736f6c63430008140033",
2821
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061042c5760003560e01c80638aabb2d11161022d578063c4f8911c11610131578063e91a7ca6116100be578063e91a7ca614610c25578063e9f2838e14610c38578063ec915ee614610c45578063ef5bac2514610ca6578063f1caf09f14610d6b578063f2fde38b14610d7e578063f5b3b9e714610d91578063f8d8989814610da4578063f91c3b0d14610db7578063fbf4a61214610dca578063fbfa77cf14610dd957600080fd5b8063c4f8911c14610ac0578063c6d6916c14610ad3578063c891091314610ae6578063cd3293de14610b09578063d17e988314610bb3578063d5db7d5d14610bc6578063d81a698614610bd9578063d8aed14514610bec578063e5711e8b14610bff578063e65896c914610c1257600080fd5b8063a5b350c9116101ba578063a5b350c914610973578063a8de483414610986578063a90d728f14610999578063a9bf805c146109a1578063ac919fd4146109b4578063b6b55f25146109db578063b88a802f146109ee578063bf4eccdf146109f6578063bfd91c2314610a09578063c1be667714610a29578063c415b95c14610aad57600080fd5b80638aabb2d1146108b85780638aee8127146108cb5780638bc2ff5b146108de5780638bc7e8c4146109045780638da5cb5b1461090d578063929761791461091e57806397c4fac71461093157806398d721e01461093a5780639daa54b41461094d578063a42dce801461096057600080fd5b80632ab414fc116103345780636061ffc3116102c15780636061ffc3146107af57806367a52793146107ef5780636817031b146107f8578063715018a61461080b57806375417da614610813578063768bab45146108265780637bc7780b1461083957806383ba103f146108415780638429d51f146108545780638456cb591461089f578063883c6b24146108a757600080fd5b80632ab414fc146106205780632e1a7d4d146106335780633adbb5af146106465780633e20bf14146106a95780633f4ba83a146106cd5780634031234c146106d557806340c65f72146106de5780634df9d6ba146106f1578063523a19ac146107045780635c975abb146107a457600080fd5b8063150b7a02116103bd578063150b7a021461055357806316a6c4c51461057f57806316c621e0146105885780631705ffad1461059b57806319c2d37e146105a45780631d00ac3a146105b75780631d4bf4a0146105d75780631d8557d7146105df5780632630c12f146105e757806327156a68146105fa5780632a5bf6d21461060d57600080fd5b8063023245d714610431578063048c661d14610446578063057e9b7b1461046f57806309bf1e73146104865780630ab30d8a146104905780630c34b914146104a85780630c42dcaf146105115780630c679a7b1461051a5780630d4085121461052d5780630ecbcdab14610540575b600080fd5b61044461043f366004615723565b610dec565b005b601e54610459906001600160a01b031681565b604051610466919061573c565b60405180910390f35b61047860275481565b604051908152602001610466565b6104786203f48081565b600854600160801b90046001600160801b0316610478565b6104b06110a2565b6040516104669190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b610478611f4081565b610444610528366004615765565b611138565b61047861053b366004615782565b611162565b61044461054e3660046157ae565b6111de565b610566610561366004615812565b611228565b6040516001600160e01b03199091168152602001610466565b61047860285481565b610444610596366004615723565b611239565b610478602d5481565b6104786105b2366004615782565b6112ea565b6105ca6105c5366004615782565b611363565b6040516104669190615921565b602154610478565b610444611439565b601954610459906001600160a01b031681565b610478610608366004615765565b611447565b61047861061b366004615765565b61146c565b61044461062e36600461592f565b6114de565b610444610641366004615723565b611a07565b610659610654366004615782565b611b39565b6040516104669190600060c08201905082518252602083015115156020830152604083015160408301526060830151606083015260808301511515608083015260a083015160a083015292915050565b601e546106bd90600160a01b900460ff1681565b6040519015158152602001610466565b610444611bee565b61047860265481565b601c54610459906001600160a01b031681565b6104786106ff366004615765565b611bfe565b61078f610712366004615782565b6001600160a01b0391909116600090815260126020908152604080832093835292815290829020825160c0810184528154808252600183015460ff90811615159483019490945260028301549482019490945260038201546060820181905260048301549093161515608082015260059091015460a09091015291565b60408051928352602083019190915201610466565b60025460ff166106bd565b6014546015546016546107ca926001600160a01b0316919083565b604080516001600160a01b039094168452602084019290925290820152606001610466565b610478602a5481565b610444610806366004615765565b611ca0565b610444611f43565b610478610821366004615765565b611f55565b610444610834366004615782565b611fdc565b600c54610478565b61047861084f366004615782565b6120c4565b60205460215460225460235460245460255461087295949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610466565b6104446120f8565b6008546001600160801b0316610478565b6104446108c6366004615723565b612108565b6104446108d9366004615765565b612292565b7f0000000000000000000000000000000000000000000000000000000000000000610459565b610478602b5481565b6000546001600160a01b0316610459565b61047861092c366004615723565b6122e6565b61047860295481565b610444610948366004615765565b61237c565b61047861095b366004615765565b61242c565b61044461096e366004615765565b6124af565b610478610981366004615782565b612530565b610444610994366004615951565b6125d9565b610478612676565b601a54610459906001600160a01b031681565b6104597f000000000000000000000000000000000000000000000000000000000000000081565b6104446109e9366004615723565b612750565b6106bd6128a3565b610444610a04366004615782565b6128c2565b610a1c610a17366004615765565b612c25565b60405161046691906159cf565b610a7e610a37366004615782565b6012602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939460ff938416949293919291169086565b6040805196875294151560208701529385019290925260608401521515608083015260a082015260c001610466565b601f54610459906001600160a01b031681565b610444610ace366004615723565b612e49565b610444610ae1366004615765565b612e80565b610478610af4366004615765565b60136020526000908152604090206001015481565b600354600454600554600654600754600854600954610b55966001600160a01b0390811696811695169392916001600160801b0380821692600160801b909204169064ffffffffff1688565b604080516001600160a01b03998a16815297891660208901529590971694860194909452606085019290925260808401526001600160801b0390811660a08401521660c082015264ffffffffff90911660e082015261010001610466565b610478610bc1366004615765565b612f88565b601b54610459906001600160a01b031681565b610444610be73660046157ae565b613056565b610444610bfa3660046157ae565b613249565b610444610c0d366004615a45565b613286565b610478610c20366004615765565b6132f7565b610444610c33366004615723565b613374565b602e546106bd9060ff1681565b600a54600b54600c54600d54600e54600f54601054601154610c6b979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610466565b610d5e6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091525060408051610100810182526003546001600160a01b039081168252600454811660208301526005541691810191909152600654606082015260075460808201526008546001600160801b0380821660a0840152600160801b9091041660c082015260095464ffffffffff1660e082015290565b6040516104669190615a86565b610459610d79366004615723565b613593565b610444610d8c366004615765565b613654565b610478610d9f366004615b03565b61368f565b601d54610459906001600160a01b031681565b610444610dc5366004615782565b6136c1565b610478670de0b6b3a764000081565b602c54610459906001600160a01b031681565b610df46137f6565b610dfc613820565b3360009081526012602090815260408083208484529091529020600181015460ff1615610e3c576040516367c11db560e01b815260040160405180910390fd5b336000908152601360209081526040808320858452600281019092529091205460ff16610e7c5760405163346fad7360e01b815260040160405180910390fd5b610e886003600a613844565b6000610e9433856112ea565b90508015610eb5576040516302c9375f60e21b815260040160405180910390fd5b60008481526002830160209081526040808320805460ff19169055602f909152812080546001600160a01b03191690558254610ef390600190615b4e565b6001600160401b03811115610f0a57610f0a6157d0565b604051908082528060200260200182016040528015610f33578160200160208202803683370190505b5090506000805b8454811015610fc65786856000018281548110610f5957610f59615b61565b906000526020600020015414610fb457846000018181548110610f7e57610f7e615b61565b9060005260206000200154838381518110610f9b57610f9b615b61565b602090810291909101015281610fb081615b77565b9250505b80610fbe81615b77565b915050610f3a565b508151610fd9908590602085019061565e565b50604051632142170760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342842e0e9061102a90309033908b90600401615b90565b600060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b50506040518881523392507f2aa1b4c95f3b2da9c955947fca584743ea0d457708fadf209c093061e98c4ccb915060200160405180910390a2505050505061109f60018055565b50565b6110ea60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506040805161010081018252600a548152600b546020820152600c5491810191909152600d546060820152600e546080820152600f5460a082015260105460c082015260115460e082015290565b61114061384e565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b60008061116e836122e6565b9050600061117c8585612530565b9050600181101561119c57676765c793fa10079d601b1b925050506111d8565b60006111b36026548461387b90919063ffffffff16565b9050816111c882670de0b6b3a7640000615bb4565b6111d29190615bcb565b93505050505b92915050565b6111e66137f6565b6111ee613820565b80806000036112105760405163162908e360e11b815260040160405180910390fd5b61121a83836138a1565b5061122460018055565b5050565b630a85bd0160e11b5b949350505050565b6112416137f6565b6014546001600160a01b031661126a57604051632506892760e01b815260040160405180910390fd5b8060000361128b5760405163162908e360e11b815260040160405180910390fd5b6014546112a3906001600160a01b0316333084613b4c565b6112ac81613bac565b60405181815233907fe79ffd9a88f13c8c49fb545410401d9877ab90d9dcf7b15d4dc0601993a0d9139060200160405180910390a261109f60018055565b6001600160a01b0382166000908152601260209081526040808320848452825291829020825160c0810184528154808252600183015460ff908116151594830194909452600283015494820194909452600382015460608201526004820154909216151560808301526005015460a09091015292915050565b61136b6156a5565b6113736156a5565b6001600160a01b0384166000908152601260209081526040808320868452825291829020825160c0808201855282548252600183015460ff90811615159483018590526002840154958301958652600384015460608085019190915260048501549091161515608080850191825260059095015460a0850152908701949094529351918501919091528051845290511515918301919091526114158585612530565b60208301526114248585611162565b60408301526060015160a08201529392505050565b6114456003600a613844565b565b6000806114538361146c565b9050600061146084612f88565b90506112318183615bed565b600354604051630481930d60e21b81526000916001600160a01b0316906312064c349061149d90859060040161573c565b602060405180830381865afa1580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d89190615c00565b6114e661384e565b60008260098111156114fa576114fa615c19565b03611593576127108111156115565760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c69717569646174696f6e207468726573686f6c6400000060448201526064015b60405180910390fd5b6026819055602754602854604080518481526020810193909352820152600080516020615fa0833981519152906060015b60405180910390a15050565b60018260098111156115a7576115a7615c19565b036115e05760278190556026546028546040805192835260208301849052820152600080516020615fa083398151915290606001611587565b60028260098111156115f4576115f4615c19565b036116895762015180811015801561160f575062093a808111155b6116525760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590819dc9858d9481c195c9a5bd960621b604482015260640161154d565b60288190556026546027546040805192835260208301919091528101829052600080516020615fa083398151915290606001611587565b600382600981111561169d5761169d615c19565b03611736576127108111156116ef5760405162461bcd60e51b8152602060048201526018602482015277526174696f2063616e6e6f7420657863656564203130302560401b604482015260640161154d565b602d80549082905560408051828152602081018490527fab45a8374e3d1f623df0e88a957317731ccc02ed377e5b0213661f85bf60b73191015b60405180910390a1505050565b600482600981111561174a5761174a615c19565b036117b85760018111156117705760405162461bcd60e51b815260040161154d90615c2f565b602e805460ff19166001831490811790915560405160ff909116151581527f0565da69314136ea081c6239b9813f6ef6d213f57210dfef1d470af55b0235f390602001611587565b60058260098111156117cc576117cc615c19565b036118485760018111156117f25760405162461bcd60e51b815260040161154d90615c2f565b601e8054600160a01b60018414810260ff60a01b199092169190911791829055604051910460ff16151581527f932a526fd95bf1b5aab775a957e284733f02db3a9824802cbcbb4fbca239cbe190602001611587565b600682600981111561185c5761185c615c19565b036118e9576127108111156118ab5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420696e737572616e63652066656560581b604482015260640161154d565b602980549082905560408051828152602081018490527f87c461d1c2c7c5cd98495e5517aa11d9df56d0819cc4e8e53d9664c4b18f6db19101611729565b60078260098111156118fd576118fd615c19565b0361194057601180549082905560408051828152602081018490527f1d830358c94d390366ad7162b72e731448e195f3576e63b1f57f5e43c719c5aa9101611729565b600882600981111561195457611954615c19565b0361199757602a80549082905560408051828152602081018490527f828cf983933545af35b9ba46eec951db1cb4c5433c3ec403aeced2963c2647909101611729565b60098260098111156119ab576119ab615c19565b036119ee57602b80549082905560408051828152602081018490527f733071ab8253b372ed26a6d1b04aec71c4bfcd209c93397df32bb77478cdd2c89101611729565b604051630309cb8760e51b815260040160405180910390fd5b611a0f6137f6565b611a17613820565b8080600003611a395760405163162908e360e11b815260040160405180910390fd5b602e5460ff1615611a5d576040516370a7336d60e11b815260040160405180910390fd5b611a6633613c2f565b611a726003600a613844565b601f546000906001600160a01b031615611a9957602b54611a9490849061387b565b611a9c565b60005b90506000611aaa8285615b4e565b9050611ab581613cd6565b6000611ac56003600a8433614009565b50509050611ad1614131565b8215611af657601f54600454611af6916001600160a01b039182169133911686613b4c565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a25050505061109f60018055565b611b766040518060c00160405280600081526020016000151581526020016000815260200160008152602001600015158152602001600081525090565b506001600160a01b0382166000908152601260209081526040808320848452825291829020825160c08101845281548152600182015460ff908116151593820193909352600282015493810193909352600381015460608401526004810154909116151560808301526005015460a082015292915050565b611bf661384e565b6114456142e8565b6014546000906001600160a01b0316611c1957506000919050565b6000611c2483611447565b905080600003611c375750600092915050565b6001600160a01b038316600090815260176020526040812054601554670de0b6b3a764000091611c6691615b4e565b611c709084615bb4565b611c7a9190615bcb565b6001600160a01b0385166000908152601860205260409020549091506112319082615bed565b611ca861384e565b602c546001600160a01b03828116911614801590611cd05750602c546001600160a01b031615155b15611e3957602c5460405163ce96cb7760e01b81526001600160a01b039091169063ce96cb7790611d0590309060040161573c565b602060405180830381865afa925050508015611d3e575060408051601f3d908101601f19168201909252611d3b91810190615c00565b60015b611e2e57611d4a615c5e565b806308c379a003611da75750611d5e615c79565b80611d695750611dc0565b602c546040516001600160a01b03909116907fc4cede9b2b63ba72d39d2f630b4b742e1cada59d7a073ac4e10da9ac7b2eb10590600090a250611e39565b634e487b7103611dc057611db9615d02565b90611d6957505b3d808015611dea576040519150601f19603f3d011682016040523d82523d6000602084013e611def565b606091505b50602c546040516001600160a01b03909116907fc4cede9b2b63ba72d39d2f630b4b742e1cada59d7a073ac4e10da9ac7b2eb10590600090a250611e39565b611e3781614334565b505b602c80546001600160a01b031981166001600160a01b0384811691821790935560048054604080516338d52e0f60e01b815290519486169591909116936338d52e0f928281019260209291908290030181865afa158015611e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec29190615d22565b6001600160a01b031614158015611ee157506001600160a01b03821615155b15611eff57604051631b3b488360e11b815260040160405180910390fd5b816001600160a01b0316816001600160a01b03167f483bdedaaf23706a9800ac1af0d852b34927780d79f9d6ba60a80c7cad75ea3960405160405180910390a35050565b611f4b61384e565b61144560006144f3565b600080805b6001600160a01b0384166000908152601360205260409020548111611fd5576001600160a01b038416600090815260136020908152604080832084845260020190915290205460ff1615611fc3576000611fb3826122e6565b9050611fbf8184615bed565b9250505b80611fcd81615b77565b915050611f5a565b5092915050565b611fe461384e565b611ff06003600a613844565b6001600160a01b03821661205c5760405162461bcd60e51b815260206004820152602d60248201527f4c656e64696e67506f6f6c3a20526563697069656e742063616e6e6f7420626560448201526c207a65726f206164647265737360981b606482015260840161154d565b60035460405163768bab4560e01b81526001600160a01b039091169063768bab459061208e9085908590600401615d3f565b600060405180830381600087803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b505050505050565b6001600160a01b03821660009081526012602090815260408083208484529091528120600581015481546112319190615b4e565b61210061384e565b611445614543565b6121106137f6565b612118613820565b3360008181526012602090815260408083208584529091529020600181015460ff166121575760405163013e5dc360e61b815260040160405180910390fd5b6001600160a01b038216600090815260136020908152604080832086845260020190915290205460ff1661219e5760405163346fad7360e01b815260040160405180910390fd5b60285481600201546121b09190615bed565b4211156121d057604051634b3c322760e11b815260040160405180910390fd5b600481015460ff166121f557604051632d1118e960e21b815260040160405180910390fd5b6122016003600a613844565b600061220d8385612530565b9050801561222e576040516312bf4cab60e01b815260040160405180910390fd5b60018201805460ff1990811690915560006002840181905560048401805490921690915560405185916001600160a01b038616917fd66fca94ddede030b58f223f22d6b43407a443bd68e2e73d38ab7675cf480acc9190a350505061109f60018055565b61229a61384e565b6014546001600160a01b0316156122c45760405163b6de9a7160e01b815260040160405180910390fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b60195460405163b94fe91760e01b815260048101839052600091829182916001600160a01b03169063b94fe917906024016040805180830381865afa158015612333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123579190615d58565b9150915081600003611fd557604051633b0c4c3160e11b815260040160405180910390fd5b61238461384e565b6001600160a01b0381166123ab576040516303988b8160e61b815260040160405180910390fd5b601e546001600160a01b03908116908216036123da5760405163aba916dd60e01b815260040160405180910390fd5b601e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f593eaf5e0e1afc1c041a664a437fdae719a628836785d06572b008e6ca5c189d90600090a35050565b600080805b6001600160a01b038416600090815260136020526040902054811015611fd5576001600160a01b038416600090815260136020526040902080546124919186918490811061248157612481615b61565b9060005260206000200154612530565b61249b9083615bed565b9150806124a781615b77565b915050612431565b6124b761384e565b6001600160a01b0381166124de576040516303988b8160e61b815260040160405180910390fd5b601f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f5d16ad41baeb009cd23eb8f6c7cde5c2e0cd5acf4a33926ab488875c37c37f3890600090a35050565b6001600160a01b03821660009081526012602090815260408083208484528252808320815160c08101835281548152600182015460ff9081161515948201949094526002820154928101929092526003810154606083018190526004820154909316151560808301526005015460a082015260085490916125cd916125c59190600160801b90046001600160801b0316615b4e565b825190614580565b81516112319190615bed565b6125e16137f6565b6125e9613820565b818060000361260b5760405163162908e360e11b815260040160405180910390fd5b601e54600160a01b900460ff16612635576040516312cefcd560e31b815260040160405180910390fd5b6001600160a01b03821661265c576040516303988b8160e61b815260040160405180910390fd5b6126678484846145c3565b5061267160018055565b505050565b601f546000906001600160a01b031633146126a3576040516282b42960e81b815260040160405180910390fd5b602c546001600160a01b03166126ea5760405162461bcd60e51b815260206004820152600c60248201526b139bc81d985d5b1d081cd95d60a21b604482015260640161154d565b60045460218054426022556000909155601f546001600160a01b039283169261271691849116836148c1565b6040518181527f7edfb0d5d58c6a3d398df94a9bdfa2b33f3fa42ae40d72ebdc717d2db3953ee59060200160405180910390a19150505b90565b6127586137f6565b612760613820565b80806000036127825760405163162908e360e11b815260040160405180910390fd5b61278b33613c2f565b6127976003600a613844565b601f546000906001600160a01b0316156127be57602a546127b990849061387b565b6127c1565b60005b905060006127cf8285615b4e565b905060006127e16003600a84336148e7565b33600090815260136020526040812060010154919250036128165733600090815260136020526040902060010182905561283e565b3360009081526013602052604081206001018054849290612838908490615bed565b90915550505b612846614131565b821561286b57601f5460045461286b916001600160a01b039182169133911686613b4c565b604080518381526020810183905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159101611b24565b60006128ad6137f6565b6128b633613c2f565b50600161274d60018055565b6128ca6137f6565b601e546001600160a01b031633146128f4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03821660009081526012602090815260408083208484529091529020600181015460ff1661293c5760405163013e5dc360e61b815260040160405180910390fd5b6001600160a01b038316600090815260136020908152604080832085845260020190915290205460ff166129835760405163346fad7360e01b815260040160405180910390fd5b61298f6003600a613844565b600481015460ff1680156129b4575060285481600201546129b09190615bed565b4211155b156129d2576040516363e5f12d60e11b815260040160405180910390fd5b60006129de8484612530565b60018301805460ff199081169091556000600280860182905560048087018054851690556001600160a01b03808a1684526013602090815260408086208b87529094019052928290208054909416909355601e5490516323b872dd60e01b81529394507f00000000000000000000000000000000000000000000000000000000000000008216936323b872dd93612a7b9330931691899101615b90565b600060405180830381600087803b158015612a9557600080fd5b505af1158015612aa9573d6000803e3d6000fd5b5050506000848152602f602052604080822080546001600160a01b03191690556005546008549151636f3df85160e11b81529293508392839283926001600160a01b03169163de7bf0a291612b18918c918a91600160801b9091046001600160801b0316908d90600401615d7c565b6080604051808303816000875af1158015612b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5b9190615dab565b600854600160801b90046001600160801b031660038b810191909155546004549498509296509094509250612b9f916001600160a01b039081169133911687613b4c565b6000808755600587018190556007849055612bc190600390600a908790614a2b565b601e5487906001600160a01b03808b1691167f3f2ad1b98f8838e6f90c126ac5f8a9875c7acf2a56aeb8a630c0fa475b07056a88612bfe856122e6565b6040805192835260208301919091520160405180910390a450505050505061122460018055565b612c2d6156e6565b6001600160a01b0382166000908152601360205260409020612c4d6156e6565b815460408051602080840282018101909252828152918491830182828015612c9457602002820191906000526020600020905b815481526020019060010190808311612c80575b505050918352505081546001600160401b03811115612cb557612cb56157d0565b604051908082528060200260200182016040528015612cee57816020015b612cdb6156a5565b815260200190600190039081612cd35790505b506060820152600060208201819052604082018190525b8254811015612e4157306001600160a01b0316631d00ac3a86856000018481548110612d3357612d33615b61565b90600052602060002001546040518363ffffffff1660e01b8152600401612d5b929190615d3f565b60e060405180830381865afa158015612d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9c9190615df6565b82606001518281518110612db257612db2615b61565b602002602001018190525081606001518181518110612dd357612dd3615b61565b60200260200101516020015182602001818151612df09190615bed565b9052508254612e1b90849083908110612e0b57612e0b615b61565b90600052602060002001546122e6565b82604001818151612e2c9190615bed565b90525080612e3981615b77565b915050612d05565b509392505050565b601a546001600160a01b03163314612e73576040516282b42960e81b815260040160405180910390fd5b61109f6003600a83614b7d565b6003546001600160a01b03163314612eda5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792052546f6b656e2063616e2075706461746520726577617264730000604482015260640161154d565b6000612ee582611447565b90508015612f68576001600160a01b038216600090815260176020526040812054601554670de0b6b3a764000091612f1c91615b4e565b612f269084615bb4565b612f309190615bcb565b90508015612f66576001600160a01b03831660009081526018602052604081208054839290612f60908490615bed565b90915550505b505b506015546001600160a01b03909116600090815260176020526040902055565b601e546000906001600160a01b0316612fa357506000919050565b601e5460405160009182916001600160a01b0390911690612fc890869060240161573c565b60408051601f198184030181529181526020820180516001600160e01b031663c084b10b60e01b17905251612ffd9190615e84565b600060405180830381855afa9150503d8060008114613038576040519150601f19603f3d011682016040523d82523d6000602084013e61303d565b606091505b5091509150808060200190518101906112319190615c00565b61305e6137f6565b613066613820565b33600081815260126020908152604080832086845290915281209161308b90856120c4565b9050600061309a33868661368f565b601b54601f54604051636eb1769f60e11b81523360048201526001600160a01b039182166024820152929350839291169063dd62ed3e90604401602060405180830381865afa1580156130f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131159190615c00565b1015613134576040516339e067d560e21b815260040160405180910390fd5b601b546040516370a0823160e01b815282916001600160a01b0316906370a082319061316490339060040161573c565b602060405180830381865afa158015613181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a59190615c00565b10156131c457604051631e9acf1760e31b815260040160405180910390fd5b6131ce85856138a1565b6131d781614c56565b60048301805460ff191660011790556131f08483615bed565b8360050160008282546132039190615bed565b909155505060405182815285907fd5c2dc3f0ec76ece0185d374bca424347955bce9b5e7b08757bb8e1bb8d9c0a99060200160405180910390a250505061122460018055565b6132516137f6565b613259613820565b808060000361327b5760405163162908e360e11b815260040160405180910390fd5b61121a8383336145c3565b61328e61384e565b6003546001600160a01b03908116908416036132e35760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba103932b9b1bab290292a37b5b2b760611b604482015260640161154d565b6126716001600160a01b03841683836148c1565b600080805b6001600160a01b038416600090815260136020526040902054811015611fd5576001600160a01b038416600090815260136020908152604080832084845260020190915290205460ff1615613362576133558482612530565b61335f9083615bed565b91505b8061336c81615b77565b9150506132fc565b61337c6137f6565b613384613820565b6133906003600a613844565b6040516331a9108f60e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156133f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341b9190615d22565b6001600160a01b031614613442576040516384b359d160e01b815260040160405180910390fd5b336000908152601360209081526040808320848452600281019092529091205460ff16156134835760405163e8edca8360e01b815260040160405180910390fd5b60008281526002820160209081526040808320805460ff191660019081179091558454908101855584845282842001859055848352602f9091529081902080546001600160a01b031916339081179091559051632142170760e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316916342842e0e91613522919030908790600401615b90565b600060405180830381600087803b15801561353c57600080fd5b505af1158015613550573d6000803e3d6000fd5b50506040518481523392507f1c4b8380f61aea3d5d98cbadaf2e6b2e4f3d8ca8c0fce1290b26ac267158745f915060200160405180910390a25061109f60018055565b6000818152602f60205260408120546001600160a01b0316613638576040516331a9108f60e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d89190615d22565b506000908152602f60205260409020546001600160a01b031690565b61365c61384e565b6001600160a01b038116613686576000604051631e4fbdf760e01b815260040161154d919061573c565b61109f816144f3565b60008061369c85856120c4565b90506136b660295484836136b09190615bed565b9061387b565b9150505b9392505050565b6136c96137f6565b6136d1613820565b6001600160a01b03821660009081526012602090815260408083208484529091529020600181015460ff161561371a5760405163b84f7eb560e01b815260040160405180910390fd5b6001600160a01b038316600090815260136020908152604080832085845260020190915290205460ff166137615760405163346fad7360e01b815260040160405180910390fd5b61376d6003600a613844565b60006137798484611162565b9050602754811061379d5760405163317416e560e11b815260040160405180910390fd5b6001828101805460ff1916909117905542600283015560405183906001600160a01b0386169033907f4601ff28b457321206747d0540f02cfb8a9d6bf3021146378e8544e1817e20e790600090a4505061122460018055565b60026001540361381957604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b60025460ff16156114455760405163d93c066560e01b815260040160405180910390fd5b6112248282614d49565b6000546001600160a01b03163314611445573360405163118cdaa760e01b815260040161154d919061573c565b60008115611388198390048411151761389357600080fd5b506127109102611388010490565b3360009081526012602090815260408083208584529091529020600181015460ff16156138e157604051630bff073160e31b815260040160405180910390fd5b336000908152601360209081526040808320868452600281019092529091205460ff166139215760405163346fad7360e01b815260040160405180910390fd5b600061392c856122e6565b90508060000361394f57604051638dc8d9b360e01b815260040160405180910390fd5b61395b6003600a613844565b61396484613cd6565b600061397b6026548361387b90919063ffffffff16565b90508461398833886112ea565b6139929190615bed565b8110156139b257604051630369fbd160e51b815260040160405180910390fd5b600554600854604051639ceeaca760e01b81523360048201819052602482015260448101889052600160801b9091046001600160801b0316606482015260848101889052600091829182916001600160a01b031690639ceeaca79060a4016060604051808303816000875af1158015613a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a539190615eb3565b600854600160801b90046001600160801b031660038b81019190915554604051635c921eb960e01b815293965091945092506001600160a01b031690635c921eb990613aa59033908c90600401615d3f565b600060405180830381600087803b158015613abf57600080fd5b505af1158015613ad3573d6000803e3d6000fd5b5050505081876000016000828254613aeb9190615bed565b90915550506007819055613b046003600a60008b614a2b565b613b0c614131565b60405188815233907fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a367509060200160405180910390a2505050505050505050565b613ba684856001600160a01b03166323b872dd868686604051602401613b7493929190615b90565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614e72565b50505050565b6014546001600160a01b0316613bd557604051632506892760e01b815260040160405180910390fd5b6006546000819003613be5575050565b811561122457600081613c0084670de0b6b3a7640000615bb4565b613c0a9190615bcb565b90508060146001016000828254613c219190615bed565b909155505042601655505050565b6014546001600160a01b0316613c425750565b6000613c4d82611bfe565b90508015611224576001600160a01b038083166000908152601860209081526040808320839055601554601790925290912055601454613c8f911683836148c1565b816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea682604051613cca91815260200190565b60405180910390a25050565b602c546001600160a01b0316613ce95750565b600480546003546040516370a0823160e01b81526000936001600160a01b03938416936370a0823193613d1f939116910161573c565b602060405180830381865afa158015613d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d609190615c00565b905081811015611224576000613d768284615b4e565b602c5460405163ce96cb7760e01b81529192506000916001600160a01b039091169063ce96cb7790613dac90309060040161573c565b602060405180830381865afa158015613dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ded9190615c00565b90506000613dfb8285615bed565b905082811015613e645760405162461bcd60e51b815260206004820152602e60248201527f4e6f7420656e6f756768206c697175696469747920746f2066756c66696c6c2060448201526d1d1a19481dda5d1a191c985dd85b60921b606482015260840161154d565b6006546000613e738783615b4e565b905060008115613e8e57602d54613e8b90839061387b565b90505b8585811115613e9a5750845b8015613ea957613ea981614334565b600480546040516370a0823160e01b81526001600160a01b03909116916370a0823191613ed89130910161573c565b602060405180830381865afa158015613ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f199190615c00565b600480546003546040516370a0823160e01b81526001600160a01b03928316936370a0823193613f4b9316910161573c565b602060405180830381865afa158015613f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8c9190615c00565b613f969190615bed565b975088881015613ffe5760405162461bcd60e51b815260206004820152602d60248201527f496e73756666696369656e74206c69717569646974792061667465722076617560448201526c1b1d081dda5d1a191c985dd85b609a1b606482015260840161154d565b505050505050505050565b600080600060018510156140305760405163162908e360e11b815260040160405180910390fd5b61403a8787614d49565b86546005880154604051636b81068560e11b8152600092839283926001600160a01b039092169163d7020d0a91614083918b9182918e916001600160801b031690600401615ee8565b6060604051808303816000875af11580156140a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c69190615f19565b9250925092508295506140dc8a8a600084614a2b565b60408051828152602081018590526001600160a01b038916917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568910160405180910390a2999198508997509095505050505050565b602c546001600160a01b031661414357565b600654602d5460009061415790839061387b565b600480546003546040516370a0823160e01b81529394506000936001600160a01b03928316936370a082319361418f9316910161573c565b602060405180830381865afa1580156141ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d09190615c00565b9050818111156141f75760006141e68383615b4e565b90506141f181614ecc565b506142ae565b818110156142ae57600061420b8284615b4e565b90506000602c60009054906101000a90046001600160a01b03166001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa158015614262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142869190615c00565b905060008183116142975782614299565b815b905080156142aa576142aa81614334565b5050505b6020805460408051848152928301919091527f8f9497c27f572ff1a65e8b2c7a0706d466466ae0b5efc78462b5f0021da669569101611729565b6142f0615101565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405161432a919061573c565b60405180910390a1565b602c546040516328c0620360e01b8152600160048201526000916001600160a01b0316906328c0620390602401602060405180830381865afa15801561437e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143a29190615c00565b602c54604051632d182be560e21b815260048101859052306024820181905260448201529192506000916001600160a01b039091169063b460af94906064016020604051808303816000875af1158015614400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144249190615c00565b90506000602060030154831115614487576023546000906144459085615b4e565b9050670de0b6b3a764000061445a8285615bb4565b6144649190615bcb565b9150816020600101600082825461447b9190615bed565b9091555061448b915050565b5060005b60006144978286615b4e565b6003546004549192506144b7916001600160a01b039081169116836148c1565b6020548511156144cb5760006020556144e6565b84602060000160008282546144e09190615b4e565b90915550505b5050506023555042602455565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61454b613820565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861431d3390565b600081156b019d971e4fe8401e7400000019839004841115176145a257600080fd5b50676765c793fa10079d601b1b91026b019d971e4fe8401e74000000010490565b816000036145e45760405163162908e360e11b815260040160405180910390fd5b6001600160a01b03811661460b576040516303988b8160e61b815260040160405180910390fd5b6001600160a01b0381166000908152601360209081526040808320868452600281019092529091205460ff166146545760405163346fad7360e01b815260040160405180910390fd5b6146606003600a613844565b6001600160a01b03821660009081526012602090815260408083208784529091529020600181015460ff16801561469c5750600481015460ff16155b156146ba5760405163224aae4f60e21b815260040160405180910390fd5b600181015460ff1680156146de575060285481600201546146db9190615bed565b42115b156146fc57604051634b3c322760e11b815260040160405180910390fd5b60006147088487612530565b90506000818611614719578561471b565b815b9050600080600080600360020160009054906101000a90046001600160a01b03166001600160a01b031663de7bf0a28a87600360050160109054906101000a90046001600160801b03168f6040518563ffffffff1660e01b81526004016147859493929190615d7c565b6080604051808303816000875af11580156147a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147c89190615dab565b600854600160801b90046001600160801b031660038c81019190915554600454949850929650909450925061480c916001600160a01b039081169133911688613b4c565b60078390558015614831578087600001600082825461482b9190615bed565b90915550505b865461483e908390615b4e565b8088556005880154111561485457865460058801555b865460000361486557600060058801555b6148746003600a876000614a2b565b6040518581526001600160a01b038a169033907f05f2eeda0e08e4b437f487c8d7d29b14537d15e3488170dc3de5dbdf8dac46849060200160405180910390a35050505050505050505050565b61267183846001600160a01b031663a9059cbb8585604051602401613b74929190615d3f565b6000600183101561490b5760405163162908e360e11b815260040160405180910390fd5b6149158585614d49565b84546001860154614935916001600160a01b039182169133911686613b4c565b8454600586015460405163b3f1c93d60e01b81526000928392839283926001600160a01b03169163b3f1c93d916149809130918b918d916001600160801b0390911690600401615ee8565b6080604051808303816000875af115801561499f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149c39190615f47565b93509350935093508294506149db8989896000614a2b565b60408051888152602081018790526001600160a01b038816917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a250505050949350505050565b8115614a5857614a3a82615124565b6001600160801b03168460030154614a529190615bed565b60038501555b8015614aaa578084600301541015614a835760405163bb55fd2760e01b815260040160405180910390fd5b614a8c81615124565b6001600160801b03168460030154614aa49190615b4e565b60038501555b600384015460048501546000614ac0878761515c565b90506000614ace88886151bd565b90506000614ae489600301548a60040154615218565b9050614b08886002015489600301548a600401548b600501548c6006015486615264565b600189018190556007890154614b209183918761534e565b8855614b2c8989614d49565b875460018901546040517f48f4f83c2f1843e8fd7ef13ffcff40fca5055dc1b9b074cd9dd0f9a8a8e09dd992614b6a92908252602082015260400190565b60405180910390a1505050505050505050565b6001811015614b9f5760405163824c180760e01b815260040160405180910390fd5b60028201548015614c02576000614bb8826101f461387b565b90506000828411614bd257614bcd8484615b4e565b614bdc565b614bdc8385615b4e565b905081811115614bff57604051631a8b543360e21b815260040160405180910390fd5b50505b60028301829055614c168484600080614a2b565b60408051828152602081018490527fd45d1eb66419c036e2fa401916c7db417696f889cf4ab8ca92272327e8e1c83e91015b60405180910390a150505050565b601f546001600160a01b0316614c7f576040516303988b8160e61b815260040160405180910390fd5b80600003614ca05760405163162908e360e11b815260040160405180910390fd5b601f5460048054604051636033e31560e01b81526001600160a01b0391821692810192909252336024830152604482018490527f65991ea5d80f7b6dc8c32648f59c5a653beb10caddae8fefad6966b35a0a65f1606483015290911690636033e315906084016020604051808303816000875af1158015614d25573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112249190615f84565b6006820154600090614d629064ffffffffff1642615b4e565b90506001811015614d7257505050565b60058301546001600160801b03166001811015614da257604051630a1cf3ed60e21b815260040160405180910390fd5b82546005850154614dbe919084906001600160801b0316615395565b6005850180546001600160801b0319166001600160801b0392831617908190556001850154614df99290918591600160801b909104166153b2565b6005850180546001600160801b03908116600160801b93821684028181179384905560068901805464ffffffffff19164264ffffffffff16179055604080519184169092178152939092041660208301527ff92a3abee06d57c996e7e19eb34560241fdc1fe67e9ebd503177710bf9fd82049101614c48565b6000614e876001600160a01b038416836153ce565b90508051600014158015614eac575080806020019051810190614eaa9190615f84565b155b156126715782604051635274afe760e01b815260040161154d919061573c565b600354604051635c921eb960e01b81526001600160a01b0390911690635c921eb990614efe9030908590600401615d3f565b600060405180830381600087803b158015614f1857600080fd5b505af1158015614f2c573d6000803e3d6000fd5b505060048054602c5460405163095ea7b360e01b81526001600160a01b03928316955063095ea7b39450614f67939190921691869101615d3f565b6020604051808303816000875af1158015614f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614faa9190615f84565b50602c54604051636e553f6560e01b8152600481018390523060248201526000916001600160a01b031690636e553f65906044016020604051808303816000875af1158015614ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150219190615c00565b602c546040516328c0620360e01b81526000600482018190529293506001600160a01b03909116906328c0620390602401602060405180830381865afa15801561506f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150939190615c00565b9050600082116150dc5760405162461bcd60e51b815260206004820152601460248201527315985d5b1d0819195c1bdcda5d0819985a5b195960621b604482015260640161154d565b82602060000160008282546150f19190615bed565b9091555050602355505042602555565b60025460ff1661144557604051638dfc202b60e01b815260040160405180910390fd5b60006001600160801b03821115615158576040516306dfcc6560e41b8152608060048201526024810183905260440161154d565b5090565b600682015460009081906151779064ffffffffff1642615b4e565b9050600181101561518e57505060048201546111d8565b6005840154600184015461123191600160801b90046001600160801b0316906151b790846153dc565b90614580565b600682015460009081906151d89064ffffffffff1642615b4e565b905060018110156151f857505060058201546001600160801b03166111d8565b60058401548354611231916001600160801b0316906151b790848361542b565b600060018310156152355750676765c793fa10079d601b1b6111d8565b600061525361524e6152478587615bed565b859061545f565b615124565b6001600160801b0316949350505050565b600085871115806152755750838710155b806152805750858511155b8061528b5750838510155b156152a95760405163abc83fed60e01b815260040160405180910390fd5b60008383116152eb5760006152be888a615b4e565b905060006152d6866152d08785614580565b9061545f565b90506152e2818a615bed565b92505050615343565b60006152f78585615b4e565b9050600061531086676765c793fa10079d601b1b615b4e565b9050600061531e8b89615b4e565b90506000615330836152d08685614580565b905061533c818d615bed565b9450505050505b979650505050505050565b6000600182101561536157506000611231565b600061536d8686614580565b9050600061537b8286614580565b905060006153898284615b4e565b98975050505050505050565b6000806153a385858561542b565b90506136b661524e8285614580565b6000806153bf85856153dc565b90506136b661524e8483614580565b60606136ba8383600061549c565b600060018210156153f95750676765c793fa10079d601b1b6111d8565b6000615409846301e1338061545f565b905060006154178285614580565b905061542281615539565b95945050505050565b6000806154388486615bb4565b90506154486301e1338082615bcb565b90506136b681676765c793fa10079d601b1b615bed565b60008115676765c793fa10079d601b1b6002840419048411171561548257600080fd5b50676765c793fa10079d601b1b9190910260028204010490565b6060814710156154c1573060405163cd78605960e01b815260040161154d919061573c565b600080856001600160a01b031684866040516154dd9190615e84565b60006040518083038185875af1925050503d806000811461551a576040519150601f19603f3d011682016040523d82523d6000602084013e61551f565b606091505b509150915061552f8683836155e2565b9695505050505050565b6000816000036155555750676765c793fa10079d601b1b919050565b506b169e43a85eb381aa580000006b1363156bbee3016d700000006b1027e72f1f128130880000006b0cecb8f27f4200f3a00000006b09b18ab5df7180b6b80000006b06765c793fa10079d000000086800204808702919091048087029290920480870293909304808702949094048087029590950495010101010101676765c793fa10079d601b1b0190565b6060826155f7576155f282615635565b6136ba565b815115801561560e57506001600160a01b0384163b155b1561562e5783604051639996b31560e01b815260040161154d919061573c565b50806136ba565b8051156156455780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b828054828255906000526020600020908101928215615699579160200282015b8281111561569957825182559160200191906001019061567e565b5061515892915061570e565b6040518060e0016040528060008152602001600081526020016000815260200160001515815260200160008152602001600081526020016000151581525090565b6040518060800160405280606081526020016000815260200160008152602001606081525090565b5b80821115615158576000815560010161570f565b60006020828403121561573557600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461109f57600080fd5b60006020828403121561577757600080fd5b81356136ba81615750565b6000806040838503121561579557600080fd5b82356157a081615750565b946020939093013593505050565b600080604083850312156157c157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561580b5761580b6157d0565b6040525050565b6000806000806080858703121561582857600080fd5b843561583381615750565b935060208581013561584481615750565b93506040860135925060608601356001600160401b038082111561586757600080fd5b818801915088601f83011261587b57600080fd5b81358181111561588d5761588d6157d0565b60405191506158a5601f8201601f19168501836157e6565b80825289848285010111156158b957600080fd5b808484018584013760008482840101525080935050505092959194509250565b8051825260208101516020830152604081015160408301526060810151151560608301526080810151608083015260a081015160a083015260c0810151151560c08301525050565b60e081016111d882846158d9565b6000806040838503121561594257600080fd5b8235600a81106157a057600080fd5b60008060006060848603121561596657600080fd5b8335925060208401359150604084013561597f81615750565b809150509250925092565b600081518084526020808501945080840160005b838110156159c4576159b18783516158d9565b60e096909601959082019060010161599e565b509495945050505050565b60208082528251608083830152805160a0840181905260009291820190839060c08601905b80831015615a1457835182529284019260019290920191908401906159f4565b508387015160408701526040870151606087015260608701519350601f19868203016080870152615343818561598a565b600080600060608486031215615a5a57600080fd5b8335615a6581615750565b92506020840135615a7581615750565b929592945050506040919091013590565b60006101008201905060018060a01b0380845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160018060801b0380821660a08501528060c08601511660c0850152505060e0830151611fd560e084018264ffffffffff169052565b600080600060608486031215615b1857600080fd5b8335615b2381615750565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156111d8576111d8615b38565b634e487b7160e01b600052603260045260246000fd5b600060018201615b8957615b89615b38565b5060010190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b80820281158282048414176111d8576111d8615b38565b600082615be857634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156111d8576111d8615b38565b600060208284031215615c1257600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b602080825260159082015274496e76616c696420626f6f6c65616e2076616c756560581b604082015260600190565b600060033d111561274d5760046000803e5060005160e01c90565b600060443d1015615c875790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615cb657505050505090565b8285019150815181811115615cce5750505050505090565b843d8701016020828501011115615ce85750505050505090565b615cf7602082860101876157e6565b509095945050505050565b60008060233d1115615d1e576020600460003e50506000516001905b9091565b600060208284031215615d3457600080fd5b81516136ba81615750565b6001600160a01b03929092168252602082015260400190565b60008060408385031215615d6b57600080fd5b505080516020909101519092909150565b6001600160a01b0394909416845260208401929092526001600160801b03166040830152606082015260800190565b60008060008060808587031215615dc157600080fd5b505082516020840151604085015160609095015191969095509092509050565b80518015158114615df157600080fd5b919050565b600060e08284031215615e0857600080fd5b60405160e081018181106001600160401b0382111715615e2a57615e2a6157d0565b8060405250825181526020830151602082015260408301516040820152615e5360608401615de1565b60608201526080830151608082015260a083015160a0820152615e7860c08401615de1565b60c08201529392505050565b6000825160005b81811015615ea55760208186018101518583015201615e8b565b506000920191825250919050565b600080600060608486031215615ec857600080fd5b615ed184615de1565b925060208401519150604084015190509250925092565b6001600160a01b03948516815292909316602083015260408201526001600160801b03909116606082015260800190565b600080600060608486031215615f2e57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215615f5d57600080fd5b615f6685615de1565b60208601516040870151606090970151919890975090945092505050565b600060208284031215615f9657600080fd5b6136ba82615de156feafabe1c7d6c2e86cbfc67a8ba53d25a7f8ef59b97d972dd4bf7d7525ba7fdddfa264697066735822122077d870c1259900b9eda51e9c93e2d2091f654cac2a08bee284105008a890f39264736f6c63430008140033",
3484
+ "bytecode": "0x34620000e857620066e53881900360a0601f8201601f19168101906001600160401b03821190821017620000ed5761010092829160405260a03912620000e857620000976200004d62000103565b620000576200011a565b6200006162000131565b6200006b62000148565b6200007562000160565b906200008062000178565b9261016051946200009062000190565b96620001a8565b604051615fe59081620006e08239608051818181610b1d01528181610f1a0152818161256e0152818161266d0152818161272801528181612a2001528181612d3f0152818161325201526133ee0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b60a051906001600160a01b0382168203620000e857565b60c051906001600160a01b0382168203620000e857565b60e051906001600160a01b0382168203620000e857565b61010051906001600160a01b0382168203620000e857565b61012051906001600160a01b0382168203620000e857565b61014051906001600160a01b0382168203620000e857565b61018051906001600160a01b0382168203620000e857565b969593909433156200047b57602f8054336001600160a01b0319821681179092556001600160a01b0392919083167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001603055169687156200044657620002c16200030a9662000268620002e394620002466200030598620004439d60805260018060a01b031660018060a01b03196033541617603355565b603480546001600160a01b0319166001600160a01b0392909216919091179055565b7b033b2e3c9fd0803ce800000000000000033b2e3c9fd0803ce80000006005556006805464ffffffffff19164264ffffffffff16179055600080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600955565b620003206200031b6009546200063b565b600a55565b620003366200033160095462000672565b600b55565b6200034c62000347600954620006a8565b600c55565b620003626b0295be96e640669720000000600d55565b6200036d6000600e55565b620003836b033b2e3c9fd0803ce8000000600755565b620003996b033b2e3c9fd0803ce8000000600855565b620003a5611f40602555565b620003b7670de0b6b3a7640000602655565b620003c46203f480602755565b620003d96a084595161401484a000000602b55565b620003ee6a084595161401484a000000602c55565b620003fa6107d0602a55565b6200040661012c602855565b62000419600160ff196024541617602455565b62000425610708602d55565b6200043081620004ab565b506200043c8162000534565b50620005e1565b50565b60405162461bcd60e51b815260206004820152600d60248201526c5a65726f20726567697374727960981b6044820152606490fd5b604051631e4fbdf760e01b815260006004820152602490fd5b9060018060a01b0316600052602052604060002090565b6000808052603260205260ff620004e2837ebcd6ff29ae71d399fb597d99792fa72d0863bd723b9ab11f79d0b8d8ac5bc862000494565b54166200052f57808052603260205262000500826040832062000494565b805460ff1916600117905533916001600160a01b031690600080516020620066c58339815191528180a4600190565b905090565b7f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1600081815260326020529060ff6200058e847f08ae08a1778cb01871246af592e3e907ec9ba7bc1cc0b308a58e75fd2ee1dfba62000494565b5416620005db578082526032602052620005ac836040842062000494565b805460ff1916600117905533926001600160a01b031691600080516020620066c58339815191529080a4600190565b50905090565b7fba279271fb7bbf76a6f3df3cc57bf80647fcafdea60ec3383d90f459de74e7c0600081815260326020529060ff6200058e847f4be98a500fedc87dbf83b0f2e386ce313ece8458dab0590898ef9a4135d1921462000494565b7e1a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e90d8111620000e8576113886109c46127109202010490565b7e0d1b71758e219652bd3c36113404ea4a8c154c985f06f694467381d7dbf4868111620000e85761271090611388809102010490565b7e01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e908111620000e857611388619c40612710920201049056fe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a7146105bd57806302768de4146105b8578063048c661d146105b3578063086c33e1146105ae57806309bf1e73146105a95780630ab30d8a146105a45780630c34b9141461059f5780630c42dcaf1461059a5780630c679a7b14610595578063150b7a0214610590578063152f15841461058b57806316c621e0146105865780631a7fd200146105815780631d4bf4a01461057c5780631d8557d71461057757806322f2caf1146105725780632445eee51461056d578063248a9ca31461056857806327156a68146105635780632a5bf6d21461055e5780632a7e7849146105595780632ab414fc146105545780632e1a7d4d1461054f5780632f17682b146104be5780632f2ff15d1461054a57806332128b031461054557806334176a6d1461054057806336568abe1461053b5780633f4ba83a146105365780634df9d6ba146105315780634ef501ac1461052c57806353f35770146105275780635c975abb146105225780636061ffc31461051d578063618295df14610518578063640bc491146105135780636817031b1461050e578063715018a614610509578063745400c91461050457806375417da6146104ff578063768bab45146104fa5780637bc7780b146104f55780638429d51f146104f05780638456cb59146104eb578063883c6b24146104e657806389035730146104e1578063893a5372146104dc5780638ad7cacc146104d75780638aee8127146104d25780638d7081e4146104cd5780638da5cb5b146104c85780638def3ec2146104c35780638f7e8498146104be57806391d14854146104b95780639632b92a146104b457806398c2b108146104af57806398d721e0146104aa5780639daa54b41461042d578063a013f9c6146104a5578063a217fddf146104a0578063a42dce801461049b578063a51e896314610496578063a90d728f14610491578063a9bf805c1461048c578063aaf6379914610487578063b21cfc7114610482578063b6b55f251461047d578063b82e16e314610478578063b88a802f14610473578063ba7466941461046e578063c415b95c14610469578063c4f8911c14610464578063c6d6916c1461045f578063c89109131461045a578063c939ad6114610455578063cac89c5c14610450578063cd3293de1461044b578063d017e97814610446578063d17e988314610441578063d547741f1461043c578063de597d5b14610437578063e5711e8b14610432578063e65896c91461042d578063ec915ee614610428578063ef16b0e014610423578063ef5bac251461041e578063f2fde38b14610419578063f36c8f5c14610414578063fbf4a6121461040f578063fbfa77cf1461040a5763fe64cc0b1461040557600080fd5b6137b9565b613790565b61376d565b613744565b6136ca565b613606565b613536565b6134dc565b6127f8565b61344b565b61338a565b613348565b613321565b613305565b61328d565b61323c565b61319a565b61315a565b613074565b612fa5565b612f7c565b612e7f565b612e4d565b612da4565b612cfa565b612c0e565b612b98565b612b6f565b612a83565b6129f3565b612980565b612964565b61291b565b612785565b6126ca565b61260f565b6125cb565b6115cb565b612510565b6124e7565b6124cb565b61246c565b612330565b612286565b6121fc565b6121d3565b612179565b612131565b612113565b612017565b611f57565b611f33565b611ee4565b611c80565b611c57565b611b3b565b611b04565b611ae1565b611a87565b6119fe565b6119a1565b611937565b6118ec565b61185c565b61164e565b61160c565b6114e7565b610f89565b610ebc565b610e5d565b610e36565b610e07565b610d23565b610c73565b610c5a565b610c3c565b610bb7565b610ae9565b610aa7565b610963565b61085a565b61083d565b61077d565b61075c565b61073e565b61071a565b61066b565b610623565b346106135760203660031901126106135760043563ffffffff60e01b811680910361061357602090637965db0b60e01b8114908115610602575b506040519015158152f35b6301ffc9a760e01b149050386105f7565b600080fd5b600091031261061357565b34610613576000366003190112610613576020604051600080516020615f708339815191528152f35b6001600160a01b031690565b6001600160a01b03909116815260200190565b34610613576000366003190112610613576017546040516001600160a01b039091168152602090f35b6001600160a01b0381160361061357565b9181601f84011215610613578235916001600160401b038311610613576020838186019501011161061357565b6060600319820112610613576004356106ea81610694565b916024356106f781610694565b91604435906001600160401b03821161061357610716916004016106a5565b9091565b3461061357602061073661072d366106d2565b92919091614bc7565b604051908152f35b346106135760003660031901126106135760206040516203f4808152f35b3461061357600036600319011261061357602060055460801c604051908152f35b3461061357600036600319011261061357610796614ee2565b506108396107a2610928565b600754815260085460208201526009546040820152600a546060820152600b546080820152600c5460a0820152600d5460c0820152600e5460e08201526040519182918291909160e080610100830194805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c08501520151910152565b0390f35b34610613576000366003190112610613576020604051611f408152f35b346106135760203660031901126106135760043561087781610694565b61087f613904565b601680546001600160a01b0319166001600160a01b0392909216919091179055005b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116108ca57604052565b6108a1565b60c081019081106001600160401b038211176108ca57604052565b606081019081106001600160401b038211176108ca57604052565b601f909101601f19168101906001600160401b038211908210176108ca57604052565b6040519061010082016001600160401b038111838210176108ca57604052565b6001600160401b0381116108ca57601f01601f191660200190565b346106135760803660031901126106135761097f600435610694565b61098a602435610694565b6064356001600160401b0381116106135736602382011215610613578060040135906109b582610948565b916109c36040519384610905565b8083523660248284010111610613576000928160246020940184830137010152604051630a85bd0160e11b8152602090f35b6001600160a01b03166000908152602080526040902090565b6001600160a01b0316600090815260146020526040902090565b6001600160a01b0316600090815260156020526040902090565b6001600160a01b0316600090815260106020526040902090565b6001600160a01b0316600090815260226020526040902090565b6001600160a01b03166000908152600f6020526040902090565b9060018060a01b0316600052602052604060002090565b3461061357602036600319011261061357600435610ac481610694565b60018060a01b03166000526023602052602060ff604060002054166040519015158152f35b3461061357602036600319011261061357610b02613bcd565b60405163fe575a8760e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bb257600091610b84575b50610b7257610b6660043561490c565b610b706001603055565b005b604051632652747360e21b8152600490fd5b610ba5915060203d8111610bab575b610b9d8183610905565b810190613a6b565b38610b56565b503d610b93565b613a82565b3461061357602036600319011261061357600435610bd481610694565b610bdc613904565b6001600160a01b03908116908115610c2a57603380546001600160a01b031981168417909155167f748f1f5793b18b83e17ec58dd942771a149a2da21e05fe50ced8c278143c6d71600080a3005b6040516303988b8160e61b8152600490fd5b34610613576000366003190112610613576020601a54604051908152f35b3461061357600036600319011261061357610b7061582c565b3461061357602036600319011261061357600435610c9081610694565b610c98613904565b6001600160a01b03811660008181526020805260408120549092919060ff16610d115782526020805260408220805460ff191660011790557fa77e7c594c11a0d5d9d8e6a9132ac0db912dc0f34f5fb7d94860fe38d16410bd90610d0b90610cff8161396e565b60405191829182610658565b0390a180f35b60405163dc37823360e01b8152600490fd5b346106135760803660031901126106135760048035610d4181610694565b6024356001600160401b03811161061357610d5f90369084016106a5565b6044359160643593610d7085610694565b610d78613bcd565b610d80613baf565b8315610df6576001600160a01b03818116600090815260208052604090205460ff1615610de55760ff6024541615610dd457851615610dc357610b6695506145cd565b6040516303988b8160e61b81528690fd5b6040516312cefcd560e31b81528790fd5b604051630867d69960e11b81528790fd5b60405163162908e360e11b81528690fd5b346106135760203660031901126106135760043560005260326020526020600160406000200154604051908152f35b34610613576020366003190112610613576020610736600435610e5881610694565b614ba9565b34610613576020366003190112610613576020610736600435610e7f81610694565b614af3565b90604060031983011261061357600435610e9d81610694565b91602435906001600160401b03821161061357610716916004016106a5565b3461061357610eca36610e84565b90610ed3613bcd565b610edb613baf565b6001600160a01b03838116600090815260208052604090205460ff1615610f775760206024916040519283809263fe575a8760e01b82523360048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bb257600091610f59575b50610b7257610b6692613e08565b610f71915060203d8111610bab57610b9d8183610905565b38610f4b565b604051630867d69960e11b8152600490fd5b3461061357604080600319360112610613576004908135600d8110156106135760243592610fb682613930565b600a8214908180156114d4575b80156114c3575b80156114b0575b801561149d575b801561148a575b8015611478575b8015611465575b8015611452575b610ffd84613930565b600684148091811561143d575b8115611428575b8115611413575b156113a45750600080516020615f70833981519152600052603260205261107061106c611065337f4be98a500fedc87dbf83b0f2e386ce313ece8458dab0590898ef9a4135d19214610a90565b5460ff1690565b1590565b611395575b60009261108185613930565b156110e45750905083156110d657602b5484116110c857506110c3600080516020615f1083398151915293602c54936110b982602c55565b5193849384613950565b0390a1005b8251635bf62a1160e01b8152fd5b8251635b9ad34160e11b8152fd5b6110ed84613930565b600984036111245750905083156110d657506110c3600080516020615f1083398151915293602b549361111f82602b55565b6110b9565b61112d84613930565b83611155575050506110c3600080516020615f10833981519152936025549361111f82602555565b61115e84613930565b60018403611189575050506110c3600080516020615f10833981519152936026549361111f82602655565b61119284613930565b600284036111e95750905062015180841080156111dd575b6111cf57506110c3600080516020615f10833981519152936027549361111f82602755565b825163d7c43e0f60e01b8152fd5b5062093a8084116111aa565b6111f284613930565b6003840361121d575050506110c3600080516020615f1083398151915293602a549361111f82602a55565b61122984959395613930565b83820361127857506001851161126a57506024805461ff0019166001861460081b61ff0016179055600080516020615f10833981519152936110c3916110b9565b905163af979eb560e01b8152fd5b61128184613930565b600584036112c057506001851161126a5750836110c39161111f6001600080516020615f10833981519152971460ff8019602454169115151617602455565b600080516020615f1083398151915295929491506112dd84613930565b156112f457506110c3906028549361111f82602855565b6112fd83613930565b6007830361131757506110c390600e549361111f82600e55565b61132083613930565b6008830361133a57506110c3906029549361111f82602955565b61134383613930565b600b830361135d57506110c390602d549361111f82602d55565b9261136783613930565b600c831461137a575b906110c3916110b9565b92506110c390602e549361138d82602e55565b909150611370565b508351634ca8886760e01b8152fd5b1561140457600080516020615ed083398151915260005260326020526113f061106c611065337f08ae08a1778cb01871246af592e3e907ec9ba7bc1cc0b308a58e75fd2ee1dfba610a90565b1561107557508351634ca8886760e01b8152fd5b508351630309cb8760e51b8152fd5b905061141e85613930565b600c851490611018565b905061143385613930565b6008851490611011565b905061144885613930565b600785149061100a565b5061145c83613930565b600b8314610ff4565b5061146f83613930565b60058314610fed565b5061148283613930565b808314610fe6565b5061149483613930565b60038314610fdf565b506114a783613930565b60028314610fd8565b506114ba83613930565b60018314610fd1565b506114cd83613930565b8215610fca565b506114de83613930565b60098314610fc3565b3461061357602036600319011261061357600435611503613bcd565b61150b613baf565b80156115b95760ff60245460081c166115a7576115569061152b3361526e565b6017546001600160a01b03163303611598575b61154661582c565b61154f81615237565b3390615d3a565b50506115606153ea565b60405190815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436490602090a2610b706001603055565b6115a28133613d4e565b61153e565b6040516370a7336d60e11b8152600490fd5b60405163162908e360e11b8152600490fd5b34610613576020366003190112610613576004356115e881610694565b60018060a01b031660005260208052602060ff604060002054166040519015158152f35b3461061357604036600319011261061357610b7060243560043561162f82610694565b8060005260326020526116496001604060002001546137d5565b613816565b346106135761165c36610e84565b611667929192613bcd565b61166f613baf565b60018060a01b038216600093818552602080805260409460ff86882054161561183c5761169a614f40565b506116b2826116ab87863386614f72565b0151151590565b61182b57906116d0858489979695946116c961582c565b3390614ca2565b80611739575b5050813b1561173557836116ff95518096819582946312ede2c560e21b84523360048501613de6565b03925af18015610bb25761171c575b506117196001603055565b80f35b8061172961172f926108b7565b80610618565b3861170e565b8380fd5b865163d57dfa1560e01b8152949550929391929080838061175f89883360048501613de6565b0381885afa928315610bb257889361180c575b508651633de6b58d60e21b8152928184806117928a893360048501613de6565b0381895afa908115610bb2576117b9946117b4938b936117dd575b50506139f9565b614c58565b602654116117cc579084929138806116d6565b83516302c9375f60e21b8152600490fd5b6117fd929350803d10611805575b6117f58183610905565b810190613bf0565b9038806117ad565b503d6117eb565b816118249294503d8511611805576117f58183610905565b9138611772565b85516367c11db560e01b8152600490fd5b8551630867d69960e11b8152600490fd5b90600052602052604060002090565b346106135760403660031901126106135760043561187981610694565b6001600160a01b03166000908152600f60209081526040808320602435845282529182902080546001820154600283015460038401546004850154600590950154875194855260ff93841615159685019690965295830152606082019490945292161515608083015260a082015260c090f35b346106135760403660031901126106135760243561190981610694565b336001600160a01b0382160361192557610b7090600435613891565b60405163334bd91960e11b8152600490fd5b3461061357600036600319011261061357611950613904565b60315460ff81161561198f5760ff19166031557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b604051638dfc202b60e01b8152600490fd5b346106135760203660031901126106135760206107366004356119c381610694565b6149ae565b634e487b7160e01b600052603260045260246000fd5b6021548110156119f957602160005260206000200190600090565b6119c8565b3461061357602036600319011261061357600435602154811015610613576021600052600080516020615f5083398151915201546040516001600160a01b039091168152602090f35b90606060031983011261061357600435611a6081610694565b91602435906001600160401b03821161061357611a7f916004016106a5565b909160443590565b3461061357611a9536611a47565b90611aa1939293613bcd565b611aa9613baf565b81156115b9576001600160a01b038316600090815260208052604090205460ff1615610f7757611ada9333936145cd565b6001603055005b3461061357600036600319011261061357602060ff603154166040519015158152f35b3461061357600036600319011261061357606060018060a01b03601154166012546013549060405192835260208301526040820152f35b3461061357602036600319011261061357600435611b5881610694565b611b60613904565b611b6f61106c611065836109f5565b610f7757611b89611b7f826109f5565b805460ff19169055565b6001600160a01b03908082169060005b60215480821015611c3a578385611bc7611bb2856119de565b905460039190911b1c6001600160a01b031690565b1614611bdc5750611bd7906139d6565b611b99565b600080516020615ef083398151915294506110c3935090611c13611c0d611bb2611c08611c32956139ea565b6119de565b916119de565b90919082549060031b9160018060a01b03809116831b921b1916179055565b610cff613a06565b5050600080516020615ef083398151915292506110c39150610cff565b34610613576000366003190112610613576033546040516001600160a01b039091168152602090f35b346106135760208060031936011261061357600435611c9e81610694565b611ca6613904565b601f611cba611cb5825461064c565b61064c565b6001600160a01b039283169390838116808614159081611eda575b50611dc6575b50600481611d14611cb5611cf2611cb5875461064c565b601f80546001600160a01b0319166001600160a01b038b16179055955461064c565b6040516338d52e0f60e01b815292839182905afa918215610bb257600092611d99575b505082611d48611cb560015461064c565b9116141580611d90575b611d7e57167f483bdedaaf23706a9800ac1af0d852b34927780d79f9d6ba60a80c7cad75ea39600080a3005b604051631b3b488360e11b8152600490fd5b50821515611d52565b611db89250803d10611dbf575b611db08183610905565b81019061422f565b3880611d37565b503d611da6565b81604051809263ce96cb7760e01b82528180611de53060048301610658565b03915afa60009181611ebb575b50611ead57506001611e026152f1565b806308c379a014611e8c57634e487b7114611e54575b611e23575b38611cdb565b611e2b614a50565b50611e3c611cb5611cb5845461064c565b600080516020615f30833981519152600080a2611e1d565b611e5c61537d565b5015611e1857506000611e75611cb5611cb5855461064c565b600080516020615f308339815191528280a2611e18565b50611e9561530f565b15611e1857506000611e75611cb5611cb5855461064c565b611eb6906153b3565b611e1d565b611ed3919250833d8511611805576117f58183610905565b9038611df2565b9050151538611cd5565b3461061357600080600319360112611f3057611efe613904565b602f80546001600160a01b0319811690915581906001600160a01b0316600080516020615f908339815191528280a380f35b80fd5b3461061357602036600319011261061357611f4c613baf565b610b70600435613c7b565b346106135760208060031936011261061357600490813591611f7883610694565b6000918293602154925b838610611f9457604051858152602090f35b90919293611faa611cb5611cb5611bb2896119de565b84604051809263572bf25760e01b82528180611fc889898301610658565b03915afa8015610bb257611fee92611fe892600092611ff8575b50613a8e565b956139d6565b9493929190611f82565b612010919250873d8911611805576117f58183610905565b9038611fe2565b346106135760403660031901126106135760043561203481610694565b61203c613904565b61204461582c565b6001600160a01b038116156120b85760008091612067611cb5611cb5845461064c565b90813b156120b45782916120959160405194858094819363768bab4560e01b83526024359060048401613e8e565b03925af18015610bb2576120a7575080f35b80611729611719926108b7565b5050fd5b60405162461bcd60e51b815260206004820152602d60248201527f4c656e64696e67506f6f6c3a20526563697069656e742063616e6e6f7420626560448201526c207a65726f206164647265737360981b6064820152608490fd5b34610613576000366003190112610613576020600954604051908152f35b346106135760003660031901126106135760c0601954601a54601b54601c54601d5491601e5493604051958652602086015260408501526060840152608083015260a0820152f35b3461061357600036600319011261061357612192613904565b61219a613baf565b600160ff1960315416176031557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b34610613576000366003190112610613576005546040516001600160801b039091168152602090f35b3461061357600036600319011261061357610180602454602554602654602754602854602954602a5490602b5492602c5494602d5496602e549860ff6040519b81811615158d5260081c16151560208c015260408b015260608a0152608089015260a088015260c087015260e0860152610100850152610120840152610140830152610160820152f35b34610613576000366003190112610613576034546040516001600160a01b039091168152602090f35b61232e909291926101208101938051825260208101516020830152604081015160408301526060810151151560608301526080810151608083015260a081015160a083015260c0810151151560c083015261231960e082015160e084019060018060a01b03169052565b610100908101516001600160a01b0316910152565b565b34610613576004612340366106d2565b91909261234b614fea565b5060018060a01b038116908160005260209283805260409460ff8660002054161561245c57916060612400926123ec879695612385614fea565b9a61238e614f40565b5061239b82828689614f72565b936123b48d876123ad8d890151151590565b1515910152565b8c60808d87015191015284518d526123d58d60c06123ad6080890151151590565b8c8a6123e38585858c614d4a565b91015286614bc7565b888a0152015160a088015260e08701614f31565b835163f8eef10f60e01b815295869182905afa8015610bb257610839946124359260009261243f575b50506101008401614f31565b51918291826122af565b6124559250803d10611dbf57611db08183610905565b3880612429565b8551630867d69960e11b81528890fd5b346106135760203660031901126106135760043561248981610694565b612491613904565b601154906001600160a01b03908183166124b9576001600160a01b0319909216911617601155005b60405163b6de9a7160e01b8152600490fd5b346106135760206107366124de366106d2565b929190916144bb565b3461061357600036600319011261061357602f546040516001600160a01b039091168152602090f35b346106135761251e36611a47565b91612527613bcd565b61252f613baf565b6001600160a01b03848116600090815260208052604090205460ff1615610f775760206024916040519283809263fe575a8760e01b82523360048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bb2576000916125ad575b50610b7257610b669361426f565b6125c5915060203d8111610bab57610b9d8183610905565b3861259f565b3461061357604036600319011261061357602060ff6126036024356125ef81610694565b600435600052603284526040600020610a90565b54166040519015158152f35b346106135761261d36610e84565b90612626613bcd565b61262e613baf565b6001600160a01b03838116600090815260208052604090205460ff1615610f775760206024916040519283809263fe575a8760e01b82523360048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bb2576000916126ac575b50610b7257610b6692614aba565b6126c4915060203d8111610bab57610b9d8183610905565b3861269e565b34610613576126d8366106d2565b916126e1613bcd565b6126e9613baf565b6001600160a01b03848116600090815260208052604090205460ff1615610f775760206024916040519283809263fe575a8760e01b82523360048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bb257600091612767575b50610b7257610b6693614a80565b61277f915060203d8111610bab57610b9d8183610905565b38612759565b34610613576020366003190112610613576004356127a281610694565b6127aa613904565b6001600160a01b03908116908115610c2a57601780546001600160a01b031981168417909155167f593eaf5e0e1afc1c041a664a437fdae719a628836785d06572b008e6ca5c189d600080a3005b34610613576020366003190112610613576004803561281681610694565b6000908190602154905b81831061283257602084604051908152f35b909192612847611cb5611cb5611bb2876119de565b92600060405180956371e078ab60e01b82528180612867888c8301610658565b03915afa938415610bb2576000946128e7575b506000915b84518310156128ce576128c26128c8916128bc6128b76128b26128a189610a76565b6128ab898c614e7e565b519061184d565b614e92565b614de2565b90613a8e565b926139d6565b9161287f565b95929350936128dd91506139d6565b9193929093612820565b61290391943d8091833e6128fb8183610905565b810190614e03565b923861287a565b908152602081019190915260400190565b346106135760203660031901126106135760043561293881610694565b60018060a01b03166000526022602052604060002060018154910154906108396040519283928361290a565b3461061357600036600319011261061357602060405160008152f35b346106135760203660031901126106135760043561299d81610694565b6129a5613904565b6001600160a01b03908116908115610c2a57601880546001600160a01b031981168417909155167f5d16ad41baeb009cd23eb8f6c7cde5c2e0cd5acf4a33926ab488875c37c37f38600080a3005b3461061357600080600319360112611f305760405163fe575a8760e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bb2578291612a65575b50610b7257611719613ea9565b612a7d915060203d8111610bab57610b9d8183610905565b38612a58565b34610613576000366003190112610613576018546001600160a01b039081163303612b5e57601f541615612b2a57610839612ac2611cb560015461064c565b612aee601a548092612ad342601b55565b612add6000601a55565b612ae860185461064c565b90615040565b6040518181527f7edfb0d5d58c6a3d398df94a9bdfa2b33f3fa42ae40d72ebdc717d2db3953ee590602090a16040519081529081906020820190565b60405162461bcd60e51b815260206004820152600c60248201526b139bc81d985d5b1d081cd95d60a21b6044820152606490fd5b6040516282b42960e81b8152600490fd5b34610613576000366003190112610613576016546040516001600160a01b039091168152602090f35b3461061357612bca6020612bab366106d2565b60405163d57dfa1560e01b815295869493859384939160048501613de6565b03916001600160a01b03165afa8015610bb257602091600091612bf1575b50604051908152f35b612c089150823d8111611805576117f58183610905565b38612be8565b3461061357612c1c366106d2565b6001600160a01b03938416600081815260208080526040808320549097919692959493929060ff1615612ce957612c51614f40565b5082865286805260ff888720541615612ce957168452600f8552858420865163a646a19360e01b81529493909286928692909183918291612c959160048401613f41565b03915afa938415610bb257612cb79486948491612ccc575b5083525220614e92565b6108396060820151915192519283928361290a565b612ce39150823d8411611805576117f58183610905565b38612cad565b8751630867d69960e11b8152600490fd5b3461061357602036600319011261061357600435612d16613bcd565b612d1e613baf565b80156115b95760405163fe575a8760e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bb257600091612d86575b50610b7257610b6690613a9b565b612d9e915060203d8111610bab57610b9d8183610905565b38612d78565b3461061357600080600319360112611f3057604051809160215490818352602080930180926021835284832090835b818110612e305750505084612de9910385610905565b60405193838594850191818652518092526040850193925b828110612e1057505050500390f35b83516001600160a01b031685528695509381019392810192600101612e01565b82546001600160a01b031684529286019260019283019201612dd3565b3461061357600036600319011261061357612e66613bcd565b612e6f3361526e565b6001603055602060405160018152f35b3461061357612e8d366106d2565b9291612e97614f40565b5060018060a01b038093169360009480865260209485805260409360ff858920541615612f6b5791612eec93918793168852600f835284882095855180958194829363a646a19360e01b845260048401613f41565b03915afa908115610bb2578560a094612f1593859360c09991612f4e575b508252865220614e92565b908051938251855280830151151590850152808201519084015260608101516060840152608081015115156080840152015160a0820152f35b612f659150883d8a11611805576117f58183610905565b38612f0a565b8451630867d69960e11b8152600490fd5b34610613576000366003190112610613576018546040516001600160a01b039091168152602090f35b3461061357602036600319011261061357601654600435906001600160a01b03163303612b5e5760018110613062576009549081613020575b7fd45d1eb66419c036e2fa401916c7db417696f889cf4ab8ca92272327e8e1c83e9161300982600955565b6130116156fa565b6110c36040519283928361290a565b6130298261566c565b828211156130535761303b83836139f9565b1115612fde57604051631a8b543360e21b8152600490fd5b61305d82846139f9565b61303b565b60405163824c180760e01b8152600490fd5b346106135760203660031901126106135760043561309181610694565b6000546001600160a01b03163303613115576130ac81614ba9565b806130c2575b506130bf60125491610a0e565b55005b6130e56130f3916130df6012546130d886610a0e565b54906139f9565b9061497b565b670de0b6b3a7640000900490565b80156130b25761310d61310583610a28565b918254613a8e565b9055386130b2565b60405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792052546f6b656e2063616e20757064617465207265776172647300006044820152606490fd5b346106135760203660031901126106135760043561317781610694565b60018060a01b031660005260106020526020600160406000200154604051908152f35b34610613576131a8366106d2565b90916131b2613bcd565b6017546001600160a01b03929083163303612b5e5760009483811686526020805260ff60408720541615610f77576132329461322087959461321287966033541695604051948593602085019763c939ad6160e01b895260248601614a27565b03601f198101835282610905565b51915af461322c614a50565b9061539d565b6117196001603055565b34610613576000366003190112610613576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160801b031690565b346106135760003660031901126106135761010060018060a01b0380600054169080600154169060025416600354600454906005549264ffffffffff6006541694604051968752602087015260408601526060850152608084015260018060801b03811660a084015260801c60c083015260e0820152f35b34610613576020610736613318366106d2565b92919091614d4a565b3461061357602036600319011261061357602061073660043561334381610694565b614b4b565b3461061357604036600319011261061357610b7060243560043561336b82610694565b8060005260326020526133856001604060002001546137d5565b613891565b346106135761339836611a47565b916133a1613bcd565b6133a9613baf565b82156115b9576001600160a01b03848116600090815260208052604090205460ff1615610f775760206024916040519283809263fe575a8760e01b82523360048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bb25760009161342d575b50610b7257610b6693613ff5565b613445915060203d8111610bab57610b9d8183610905565b3861341f565b346106135760603660031901126106135760043561346881610694565b6024359061347582610694565b61347d613904565b6000546001600160a01b03918216911681146134a057610b709160443591615040565b60405162461bcd60e51b815260206004820152601460248201527321b0b73737ba103932b9b1bab290292a37b5b2b760611b6044820152606490fd5b3461061357600036600319011261061357610100600754600854600954600a54600b54600c5491600d5493600e5495604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152f35b346106135760803660031901126106135760043561355381610694565b6024359061356082610694565b604435906001600160401b038211610613576020926135866107369336906004016106a5565b916064359361454f565b61232e9092919260e08061010083019560018060a01b038082511685528060208301511660208601526040820151166040850152606081015160608501526080810151608085015260018060801b038060a08301511660a086015260c08201511660c0850152015191019064ffffffffff169052565b346106135760003660031901126106135761361f614ee2565b5061083961362b610928565b61363f61363960005461064c565b82614f31565b61365661364d60015461064c565b60208301614f31565b61366d61366460025461064c565b60408301614f31565b600354606082015260045460808201526005546001600160801b03811660a083015261369d9060801c60c0830152565b6136be6136b060065464ffffffffff1690565b64ffffffffff1660e0830152565b60405191829182613590565b34610613576020366003190112610613576004356136e781610694565b6136ef613904565b6001600160a01b0390811690811561372b57602f80546001600160a01b03198116841790915516600080516020615f90833981519152600080a3005b604051631e4fbdf760e01b815260006004820152602490fd5b34610613576000366003190112610613576020604051600080516020615ed08339815191528152f35b34610613576000366003190112610613576020604051670de0b6b3a76400008152f35b3461061357600036600319011261061357601f546040516001600160a01b039091168152602090f35b346106135760206107366137cc366106d2565b92919091614ca2565b80600052603260205260ff6137ee336040600020610a90565b5416156137f85750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b600090808252603260205260ff6138308460408520610a90565b541661388b57808252603260205261384b8360408420610a90565b805460ff1916600117905533926001600160a01b0316917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50905090565b600090808252603260205260ff6138ab8460408520610a90565b54161561388b5780825260326020526138c78360408420610a90565b805460ff1916905533926001600160a01b0316917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b602f546001600160a01b0316330361391857565b60405163118cdaa760e01b8152336004820152602490fd5b600d111561393a57565b634e487b7160e01b600052602160045260246000fd5b60608101949392600d83101561393a57604092825260208201520152565b602154600160401b8110156108ca5760018101806021558110156119f9576021600052600080516020615f508339815191520180546001600160a01b0319166001600160a01b03909216919091179055565b634e487b7160e01b600052601160045260246000fd5b60001981146139e55760010190565b6139c0565b6000198101919082116139e557565b919082039182116139e557565b6021548015613a485760001981810191808310156119f957602160008190529101600080516020615f508339815191520180546001600160a01b031916905555565b634e487b7160e01b600052603160045260246000fd5b5190811515820361061357565b9081602091031261061357613a7f90613a5e565b90565b6040513d6000823e3d90fd5b919082018092116139e557565b613aa43361526e565b613aac61582c565b6018546001600160a01b0390613ac19061064c565b16158015613b99575b15613b7157600080516020615eb0833981519152613b3f613aed600080946139f9565b92613af784613bff565b613b013385615c21565b906001613b0d33610a42565b0154613b5357846001613b1f33610a42565b01555b613b2a6153ea565b80613b44575b5060405191829133958361290a565b0390a2565b613b4d90615500565b38613b30565b6001613b5e33610a42565b01613b6a868254613a8e565b9055613b22565b600080516020615eb0833981519152613b3f613aed613b92602954856156a2565b80946139f9565b50613ba8611cb560175461064c565b3314613aca565b60ff60315416613bbb57565b60405163d93c066560e01b8152600490fd5b600260305414613bde576002603055565b604051633ee5aeb560e01b8152600490fd5b90816020910312610613575190565b6000546040516318160ddd60e01b81529190602090839060049082906001600160a01b03165afa918215610bb257600092613c5b575b5081018091116139e557602b5410613c4957565b6040516354db2d5d60e11b8152600490fd5b613c7491925060203d8111611805576117f58183610905565b9038613c35565b60245460081c60ff166115a757602d5415613d3c57613c9933610a5c565b8115613cfa57613b3f600182847f2816dbba0837d8d68f7bcead98695dd98db2cc1cb4066694ead56a12e795c4889455613ce7613cdb613cdb602d5442613a8e565b6001600160401b031690565b918291015560405191829133958361290a565b5050613d14613d0833610a5c565b60016000918281550155565b337f8b775bb80a5d4addc5ea2601b2378ae89a1bb9010227157ac02aa71498e799c4600080a2565b60405163410dc88360e11b8152600490fd5b90602d5415613dc157613d6082610a5c565b60018101548015613daf574210613d9d575403613d8b576001613d84600092610a5c565b8281550155565b604051635a4fecf360e11b8152600490fd5b60405163621e25c360e01b8152600490fd5b604051637b7e3ed560e11b8152600490fd5b5050565b908060209392818452848401376000828201840152601f01601f1916010190565b6001600160a01b039091168152604060208201819052613a7f93910191613dc5565b909291600091338352602360205260ff60408420541615613e7c57613e2b61582c565b6001600160a01b0316803b15613e7857613e5e93948360405180968195829463cf2c52cb60e01b84523360048501613de6565b03925af18015610bb257613e6f5750565b61232e906108b7565b8280fd5b6040516361803dfb60e11b8152600490fd5b6001600160a01b039091168152602081019190915260400190565b33600052602360205260ff60406000205416613f2f57336000526023602052613edd6040600020600160ff19825416179055565b602e5480613f20575b507fd5acd12fd21128fb0a61c90d812321cb1423b1948052a3e93786c482bbef6608613f1b602e546040519182913383613e8e565b0390a1565b613f2990615500565b38613ee6565b60405163992c89a960e01b8152600490fd5b916020613a7f938181520191613dc5565b9081606091031261061357613f6681613a5e565b916040602083015192015190565b919082519283825260005b848110613fa0575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201613f7f565b6001600160a01b0391821681529116602082015260408101919091526001600160801b03909116606082015260a060808201819052613a7f92910190613f74565b919061400033610a76565b6040805163a646a19360e01b815290949160208280614023888860048401613f41565b03816001600160a01b0387165afa908115610bb25761404a9260009261420f575b5061184d565b92614059600185015460ff1690565b6141fe57918183614073886140e598979685606097615117565b61407b61582c565b61408488615237565b6140c5614098611cb5611cb560025461064c565b926140b76140a860055460801c90565b93895196879360208501613de6565b03601f198101855284610905565b6000865180988195829463292aab8160e11b84528c333360048701613fb4565b03925af18015610bb25760009384916141c9575b5061410e61410960055460801c90565b613281565b6003830155614124611cb5611cb560005461064c565b91823b1561061357600084518094635c921eb960e01b825281838161414d8c3360048401613e8e565b03925af18015610bb2577fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a36750956141959461418e926141b6575b508254613a8e565b9055600455565b61419e83615787565b6141a66153ea565b5191825233918060208101613b3f565b806117296141c3926108b7565b38614186565b90506141ed91935060603d81116141f7575b6141e58183610905565b810190613f52565b93915092386140f9565b503d6141db565b8451630bff073160e31b8152600490fd5b61422891925060203d8111611805576117f58183610905565b9038614044565b908160209103126106135751613a7f81610694565b9493929160409261426a9260018060a01b03168752606060208801526060870191613dc5565b930152565b9190928361427c33610a76565b9360018060a01b0393848216604094855163a646a19360e01b81526020988982806142ac8860049b8c8401613f41565b0381875afa908115610bb2576142c9926000926144a3575061184d565b906142d6848b33886144bb565b946142e482868d338561454f565b906142f6611cb5611cb560015461064c565b6143358c61430560185461064c565b8c51636eb1769f60e11b815233818e019081526001600160a01b0390921660208301529283918291604090910190565b0381855afa8015610bb25784918e600092614486575b505010614476578b89614372928c5180809581946370a0823160e01b835233908301610658565b03915afa8015610bb2578391600091614459575b5010614449576143c2836143ae6143cc948f8f9998978b6143a992600598613ff5565b61543d565b848a01805460ff1916600117905588613a8e565b9201918254613a8e565b9055855163f8eef10f60e01b815294859182905afa928315610bb2577f2386b33461472749e636e4d07c6e2b5e114398809469e25100c5ef910a663f6496600094614426575b5050613b3f92935194859416963385614244565b613b3f9450908161444292903d10611dbf57611db08183610905565b9238614412565b8851631e9acf1760e31b81528890fd5b61447091508d803d10611805576117f58183610905565b38614386565b89516339e067d560e21b81528990fd5b61449c9250803d10611805576117f58183610905565b388e61434b565b6142289192508b3d8d11611805576117f58183610905565b919290926144c7614f40565b5060018060a01b038093169360009285845260209586805260ff60408620541615610f775761451a958793168552600f8352604085209360405180978194829363a646a19360e01b845260048401613f41565b03915afa938415610bb25761453c946040948491612ccc575083525220614e92565b60a0815191015181039081116139e55790565b9061455b9392916144bb565b9081018091116139e557602854613a7f916156a2565b9190826080910312610613578151916020810151916060604083015192015190565b6001600160a01b03909116815260208101919091526001600160801b039091166040820152608060608201819052613a7f92910190613f74565b909194939280156115b9576001600160a01b03848116949092908515610c2a576145f561582c565b61462261460182610a76565b60208a6040978851808096819463a646a19360e01b83528d60048401613f41565b039188165afa908115610bb2576146409260009261420f575061184d565b9261464f600185015460ff1690565b8080614845575b614834578061481b575b61480a57918160809361467a8b8960009b9c9d9686614d4a565b908181118a1461480057509788915b6146ca61469d611cb5611cb560025461064c565b946146bc6146ad60055460801c90565b978b519c8d9360208501613de6565b03601f1981018b528a610905565b6146e98851998a9687958694638a94b05f60e01b865260048601614593565b03925af1928315610bb2576147776005917f05f2eeda0e08e4b437f487c8d7d29b14537d15e3488170dc3de5dbdf8dac4684956000809281926147c7575b506147699061473a614109875460801c90565b60038801556147648a614751611cb560015461064c565b61475c60005461064c565b90339061485c565b600455565b806147b4575b5083546139f9565b918281550190808254116147ac575b156147a2575b50614796836157d6565b519182523391602090a3565b600090553861478c565b808255614786565b6147bf908554613a8e565b84553861476f565b905061476992506147ef915060803d81116147f9575b6147e78183610905565b810190614571565b9093909250614727565b503d6147dd565b9050978891614689565b8451634b3c322760e11b8152600490fd5b5061482d600285015460275490613a8e565b4211614660565b855163224aae4f60e21b8152600490fd5b5061485761106c600487015460ff1690565b614656565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b038411176108ca5761232e926040525b906000602091828151910182855af115613a82576000513d61490357506001600160a01b0381163b155b6148e15750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b600114156148da565b6011546001600160a01b031680156149695781156115b95781614932913090339061485c565b61493b8161507a565b6040519081527fe79ffd9a88f13c8c49fb545410401d9877ab90d9dcf7b15d4dc0601993a0d91360203392a2565b604051632506892760e01b8152600490fd5b818102929181159184041417156139e557565b8115614998570490565b634e487b7160e01b600052601260045260246000fd5b6011546001600160a01b0390811615614a20576149ca82614ba9565b908115614a1857601254908316600052601460205260406000205481039081116139e557614a04670de0b6b3a764000091614a0b9361497b565b0491610a28565b5481018091116139e55790565b505050600090565b5050600090565b6001600160a01b03918216815291166020820152606060408201819052613a7f93910191613dc5565b3d15614a7b573d90614a6182610948565b91614a6f6040519384610905565b82523d6000602084013e565b606090565b9261232e93600093613220859461321260018060a01b0360335416956040519485936020850197631318562160e31b895260248601614a27565b600091829161232e9461322060018060a01b0360335416936132126040519384926020840196634b195c9560e11b885260248501613de6565b600054604051630481930d60e21b81526001600160a01b0392831660048201529160209183916024918391165afa908115610bb257600091614b33575090565b613a7f915060203d8111611805576117f58183610905565b6017546001600160a01b039081168015614a1857600092839260405190602082019263c084b10b60e01b845216602482015260248152614b8a816108ea565b51915afa50613a7f614b9a614a50565b60208082518301019101613bf0565b614bbb614bb582614af3565b91614b4b565b81018091116139e55790565b6001600160a01b0381166000818152602080526040902054909491939060ff1615610f77576020604051809663d57dfa1560e01b82528180614c0e87878a60048501613de6565b03915afa928315610bb257613a7f95600094614c36575b50614c309394614d4a565b90614c58565b614c309450614c529060203d8111611805576117f58183610905565b93614c25565b60018210614c9057602554614c6c916156a2565b90670de0b6b3a7640000918281029281840414901517156139e557613a7f9161498e565b50676765c793fa10079d601b1b919050565b909193929360018060a01b038092169160009280845260209182805260409560ff878720541615614d3957614cd5614f40565b5082865283805260ff878720541615614d395791614d179798918493168652600f835286862094875180998194829363a646a19360e01b845260048401613f41565b03915afa8015610bb257614d35958491612ccc575083525220614e92565b5190565b8651630867d69960e11b8152600490fd5b9193929360018060a01b038093169060009180835260209485805260409460ff86862054161561183c57614d7c614f40565b5082855286805260ff86862054161561183c579186979891614dbf9793168552600f835285852093865180988194829363a646a19360e01b845260048401613f41565b03915afa948515610bb257613a7f956128b7958491612ccc575083525220614e92565b805190606060055460801c91015181039081116139e557614bbb90826156c0565b9060209081838203126106135782516001600160401b0393848211610613570181601f820112156106135780519384116108ca578360051b9060405194614e4c85840187610905565b85528380860192820101928311610613578301905b828210614e6f575050505090565b81518152908301908301614e61565b80518210156119f95760209160051b010190565b90604051614e9f816108cf565b60a0600582948054845260ff60018201541615156020850152600281015460408501526003810154606085015260ff600482015416151560808501520154910152565b6040519061010082016001600160401b038111838210176108ca576040528160e06000918281528260208201528260408201528260608201528260808201528260a08201528260c08201520152565b6001600160a01b039091169052565b60405190614f4d826108cf565b8160a06000918281528260208201528260408201528260608201528260808201520152565b9192909260018060a01b038093169360009285845260209586805260ff60408620541615610f7757614fc8958793168552600f8352604085209360405180978194829363a646a19360e01b845260048401613f41565b03915afa938415610bb257613a7f946040948491612ccc575083525220614e92565b6040519061012082016001600160401b038111838210176108ca57604052816101006000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b61507561232e939261506760405194859263a9059cbb60e01b602085015260248401613e8e565b03601f198101845283610905565b6148b0565b6011546001600160a01b031615614969576003548015613dc157811580156150a157505050565b670de0b6b3a76400008084029384041417156139e5576150c09161498e565b6012549081018091116139e55760125542601355565b156150dd57565b60405162461bcd60e51b8152602060048201526012602482015271189bdc9c9bddc818d85c081c995858da195960721b6044820152606490fd5b92909161512b611cb5611cb560025461064c565b9060405180926318160ddd60e01b825281600460209586935afa8015610bb257846151619161516b9360009161521a5750613a8e565b602c5410156150d6565b60405163d57dfa1560e01b815282818061518a85893360048501613de6565b03816001600160a01b038a165afa928315610bb2576000936151fb575b505081156151e9576151d0936151c36151cb93602554906156a2565b953390614ca2565b613a8e565b116151d757565b604051630369fbd160e51b8152600490fd5b604051638dc8d9b360e01b8152600490fd5b615212929350803d10611805576117f58183610905565b9038806151a7565b6152319150863d8811611805576117f58183610905565b38611fe2565b60008061232e9260018060a01b036034541690604051602081019163489493f160e11b8352602482015260248152613220816108ea565b6011546001600160a01b039190821615613dc15761528b816149ae565b908161529657505050565b816152e87fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea693838660209516968760005260158652600060408120556012546152de83610a0e565b5560115416615040565b604051908152a2565b60009060033d116152fe57565b905060046000803e60005160e01c90565b600060443d10613a7f57604051600319913d83016004833e81516001600160401b03918282113d60248401111761536c57818401948551938411615374573d8501016020848701011161536c5750613a7f92910160200190610905565b949350505050565b50949350505050565b6000809160233d1161538b57565b9150506020600460003e600051600191565b156153a55750565b805190811561061357602001fd5b60008061232e9260018060a01b036034541690604051602081019163076d081560e01b8352602482015260248152613220816108ea565b60345460408051633fa5758d60e11b60208201908152600482529290918201906001600160a01b03166001600160401b038211838310176108ca5761232e93600093849360405251915af461322c614a50565b6018546001600160a01b03906154529061064c565b168015610c2a5781156115b9576154d59160209161547160015461064c565b604051636033e31560e01b81526001600160a01b03909116600482015233602482015260448101929092527f65991ea5d80f7b6dc8c32648f59c5a653beb10caddae8fefad6966b35a0a65f160648301529092839190829060009082906084820190565b03925af18015610bb2576154e65750565b6154fd9060203d8111610bab57610b9d8183610905565b50565b6018546001600160a01b03906155159061064c565b1615610c2a576155368161552d611cb560015461064c565b3090339061485c565b80615548611cb5611cb560015461064c565b61555360185461064c565b604051809263095ea7b360e01b8252816000816155776020998a9760048401613e8e565b03925af1908115610bb25760009161564f575b501561563d5781615615916155a6611cb5611cb560185461064c565b6155b160015461064c565b604051636033e31560e01b81526001600160a01b03909116600482015230602482015260448101929092527f42fd249bdce4c4255579b56a79389d6d679ba17c7b7c848ee5c0a2ffcf354cf160648301529092839190829060009082906084820190565b03925af18015610bb257615627575050565b816154fd92903d10610bab57610b9d8183610905565b6040516340b27c2160e11b8152600490fd5b6156669150833d8511610bab57610b9d8183610905565b3861558a565b7e83126e978d4fdf3b645a1cac083126e978d4fdf3b645a1cac083126e978d458111610613576113886101f46127109202010490565b81611388190481111582151715610613576127109102611388010490565b8115676765c793fa10079d601a1b19839004821115171561061357676765c793fa10079d601b1b9102676765c793fa10079d601a1b010490565b615745600454615708615e72565b50615711615e2b565b5061571e81600354615b9a565b61573881600954600a54600b54600c5491600d5493615ae7565b80600855600e5491615abd565b60075561575061582c565b7f48f4f83c2f1843e8fd7ef13ffcff40fca5055dc1b9b074cd9dd0f9a8a8e09dd960075460085490613f1b6040519283928361290a565b8061579c575b50615745600454615708615e72565b6003548181106157c4576157b56141096157bb936157f9565b906139f9565b6003553861578d565b60405163bb55fd2760e01b8152600490fd5b806157ea5750615745600454615708615e72565b6157bb906128bc614109600354925b6001600160801b039081811161580d571690565b604490604051906306dfcc6560e41b8252608060048301526024820152fd5b61585261584c61584260065464ffffffffff1690565b64ffffffffff1690565b426139f9565b600181106154fd57615868614109600554613281565b6001811061594857816158a96158876158c2936158e79560075461595a565b600580546001600160801b0319166001600160801b0392909216919091179055565b600854906158bc61410960055460801c90565b9161599e565b600580546001600160801b031660809290921b6001600160801b031916919091179055565b6006805464ffffffffff19164264ffffffffff16179055600554604080516001600160801b038316815260809290921c60208301527ff92a3abee06d57c996e7e19eb34560241fdc1fe67e9ebd503177710bf9fd8204919081908101613f1b565b604051630a1cf3ed60e21b8152600490fd5b9161596b61597092613a7f94615975565b6156c0565b6157f9565b6301e13380916159849161497b565b04676765c793fa10079d601b1b9081018091116139e55790565b916159af61597092613a7f946159b5565b906156c0565b60018210614c9057744f3a68dbc8f03f243baf513267aa9a3ee524f8e028811161061357613a7f916301e1338062f099c06159fe93676765c793fa10079d601b1b0201046156c0565b615a28565b8160011c90676765c793fa10079d601b1b908183190481118415176106135702010490565b8015615aad57676765c793fa10079d601c1b81800204906b09b18ab5df7180b6b800000082820204676765c793fa10079d601d1b818302046b1027e72f1f1281308800000081840204906b1363156bbee3016d700000008285020492676765c793fa10079d601b1b956b169e43a85eb381aa5800000085870204950101010101010190565b50676765c793fa10079d601b1b90565b909192600111614a1857615adb91615ad4916156c0565b91826156c0565b81039081116139e55790565b91949290948186841191821592615b8f575b8215615b84575b8215615b79575b5050615b6757838311615b30575091615b2b6128bc926159af86613a7f97966139f9565b615a03565b9350918082039182116139e557676765c793fa10079d601b1b9081039081116139e557615b2b6128bc926159af85613a7f976139f9565b60405163abc83fed60e01b8152600490fd5b101590508138615b07565b878111159250615b00565b818510159250615af9565b60018110614c90578181018091116139e5576001600160801b0391615bc29161597091615a03565b1690565b919082608091031261061357615bdb82613a5e565b916020810151916060604083015192015190565b6001600160a01b0391821681529116602082015260408101919091526001600160801b03909116606082015260800190565b600181106115b957600091615c3461582c565b615c5082615c46611cb560015461064c565b61475c865461064c565b6080615c8f615c65611cb5611cb5875461064c565b615c70600554613281565b60405196878094819363b3f1c93d60e01b835289893060048601615bef565b03925af1928315610bb257600093615cdb575b5082600080516020615eb083398151915291615cbd846157d6565b615cd560405192839260018060a01b0316958361290a565b0390a290565b600080516020615eb0833981519152919350615d0d9060803d8111615d18575b615d058183610905565b810190615bc6565b505090509290615ca2565b503d615cfb565b90816060910312610613578051916040602083015192015190565b91600183106115b9576060615d8e93615d5161582c565b615d62611cb5611cb560005461064c565b615d6d600554613281565b916000604051809881958294636b81068560e11b84528a8060048601615bef565b03925af1918215610bb2576000938493615df3575b50615dad83615787565b6040516001600160a01b03909116907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689080615dea87878361290a565b0390a281929190565b909250615e1891935060603d8111615e24575b615e108183610905565b810190615d1f565b93919050929138615da3565b503d615e06565b64ffffffffff6006541642034281116139e55760018110615e6257613a7f9061596b6007549160018060801b036005541692615975565b506005546001600160801b031690565b64ffffffffff6006541642034281116139e55760018110615ea857615e9c613a7f916008546159b5565b60055460801c906156c0565b506004549056fe90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1571840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1df980d21d8c7bb34800e668dbe003299093bac8e693614151d3c57f73f98a93d063386e75a280368ce68f5e39db7d7a3f09737ca4d289d9345a5f4968ff76955c4cede9b2b63ba72d39d2f630b4b742e1cada59d7a073ac4e10da9ac7b2eb1053a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b570ba279271fb7bbf76a6f3df3cc57bf80647fcafdea60ec3383d90f459de74e7c08be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220a4c79e496b929859813f285292141f0777525deaf07047a598c9d91d6af9030064736f6c634300081400332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
3485
+ "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806301ffc9a7146105bd57806302768de4146105b8578063048c661d146105b3578063086c33e1146105ae57806309bf1e73146105a95780630ab30d8a146105a45780630c34b9141461059f5780630c42dcaf1461059a5780630c679a7b14610595578063150b7a0214610590578063152f15841461058b57806316c621e0146105865780631a7fd200146105815780631d4bf4a01461057c5780631d8557d71461057757806322f2caf1146105725780632445eee51461056d578063248a9ca31461056857806327156a68146105635780632a5bf6d21461055e5780632a7e7849146105595780632ab414fc146105545780632e1a7d4d1461054f5780632f17682b146104be5780632f2ff15d1461054a57806332128b031461054557806334176a6d1461054057806336568abe1461053b5780633f4ba83a146105365780634df9d6ba146105315780634ef501ac1461052c57806353f35770146105275780635c975abb146105225780636061ffc31461051d578063618295df14610518578063640bc491146105135780636817031b1461050e578063715018a614610509578063745400c91461050457806375417da6146104ff578063768bab45146104fa5780637bc7780b146104f55780638429d51f146104f05780638456cb59146104eb578063883c6b24146104e657806389035730146104e1578063893a5372146104dc5780638ad7cacc146104d75780638aee8127146104d25780638d7081e4146104cd5780638da5cb5b146104c85780638def3ec2146104c35780638f7e8498146104be57806391d14854146104b95780639632b92a146104b457806398c2b108146104af57806398d721e0146104aa5780639daa54b41461042d578063a013f9c6146104a5578063a217fddf146104a0578063a42dce801461049b578063a51e896314610496578063a90d728f14610491578063a9bf805c1461048c578063aaf6379914610487578063b21cfc7114610482578063b6b55f251461047d578063b82e16e314610478578063b88a802f14610473578063ba7466941461046e578063c415b95c14610469578063c4f8911c14610464578063c6d6916c1461045f578063c89109131461045a578063c939ad6114610455578063cac89c5c14610450578063cd3293de1461044b578063d017e97814610446578063d17e988314610441578063d547741f1461043c578063de597d5b14610437578063e5711e8b14610432578063e65896c91461042d578063ec915ee614610428578063ef16b0e014610423578063ef5bac251461041e578063f2fde38b14610419578063f36c8f5c14610414578063fbf4a6121461040f578063fbfa77cf1461040a5763fe64cc0b1461040557600080fd5b6137b9565b613790565b61376d565b613744565b6136ca565b613606565b613536565b6134dc565b6127f8565b61344b565b61338a565b613348565b613321565b613305565b61328d565b61323c565b61319a565b61315a565b613074565b612fa5565b612f7c565b612e7f565b612e4d565b612da4565b612cfa565b612c0e565b612b98565b612b6f565b612a83565b6129f3565b612980565b612964565b61291b565b612785565b6126ca565b61260f565b6125cb565b6115cb565b612510565b6124e7565b6124cb565b61246c565b612330565b612286565b6121fc565b6121d3565b612179565b612131565b612113565b612017565b611f57565b611f33565b611ee4565b611c80565b611c57565b611b3b565b611b04565b611ae1565b611a87565b6119fe565b6119a1565b611937565b6118ec565b61185c565b61164e565b61160c565b6114e7565b610f89565b610ebc565b610e5d565b610e36565b610e07565b610d23565b610c73565b610c5a565b610c3c565b610bb7565b610ae9565b610aa7565b610963565b61085a565b61083d565b61077d565b61075c565b61073e565b61071a565b61066b565b610623565b346106135760203660031901126106135760043563ffffffff60e01b811680910361061357602090637965db0b60e01b8114908115610602575b506040519015158152f35b6301ffc9a760e01b149050386105f7565b600080fd5b600091031261061357565b34610613576000366003190112610613576020604051600080516020615f708339815191528152f35b6001600160a01b031690565b6001600160a01b03909116815260200190565b34610613576000366003190112610613576017546040516001600160a01b039091168152602090f35b6001600160a01b0381160361061357565b9181601f84011215610613578235916001600160401b038311610613576020838186019501011161061357565b6060600319820112610613576004356106ea81610694565b916024356106f781610694565b91604435906001600160401b03821161061357610716916004016106a5565b9091565b3461061357602061073661072d366106d2565b92919091614bc7565b604051908152f35b346106135760003660031901126106135760206040516203f4808152f35b3461061357600036600319011261061357602060055460801c604051908152f35b3461061357600036600319011261061357610796614ee2565b506108396107a2610928565b600754815260085460208201526009546040820152600a546060820152600b546080820152600c5460a0820152600d5460c0820152600e5460e08201526040519182918291909160e080610100830194805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c08501520151910152565b0390f35b34610613576000366003190112610613576020604051611f408152f35b346106135760203660031901126106135760043561087781610694565b61087f613904565b601680546001600160a01b0319166001600160a01b0392909216919091179055005b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116108ca57604052565b6108a1565b60c081019081106001600160401b038211176108ca57604052565b606081019081106001600160401b038211176108ca57604052565b601f909101601f19168101906001600160401b038211908210176108ca57604052565b6040519061010082016001600160401b038111838210176108ca57604052565b6001600160401b0381116108ca57601f01601f191660200190565b346106135760803660031901126106135761097f600435610694565b61098a602435610694565b6064356001600160401b0381116106135736602382011215610613578060040135906109b582610948565b916109c36040519384610905565b8083523660248284010111610613576000928160246020940184830137010152604051630a85bd0160e11b8152602090f35b6001600160a01b03166000908152602080526040902090565b6001600160a01b0316600090815260146020526040902090565b6001600160a01b0316600090815260156020526040902090565b6001600160a01b0316600090815260106020526040902090565b6001600160a01b0316600090815260226020526040902090565b6001600160a01b03166000908152600f6020526040902090565b9060018060a01b0316600052602052604060002090565b3461061357602036600319011261061357600435610ac481610694565b60018060a01b03166000526023602052602060ff604060002054166040519015158152f35b3461061357602036600319011261061357610b02613bcd565b60405163fe575a8760e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bb257600091610b84575b50610b7257610b6660043561490c565b610b706001603055565b005b604051632652747360e21b8152600490fd5b610ba5915060203d8111610bab575b610b9d8183610905565b810190613a6b565b38610b56565b503d610b93565b613a82565b3461061357602036600319011261061357600435610bd481610694565b610bdc613904565b6001600160a01b03908116908115610c2a57603380546001600160a01b031981168417909155167f748f1f5793b18b83e17ec58dd942771a149a2da21e05fe50ced8c278143c6d71600080a3005b6040516303988b8160e61b8152600490fd5b34610613576000366003190112610613576020601a54604051908152f35b3461061357600036600319011261061357610b7061582c565b3461061357602036600319011261061357600435610c9081610694565b610c98613904565b6001600160a01b03811660008181526020805260408120549092919060ff16610d115782526020805260408220805460ff191660011790557fa77e7c594c11a0d5d9d8e6a9132ac0db912dc0f34f5fb7d94860fe38d16410bd90610d0b90610cff8161396e565b60405191829182610658565b0390a180f35b60405163dc37823360e01b8152600490fd5b346106135760803660031901126106135760048035610d4181610694565b6024356001600160401b03811161061357610d5f90369084016106a5565b6044359160643593610d7085610694565b610d78613bcd565b610d80613baf565b8315610df6576001600160a01b03818116600090815260208052604090205460ff1615610de55760ff6024541615610dd457851615610dc357610b6695506145cd565b6040516303988b8160e61b81528690fd5b6040516312cefcd560e31b81528790fd5b604051630867d69960e11b81528790fd5b60405163162908e360e11b81528690fd5b346106135760203660031901126106135760043560005260326020526020600160406000200154604051908152f35b34610613576020366003190112610613576020610736600435610e5881610694565b614ba9565b34610613576020366003190112610613576020610736600435610e7f81610694565b614af3565b90604060031983011261061357600435610e9d81610694565b91602435906001600160401b03821161061357610716916004016106a5565b3461061357610eca36610e84565b90610ed3613bcd565b610edb613baf565b6001600160a01b03838116600090815260208052604090205460ff1615610f775760206024916040519283809263fe575a8760e01b82523360048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bb257600091610f59575b50610b7257610b6692613e08565b610f71915060203d8111610bab57610b9d8183610905565b38610f4b565b604051630867d69960e11b8152600490fd5b3461061357604080600319360112610613576004908135600d8110156106135760243592610fb682613930565b600a8214908180156114d4575b80156114c3575b80156114b0575b801561149d575b801561148a575b8015611478575b8015611465575b8015611452575b610ffd84613930565b600684148091811561143d575b8115611428575b8115611413575b156113a45750600080516020615f70833981519152600052603260205261107061106c611065337f4be98a500fedc87dbf83b0f2e386ce313ece8458dab0590898ef9a4135d19214610a90565b5460ff1690565b1590565b611395575b60009261108185613930565b156110e45750905083156110d657602b5484116110c857506110c3600080516020615f1083398151915293602c54936110b982602c55565b5193849384613950565b0390a1005b8251635bf62a1160e01b8152fd5b8251635b9ad34160e11b8152fd5b6110ed84613930565b600984036111245750905083156110d657506110c3600080516020615f1083398151915293602b549361111f82602b55565b6110b9565b61112d84613930565b83611155575050506110c3600080516020615f10833981519152936025549361111f82602555565b61115e84613930565b60018403611189575050506110c3600080516020615f10833981519152936026549361111f82602655565b61119284613930565b600284036111e95750905062015180841080156111dd575b6111cf57506110c3600080516020615f10833981519152936027549361111f82602755565b825163d7c43e0f60e01b8152fd5b5062093a8084116111aa565b6111f284613930565b6003840361121d575050506110c3600080516020615f1083398151915293602a549361111f82602a55565b61122984959395613930565b83820361127857506001851161126a57506024805461ff0019166001861460081b61ff0016179055600080516020615f10833981519152936110c3916110b9565b905163af979eb560e01b8152fd5b61128184613930565b600584036112c057506001851161126a5750836110c39161111f6001600080516020615f10833981519152971460ff8019602454169115151617602455565b600080516020615f1083398151915295929491506112dd84613930565b156112f457506110c3906028549361111f82602855565b6112fd83613930565b6007830361131757506110c390600e549361111f82600e55565b61132083613930565b6008830361133a57506110c3906029549361111f82602955565b61134383613930565b600b830361135d57506110c390602d549361111f82602d55565b9261136783613930565b600c831461137a575b906110c3916110b9565b92506110c390602e549361138d82602e55565b909150611370565b508351634ca8886760e01b8152fd5b1561140457600080516020615ed083398151915260005260326020526113f061106c611065337f08ae08a1778cb01871246af592e3e907ec9ba7bc1cc0b308a58e75fd2ee1dfba610a90565b1561107557508351634ca8886760e01b8152fd5b508351630309cb8760e51b8152fd5b905061141e85613930565b600c851490611018565b905061143385613930565b6008851490611011565b905061144885613930565b600785149061100a565b5061145c83613930565b600b8314610ff4565b5061146f83613930565b60058314610fed565b5061148283613930565b808314610fe6565b5061149483613930565b60038314610fdf565b506114a783613930565b60028314610fd8565b506114ba83613930565b60018314610fd1565b506114cd83613930565b8215610fca565b506114de83613930565b60098314610fc3565b3461061357602036600319011261061357600435611503613bcd565b61150b613baf565b80156115b95760ff60245460081c166115a7576115569061152b3361526e565b6017546001600160a01b03163303611598575b61154661582c565b61154f81615237565b3390615d3a565b50506115606153ea565b60405190815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436490602090a2610b706001603055565b6115a28133613d4e565b61153e565b6040516370a7336d60e11b8152600490fd5b60405163162908e360e11b8152600490fd5b34610613576020366003190112610613576004356115e881610694565b60018060a01b031660005260208052602060ff604060002054166040519015158152f35b3461061357604036600319011261061357610b7060243560043561162f82610694565b8060005260326020526116496001604060002001546137d5565b613816565b346106135761165c36610e84565b611667929192613bcd565b61166f613baf565b60018060a01b038216600093818552602080805260409460ff86882054161561183c5761169a614f40565b506116b2826116ab87863386614f72565b0151151590565b61182b57906116d0858489979695946116c961582c565b3390614ca2565b80611739575b5050813b1561173557836116ff95518096819582946312ede2c560e21b84523360048501613de6565b03925af18015610bb25761171c575b506117196001603055565b80f35b8061172961172f926108b7565b80610618565b3861170e565b8380fd5b865163d57dfa1560e01b8152949550929391929080838061175f89883360048501613de6565b0381885afa928315610bb257889361180c575b508651633de6b58d60e21b8152928184806117928a893360048501613de6565b0381895afa908115610bb2576117b9946117b4938b936117dd575b50506139f9565b614c58565b602654116117cc579084929138806116d6565b83516302c9375f60e21b8152600490fd5b6117fd929350803d10611805575b6117f58183610905565b810190613bf0565b9038806117ad565b503d6117eb565b816118249294503d8511611805576117f58183610905565b9138611772565b85516367c11db560e01b8152600490fd5b8551630867d69960e11b8152600490fd5b90600052602052604060002090565b346106135760403660031901126106135760043561187981610694565b6001600160a01b03166000908152600f60209081526040808320602435845282529182902080546001820154600283015460038401546004850154600590950154875194855260ff93841615159685019690965295830152606082019490945292161515608083015260a082015260c090f35b346106135760403660031901126106135760243561190981610694565b336001600160a01b0382160361192557610b7090600435613891565b60405163334bd91960e11b8152600490fd5b3461061357600036600319011261061357611950613904565b60315460ff81161561198f5760ff19166031557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b604051638dfc202b60e01b8152600490fd5b346106135760203660031901126106135760206107366004356119c381610694565b6149ae565b634e487b7160e01b600052603260045260246000fd5b6021548110156119f957602160005260206000200190600090565b6119c8565b3461061357602036600319011261061357600435602154811015610613576021600052600080516020615f5083398151915201546040516001600160a01b039091168152602090f35b90606060031983011261061357600435611a6081610694565b91602435906001600160401b03821161061357611a7f916004016106a5565b909160443590565b3461061357611a9536611a47565b90611aa1939293613bcd565b611aa9613baf565b81156115b9576001600160a01b038316600090815260208052604090205460ff1615610f7757611ada9333936145cd565b6001603055005b3461061357600036600319011261061357602060ff603154166040519015158152f35b3461061357600036600319011261061357606060018060a01b03601154166012546013549060405192835260208301526040820152f35b3461061357602036600319011261061357600435611b5881610694565b611b60613904565b611b6f61106c611065836109f5565b610f7757611b89611b7f826109f5565b805460ff19169055565b6001600160a01b03908082169060005b60215480821015611c3a578385611bc7611bb2856119de565b905460039190911b1c6001600160a01b031690565b1614611bdc5750611bd7906139d6565b611b99565b600080516020615ef083398151915294506110c3935090611c13611c0d611bb2611c08611c32956139ea565b6119de565b916119de565b90919082549060031b9160018060a01b03809116831b921b1916179055565b610cff613a06565b5050600080516020615ef083398151915292506110c39150610cff565b34610613576000366003190112610613576033546040516001600160a01b039091168152602090f35b346106135760208060031936011261061357600435611c9e81610694565b611ca6613904565b601f611cba611cb5825461064c565b61064c565b6001600160a01b039283169390838116808614159081611eda575b50611dc6575b50600481611d14611cb5611cf2611cb5875461064c565b601f80546001600160a01b0319166001600160a01b038b16179055955461064c565b6040516338d52e0f60e01b815292839182905afa918215610bb257600092611d99575b505082611d48611cb560015461064c565b9116141580611d90575b611d7e57167f483bdedaaf23706a9800ac1af0d852b34927780d79f9d6ba60a80c7cad75ea39600080a3005b604051631b3b488360e11b8152600490fd5b50821515611d52565b611db89250803d10611dbf575b611db08183610905565b81019061422f565b3880611d37565b503d611da6565b81604051809263ce96cb7760e01b82528180611de53060048301610658565b03915afa60009181611ebb575b50611ead57506001611e026152f1565b806308c379a014611e8c57634e487b7114611e54575b611e23575b38611cdb565b611e2b614a50565b50611e3c611cb5611cb5845461064c565b600080516020615f30833981519152600080a2611e1d565b611e5c61537d565b5015611e1857506000611e75611cb5611cb5855461064c565b600080516020615f308339815191528280a2611e18565b50611e9561530f565b15611e1857506000611e75611cb5611cb5855461064c565b611eb6906153b3565b611e1d565b611ed3919250833d8511611805576117f58183610905565b9038611df2565b9050151538611cd5565b3461061357600080600319360112611f3057611efe613904565b602f80546001600160a01b0319811690915581906001600160a01b0316600080516020615f908339815191528280a380f35b80fd5b3461061357602036600319011261061357611f4c613baf565b610b70600435613c7b565b346106135760208060031936011261061357600490813591611f7883610694565b6000918293602154925b838610611f9457604051858152602090f35b90919293611faa611cb5611cb5611bb2896119de565b84604051809263572bf25760e01b82528180611fc889898301610658565b03915afa8015610bb257611fee92611fe892600092611ff8575b50613a8e565b956139d6565b9493929190611f82565b612010919250873d8911611805576117f58183610905565b9038611fe2565b346106135760403660031901126106135760043561203481610694565b61203c613904565b61204461582c565b6001600160a01b038116156120b85760008091612067611cb5611cb5845461064c565b90813b156120b45782916120959160405194858094819363768bab4560e01b83526024359060048401613e8e565b03925af18015610bb2576120a7575080f35b80611729611719926108b7565b5050fd5b60405162461bcd60e51b815260206004820152602d60248201527f4c656e64696e67506f6f6c3a20526563697069656e742063616e6e6f7420626560448201526c207a65726f206164647265737360981b6064820152608490fd5b34610613576000366003190112610613576020600954604051908152f35b346106135760003660031901126106135760c0601954601a54601b54601c54601d5491601e5493604051958652602086015260408501526060840152608083015260a0820152f35b3461061357600036600319011261061357612192613904565b61219a613baf565b600160ff1960315416176031557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b34610613576000366003190112610613576005546040516001600160801b039091168152602090f35b3461061357600036600319011261061357610180602454602554602654602754602854602954602a5490602b5492602c5494602d5496602e549860ff6040519b81811615158d5260081c16151560208c015260408b015260608a0152608089015260a088015260c087015260e0860152610100850152610120840152610140830152610160820152f35b34610613576000366003190112610613576034546040516001600160a01b039091168152602090f35b61232e909291926101208101938051825260208101516020830152604081015160408301526060810151151560608301526080810151608083015260a081015160a083015260c0810151151560c083015261231960e082015160e084019060018060a01b03169052565b610100908101516001600160a01b0316910152565b565b34610613576004612340366106d2565b91909261234b614fea565b5060018060a01b038116908160005260209283805260409460ff8660002054161561245c57916060612400926123ec879695612385614fea565b9a61238e614f40565b5061239b82828689614f72565b936123b48d876123ad8d890151151590565b1515910152565b8c60808d87015191015284518d526123d58d60c06123ad6080890151151590565b8c8a6123e38585858c614d4a565b91015286614bc7565b888a0152015160a088015260e08701614f31565b835163f8eef10f60e01b815295869182905afa8015610bb257610839946124359260009261243f575b50506101008401614f31565b51918291826122af565b6124559250803d10611dbf57611db08183610905565b3880612429565b8551630867d69960e11b81528890fd5b346106135760203660031901126106135760043561248981610694565b612491613904565b601154906001600160a01b03908183166124b9576001600160a01b0319909216911617601155005b60405163b6de9a7160e01b8152600490fd5b346106135760206107366124de366106d2565b929190916144bb565b3461061357600036600319011261061357602f546040516001600160a01b039091168152602090f35b346106135761251e36611a47565b91612527613bcd565b61252f613baf565b6001600160a01b03848116600090815260208052604090205460ff1615610f775760206024916040519283809263fe575a8760e01b82523360048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bb2576000916125ad575b50610b7257610b669361426f565b6125c5915060203d8111610bab57610b9d8183610905565b3861259f565b3461061357604036600319011261061357602060ff6126036024356125ef81610694565b600435600052603284526040600020610a90565b54166040519015158152f35b346106135761261d36610e84565b90612626613bcd565b61262e613baf565b6001600160a01b03838116600090815260208052604090205460ff1615610f775760206024916040519283809263fe575a8760e01b82523360048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bb2576000916126ac575b50610b7257610b6692614aba565b6126c4915060203d8111610bab57610b9d8183610905565b3861269e565b34610613576126d8366106d2565b916126e1613bcd565b6126e9613baf565b6001600160a01b03848116600090815260208052604090205460ff1615610f775760206024916040519283809263fe575a8760e01b82523360048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bb257600091612767575b50610b7257610b6693614a80565b61277f915060203d8111610bab57610b9d8183610905565b38612759565b34610613576020366003190112610613576004356127a281610694565b6127aa613904565b6001600160a01b03908116908115610c2a57601780546001600160a01b031981168417909155167f593eaf5e0e1afc1c041a664a437fdae719a628836785d06572b008e6ca5c189d600080a3005b34610613576020366003190112610613576004803561281681610694565b6000908190602154905b81831061283257602084604051908152f35b909192612847611cb5611cb5611bb2876119de565b92600060405180956371e078ab60e01b82528180612867888c8301610658565b03915afa938415610bb2576000946128e7575b506000915b84518310156128ce576128c26128c8916128bc6128b76128b26128a189610a76565b6128ab898c614e7e565b519061184d565b614e92565b614de2565b90613a8e565b926139d6565b9161287f565b95929350936128dd91506139d6565b9193929093612820565b61290391943d8091833e6128fb8183610905565b810190614e03565b923861287a565b908152602081019190915260400190565b346106135760203660031901126106135760043561293881610694565b60018060a01b03166000526022602052604060002060018154910154906108396040519283928361290a565b3461061357600036600319011261061357602060405160008152f35b346106135760203660031901126106135760043561299d81610694565b6129a5613904565b6001600160a01b03908116908115610c2a57601880546001600160a01b031981168417909155167f5d16ad41baeb009cd23eb8f6c7cde5c2e0cd5acf4a33926ab488875c37c37f38600080a3005b3461061357600080600319360112611f305760405163fe575a8760e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bb2578291612a65575b50610b7257611719613ea9565b612a7d915060203d8111610bab57610b9d8183610905565b38612a58565b34610613576000366003190112610613576018546001600160a01b039081163303612b5e57601f541615612b2a57610839612ac2611cb560015461064c565b612aee601a548092612ad342601b55565b612add6000601a55565b612ae860185461064c565b90615040565b6040518181527f7edfb0d5d58c6a3d398df94a9bdfa2b33f3fa42ae40d72ebdc717d2db3953ee590602090a16040519081529081906020820190565b60405162461bcd60e51b815260206004820152600c60248201526b139bc81d985d5b1d081cd95d60a21b6044820152606490fd5b6040516282b42960e81b8152600490fd5b34610613576000366003190112610613576016546040516001600160a01b039091168152602090f35b3461061357612bca6020612bab366106d2565b60405163d57dfa1560e01b815295869493859384939160048501613de6565b03916001600160a01b03165afa8015610bb257602091600091612bf1575b50604051908152f35b612c089150823d8111611805576117f58183610905565b38612be8565b3461061357612c1c366106d2565b6001600160a01b03938416600081815260208080526040808320549097919692959493929060ff1615612ce957612c51614f40565b5082865286805260ff888720541615612ce957168452600f8552858420865163a646a19360e01b81529493909286928692909183918291612c959160048401613f41565b03915afa938415610bb257612cb79486948491612ccc575b5083525220614e92565b6108396060820151915192519283928361290a565b612ce39150823d8411611805576117f58183610905565b38612cad565b8751630867d69960e11b8152600490fd5b3461061357602036600319011261061357600435612d16613bcd565b612d1e613baf565b80156115b95760405163fe575a8760e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bb257600091612d86575b50610b7257610b6690613a9b565b612d9e915060203d8111610bab57610b9d8183610905565b38612d78565b3461061357600080600319360112611f3057604051809160215490818352602080930180926021835284832090835b818110612e305750505084612de9910385610905565b60405193838594850191818652518092526040850193925b828110612e1057505050500390f35b83516001600160a01b031685528695509381019392810192600101612e01565b82546001600160a01b031684529286019260019283019201612dd3565b3461061357600036600319011261061357612e66613bcd565b612e6f3361526e565b6001603055602060405160018152f35b3461061357612e8d366106d2565b9291612e97614f40565b5060018060a01b038093169360009480865260209485805260409360ff858920541615612f6b5791612eec93918793168852600f835284882095855180958194829363a646a19360e01b845260048401613f41565b03915afa908115610bb2578560a094612f1593859360c09991612f4e575b508252865220614e92565b908051938251855280830151151590850152808201519084015260608101516060840152608081015115156080840152015160a0820152f35b612f659150883d8a11611805576117f58183610905565b38612f0a565b8451630867d69960e11b8152600490fd5b34610613576000366003190112610613576018546040516001600160a01b039091168152602090f35b3461061357602036600319011261061357601654600435906001600160a01b03163303612b5e5760018110613062576009549081613020575b7fd45d1eb66419c036e2fa401916c7db417696f889cf4ab8ca92272327e8e1c83e9161300982600955565b6130116156fa565b6110c36040519283928361290a565b6130298261566c565b828211156130535761303b83836139f9565b1115612fde57604051631a8b543360e21b8152600490fd5b61305d82846139f9565b61303b565b60405163824c180760e01b8152600490fd5b346106135760203660031901126106135760043561309181610694565b6000546001600160a01b03163303613115576130ac81614ba9565b806130c2575b506130bf60125491610a0e565b55005b6130e56130f3916130df6012546130d886610a0e565b54906139f9565b9061497b565b670de0b6b3a7640000900490565b80156130b25761310d61310583610a28565b918254613a8e565b9055386130b2565b60405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792052546f6b656e2063616e20757064617465207265776172647300006044820152606490fd5b346106135760203660031901126106135760043561317781610694565b60018060a01b031660005260106020526020600160406000200154604051908152f35b34610613576131a8366106d2565b90916131b2613bcd565b6017546001600160a01b03929083163303612b5e5760009483811686526020805260ff60408720541615610f77576132329461322087959461321287966033541695604051948593602085019763c939ad6160e01b895260248601614a27565b03601f198101835282610905565b51915af461322c614a50565b9061539d565b6117196001603055565b34610613576000366003190112610613576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160801b031690565b346106135760003660031901126106135761010060018060a01b0380600054169080600154169060025416600354600454906005549264ffffffffff6006541694604051968752602087015260408601526060850152608084015260018060801b03811660a084015260801c60c083015260e0820152f35b34610613576020610736613318366106d2565b92919091614d4a565b3461061357602036600319011261061357602061073660043561334381610694565b614b4b565b3461061357604036600319011261061357610b7060243560043561336b82610694565b8060005260326020526133856001604060002001546137d5565b613891565b346106135761339836611a47565b916133a1613bcd565b6133a9613baf565b82156115b9576001600160a01b03848116600090815260208052604090205460ff1615610f775760206024916040519283809263fe575a8760e01b82523360048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bb25760009161342d575b50610b7257610b6693613ff5565b613445915060203d8111610bab57610b9d8183610905565b3861341f565b346106135760603660031901126106135760043561346881610694565b6024359061347582610694565b61347d613904565b6000546001600160a01b03918216911681146134a057610b709160443591615040565b60405162461bcd60e51b815260206004820152601460248201527321b0b73737ba103932b9b1bab290292a37b5b2b760611b6044820152606490fd5b3461061357600036600319011261061357610100600754600854600954600a54600b54600c5491600d5493600e5495604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152f35b346106135760803660031901126106135760043561355381610694565b6024359061356082610694565b604435906001600160401b038211610613576020926135866107369336906004016106a5565b916064359361454f565b61232e9092919260e08061010083019560018060a01b038082511685528060208301511660208601526040820151166040850152606081015160608501526080810151608085015260018060801b038060a08301511660a086015260c08201511660c0850152015191019064ffffffffff169052565b346106135760003660031901126106135761361f614ee2565b5061083961362b610928565b61363f61363960005461064c565b82614f31565b61365661364d60015461064c565b60208301614f31565b61366d61366460025461064c565b60408301614f31565b600354606082015260045460808201526005546001600160801b03811660a083015261369d9060801c60c0830152565b6136be6136b060065464ffffffffff1690565b64ffffffffff1660e0830152565b60405191829182613590565b34610613576020366003190112610613576004356136e781610694565b6136ef613904565b6001600160a01b0390811690811561372b57602f80546001600160a01b03198116841790915516600080516020615f90833981519152600080a3005b604051631e4fbdf760e01b815260006004820152602490fd5b34610613576000366003190112610613576020604051600080516020615ed08339815191528152f35b34610613576000366003190112610613576020604051670de0b6b3a76400008152f35b3461061357600036600319011261061357601f546040516001600160a01b039091168152602090f35b346106135760206107366137cc366106d2565b92919091614ca2565b80600052603260205260ff6137ee336040600020610a90565b5416156137f85750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b600090808252603260205260ff6138308460408520610a90565b541661388b57808252603260205261384b8360408420610a90565b805460ff1916600117905533926001600160a01b0316917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50905090565b600090808252603260205260ff6138ab8460408520610a90565b54161561388b5780825260326020526138c78360408420610a90565b805460ff1916905533926001600160a01b0316917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b602f546001600160a01b0316330361391857565b60405163118cdaa760e01b8152336004820152602490fd5b600d111561393a57565b634e487b7160e01b600052602160045260246000fd5b60608101949392600d83101561393a57604092825260208201520152565b602154600160401b8110156108ca5760018101806021558110156119f9576021600052600080516020615f508339815191520180546001600160a01b0319166001600160a01b03909216919091179055565b634e487b7160e01b600052601160045260246000fd5b60001981146139e55760010190565b6139c0565b6000198101919082116139e557565b919082039182116139e557565b6021548015613a485760001981810191808310156119f957602160008190529101600080516020615f508339815191520180546001600160a01b031916905555565b634e487b7160e01b600052603160045260246000fd5b5190811515820361061357565b9081602091031261061357613a7f90613a5e565b90565b6040513d6000823e3d90fd5b919082018092116139e557565b613aa43361526e565b613aac61582c565b6018546001600160a01b0390613ac19061064c565b16158015613b99575b15613b7157600080516020615eb0833981519152613b3f613aed600080946139f9565b92613af784613bff565b613b013385615c21565b906001613b0d33610a42565b0154613b5357846001613b1f33610a42565b01555b613b2a6153ea565b80613b44575b5060405191829133958361290a565b0390a2565b613b4d90615500565b38613b30565b6001613b5e33610a42565b01613b6a868254613a8e565b9055613b22565b600080516020615eb0833981519152613b3f613aed613b92602954856156a2565b80946139f9565b50613ba8611cb560175461064c565b3314613aca565b60ff60315416613bbb57565b60405163d93c066560e01b8152600490fd5b600260305414613bde576002603055565b604051633ee5aeb560e01b8152600490fd5b90816020910312610613575190565b6000546040516318160ddd60e01b81529190602090839060049082906001600160a01b03165afa918215610bb257600092613c5b575b5081018091116139e557602b5410613c4957565b6040516354db2d5d60e11b8152600490fd5b613c7491925060203d8111611805576117f58183610905565b9038613c35565b60245460081c60ff166115a757602d5415613d3c57613c9933610a5c565b8115613cfa57613b3f600182847f2816dbba0837d8d68f7bcead98695dd98db2cc1cb4066694ead56a12e795c4889455613ce7613cdb613cdb602d5442613a8e565b6001600160401b031690565b918291015560405191829133958361290a565b5050613d14613d0833610a5c565b60016000918281550155565b337f8b775bb80a5d4addc5ea2601b2378ae89a1bb9010227157ac02aa71498e799c4600080a2565b60405163410dc88360e11b8152600490fd5b90602d5415613dc157613d6082610a5c565b60018101548015613daf574210613d9d575403613d8b576001613d84600092610a5c565b8281550155565b604051635a4fecf360e11b8152600490fd5b60405163621e25c360e01b8152600490fd5b604051637b7e3ed560e11b8152600490fd5b5050565b908060209392818452848401376000828201840152601f01601f1916010190565b6001600160a01b039091168152604060208201819052613a7f93910191613dc5565b909291600091338352602360205260ff60408420541615613e7c57613e2b61582c565b6001600160a01b0316803b15613e7857613e5e93948360405180968195829463cf2c52cb60e01b84523360048501613de6565b03925af18015610bb257613e6f5750565b61232e906108b7565b8280fd5b6040516361803dfb60e11b8152600490fd5b6001600160a01b039091168152602081019190915260400190565b33600052602360205260ff60406000205416613f2f57336000526023602052613edd6040600020600160ff19825416179055565b602e5480613f20575b507fd5acd12fd21128fb0a61c90d812321cb1423b1948052a3e93786c482bbef6608613f1b602e546040519182913383613e8e565b0390a1565b613f2990615500565b38613ee6565b60405163992c89a960e01b8152600490fd5b916020613a7f938181520191613dc5565b9081606091031261061357613f6681613a5e565b916040602083015192015190565b919082519283825260005b848110613fa0575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201613f7f565b6001600160a01b0391821681529116602082015260408101919091526001600160801b03909116606082015260a060808201819052613a7f92910190613f74565b919061400033610a76565b6040805163a646a19360e01b815290949160208280614023888860048401613f41565b03816001600160a01b0387165afa908115610bb25761404a9260009261420f575b5061184d565b92614059600185015460ff1690565b6141fe57918183614073886140e598979685606097615117565b61407b61582c565b61408488615237565b6140c5614098611cb5611cb560025461064c565b926140b76140a860055460801c90565b93895196879360208501613de6565b03601f198101855284610905565b6000865180988195829463292aab8160e11b84528c333360048701613fb4565b03925af18015610bb25760009384916141c9575b5061410e61410960055460801c90565b613281565b6003830155614124611cb5611cb560005461064c565b91823b1561061357600084518094635c921eb960e01b825281838161414d8c3360048401613e8e565b03925af18015610bb2577fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a36750956141959461418e926141b6575b508254613a8e565b9055600455565b61419e83615787565b6141a66153ea565b5191825233918060208101613b3f565b806117296141c3926108b7565b38614186565b90506141ed91935060603d81116141f7575b6141e58183610905565b810190613f52565b93915092386140f9565b503d6141db565b8451630bff073160e31b8152600490fd5b61422891925060203d8111611805576117f58183610905565b9038614044565b908160209103126106135751613a7f81610694565b9493929160409261426a9260018060a01b03168752606060208801526060870191613dc5565b930152565b9190928361427c33610a76565b9360018060a01b0393848216604094855163a646a19360e01b81526020988982806142ac8860049b8c8401613f41565b0381875afa908115610bb2576142c9926000926144a3575061184d565b906142d6848b33886144bb565b946142e482868d338561454f565b906142f6611cb5611cb560015461064c565b6143358c61430560185461064c565b8c51636eb1769f60e11b815233818e019081526001600160a01b0390921660208301529283918291604090910190565b0381855afa8015610bb25784918e600092614486575b505010614476578b89614372928c5180809581946370a0823160e01b835233908301610658565b03915afa8015610bb2578391600091614459575b5010614449576143c2836143ae6143cc948f8f9998978b6143a992600598613ff5565b61543d565b848a01805460ff1916600117905588613a8e565b9201918254613a8e565b9055855163f8eef10f60e01b815294859182905afa928315610bb2577f2386b33461472749e636e4d07c6e2b5e114398809469e25100c5ef910a663f6496600094614426575b5050613b3f92935194859416963385614244565b613b3f9450908161444292903d10611dbf57611db08183610905565b9238614412565b8851631e9acf1760e31b81528890fd5b61447091508d803d10611805576117f58183610905565b38614386565b89516339e067d560e21b81528990fd5b61449c9250803d10611805576117f58183610905565b388e61434b565b6142289192508b3d8d11611805576117f58183610905565b919290926144c7614f40565b5060018060a01b038093169360009285845260209586805260ff60408620541615610f775761451a958793168552600f8352604085209360405180978194829363a646a19360e01b845260048401613f41565b03915afa938415610bb25761453c946040948491612ccc575083525220614e92565b60a0815191015181039081116139e55790565b9061455b9392916144bb565b9081018091116139e557602854613a7f916156a2565b9190826080910312610613578151916020810151916060604083015192015190565b6001600160a01b03909116815260208101919091526001600160801b039091166040820152608060608201819052613a7f92910190613f74565b909194939280156115b9576001600160a01b03848116949092908515610c2a576145f561582c565b61462261460182610a76565b60208a6040978851808096819463a646a19360e01b83528d60048401613f41565b039188165afa908115610bb2576146409260009261420f575061184d565b9261464f600185015460ff1690565b8080614845575b614834578061481b575b61480a57918160809361467a8b8960009b9c9d9686614d4a565b908181118a1461480057509788915b6146ca61469d611cb5611cb560025461064c565b946146bc6146ad60055460801c90565b978b519c8d9360208501613de6565b03601f1981018b528a610905565b6146e98851998a9687958694638a94b05f60e01b865260048601614593565b03925af1928315610bb2576147776005917f05f2eeda0e08e4b437f487c8d7d29b14537d15e3488170dc3de5dbdf8dac4684956000809281926147c7575b506147699061473a614109875460801c90565b60038801556147648a614751611cb560015461064c565b61475c60005461064c565b90339061485c565b600455565b806147b4575b5083546139f9565b918281550190808254116147ac575b156147a2575b50614796836157d6565b519182523391602090a3565b600090553861478c565b808255614786565b6147bf908554613a8e565b84553861476f565b905061476992506147ef915060803d81116147f9575b6147e78183610905565b810190614571565b9093909250614727565b503d6147dd565b9050978891614689565b8451634b3c322760e11b8152600490fd5b5061482d600285015460275490613a8e565b4211614660565b855163224aae4f60e21b8152600490fd5b5061485761106c600487015460ff1690565b614656565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b038411176108ca5761232e926040525b906000602091828151910182855af115613a82576000513d61490357506001600160a01b0381163b155b6148e15750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b600114156148da565b6011546001600160a01b031680156149695781156115b95781614932913090339061485c565b61493b8161507a565b6040519081527fe79ffd9a88f13c8c49fb545410401d9877ab90d9dcf7b15d4dc0601993a0d91360203392a2565b604051632506892760e01b8152600490fd5b818102929181159184041417156139e557565b8115614998570490565b634e487b7160e01b600052601260045260246000fd5b6011546001600160a01b0390811615614a20576149ca82614ba9565b908115614a1857601254908316600052601460205260406000205481039081116139e557614a04670de0b6b3a764000091614a0b9361497b565b0491610a28565b5481018091116139e55790565b505050600090565b5050600090565b6001600160a01b03918216815291166020820152606060408201819052613a7f93910191613dc5565b3d15614a7b573d90614a6182610948565b91614a6f6040519384610905565b82523d6000602084013e565b606090565b9261232e93600093613220859461321260018060a01b0360335416956040519485936020850197631318562160e31b895260248601614a27565b600091829161232e9461322060018060a01b0360335416936132126040519384926020840196634b195c9560e11b885260248501613de6565b600054604051630481930d60e21b81526001600160a01b0392831660048201529160209183916024918391165afa908115610bb257600091614b33575090565b613a7f915060203d8111611805576117f58183610905565b6017546001600160a01b039081168015614a1857600092839260405190602082019263c084b10b60e01b845216602482015260248152614b8a816108ea565b51915afa50613a7f614b9a614a50565b60208082518301019101613bf0565b614bbb614bb582614af3565b91614b4b565b81018091116139e55790565b6001600160a01b0381166000818152602080526040902054909491939060ff1615610f77576020604051809663d57dfa1560e01b82528180614c0e87878a60048501613de6565b03915afa928315610bb257613a7f95600094614c36575b50614c309394614d4a565b90614c58565b614c309450614c529060203d8111611805576117f58183610905565b93614c25565b60018210614c9057602554614c6c916156a2565b90670de0b6b3a7640000918281029281840414901517156139e557613a7f9161498e565b50676765c793fa10079d601b1b919050565b909193929360018060a01b038092169160009280845260209182805260409560ff878720541615614d3957614cd5614f40565b5082865283805260ff878720541615614d395791614d179798918493168652600f835286862094875180998194829363a646a19360e01b845260048401613f41565b03915afa8015610bb257614d35958491612ccc575083525220614e92565b5190565b8651630867d69960e11b8152600490fd5b9193929360018060a01b038093169060009180835260209485805260409460ff86862054161561183c57614d7c614f40565b5082855286805260ff86862054161561183c579186979891614dbf9793168552600f835285852093865180988194829363a646a19360e01b845260048401613f41565b03915afa948515610bb257613a7f956128b7958491612ccc575083525220614e92565b805190606060055460801c91015181039081116139e557614bbb90826156c0565b9060209081838203126106135782516001600160401b0393848211610613570181601f820112156106135780519384116108ca578360051b9060405194614e4c85840187610905565b85528380860192820101928311610613578301905b828210614e6f575050505090565b81518152908301908301614e61565b80518210156119f95760209160051b010190565b90604051614e9f816108cf565b60a0600582948054845260ff60018201541615156020850152600281015460408501526003810154606085015260ff600482015416151560808501520154910152565b6040519061010082016001600160401b038111838210176108ca576040528160e06000918281528260208201528260408201528260608201528260808201528260a08201528260c08201520152565b6001600160a01b039091169052565b60405190614f4d826108cf565b8160a06000918281528260208201528260408201528260608201528260808201520152565b9192909260018060a01b038093169360009285845260209586805260ff60408620541615610f7757614fc8958793168552600f8352604085209360405180978194829363a646a19360e01b845260048401613f41565b03915afa938415610bb257613a7f946040948491612ccc575083525220614e92565b6040519061012082016001600160401b038111838210176108ca57604052816101006000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b61507561232e939261506760405194859263a9059cbb60e01b602085015260248401613e8e565b03601f198101845283610905565b6148b0565b6011546001600160a01b031615614969576003548015613dc157811580156150a157505050565b670de0b6b3a76400008084029384041417156139e5576150c09161498e565b6012549081018091116139e55760125542601355565b156150dd57565b60405162461bcd60e51b8152602060048201526012602482015271189bdc9c9bddc818d85c081c995858da195960721b6044820152606490fd5b92909161512b611cb5611cb560025461064c565b9060405180926318160ddd60e01b825281600460209586935afa8015610bb257846151619161516b9360009161521a5750613a8e565b602c5410156150d6565b60405163d57dfa1560e01b815282818061518a85893360048501613de6565b03816001600160a01b038a165afa928315610bb2576000936151fb575b505081156151e9576151d0936151c36151cb93602554906156a2565b953390614ca2565b613a8e565b116151d757565b604051630369fbd160e51b8152600490fd5b604051638dc8d9b360e01b8152600490fd5b615212929350803d10611805576117f58183610905565b9038806151a7565b6152319150863d8811611805576117f58183610905565b38611fe2565b60008061232e9260018060a01b036034541690604051602081019163489493f160e11b8352602482015260248152613220816108ea565b6011546001600160a01b039190821615613dc15761528b816149ae565b908161529657505050565b816152e87fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea693838660209516968760005260158652600060408120556012546152de83610a0e565b5560115416615040565b604051908152a2565b60009060033d116152fe57565b905060046000803e60005160e01c90565b600060443d10613a7f57604051600319913d83016004833e81516001600160401b03918282113d60248401111761536c57818401948551938411615374573d8501016020848701011161536c5750613a7f92910160200190610905565b949350505050565b50949350505050565b6000809160233d1161538b57565b9150506020600460003e600051600191565b156153a55750565b805190811561061357602001fd5b60008061232e9260018060a01b036034541690604051602081019163076d081560e01b8352602482015260248152613220816108ea565b60345460408051633fa5758d60e11b60208201908152600482529290918201906001600160a01b03166001600160401b038211838310176108ca5761232e93600093849360405251915af461322c614a50565b6018546001600160a01b03906154529061064c565b168015610c2a5781156115b9576154d59160209161547160015461064c565b604051636033e31560e01b81526001600160a01b03909116600482015233602482015260448101929092527f65991ea5d80f7b6dc8c32648f59c5a653beb10caddae8fefad6966b35a0a65f160648301529092839190829060009082906084820190565b03925af18015610bb2576154e65750565b6154fd9060203d8111610bab57610b9d8183610905565b50565b6018546001600160a01b03906155159061064c565b1615610c2a576155368161552d611cb560015461064c565b3090339061485c565b80615548611cb5611cb560015461064c565b61555360185461064c565b604051809263095ea7b360e01b8252816000816155776020998a9760048401613e8e565b03925af1908115610bb25760009161564f575b501561563d5781615615916155a6611cb5611cb560185461064c565b6155b160015461064c565b604051636033e31560e01b81526001600160a01b03909116600482015230602482015260448101929092527f42fd249bdce4c4255579b56a79389d6d679ba17c7b7c848ee5c0a2ffcf354cf160648301529092839190829060009082906084820190565b03925af18015610bb257615627575050565b816154fd92903d10610bab57610b9d8183610905565b6040516340b27c2160e11b8152600490fd5b6156669150833d8511610bab57610b9d8183610905565b3861558a565b7e83126e978d4fdf3b645a1cac083126e978d4fdf3b645a1cac083126e978d458111610613576113886101f46127109202010490565b81611388190481111582151715610613576127109102611388010490565b8115676765c793fa10079d601a1b19839004821115171561061357676765c793fa10079d601b1b9102676765c793fa10079d601a1b010490565b615745600454615708615e72565b50615711615e2b565b5061571e81600354615b9a565b61573881600954600a54600b54600c5491600d5493615ae7565b80600855600e5491615abd565b60075561575061582c565b7f48f4f83c2f1843e8fd7ef13ffcff40fca5055dc1b9b074cd9dd0f9a8a8e09dd960075460085490613f1b6040519283928361290a565b8061579c575b50615745600454615708615e72565b6003548181106157c4576157b56141096157bb936157f9565b906139f9565b6003553861578d565b60405163bb55fd2760e01b8152600490fd5b806157ea5750615745600454615708615e72565b6157bb906128bc614109600354925b6001600160801b039081811161580d571690565b604490604051906306dfcc6560e41b8252608060048301526024820152fd5b61585261584c61584260065464ffffffffff1690565b64ffffffffff1690565b426139f9565b600181106154fd57615868614109600554613281565b6001811061594857816158a96158876158c2936158e79560075461595a565b600580546001600160801b0319166001600160801b0392909216919091179055565b600854906158bc61410960055460801c90565b9161599e565b600580546001600160801b031660809290921b6001600160801b031916919091179055565b6006805464ffffffffff19164264ffffffffff16179055600554604080516001600160801b038316815260809290921c60208301527ff92a3abee06d57c996e7e19eb34560241fdc1fe67e9ebd503177710bf9fd8204919081908101613f1b565b604051630a1cf3ed60e21b8152600490fd5b9161596b61597092613a7f94615975565b6156c0565b6157f9565b6301e13380916159849161497b565b04676765c793fa10079d601b1b9081018091116139e55790565b916159af61597092613a7f946159b5565b906156c0565b60018210614c9057744f3a68dbc8f03f243baf513267aa9a3ee524f8e028811161061357613a7f916301e1338062f099c06159fe93676765c793fa10079d601b1b0201046156c0565b615a28565b8160011c90676765c793fa10079d601b1b908183190481118415176106135702010490565b8015615aad57676765c793fa10079d601c1b81800204906b09b18ab5df7180b6b800000082820204676765c793fa10079d601d1b818302046b1027e72f1f1281308800000081840204906b1363156bbee3016d700000008285020492676765c793fa10079d601b1b956b169e43a85eb381aa5800000085870204950101010101010190565b50676765c793fa10079d601b1b90565b909192600111614a1857615adb91615ad4916156c0565b91826156c0565b81039081116139e55790565b91949290948186841191821592615b8f575b8215615b84575b8215615b79575b5050615b6757838311615b30575091615b2b6128bc926159af86613a7f97966139f9565b615a03565b9350918082039182116139e557676765c793fa10079d601b1b9081039081116139e557615b2b6128bc926159af85613a7f976139f9565b60405163abc83fed60e01b8152600490fd5b101590508138615b07565b878111159250615b00565b818510159250615af9565b60018110614c90578181018091116139e5576001600160801b0391615bc29161597091615a03565b1690565b919082608091031261061357615bdb82613a5e565b916020810151916060604083015192015190565b6001600160a01b0391821681529116602082015260408101919091526001600160801b03909116606082015260800190565b600181106115b957600091615c3461582c565b615c5082615c46611cb560015461064c565b61475c865461064c565b6080615c8f615c65611cb5611cb5875461064c565b615c70600554613281565b60405196878094819363b3f1c93d60e01b835289893060048601615bef565b03925af1928315610bb257600093615cdb575b5082600080516020615eb083398151915291615cbd846157d6565b615cd560405192839260018060a01b0316958361290a565b0390a290565b600080516020615eb0833981519152919350615d0d9060803d8111615d18575b615d058183610905565b810190615bc6565b505090509290615ca2565b503d615cfb565b90816060910312610613578051916040602083015192015190565b91600183106115b9576060615d8e93615d5161582c565b615d62611cb5611cb560005461064c565b615d6d600554613281565b916000604051809881958294636b81068560e11b84528a8060048601615bef565b03925af1918215610bb2576000938493615df3575b50615dad83615787565b6040516001600160a01b03909116907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689080615dea87878361290a565b0390a281929190565b909250615e1891935060603d8111615e24575b615e108183610905565b810190615d1f565b93919050929138615da3565b503d615e06565b64ffffffffff6006541642034281116139e55760018110615e6257613a7f9061596b6007549160018060801b036005541692615975565b506005546001600160801b031690565b64ffffffffff6006541642034281116139e55760018110615ea857615e9c613a7f916008546159b5565b60055460801c906156c0565b506004549056fe90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1571840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1df980d21d8c7bb34800e668dbe003299093bac8e693614151d3c57f73f98a93d063386e75a280368ce68f5e39db7d7a3f09737ca4d289d9345a5f4968ff76955c4cede9b2b63ba72d39d2f630b4b742e1cada59d7a073ac4e10da9ac7b2eb1053a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b570ba279271fb7bbf76a6f3df3cc57bf80647fcafdea60ec3383d90f459de74e7c08be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220a4c79e496b929859813f285292141f0777525deaf07047a598c9d91d6af9030064736f6c63430008140033",
2822
3486
  "linkReferences": {},
2823
3487
  "deployedLinkReferences": {}
2824
3488
  }